1、实验内容 本实验使用数字图像处理的基本方法,构建了一个车道线检测模型。该模型可以识别图像中所有的车道线,并得到完整的车道线信息。模型在tuSimple Lane Dataset大小为100的数据子集进行了测试,达到了较好的结果。 2、实现思路 实现车道线检测,主要包含两部分操作 1. 道路图像的处理,主要包括灰度图转换、基于高斯平滑的图像去噪、基于Canny算法的边缘提取 2. 车道线检测方法,主要包括获取感兴趣区域(ROI)、形态学闭运算、基于Hough变换的直线检测 模型的处理流程如下, <img src="./result/image_of_readme/img.png" alt="image-20210214120515919" style="zoom:80%;" /> # 2.1 道路图像处理 通过对道路图像进行处理,突出图像中的车道线部分。模型将彩色图像转化成灰度图像进行处理,目的是简化模型的复杂度,提高运行效率。 ## 2.1.1 高斯平滑 由于光照、路面情况、拍摄质量等问题,道路图像上存在很多噪声,通过高斯滤波使图像变得平滑,减弱图像中的噪声对结果的影响,提高车道线检测模型的鲁棒性。 高斯平滑就是使用高斯滤波器与原图像进行卷积,得到平滑图像。与均值滤波类似,它们都是取滤波器窗口内像素的加权均值作为输出。高斯滤波器的权值分布满足二维高斯函数 一开始选择的更新聚类中心的方法,是取同一类别的平均值,效果不佳。经过尝试最后采用取每个类别的初始值为中心点,实现较好的效果。示例如下: ![聚类方法对比](./result/image_of_readme/update_cmp.png) 评测结果对比: | 中心点 | Accuracy | FP | FN | | ---------- | -------- | ------ | ------ | | 数据均值 | 0.5740 | 0.7058 | 0.7533 | | 聚类初始值 | 0.7539 | 0.5025 | 0.5242 | 分析原因:由于车道线有一定弧度,导致前半部分和后半部分的车道线参数差距较大。如果降低判定相似的标准,就会导致本不相似的直线求均值,从而使Accuracy较低;如果提高相似的标准就会,导致聚类得到类别很多,从而FP较大;因此采用加权均值更新聚类中心点并不理想。 按照车道线聚类结果中每个类别的大小,对聚类结果进行排序,选择所有聚类结果中规模最大的4个类作为最终确定的直线参数。 实验总结及改进 实验过程中尝试了很多方案,如采用形态学运算,提高车道线的完整性;通过阈值分割,去除背景和干扰物;采用均值作为聚类中心等。由于方案设计上的主观缺陷和检测任务的存在的光照不均、环境复杂等客观因素,以上方案均被舍弃。最终经过实践得到了一种鲁棒性较好,效果较优的车道线检测方案。 通过查阅相关资料,我了解到更多车道线检测的改进算法,例如可以通过最大类间方差法(OTSU)进行阈值分割、动态ROI区域等。可以通过以上算法进一步提高模型精度和性能。 运行方法 1. **编译**(Windows 10): * cmake version 3.19.3 * GNU Make version 4.2.1 * OpenCV version 4.5.1 在 powershell 中执行以下命令: (1)生成 debug 版本: ```shell mkdir debug # 创建编译目录 cd debug cmake -G "MinGW Makefiles" .. # 生成 Makefile mingw32-make # 使用 MinGW 编译代码 ``` (2)生成 release 版本 ```shell mkdir release cd release cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .. mingw32-make ``` 2. **运行** > 在 debug / release 目录中双击 lane_detection.exe 即可运行 3. **测评** ```shell cd .. python evaluate.py ./result/predict.json ./data/groundtruth.json ```
- 1
- 2
- m0_627728712024-04-23资源有很好的参考价值,总算找到了自己需要的资源啦。
- 粉丝: 1806
- 资源: 2129
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助