s1083513 作業3
一、作業主題: 離散傅立葉轉換 DFT 練習
撰寫傅立葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還原後圖像。
二、開發環境
Windows
10 / Visual Studio 2022 C++ / OpenCV 4.7.0
三、實作方法
1. imread() 讀取灰階圖像
2. 擴展圖像到合適尺寸,使DFT轉換得到更高的處理效率:
getOptimalDFTSize()返回最佳尺寸
copyMakeBorder()添加邊緣像素
3. 分配傅立葉轉換結果的存儲空間:
merge() 合併建立複數(實數/虛數部分)矩陣
4. dft() 進行Forward Fourier Transform
idft()進行Inverse Fourier Transform
split() 拆分實部及虛部,將複數轉換爲幅度
magnitude()生成頻譜圖
phase() 生成相位圖
5. log() 將幅度進行對數縮小
6. 重新分佈幅度圖象限位置:
copyTo() 調換對角區域
7. normalize() 將幅度歸一化到可顯示範圍
8. imshow() 顯示視窗圖像
四、執行結果
留言
張貼留言