python - 如何在 OpenCV 中从 X 射线中分割股骨?
问题描述
我的目标是从 X 射线图像中分割骨骼,更具体地说是股骨。
输入图像 1:
预期输出:
输入图像 2:
预期输出:
输入图像 3:
到目前为止,我应用了 K-means 分割(有 5 个集群)。但是,我不知道如何从这里开始,或者这是正确的方法。任何帮助,将不胜感激。
更新:
我按照评论中的建议实现了模板匹配,它允许裁剪到感兴趣的区域(球形接头)。这让我明白了:
然后我应用了以下内容:
- 应用 CLAHE 增强边界
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(4,4))
img_clahe = clahe.apply(image_slice)
plt.imshow(img_clahe, cmap=plt.cm.bone)
- 应用中值模糊来平滑图像:
blur= cv2.medianBlur(img_clahe, 9)
plt.imshow(blur, cmap=plt.cm.bone)
- 应用自适应阈值:
th3 = cv2.adaptiveThreshold(blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
th3 = cv2.morphologyEx(th3, cv2.MORPH_OPEN, kernel)
th3 = cv2.medianBlur(th3, 9)
plt.imshow(th3, cmap=plt.cm.bone)
虽然我觉得我更接近了,但这仍然不是我想要的。有什么建议吗?我想得到这个轮廓:
解决方案
如果你想要合理的结果,你将不得不使用深度神经网络(语义分割任务)。但是您将需要分类数据(带有分割掩码的图像)。
推荐阅读
- c++ - Arduino模块化编程与全局设置
- r - 在 Graphviz 中,如何仅将一条边设置为 spline=curve
- javascript - 如何在javascript中访问多值字典?
- python - 在学习使用 Python sqlite3 时出现错误“sqlite3.OperationalError: 2 values for 1 columns”
- image - 从颤动的图像中删除cinemascope帧
- javascript - react和apollo中graphql突变钩子的错误处理不起作用
- logging - .net 日志从 filebeat 到 logstash 多行正确格式
- symfony - EasyAdmin 表单选择框 EntityType 未填充
- jquery - 对集合中的所有项目只触发一次点击
- html - 在数字输入中显示带 2 位小数的数字