⛄一、Hough变换图片车道线检测简介

1 引言
随着人们生活水平的提高, 科技的不断进步, 智能驾驶技术逐渐受到了研究者们的广泛研究和关注。先进驾驶辅助系统 (Advanced Driver Assistance System, 简称ADAS) 是智能驾驶技术的一个分支, 即通过某种形式的传感器了解周围的环境, 以协助驾驶员操作 (辅助司机) 或完全控制车辆 (实现自动化) , 达到提高车辆安全驾驶的目的。车道线检测作为ADAS的重要组成部分, 能够为系统确定车辆所在车道位置, 并提供车道偏离预警决策依据。目前主要通过在车内安装摄像头, 利用图像处理算法实时获取视频图像进行车道线检测, 但现实行车环境复杂, 比如存在视角遮挡、道路阴影、道路裂痕以及邻近车辆压线干扰等情况, 以至于车道线不易提取且容易造成误检、漏检, 因此如何实时、准确地检测出车道线具有重要的研究意义。

目前, 国内外众多学者对车道线检测进行了深入的研究并提出了一系列检测方法, 基于计算机视觉的车道线检测主要可以分为基于车道线特征和模型两类方法。基于车道线特征的检测方法主要是根据标志线的纹理、边缘以及颜色等特征来提取车道线, 杨智杰等人[7]基于图像的RGB颜色信息检测车道线, 但是当视野中其他物体的颜色与车道线颜色相近时, 容易造成车道线误检。基于模型的方法则是通过计算车道线模型的几何特征参数进而实现车道线检测, 通常分为直线和曲线两种车道线模型。王宝锋等人通过B-样条曲线对弯道车道线进行检测, 陈家凡提出采用远近景将图像分割, 远景视场通过曲线拟合车道线, 但基于曲线车道模型的车道线检测通常计算过程复杂, 时间成本高。Qian等人基于Hough变换进行的车道线检测, 但是该方法在恶劣环境使得车道线不易提取。陈军等人在概率Hough的基础上进行车道线检测, 该算法虽然优于标准的Hough变换, 但准确率还有待提高。以上基于传统Hough变换或者改进后的Hough变换方法能够完成部分车道线的提取, 但同时存在车道线漏检、误检的情况, 且检测结果受行车环境、车道线完好程度以及行驶时段影响较大, 且路面污渍、邻近车道车辆超越、同车道前车干扰以及路面反光“泛白”都会对车道线检测算法的稳定性造成影响, 使得检测到的车道线难以反映路面的真实情况。

鉴于此, 本文基于上述问题, 在满足自动驾驶时效性强和准确性高的要求之上, 提出一种叠加约束的Hough变换车道线检测算法, 算法通过研究不同环境以及工况下车道线的几何特征, 使得都能够准确检测车道线。算法首先从视频流的原始图像中裁剪感兴趣区域, 再将RGB颜色空间转换到YCbCr空间;然后运用大津法分离车道线与非车道线信息, 接着进行滤波处理和边缘检测;最后采用概率Hough变换拟合边界, 顾及车道线的斜率范围以及相同车道线斜率相近的特征, 根据边缘检测结果对漏检的车道线进行补充, 之后对车道线边界进行筛选与合并, 从而获取最终的车道线检测结果。本文方法的优势在于能够提高行车环境复杂、天气阴暗以及隧道昏暗环境下车道线提取的准确率, 并完善Hough变换检测车道线时存在的误检、漏检车道线边界以及只提取车道线边界的不足, 准确提取车道线并实时可视检测结果。

2 车道线检测算法
本文提出的基于Hough变换车道线检测算法主要分为视频图像预处理、Hough变换拟合车道线边界、检测车道线三个部分, 总体流程如图1所示。

第一阶段是对图像进行预处理, 以去除非周围环境所带来的干扰;第二阶段是采用概率Hough变换进行车道中边缘点峰值的统计, 最终拟合出车道线边界;第三阶段是由于Hough变换拟合的边界与真实的车道线存在差异, 部分车道线会被漏检、误检, 因而本文引入叠加约束条件剔除误检的车道线以及对漏检的车道线进行补充, 最后将车道线的边界进行合并实现车道线的准确检测。

图1 车道线检测算法总体流程图
2.1 视频图像预处理
通常车载摄像头所获取的行车视频包含众多道路信息, 为减少无关信息带来的干扰, 提高车道线的检测效率, 我们对每一帧视频图像进行矩形感兴趣区域 (ROI) 的裁剪。基于图像RGB颜色空间直接进行处理时, 会出现背景信息不易分割、计算量大、对噪声比较敏感等问题, 并且当车道线与路面颜色区分不大时检测的车道线容易出现残缺, 因此, 如图2所示, 本文在预处理阶段对图像的颜色空间进行转换;最后通过形态学滤波对图像进行腐蚀膨胀处理, 以此去除车道线中的噪声和弥补被过度腐蚀的信息, 之后再通过Canny算子进行边缘检测。

图2 图像预处理流程图
由于车辆在不同道路上行驶时会导致视野范围存在差异, 为尽可能使得ROI区域能够涵盖车道线信息, 本文选择矩形ROI对图片进行有用信息的裁剪。而车道线颜色通常为白色和黄色两种, 为准确检测出这两种类型的车道线, 我们将原图像的RGB颜色空间转换到YCbCr空间, 根据背景颜色与目标颜色的差异实现分离, 且该方法计算量比较小。YCbCr颜色空间中, RGB转换到YCbCr颜色空间中各个分量的计算如公式 (1) ~ (3) 所示。

