撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)
二、實作環境:window、python3、opencv、PyQt5、Numpy
三、實作方法:
- 將圖片平滑處理(GaussianBlur),以減少雜訊
- 圖片的色彩空間轉成YCrCb
- 對channel Y進行Sobel,得到sobelX、sobelY
- 將sobelX、sobelY轉成以CV_8的型態表示
- sobelX、sobelY進行組合,得到新的channel Y
- 新的channel Y代入原圖
- 將結果圖的色彩空間轉成BGR,再轉成GRAY,即可得到類似素描線條的圖
- 將類似素描線條的圖進行二值化(threshold)
- 利用二質化後的圖,得到contour(findContours)
- 將contour畫於全黑的圖上(drawContours),並轉為灰階得到最後結果
- 初始介面
- 按下Load選擇圖片
- 圖片結果展示(img1為利用Sobel偵測圖像邊緣;img2為嘗試以利用分析邊緣偵測所得到的點,結合成線條方式呈現)
- 按下Save1選擇儲存img1;按下Save2選擇儲存img2
- 儲存結果
沒有留言:
張貼留言