一、作業要求
撰寫一個程式,讀取一張 256 色灰階圖像。計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。
二、原理
傅立葉轉換常用在分析各種濾波器的特性。可以是用2D離散傅立葉轉換分析影像的頻域特性。
實現2D離散傅立葉轉換(DFT)的演算法叫做快速傅立葉轉換(FFT),對影像進行x方向和y方向的傅立葉轉換,會得到影像的頻域表示圖。程式將影像進行傅立葉轉換,得到頻譜,再從頻譜進行逆向傅立葉轉換,得到原始圖。
- Windows 10
- Visual Studio 2015
- Opencv 3.2
四、特殊程式片段註解
- getOptimalDFTSize(inputImg.rows); //m為大於等於inputImg.rows裡的最小值,且須為2、3、5的次方相乘
- magnitude(planes[0], planes[1], planes[0]); //planes[0] = sqrt((planes[0])^2 + (planes[1])^2
五、環境設置
- 設置opencv3.2後引入opencv2/opencv.hpp和conio.h
六、執行結果
原圖
逆向dft求原圖
七、參考資料
http://monkeycoding.com/?tag=dft
沒有留言:
張貼留言