一文詳解matlab實(shí)現(xiàn)形態(tài)學(xué)圖像處理
目的
文章和代碼以及樣例圖片等相關(guān)資源,已經(jīng)歸檔至【Github倉(cāng)庫(kù):digital-image-processing-matlab】
- 膨脹的簡(jiǎn)單應(yīng)用、使用 strel 函數(shù)、腐蝕的說(shuō)明
- 函數(shù)imopen 和imclose 的應(yīng)用、使用IPT函數(shù)bwhitmiss
- 灰度圖像形態(tài)學(xué)開(kāi)運(yùn)算和閉運(yùn)算
- 灰度圖像形態(tài)學(xué)使用重構(gòu)刪除復(fù)雜圖像的背景
內(nèi)容
膨脹的簡(jiǎn)單應(yīng)用
A=imread('D:\pic\DIP3E_CH04\Fig0419(a)(text_gaps_of_1_and_2_pixels).tif');
figure, imshow(A)
B=[0 1 0;1 1 1;0 1 0];
A2=imdilate(A,B);
figure,imshow(A2)
使用 strel 函數(shù)分解結(jié)構(gòu)元素的說(shuō)明
se=strel('diamond',5)
decomp=getsequence(se);
whos
decomp(1)
decomp(2)
decomp(3)
decomp(4)
腐蝕的說(shuō)明
A=imread('D:\pic\DIP3E_CH09\Fig0905(a)(wirebond-mask).tif');
figure, imshow(A)%原圖像
se=strel('disk',10)
A2=imerode(A,se)
figure, imshow(A2)%半徑為10 的圓盤(pán)腐蝕后的圖像
se=strel('disk',5)
A3=imerode(A,se)
figure, imshow(A3)%半徑為5 的圓盤(pán)腐蝕后的圖像
A4=imerode(A,strel('disk',20))
figure, imshow(A4)%半徑為20 的圓盤(pán)腐蝕后的圖像
函數(shù)imopen 和imclose 的應(yīng)用
f=imread('D:\pic\DIP3E_CH09\Fig0905(a)(wirebond-mask).tif');
figure, imshow(f)%原圖像
se=strel('square',20);
fo=imopen(f,se);
figure, imshow(fo)%開(kāi)運(yùn)算后的圖像
fc=imclose(f,se);
figure, imshow(fc)%閉運(yùn)算后的圖像
foc=imclose(fo,se);
figure, imshow(foc)%圖像A2 經(jīng)閉運(yùn)算后的圖像
使用 IPT 函數(shù)bwhitmiss
f=imread('D:\pic\DIP3E_CH09\FigP0918(left).tif')
figure,imshow(f)
B1=strel([0 0 0;0 1 1;0 1 0]);
B2=strel([1 1 1;1 0 0;1 0 0]);
g=bwhitmiss(f,B1,B2);
figure,imshow(g)
灰度圖像形態(tài)學(xué)開(kāi)運(yùn)算和閉運(yùn)算
%%%%%%%%%使用開(kāi)運(yùn)算和閉運(yùn)算做形態(tài)學(xué)平滑%%%%%%%%%%%%%%%%%
clear all
clc
f=imread('D:\pic\DIP3E_CH09\Fig0941(a)(wood_dowels).tif');
figure, imshow(f)%原圖像
se=strel('disk',5);
fo=imopen(f,se);
figure, imshow(fo)%開(kāi)運(yùn)算后的圖像
foc=imclose(fo,se);
figure, imshow(foc)%圖像A2 經(jīng)閉運(yùn)算后的圖像
fasf=f;
for k=2:5
se=strel('disk',k);
fasf=imclose(imopen(fasf,se),se);
end
figure,imshow(fasf) %%%%%% 交替順序?yàn)V波后的圖像
%%%%%%%%%%使用頂帽變換%%%%%%%%%%%%%%
clear all
clc
f=imread('D:\pic\DIP3E_CH09\Fig0940(a)(rice_image_with_intensity_gradient).tif');
figure, imshow(f)%原圖像
se=strel('disk',10);
fo=imopen(f,se);
figure, imshow(fo)%經(jīng)開(kāi)運(yùn)算處理后的圖像
f2=imsubtract(f,fo);
figure, imshow(f2)
f2=imtophat(f,se);
figure, imshow(f2)
se=strel('disk',3);
g=imsubtract(imadd(f,imtophat(f,se)),imbothat(f,se));%低帽、頂帽
figure, imshow(g)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%顆粒分析%%%%%%%%%%%%%%
clear all
clc
f=imread('D:\pic\DIP3E_CH09\Fig0940(a)(rice_image_with_intensity_gradient).tif');
sumpixels=zeros(1,36);
for k=0:35
se=strel('disk',k);
fo=imopen(f,se);
sumpixels(k+1)=sum(fo(:));
end
figure,plot(0:35,sumpixels);
xlabel('k');
ylabel('surface area')
figure, plot(-diff(sumpixels))
xlabel('k');
ylabel('surface area reduction')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
灰度圖像形態(tài)學(xué)使用重構(gòu)刪除復(fù)雜圖像的背景
%灰度圖像形態(tài)學(xué)使用重構(gòu)刪除復(fù)雜圖像的背景
clear all
clc
f=imread('D:\pic\DIP3E_CH09\Fig0944(a)(calculator).tif');
figure, imshow(f)%原圖像
f_obr=imreconstruct(imerode(f,ones(1,71)),f);
figure, imshow(f_obr)
f_o=imopen(f,ones(1,71));%for comparison
figure, imshow(f_o)
f_thr=imsubtract(f,f_obr);
figure, imshow(f_thr)
f_th=imsubtract(f,f_o);%or imtophat(f,ones(1,71))
figure, imshow(f_th)
g_obr=imreconstruct(imerode(f_thr,ones(1,11)),f_thr);
figure, imshow(g_obr)
g_obrd=imdilate(g_obr,ones(1,21));
figure, imshow(g_obrd)
f2=imreconstruct(min(g_obrd,f_thr),f_thr);
figure, imshow(f2)
參考文獻(xiàn):
[2] 阮秋琦. 數(shù)字圖像處理(MATLAB版)[M]. 北京:電子工業(yè)出版社, 2014.
[3] 岡薩雷斯. 數(shù)字圖像處理(第三版)[M]. 北京:電子工業(yè)出版社, 2011.
以上就是一文詳解matlab實(shí)現(xiàn)形態(tài)學(xué)圖像處理的詳細(xì)內(nèi)容,更多關(guān)于matlab形態(tài)學(xué)圖像處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)BMP圖像處理(哈夫曼編碼)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)BMP圖像哈夫曼編碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
C++實(shí)現(xiàn) 單例模式實(shí)例詳解
這篇文章主要介紹了C++實(shí)現(xiàn) 單例模式實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05
c++連接mysql5.6的出錯(cuò)問(wèn)題總結(jié)
下面小編就為大家?guī)?lái)一篇c++連接mysql5.6的出錯(cuò)問(wèn)題總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦2016-12-12
C++實(shí)現(xiàn)獲取本機(jī)MAC地址與IP地址
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)獲取本機(jī)MAC地址與IP地址的兩種方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
C語(yǔ)言中pthread_create函數(shù)實(shí)現(xiàn)向線程函數(shù)傳遞參數(shù)
本文主要介紹了C語(yǔ)言中pthread_create函數(shù)實(shí)現(xiàn)向線程函數(shù)傳遞參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
詳解C語(yǔ)言中的wait()函數(shù)和waitpid()函數(shù)
這篇文章主要介紹了C語(yǔ)言中的wait()函數(shù)和waitpid()函數(shù),注意其在中斷進(jìn)程方面用法的不同,需要的朋友可以參考下2015-08-08
關(guān)于C++動(dòng)態(tài)分配內(nèi)存的介紹
今天小編就為大家分享一篇關(guān)于關(guān)于C++動(dòng)態(tài)分配內(nèi)存的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
C++內(nèi)存管理之簡(jiǎn)易內(nèi)存池的實(shí)現(xiàn)
大家好,本篇文章主要講的是C++內(nèi)存管理之簡(jiǎn)易內(nèi)存池的實(shí)現(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2021-12-12

