车道线检测——传统方法(canny边缘检测+霍夫变换+RANSAC算法)

车道线检测是自动驾驶中的一个基础模块,车道保持,自适应巡航,自动变道;对于全自动驾驶汽车后续的车道偏离或轨迹规划决策也很重要。

目前车道线检测主要有两种方案:传统方法深度学习。在本文中我们主要聚焦于传统方法。

具体实现步骤:

输入图片

  • 读取输入图像(通常是RGB格式)。
image = cv2.imread('path_to_image.jpg')
  • 预处理
    • 转换为灰度图:将RGB图像转换为灰度图,减少计算复杂度。
       

 

原因:

  1. 降低计算复杂度

    • RGB图像由三个通道(红、绿、蓝)组成,每个通道都有不同的信息。将图像转换为灰度图,仅保留一个通道(亮度信息),可以显著减少数据量,从而降低计算成本。
  2. 增强特征提取效果

    • 在许多计算机视觉任务中,颜色信息可能不是主要特征,灰度图能够突出亮度变化,方便边缘、形状等特征的提取。
  3. 统一处理方式

    • 对于许多图像处理算法,使用灰度图可以简化处理流程,因为只需考虑一个通道的像素值,而无需处理多个颜色通道。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

        高斯滤波:应用高斯滤波以平滑图像,减少噪声。

blurred = cv2.GaussianBlur(gray, (5, 5), 0)
  • 高斯滤波能够有效减少图像中的高频噪声(如细小的突变),使得图像更加平滑。
  • 由于高斯函数的性质,边缘和细节部分不会被过度模糊,从而保持重要的结构信息。
  • 边缘检测
    • cv2.Canny进行边缘检测,使用50和150作为低高阈值,输出边缘图像edges
edges = cv2.Canny(blurred, 50, 150)

  • 霍夫变换(可选):
    • 从边缘图中提取边缘点,应用霍夫变换检测直线,返回检测到的线段。

一、什么是霍夫变换
霍夫变换是一种特征检测,被广泛应用在图像分析、计算机视觉以及数位影像处理。经典的霍夫变换是侦测图片中的直线,之后,霍夫变换不仅能够识别直线,也能够识别任何形状,常见的有圆形、椭圆形。
问题:对于人类而言,识别一副图像中的直线或是圆,是一件非常容易的事情。但对于计算机而言,一副图像所呈现的只是灰度值从0~255的矩阵而已,它无法判断该矩阵中的哪些是直线哪些不是,而霍夫变化就是帮助计算机“看到”图像中直线或圆的一种算法。

1. 基本思想

将传统的图像从X,Y轴坐标系变化到参数空间(m,b)或者霍夫空间(hough space)中,通过参数空间(可称为累加空间)计算局部最大值从而确定原始图像中直线或圆的位置。

2. 常见的霍夫变换

基于笛卡尔坐标系空间的霍夫变换
在平面直角坐标系中,一条直线是由其斜率m0和截距b0所确定的,换句话而言,一条直线上的点所使用的是同一对m0和b0。所以,如果存在一个坐标体系是由m0为横轴,b0为纵轴,形成以(m0,b0)为参数的参数空间,那么平面直角坐标系中的一条直线上的点在参数空间上可表示为一个点。

当平面直角坐标系中的任意一点随着m0和b0的改变,在参数空间的所呈现的就是一条直线。在平面直角坐标系中任取两点A,B,并在参数空间投影,两条直线交于一点C(p,q)。交点C所体现的信息就是,点A,B两点连接的直线斜率为p,截距为q。因此我们可以理解霍夫变换其实就是计算参数空间累加点的值大小,值越大说明该点的参数m0,b0所代表的直线置信度越高。

但当直线垂直于X轴时,斜率m0将会变得无穷大,在计算机数值运算时会造成无法进行的现象。因此提出基于极坐标空间的霍夫变换,来解决这一问题。

基于极坐标空间的霍夫变换
极坐标是由极点,极轴,极径组成的坐标系。那么,一条直线可以被原点到该直线的垂直距离和垂线与X轴的夹角所唯一确定。投影到参数空间都可以表示为一条正弦曲线。那么极坐标系参数空间就与笛卡尔坐标系参数空间类似,都可以看成累加空间计算局部最大值,进行直线的预测。

但在现实的应用场景中,许多直线并不是非常精细,或多或少存在偏差,导致参数空间各曲线不能交于精确的一点,因此我们需要将参数空间分块,分块的步长则为单位长度的极径和极角。其次计算单位区域内累加的交点数量,将大于阈值的区域值认定为直线存在,存储其参数。

但是分块的步长对检测的精准度也会有影响,分的太细,计算代价就会上升,分的太大,计算的准确率就会下降。现实场景的应用会使用到一种Mask掩膜的做法,提取我们感兴趣的区域,来大大减少计算量。

 参考链接:

传统车道线检测-canny边缘检测-霍夫变换-完整代码(python)_霍夫平面累加的阈值-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/m0_46988935/article/details/109234900

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值