基于Hough变换的道路检测

时间:2010-10-09 15:26:00

标签: image-processing hough-transform

使用Hough变换可以检测和跟踪自动驾驶汽车中的道路吗?如果是这样,是否有任何算法实现这一点?我希望能找到一个与我无关的链接。

特别是,我正在寻找使用两条直线的消失点来确定车辆航向的算法。但是,如果还有其他更简单的算法执行这项工作,我也愿意看看它们。

2 个答案:

答案 0 :(得分:4)

是的,你可以做到这一点,但如果你做的就是它可能无法达到你想要的质量。任务并不简单,没有“简单”算法可以根据图像进行“道路”或“前进”检测。另外,there are existing implementations in a number of languages, here's one in C++

你应该考虑的一件事是道路并不总是直的,所以消失点可能在路上转弯......

Stanford DARPA Grand Challenge和DARPA Urban Challenge车辆使用基于颜色的检测来检测可驱动的表面(例如道路),然后使用某种边缘检测和线形成算法(目前还不清楚它是否基于Hough变换)来定义对道路方向的“前瞻性”估计。我确实相信他们使用某种系统来检测消失点,他们肯定会解决道路上的转弯。

我认为你真正需要检测的是道路边缘,将它们变成线(不一定是直线),然后找到收敛点。这假设可以解决许多其他困难任务:(1)您的图像具有适当的质量; (2)你可以检测道路,或至少检测它的边缘; (3)您可以足够快地处理图像以跟上车辆运动。

如果你所做的只是分析一些现有的视频,我会从一个非常基本的方法开始:

  1. 检测视频中的路面 - 这是一个分割任务,找到图像中所有道路的像素;这将有助于分为三个课程:道路,非道路和天空。
  2. 找到地平线(这大致是你的道路/非道路和天空等级相遇的地方
  3. 使用简单的边缘检测器(比如Sobel边缘检测器)来区分道路和非道路之间的边缘
  4. 在Sobel边缘上应用Hough变换以绘制道路边缘的“线”
  5. 找出路线在地平线上相遇的地方

答案 1 :(得分:1)

您实际上可能会考虑针对此问题调查Graph-cuts和高斯混合模型。它可能对你很好。 OpenCV具有这两种算法的实现。以下是这两种算法用于细分的example应用程序。