s1091707 作業4

   作業說明:

影像還原練習 附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜 訊去除)。

執行環境:

  • windows11
  • Opencv 4.6.0
  • Python 3.10.2
  • Vscode
實作方法:
  • 使用opencv內建函數完成
  1. 首先,用imread函式讀入圖片。
  2. 計算長高,將圖片padding to 2的次方,確保稍後傅立葉轉換的準確性。

  3. 再來,使用dft轉換前須先將影像轉成float32格式,以及使用DFT_COMPLEX_OUTPUT來設定回傳值為複數陣列,其兩個通道,一個為實數部分,一個為虛數部分


  4. 為了處理方便將原本0頻率分量從左上角移至中央。


  5. 用cv2.cartToPolar 函式來做複數到極座標的轉換函式,分別獲得振幅和相位兩個陣列。




     6.將magnitud頻譜資訊 mag 轉換為以 dB 為單位的頻譜資訊,為了更方便地觀察和分析         頻譜
    



     7. 用mousecallback function,將觀察到的bright spots 圖成黑點做為記號,並將xy軸存       入list中。
     
     8.創建mask,將剛才紀錄的座標塗上圓點再與magnitude做計算,有塗點的地方改白色。

       
     9.進行逆傅立葉轉換前,先將零頻率分量恢復到原來的位置
    
     10.再進行逆傅立葉轉換
     11.在進行逆傅立葉後,獲得的值仍舊是複數,需使用MAGNITUDE計算其幅度,並將            padding的地方去除掉,得到原始大小的圖片



     12.正規化,用0到1之間的浮點值將矩陣變換為可視的影像格式
    
     13.做高斯濾波進行降躁
     14.convertScaleAbs調整亮度與對比度,讓圖片更亮些

執行結果:
frequency spectrum:


thresh後顯示出明顯有亮點的地方:

mask的圖:

去除雜訊並還原後的圖:


Enhanced後的圖:










留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1