目的 工具 基本概念 膨脹和腐蝕
膨脹
數(shù)學(xué)定義為:
A \oplus B={x: {B_x} \ A \neq \}A⊕B=x:Bx??A?=?
? 膨脹非常形象,就是把原來的圖片進行放大(可簡單理解為使用卷積算子進行卷積運算)
Kernel = [1 1 1; 1 1 1; 1 1 1]
Rst = imdilate(img, Kernel)
Copy
效果如圖
? 此外,還有其他的膨脹方式,具體的做法就是「改變卷積核」,比如我們要對豎直方向進行優(yōu)先膨脹,可以使用strel進行卷積的聲明。
se = strel('line', 11, 90); %定義se,為線性,長度為11,方向為90°
Rst = imdilate(img, se);
Copy
效果如圖
此外,如果使用其他的strel函數(shù)進行初始化卷積核的話,就可以得到不同的效果
如圖所示是使用strel('ball', 5, 5)得到的結(jié)果:
腐蝕
數(shù)學(xué)定義為:
A \Theta B ={x: B_{x} \ A }AΘB=x:Bx??A
? 同膨脹,相當(dāng)于膨脹的逆運算,可以做到消除噪聲,細化圖線等效果。
se = strel('ball', 11);
Rst = imerode(img, se);
Copy
效果如圖:
? 顯然,膨脹和腐蝕搭配起來是可以做到某些特殊效果的:
se = strel('rectangle', [40, 30]);
img2 = imerode(img, se); % 先腐蝕
img3 = imdilate(img2, se); % 再膨脹
Copy
效果如圖:
開運算和閉運算
開運算
數(shù)學(xué)定義為:
A \circ B=(A \Theta B) \oplus BA°B=(AΘB)⊕B
? 即對圖片進行先腐蝕形態(tài)學(xué)圖像處理的基本運算,再膨脹,使用相同的卷積算子。
se = strel('disk', 5);
Rst = imopen(img, se); % 使用函數(shù) imopen 進行開運算
Copy
效果如圖:
閉運算
數(shù)學(xué)定義為:
A \ B=(A \oplus B) \Theta BA?B=(A⊕B)ΘB
? 即對圖片進行先膨脹,再腐蝕形態(tài)學(xué)圖像處理的基本運算,使用相同的卷積算子。
se = strel('disk', 10);
Rst = imclose(img, se); % 使用函數(shù) imclose 進行閉運算
Copy
效果如圖:
組合形態(tài)學(xué)運算
高帽濾波(Top-hat )
數(shù)學(xué)定義為:
H=A-(A \circ B)H=A?(A°B)
? 高帽濾波指的是從圖像中減去形態(tài)學(xué)開操作后的圖像。通過高帽濾波可以增加圖像的對比度。
se = strel('disk', 11);
Rst = imtophat(img, se); % 使用函數(shù) imtophat
Copy
效果如圖:
Tips:上圖的第三張圖片是調(diào)整圖片的灰度范圍得到的
低帽濾波(-hat )
數(shù)學(xué)定義為:
H=A-(A \ B)H=A?(A?B)
? 高帽濾波指的是從圖像中減去形態(tài)學(xué)閉操作后的圖像。通過高帽濾波可以獲取圖像的邊緣。
se = strel('disk', 3);
J = imtophat(img, se);
K = imbothat(img, se); % 進行低帽濾波
Rst = imsubtract(imadd(img, J), K); % 原圖先加上高帽濾波,再減去低帽濾波
Copy
效果如圖:
區(qū)域填充(Fill)
? 字面意思,使用函數(shù)對二值圖像(僅含有0 1)或灰度圖像(黑白)進行填充操作。
? 函數(shù)的調(diào)用格式為:
Rst = imfill(img, 'holes')
Copy
效果如下:
圖像的邊界測定
? 對于灰度圖像,可以通過形態(tài)學(xué)的膨脹和腐蝕來獲取圖像的邊緣。通過形態(tài)學(xué)獲取灰度圖像的邊緣的優(yōu)點是對邊緣的方向性依賴比較小。
se = strel('disk', 2);
J = imdilate(img, se);
K = imerode(img, se);
Rst = J - K;
Copy
效果如圖:
特殊的,也封裝了一個專門的函數(shù)進行二值圖像的邊緣獲取:(img, 連通區(qū)域)
Rst = bwperim(img, 8);
Copy
效果如圖: