s1081539 作業4
主題:影像還原練習
說明:
附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜訊去除)。
1. 開發環境
- Windows 10
- Visual Studio 2019
- C++
- OpenCV 4.7.0
2. 實作
程式中有自訂幾個function,以下是幾個function的主要功能:
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/
留言
張貼留言