首页 > 解决方案 > 如何在 OpenCV 中从 X 射线中分割股骨?

问题描述

我的目标是从 X 射线图像中分割骨骼,更具体地说是股骨。

输入图像 1:

在此处输入图像描述

预期输出:

在此处输入图像描述

输入图像 2:

在此处输入图像描述

预期输出:

在此处输入图像描述

输入图像 3:

在此处输入图像描述

预期输出: 在此处输入图像描述

到目前为止,我应用了 K-means 分割(有 5 个集群)。但是,我不知道如何从这里开始,或者这是正确的方法。任何帮助,将不胜感激。

更新:

我按照评论中的建议实现了模板匹配,它允许裁剪到感兴趣的区域(球形接头)。这让我明白了:

在此处输入图像描述

然后我应用了以下内容:

  1. 应用 CLAHE 增强边界
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(4,4))
img_clahe = clahe.apply(image_slice)

plt.imshow(img_clahe, cmap=plt.cm.bone)

在此处输入图像描述

  1. 应用中值模糊来平滑图像:
blur= cv2.medianBlur(img_clahe, 9)
plt.imshow(blur, cmap=plt.cm.bone)

在此处输入图像描述

  1. 应用自适应阈值:
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)

在此处输入图像描述

虽然我觉得我更接近了,但这仍然不是我想要的。有什么建议吗?我想得到这个轮廓:

在此处输入图像描述

标签: pythonopencvimage-processing

解决方案


如果你想要合理的结果,你将不得不使用深度神经网络(语义分割任务)。但是您将需要分类数据(带有分割掩码的图像)。


推荐阅读