我正在编写一个可以在驾驶模拟器中检测车道的应用程序。环境比较简单,多为笔直的多车道道路,几乎没有曲率。目前,我可以使用(经典)霍夫变换成功检测线,但问题是 HT 自然也检测到不是车道的线。
我怎样才能更有选择性?我还没有画水平线,但仍然有一些线慢慢进入。理想情况下,我想检测车辆正在行驶的车道边界。以下是环境的典型图像
这是我到目前为止正在做的事情:
-
1. 因为无论我在哪里开车,环境或多或少都是一样的,所以我将感兴趣区域 (RoI) 设置为排除地平线及其上方的任何东西。
- 2. 对图像设置阈值(稍后我会解释设置阈值的原因)
- 3. Canny 边缘检测
- 4. 应用霍夫变换
- 5. 绘制除梯度为 0.0 或接近 0.0 的检测线
成像阈值的原因如下。如果您查看上面链接的环境照片,您会看到一条与道路平行的灰线。因为它是一条连续的线 - 与车道标记不同 - HT 最终会检测到它。我不能根据梯度排除它,因为它与车道标记具有相同的梯度。通过阈值处理,我可以删除它,因此只检测作为实际车道标记的线。
这是上述操作的结果
我知道这个问题有很多解决方案,我已经阅读了无数关于这方面的论文,但它们似乎都在处理比这复杂得多的环境和/或简直超出了我的想象。就其价值而言,就在一个多月前,我还没有计算机视觉方面的背景,所以所有这些对我来说都是非常新鲜的。
更新 1:
我想用更好的术语来说,我正在寻找一种对车道建模的方法,以便不包括不适合模型的线。不幸的是,我不知道从哪里开始使用模型。有什么建议么?
对于它的价值,我已经设法识别出车辆正在行驶的车道,并且可以排除不属于“活动”车道的额外线路,可以这么说。希望这张照片会有所帮助
它并不完美,但它是我猜的。在建模之后,我的最终目标是生成车辆的航向/位置。但我只想首先获得相对稳健的车道检测。我希望有一种相对简单的技术可以帮助实现这一目标(不依赖于系统参数,例如视野焦距)。