在C+中使用OpenCV进行目标检测+;

在C+中使用OpenCV进行目标检测+;,opencv,computer-vision,object-detection,Opencv,Computer Vision,Object Detection,我目前正在为我正在建造的无人机开发一个视觉系统。该系统的目标是在视频流中找到定义良好的目标对象(见下文),该视频流将是地面的二维立交桥视图。到目前为止,我已经尝试过训练并使用一个类似哈尔的基于特征的cascade,一个la Viola-Jones来进行检测。我用5000多张不同角度(透视变换)和范围(帧中的大小)的目标图像进行训练,但只有1900张“背景”图像。这根本不会产生好的结果,因为我找不到合适数量的级联阶段来平衡少量的误报和少量的误报 我正在寻找任何在这方面有经验的人的建议,关于我是否应

我目前正在为我正在建造的无人机开发一个视觉系统。该系统的目标是在视频流中找到定义良好的目标对象(见下文),该视频流将是地面的二维立交桥视图。到目前为止,我已经尝试过训练并使用一个类似哈尔的基于特征的cascade,一个la Viola-Jones来进行检测。我用5000多张不同角度(透视变换)和范围(帧中的大小)的目标图像进行训练,但只有1900张“背景”图像。这根本不会产生好的结果,因为我找不到合适数量的级联阶段来平衡少量的误报和少量的误报

我正在寻找任何在这方面有经验的人的建议,关于我是否应该:1)放弃层叠,转而选择更适合由轮廓和颜色定义的对象(我读过VJ层叠没有)。 2) 通过添加正面、背景帧、更好地组织/拍摄等方式,改进我的级联训练集。 3) 还有其他一些方法我目前无法理解

目标说明:

  • 主要形状:三角形、正方形、圆形、椭圆等
  • 清晰、纯色、原色(或接近)颜色
  • 最小尺寸在2到8英尺之间(足够大,从几百英尺的地面高度可以很容易地看到)
  • 位于对象中心的大型单字母数字,具有自己独特的纯色、原色或几乎原色
我的目标是使用一些非常快速的工具,例如VJ级联,找到可能的对象及其关联的边界框,然后将它们传递给更精细的处理例程,以确定属性(对象和AN的颜色、AN的值、实际形状和GPS位置)。如果您能给我任何关于完成此目标的建议,我将不胜感激。我目前拥有的源代码在这里发布有点长,但是如果您想查看它以供参考,可以免费获取。提前感谢


-JB

我建议您放弃Haar分类,因为您对您的对象了解很多。在这些情况下,您应该首先检查您可以使用哪些功能:

1) 正如你所说的,空中飞行意味着,你基本上可以把它们当作二维平面上的固定形状。将有缩放,旋转和一些小的仿射变换,这在很大程度上取决于你的相机角度有多宽。如果不是特别宽的角度,那部分可能会被忽略。此外,您可能知道自己的海拔高度,通过该高度,您可能还可以对目标大小(缩放)做出很好的假设

2) 你知道颜色,这也使得很容易找到物体。如果这些都被定义为原色,那么您可以根据颜色过滤图像并找到这些轮廓。如果你想做一些更高级的事情(对我来说似乎没有必要…),你可以做一个,根据我的经验,这是非常有效和快速的。注意,如果要创建对象,最好使用红绿和蓝色,而不是原色(红绿和黄色)。然后,您可以简单地将图像导入其各自的通道,并使用非常高的阈值

3) 你知道几何形状。我自己从来没有这样做过,但据我所知,这些选项正在使用或使用Hough变换(尽管openCV只有用于直线和圆的Hough算法,所以您必须为其他形状编写自己的算法…)。如果没有这个步骤,您可能已经有足够好的结果了


如果您想获得更具体的建议,请上传两张示例图像

也许可以解决,但我最近看到一篇论文,其中有一个开源许可证,用于使用标准化梯度特征的通用对象检测:


算法在光照、旋转和缩放方面的性能细节可能需要进一步挖掘。我记不清原稿在哪里了

非常感谢lifesayko给我的小费!下面是我的快速反应:我不是在做这些,这是一个竞争的一部分,在这个竞争中,主持人将在搜索区域中制作并“隐藏”这些目标。我们也不知道眼前的颜色,只是它们将与周围的棕色/绿色土地形成鲜明对比。我会很高兴上传一对夫妇的样本图像,只要我知道如何做到这一点在这里。:)。一个链接也足够了,如果比赛有一个网站等。是的,2)中的分数对你来说应该足够了。你可以用不同的方法来接近它(过滤掉已知的背景,主动搜索物体的颜色,等等)。除非你需要区分不同类型的目标,否则我怀疑你甚至不需要在3)中进行形状匹配,无论如何,如果你决定这样做,我会花一些时间。