s1091647 作業3
作業三 傅立葉轉換
功能
撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還
原後圖像。
開發環境
- Win10
- C++
- Open CV 4.6.0
- VS 2022
程式實作
頻譜大小:
1.先用imread灰階模式讀入圖片
2.利用getOptimalDFTSize()取得DFT的最佳尺寸,並用copyMakeBorder()將邊緣補0
3.merge()合併通道,形成一個2通道的複數影像
4.dft() DFT轉換
5.split() 分離通道
6.magnitude()計算幅值圖像並用log取對數,再取log先加一防止log0出現
7.將圖像重新排列
8.normalize()正規化圖像
9.將正規化的圖像轉成8位元後輸出
2.利用getOptimalDFTSize()取得DFT的最佳尺寸,並用copyMakeBorder()將邊緣補0
3.merge()合併通道,形成一個2通道的複數影像
4.dft() DFT轉換
5.split() 分離通道
6.magnitude()計算幅值圖像並用log取對數,再取log先加一防止log0出現
7.將圖像重新排列
8.normalize()正規化圖像
9.將正規化的圖像轉成8位元後輸出
相位角度:
1.phase()取相位
2.normalize()正規化圖像
3.將正規化的圖像轉成8位元後輸出
逆傅立葉轉換:
1.idft()進行反傅立葉轉換
2.split() 分離通道,並用magnitude()計算幅值圖像
3.normalize()正規化到0~255以顯示,最後轉換成8位元後輸出
執行結果
逆傅立葉轉換
留言
張貼留言