s1091550 作業3
題目敘述:
離散傅立葉轉換 DFT 練習
撰寫傅立葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還原後圖像。
開發環境:
- Windows 10
- Visual Studio 2019 C++
- OpenCV 4.2.0
步驟說明:
讀入圖片後,此程式可看作是分成三部分呈現: 頻譜圖、相位圖,及 還原後圖像 三項。以下逐步說明各部分之步驟:
- 頻譜圖
- getOptimalDFTSize()+copyMakeBorder(): 返回最佳尺寸並將邊界以0填充,可加快傅立葉轉換的計算速度
- merge() :建plannes數組,组合成一个多通道的數組,分别保存實部和虛部
- dft() :離散傅立葉轉換
- split() :將通道分離
- magnitude() :獲取幅度圖像
- 重新排列傅立葉圖像象限,使原點位於圖像中心
- 將ROI區域左上和右下、右上和左下分別互換位置
- log() :用對數尺度替換線性尺度
- normalize() :歸一化,將頻譜圖轉換為可圖的圖像格式
- imshow() :將結果顯示,如下圖
- 相位圖
- Sobel(): 計算梯度
- blur() : 進行卷積去噪
- phase(): 計算相位
- normalize(): 歸一化,將相位圖轉換為可圖的圖像格式
- imshow(): 將結果顯示,如下圖
- 還原後圖像
- 建plannes數組
- idft() :逆離散傅立葉轉換
- split() :將通道分離
- magnitude() :主要取實數通道
- normalize() :歸一化
- imshow() :將結果顯示,如下圖
留言
張貼留言