我们尝试检测正在运行的轨道上的车道线(并使用此信息作为即将到来的方向)。

当前,我们使用以下(简化)步骤:

  • 二进制:使用二进制阈值
  • 转换输入
  • 裁剪:裁剪感兴趣的区域(当前只是图像的下半部分)
  • Canny:检测边缘并将其与HoughLinesP组合在一起
  • 向上线和结尾线:仅使线保持极高的斜率-忽略水平线
  • 结果:查找连接的组件并通过每行
  • 拟合二次函数

    这通常可以正常工作(示例:straight.png,left.png),但是如果未移除水平连接线(例如:problems.png-右下和左下),则会出现问题。
    在这种情况下,两条线和连接被解释为一个连接的组件。

    由于我们的观点可能从左到右倾斜很多(将摄像机安装在跑步的人身上),因此很难为向上指向的线定义倾斜阈值。

    有没有更好的方法来消除非向上指向的轨迹线?
    作为使用canny的当前解决方案,霍夫变换和斜率滤波对于曲线不是最佳的,有时根本不起作用(如上所述)。

    是否可以通过形态学操作将裁剪后的图像直接移到分隔线?
    类似于this example
    我知道我们没有严格的水平线,这会使任何合适的内核变得更加复杂(我认为)。

    当前,我们尝试使用透视变换在赛道上鸟瞰。
    这应该有助于区分水平线和向上线。

    另一个小问题是太短的线会导致近似的二次函数不正确(problems.png和straight.png中最左边的线)。这可能很容易解决(通过将最少的像素数计算为要计为轨迹线的组件),因此不应该成为问题的一部分。

    编辑(回答vlad_tepesch的问题)

    曲线是什么?它们是否应该成为您的车道模型的一部分?

    我们显然希望检测运行轨迹的曲线-因为方向估计需要此曲线。但是我们要忽略(删除)问题.png示例底部的水平连接曲线。

    4./6。校正-相机失真

    我将再看一下整改,直到现在我才将其推迟,因为我认为这并不重要。

    7.3如果段之间的重叠被忽略了多少个像素(组像素数)

    只需画出一组中的所有线并检查非零像素数?

    10.车道通常不是二次的-请改用int复数形式-这可能会导致过大杀伤力,因此可以改用三阶多项式

    我明白你的意思。类固醇目前不在范围内,但我会记住它们。
    如果我们使用更复杂的拟合,您将如何进行方向估计?
    目前,我们只是采用第二个oder多项式的第一个系数来估计弯曲方向(以及曲率度以区分曲线和笔直部分)。

    可选的更高级

    好一点,我们已经考虑过对多个帧取平均结果。我也把这个建议留在脑海中。



    python - 提取向上的车道线-LMLPHP



    python - 提取向上的车道线-LMLPHP

    问题

    python - 提取向上的车道线-LMLPHP

    最佳答案

    看来您真正的问题是过滤和连接步骤。因为您过滤掉了许多水平分量,所以为了连接未过滤的几乎垂直的线,只剩下次优段。

    曲线是什么?它们是否应该成为您的车道模型的一部分?
    起初我不认为,但它仅在分组阶段产生影响。

    我建议以下步骤

  • 作物
  • 二进制(为什么在将要裁剪的图像部分进行二值化时浪费处理时间)
  • (可能尝试使用垂直Sobel以获得水平边缘)
  • 考虑纠正以纠正相机失真
  • HoughLinesP
  • 如果您决定不校正输入图像,则至少校正输出线的坐标
    从处理时间的 Angular 来看,这可能是更理想的选择-但是,根据相机畸变的强度,霍夫线检测器产生的最佳结果会较差。
  • 连接线,无论其方向如何
  • 我首先尝试以下
  • 为每个段计算一条线(点,方向)
  • 查找具有相似参数的线并检查段
  • 的距离
  • 如果距离足够近,请将它们分组为一个线组
  • 最后,您应该具有一些带有一些属性的线组,您可以计算这些属性以评估质量
  • 属于
  • 组的行/段数
  • 属于该组的像素个数(所有线段的长度之和)
  • 如果段之间的重叠被忽略,多少个像素(组像素数)
  • 线组(某种组线段)上最左边/最右边的像素
  • 填充率(组行长/组像素数)
  • 之后,不再需要对线段进行分组并将它们分配给组,但是我将保留计算出的属性。
  • 如果弯头应该是车道的一部分,那么我将尝试寻找在末尾继续找到的组并将其合并的组。
    这应防止交叉线合并。
  • 根据您的需求过滤组
  • 拟合。
  • 车道通常不是二次
  • 改为int换行符
  • 这可能会过大,因此可以使用三阶多项式来代替

  • 可选的更高级
  • 将所有组保留在最后
  • 仅在输出级别
  • 进行过滤
    下一帧中的
  • 将旧组与新组进行匹配,并对模型进行一些跟踪和真实性检查。
  • 09-08 11:12