gpt4 book ai didi

opencv - 自动驾驶汽车如何消除车道上的障碍物?

转载 作者:太空宇宙 更新时间:2023-11-03 23:07:38 25 4
gpt4 key购买 nike

我从事自动驾驶汽车项目。我想确定汽车在高速公路上的转向角。但对于这种特定情况,没有车道线或任何车道边界,只有沥青本身。我假设周围环境不会包含足够接近沥青颜色的任何颜色。

(假设中间没有白线,我看到的都是沥青)

enter image description here

该过程是实时的(在 Raspberry Pi 上),帧是在相机的帮助下捕获的。

针对这个问题,我提出了如下流水线(OpenCV 4.0 with C++):

  • 降噪 --> BGR2HSV --> HSV 滤波器 --> Canny 边缘检测 --> 裁剪到 ROI --> 霍夫线检测 --> 处理线

这条管道清楚地告诉我汽车应该如何转向才能保持在单行车道的中间。我可以用 HSV 过滤沥青部分。问题是当车道上有障碍物时。可能有箱子放在车道的侧面或中间。在这种情况下,HSV 过滤器会在泳道上创建一个大黑框。霍夫线检测将框的边缘转换为假车道线。最终,这会导致错误的转向预测。实际上,我开发了一种算法来通过观察霍夫线的斜率来处理这个问题,但是,它并不总是稳定的。

(一个红色的盒子放在车道的边上)

enter image description here

我的意思是,您是否建议对此过程进行任何改进以消除图像过滤方面可能存在的障碍?车道上的障碍物会导致错误的 hough 线并影响转向决策。我认为的一个改进是检测图像左侧和右侧(在 ROI 中)最大白色像素数的索引,然后将每个像素之间的每个像素设置为白色。这将扫除道路中间的障碍物(车辆可以撞到障碍物)但无论如何都会将那些留在车道的一侧。但如果道路弯曲,这将不切实际,因为改进会丢失图像中的弯曲数据。

(图片来源:https://www.masterbuilder.co.in/wp-content/uploads/2018/03/Rs-46000-cr-initiative-taken-for-new-express-highways-elevated-roads-Govt.png)

编辑:

当我使用 convexHull as in OpenCV documentation ,我得到了以下结果,这是出乎意料的。

enter image description here

最佳答案

应用 HSV 过滤器后,您可以使用 findContours,然后使用 convexHull .这弥合了检测到的轮廓中的“差距”。

例子:
enter image description here

代码:

import cv2
import numpy as np
# load image in grayscale
img = cv2.imread('hull.png',0)
# load image in color
img_color = cv2.imread('hull.png')
# find contours
contours, hier = cv2.findContours(img,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# get and draw convexhull
for cnt in contours:
hull = cv2.convexHull(cnt)
cv2.drawContours(img_color,[hull],0,(0,0,255),3)
# show images
cv2.imshow('Image', img)
cv2.imshow('Result', img_color)
cv2.waitKey(0)
cv2.destroyAllWindows()

有关更实际的示例,请查看 this answer .所描述的过程在那里应用: enter image description here

关于opencv - 自动驾驶汽车如何消除车道上的障碍物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55941718/

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