1. 作業說明:
- 線條自畫像(二值化與邊緣偵測 Image Thresholding and Edge Detection)
撰寫程式以灰階模式圖取圖片。
(a) 利用Sobel Operators偵測並輸出邊緣成分圖。
(b) 設計一個類似素描線條的自畫像圖案。
2. 開發環境:
- Windows 10
- Visual Studio 2017
- OpenCV 4.5.5
3. 程式流程:
- 首先,輸入圖片完整路徑及名稱。利用imread(path, IMREAD_GRAYSCALE)以灰階模式讀取圖片。
👉 若是讀取失敗,將跳出提示,並結束程式。
- 接著,使用GaussianBlur()函數對其圖片進行模糊處理,如此作原因在於減少圖像中的噪音(Noise)。在邊緣檢測中必須計算像素強度(pixel intensity)的數值導數,這通常會導致噪音邊緣,也就是圖像中相鄰像素的強度(尤其是靠近邊緣)可能會有很大的波動,從而產生不是我們要的邊緣結構結果。模糊可平滑邊緣附近的強度變化,進而更容易識別圖像中的主要邊緣結構。
- 利用Sobel()函數進行邊緣偵測。先個別計算出針對X方向及Y方向的一階導數Sobel圖像。再利用addWeighted()將上述得到的兩張圖像融合,最後生成此圖像的邊緣成分圖。
- 用Sobel Operators偵測得到的邊緣成分圖就類似素描的線條感,因此只需利用黑白顏色互換,進而產生白底黑線的似素描圖像。
- 最終,利用imshow()將原始圖(彩色)、灰階圖像、邊緣成分圖以及似素描圖像呈現出來,供使用者作比較。
沒有留言:
張貼留言