Y=0.257R+0.504G+0.098B (1)
Cb=-0.140R-0.291G+0.439B+128 (2)
Cr=0.5R-0.4187G-0.0813B+128 (3)
其中Y代表亮度, Cb代表蓝色与亮度的差异, Cr代表红色与亮度的差异。

经过对多段不同工况的行车视频流的二值化实验结果表明, 亮度阈值选取72能够很好的提取出目标信息, 颜色空间转换前后的二值化对比结果如图3所示。

2.2 Hough变换检测车道线
传统霍夫变换 (Hough变换) [15]实现原理是将平面坐标空间中具有相同形状特征的曲线或者直线映射到另外一个空间的点上, 累计形成的峰值, 将图像中检测任何形状的问题都转换为峰值点分析的问题, 极坐标系下的表达方式如公式 (4) 所示。
ρ=x·cosθ+y·sinθ (4)
其中, ρ表示坐标所在位置的原点到直线的长度距离, M×N表示感兴趣区域图像的高度和宽度;而θ表示垂线ρ与x轴正方向的夹角 (θ∈[0, 180°]) 。具体的实现步骤如下。
(1) 建立一个参数 (ρ, θ) 空间的二维数组, 该数组相当于一个累计器。
(2) 遍历搜索图像中所有目标像素点, 对于每一个目标像素点都根据公式 (4) 求极径ρ, 找到对应位置, 然后在累加器的对应位置加1。
(3) 求所得累加器中的最大值, 其位置 (ρ’, θ’) 。
(4) 通过参数空间位置 (ρ’, θ’) , 根据式 (4) 找到图像空间中相对应的直线参数。
本文采取概率Hough变换拟合预处理后的边缘像素, 通过点出现的概率区间来避免无效直线的检测, 特点在于检测到的车道线能够得到两端的端点, 但是当周围栏杆以及旁边车辆干扰时, 会出现漏检以及误检。

⛄二、部分源代码

function ImageStretch = graystretch(IMG)

[M,N,nDims]=size(IMG);
Image=im2double(IMG);
% 获取图像的尺寸和波段数

ImageStretch=Image;
for i=1:nDims % 对每个波段依次进行灰度拉伸
Sp=Image(:,:,i);
MaxDN=max(max(Sp));
MinDN=min(min(Sp));
Sp=(Sp-MinDN)/(MaxDN-MinDN); % 灰度拉伸公式
ImageStretch(:,:,i)=Sp;
end

⛄三、运行结果






⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]严培荣,王超,厉丹.基于改进Hough变换的直线检测方法研究[J].电脑知识与技术. 2018,14(26)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

【车道线识别】基于matlab hough变换道路检测直线检测【含Matlab源码 2074期】相关推荐

  1. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  2. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  3. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  4. 【Matlab答题卡识别】hough变换答题卡判定与成绩统计【含GUI源码 752期】

    一.代码运行视频(哔哩哔哩) [Matlab答题卡识别]hough变换答题卡判定与成绩统计[含GUI源码 752期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [ ...

  5. 【Matlab答题卡识别】hough变换答题卡判定与成绩统计(带面板)【含GUI源码 1017期】

    一.代码运行视频(哔哩哔哩) [Matlab答题卡识别]hough变换答题卡判定与成绩统计(带面板)[含GUI源码 1017期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 ...

  6. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  7. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  8. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  9. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  10. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

最新文章

  1. OCP-052 053部分答案解析
  2. 对于任天堂你了解多少?
  3. 使用CORS解决同源限制
  4. LINUX服务器搭建和常用配置介绍
  5. Swiper4.5在vue项目中的使用方法
  6. php框架进入命令行,swoole为何要用命令行来启动_PHP开发框架教程
  7. android studio for android learning (十) android之activity的启动和关闭
  8. charles windows版使用教程
  9. 微信商城的这六大优势,以及这些丰富的功能,你知道吗?
  10. 升级wamp的php版本,Wamp升级PHP版本
  11. 限制input 输入框只能输入数字
  12. iWork8删除Android分区,摆脱安卓,释放空间——iwork1x双系统变win10单系统教程
  13. Python爱浏览器,但浏览器不爱它:如何让Python运行在浏览器上
  14. 三年打造AI芯片黑科技,IBM“狩猎女神之矛”将撬动企业混合云
  15. Law of continuity
  16. php失物招领回复源码,失物招领系统 (1) - WEB源码|源代码 - 源码中国
  17. 三维动画设计与制作【2】
  18. 为docker容器单独分配ip
  19. 〖全域运营实战白宝书 - 运营角色认知篇④〗- 与运营打交道的小伙伴
  20. Apple Watch应用开发 2

热门文章

  1. 要分析数据,可以先去这些数据网站找数据
  2. uuid通用唯一识别码
  3. android饿了么购物车,分享一个购物车的demo(效果高仿饿了么软件的购物效果)
  4. MIT 18.06 Gilbert Strang《线性代数》L1. 方程组的几何解释
  5. 基于 Docker 搭建 ownCloud 个人云盘
  6. 可信计算中的身份鉴别和证明-EK、AIK和DAA
  7. BAT、IBM、亚马逊、微软等一线互联网的区块链版图布局
  8. 春节快乐小目标增长计划
  9. 在EDGE中模拟IE访问网页
  10. matlab拟合函数求系数,Matlab已知数学模型拟合公式系数(求助)