图像的特征是图像处理和特征识别的出发点,决定了处理过程中算法的选取。一般来说,采集系统得到的路面图像中包含三部分:核心部分是待识别的目标裂缝;另一部分是无破损的路面,即背景;最后是噪声,包括油斑阴影等等。噪声是路面图像特征提取的最大障碍,识别算法的目的就是完成对噪音的削弱和去除,以完成更好的提取路面裂缝特征信息的最终目的。在理想情况下,背景像素比裂缝像素更亮一些,特别是裂缝周围的背景,这是大多数路面特征提取研究的基础。但是,受到各种复杂因素的影响,在实际采集的路面图像上会有更多不利情况的出现,诸如以下几种情形:

  • 路面图像呈现中间段明亮而走向两端逐渐变暗的特点。
  • 裂缝作为识别目标,其像素数量仅占整张图像像素总量的很小一部分。
  • 正常路面灰度值的波动范围与裂缝的灰度范围会有重合。
  • 受到光照和天气等因素的影响正常的路面纹理的均匀性。
  • 公路的里程一般很大,采集整条公路的路面图像信息量很大。由于路面图像信息量大,对比度低以及工作环境的复杂性,采集到的路面图像呈现以上几种特征,有些是硬件条件的性质所决定,主要是由如下三个硬件因素的影响,即辅助照明设备的选择以及照明角度的控制,摄像机相对路面的角度和镜头距离公路路面的高度。

 一、路面裂缝检测识别系统设计流程

路面裂缝检测识别系统的主要如下三个功能:

1、把 电子设备采集到的彩色路面裂缝图像进行预处理、路 面裂缝检测识别、保存结果。

2、图像预处理

图像预处理主要用于消除干扰图像裂缝识别的 噪声信息,起到图像增强对比度的效果,为后来的路 面裂缝识别打下了坚实的基础。预处理通过对图像进 行一系列的数学运算,提取有益于识别裂缝有用特征 信息,提高图像裂缝识别效果。

2.1 直方图均衡化

在采集路面裂缝图像时,很容易受到当时的天 气、采集技术、设备自身的影响,使得采集到图像不 清晰,出现扭曲、模糊等问题,很容易得到对比度不 清楚的图像。直方图均衡化方法是一种增强图像的方 法,主要用于凸显图像的对比度,该方法是把原始图 像的直方图分布通过某个变换变成均匀分布直方图分 布。假设图像 Image 是一幅灰度图像,图像的灰度用 gray 表示,取值范围为 [0,L-1],则 gray 值取 0 时, 该图像为一幅黑色图像,gray 值取 L-1 时,该图像为 一幅白色图像。

2.2  中值滤波

在采集裂缝图像时通常会受到设备、天气因素 的干扰而产生噪声, 因此,待处理裂缝图像可能出 现裂缝模糊、裂缝周围带有噪声等问题。经过上述处 理的图像经过中值滤波处理后不仅可以把图像中大 部分噪声消除,还可以很好地保留图像裂缝边缘细 节,同时突出图像的裂缝特征。实现代码:


