【问题标题】:Erosion without losing regions侵蚀而不丢失区域
【发布时间】:2017-05-05 06:20:22
【问题描述】:

我有一个包含单元格的图像。我无法提供它,但它类似于此处用作示例的图像:http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/ 但没有特征核。

我已经做了一些处理,现在得到了很好的分割,但是有些单元格彼此靠近,我需要分割它们。它们中的大多数由或多或少重叠的椭圆组成。

我确信简单侵蚀的几次迭代将分裂几乎所有这些区域。但是其他一些细胞太小了,它们会在其他细胞分裂之前消失。因此,我需要一种侵蚀图像的算法,允许区域分割,但不删除区域的最后一个像素。

我想在之后使用分水岭来分割单元格。

我想我可以通过搜索 cennected 区域然后跟踪我没有丢失任何或类似的东西来自己实现这一点,但即使在我的脑海中,实现似乎也很混乱,我认为必须有一个更简单的方法.所以我的问题基本上是,这个名字是什么,所以我可以用谷歌搜索一个实现?或者,如果没有现成的解决方案,那么在没有数十次迭代和 for 循环等的情况下实现它的优雅方法是什么?

(语言是python)

【问题讨论】:

  • 不幸的是,SO 并不是问这些问题的地方。更像是:我找到了这个,我尝试了 X,但它不起作用,所以你能帮我调试一下问题吗?如果您需要帮助搜索,那么您至少应该尝试自己搜索,显示您找到了哪些类似的算法,以及为什么它们不适合您的需求。
  • @Dbz 我尝试搜索,但我显然错过了正确的搜索词。 我尝试侵蚀以分离大区域但它正在删除小区域,我如何保留它们?是一个更好的问题吗?我可以遍历连接区域的列表并检查它们是否仍然存在于被侵蚀的图像中,但这似乎非常低效。我认为可能有一种方法可以使用二进制和/或侵蚀图像和之前的图像来查找缺失区域,但我不确定如何,我错过了一步。
  • 我确实知道诸如骨架、形态过滤器、分水岭、基于具有固定大小的 rois 的分割算法、局部 otsu、hough 等都接近于实现我想要的东西,但没有一个能完全做到我需要什么,它们也没有足够接近从那里跟随其他算法。我想我已经缩小了范围,我只是不知道如何实现它。

标签: python image-processing image-segmentation


【解决方案1】:

这是一个经典问题,如果单元格之间的重叠太重要,比如说40%或更多,那么就没有好的解决方案。

但是,如果重叠不重要,这里是解决方案:

  • 你从你拥有的细分开始,我们称之为S
  • 您计算最终腐蚀的 UE(S)。它会给你每个单元格的中心。它会给你类似the red points on this image的东西。在这张图片中,他们使用了距离图,最终被侵蚀会更加稳定。如果每个小区仍然有很多红点,那么扩大 UE(S) 将解决您的问题,例如 this example
  • 您反转 Inv(S) 或计算 voronoi 图 Voi(S) 以便在背景中有一个标记。
  • S 的梯度图像上的分水岭,使用 UE(S) 作为内部标记(完美,因为每个单元格都有一个点)和 Inv(S) 或 Voi(S) 作为背景/外部标记。

你会得到类似this example的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多