範例:灰階影像處理
使用灰階圖像處理函數萃取圖像元件。您也可以挑出圖像中小的明亮或黑暗部分,描述物件形狀。
如需使用此範例的資訊,請參閱
<關於圖像處理範例>。
gray_erode
在二進位侵蝕中,使用結構元素定義每個像素周圍的鄰點。在此像素鄰點中,只要有背景像素,前景即會變成背景。灰階侵蝕從輸入圖像的像素值中減去結構元素的像素值,是此方法的擴充。輸出是結構元素邊界內所得出的最小像素值。
1. 建立一個 5 x 4 的相繼矩陣。
2. 建立簡易的結構元素 (SE)。
4. 計算新矩陣,其應等於 M - 1,但最右欄及最下列不同 (邊界條件)。
6. 以 5 x 5 集中的 SE 侵蝕較逼真的圖像。
7. 將
gray_erode 函數套用至新圖像,然後使用
WRITEBMP 函數將其儲存至檔案。
8. 顯示原始及侵蝕後的圖像。
一如預期,我們發現到圖像整體變暗,亦即較暗的區域擴張,而較明亮的細節則消失不見。
gray_dilate
在二進位擴張中,使用結構元素定義每個像素周圍的鄰點,在這些鄰點中只要有前景像素,背景即會變成前景。
1. 使用與之前相同的相繼矩陣及結構元素 (SE)。
3. 計算新矩陣,其應等於 M + 1,但最右欄及最下列不同 (邊界條件)。
4. 將 gray_dilate 函數套用至上一個圖像。
5. 顯示原始及擴張後的圖像。
擴張會提高整體亮度、擴展明亮的區域及遺失小塊的黑暗細節。
gray_open, gray_close
灰階開啟與閉合的定義方式,與二進位影像處理的開啟及閉合類似;開啟是在灰階侵蝕後進行灰階擴張,閉合則是在灰階擴張後執行灰階侵蝕。
將
gray_open 及
gray_close 套用至相繼的矩陣,可看到其相當於侵蝕及擴張相結合。
1. 將灰階開啟套用至相繼矩陣。
2. 將灰階侵蝕套用至相繼矩陣,並將 SE 原點設為 (0,0)。
3. 將灰階擴張套用至侵蝕過的矩陣,並將 SE 原點設為 (0,0)。
4. 顯示灰階開啟相當於灰階侵蝕及擴張的相組合。
5. 將灰階閉合套用至相繼矩陣。
6. 將灰階擴張套用至相繼矩陣,並將 SE 原點設為 (0,0)。
7. 將灰階侵蝕套用至擴張過的矩陣,並將 SE 原點設為 (0,0)。
8. 顯示灰階閉合相當於灰階擴張及侵蝕的組合。
9. 將函數套用至檢測圖像 L,並比較擴張、侵蝕、開啟及閉合的圖像。
(lena_ld.bmp) | (lena_le.bmp) |
(lena_lc.bmp) | (lena_lo.bmp) |
灰階開啟與閉合不會造成總體亮度的變更,但擴張與侵蝕則會變更亮度。擴張與閉合都會增加圖像的明亮部分並減少黑暗部分,而侵蝕與開啟則會增加黑暗部分並減少明亮特徵。