範例:Canny 邊緣檢測器
使用
canny 函數檢測圖像的邊緣。此演算法會非常精準地找到邊緣的位置,並將出現假邊緣的機率降到最低。
如需使用此範例的資訊,請參閱
<關於圖像處理範例>。
人工圖像
3. 將 canny 函數套用至原始圖像,並將結果寫入檔案。
4. 插入新圖像,並與縮放後的圖像進行比較。
| |
(pattern_zoomed.bmp) | (pattern_canny.bmp) |
5. 變更上述函數引數值,並檢視輸出圖像的邊緣效果。
◦ 較大的 sigma 值會產生較粗糙的邊緣 (適用於雜訊水平長條),但其他位置會失去細節 (例如,兩個邊緣可能會開始合併成一個)。
◦ 較大的臨界值下限會產生邊緣較乾淨的圖像,因為僅會保留大於特定梯度值的邊緣。
◦ 較大的臨界值上限會顯現滯後臨界值設定的效果。
◦ 上限較大值會導致對應於無像素物件 (在強度大於上限的連接邊緣上沒有任何像素) 的邊緣完全消失。
自然圖像
檢測頭部圖像內的邊界。
1. 讀取腦部圖像,並套用 canny 函數。
2. 將結果寫入檔案。
3. 插入並比較兩個圖像。
| |
(brain.bmp) | (brain_canny.bmp) |
canny 函數會檢測最凸出的邊緣,包括頭部與腦部邊界。您可調整函數引數的值,扭曲精細度。
4. 讀取指紋圖像,並套用 canny 函數。
5. 將結果寫入檔案。
6. 插入並比較兩個圖像。
| |
(fingerp.bmp) | (fingerp_canny.bmp) |
canny 函數會檢測指紋圖像的主要輪廓邊界,之後可輸入圖樣辨識系統。
7. 讀取人像,並套用 canny 函數。
8. 將結果寫入檔案。
9. 插入並比較兩個圖像。
| |
(lena.bmp) | (lena_canny.bmp) |