人工环境中的车道检测

时间:2010-11-22 18:08:21

标签: computer-vision hough-transform

我正在编写一个可以在驾驶模拟器中检测车道的应用程序。环境相对简单,大多是直的多车道道路,几乎没有曲率。目前,我可以使用(经典)Hough变换成功检测线条,但问题是HT自然也会检测到非线路的线条。

我怎样才能更有选择性?我没有绘制水平线,但仍有一些线路在进入。理想情况下,我想检测车辆行驶的车道边界。以下是环境的典型图像

Environment

这是我到目前为止所做的事情:

    1.因为我开车的地方环境差不多,所以我设置了感兴趣的区域(RoI)以排除地平线及其上方的任何东西。
    2。阈值图像(我会稍微解释一下阈值的原因)
    3。 Canny边缘检测
    4。应用霍夫变换
    5。绘制检测到的线,不包括具有0.0或接近0.0
的梯度的线

成像阈值的原因如下。如果你看一下上面链接的环境照片,你会看到一条与道路平行的灰色线条。因为它是一条连续线 - 与车道标记不同 - HT最终检测到它。我不能基于渐变来排除它,因为它具有与车道标记相同的梯度。通过阈值处理,我可以删除它,因此只检测作为实际车道标记的行。

以下是上述操作的结果

Hough Transform

据我所知,这个问题有很多解决方案,我已经阅读过无数篇论文,但他们似乎都处理的环境比这复杂得多,而且/或者只是简单的方法。为了它的价值,仅仅一个多月前,我没有ComputerVision的背景,所以这对我来说都是非常新的。

更新1:

我想更好地说明这一点,我正在寻找一种模拟车道的方法,以便不包括不适合模型的线条。不幸的是,我不知道从哪里开始使用模型。有什么建议吗?

为了它的价值,我已经设法识别出车辆在其中行驶的车道,并且可以排除不属于“主动”车道的额外线路,可以这么说。希望这张照片会有所帮助

Screenshot

它并不完美,但我认为这是我的想法。在建模之后,我的最终目标是生成车辆的航向/位置。但我只是想首先获得相对强大的车道检测。我希望有一个相对简单的技术可以帮助实现这个目标(不依赖于系统参数,如视场焦距)。

2 个答案:

答案 0 :(得分:3)

一种方法是使用您正在查看的场景的先验知识。您可以拥有一个隐藏状态的模型,包括或多或少的静态参数,如摄像机高度,摄像机倾斜或车道宽度,以及动态参数,如摄像机偏航,摄像机在车道内的横向位移,道路曲率等。可以在Kalman filter的框架中处理这样的模型。这种模型的一个优点是能够容忍其他路面标记,例如方​​向箭头,斑马等。祝你好运!

答案 1 :(得分:1)

也许您可以尝试仅在灰白色过渡处找到边缘上的线条而不是整个图像中的所有边缘上的线条?