【裂缝识别】基于matlab GUI桥梁墙面裂缝检测识别系统(判断是否需要维护)【含Matlab源码 8967期】

本文详细介绍了如何使用Matlab进行桥梁裂缝图像的采集、尺寸标定、预处理(包括灰度化、对比度增强和滤波去噪)、裂缝分割与连接,以及利用SVM进行裂缝分类。并通过MATLABGUI展示了结果和参数计算,为桥梁健康评估提供技术支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞💞💞💞💞💞💥💥💥💥💥💥
在这里插入图片描述
✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进;
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式

⛳️座右铭:行百里者,半于九十。
更多Matlab图像处理仿真内容点击👇
Matlab图像处理(进阶版)
付费专栏Matlab图像处理(初级版)

⛳️关注优快云海神之光,更多资源等你来!!

⛄一、简介

1 裂缝图像采集
采集裂缝图像的设备可以是相机、无人机等,这不影响后续裂缝的处理,本文使用四无人机来采集桥梁裂缝图像。通过控制无人机遥控器并结合预先计算好的无人机飞行参数(下文详细介绍),让无人机与桥梁面保持一定距离飞行,采集桥梁图像。

1.1图像尺寸标定
完成裂缝图像采集之后,需要对裂缝的主要参数,例如长度、最大宽度以及面积进行计算,所以提前对图像进行尺寸标定,确定好图像中像素代表的实际物理尺寸十分必要,最后在软件界面中直接输出实际裂缝的具体参数。

要想准确计算出裂缝的各项参数,那么在图像采集的整个过程中必须让无人机摄像头与桥面保持固定的距离,并需要考虑到测量所要实现的精度。本文图像采集的精度不得低于0.2mm,则通过计算可得,在拍摄像素为2720×1530时,要求采集到的图像实际覆盖区域不得超过544×306mm。确定拍摄距离的方法如下表所示:
在这里插入图片描述
在拍摄距离得到确认后,就需要计算出一个像素所代表的的实际物理尺寸。首先将无人机悬停在距离墙面300mm(小于350mm即可)的位置处,保证无人机镜头与墙面90°垂直,此时测量出摄像头所覆盖区域的长度和宽度,分别为513mm和288mm,此时可计算出图片中每一个像素代表的实际长度为δ1=513/2720≈0.19mm/pixel,δ2=288/1530≈0.19mm/pixel,故δ=0.19mm/pixel,完成尺寸标定。

2 裂缝图像预处理
2.1 图像灰度化

为提高系统处理和分析图像的效率,就需要对多余的色彩信息进行剔除,将彩色图像转换成灰度图像可以有效的达到这一目的。

img=rgb2gray(img);

2.2图像对比度增强

在图像灰度化后,仍然可能会存在图像光照不均、细节部分较暗等问题,使用线性灰度变换可以使图像中的裂缝目标获得更好的视觉效果,增强裂缝目标细节,方便后续步骤的处理。

img=imadjust(img,[0.25,0.6],[0,1]);%对比度增强

也可使用直方图均衡化来增强图像对比度,但效果不是很好。

2.3图像滤波去噪

图像增强后,虽然能提高图像整体的对比度,但是不能消除图像中的干扰因素,因此需要经过滤波去噪算法来消除干扰,使裂缝轮廓更加清晰。但是在进行去噪前可以添加一步形态学低帽变换,突出裂缝特征,以此来达到一个更好的去噪效果。

%形态学低帽变换,体现原始图像的灰度谷值
se=strel('disk',7);
img=imbothat(img,se);

图像去噪的方法有很多:均值滤波法、中值滤波法以及高斯滤波等等,对比各种去噪方法,发现高斯去噪效果最好。

%滤波去噪
    H = fspecial('gaussian',3,3);%高斯滤波算子
    img = imfilter(img,H,'replicate');%进行高斯滤波
%   img=medfilt2(img,[3 3]);%中值法平滑效果不好

3 裂缝分割、裂缝连接
3.1 裂缝分割

最常见的自动确定阈值的算法是大津阈值法(Otsu),但大津阈值法只适用于双峰性质较明显的图像,观察上示裂缝图像直方图,发现双峰性质并不明显,故本文直接给出了固定分割阈值,设定为90/255,分割效果如图。

  img=im2bw(img,90/255);   

显然,图像分割后还是会存在大量噪声区域,故必须进行二次去噪,本文提出一种基于连通域的动态去噪方法。通过观察裂缝图像发现,裂缝的连通域面积远远大于噪声的连通域面积,故可通过计算噪声面积和裂缝面积的比值,以此确定是否滤除当前的连通区域。

img=bwareaopen(img,50);
[L,num] = bwlabel(img);%计算裂缝连通域
stats = regionprops(L); 
Ar = cat(1, stats.Area); 
a=max(Ar);
  for i = 1 : num
      A=stats(i).Area;%遍历各个连通域的面积
      if((A/a)<0.1)
          ind = find(A);
          img(find(L==i))=0;%设为背景
      else
          ind = find(A);
          img(find(L==i))=1;%设为目标
      end
  end

