检测卡车车轮 [英] Detecting truck wheels
问题描述
我目前正在开展一个项目,我们有一组用相机拍摄的卡车照片。我需要检测它是什么类型的卡车(它有多少个轮子)。所以我正在使用EMGU试图检测到这一点。
我遇到的问题是我似乎无法使用EMGU的HoughCircle检测来检测车轮,它没有检测到所有车轮,也会检测到随机的车轮叶子。
所以我不知道接下来应该尝试什么,我尝试实施SURF算法以匹配它们之间的轮子但这似乎不起作用,因为它们不是完全相同,有没有办法实现松散的SURF算法?
这就是我的开始。
这是Hough Circle检测后的结果。许多错误的检测,有些甚至没有接近圆形,后轮由于某种原因被检测为单个。
是否可以使用SURF确认检测到的圆圈实际是轮子并匹配他们之间?我对下一步应该做的事情感到有点迷茫,任何帮助都会非常感激。
(对不起英语不好)
更新
这就是我所做的。
我使用blob跟踪能够在我的照片集中找到斑点。有了这个我有效地可以找到移动卡车。然后我将blob的矩形分成两部分并从那里取下半部分我知道我得到了应该包含轮子的区域,这大大增加了检测。然后我会对我得到的轮子进行轻度强度松动检查。由于它们通常更黑,我应该得到相当低的值,并且可以丢弃太白,180/255及以上的任何东西。我也知道我的圆半径不能大于检测区的一半除以一半。
在这个答案中,我描述了一种成功测试的方法以下图片:
图像处理管道开始于 以平滑/模糊图像:
接下来,图片已准备好 以找到车轮:
管道的最后阶段将是<发现的强> 画圆圈 在原始图像上:
这种方法不是一个强大的解决方案。这只是为了激励您继续寻找答案。
我不做C#,抱歉。祝你好运!
I am currently working on a project which we have a set of photos of trucks going by a camera. I need to detect what type of truck it is (how many wheels it has). So I am using EMGU to try to detect this.
Problem I have is I cannot seem to be able to detect the wheels using EMGU's HoughCircle detection, it doesn't detect all the wheels and will also detect random circles in the foliage.
So I don't know what I should try next, I tried implementing SURF algo to match wheels between them but this does not seem to work either since they aren't exactly the same, is there a way I could implement a "loose" SURF algo?
This is what I start with.
This is what I get after the Hough Circle detection. Many erroneous detections, has some are not even close to having a circle and the back wheels are detected as a single one for some reason.
Would it be possible to either confirm that the detected circle are actually wheels using SURF and matching them between themselves? I am a bit lost on what I should do next, any help would be greatly appreciated.
(sorry for the bad English)
UPDATE
Here is what i did. I used blob tracking to be able to find the blob in my set of photos. With this I effectively can locate the moving truck. Then i split the rectangle of the blob in two and take the lower half from there i know i get the zone that should contain the wheels which greatly increases the detection. I will then run a light intensity loose check on the wheels i get. Since they are in general more black i should get a decently low value for those and can discard anything that is too white, 180/255 and up. I also know that my circles radius cannot be greater than half the detection zone divided by half.
In this answer I describe an approach that was tested successfully with the following images:
The image processing pipeline begins by either downsampling the input image, or performing a color reduction operation to decrease the amount data (colors) in the image. This creates smaller groups of pixels to work with. I chose to downsample:
The 2nd stage of the pipeline performs a gaussian blur in order to smooth/blur the images:
Next, the images are ready to be thresholded, i.e binarized:
The 4th stage requires executing Hough Circles on the binarized image to locate the wheels:
The final stage of the pipeline would be to draw the circles that were found over the original image:
This approach is not a robust solution. It's meant only to inspire you to continue your search for answers.
I don't do C#, sorry. Good luck!
这篇关于检测卡车车轮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!