【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于自实现opencv图像处理函数的静态车道线检测项目源码.zip # **基于自实现opencv图像处理函数的静态车道线检测项目** <!-- TOC --> - [**基于自实现opencv图像处理函数的静态车道线检测项目**](#基于自实现opencv图像处理函数的静态车道线检测项目) - [**1.项目背景**](#1项目背景) - [**2.实现**](#2实现) - [**2.1 基本思路: 去噪,边缘提取,车道检测**](#21-基本思路-去噪边缘提取车道检测) - [**2.2 实现过程**](#22-实现过程) - [**3. 结果分析**](#3-结果分析) - [**4. 后续**](#4-后续) <!-- /TOC --> ## **1.项目背景** **起源于选修邸慧军老师的《数字图像处理》这门课程的最终课程设计项目 :实现车道线检测** 1. 不能用神经网络(老师的原话是直接喂给神经网络就没有意思了),只能用数字图像处理方法 2. 除了读取与写入之外不能使用其他现成库函数,比如大名鼎鼎的opencv 3. 其实本来计划是MATLAB(教学也是MATLAB),后来我校突然就进美国名单里MATLAB用不了就改c++了 **数据集** 数据集由720*1280的jpg格式图片组成,实际上就是开车在公路沿途拍下来的,因为我发现数据集的图片之间很有连贯性。其中一张如图所示: ![avatar](./车道线检测/source/20.jpg) **环境** 我是win10 + vs2019。记得配置opencv,用来读取图片。 ## **2.实现** ### **2.1 基本思路: 去噪,边缘提取,车道检测** 但在刚刚开始的时候无从下手,因为选择太多了。 比如说去噪音可以高斯滤波,均值滤波,中值滤波。 边缘提取你又可以拉普拉斯锐化,sobel算子,Robert算子,scharr算子,candy检测。 于是我干脆把这些实现一个遍,再慢慢选择好了。 于是自实现了以下算法: 1. 彩色图像转灰度 2. 图像翻转,获得负片 3. 线性灰度转换 4. 对数灰度转换 5. 指数灰度转换 6. 方框滤波 7. 均值滤波 8. 高斯滤波 9. 中值滤波 10. 最值滤波 11. 拉普拉斯锐化 12. 漫水填充 13. 阈值分割 14. 自适应阈值分割 15. candy边缘检测 16. scharr边缘检测 17. sobel边缘检测 18. Robert边缘检测 19. 霍夫直线检测 20. 直方图均衡化 **所有算法源码均定义位于minicv.h下,最下面有接口参数说明;所有实现位于minicv.cpp下,关键步骤有注释** ### **2.2 实现过程** 0. **以此图片为实例** ![avatar](./车道线检测/source/20.jpg) 1. **转灰度图**,公式是GRAY = B * 0.114 + G * 0.587 + R * 0.299。目的是为了减少运算量,简化操作。 ```c++ _getGray(img) //有些函数会与opencv重名,所以我自实现的都带下划线。其实也可以自定义namespace ``` 效果: ![avatar](./车道线检测/source/21.png) 2. **均值滤波去噪音**。 实际上我认为施加平滑滤波的主要原因不是为了去除噪音,因为对于斑点噪音,实际上后面的霍夫变换基本上会忽略。 我认为施加滤波之后图像边模糊了(废话)——图片的边缘变宽了,一些细线变粗相当有利于后面的边缘检测。 另外,试了高斯滤波与均值滤波,效果相当,就选简单的均值滤波吧 施加均值滤波后效果如下 ```c++ _blur(img, 3, 3); //大小是 3*3 ``` ![avatar](./车道线检测/source/22.png) 3. **幂指变换**。 本来是没有这一步的,但是到最后发现没有这一步对比较暗的图片实现效果比较差,因为后面有一步数阈值分割。 **我把这一步看作这个算法成功的关键之一(另
- 1
- 2
- 粉丝: 1517
- 资源: 5643
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JavaScript《基于自动分析数据并给出营业建议的餐厅管理系统(接入AI) 》+源代码+项目说明及资料
- 355670834783295707ad04e-427f-4cde-9589-e578224a8459.zip
- 动态sql解析引擎,类似mybatis动态sql的功能
- EDA365-Skill-V2.5安装包,支持Allegro17.x版本
- C# 常用单词汇总,常用单词汇总
- 【ERP标准流程-标准流程-库内业务管理】(DOC 14页).doc
- Python《数据库期末作业-餐厅点单系统 》+源代码+设计资料
- 学生成绩管理系统(C++课程设计
- 双指针法判断链表有环-go语言实现
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据