【发布时间】:2014-01-11 10:53:48
【问题描述】:
我有兴趣更精确地检测单个物体,即灭火器没有类间可变性(所有灭火器看起来都一样)。然而,该应用程序应该是实时的,即机器人正在探索环境,每当它看到感兴趣的对象时,它应该能够检测到它并给出它的像素坐标。
我的问题是哪种算法适合这项任务?
1.这是一个分类问题吗?我们应该使用特征(筛选/冲浪等)+弓+svm吗?
2. 其他一些解决方案(还不知道)。
我们将不胜感激任何类型的输入。
谢谢。
(PS 忍耐一下,我是计算机视觉和堆栈溢出的新手)
更新1:
高度不同,所有都安装在墙上,但高度不同。我尝试了 SIFT 特征和弓,但在测试部分提取弓描述符很昂贵。此外,我不知道如何在图像被分类为阳性后定位图像内的对象(像素坐标)。
更新 2:
我终于使用了 sift + bow + svm 并且能够对对象进行分类。但是使用这种技术,我只能得到关于对象是否存在于场景中的输出? 我如何检测对象,即获取对象的边界框或中心。实现这些结果的上述方法的兼容方法是什么。 谢谢大家。
【问题讨论】:
-
如果对象中有足够的结构/纹理,筛选/冲浪和对象不同视图的数据库可以完成这项工作。 svm 训练的 HoG 描述符是最近在科学中广泛使用的另一种技术。
-
这在很大程度上取决于您的数据,例如颜色将是一个很大的帮助。仅当您的传感器具有立体视觉时,3D 功能才有效。如果所有灭火器都在同一水平面上,则可以使用高度信息。其他功能取决于您的灭火器的外观。可以发一些你的机器人拍摄的灭火器的照片吗?
-
@HugoRune 请查看更新。
-
@Micka 这些技术是否被证明足够强大,适合实时系统?例如,我对 5 到 7 fps 感兴趣。
-
@user3126137 稳健性很大程度上取决于特征提取的稳健性和可提取特征的数量。如果您能够在实时范围内计算 SIFT/SURF 特征和描述符,那么大部分工作就完成了。由于您只考虑一种对象,我猜一个可能包含 100 张图像的数据库就足够了。比较特征的时间取决于特征的数量。我建议只要尝试 SIFT/SURF 如果可行,您可以尝试提高速度。识别成功后在图像中找到位置就是从匹配的特征对应中计算单应性
标签: opencv computer-vision object-detection