s1081539 作業4

主題:影像還原練習

說明:

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

1. 開發環境

  • Windows 10
  • Visual Studio 2019
  • C++
  • OpenCV 4.7.0

2. 實作

程式中有自訂幾個function,以下是幾個function的主要功能:
    (1) expand_img_to_optimal:對圖像做前置處理
      (2) fourier_transform:進行傅立葉轉換。
        (3) notchFilter:去除固定區域的噪音。
          (4) highpassFilter:只保留中心頻域,去掉大部分噪音。
            (5) crop_and_rearrange:對圖像進行重新排列。
              (6) showMagnitudeSpectrum:對頻譜圖做歸一化,並顯示圖片。
                Step1. 先以灰階模式(IMREAD_GRAYSCALE)讀入圖片並確認是否讀取成功。
                Step2. 在圖像讀取成功後,用function (2)進行傅立葉轉換,在function (2)中會呼叫function (1)為轉換做前置作業,接著就可以用dft()對圖像進行轉換。
                Step3. 用function(3)或function(4)產生遮罩,兩個function的差別在於function(3)只去掉小部分的含有噪音的頻域,成果會留下較多的細節,而function(4)是直接只保留中心最主要的頻域,其他部分就直接當噪音去除,出來的效果相對於function(3)來說,會比較乾淨,但也會比較模糊。
                Step4. 用mulSpectrums(),將前面得到的頻域圖與步驟3產生的遮罩進行相乘得到想要的成果。
                Step5. 接著呼叫function(5) 對圖像進行重新排列,再用function(6)將處理過的頻譜圖呈現。
                Step6. 最後就是呼叫idft()對處理過的頻譜圖進行圖像重建的動作,然後一樣要對圖像進行歸一化再呈現。

                結果

                • 影片連結

                High Pass Filter

                High Pass Filter的結果

                Notch Filter

                Notch Filter的結果

                參考資料

                DFT:
                https://blog.csdn.net/gxiaoyaya/article/details/72460483
                Phase:
                https://blog.csdn.net/long0801/article/details/77713797
                滑鼠定位:
                https://blog.csdn.net/weixin_45842951/article/details/122196799
                Filter:
                https://anothertechs.com/programming/cpp/opencv/opencv-low-high-pass-filter/





                留言

                這個網誌中的熱門文章

                rzwang Homework #1

                s1093350 Homework #2

                s1061637 作業6