我是opencv的新手,我猜这个问题可能有点简单:我试图在图像中检测到一个大约25 x 15像素的对象,即470 x 590像素。
我正在附加此对象的缩放图像,我有几个选项可供选择:
1 - 使用霍夫变换进行两次关闭圆圈检测, 2 - 直方图匹配 3 - SURF特征检测
有关我应该选择哪个方向的建议?请考虑速度和实时应用。感谢
答案 0 :(得分:2)
我认为它应该没有明确说明,但可能有数百种可以尝试的东西,并且只有一个示例图像,很难建议。例如,LED总是绿色?我们不知道。
除此之外,imho,两个很好的起点是使用ol'忠实的模板匹配或blob检测。
然后,如果它不够健壮,你需要看一下模板/ blob的一些替代表示,比如经典的HoG(适合形状,可能有点沉重的应用程序。),甚至你自己的定制一个编码您自己的域特定的这个问题的知识。
然后,如果这不够健壮,建立一个代表+ ve和-ve示例的数据集,尽可能大,然后训练像svm或增强分类器的机器。
模板匹配:
http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html
Blob检测:
https://code.google.com/p/cvblob/
机器学习:
http://docs.opencv.org/modules/ml/doc/ml.html
TIPS: 添加尽可能多的领域知识,即如果它们总是绿色,则在表示中使用颜色,例如g g上的hog。如果它们始终是圆形的,请尝试对其进行编码,例如在模板中使用对数极坐标网格,而不是使用常规网格......等等。
机器学习并不神奇,线性分类器基本上会对特征空间中的不同点进行加权,因此您仍需要良好的表示,因此如果模板匹配完全失败,那么简单的线性毫升不太可能有帮助,但如果模板匹配没问题,那么ml可能会将性能提升到一个良好的水平。
答案 1 :(得分:0)
第1步:删除黑色背景。
第2步:蛇算法可用于查找对象的边界