c# - 检测卡车车轮

标签 c# opencv image-processing emgucv surf

我目前正在开展一个项目,我们有一组通过相机行驶的卡车照片。我需要检测它是什么类型的卡车(它有多少个轮子)。所以我正在使用 EMGU 来尝试检测这一点。

我遇到的问题是我似乎无法使用 EMGU 的 HoughCircle 检测来检测轮子,它不会检测到所有轮子,还会检测到树叶中的随机圆圈。

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

这就是我的开始。

这是霍夫圆检测后得到的。许多错误的检测,有一些甚至没有接近一个圆,后轮由于某种原因被检测为单个。

Hough Circles

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

(抱歉英语不好)

更新

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

After dectection

最佳答案

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

图像处理管道以 downsampling 开始。输入图像,或执行 color reduction减少图像中数据量(颜色)的操作。这会创建更小的像素组来使用。我选择了缩减采样:

管道的第二阶段执行 gaussian blur 为了平滑/模糊图像:

接下来,图像准备好 thresholded ,即二值化:

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

管道的最后阶段将是 draw the circles 在原始图像上发现的:

这种方法不是一个可靠的解决方案。它只是为了激励您继续寻找答案。

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

关于c# - 检测卡车车轮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22460651/

相关文章:

c++ - opencv无法加载jp2图像文件

linux - "In-source builds are not allowed"在 cmake

python - opencv2 Canny + findContours在某些图像上不起作用

opencv - 如何使用x,y坐标在另一个图像上添加图像?

c# - 在 C# 中,如何根据这些对象的一个​​或多个属性比较两个对象列表?

c# - 如何从范围中获取缺失的日期

python - OpenCV图片卡住

java - 在 imagej 中显示线条的不同方式的优点

c# - 恢复 SQL Server 数据库失败 SMO C#

c# - NUnit 的 ExpectedExceptionAttribute 是测试是否引发异常的唯一方法吗?