一、作業要求:
撰寫一個程式,讀取一張 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 |
沒有留言:
張貼留言