撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可,如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基礎,設計一個類似素描線條自畫像程式。
二、開發環境:
ide:pycharm,anaconda 4.4.0
圖像處理:open-cv 4.4.0
語言:python 3.6
三、操作方法:
- 將圖像文件和程式碼處在同一文件目錄下
- 輸入圖像文件名
- 等待程式輸出“Complete”以後,會在該目錄下生成result.png,即為處理過後的圖像
四、實現方法:
1. 讀入彩色圖片檔案
本程式用opencv讀入rgb彩色圖像
2. 將圖片轉化為灰度圖像
其中,每一個像素點的數值有公式 Gray = R*0.299 + G*
3. 對圖片用Sobel Operators進行卷積操作
Sobel Operators的卷積核為:
用兩個卷積核分別對圖像進行卷及操作,獲得兩張圖像
分別參考兩張圖像,對每一個相同坐標的像素點取最大值,生成一張合併後的圖像。
4. 減少圖像雜訊
將圖像反轉(像素值:反轉後 = 255 - 反轉前),原來處理後數值特別低的會接近255呈白色,而偵測出的額邊界則為黑色。
反轉後,所有接近白色的像素點(像素值大於或等於225)全部設定為255
完成後,圖像中還有很多零散的小黑點,為了除去這些雜訊,我檢查每一個像素點,如果其四周5X5的方格內,有不到10個點不是255,則被視為雜訊,設置其為255
5. 輸出處理後圖像
沒有留言:
張貼留言