【问题标题】:Segmenting objects of similar intensity from an image从图像中分割出相似强度的对象
【发布时间】:2014-08-30 20:35:08
【问题描述】:

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

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

想要的分割结果如下:

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

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

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

感谢任何指针。


阈值过滤器

Canny 过滤器

分水岭变换

【问题讨论】:

  • 也许是形状?蓝色形状的区域似乎也比顶部拉长的区域更暗。也许像中间灰度的对比度增强这样简单的事情,然后再次进行上述一些过程?
  • 您好,您找到解决方案了吗?如果是,请在答案部分发布并将其标记为已接受的答案。我面临着类似的问题。会有很大帮助。

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


【解决方案1】:

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

另一个选项是 霍夫变换 - 它可能能够提取边缘,因为它能够提取细微特征(来自 Mathworks 的示例:http://www.mathworks.com/help/images/detect-lines-in-images.html)。

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

编辑:我刚刚看到您上传的图片。对 Canny with sigma = 1 的结果执行一些 dilation 和之后的 erosion 不会解决问题吗?它会关闭边缘从而分离对象 - 它不会 100% 准确,但会分离这两个区域或多或少地保持形状。

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 2019-06-13
    • 2018-02-21
    • 1970-01-01
    • 2015-02-01
    • 2021-12-06
    • 1970-01-01
    • 2013-11-07
    • 2019-06-22
    相关资源
    最近更新 更多