检测卡车车轮

30

我目前正在从相机获取的卡车照片集中检测卡车类型(有几个轮子)。所以我正在使用EMGU进行这个检测。

但是,我遇到了一个问题,就是似乎无法使用EMGU的HoughCircle检测来检测出所有的轮子,而且还会在树叶上检测出随机的圆形。

所以我不知道接下来该尝试什么,我尝试了实现SURF算法来匹配轮子,但这似乎也行不通,因为它们并不完全相同。是否有一种可以实现“松散”的SURF算法的方法?

这是我开始的内容。

这是我通过Hough Circle检测得到的结果。许多错误的检测,有些甚至离圆形很远,后轮被检测为单个轮子,原因不明。

Hough Circles

是否可能使用SURF来确认检测到的圆形实际上是轮子,并在它们之间进行匹配?我有点迷茫,不知道下一步该怎么做,任何帮助将不胜感激。

(抱歉我的英语不好)

更新

这是我做的。我使用blob跟踪来查找我的照片集中的blob。通过这个,我有效地可以找到移动的卡车。然后我将blob的矩形分成两半,取下半部分,从那里我知道我会得到应该包含轮子的区域,这大大增加了检测的准确性。然后我会对得到的轮子进行光强度松散检查。由于它们通常更黑,所以我应该会得到一个相当低的值,并且可以丢弃任何过于白色(180/255及以上)的东西。我还知道我的圆的半径不能大于检测区域的一半除以二。

After dectection


2
你是否意识到你的需求是一个重要的图像分析项目?不是“我制作一个程序”,而是“我要写一篇研究论文”?所以,这个问题不能在这里回答 - 因为你要么是在寻找一个库(离题了),要么是这个问题太过复杂,不适合简单的问答。 - TomTom
2
我不认为你会找到有人回答,因为就像@TomTom所说,这方面仍有许多研究。这里有一些提示。您需要尝试不同的镜头,并找到一个行为良好的镜头以供您的库使用。您可以进行一些预处理来尝试过滤掉一些坏东西。轮胎总是“黑色的”,使用更重的过滤器可以将黑色加重并将其他颜色变成白色。该库对于倾斜存在问题,请尝试去除倾斜。所有轮胎应该大致相同大小,扔掉任何不在该范围内的轮胎。 - jamesSampica
谢谢Shoe,你的想法很好,我会尝试实现并看看能得到什么。我不是在寻找100%的检测,只是尽可能接近。所有这些想法都将极大地帮助检测。这正是我所需要的。 - Dr.Denis McCracleJizz
我认为所提出的解决方案是朝着正确方向迈出的一步。毫无疑问,这是一个非常棘手的问题,但根据您的限制条件,它可能更容易或更难解决。以下是几个问题:1)您是否必须排除在该道路上行驶的汽车进行分析?2)系统是否必须处理和排除步行者,甚至是人群?3)假设有两辆卡车相互紧随其后行驶?系统是否必须区分和分割这两辆卡车?4)您需要区分的卡车集有多种多样? - Paul
1
  1. 是的,我有随机汽车经过,如果需要,我需要将它们移除。
  2. 是的,我可以通过检测运动并验证移动物体的大小来实现。
  3. 现在它能够这样做是因为我从运动检测中检测到的东西向前移动直到退出,然后在照片中间检测到运动。
  4. 大型模板集,包括2组轮子到8组轮子,包括拖车。
- Dr.Denis McCracleJizz
显示剩余2条评论
3个回答

33

本答案描述了一种已成功测试过以下图像的方法:

图像处理流程开始时,可以对输入图像进行降采样或执行颜色减少操作来减少图像中的数据量(颜色)。这样可以创建较小的像素组以便处理。我选择了进行降采样:

流程的第二阶段通过执行高斯模糊来平滑/模糊图像:

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

第四阶段需要在二值化图像上执行霍夫圆变换来定位车轮:

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

这种方法并不是一种稳健的解决方案。它只是为了鼓舞你继续寻找答案。

抱歉,我不懂C#。祝好运!


1
我一看到第一张图片,就知道那是你 :) - Abid Rahman K
@AbidRahmanK 哈哈哈!我已经离开了SO,现在有很多工作要做,我几乎没有时间来这里回答问题。你的博客怎么样了? - karlphillip
我也是...被论文工作忙得不关心博客了..即使在SO上,我只回答那些可以在5分钟内回答的简单问题...需要在大学毕业后休假一个月,来让头脑恢复一下... :) - Abid Rahman K
我很想在你的博客上看到一些新的内容。它真的很棒! - karlphillip

7
首先,车轮的投影是椭圆而不是圆形。其次,一些背景渐变很容易产生类似圆形的物体,因此这里不应该有惊喜。当然,椭圆的问题在于它们有五个自由度而不是三个自由度,像是圆形。请注意,五维霍夫空间变得不切实际。一些广义霍夫变换可能可以解决椭圆问题,但代价是大量额外的错误警报圆。为了对抗错误警报,你必须验证它们真的是属于卡车的车轮,而不是其他什么东西。
你可能需要从对象和背景的角度来描述你的问题,而不是车轮检测。这很重要,因为对象会创造出一个视觉上下文,以便检测车轮,而背景分析将显示在首次分割卡车(对象)时有多容易。如果相机静态,可以使用运动来检测背景。如果背景相对统一,则其颜色的高斯混合模型可帮助消除其中大部分。

1
+1 绝对没错,如果 OP 正在处理视频,首先减去背景非常重要,从而提高车轮的检测效果。 - karlphillip
1
如果视角是椭圆的长轴是竖直的,可以运行4D Half来寻找椭圆而不是5D。 - Vlad
1
一个有趣的可能性是检测旋转的车轮。这类似于运动结构,但是当物体移动而不是相机移动时。具有足够分辨率和帧速率,旋转的车轮可能是场景中移动最快的物体,更不用说它们的正弦移动特征了。 - Vlad

5
我强烈建议使用以下内容: http://cvlabwww.epfl.ch/~lepetit/papers/hinterstoisser_pami11.pdf 以及C#实现: https://github.com/dajuric/accord-net-extensions (请查看示例) 该算法可以通过使用2000多个模板(20-30 fps)实现实时性能,因此您可以覆盖椭圆(投影)和圆形情况。您可以修改手部跟踪示例(FastTemplateMatchingDemo)并放置自己的二进制模板(在Paint中制作)。 P.S:为了抑制误报,还结合了某种跟踪。我发布的库链接还包含一些跟踪算法,如:离散卡尔曼滤波器和粒子滤波器,均带有示例! 该库仍在开发中,因此可能会出现某些问题。如果有问题,请随时给我发消息。

+1 这项工作看起来非常有趣,感谢您指出。 - karlphillip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接