我是EE本科生,我正在研究一个需要我检测道路(主要是转弯)的项目。要求是,给定GPS坐标和转弯方向,机器人应该能够将其导航到给定点。问题是GPS坐标非常不准确,道路并不总是直的。因此,我必须检测道路两侧并相应地导航我的机器人。
我想在机器人的两侧安装两个摄像头。通常用于将机器人保持在道路中心,当机器人转弯5米时,其中一个摄像机将引导它通过转弯。
我将使用raspberry pi,但出于测试目的,我在运行Ubuntu的笔记本电脑上安装了simplecv和opencv。我完全没有计算机视觉方面的经验。我不知道从哪里开始。有人可以指导我完成上述任务的算法吗?我应该使用simplecv还是opencv? Python还是C ++?我个人喜欢python上的simplecv,但我不知道它是否能够完成任务。
任何帮助将不胜感激。让我走上正轨!
I will be demoing the project on campus, here the pictures of the campus's roads.
编辑:理想的条件,没有交通,没有障碍。道路宽度不变。
答案 0 :(得分:4)
我认为这个建议会起作用,所以试一试。我将使用的4个图像参考Robert Laganiere的“OpenCV 2 Computer Vision Application Programming Cookbook”。这是我用于研究图像处理的书籍之一,并且在使用HoughLine的道路上也有类似的例子。
之前我使用过HoughLine,但不是在路上。所以为了给你更好的想法,这里是=>
原始图像如下所示:
现在你可以将Canny应用于图像,它将如下所示:
或者你也可以使用索贝尔......
之后,你申请HoughLine:
您必须自己调整参数。
所以这是我的建议=>
放一个前置摄像头,稍微低一点,以便能够探测到几米的车道,你也可以使用ROI(感兴趣的区域)来关注视频的下半部分,车道最有可能是。这是为了消除噪音,同时也检测到与道路平行的其他物体。
使机器人保持在检测到的道路线的中心。 ROI的另一个用途是线的一侧消失,意味着它正在倾斜移动。您可以调整机器人以便在轨道上返回。
当转弯时,您可以指定如果线(可能通过canny运算符)不再垂直,则转弯直到线再次垂直。
当然,您必须编写两个不同的功能,以根据线条的角度检查是执行右转还是左转。
这就是解决这个问题的方法。我的方法应该有相当不错的结果。您可能面临的唯一问题是调整Houghlines和Canny的参数。
(PS在观看你的照片时,我注意到路边的一侧有一段时间的间隙。所以我建议用HoughLineP而不是HoughLine,你可以指定每条线之间的最大间隙,把它当作一条线,如果我确实记得没错。如果仍然无效,你可能需要对视频的帧进行一些预处理。)
希望您发现我的方法很有用。祝好运。如果您还有其他任何需要帮助的地方,请对此答案发表评论,我会尽力提供帮助(:
答案 1 :(得分:4)
由于您询问“从哪里开始”,我建议您从阅读道路/车道检测的问题开始。也许您可以在校园图书馆查询有关该问题的一些文献。
例如书籍DAVIES,E。Roy。 计算机和机器视觉:理论,算法,实用性。 Elsevier / Academic Press,2012,“第23章车载视觉系统”描述了“定位巷道”问题的基本方法“道路标记的位置”。戴维斯的这本书也有一个评论和更新的书目部分。
有关更详细的背景信息,您可以查看以下“调查”文章,其中比较了解决问题的不同方法:
答案 2 :(得分:1)
正如所承诺的,这是另一种方法。
要清楚了解此方法的用途,请观看此视频:http://www.youtube.com/watch?v=TMKd9ov_rmE
颜色分割方法实际上是使用期望最大化(EM)算法。和Gabor过滤消失点。有点接近我的想法,但略有不同。
您可以尝试视频或/和我的方法。
我实际上做的仍然是消失点,ROI根据消失点的y轴点变化。虽然ROI的两侧是固定的,但道路(灰色始终在ROI内)。
之后你必须使用区域,如果ROI中灰色的颜色空间小于90%(你自己计算数字。这只是一个粗略的衡量标准)ROI(意味着有)转弯)。有几种方法可以说明它是哪一回合,我让你自己弄清楚这一部分:p。如果你使用这种方法,你肯定可以想到它。
我唯一担心的是你所展示的白色样本图像中的斑马线或相当行人,但这些可以很容易地删除。 (提示。直方图,如果值的颜色是白色范围......或者你可以使用区域。如果blob小于这个像素数...)
我不确定这个程序的计算成本如何。
但是如果您打算尝试这种方法,请关注HSV或LAB色彩空间而不是RGB。现在您有更多的方法可以进行实验。您也可以尝试考虑自己的方法。玩转。图像处理,计算机视觉真的很有趣(: