启飞汽车

启飞汽车设计汽车设计— 国内专业产品设计培训基地!咨询热线:+86-15923339397
为中小型企业汽车研发和制造提供解决方案
专业承接整车设计开发项目
为各大主机厂,高校提供专业专项培训
为设计爱好者、毕业生提供专业系统培训
2018-09-2198作者:启飞汽车设计
摘要
环境感知系统是智能驾驶电动汽车智能驾驶系统中不可或缺的一部分, 相关的视觉图像处理技术是基于视觉的环境感知系统的核心组成部分, 是国内外学者关注的热点。在现有车道线识别算法的基础上, 本文提出了一种更完善的检测算法。通过逆透视投影变换转换坐标, 对输入图像应用双边滤波、大律法二值化、形态学处理等前处理过程, 消减噪声;最后使用Canny算子进行边缘检测, 并利用Hough变换识别直线, 对结果进行筛选。实验证明车道线识别算法能在不同环境下成功地识别出车道线, 该算法有着较好的实时性和鲁棒性。
视觉图像处理技术是智能驾驶汽车的基础, 车道线的检测是这其中最重要的一部分。本文针对智能驾驶汽车视觉图像处理技术中的车道线检测算法进行了研究。首先利用逆透视变换将摄像头获取的图像转换到世界坐标下, 通过一系列预处理过程通过一系列的预处理过程衰减噪声, 突出车道线边缘信息。然后对图像应用边缘检测, 使用Hough变换识别车道线。并利用识别结果的斜率筛选所识别的直线, 最终得到车道线检测结果。
在机器视觉领域, 当前的比较流行的开发模式是“软件平台+工具包”的组合, 常用的软件平台包括了:VC、C#、VB等。而比较流行的工具包包括:Open CV、halcon、迈斯肯等。
Open CV是一个开源项目, 对多个操作系统平台都有很好的兼容性, 可以在Linux、Windows和Mac OS操作系统上使用。它的算法具有很高的效率。Open CV包含了大量的基于C语言的函数和C++类构成, 对于其他常用的编程语言也开放了接口, 因此我们可以使用Python、Ruby、MATLAB等语言编辑相关算法。因为其开源性, Open CV很好的包含了图像处理和计算机视觉方面的一系列基础的处理过程。
由于Open CV在计算机图像处理方面的优势, 本文采用Open CV和VS平台的结合, 进行车道线检测相关算法实现。基于Windows系统平台进行开发。
一、图像预处理
1.逆透视变换
基于针孔透视的基本模型, 现实世界中平行的车道线, 在摄像机获取的图像中, 往往是不平行甚至是相交的。经典的车道线识别方法直接识别这些相交的车道线, 而本章的车道线识别算法第一步则是通过逆透视投影变换, 将摄像头图像转换为世界坐标下, 从而得到道路的俯视图, 便于后续处理。在逆透视投影变换中, 需要用到摄像头的相关参数:标定后的摄像头内参数 (包括了焦距, 光学中心) 及外参数 (俯仰角, 航向角, 摄像机距地面高度) 。
假设图像平面上其中一个像素点的坐标为;i P={u, v, 1, 1}, 转化为地面坐标g P={xg, yg, -h, 1}, 可以通过以下变换实现:
其中, {fufv}是水平和竖直方向的焦距长, {cucv}是摄像头光学中心, 而且c1=cosα, c2=cosβ, s1=sinα, s2=sinβ。
图1 车道图像
经过了逆投影透视变换后, 在现实中平行的车道线在世界坐标中也为平行状态, 后续通过霍夫变换检测的车道直线很容易由斜率筛选出来, 同时也便于后续的形态学处理。在逆投影透视变换的过程中, 也过滤了大部分的无关区域, 减少了大量的计算时间, 提高了算法的实时性。
图2 逆投影透视变换后
2.图像滤波
在车辆摄像头获取单目图像的过程中, 由于光照的变化、车辆本身姿态的不稳定以及成像系统及其传输介质的不完善, 摄像头获取的数字图像往往会受到多种噪声的污染。同时, 在图像处理的过程中, 一些操作也会引入一部分噪声, 对之后的操作造成影响。
图像滤波, 指的是在尽量不破坏输入图像细节特征的前提下, 减少输入图像的噪点。
常用的线性滤波手段包括了:均值滤波和高斯滤波。
均值滤波, 是最直接简洁的一种滤波算法, 对输入图像内核里对应像素求平均值, 得到输出。
在均值滤波中, 内核越大, 图像处理的结果越模糊, 从而对细节信息的损害也就越严重, 这是均值滤波方法的根本缺陷, 即在图像滤波的过程中也失去了大量的细节特征, 对后续的识别算法带来不好的影响。
高斯滤波是一种线性平滑滤波手段, 相比较于直接对邻近像素点求平均值, 高斯滤波对图像进行的是加权平均的处理, 在处理的时候, 输出图像上点的灰度值, 都等于它本身及其邻域内的相关像素的值, 经过加权平均后计算得出。高斯滤波的具体操作是:用定义好的内核逐个处理图像中的像素, 处理后内核中心像素点的灰度值, 就等于用内核大小确定的邻域内所有像素值的加权平均值。
采用高斯滤波, 可以有效的抑制服从正态分布的噪声, 但同样也在处理的过程中丢失了大量的图像细节信息。
常用的非线性滤波手段包括了:中值滤波, 双边滤波等。
中值滤波是现今车道识别算法中比较流行的一种非线性滤波方法, 该算法既能有效的消减椒盐噪点、脉冲噪点, 也能较好的保存图像的细节信息, 特别是对车道处理非常重要的边缘细节。
中值滤波的计算过程如下:计算图像上每个点一定邻域范围内各个像素点的灰度值, 求出中间值, 用这个中间值作为输出值代替原图像像素点的值, 从而减少图像中由于各种原因产生的噪声点。
中值滤波能很好的抑制椒盐噪声, 但在实际使用过程中, 若内核大小选择不当, 则很可能在处理后丢失细节信息, 因此在车道线检测中, 传统的中值滤波手段并不是最优的滤波方法。
本文采用双边滤波的方法对图像进行滤波:
其中, 式中对应每一个像素点的加权系数w (i, j) , 是空间临近度和亮度相似度两个相关因子的积。
图3 逆投影透视变换后
在图像变化比较缓和的区域, 这就等效于一个低通的滤波器;而在图像灰度有很大跳跃的区域, 算法就利用像素点附近像素灰度的平均值来替换原值。
3.灰度处理和自适应二值化
从摄像头获取的一般为彩色图像, 而车道线的识别一般是基于图像的边缘特征而非色彩特征。将彩色图像转变为灰度图像, 大大加快了算法的运算速度, 提高了实时性。
根据阈值选取办法的不同, 二值化方法包括了全局阈值法和局部阈值法。本文使用整体最优阈值法 (Otsu法) 进行二值化分割。
整体最优阈值法 (Otsu法) 是Otsu在20世纪70年代提出的, 这种二值法相对简单, 是基于对最小方差法原理的理解和推算, 主要任务是根据图像计算一个最优的阈值, 使不同类间的分离性最好, 是一种可以用客观评价因子来描述效果的图像阈值分割方法。其原理是计算图像像素点灰度值的分布特点, 把类间的方差作为判断标准, 选择使得类间方差取到极值的灰度值作为我们需要的自适应的阈值。
4.形态学操作
在数字图像处理中, 形态学操作的基本的运算子包括了:膨胀、腐蚀、开和闭。设有二维空间F和G, 在其上分别定义f (x) 和g (x) 两个函数, 其中f (x) 为原始图, g (x) 为变换函数, 则f (x) 对于g (x) 的腐蚀和膨胀分别定义为:
图4 原车道图像
图5 全局阈值法与Ostu整体最优阈值法分割
开运算指的是对图像先后应用上述两式的运算。可以消除图像中小的噪声点、使图像边缘较细的地方分离、平滑图像中占比较大的图形边界的同时基本不增大或减小其面积。f (x) 对于g (x) 的开运算定义为:
同理, 闭运算指的是对图像先后应用上述两式的运算。用来填满图形内部的小洞、使靠近的图形连接、平滑图形的边界的同时基本不增大或减少其面积。
5.边缘检测
边缘检测是计算机视觉领域内的最重要的检测方式之一, 这类方法可以计算出图像中色彩值增减明显的像素点坐标。经过了边缘检测后的图像, 信息量大大减小, 但却留下对其他图像处理手段来说非常必要的边缘特征。
图像中色彩值跳跃并不明显的区域, 邻近的像素点间色彩值变化不大, 对色彩值求一阶导数, 导数接近于零, 但是图像中色彩值跳跃明显的区域, 一阶导数的值则较大, 据此可以计算边缘所经过的坐标。然后对色彩值求二阶导数, 用结果判定该坐标在检测出的边缘的哪一边。
1986年, Canny提出了Canny边缘检测算法。Canny算子求边缘点算法主要有4个步骤:
用高斯滤波器平滑图像
计算梯度的幅值和方向
幅值和方位角的表示:
进行非极大值抑制。遍历图像, 核的中心像素点M[x, y]与沿着水平方向和垂直方向的临近像素点进行对比, 如果M[x, y]的梯度小于这两个方向的像素点梯度, 则令M[x, y]=0。
识别和链接边缘。设定两个阈值为t1和t2, 在本章中设定t1=0.33t2。当在某一坐标上输入图像中梯度值小于t1时, 将该坐标灰度大小输出为0, 得到图像1。当在某一坐标上输入图像中梯度值小于t2时, 将灰度大小输出为0, 得到图像2。因为对图像1检测的阈值大于2的阈值, 处理后图像2保留的信息量要小于图像1。可以以图像1为基础, 以图像2作为补充连接图像边缘。
二、车道线的识别和后处理
1.直线模型
道路模型分为2种, 直线和非直线。非直线模型包括了:二次函数曲线模型, 三次B样条曲线模型等。相对于曲线车道模型, 直线的车道模型更加简单, 能符合车道识别算法实时性的要求。又因为在车辆行驶速度不快的情况下, 近场的车道线可近似看做平行的直线。因此在本章中, 车道模型选择了近场的直线模型:
其中, u, v分别代表车道图像的横、纵坐标, 用k代表直线的斜率, b代表截距, h为消失点在图像坐标下的纵坐标大小。
2.Hough变换
对直线的识别常用Hough变换及最小平方法拟合。最小平方法通过计算误差平方和的最小值来寻找最佳的匹配直线, 计算量较小, 但在图像处理中因为对噪声相对敏感而较少使用在直线的检测中。使用霍夫变换检测直线计算量大, 但可以容忍一定噪声的存在, 具有更好的鲁棒性, 因此多用于车道线的检测。
Hough变换是一种空间之间的变换, 它把直线从平面图像空间转换到参数空间, 可以用于识别图像中具有函数定义的目标, 例如直线、圆等。
ρ是在极坐标系下, 坐标原点到直线的法向距离, θ定义如图所示, 因此我们可以由 (p, Θ) 唯一地确定一条直线。同时, 对于像素点空间f (x, y) 中的任意一点fi (x, y) , 使用变换转换关系p=xcosΘ+ysinΘ变换为极坐标形式。
图像中的一点p (x, y) 通过此式转换为参数空间中的一条三角函数曲线, 这条曲线的相位和幅值由参数x, y决定, 输入图像中位于同一条直线上的几个点1, 2, 3映射在参数 (p, Θ) 空间的三角函数曲线都会相交于同一点p (x, y) 。
图6 图像空间与参数空间的映射关系
3.直线筛选
本章提出的车道线检测算法基于近场车道线是直线的假设, 逆透视投影变换后, 车道线应为平行的直线, 斜率接近于正负无穷, 而停止线则应为斜率接近于零的直线。因此利用斜率可以过滤掉一部分误检测的直线, 同样可以分辨普通车道线和停止线。
4.实验结果
本章的算法利用基于Visual Studio 2010的Open CV2.11开发, 运行环境为Windows 7系统。用于测试的道路图像来自加州理工学院的道路图片库, 该图库的图片被广泛用在道路识别算法的验证中。作为补充, 一部分从网上搜集的道路图片也被应用于测试。
图7 多车道情况的车道识别效果
图8 车道标线不全时的识别效果
三、结论
研究了基于单目视觉的车道线检测算法, 对摄像头获取的彩色图像进行预处理, 应用逆透视变换将图像转换到世界坐标上。然后对图像应用双边滤波, 衰减噪声;将图像从RGB色彩空间简化为灰度图, 然后进行基于OSTU大律法的自适应二值化处理。对结果应用形态学操作, 减小噪声并平滑边界, 利用Canny算子进行边缘识别。最后基于近场的直线模型, 使用Hough变换识别二值图中的直线。在世界坐标下利用斜率筛选识别出的直线。实验证明该算法能较好的识别变化环境下的车道线, 有较强的鲁棒性。
图1 0 车道线为弯道时的识别效果
图9 路面纹路复杂时的识别效果
作者:黄窈蕙 来源:公路公交科技
福利:做任何事情,都有方法。比如汽车行业如何最短时间内获取高薪,其实,是一件很容易的事情,结合汽车行业十多年工作经历,我做了一次系统全面总结无偿分享大家,文章共计十篇。帮助更多的网友在汽车行业快速发展。同时,我业余时间整理一套免费经典的CATIA视频教程, 汽车设计领域必备软件工具,大家有需要的,可以给我留言,请加qq:1011852705,微信qifei1799。提“启飞”就可以获取下载链接:汽车行业快速突破月薪过万绝密分享和catia视频精品一套。明确方向,精准学习,为以后在汽车行业职场做好铺垫。
CONTATC
重庆市渝中区中华路1号LG层LG13号81#
15923339397
2248511017
qifei1899
微信二维码
Copyright © 2002-2018 重庆启飞汽车设计有限公司版权所有渝ICP备18000729号 电话:15923339397