一、作業要求:
邊緣偵測與製作線條自畫像 Edge Detection Contour Drawing撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I或Y處理,再轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成線條方式呈現更佳!)
二、使用的環境:
邊緣偵測與製作線條自畫像 Edge Detection Contour Drawing撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I或Y處理,再轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到的點,結合成線條方式呈現更佳!)
二、使用的環境:
- Windows10
- Python3.6
- Opencv-3.4
- Pyqt 5
三、特殊程式片段說明:
我給於使用者兩種方式來寫邊緣偵測分別是Sobel以及Scharr,讓使用者觀看哪種邊緣偵測是他們所需要的
Sobel的部分:
- 使用cv2.GaussianBlur()--->以減少雜訊
- 使用Sobel()--->分別水平及垂直的運算
- 使用convertScaleAbs()--->將圖片轉成CV_8U的型態
- 使用addWeighted()--->將垂直軸和水平軸的圖片分配權重,並結合在一起
Scharr的部分:
- 使用cv2.GaussianBlur()--->以減少雜訊
- 使用Scharr()--->分別水平及垂直的運算]
- 使用convertScaleAbs()--->將圖片轉成CV_8U的型態
- 使用addWeighted()--->將垂直軸和水平軸的圖片分配權重,並結合在一起
兩者的差別主要在於運算用的核不同,在測試的情況下Scharr效果較好
四、執行方式:
以Load鍵選取想要調整的圖片,並選取上方的radiobox選擇想要的邊緣偵測方式,再按下Save進行存檔。
五、執行結果:
- Load 圖片(彩圖)
- 選擇Sobel
- 選擇Scharr
- 分別save圖片
- Load 圖片(灰階圖)
沒有留言:
張貼留言