如何识别此复杂图像中的粒子?

时间:2019-02-28 21:50:02

标签: python opencv image-processing image-segmentation watershed

我已经尝试Python + OpenCV很长时间了,并且按照许多教程进行操作,以识别下图中的粒子:

Particles

我的最终目标是识别每个粒子,从那里我将能够计算粒子数量,计算尺寸分布等。

我已经尝试在多个站点上自定义许多示例。 基于以下信息,我得到了很好的提示:

  1. How to define the markers for Watershed in OpenCV?
  2. Counting particles using image processing in python

尽管我无法取得不错的成绩。

如何使用Python和OpenCV识别图像中的粒子?

2 个答案:

答案 0 :(得分:0)

IMO,获得有意义结果的唯一希望是利用粒子是圆形的事实。通过使用一些同质性准则,您可以找到候选粒子中心,并从这些增长轮廓中以使其保持圆形并停在边缘的方式。一种选择是从种子点绘制射线,找到最接近的边缘点,然后使用圆或椭圆的稳健拟合。

拒绝太远的形状。这应该使您能够找到未被遮挡的粒子。然后,您可以从其他种子点继续游戏,这一次增长的轮廓可能已被已检测到的粒子所遮挡。 (当击中边缘时,如果已知它属于粒子,则将其忽略。)

答案 1 :(得分:0)

让我们假装目标是获得估计数量的粒子。另外,我们假设这些粒子是球体。

话虽如此,应该有可能基于高光,阴影,半色调建立模型,以使最终结果尽可能准确。

话虽如此,可以验证基于亮点分割的概念的简单证明。

enter image description here

初始结果似乎没有希望,但是对比度的微小变化会改善它:

enter image description here

应该足以获得估计的结石数量并为识别出的区域应用更高级的模型。

enter image description here