《数字图像处理与机器视觉》案例二(基于边缘检测和数学形态学焊缝图像处理)

一、前言

    焊缝是评价焊接质量的重要标志,人工检测方法存在检测标准不统一,检测精度低,焊缝视觉检测技术作为一种重要的质量检测方法,正逐渐在各行各业中崭露头角。把焊缝准确的从焊接工件中准确分割出来是焊缝评价的关键一步,是后续焊缝质量评价的重要依据。焊缝图像一般照度不均匀,传统的单一阈值分割和边缘检测方法,无法很好实现焊缝的分割和边缘检测。因此,本案例提出了一种基于边缘检测并结合数学形态学方法实现焊缝背景分割和边缘检测,取得了良好的分割效果。

二、程序代码

clear all;
close all;
clc;
I=imread('.\WeldingSeam.jpg');%读入焊缝图像
figure,imshow(I);
[m,n,d]=size(I);%获得图像的尺寸
Igray=rgb2gray(I);           %彩色图像转灰度图像
IgrayEdge=edge(Igray,'canny',0.3,'vertical');%使用Canny算子提取灰度图像的边缘
figure,imshow(IgrayEdge),title('边缘检测后图像');  %边缘不连续
IgrayEdge(1:m,1:300)=0;
IgrayEdge(1:m,421:n)=0;
figure,imshow(IgrayEdge);%经过处理后的边缘图像
im2=bwareaopen(IgrayEdge,90);%移除小目标(小于90个像素的目标被移除)
figure,imshow(im2);title('边缘图像2');
se =strel('disk',360,0);  %选择合适的结构元素
im3=imclose(im2,se);      %闭运算-可以将两个临近的目标连接起来
figure,imshow(im3);title('闭运算');
im4=bwfill(im3,'holes');    %图像填充
figure,imshow(im4),title('填充孔洞')
obj=uint8(im4).*I;
figure,imshow(obj);title('焊缝分割彩色图像');
figure,
subplot(2,3,1),imshow(I),title('焊缝图像');
subplot(2,3,2),imshow(Igray),title('灰度图像');
subplot(2,3,3),imshow(IgrayEdge),title('边缘图像1');
subplot(2,3,4),imshow(im2),title('边缘图像2');
subplot(2,3,5),imshow(im4),title('数学形态学运算');
subplot(2,3,6),imshow(obj),title('分割后的焊缝图像');
WS_edge=bwmorph(im4,'remove');
figure,imshow(WS_edge),title('提取的焊缝边界');

三、部分运行结果

四、原始图像

如果觉得本案例对大家今后的编程有帮助,请点赞和收藏。如有改进意见可以与我联系,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值