入力画像に対し2次元のFFTを行いその結果を画像として表示する例です。画像の中心に値が周波数0の位置となります。
元画像 | 2次元FFT処理の結果 | ローパスフィルタ適用 | ||
実行ファイルのダウンロード: ip_fft.exe
//----------------------------------------------------------------- // 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); } |