函數 > 圖像處理 > 特徵萃取 > 範例:歐氏距離轉換
範例:歐氏距離轉換
使用 distform 函數計算矩陣 M 的歐氏距離轉換,考慮使用值為 fg 的像素作為前景像素。
如需使用此範例的資訊,請參閱<關於圖像處理範例>
圖像矩陣
1. 定義圖像矩陣,並套用 distform
每個輸出像素的值是到最接近的輸入前景 (值 100) 像素之距離:
若是輸入前景像素,輸出距離會為零
若是水平與垂直鄰點,則距離為 1
若是對角鄰點,則距離為 2 的平方根或 1.414
含有一個非零像素的圖像
1. 定義含有一個非零像素的圖像。
2. distform 套用至圖像:
隨著遠離輸入圖像的前景像素 (中心像素),距離會單調遞增。
距離轉換產生近似歐氏距離。在上例中,您會看到矩陣位置 (0,1) 的精確歐氏距離轉換輸出應為:
但在我們的輸出圖像中,該值為 5.243。
圓形物件的圖像
1. 定義圓形圖像:
2. 使用 scale 函數縮放圓。
3. 使用 WRITEBMP 函數將縮放後的圓寫入檔案。
4. distform 函數套用至圓、加以縮放,然後將結果儲存至新檔案。
5. 從兩個檔案插入圖像,並比較結果。
(sc.bmp)
(scdist.bmp)
圓內所有點的距離值皆為零,並隨著外移單調遞增,但這些值不會完全等於歐氏距離,否則輸出會呈放射對稱。
單一物件的兩個二進位圖像
1. 讀取圖像。
2. 使用 translate 函數建立圖像的平移版本,並將平移後的圖像寫入檔案。
3. 從三個檔案插入圖像,並比較結果。
(flower.bmp)
(flower_d2.bmp)
(flower_d3.bmp)
4. 使用 distform 函數計算 D1 的距離轉換。
5. 使用函數 maskmean,以圖像 D2D3 遮罩距離轉換圖像,並計算整個圖像的均數。這表示兩個圖像之間的距離量測。
D1D1 之間的距離為零,而 D1 與其他圖像之間的距離會隨轉換度而增加。
6. 計算 Hausdorff 距離
Hausdorff 距離會定義為兩個集合中各點之間最接近距離的最大值。若要計算兩個圖像之間的 Hausdorff 距離,請使用 max 函數而非函數 mean
兩個邊緣圖像
您可以計算兩個邊緣圖像之間的距離,以比較邊緣檢測器的效能。使用遮罩距離的均數或最大值作為邊緣距離的量測。
1. 使用 READ_IMAGE 函數讀取圖像檔案。
2. 將兩個邊緣檢測器 cannybinarize 套用至圖像,並將結果寫入外部檔案。
3. 插入並目視比較兩個圖像。
(lena_e1.bmp)
(lena_e2.bmp)
4. 計算邊緣之間的整體距離。
這是否有幫助?