16

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

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

环境

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

    1. 因为无论我在哪里开车,环境或多或少都是一样的,所以我将感兴趣区域 (RoI) 设置为排除地平线及其上方的任何东西。
    2. 对图像设置阈值(稍后我会解释设置阈值的原因)
    3. Canny 边缘检测
    4. 应用霍夫变换
    5. 绘制除梯度为 0.0 或接近 0.0 的检测线

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

这是上述操作的结果

霍夫变换

我知道这个问题有很多解决方案,我已经阅读了无数关于这方面的论文,但它们似乎都在处理比这复杂得多的环境和/或简直超出了我的想象。就其价值而言,就在一个多月前,我还没有计算机视觉方面的背景,所以所有这些对我来说都是非常新鲜的。

更新 1:

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

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

截屏

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

4

2 回答 2

3

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

于 2010-11-22T21:43:09.033 回答
1

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

于 2010-11-23T12:34:45.707 回答