我计划编写一个程序,使用CV来计算图像中的对象数量,类似于下面的图像。
我计划采用的方法是使用直方图对图像进行阈值,然后使用Blob检测来计算已识别的Blob数量。只要像颗粒一样的对象不相互接触,这就可以正常工作。(不过重叠超出了范围)我已经研究了使用分水岭分割来识别相互接触的对象的可能性。
我不清楚的是,如何将这两种技术应用于可能有也可能没有重叠颗粒的图像。假设图像中至少有一个颗粒相互接触的实例,我是否要执行这两种技术?如果是,以什么顺序?或者我是否只执行分水岭,因为某处会有重叠,并且执行Blob检测会由于合并的blob而导致错误的输出?提前感谢。
你说“前提是图像中至少有一个重叠的实例”,但也说“重叠超出了范围”。
如果分水岭算法处理具有重叠颗粒的图像,Blob检测可能不会提供任何优势(因为它会合并重叠对象)。
如果你真的想结合这两种方法,你可以在它们自己的管道中运行它们,并使用概率模型将两者结合起来。但是最好从简单开始,看看你首先得到什么样的结果。
这是一个使用Matlab的示例,它使用分水岭执行细胞分割:
http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/
如果您需要避免计算仅部分可见的对象,您可以使用Voronoi图并删除与边缘连接的对象:
http://pythonvision.org/basic-tutorial