计算机视觉,检测道路,从哪里开始?

时间:2013-11-10 07:06:42

标签: opencv computer-vision raspberry-pi simplecv

我是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.

编辑:理想的条件,没有交通,没有障碍。道路宽度不变。

3 个答案:

答案 0 :(得分:4)

我认为这个建议会起作用,所以试一试。我将使用的4个图像参考Robert Laganiere的“OpenCV 2 Computer Vision Application Programming Cookbook”。这是我用于研究图像处理的书籍之一,并且在使用HoughLine的道路上也有类似的例子。

之前我使用过HoughLine,但不是在路上。所以为了给你更好的想法,这里是=>

原始图像如下所示:

enter image description here

现在你可以将Canny应用于图像,它将如下所示:

enter image description here

或者你也可以使用索贝尔......

enter image description here

之后,你申请HoughLine:

enter image description here

您必须自己调整参数。

所以这是我的建议=>

放一个前置摄像头,稍微低一点,以便能够探测到几米的车道,你也可以使用ROI(感兴趣的区域)来关注视频的下半部分,车道最有可能是。这是为了消除噪音,同时也检测到与道路平行的其他物体。

使机器人保持在检测到的道路线的中心。 ROI的另一个用途是线的一侧消失,意味着它正在倾斜移动。您可以调整机器人以便在轨道上返回。

当转弯时,您可以指定如果线(可能通过canny运算符)不再垂直,则转弯直到线再次垂直。

当然,您必须编写两个不同的功能,以根据线条的角度检查是执行右转还是左转。

这就是解决这个问题的方法。我的方法应该有相当不错的结果。您可能面临的唯一问题是调整Houghlines和Canny的参数。

(PS在观看你的照片时,我注意到路边的一侧有一段时间的间隙。所以我建议用HoughLineP而不是HoughLine,你可以指定每条线之间的最大间隙,把它当作一条线,如果我确实记得没错。如果仍然无效,你可能需要对视频的帧进行一些预处理。)

希望您发现我的方法很有用。祝好运。如果您还有其他任何需要帮助的地方,请对此答案发表评论,我会尽力提供帮助(:

答案 1 :(得分:4)

由于您询问“从哪里开始”,我建议您从阅读道路/车道检测的问题开始。也许您可以在校园图书馆查询有关该问题的一些文献。

例如书籍DAVIES,E。Roy。 计算机和机器视觉:理论,算法,实用性。 Elsevier / Academic Press,2012,“第23章车载视觉系统”描述了“定位巷道”问题的基本方法“道路标记的位置”。戴维斯的这本书也有一个评论和更新的书目部分。

有关更详细的背景信息,您可以查看以下“调查”文章,其中比较了解决问题的不同方法:

MCCALL, Joel C.; TRIVEDI, Mohan M. Video-based lane estimation and tracking for driver assistance: survey, system, and evaluation. Intelligent Transportation Systems, IEEE Transactions on, 2006, 7.1: 20-37.

答案 2 :(得分:1)

正如所承诺的,这是另一种方法。

要清楚了解此方法的用途,请观看此视频:http://www.youtube.com/watch?v=TMKd9ov_rmE

颜色分割方法实际上是使用期望最大化(EM)算法。和Gabor过滤消失点。有点接近我的想法,但略有不同。

您可以尝试视频或/和我的方法。

我实际上做的仍然是消失点,ROI根据消失点的y轴点变化。虽然ROI的两侧是固定的,但道路(灰色始终在ROI内)。

之后你必须使用区域,如果ROI中灰色的颜色空间小于90%(你自己计算数字。这只是一个粗略的衡量标准)ROI(意味着有)转弯)。有几种方法可以说明它是哪一回合,我让你自己弄清楚这一部分:p。如果你使用这种方法,你肯定可以想到它。

我唯一担心的是你所展示的白色样本图像中的斑马线或相当行人,但这些可以很容易地删除。 (提示。直方图,如果值的颜色是白色范围......或者你可以使用区域。如果blob小于这个像素数...)

我不确定这个程序的计算成本如何。

但是如果您打算尝试这种方法,请关注HSV或LAB色彩空间而不是RGB。现在您有更多的方法可以进行实验。您也可以尝试考虑自己的方法。玩转。图像处理,计算机视觉真的很有趣(: