【发布时间】: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