一、前言
? ? 焊縫是評價焊接質量的重要標志,人工檢測方法存在檢測標準不統一,檢測精度低,焊縫視覺檢測技術作為一種重要的質量檢測方法,正逐漸在各行各業中嶄露頭角。把焊縫準確的從焊接工件中準確分割出來是焊縫評價的關鍵一步,是后續焊縫質量評價的重要依據。焊縫圖像一般照度不均勻,傳統的單一閾值分割和邊緣檢測方法,無法很好實現焊縫的分割和邊緣檢測。因此,本案例提出了一種基于邊緣檢測并結合數學形態學方法實現焊縫背景分割和邊緣檢測,取得了良好的分割效果。
二、程序代碼
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('提取的焊縫邊界');
三、部分運行結果
四、原始圖像
如果覺得本案例對大家今后的編程有幫助,請點贊和收藏。如有改進意見可以與我聯系,謝謝!