3.2 裂缝连接
(1)形态学闭运算
观察上图,噪声区域已经基本被滤除,但是裂缝毛刺较多,且出现了断裂情况,可以通过形态学闭操作运算解决此问题,获得更好的裂缝提取效果。
(2)KD树裂缝连接算法
尽管形态学闭运算可以实现部分断裂裂缝的连接,但是它并不适用于处理所有断裂裂缝。故本文提出一种基于KD树的裂缝连接算法,利用KD树的思想来找出相邻裂缝的端点,通过判断端点间的欧几里得距离是否符合阈值条件,从而来确定这两个端点是否需要连接起来,效果如图。

BW=img;
[L,num] = bwlabel(BW,8);%找到图中连通域,num为连通域个数
if(num>1)    
     s=regionprops(BW,'ConvexHull');%找到图像的最小凸多边形
     axes(handles.axes9);imshow(BW);
    [m1 ,~]=size(s(1).ConvexHull);
    [m2 ,~]=size(s(2).ConvexHull);
    len=length(s);
 for i=1:len-1
    for j=i+1:len        
        [m1 ,~]=size(s(i).ConvexHull);
        [m2 ,~]=size(s(j).ConvexHull);      
        for h=1:m1
            for k=1:m2              
                  if  pdist([s(i).ConvexHull(h,:) ;s(j).ConvexHull(k,:)],'euclidean')<20
                      hold on;
                      plot([s(i).ConvexHull(h,1) ,s(j).ConvexHull(k,1)]  ,[s(i).ConvexHull(h,2) ,s(j).ConvexHull(k,2)],'w');
                  end
            end
        end
    end
end
  else
%           title('无断裂情况');
  end

至此,我们就得到了较为理想的二值裂缝图像。

4 裂缝分类(SVM)
不同类型的裂缝在其物理参数计算时用到的方法也有差异,故需先对裂缝进行分类处理,大致可分为规则裂缝和非规则裂缝,规则裂缝又包括横向裂缝和纵向裂缝。本文使用传统的机器学习算法——SVM支持向量机来进行分类。

支持向量机的分类原理在此就不多做赘述,读者可查阅相关博文进行了解,或者我后续可就裂缝分类专门发表一篇博文。裂缝分类流程如图所示:
本文选取的裂缝训练特征是HOG特征,将裂缝分为横向裂缝、纵向裂缝以及其他裂缝,采用SVM一对多的分类方式,最后用混淆矩阵评估分类器准确度。

5 裂缝参数计算
对于规则裂缝(横向、纵向),需计算裂缝的长度和最大宽度,对于非规则裂缝,则需计算裂缝区域的面积占比。

5.1 裂缝长度

计算裂缝长度时,可以先将裂缝图像细化,得到裂缝单像素线条,再用图像中总像素个数乘以每个像素代表的实际长度即为裂缝的总长度,在第一小节已经计算出每个像素代表的实际物理长度为0.19mm/pixel,从而可直接计算出实际裂缝长度。

 B=im2bw(img,0.5);
 I = bwmorph(B,'skel',Inf);%细化

5.2 裂缝最大宽度
本文提出一种基于形态学腐蚀操作的裂缝最大宽度求解算法。根据形态学腐蚀的原理,裂缝图像每进行一次腐蚀操作,裂缝面积就会缩小一圈,对于裂缝最宽的部分肯定是最后被腐蚀掉的。所以可以选择一个半径较小的结构元素对裂缝二值图像进行腐蚀,统计在图像像素个数逐渐变为0的过程中产生的腐蚀次数n,设裂缝最大宽度为P,L代表每腐蚀一次消除掉的宽度,得到以下最大宽度计算公式:
P=n×L
本文求解出的L=0.05mm

 bw=imread('picture1.png');%读入裂缝图像
   cont=1;
    for i =1 : 10
        se=strel('disk',1);
        bw=imerode(bw,se);%腐蚀一次
         m=sum(sum(bw));
         if(m==0)
             disp(cont);
         else
             cont = cont+1;
         end
    end
  M=cont*0.05;

由于本文针对的是桥梁裂缝图像,故还对桥梁健康状况进行评估。当裂缝最大宽度小于0.2mm时认为桥梁状况安全;数值大于0.2mm且小于0.3mm时,建议维护;当数值大于0.3mm时发出危险警报,建议立即维护。

5.3 裂缝面积占比

对于非规则裂缝,无法求出裂缝长度和宽度,故用裂缝面积占比来衡量桥梁健康状况。方法如下:
(1)计算图像总像素个数M;
(2)计算裂缝区域(像素灰度值为1)像素个数;
(3)则裂缝面积占比P的计算公式为:P=N/M

6 MATLAB GUI软件界面设计
在成功计算出所有裂缝参数后,为了更直观的展示测量结果,方便用户使用,本文还进一步设计了基于MATLAB GUI的软件界面。软件界面如文章开头处所示,分为三个区域:图像显示区域、控制面板以及参数显示区域,实现了五个功能。
(1)载入图像:载入原始裂缝图像。
(2)图像处理:通过上述操作,得到裂缝二值图像,并进行显示。同时计算出裂缝的主要参数,将其显示在参数显示区域。
(3)保存结果:利用MATLAB与Office Excel之间的便捷接口,可以方便的将裂缝的主要参数保存在Excel表格中。
(4)清空数据。
(5)退出界面。

⛄二、部分源代码

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]陈健昌,张志华.融于图像多特征的路面裂缝智能化识别[J].科学技术与工程. 2021,21(24)

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

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值