6

我是一名 EE 本科生,我正在从事一个需要我检测道路(主要是转弯)的项目。要求是,给定 GPS 坐标和转弯方向,机器人应该能够导航到给定点。问题是 GPS 坐标非常不准确,道路并不总是笔直的。所以我必须检测道路的两侧并相应地导航我的机器人。

我正在考虑在机器人的两侧安装两个摄像头。这通常用于将机器人保持在道路中央,当机器人在转弯 5 米处时,其中一个摄像头将引导它通过转弯。

我将研究树莓派,但出于测试目的,我在运行 Ubuntu 的笔记本电脑上安装了 simplecv 和 opencv。我绝对没有计算机视觉方面的经验。我不知道从哪里开始。有人可以指导我完成上述任务的算法吗?我应该使用 simplecv 还是 opencv?Python 还是 C++?我个人喜欢 python 上的 simplecv,但我不知道它是否能够完成任务。

任何帮助,将不胜感激。让我走上正轨!

我将在校园里演示这个项目,这里是校园道路的图片。

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

4

3 回答 3

4

一个我认为可行的建议,所以试一试。我将使用的 4 张图片参考了 Robert Laganiere 的“OpenCV 2 Computer Vision Application Programming Cookbook”。这是我用来研究图像处理的书之一,在路上也有一个使用 HoughLine 的类似示例。

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

原图如下所示:

在此处输入图像描述

现在你可以将 Canny 应用到图像上,它看起来像这样:

在此处输入图像描述

或者你也可以使用 Sobel...

在此处输入图像描述

之后,你应用 HoughLine:

在此处输入图像描述

您必须自己调整参数。

所以这是我的建议=>

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

您使机器人停留在检测到的两条道路线的中心。ROI 的另一种用法是线的一侧消失,表示它正在移动,明显倾斜。您可以调整机器人回到正轨。

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

当然,您必须编写两个不同的函数来根据线的角度检查是右转还是左转。

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

(PS 在查看您的照片时,我注意到路边的一侧偶尔会有间隙。所以我建议使用 HoughLineP 而不是 HoughLine,如果我记得的话,您可以在其中指定每条线之间的最大间隙以将其视为一条线正确。如果仍然不起作用,您可能需要对视频的帧进行一些预处理。)

希望你觉得我的方法有用。祝你好运。如果您还有其他需要帮助的问题,请对此答案发表评论,我会尽力提供帮助(:

于 2013-11-10T09:32:29.883 回答
4

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

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

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

麦考尔,乔尔 C.;TRIVEDI, Mohan M. 基于视频的车道估计和驾驶员辅助跟踪:调查、系统和评估。智能交通系统,IEEE Transactions on,2006,7.1:20-37。

于 2013-11-10T10:13:58.463 回答
1

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

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

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

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

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

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

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

我不确定这个程序的计算成本会有多高。

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

于 2013-11-10T16:26:57.677 回答