检测卡车车轮

Dr.*_*izz 25 c# opencv image-processing surf emgucv

我目前正在开展一个项目,我们有一组用相机拍摄的卡车照片.我需要检测它是什么类型的卡车(它有多少个轮子).所以我正在使用EMGU试图检测到这一点.

我遇到的问题是我似乎无法使用EMGU的HoughCircle检测来检测车轮,它没有检测到所有车轮,也会检测到树叶中的随机圆圈.

所以我不知道接下来我应该尝试什么,我尝试实施SURF算法以匹配它们之间的轮子但这似乎不起作用,因为它们不完全相同,有没有办法我可以实现"松散" SURF算法?

这就是我的开始.

这是Hough Circle检测后得到的结果.许多错误的检测,有些甚至没有接近圆形,并且由于某种原因后轮被检测为单个.

Hough Circles

是否可以使用SURF确认检测到的圆圈实际上是轮子并在它们之间进行匹配?我对下一步应该做的事情有点迷茫,任何帮助都会非常感激.

(抱歉英文不好)

UPDATE

这就是我做的.我使用blob跟踪能够在我的照片集中找到斑点.有了这个我有效地可以找到移动卡车.然后我将blob的矩形分成两部分并从那里取下半部分我知道我得到了应该包含轮子的区域,这大大增加了检测.然后我会对我得到的车轮进行轻度强度松动检查.由于它们通常更黑,我应该得到一个相当低的价值,并可以丢弃太白,180/255及以上的任何东西.我也知道我的圆半径不能大于检测区的一半除以一半.

检测后

kar*_*lip 28

在这个答案中,我描述了一个使用以下图像成功测试的方法:

图像处理流水线开始于对输入图像进行下采样,或者执行减色操作以减少图像中的数据量(颜色).这会创建较小的像素组.我选择缩减采样:

管道的第二阶段执行高斯模糊以平滑/模糊图像:

接下来,图像已准备好进行阈值处理,即二化:

第4阶段需要在二值化图像上执行Hough Circles来定位轮子:

管道的最后阶段是绘制在原始图像上找到的圆圈:

这种方法不是一个强大的解决方案.这只是为了激励您继续寻找答案.

我不做C#,抱歉.祝好运!


Vla*_*lad 7

首先,车轮凸起是椭圆形而不是圆形.其次,一些背景渐变可以很容易地产生类似圆形的物体,所以这里应该不会有任何意外.椭圆的问题当然是它们有5个DOF而不是3DOF作为圆圈.请注意,五维Hough空间变得不切实际.一些广义Hough变换可能以许多额外的误报(FA)圆为代价来解决椭圆问题.要对抗FA,你必须确认它们确实是属于卡车的轮子,而不是其他任何东西.

您可能需要首先根据对象和背景而不是车轮检测来指定问题.这很重要,因为物体会创建一个视觉上下文来检测轮子,而背景分析将显示在第一个地方分割卡车(物体)是多么容易.如果相机是静态的,可以使用动作来检测背景.如果背景相对均匀,其颜色的高斯混合模型可能有助于消除其中的大部分.


daj*_*ric 5

我强烈建议使用:http : //cvlabwww.epfl.ch/~lepetit/papers/hinterstoisser_pami11.pdf

和 C# 实现:https : //github.com/dajuric/accord-net-extensions

(看看样品)

该算法可以通过使用 2000 多个模板 (20-30 fps) 实现实时性能 - 因此您可以涵盖椭圆(投影)和圆形情况。您可以修改手部跟踪示例(FastTemplateMatchingDemo)

通过放置您自己的二进制模板(在 Paint 中制作它们:-))

PS:为了抑制误报,还加入了某种跟踪。我发布的库的链接还包含一些跟踪算法,例如:离散卡尔曼滤波器和粒子滤波器都带有样本!

该库仍在开发中,因此有可能无法正常工作。请不要犹豫给我发消息。