形状识别-数芒果

9

我希望能够处理一个芒果树的特写图像,以便我可以识别和计数芒果。芒果大致呈椭圆形或椭圆形状,与图像中的叶子和树枝有着独特的区别。我希望能够计算那些可能被其他物体覆盖了20%(但对人眼仍然明显)的芒果数量。我相信MatLab中有一个算法可以实现这一点,我会感激任何帮助或建议。


http://opencv.willowgarage.com - MK.
请参见以下网址:https://dev59.com/2VjUa4cB1Zd3GeqPOR1s。 - MK.
2个回答

4
我认为解决这个问题的更强大的方法是通过颜色将芒果与背景(即树叶)分割,并计算结果二进制图像中的连通组件数量。正如btown指出的那样,您可以使用bwconncomplabelmatrix函数获取二进制图像的连通组件。
要通过颜色对芒果进行分割,首先将图像转换为HSV颜色空间,然后使用色调分量进行二值化处理。我相信芒果的色调成分与图像的其他部分不同。 这篇博客文章提供了一些关于如何在Matlab中实现这一点的见解。

1
一个例子可以在http://www.mathworks.com/help/toolbox/images/ref/labelmatrix.html找到。 - btown
@btwon已将建议的链接添加到问题答案中。 - Alceu Costa
1
关于颜色分割的示例,请参见如何将RGB图像转换为灰度图像但保留一种颜色? - gnovice

1

也许您可以:

  1. 对图像进行预处理(灰度/阈值等)。
  2. 从二进制图像中提取所有轮廓/连通组件。
  3. 计算每个轮廓/连通组件的面积和周长。
  4. 使用以下公式计算形状因子/圆度:

形状因子 - (4 * PI * 面积) / (周长^2)。这可以表明物体的形状。圆形具有最大的面积与周长比,对于完美的圆形,该公式将趋近于1。正方形约为0.78。细线状物体的形状因子最低,接近于0。

圆度 - (周长^2) / 4 * PI * 面积)。这是形状因子的倒数值,对于习惯使用它的人来说。圆形的值略大于或等于1。其他形状的值会增加。

因此,您可以近似计算出“理想”芒果的形状因子,并查看任何组件是否位于近似值内?

详见this获取更多细节。


在这种特定情况下使用形状度量可能有些困难,因为一些对象(芒果)可能会被叶子部分遮挡。 - Alceu Costa
真的;您可以使用此方法与您的方法一起验证不规则形状(遮挡的芒果),通过返回并获取不规则“潜在芒果”轮廓的位置给出的色调颜色信息。实际上,您可以对所有轮廓进行验证。但是,您必须事先知道哪个色调值范围被认为是芒果。+1 您的方法! - Jeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接