常見的形態(tài)學(xué)處理包括腐蝕、膨脹、開運(yùn)算、閉運(yùn)算。不同的操作有不同的作用,同樣的操作在不同類型的圖片上也有不同效果,具體效果如下表格所示。要求熟練掌握對二值圖像的形態(tài)學(xué)處理。
一、對二值圖像進(jìn)行處理
1、結(jié)構(gòu)元素
在開始形態(tài)學(xué)操作之前,要準(zhǔn)備好結(jié)構(gòu)元素,通常結(jié)構(gòu)元素是凸的,并且有一個(gè)參考點(diǎn)。
?我們會(huì)將結(jié)構(gòu)元素的參考點(diǎn)滑過待處理圖像的每一個(gè)像素,并考慮此時(shí)結(jié)構(gòu)元素和圖像區(qū)域的關(guān)系。下面定義一個(gè)結(jié)構(gòu)元素,結(jié)構(gòu)元素的圖片效果、數(shù)值展示如下圖:
SE = strel('diamond',3);
GN=getnhood(SE)%獲取結(jié)構(gòu)元素的鄰域
figure,imshow(GN,[]);
2、腐蝕
腐蝕的作用是標(biāo)記原圖像中結(jié)構(gòu)元素出現(xiàn)的位置,標(biāo)記的位置為參考點(diǎn)所在的位置。
Image=imread('menu.bmp'); %打開圖像
BW=im2bw(Image); %轉(zhuǎn)換為二值圖像
subplot(131),imshow(BW);title('原圖像');
[h w]=size(BW); %獲取圖像尺寸
result=ones(h,w); %定義輸出圖像,初始化為1
for x=2:w-1
for y=2:h-1 %掃描圖像每一點(diǎn),即結(jié)構(gòu)元素移動(dòng)到每一個(gè)位置
for m=-1:1
for n=-1:1 %當(dāng)前點(diǎn)周圍3×3范圍,即3×3結(jié)構(gòu)元素所覆蓋范圍
if BW(y+n,x+m)==0 %該范圍內(nèi)有像素點(diǎn)為0,即該位置不能完全包含結(jié)構(gòu)元素
result(y,x)=0; %將參考點(diǎn)記錄為背景點(diǎn),即腐蝕掉
break;
end
end
end
end
end
subplot(132),imshow(result); title('自編程實(shí)現(xiàn)二值圖像腐蝕');
SE=strel('square',3); %創(chuàng)建結(jié)構(gòu)元素
result=imerode(BW,SE); %腐蝕運(yùn)算
subplot(133),imshow(result); title('二值圖像imerode');
3、膨脹
膨脹,具有讓二值圖像視覺加粗的效果,膨脹的方向,取決于結(jié)構(gòu)元素,以下圖結(jié)構(gòu)元素為例,結(jié)構(gòu)元素的參考點(diǎn)上下分別有兩個(gè)像素,那么作用在這個(gè)結(jié)構(gòu)元素的原圖像會(huì)在上下兩個(gè)方向膨脹兩個(gè)像素。
Image=imread('menu.bmp'); %打開圖像
BW=im2bw(Image); %轉(zhuǎn)換為二值圖像
subplot(131),imshow(BW),title('顯示原圖像');
[h w]=size(BW); %獲取圖像尺寸
result=zeros(h,w); %定義輸出圖像,初始化為0
for x=2:w-1
for y=2:h-1 %掃描圖像每一點(diǎn),即結(jié)構(gòu)元素移動(dòng)到每一個(gè)位置
for m=-1:1
for n=-1:1 %當(dāng)前點(diǎn)周圍3×3范圍,即結(jié)構(gòu)元素為3×3大小
if BW(y+n,x+m) %結(jié)構(gòu)元素所覆蓋3×3范圍內(nèi)有像素點(diǎn)為1,即交集不為空
result(y,x)=1; %將參考點(diǎn)記錄為前景點(diǎn)
break;
end
end
end
end
end
subplot(132),imshow(result);title('自定義實(shí)現(xiàn)二值圖像膨脹');
SE=strel('square',3); %創(chuàng)建結(jié)構(gòu)元素
result1=imdilate(BW,SE); %膨脹運(yùn)算
subplot(133),imshow(result1);title('imdilate實(shí)現(xiàn)二值圖像膨脹');
4、開運(yùn)算和閉運(yùn)算
開運(yùn)算是用同一個(gè)結(jié)構(gòu)元素對原圖像先腐蝕后膨脹,常見應(yīng)用是,消除感興趣目標(biāo)外部孤立的噪聲點(diǎn)和細(xì)長的毛刺(尺寸都要比結(jié)構(gòu)元素小)。
閉運(yùn)算是用同一個(gè)結(jié)構(gòu)元素對原圖像先膨脹后腐蝕,常見應(yīng)用是,消除感興趣目標(biāo)內(nèi)部的孔洞。
Image=imread('A.bmp');
BW=im2bw(Image);
SE=strel('square',3);
result1=imdilate(imerode(BW,SE),SE);
result2=imopen(BW,SE); %用3×3結(jié)構(gòu)元素進(jìn)行開運(yùn)算
figure,imshow(result1);title('開運(yùn)算方法1');
figure,imshow(result2);title('開運(yùn)算方法2');
result3=imerode(imdilate(BW,SE),SE);
result4=imclose(BW,SE); %用3×3結(jié)構(gòu)元素進(jìn)行閉運(yùn)算
figure,imshow(result3);title('閉運(yùn)算方法1');
figure,imshow(result4);title('閉運(yùn)算方法2');
5、形態(tài)學(xué)濾波
顧名思義,從圖像中提取固定形狀的原圖像內(nèi)容,提取的形狀和結(jié)構(gòu)元素的形狀一致,這里用開運(yùn)算實(shí)現(xiàn),先進(jìn)行腐蝕后進(jìn)行膨脹,腐蝕時(shí)的結(jié)構(gòu)元素尺寸需要大于不想要的形狀,小于想要保留的形狀尺寸;這樣的腐蝕之后就能保證,只留下了感興趣的目標(biāo)形狀,這樣再膨脹一次就能恢復(fù)到初始形狀的大小。
Image=imread('pattern.jpg');
Th=graythresh(Image);
OriginBW=im2bw(Image,Th);
subplot(131);imshow(OriginBW);title('原始二值圖像');
imwrite(OriginBW,'pattern1.bmp');
BW1=1-OriginBW;
se=strel('square',3);%結(jié)構(gòu)元素為邊長為3的正方形
BW2=1-imopen(BW1,se);
subplot(132);imshow(BW2);title('矩形塊提取');
imwrite(BW2,'rectang1.bmp');
se45=strel('line',25,45);%結(jié)構(gòu)元素為角度為45的線,長度為25個(gè)像素
BW3=1-imopen(BW1,se45);
subplot(133);imshow(BW3);title('線段提取');
imwrite(BW3,'line1.bmp');
6、平滑處理
通過先開運(yùn)算后閉運(yùn)算的操作,去除目標(biāo)圖像內(nèi)部和外部的噪聲。
Image=imread('A.bmp');
BW=im2bw(Image);
subplot(131);imshow(BW);title('原圖像');
SE=strel('square',4);
result1=imclose(imopen(BW,SE),SE); %用3×3結(jié)構(gòu)元素先開后閉
subplot(132);imshow(result1);title('先開后閉');
result2=imopen(imclose(BW,SE),SE); %先閉后開
subplot(133);imshow(result2);title('先閉后開');
7、擊中與不擊中?
這個(gè)有點(diǎn)目標(biāo)檢測的意思,不僅需要內(nèi)部形狀滿足結(jié)構(gòu)元素,也需要外部形狀滿足結(jié)構(gòu)元素,處理結(jié)果標(biāo)記的是查找到的符合要求的位置。
Image=zeros(12,12); %定義目標(biāo)圖像Image
Image(2:6,3:5)=1;
Image(9:11,4:6)=1;
Image(3:5,8:10)=1;
Image(8:9,9:10)=1;
Image(2,10)=1;
Image(3,11)=1;
SE1=[0 0 0 0 0 %定義結(jié)構(gòu)元素SE1
0 1 1 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0];
SE2=[1 1 1 1 1 %定義結(jié)構(gòu)元素SE2
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 1 1 1 1];
subplot(121),imshow(Image); title('原圖像');
result1=imerode(Image,SE1); %結(jié)構(gòu)元素SE1探測圖像內(nèi)部,結(jié)果為result1
Image1=~Image; %目標(biāo)圖像Image求補(bǔ)
result2=imerode(Image1,SE2); %結(jié)構(gòu)元素SE2檢測圖像外部,結(jié)果為result2
result=result1 & result2; %求出擊中與否變換的結(jié)果result
subplot(122),imshow(result); title('擊中與否變換結(jié)果');
二、對灰度圖進(jìn)行處理
1、腐蝕和膨脹
對灰度圖腐蝕后,圖像整體變暗,亮細(xì)節(jié)被削弱;對灰度圖膨脹后,圖像整體變亮,暗細(xì)節(jié)被削弱;總之,經(jīng)過腐蝕膨脹處理后,圖像會(huì)變模糊;對彩色圖像膨脹腐蝕處理后,是不是有一種油畫的效果呢~文章來源:http://www.zghlxwxcb.cn/news/detail-442296.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-442296.html

Image=(imread('maleman.gif'));
se=strel('ball',5,5);%選取球形結(jié)構(gòu)元素
result1=imdilate(Image,se);%膨脹灰度圖像
result2=imerode(Image,se); %腐蝕灰度圖像
imshow(Image);title('原始灰度圖像');
figure,imshow(result1);title('膨脹后的圖像');
figure,imshow(result2);title('腐蝕后的圖像');
imwrite(result1,'ym1.bmp');
imwrite(result2,'ym2.bmp');
到了這里,關(guān)于數(shù)字圖像處理之matlab實(shí)驗(yàn)(五):形態(tài)學(xué)圖像處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!