s1093306 作業2

一.作業說明 :

撰寫一個程式將一張圖像的 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) 
(a)利用 Sobel Operators 偵測並輸出邊緣成分圖 
(b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合成看似素描筆畫出的線條?)

二.開發環境 : 

  • 作業系統:    Windows10
  • 編譯器:     Visual Studio 2019
  • 程式語言:    C++
  • OpenCV版本:   4.7.0 

 三.程式說明 :

  1. 先用 imread(path, IMREAD_GRAYSCALE)(IMREAD_GRAYSCALE也可以用0) 讀取灰階圖。
  2. 利用 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)
 四.成品 :
原圖

                                                                               灰階圖

由左至右分別為(add()邊緣成分圖,addWeighted()邊緣成分圖)

由左至右分別為(add()素描圖,addWeighted()素描)

 五.影片 :
https://youtu.be/f3-TRjTMNYw


留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1081444 Homework #7