从图像中分割相似强度的对象

时间:2014-07-09 17:24:10

标签: python c++ image-processing image-segmentation

我正在研究Python和C ++中医学图像(特别是CT扫描)的分割。我已经成功地使用阈值处理,区域生长和形态学操作来从切片中成功地消除骨骼,空气和脂肪。剩下的主要问题是从肌肉分割重要器官,因为它们具有非常相似的强度并且经常彼此邻接。

例如,在下图中,看到一块肠与腹壁肌肉相邻:

enter image description here

所需的细分结果如下:

enter image description here

另一个可接受的细分如下:

enter image description here

我的问题是:我应该使用哪种分割算法来实现所需的分割结果?到目前为止,我已经尝试过:

  • 阈值处理:不起作用,因为两个区域的强度太相似。
  • 区域增长:不起作用,因为要分段的区域是“连接”的。
  • Canny过滤器:无法在sigma的较大值处找到边缘,在较低的sigma值处断开边缘。
  • 分水岭变换:导致严重过度分割的图像。没有合并区域的明确标准。
  • 活动轮廓:无法在两个对象之间找到合适的边界。

任何指针都表示赞赏。


阈值过滤器

enter image description here

Canny过滤器

enter image description here

分水岭转换

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为提取这些对象之间的边缘可以解决问题。由于可以看到图像上的边缘,因此对人类来说是难以辨认的,我会尝试应用高通滤镜/渐变检测,以便在尝试之前将边缘锐化为预处理步骤任何其他算法。之后可能会有一些膨胀/侵蚀关闭对象的边缘或删除不必要的垃圾和泛滥填充,下一步就可以完成工作。

另一种选择是 Hough变换 - 它可能能够提取该边缘,因为它能够提取细微的特征(例如Mathworks:http://www.mathworks.com/help/images/detect-lines-in-images.html)。

您还可以尝试阈值变化 - 将图像划分为子集(正方形),并根据像素的灰度级计算每个子集的系数包含(例如平均灰度级)。由于其中一个对象整体上比另一个略轻,因此可能有效 - 这两个对象在本地相似,但全局不同。您必须使用子集大小以及阈值(即系数值)。

编辑:我刚刚看到你上传的图片。在 Canny with sigma = 1 的结果上执行扩张以及侵蚀会不会解决问题?它会关闭边缘,从而分离物体 - 它不会100%准确,但会将这两个区域分开,或多或少地保持形状。