基于MATLAB的车道线检测系统
项目介绍
本项目是一款基于MATLAB环境开发的车道线检测实验系统。该系统专注于利用计算机视觉技术解决自动驾驶领域中的基础感知问题,能够自动识别并提取道路图像中的左右车道线。系统实现了从原始图像输入、深度预处理、边缘特征提取到几何建模拟合的完整算法链条,具备处理多种光照和复杂路况的潜力,非常适合科研实验、教学演示及辅助驾驶算法的研究。
功能特性
- 自动环境适配:系统能够自动识别指定目录下的图像文件,并在缺少测试样本时自动生成模拟道路场景图像,确保程序可立即运行。
- 多格式批量处理:支持常见的JPG、PNG及BMP格式图像的循环自动读入处理,并能自动创建结果输出目录。
- 鲁棒的特征提取:结合了高斯滤波去噪、Canny边缘检测与自定义ROI掩膜技术,有效滤除路面噪声和天空背景的干扰。
- 精确的线段识别:利用霍夫变换检测潜在的几何特征点,并根据预设的长度和间隙参数筛选线段。
- 智能归类与拟合:通过斜率约束自动区分左右车道,并利用多项式拟合生成平滑的连续车道线。
- 可视化评估:系统会自动生成包含原始图、边缘掩膜、检测线段及最终拟合结果在内的四合一对比图,便于算法调试和效果评估。
使用方法
- 在MATLAB中打开项目文件夹。
- 将待检测的道路图片放置于程序指定的输入文件夹中(默认为test_images)。
- 运行主程序脚本。
- 运行结束后,系统会弹出检测结果窗口,并将所有处理后的对比图保存至输出结果文件夹(默认为output_results)。
- 每次运行前,系统会自动关闭旧的图像窗口并清理工作区,确保运行环境整洁。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 所需工具箱:Image Processing Toolbox(图像处理工具箱)。
- 硬件环境:标准计算机配置即可,支持基本的图像渲染与运算。
算法实现逻辑
程序运行遵循严密的流水线处理逻辑,具体步骤如下:
1. 环境初始化与模拟数据生成
程序首先检查工作目录。若未发现测试图片文件夹,系统会自动启动内置的模拟函数,利用线性渐变背景和坐标映射生成一张包含左右白线和路面的模拟图像,确保用户在无实景图片时也能观察算法流程。随后,系统会检索文件夹内所有的JPG、PNG及BMP文件并建立待处理清单。
2. 图像预处理与去噪
对于输入的每一张图片,程序首先判断其是否为彩色。若是彩色图,则利用色彩空间转换将其转化为单通道灰度图,以减少数据维度。接着应用高斯低通滤波器对灰度图进行平滑处理,有效剔除路面纹理颗粒和图像传感器带来的微小噪点。
3. 特征检测与区域限定
通过Canny算子执行多级边缘检测,利用高低阈值提取出强边缘。为了排除视野上方(如天空、建筑)和视野两侧(如护栏)的干扰,程序定义了一个位于图像下部中轴对称的梯形感兴趣区域(ROI)。该区域通过多边形掩膜覆盖,将边缘特征锁定在车辆正前方的车道行驶区域内。
4. 霍夫变换与线段提取
使用霍夫空间变换将空间坐标点映射到极坐标系下。系统会在累加器中寻找局部峰值(限制检测前15条最亮的线),随后通过设定的像素填充间隙(Gap)和最小线长(MinLength)参数提取离散的车道线段。
5. 线段过滤、聚类与车道拟合
这是系统的核心处理逻辑部分:
- 斜率过滤:计算每条检测线段的斜率。由于图像正上方向为Y轴减小方向,系统通过特定的数值范围(左侧-2.0至-0.3,右侧0.3至2.0)来筛选线段并自动分类为左车道或右车道候选点。
- 一阶多项式拟合:将归类后的左右线段端点坐标分别送入最小二乘拟合器中。
- 线段重构:根据图像高度设定的起始点(底部)和终止点(约图像高度的65%处),利用拟合出的线性方程计算出左右两条最终的车道线位置。
6. 结果可视化输出
系统创建多子图窗口展示四个维度的信息:
- 输入图像直观展示。
- 边缘检测叠加掩膜的效果。
- 霍夫变换提取出的原始绿色散乱线段。
- 在原图上高亮显示的最终红色(左车道)与蓝色(右车道)拟合线。
图片会在无窗口显示的模式下生成并异步保存至磁盘。