作業說明:
計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
對圖像利用Gaussian
Low-Pass filter處理,輸出平滑後圖像。
程式利用課本的frequency
filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。
使用環境/語言:
Windows11
Visual Studio
2019
Opencv-4.1.0
C++
實作方法(執行步驟):
1. 輸入圖片路徑後imread()讀入圖片
2. Mat.empty()判斷圖片是否存在
3. 若圖片不存在或發生例外時輸出錯誤訊息並結束程式
4. 將新尺寸圖片的型態換成CV_32FC1
5.利用高斯低通濾波器的函數定義,求出高斯低通濾波器
6.利用dft算出新尺寸的圖片的複數值,然後將複數值拆成實數和虛數
7.利用magnitude將實數和虛數轉成振幅,再將振幅值轉成對數,用normalize將對數做歸一化
8.用Phas將實數和虛數轉成相位角度值,用normalize將相位角度值做歸一化
9.用multiply將高斯低通濾波器與實數和虛數 互相做卷積,再用merge組成新的複數
10.用idft將複數轉換成新的複數,再用split將新的複數拆成新的實數和虛數
11.用magnitude將實數和虛數轉換成新振幅
12.用normalize將振幅做歸一化,再轉換成原圖的尺寸
實作結果:
原圖
頻譜圖
相位角圖
平滑圖
參考資料:
l
https://blog.csdn.net/cyf15238622067/article/details/87918125
l
https://blog.csdn.net/yuandm819/article/details/79897868
l
https://blog.csdn.net/jerwey/article/details/103991174
l
https://www.twblogs.net/a/5c761cffbd9eee31cea509be
l
https://www.twblogs.net/a/5b820dc82b71772165af693c
l
https://iter01.com/541551.html
沒有留言:
張貼留言