函數 > 圖像處理 > 特徵萃取 > 範例:歐氏距離轉換
範例:歐氏距離轉換
使用 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. 計算邊緣之間的整體距離。
按一下以複製此運算式
按一下以複製此運算式
這是否有幫助?