一文詳解matlab實現形態學圖像處理
目的
文章和代碼以及樣例圖片等相關資源,已經歸檔至【Github倉庫:digital-image-processing-matlab】
- 膨脹的簡單應用、使用 strel 函數、腐蝕的說明
- 函數imopen 和imclose 的應用、使用IPT函數bwhitmiss
- 灰度圖像形態學開運算和閉運算
- 灰度圖像形態學使用重構刪除復雜圖像的背景
內容
膨脹的簡單應用
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 函數分解結構元素的說明
se=strel('diamond',5) decomp=getsequence(se); whos decomp(1) decomp(2) decomp(3) decomp(4)
腐蝕的說明
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 的圓盤腐蝕後的圖像 se=strel('disk',5) A3=imerode(A,se) figure, imshow(A3)%半徑為5 的圓盤腐蝕後的圖像 A4=imerode(A,strel('disk',20)) figure, imshow(A4)%半徑為20 的圓盤腐蝕後的圖像
函數imopen 和imclose 的應用
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)%開運算後的圖像 fc=imclose(f,se); figure, imshow(fc)%閉運算後的圖像 foc=imclose(fo,se); figure, imshow(foc)%圖像A2 經閉運算後的圖像
使用 IPT 函數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)
灰度圖像形態學開運算和閉運算
%%%%%%%%%使用開運算和閉運算做形態學平滑%%%%%%%%%%%%%%%%% 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)%開運算後的圖像 foc=imclose(fo,se); figure, imshow(foc)%圖像A2 經閉運算後的圖像 fasf=f; for k=2:5 se=strel('disk',k); fasf=imclose(imopen(fasf,se),se); end figure,imshow(fasf) %%%%%% 交替順序濾波後的圖像 %%%%%%%%%%使用頂帽變換%%%%%%%%%%%%%% 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)%經開運算處理後的圖像 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') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
灰度圖像形態學使用重構刪除復雜圖像的背景
%灰度圖像形態學使用重構刪除復雜圖像的背景 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)
參考文獻:
[1] Rafael C. Gonzalez, Richard E. Woods, and Steven L. Eddins. 2003. Digital Image Processing Using MATLAB. Prentice-Hall, Inc., USA.
[2] 阮秋琦. 數字圖像處理(MATLAB版)[M]. 北京:電子工業出版社, 2014.
[3] 岡薩雷斯. 數字圖像處理(第三版)[M]. 北京:電子工業出版社, 2011.
以上就是一文詳解matlab實現形態學圖像處理的詳細內容,更多關於matlab形態學圖像處理的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Matlab處理圖像後實現簡單的人臉檢測
- 基於Matlab圖像處理的公路裂縫檢測實現
- 詳解基於Matlab的空心散點檢測
- 基於matlab對比度和結構提取的多模態解剖圖像融合實現
- Matlab實現將圖像序列合並為視頻的方法詳解