s1093306 作業2
一.作業說明 :
撰寫一個程式將一張圖像的 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE)
(a)利用 Sobel Operators 偵測並輸出邊緣成分圖(b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合成看似素描筆畫出的線條?)
二.開發環境 :
- 作業系統: Windows10
- 編譯器: Visual Studio 2019
- 程式語言: C++
- OpenCV版本: 4.7.0
三.程式說明 :
- 先用 imread(path, IMREAD_GRAYSCALE)(IMREAD_GRAYSCALE也可以用0) 讀取灰階圖。
- 利用 Sobel Operators通過計算每個像素的圖像亮度梯度來檢測圖像中的邊緣(Sobel 有分垂直偵測和水平偵測)以加權平均方式計算各點的數值來決定邊緣,將兩個偵測結果轉換為影像原本儲存的格式轉為uint8(convertScaleAbs()),相加(相加的公式可化簡為下圖(一)、(二))(這裡我有用add和addWeighted相比差異)合成輸出即可得到邊緣成分圖 (a)。
圖(一)
圖(二)
參考資料:(https://medium.com/%E9%9B%BB%E8%85%A6%E8%A6%96%E8%A6%BA/%E9%82%8A%E7%B7%A3%E5%81%B5%E6%B8%AC-%E7%B4%A2%E4%BC%AF%E7%AE%97%E5%AD%90-sobel-operator-95ca51c8d78a)
(https://www.cnblogs.com/OoycyoO/p/8869158.html)
3.用二值化的方式(threshold())將灰階的影像轉換成黑白影像然後與邊緣成分圖 (a)相加(addWeighted())即可得到類似素描線條的自畫像圖案(b)。
(參考資料:https://steam.oxxostudio.tw/category/python/ai/opencv-threshold.html)
四.成品 :
https://youtu.be/f3-TRjTMNYw
留言
張貼留言