s1091438 作業2
主題 線條自畫像
(二值化與邊緣檢測 Image Thresholding and Edge Detection)
一、題目說明
撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)
(a)利用Sobel Operators 偵測並輸出邊緣成分圖
(b)設計一個類似素描線條的自畫像圖案。
(想想:如何使用邊緣偵測所得到的點,結合成看似素描筆畫出的線條?)
二、開發環境
OS : Windows 11
Editor : Visual Studio Code
Language : Python
Package : OpenCV - 4.7.0
Editor : Visual Studio Code
Language : Python
Package : OpenCV - 4.7.0
三、使用Function說明
(a)邊緣成分圖
1. GuassianBlur() : 將灰度圖片進行高斯模糊,以減少影像噪聲
2. Sobel () : 用於在圖中檢測邊緣,可以檢測出圖中每個像素的梯度大小和方向
(1) 分別對原圖的水平(x)和垂直(y)方向進行Sobel(),找出x、y方向的梯度
(2) 使用 cv2.convertScaleAbs() 將 |x| 和 |y| 轉換為影像原本儲存的格式 uint8
(2) 使用 cv2.addWeighted() 將兩個方向的 Sobel() 合併,即獲得Sobel_img
(b)類素描圖
1. Threshold() : 進行二值化處理
2. bitwise_not() : 將Sobel_img和經過Threshold()的圖分別進行反白
3. addWeighted() : 將反白後的兩張圖進行疊加,以淡化Sobel_img反白後的一些粗線條
四、實作例圖
邊緣成分圖(Sobel_img)
經過bitwise_not後的Sobel_img
最終結果(經過addWeighted()的類素描圖)
留言
張貼留言