我们尝试检测行驶轨迹上的车道线(并使用此信息作为即将到来的方向)。
我们当前使用以下(简化)步骤:
二进制:使用二进制阈值转换输入
裁剪:裁剪感兴趣的区域(当前仅在图像的下半部分)
Canny::检测边缘并将其与HoughLinesP分组
向上的线和结束线:仅保留斜率最大的线-忽略水平线
结果::找到连接的组件并通过每行拟合二次函数
这通常可以正常工作(示例:straight.png,left.png),但是如果没有移除水平连接线(例如:problems.png-右下和左下),则会出现问题。 在这种情况下,两条线和连接被解释为一个连接的组件。
由于我们的观点可以从左向右倾斜很多(摄像机安装在跑步的人身上),因此很难为向上指向的线定义倾斜阈值。
是否有更好的方法来消除非向上指向的轨迹线? 作为当前使用canny的解决方案,霍夫变换和斜率滤波对于曲线不是最佳的,有时根本不起作用(如上所述)。
是否可以通过形态学操作将裁剪后的图像直接移到分隔的线条上? 与this example类似。 我知道我们没有严格的水平线,这会使任何合适的内核变得更加复杂(我认为)。
当前,我们尝试使用透视变换来获得赛道上的鸟瞰图。 这应该有助于区分水平指向和向上指向的线条。
另一个小问题是,行太短会导致近似的二次函数不正确(problems.png和straight.png中的最左行)。这可能很容易解决(通过将最少的像素数计算为跟踪线即可将其计算在内),并且不应该成为此问题的一部分。
编辑(回答vlad_tepesch的问题)
曲线是什么?它们是否应该成为您的车道模型的一部分?
我们显然希望检测行驶轨迹的曲线-因为方向估计需要此曲线。但是我们想忽略(删除)问题.png示例底部的水平连接曲线。
4./6。校正-相机失真
我将再看一下整改,直到现在我推迟了整改,因为我认为这并不重要。
7.3如果段之间的重叠被忽略了多少个像素(组像素数)
只绘制一组中的所有线并检查非零像素数吗?
10。车道通常不是二次的-而是看int复数形式-这可能会导致过大杀伤力,因此可能改用三阶多项式
我明白你的意思。类固醇目前不在范围内,但我会记住它们。 如果我们使用更复杂的拟合,您将如何进行方向估计? 目前,我们仅使用第二次多项式的第一个系数来估计弯曲方向(以及曲率度以区分曲线和笔直部分)。
可选的更高级
好点,我们已经考虑过对多个帧取平均结果。我也把这个建议留在脑海里。
直接
左
问题
答案 0 :(得分:2)
似乎您真正的问题是过滤和连接步骤。因为您滤除了许多水平分量,所以为了连接未滤波的近乎垂直的线,只剩下次优段。
曲线是什么?它们是否应该成为您的车道模型的一部分? 起初我不认为,但它仅在分组阶段产生影响。
我建议采取以下步骤
可选的更高级