2次元FFT

入力画像に対し2次元のFFTを行いその結果を画像として表示する例です。画像の中心に値が周波数0の位置となります。

元画像   2次元FFT処理の結果   ローパスフィルタ適用
   

実行ファイルのダウンロード: ip_fft.exe

 ダウンロード

2次元FFT(ip_fft.cpp)
//-----------------------------------------------------------------
// ip_fft.cpp:
//    FFT処理
//                Last Update: <2004/12/22 23:10:43 A.Murakami>
//-----------------------------------------------------------------
#include <windows.h>
#include "wingui.h"
#include "ipcommon.h"
#include "ipfft.h"
//-----------------------------------------------------------------
void toOrg();
void iFFT();
void iFilter();
//-----------------------------------------------------------------
// メニューへの追加内容
//-----------------------------------------------------------------
MenuInfo MI[] = {
    {"元画像",toOrg},
    {"2次元FFT",iFFT},
    {"フィルタ操作",iFilter},
    {NULL,NULL}
};
//-----------------------------------------------------------------
// 初期化関数
//-----------------------------------------------------------------
void IP_init(){}
//-----------------------------------------------------------------
// 元画像の表示
//-----------------------------------------------------------------
void toOrg() { CopyMemory(lpBMP,lpOrgBMP,iLength*iHeight); }
//-----------------------------------------------------------------
// 2次元FFTの実行
//-----------------------------------------------------------------
void iFFT()
{
    // 濃淡画像の取得
    LPBYTE iOrg=GetGray();
    LPBYTE iFFT=fft2image(iOrg);
    GrayToColor(iFFT,lpBMP);
    // 後片付け
    GlobalFree(iOrg);
    GlobalFree(iFFT);
}
//-----------------------------------------------------------------
// フィルタ操作
//-----------------------------------------------------------------
void iFilter()
{
    // 濃淡画像の取得
    LPBYTE iOrg=GetGray();
    LPBYTE iFFT=fft_filter(iOrg,0,0.3);
    GrayToColor(iFFT,lpBMP);
    // 後片付け
    GlobalFree(iOrg);
    GlobalFree(iFFT);
}
inserted by FC2 system