【问题标题】:Detect banana or apple among the bunch of fruits on a plate with > 90% success rate. (See image)在盘子上的一堆水果中检测香蕉或苹果,成功率 > 90%。 (见图)
【发布时间】:2014-08-31 18:06:06
【问题描述】:

嗨!我对 OpenCV 和图像处理有点陌生。到目前为止,我一直在尝试以下方法,但我相信一定有更好的方法。

1)。使用 GColor2/Gimp 工具/轨迹栏从包含单个水果(香蕉)的参考图像手动查找颜色范围 (HSV) 白色背景。然后我用了inRange(),findContour(), 参考香蕉图像和目标上的 drawContour() image(fruit-platter) 和 matchShapes() 比较轮廓 结束。

只要选择的颜色范围合适,它就可以正常工作。 (见第二张图片)。但由于这些水果没有统一的纯色,这种方法对我来说似乎不是一个理想的方法。我不想在 inRange() 中硬编码颜色范围(标量值)。

2)。手动阈值和轮廓匹配。

与 (1) 相同的问题。不想硬编码阈值。

3)。 OTSU 阈值处理和精确边缘检测。

不适合香蕉、苹果和柠檬。

4)。动态查找颜色。我使用了裁剪香蕉参考 图片。计算图像的均值和标准差。

不知道如何在不遍历每个 x,y 像素的情况下忽略我的均值/标准差计算中的白色背景像素。欢迎对此提出任何建议。

5)。 Haar Cascade 训练给出了不准确的结果。 (见下图)。我相信适当的训练可能会产生更好的结果。但暂时对此不感兴趣。

我正在考虑的其他方法:

6)。使用洪水填充找到所有连接的像素和 计算 平均值和标准差。

在这方面没有成功。不知道如何获得所有连接的像素。我扔掉了面具(imwrite)并得到了黑白形式的香蕉(来自参考香蕉图像)。欢迎对此提出任何建议。

7)。 Hist 反投影:- 不知道它对我有什么帮助。

8)。 K-Means ,还没试过。让我知道,如果它比一步更好 (4).

9)。 meanshift/camshift →不确定它是否有帮助。欢迎提出建议。

10)。特征检测——SIFT/SURF——尚未尝试。

我们将不胜感激任何帮助、提示或建议。

【问题讨论】:

  • 据我所知,没有任何算法可以保证没有误报。
  • 提问风格更加肯定,因为如果存在于这个宇宙中的任何算法,在提供结果方面都无法具有如此多的预测性和准确性。除了品尝它并保证他/她已经吃过“香蕉”的人。

标签: opencv image-processing computer-vision


【解决方案1】:

对此类通用问题(对象检测)的回答,尤其是对于此类非常活跃的研究主题的问题,基本上归结为偏好问题。也就是说,在您提到的 10 种“方法”中,特征检测/提取可能是最值得关注的一种,因为它是各种计算机视觉问题的基本组成部分,包括但不限于对象识别/检测。

您可以尝试的一个非常简单但有效的方法是Bag-of-Words 模型,该模型非常常用于快速对象检测的早期尝试,但会丢失所有全局空间关系信息。

从我在年度计算机视觉会议论文集中观察到的晚期对象检测研究趋势是,您通过一个图对每个对象进行编码,该图将特征描述符存储在节点中,并将空间关系信息存储在边缘中,因此部分全局信息被保留,因为我们现在不仅可以匹配特征空间中特征描述符的距离,还可以匹配图像空间中它们之间的空间距离。

您描述的这个问题的一个常见缺陷是香蕉皮和苹果皮上的同质纹理可能无法保证特征的健康分布,并且您检测到的大多数特征将位于(最常见的)3 个或更多对象的交点上,这本身并不是一个普遍认为的“好”功能。出于这个原因,我建议研究超像素对象识别(只是谷歌。说真的。)方法,所以“Apple”或“Banana”类的数学模型将是一个互连的超像素块,存储在一个图中,每个边存储空间关系信息和存储有关由超像素指定的邻域的颜色分布等信息的每个节点。然后识别将成为(部分)图匹配问题或与概率相关的问题graphical model,许多现有的研究都是针对它完成的。

【讨论】:

  • 感谢您的回答。颇有见地。我会查一下,看看我能不能按照你的建议做点什么。
猜你喜欢
  • 2020-07-30
  • 2017-03-27
  • 1970-01-01
  • 2015-02-21
  • 2011-06-13
  • 1970-01-01
  • 2016-02-06
  • 2015-01-28
  • 1970-01-01
相关资源
最近更新 更多