【裂纹检测】检测和标记图片中的裂缝(matlab实现)

本文介绍了如何使用Matlab实现基于计算机视觉的裂缝检测技术,通过Sobel算子计算图像梯度,然后进行阈值处理和区域生长来识别和标记图片中的裂缝,以提高检测效率和精度,适用于建筑维护等领域。

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

这个任务旨在使用计算机视觉技术来自动检测和标记在图片中出现的裂缝。裂缝通常是物体表面的线状缺陷,可能会对物体的完整性和结构造成影响。通过自动检测和标记裂缝,可以快速准确地识别潜在的问题,并采取相应的措施进行修复或维护。通过检测和标记图片中的裂缝,可以提高裂缝检测的效率和精度,并为后续的维护和修复工作提供有价值的信息。这项任务在建筑、材料科学、工业维护等领域具有重要应用价值。

📚2 运行结果

主函数部分代码:

clear all
close all
% clf
I=imread('exemple2.PNG');
Indg=rgb2gray(I); %NdG

[l,c]=size(Indg); %Taille matrice Indg


%----Lissage------------
G = fspecial('gaussian',[5 5],3); %creation filtre gaussien


IG = imfilter(Indg,G,'symmetric','same','conv'); %filtrage gaussien
%--------------------------

%------------Calcul du gradient-----
%Matrices grad
IX=zeros(l,c);%grad horizon
IY=zeros(l,c);%grad vert
IXY=zeros(l,c);%norme grad

%Sobel 3x3
for i=2:l-1
    for j=2:c-1
        IX(i,j)=-(-double(IG(i-1,j-1))-2*double(IG(i,j-1))-double(IG(i+1,j-1))+double(IG(i-1,j+1))+2*double(IG(i,j+1))+double(IG(i+1,j+1)))/8;
        IY(i,j)=-(-2*double(IG(i-1,j))+2*double(IG(i+1,j))-double(IG(i-1,j-1))+double(IG(i+1,j-1))-double(IG(i-1,j+1))+double(IG(i+1,j+1)))/8;
        IXY(i,j)=sqrt(((IX(i,j))^2)+((IY(i,j))^2));
    end
end

%-------Binarisation----
%Seuillage par hysteresis
Ibin=zeros(l,c);%binaire
Sh=8;
Sb=5;

for i=1:l
    for j=1:c
        
        if IXY(i,j)>=Sh %Seuil : gradient > Sh
            Ibin(i,j)=255;
           
        elseif IXY(i,j)<Sb %Seuil : gradient < Sb
            Ibin(i,j)=0;
        end
        
     end
end

for p=1:50
    for i=1:l
        for j=1:c
            if IXY(i,j)<Sh && IXY(i,j)>=Sb %Seuil : Sh > gradient > Sb
                % Extraction des 8 pixels voisins
                vect = [Ibin(i-1,j-1:j+1) Ibin(i, j-1) Ibin(i, j+1) Ibin(i+1,j-1:j+1)];
                if max(vect)==255
                    Ibin(i,j)=255;
                else
                    Ibin(i,j)=0;
                end
            end  
        end
    end
end  





%----------Identification des r間ions-----
[L,num]=bwlabel(Ibin,8);


t=regionprops(L, 'area'); %info sur les r間ions
taille=zeros(num,1);
for g=1:num
    taille(g,1)=t(g,1).Area(1,1);   %On extrait la taille des r間ions
end


%-----Effacement des petites r間ions------
Ifer=zeros(l,c);
for i=1:l
    for j=1:c
        for k=1

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]郭怡,吴琼.可视化图像处理下船体表面微裂痕高效检测算法[J].舰船科学技术,2021,43(18):1-3.

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值