2019年4月2日 星期二

s1051531的作業2

一、作業要求:

撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)

二、使用環境:

  • windows10
  • Visual Studio 2017
  • opencv-3.4.

三、特殊程式片段:

  • GaussianBlur(): 高斯平滑去除雜訊
  • Sobel(): 分別對x、y軸進行計算
  • convertScaleAbs():  把圖像轉成CV_8U
  • addWeighted(): 將垂直及水平分配權重並結合

四、實作方法:

讀入一張圖檔後,先利用高斯平滑去除雜訊,再利用Sobel()分別計算x、y軸進行運算得到像素的梯度,使用Sobel()時,為了避免發生saturate,所以通常輸入圖的深度為CV_8U,輸出圖深度會使用CV_16S,因此之後需要用convertScaleAbs()把圖像轉回CV_8U,最後利用addWeighted()將垂直及水平分配權重並結合成最後的線條圖。

五、執行畫面:

執行畫面(左原圖,右線條圖)

線條圖存檔成output.jpg


沒有留言:

張貼留言