【图像裂缝】将裂缝分割成有/无重叠区域,通过分割裂缝来增加裂缝数据集研究(Matlab代码实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

裂缝是缺陷的先兆。对裂缝进行标记是一个繁琐的过程。为了增加裂缝的几何特性,可以将裂缝分割成瓷砖图像。在这个程序中,细化的裂缝会以一定的重叠比例在相邻的瓷砖间进行遍历。这将确保产生具有相似属性的裂缝。请注意,一些裂缝的伪影可能会出现在瓷砖图像中。

对于图像裂缝的分割,您可以使用计算机视觉中的图像分割技术来实现。常见的方法包括传统的基于阈值、边缘检测和区域增长的方法,以及现代的基于深度学习的语义分割方法。

传统方法中,您可以尝试使用边缘检测算法(如Sobel、Canny等)来检测裂缝的边界,然后通过区域增长或分水岭算法来将裂缝分割成有/无重叠区域。这些方法需要对图像的特定属性进行分析和处理,适用于一些简单的场景。

而如今,深度学习技术在图像分割领域取得了显著的进展。您可以考虑使用卷积神经网络(CNN)进行语义分割,其中常用的模型包括U-Net、Mask R-CNN等。这些模型通过学习图像的语义信息来实现对裂缝的精准分割,对复杂场景和多样化裂缝具有较好的适用性。

在进行裂缝分割时,需根据您的数据集特点和具体需求选择合适的方法,并进行适当的数据增强和预处理来提高模型的泛化能力和分割效果。

📚2 运行结果

部分代码:

%% Inputs
tileHeight = 50;  % tile height
tileWidth = 100;  % tile width
overlapRatio = 0.2; % overlap bewteen adjacent tiles
difference_limit = 5; % Pixel difference
writeImage = 0;  % write/save spilt images

%% Load images
% Read image
color_image = imread('Pseudo_crack_01.png');
grey_image = rgb2gray(color_image);
binary_image = imbinarize(grey_image);
binary_image = bwmorph(binary_image,'thin',Inf);

%% Split cracks and save
cracksSplitter(tileHeight, tileWidth, overlapRatio, difference_limit, color_image, ...
                binary_image, writeImage)   

%% End
%--------------------------------------------------------------------------
clcwaitbarz = findall(0,'type','figure','tag','TMWWaitbar');
delete(clcwaitbarz);
Runtime = toc(Start);

🎉3 参考文献

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

[1]张颖.基于深度学习的图像语义分割算法研究[J].[2024-03-25].

[2]孟庆成万达吴浩杰李明健齐欣.基于卷积神经网络的混凝土裂缝图像识别方法[J].沈阳建筑大学学报(自然科学版), 2021, 37(5):832-840.

[3]贾潇宇.基于卷积神经网络的桥梁裂缝识别研究[J].中国新通信, 2022, 24(9):3.

🌈4 Matlab代码实现

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于裂缝图像分割的具体实现方法有很多种,没有一种固定的标准算法可以用来解决所有的裂缝图像分割问题。因此,下面提供一个基本的裂缝图像分割代码框架,可以根据不同的具体要求,进行修改和扩展。 ```matlab % 裂缝图像分割代码 clc; clear; close all; % 加载图像 img = imread('crack.jpg'); figure;imshow(img); % 图像预处理 img_gray = rgb2gray(img); img_gray = imadjust(img_gray); img_gray = medfilt2(img_gray,[3 3]); % 中值滤波 % 选取ROI rect = getrect(); % 手动框选ROI img_roi = imcrop(img_gray, rect); figure; imshow(img_roi); % 利用阈值法进行二值化 level = graythresh(img_roi); img_bw = imbinarize(img_roi, level); figure; imshow(img_bw); % 连通域分析 L = bwlabel(img_bw); % 标记所有连通域 stat = regionprops(L, 'Area', 'Perimeter', 'BoundingBox'); areas = [stat.Area]; % 获取所有连通域的面积 perimeters = [stat.Perimeter]; % 获取所有连通域的周长 % 绘制面积直方图 figure; histogram(areas); % 进行裂缝区域的筛选 threshold_area = 50; % 面积阈值 threshold_perimeter = 20; % 周长阈值 idx = find(areas > threshold_area & perimeters > threshold_perimeter); % 筛选裂缝区域 img_crack = ismember(L, idx); % 标记裂缝区域 figure; imshow(img_crack); ``` 以上代码实现了基本的裂缝图像分割流程,可以根据具体需求进行修改和扩展,例如改变阈值法的算法类型、调整连通域筛选条件、增加形态学操作等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值