gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:20:38 26 4
gpt4 key购买 nike

我们尝试检测跑道上的车道线(并根据此信息确定即将到来的方向)。

我们目前使用以下(简化的)步骤:

  1. 二进制:用二进制阈值转换输入

  2. 裁剪:裁剪感兴趣的区域(目前只是图像的下半部分)

  3. Canny:检测边缘并使用 HoughLinesP 对它们进行分组

  4. 上升线和收盘:只保留具有极端斜率的线 - 忽略水平线

  5. 结果:通过每条线找到连通分量并拟合二次函数

这通常有效(示例:straight.png、left.png),但如果没有删除水平连接线(示例:problems.png - 右下角和左下角),则会出现问题。在这种情况下,两条线和连接被解释为一个连接组件。

由于我们的视角可以从左向右倾斜很多(相机安装在运行的人身上),因此很难为向上指向的线定义斜率阈值。

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

是否有可能通过形态学操作从裁剪图像直接得到分离的线条?类似于 this example .我知道我们没有严格的水平线,这会使任何适合的内核变得更加复杂(我假设)。

目前,我们尝试使用透视变换来获得赛道上的鸟瞰图。这应该有助于区分水平线和向上线。

另一个小问题是线条太短会导致近似二次函数不准确(problems.png 和 straight.png 中最左边的线条)。这可能很容易解决(通过要求组件的最小像素数被计为轨道线)并且不应该成为这个问题的一部分。

编辑(回答 vlad_tepesch 的问题)

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

我们显然想要检测跑道的曲线 - 因为这是方向估计所必需的。但是我们想忽略(删除)problems.png 示例底部的水平连接曲线。

4./6.矫正 - 相机失真

我再看一下整改,到现在我都推迟了,因为我认为它不是那么重要。

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

只需绘制一组中的所有线条并检查非零像素数?

10。车道通常不是二次曲线 - 而是看回旋曲线 - 这可能有点矫枉过正,因此可以使用三阶多项式代替

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

可选的更高级

好点,我们已经考虑过对多帧的结果进行平均。我也将这个建议牢记在心。

直线

straight

left

问题

problems

最佳答案

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

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

我建议采取以下步骤

  1. 裁剪
  2. 二进制(为什么将处理时间浪费在被裁剪的图像部分的二值化上)
  3. 精明(也许尝试垂直 Sobel 以获得水平边缘)
  4. 考虑纠正相机失真
  5. HoughLinesP
  6. 如果您决定不修正输入图像,那么至少修正输出线的坐标
    从处理时间的角度来看,这可能是更理想的选择 - 然而,霍夫线检测器将产生不太理想的结果,具体取决于相机失真的强度
  7. 不管方向如何都连接线
    1. 我会先尝试以下方法
    2. 为每个线段计算一条线(点、方向)
    3. 找到具有相似参数的线并检查线段的距离
    4. 如果足够接近,将它们分组到一个行组
    5. 最后你应该有几个线组,你可以计算一些属性来估计质量
      1. 有多少行/段属于该组
      2. 有多少像素属于该组(所有线段长度之和)
      3. 如果忽略段之间的重叠,有多少像素(组像素数)
      4. 线组(某种组线段)上最左边/最右边的像素
      5. 填充率(组线长/组像素数)
    6. 之后不再需要对线段进行分组并将它们分配给组,但我会保留计算的属性。
  8. 如果弯道应该是车道的一部分,那么我会尝试寻找在末端继续找到的组的组并将它们合并。
    这应该可以防止合并交叉线。
  9. 根据您的需要过滤组
  10. 配件。
    1. 车道通常不是二次的
    2. 改为查看回旋曲线
    3. 这可能有点矫枉过正,所以可以改用三阶多项式

可选的更高级

  1. 将所有组放在最后
  2. 仅在输出级进行过滤
  3. 在下一帧中,将旧组与新组进行匹配,并对您的模型进行一些跟踪和合理性检查。

关于python - 提取向上指向的车道线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56291414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com