基于opencv+python的车道检测技术

针对自动驾驶系统的实际需求,咱们须要一种可以兼顾速度、不一样环境下高检测成功率和鲁棒性的车道识别算法。首先,由于停车场更多的是地下光线昏暗的状况须要提升车道线与周围环境的对比度,而后灰度化图像进行模糊降噪处理。由于摄像头相对于车身是固定的因此只需根据特定位置进行处理。经过边缘提取获取特征线,以多约束条件限制获取车道线坐标位置传送给控制单元。由控制单元执行PID算法实时控制车辆根据地面车道线循迹寻找车位。
算法整体框图
Gamma校订
由于人眼对外界光源的感光值与输入光强不是呈线性指数关系的。在低照度下,人眼更容易分辨出亮度的变化,随着照度的增长,人眼不易分辨出亮度的变化。而摄像机感光与输入光强呈线性关系。为了使摄像机能像人眼同样拥有灰暗环境或光线反射较强的状况下颜色的识别度,须要将摄像机采集的图像进行Gamma校订。
Gamma变换加强算法
当γ小于1时,imageinput越小,加强效果越明显,当γ大于1时,imageinput越大,加强效果越明显。
原图效果图
图像灰度化并高斯模糊
一般状况下,车道线为白色或黄色线条,与图像中的路面以及其余车辆等背景造成明显差异。为保持R,G,B三通道的平衡性,将灰度值定义为web

在这里插入图片描述
获得灰度图片后,由于实际环境并不如理想状态同样,获得的图像拥有不少噪声,咱们须要对其进行降噪处理。本文应用的方法是高斯模糊(Gaussian Blur),也叫作高斯平滑。一般用它来减小图像噪声以及下降细节层次,以加强图像在不一样比例下的图像效果。高斯模糊是一种图像模糊滤波器,他用正态分布计算图像中每一个像素变化。在二维空间定义为:
在这里插入图片描述
效果图以下:算法

在这里插入图片描述
由于车载摄像头的位置相对于车辆来讲是固定不动的,因此没必要对整个图像进行处理。经过ROI剪裁获取图片固定位置的车道线进行处理能够大大下降行车电脑ECU(Electronic Control Unit)的工做负担,提升ECU的处理速度,大大提升车辆控制单元的即时性。
在这里插入图片描述
Ganny算子的边缘提取
Canny边缘检测算子使John F.Canny于1986年开发出来的一个多级边缘检测算法,它的目标是找到一个最有的边缘检测算法。相较于差分运算法、Sobel、Scharr、Laplace(拉普拉斯)、Roberts边缘算法,Canny算子具备好的信噪比、高的定位新能、对单一边缘仅有惟一响应等优点[9]。算法实现步骤以下:svg

  1. 用高斯滤波器对图像滤波,以出去图像中的噪声。
  2. 寻找图像的强度梯度(intensity Gradients)。
  3. 应用非最大抑制(non-maximum suppression)技术来消除边误检。
  4. 应用双阈值的方法来决定可能存在的边界。
  5. 利用滞后技术来跟踪边界。
    在这里插入图片描述
    基于Hough变换的车道线检测与选取
    Hough变换于1962年由Paul Hough提出,并在美国做为专利被发表。它所实现的是一种从图像空间到参数空间的映射关系。因为其根据局部度量来计算全面描述参数,于是对于区域边界被噪声干扰或被其余目标遮盖而引发边界发生某些间断的状况,它具备很好的容错性和鲁棒性。
    在这里插入图片描述
    在这里插入图片描述
    其中,λ:为该直线到原点的距离;θ:为过原点到该直线的垂线与X轴正向夹角,表面直线方向。相对于原图像空间XY,参数λ和θ构成新的坐标系为参数空间。原图像空间中的每一个点,对应于新参数空间中的一条正弦曲线;原图像中的一条直线,对应参数空间中全部的正弦曲线通过同一点。
    在这里插入图片描述
    图像空间中二、三、4的所对应的参数空间正弦曲线交于T点,代表点二、三、4处在同一直线上。
    为了能从Hough检测所得到的直线簇中,获取正确的车道线,须要结合车道线的特征。车道线倾斜角度θ相对于车辆固定可知:在这里插入图片描述
    由于本文须要的是两条车道线,对知足上述条件的的直线仍然须要进行直线拟合处理,本文采用最小二乘法多项式直线拟合,根据获得知足要求的直线,求近似直线,使得近似直线与各个直线的误差最小。对应获得两条当前车道线并延长,而后获得其交点坐标。
    在这里插入图片描述 原理如上,明天再对代码进行详解。纯属我的看法,如如有误欢迎交流。