ajw*_*ood 6 python image-processing scipy watershed
我正在尝试分离连接的对象.似乎Python和分水岭算法(scipy实现)非常适合处理这个问题.
这是我的图像和自动生成的分水岭种子点(阈值和距离变换图像的局部最大值):
seeds = myGenSeeds( image_grey )
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好; 每个物体都有种子.
当我运行分水岭时,情况会崩溃:
segmented = ndimage.measurements.watershed_ift( 255 - image_grey, seeds)`
Run Code Online (Sandbox Code Playgroud)

顶部 - 中间集群和中心集群都很难分开.在顶部群集中,一个对象充斥着另外两个对象.在中心星团中,虽然它可能太小而无法看到,但是中心种子只能淹没到几个像素.
我有两个问题:
分水岭算法是一种简单且鲁棒的分割算法。您的数据似乎适合这种分割算法。据我所知,不需要特殊的预处理。当然,你已经看到自己在某些情况下有点濒临崩溃。
分水岭经常被使用,但不会考虑您想要识别的对象的任何特殊知识。这样可能会有更复杂的算法可用。
此外,可能还有更复杂的分水岭算法版本。这个名为Watershed 2.0的 Python 模块有参数(与 scipy 版本不同)。我会稍微调整一下参数,看看结果是否可以改善。
Ilastik是一个常用于自动分割的工具。它结合了半自动学习(基本上你通过给出示例来训练它,并从中学习重要的功能)。