1 项目概述
1.1项目要求
本项目要求学习掌握关于Hough变换实现直线检测的原理知识,并基于Hough变换利用Simulink仿真器实现视频车道线的检测。
常见的车道线检测方法大致可以分为三类:
(1)传统方法;(2)传统图像处理与深度学习相结合的方法;(3)端到端的深度学习的方法。
传统的车道线检测方法基本分为几个模块:图像清理(障碍物遮挡检测,阴影消除,曝光矫正);特征提取(车道线检测);车道线模型拟合(横向/纵向);时域整合(前后帧);图像-物理空间(路面坐标系)的对应等。
1.2项目内容及方案
本项目采用基于Hough变换的直线检测方法来检测车道线,Hough变换是一种用于检测直线(也可检测圆形)的经典算法,可以结合Canny算法检测直线车道线。
其实现方法为经过Canny算法得到边缘分布图像后,构建一个Hough参数空间,利用点与线的对偶性,将图像空间的线条变为参数空间的聚集点,从而检测给定图像是否存在给定性质的曲线。这样就把原始图像中直线检测问题转变为寻找参数空间中的峰值问题。简单解释下,元空间的点都对应参数空间的线,原空间的直线都对应参数空间中曲线的交点。即可以通过参数空间曲线的交点个数来寻找原空间中的直线。
本项目仅使用较简单的操作实现视频车道线的基本检测,在视频中显示检测到的直线,处理过程共包括两个步骤:图像预处理和基于Hough变换的车道线检测。
2 项目原理
2.1图像预处理
输入为一段车辆在道路上行驶的视频,车前摄像头拍到的道路视频,来自于MATLAB中自带的视频片段。首先对输入图像中有车道线的部分进行截取,去掉不关注的部分,简化图像从而有利于对车道线的检测。将图像由RGB图像转换成灰度图像,然后对图像进行滤波操作,接着采用OTSU算法将图像转换成二值图像。
其中,OTSU算法是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出。该方法又称作最大类间方差法,因为按照OTSU算法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大,在本项目中使图像中的车道线更加明显。它被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。
其原理是根据图像的灰度特性来划分图像中的背景和前景部分。因为方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。但它也有缺点,比如对图像噪声敏感,只能针对单一目标分割,当目标和背景大小比例悬殊、类间方差函数可能呈现双峰或者多峰时效果不是很好。
2.2基于Hough变换的车道线识别
将图像预处理部分得到的二值图像作为输入,对图像进行Hough变换检测其中的直线车道线。Simulink中的Hough Transform 模块实现标准 Hough 变换 (SHT),该模块共有三个变量,分别是Hough、Theta和Rho。变量 Rho 是沿垂直于线条的向量从原点到线条的距离,变量Theta 是 x 轴与此向量之间的角度,变量之间的关系式为:
Rho = xcos(Theta) + ysin(Theta)
该模块经过计算生成一个参数空间矩阵Hough,其行和列分别对应于这些 Rho 和 Theta 值。在计算 Hough 变换后,使用Find Local Maxima模块来求得参数空间中的峰值,基于Hough变换的原理,这些峰值表示的是输入图像中可能存在的线条。
在标识 Hough 变换中的峰值后,可以使用 Hough Lines 模块进行Hough 反变换从而得到 Hough 变换中对应于峰值的线段的端点,该模块会自动填充线段中的小间隙,从而检测并显示出图像中的直线,将图像复原为原图像大小,并和原视频叠加,设置检测出的直线的线条粗细和颜色等参数,进而得到最终的输出图像,其中黄色直线即为检测到的直线车道线。