% --- Executes on button press in pushbuttonOpenFile.
function pushbuttonOpenFile_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonOpenFile (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif','*.*','All Files' },'载入图像',...fullfile(pwd, 'images'));
I = imread(fullfile(pathname, filename));
Result = Process_Main(I);
handles.File = fullfile(pathname, filename);
handles.Result = Result;
guidata(hObject, handles);
InitAxes(handles)
axes(handles.axes1); imshow(handles.Result.Image); title('原图像');% --- Executes on button press in pushbuttonHisteq.
function pushbuttonHisteq_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonHisteq (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.hist); title('直方图均衡化图像');
end% --- Executes on button press in pushbuttonMedfilt.
function pushbuttonMedfilt_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonMedfilt (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.Medfilt); title('中值滤波图像');
end% --- Executes on button press in pushbuttonBw.
function pushbuttonBw_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonBw (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.Bw); title('二值图像');
end% --- Executes on button press in pushbuttonEnance.
function pushbuttonEnance_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonEnance (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.Enance); title('增强图像');
end% --- Executes on button press in pushbuttonBwfilter.
function pushbuttonBwfilter_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonBwfilter (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.Bw); title('二值图像');axes(handles.axes3); imshow(handles.Result.BwFilter); title('二值图像滤波');
end% --- Executes on button press in pushbuttonCrackRec.
function pushbuttonCrackRec_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonCrackRec (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.Bw); title('二值图像');axes(handles.axes3); imshow(handles.Result.BwFilter); title('二值图像滤波');axes(handles.axes4); imshow(handles.Result.CrackRec); title('裂缝识别');
end% --- Executes on button press in pushbuttonCrackJudge.
function pushbuttonCrackJudge_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonCrackJudge (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.BwFilter); title('二值图像滤波');axes(handles.axes3); imshow(handles.Result.CrackRec); title('裂缝识别');axes(handles.axes4); imshow(handles.Result.CrackJudge); title('裂缝判断');
end% --- Executes on button press in pushbuttonCrackLoc.
function pushbuttonCrackLoc_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonCrackLoc (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');hold off;
end% --- Executes on button press in pushbuttonProject.
function pushbuttonProject_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonProject (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)
end% --- Executes on button press in pushbuttonClose.
function pushbuttonClose_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonClose (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
choice = questdlg('确定退出?', ...'退出', ...'是','否','否');
switch choicecase '是'close;otherwisereturn;
end% --- Executes on button press in pushbuttonSaveResult.
function pushbuttonSaveResult_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonSaveResult (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
tryif ~isempty(handles.File)raw = [];xlsfile = fullfile(pwd, 'Result/result.xls');if exist(xlsfile, 'file')[num, txt, raw] = xlsread(xlsfile);endF = [];F{1, 1} = '文件名';F{1, 2} = '阈值信息';F{1, 3} = '面积信息';F{1, 4} = '长度信息';F{1, 5} = '最大宽度信息';F{1, 6} = '最小宽度信息';F{1, 7} = '形状信息';F{2, 1} = handles.File;F{2, 2} = handles.Result.BwTh;F{2, 3} = handles.Result.BwArea;F{2, 4} = handles.Result.BwLength;F{2, 5} = handles.Result.BwWidthMax;F{2, 6} = max(handles.Result.BwWidthMin,0.01);F{2, 7} = handles.Result.str;F = [raw; F];xlswrite(xlsfile, F);msgbox('保存结果成功!', '信息提示框');end
catchmsgbox('保存结果失败,请检查程序!', '信息提示框');
end% --- Executes on button press in pushbuttonBridge.
function pushbuttonBridge_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonBridge (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)axes(handles.axes1); imshow(handles.Result.Image); title('原图像');axes(handles.axes2); imshow(handles.Result.BwFilter); title('二值图像滤波');axes(handles.axes3); imshow(handles.Result.CrackJudge); title('裂缝判断');axes(handles.axes4); imshow(handles.Result.CrackBridge); title('裂缝拼接');
end% --- Executes on button press in pushbuttonSaveImage.
function pushbuttonSaveImage_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonSaveImage (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)imwrite(handles.Result.BwEnd, fullfile(pathname, filename));msgbox('保存图像成功!', '信息提示框');
end

参考文献

【1】张磊 . 基于图像处理的公路路面裂缝检测技术研究 [J]. 机 械设计与制造工程 ,2017

【2】孙波成.基于数字图像处理的沥青路面裂缝识别技术研 究 [D]. 成都 : 西南交通大学 ,2015.


详情资料请扣扣:1341703358,后利用 Matlab 设计程序来显示所得到的试验结果。通过实验结果可 以看出,设计的路面裂缝检测识别系统是可以准确有 效地识别路面裂缝。

基于Matlab裂缝识别检测系统相关推荐

  1. 基于MATLAB的疲劳检测系统

    基于MATLAB的疲劳检测系统 一.课题介绍 随着汽车工业的不断发展,随之而来的社会问题也愈加严重.交通事故给人们造成巨大伤害的同时,也给社会带来沉重的负担和影响.由于疲劳驾驶是引起交通事故的一个主要 ...

  2. 基于MATLAB的安全帽检测系统

    课题名称 基于MATLAB的安全帽检测系统 课题介绍 众所周知,在一些施工工地,必须明确佩戴安全帽.可以对生命安全起到保障作用.该课题为常见的安全帽的识别,主要分为红色,蓝色,黄色三类安全帽.而安全帽 ...

  3. 基于Matlab人脸识别签到系统(GUI界面)

    文件大小:5.3M 代码行数:298行(主程序) 开发环境:Matlab2016.2017.2018.2020.2021 点击下载:点击下载 简要概述:基于Matlab人脸识别签到系统(GUI界面) ...

  4. 【人脸检测】+【五官定位】基于MATLAB的人脸检测系统

    基于MATLAB的人脸识别系统: 基于几何特征的算法,对静态人脸从图像采集.预处理.到特征点定位提取,校验通过:主要利用YCbCr肤色模型,通过连通分量提取算法标定人脸五官:对RGB图像通过形态学图像 ...

  5. matlab车牌识别 复杂环境,基于MATLAB复杂背景车牌识别检测系统

    基于MATLAB复杂背景车牌识别检测系统 1.选题目的和意义 在复杂背景车牌识别检测系统中,由于拍摄时的光照条件.牌照的整洁程度的影响,和摄像机的焦距调整.镜头的光学畸变所产生的噪声都会不同程度地造成 ...

  6. 基于YOLOv4的目标检测系统(附MATLAB代码+GUI实现)

    摘要:本文介绍了一种MATLAB实现的目标检测系统代码,采用 YOLOv4 检测网络作为核心模型,用于训练和检测各种任务下的目标,并在GUI界面中对各种目标检测结果可视化.文章详细介绍了YOLOv4的 ...

  7. 基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)

    摘要:本文重点介绍了基于YOLOv5目标检测系统的MATLAB实现,用于智能检测物体种类并记录和保存结果,对各种物体检测结果可视化,提高目标识别的便捷性和准确性.本文详细阐述了目标检测系统的原理,并给 ...

  8. matlab 职坐标,机器人之【机器视觉与图像处理】基于MATLAB的圆检测、颜色识别、数字识别...

    本文主要向大家介绍了机器人之[机器视觉与图像处理]基于MATLAB的圆检测.颜色识别.数字识别,通过具体的内容向大家展现,希望对大家学习机器人有所帮助. 对产品中心的检测:设置好路径之后,包含关系是在 ...

  9. matlab人眼识别原理,基于MATLAB的人眼检测.docx

    基于MATLAB的人眼检测要点 目录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc388122853" 摘要 PAGEREF ...

最新文章

  1. AI落地虽千万难,智能语音往矣 | CCF-GAIR 2020
  2. 2003迁移到 Server 2008
  3. 关于 golang 代理设置的
  4. Google Apps – Framework, Phonesky, GmsCore w/ AOSP Build.
  5. Redis数据库(四)——Redis集群模式(主从复制、哨兵、Cluster)
  6. 三层架构项目如何发布_链客Talk | 优盾首席架构师Alex Yang:如何从0开发区块链项目?...
  7. Zookeeper架构及FastLeaderElection机制
  8. 如何动态修改select的值_SQL成长记录02-SELECT语句
  9. 计算机二级考试基础知识文档,计算机二级公共基础知识(考试必考)
  10. VMware 8.0下载地址
  11. JAVA毕业设计大数据在线考试系统在线阅卷系统及大数据统计分析计算机源码+lw文档+系统+调试部署+数据库
  12. 通用mrp手机必备新手安装包
  13. CentOS设置SSH Key登录
  14. MTK 11A MAINMENU
  15. 中国Android应用商店汇总
  16. IJCAI‘22 推荐系统论文梳理
  17. [三剑客]老男孩教育-三剑客笔试题集合
  18. idea几款好用的插件
  19. 布尔 (boolean) 型变量只能取两个值,True 和 False。当把布尔型变量用在数字运算中,用 1 和 0 代表 True 和 False。
  20. VMware独立磁盘快照问题

热门文章

  1. 导入另一个 Git库到现有的Git库并保留提交记录
  2. 殆知阁古代文献藏书2.0版txt文本质量如何
  3. 5、分组密码工作模式
  4. 密码库LibTomCrypt学习记录——(1.5)分组密码算法——示例代码AES-ECB
  5. linux 虚拟ip 双机,keepalived配置虚拟ip(vip)实现双机热备以及自动切换主备
  6. Redis-AKF/CAP原则
  7. 作为测试人员,不能不懂的adb命令和操作
  8. 普通程序员怎么赚多份钱?解锁更多赚钱新姿势
  9. FFB6D A Full Flow Bidirectional Fusion Network for 6D Pose EstimationFFB6D 6D 姿势估计的全流双向融合网络
  10. 下载较旧版本的VS visual studio