形態學是基於形狀處理圖像的一組廣泛的圖像處理運算。在形態學運算中,圖像中的每個像素都基於其鄰域中其他像素的值進行調整。通過選擇鄰域的大小和形狀,可以構造對輸入圖像中的特定形狀敏感的形態學運算。
創建形態學結構元素 strel()
SE = strel(nhood) 創建一個具有指定鄰域 nhood 的平面結構元素。
SE = strel('diamond', r) 創建一個菱形結構元素,其中 r 指定從結構元素原點到菱形各點的距離。
SE = strel('disk', r, n) 創建一個盤形結構元素,其中 r 指定半徑,n 指定用於逼近盤形的線條結構元素的數量。
SE = strel('octagon', r) 創建一個八邊形結構元素,其中 r 指定從結構元素原點到八邊形邊的距離,沿水平和垂直軸測量。r 必須為 3 的非負倍數。
SE = strel('line', len, deg) 創建一個關於鄰域中心對稱的線性結構元素,長度約為 len,角度約為 deg。
SE = strel('rectangle', [m n]) 創建一個大小為 [m n] 的矩形結構元素。
SE = strel('square', w) 創建一個寬度為 w 個像素的正方形結構元素。
SE = strel('cube', w) 創建一個寬度為 w 個像素的三維立方體結構元素。
SE = strel('cuboid', [m n p]) 創建一個大小為 [m n p] 的三維立方體結構元素。
SE = strel('sphere', r) 創建一個半徑為 r 個像素的三維球面結構元素。
腐蝕運算 imerode()
J = imerode(I, SE) 使用結構元素 SE 腐蝕灰度、二值或壓縮二值圖像 I。
J = imerode(I, nhood) 腐蝕圖像 I,其中 nhood 是由指定結構元素鄰域的 0 和 1 組成的矩陣。
此語法等效於 imerode(I, strel(nhood))。
J = imerode(___, packopt, m) 指定輸入圖像 I 是否為壓縮二值圖像。m 指定原始未壓縮圖像的行維度。
J = imerode(___, shape) 指定輸出圖像的大小。
腐蝕運算是一種消除邊界點,使邊界點向內部收縮的過程。因此,腐蝕運算常用來消除圖像中一些小且無意義的物體;使用腐蝕運算消除圖像的背景部分,也可以產生濾波器的效果。
膨脹運算 imdilate()
J = imdilate(I, SE) 使用結構元素 SE 膨脹灰度、二值或壓縮二值圖像 I。
J = imdilate(I, nhood) 對圖像 I 執行擴張運算,其中 nhood 是由 0 和 1 組成的矩陣,用於指定結構元素鄰域。
此語法等效於 imdilate(I, strel(nhood))。
J = imdilate(___, packopt) 指定 I 是否為壓縮二值圖像。
J = imdilate(___, shape) 指定輸出圖像的大小。
膨脹運算是將與物體接觸的所有背景合並到該物體中,使邊界向外擴張的過程。因此,膨脹運算可以用來填補物體中的空洞及消除目標物體中的小顆粒噪聲。在處理上面一張字跡不清的圖片時,用膨脹運算填補字跡的空洞,從而使字跡更加清晰。
開運算 imopen()
J = imopen(I, SE) 使用結構元素 SE 對灰度或二值圖像 I 執行形態學開運算。形態學開運算是先腐蝕后膨脹,這兩種運算使用相同的結構元素。
J = imopen(I, nhood) 對圖像 I 執行開運算,其中 nhood 是由 0 和 1 組成的矩陣,用於指定結構元素鄰域。
此語法等效於 imopen(I,strel(nhood))。
開運算對圖像先腐蝕后膨脹。開運算去除了白點,能夠除去孤立的小點,毛刺和粘連,而總的位置和形狀不變。開運算是一個基於幾何運算的濾波器。結構元素大小的不同將導致濾波效果的不同。不同的結構元素的選擇導致了不同的分割,即提取出不同的特征。
閉運算 imclose()
J = imclose(I,SE) 使用結構元素 SE 對灰度或二值圖像 I 執行形態學閉運算。形態學閉運算是先膨脹后腐蝕,這兩種運算使用相同的結構元素。
J = imclose(I,nhood) 對圖像 I 執行閉運算,其中 nhood 是由指定結構元素鄰域的 0 和 1 組成的矩陣。
此語法等效於 imclose(I,strel(nhood))。
閉運算對圖像先膨脹后腐蝕。閉運算去除了黑點,能夠填平目標物中的小孔,彌合小裂縫,而總的位置和形狀不變。閉運算是通過填充圖像的暗塊來濾波圖像的。結構元素大小的不同將導致濾波效果的不同。不同結構元素的選擇導致了不同的彌合。