2021年3月28日 星期日

s1061448 影像處理作業2

        一、作業題目: 

    撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可,如全彩圖像可先將圖片由 RGB 轉換至灰階影像),利用 Sobel Operators 圖像邊緣為基礎,設計一個類似素描線條自畫像程式。
 
        二、開發環境: 

    作業系統:Windows 10 
    ide:pycharm,anaconda 4.4.0
    圖像處理:open-cv 4.4.0
    語言:python 3.6

        三、操作方法:

  1. 將圖像文件和程式碼處在同一文件目錄下 
  2. 輸入圖像文件名 
  3. 等待程式輸出“Complete”以後,會在該目錄下生成result.png,即為處理過後的圖像

        四、實現方法:


    1. 讀入彩色圖片檔案

        本程式用opencv讀入rgb彩色圖像 

    2. 將圖片轉化為灰度圖像

        其中,每一個像素點的數值有公式 Gray = R*0.299 + G*0.587 + B*0.114 運算得到。

    3. 對圖片用Sobel Operators進行卷積操作

        Sobel Operators的卷積核為:

   X:    Y:

        用兩個卷積核分別對圖像進行卷及操作,獲得兩張圖像

        分別參考兩張圖像,對每一個相同坐標的像素點取最大值,生成一張合併後的圖像。

    4. 減少圖像雜訊

       將圖像反轉(像素值:反轉後 = 255 - 反轉前),原來處理後數值特別低的會接近255呈白色,而偵測出的額邊界則為黑色。

       反轉後,所有接近白色的像素點(像素值大於或等於225)全部設定為255

       完成後,圖像中還有很多零散的小黑點,為了除去這些雜訊,我檢查每一個像素點,如果其四周5X5的方格內,有不到10個點不是255,則被視為雜訊,設置其為255

    5. 輸出處理後圖像

    

五、最終效果: 



原圖像                          

Sobel處理(x)                

Sobel處理(y)                

結合兩次Sobel處理結果

黑白反轉                        

去除雜訊                         


沒有留言:

張貼留言