如何在单个图像上执行分水岭分割和Blob分析?

时间:2012-05-07 10:39:17

标签: image-processing opencv pattern-matching computer-vision watershed

我打算用Open-CV编写程序来计算图像中与下面类似的对象数。

Sample image

我计划采用的方法是使用直方图来阈值图像,然后使用Blob检测来计算识别出的Blob数量。只要颗粒状物体不相互接触,这就可以正常工作。 (虽然重叠超出范围)我已经研究了使用Watershed分段来识别彼此接触的对象的可能性。

我不清楚的是,如何将这两种技术应用于可能有或没有重叠颗粒的图像。如果图像中至少有一个颗粒相互接触,我是否可以执行这两种技术?如果是这样的话?或者我只执行Watershed,因为在某处会有重叠并且执行Blob检测会导致由于合并的blob导致错误的输出?提前谢谢。

1 个答案:

答案 0 :(得分:2)

你说“只要图像中至少有一个重叠的实例”,但“重叠超出了范围”。

如果Watershed算法处理具有重叠粒料的图像,Blob检测可能不会提供任何优势(因为它将合并重叠的对象)。

如果你真的想要结合这些方法,你可以在他们自己的管道中运行它们,并使用概率模型将两者结合起来。但最好从简单开始,看看你先得到什么样的结果。

以下是使用Matlab进行细胞分割的示例:

http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/

如果您需要避免计算仅部分在视图中的对象,您可以使用Voronoi图并删除与边连接的对象:

http://pythonvision.org/basic-tutorial