用Matlab实现裂缝识别,代码实现

用Matlab实现裂缝识别,代码实现

21世纪以来,随着我国经济的飞速发展,关系到整个国民经济及人民生活的重要物理设施之一的道路交通也展开了大规模的建设。道路面积的大幅增长同时带来了相关的道路养护问题。这些问题最初可能只是一条小小的裂缝,但是如果没有得到及时修缮,随着时间的推移,小问题可能会变得无法简单修补,甚至于带来不必要的灾难,给人类、物资带来不可挽回的损失。近几年来,道路裂缝的检测和识别技术已经得到了较为广泛地应用,然而如何快速、准确地地检测出道路可能存在的裂缝仍是数字图像领域研究的热点。

研究原因:

提出一种基于MATLAB的道路裂缝识别方法,在对道路裂缝图像灰度化的基础上,利用最大类间方差法提取可能存在的道路裂缝,再对图像进行形态学操作,去除图像中的非裂缝区域,最后用凸包对裂缝区域进行标识,得到图像中实际存在的裂缝区域。在采集到的道路裂缝图像的实验结果表明,提出的方法可以准确地标注道路裂缝。

应用:

伴随着更多的隧道、路面进入检修期,检测与养护问题在大型结构中将愈发重要。

部分源代码:

%在二值图像二值化及滤波去噪后可以突出裂缝目标,根据裂缝的‘线状’特点,本实验采用二值化连通区域长短轴之比的特征进行判断。function bwn = Identify_Object(bw, MinArea, MinRate)%识别裂缝目标;输入参数:bw二值图像,MinArea最小面积,MinRate最小长短轴之比;输出参数:bwn识别结果if nargin < 3  

    %最小长短轴之比

    MinRate = 3; endif nargin < 2

    %最小面积

    MinArea = 20;end%区域标记[L, num] = bwlabel(bw); %这个函数的作用是找这个二值图像中的8连通区域的,结果保存在L矩阵里,而num里保存的是输入图像中连通区域的总数%计算区域属性信息stats = regionprops(L, 'Area', 'MajorAxisLength', ...

    'MinorAxisLength'); %统计面积信息Ap = cat(1, stats.Area);%统计长轴信息Lp1 = cat(1, stats.MajorAxisLength);%统计短轴信息Lp2 = cat(1, stats.MinorAxisLength); %长短轴之比Lp = Lp1./Lp2; %面积滤波for i = 1 : num%num为连通区域总数,遍历每一个连通区域,如果其面积小于20,则该位置信息置0

    if Ap(i) < MinArea

        bw(L == i) = 0;

    endend%长短轴之比滤波MinRate = max(Lp)*0.4;%设置最小长短轴之比for i = 1 : num

    if Lp(i) < MinRate%遍历所有连通区域,如果该区域长短轴之比小于设置的最低值,则该区域信息置0

        bw(L == i) = 0;

    endendbwn = bw;

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值