最終更新: mikk_ni3_92 2007年12月19日(水) 16:57:31履歴
現在地 >> メニュー >> サンプルコード::OpenCV >> OpenCV::離散フーリエ変換 >> OpenCV::離散フーリエ変換2
以下の2次元データを「2次元離散フーリエ変換」して、
それを再び「2次元逆フーリエ変換」をしてもどせ。
double data[3][3][2] =
{
{{0,0},{0,0},{1,0}},
{{1,0},{1,0},{1,0}},
{{0,0},{0,0},{0,0}}
};
その他条件:
逆フーリエ変換では、スケーリングすること。
→OpenCV::離散フーリエ変換3 (画像へのフーリエ)
#include <cv.h>
#include <highgui.h>
#include <cstdio>
using namespace std;
double data[3][3][2] =
{
{{0,0},{0,0},{1,0}},
{{1,0},{1,0},{1,0}},
{{0,0},{0,0},{0,0}}
};
int main( int argc, char **argv)
{
CvMat f = cvMat (3,3, CV_64FC2, &data[0][0]);
puts("------ Original -------");
for(int i = 0;i<18;i+=2)
printf("%f,%f \n",f.data.db[i],f.data.db[i+1]);
/* 離散フーリエ */
puts("------ DFT -------");
cvDFT(&f,&f,CV_DXT_FORWARD,f.rows);
for(int i = 0;i<18;i+=2)
printf("%f,%f \n",f.data.db[i],f.data.db[i+1]);
/* 逆離散フーリエ + スケーリング */
puts("------ IDFT and SCALING -------");
cvDFT(&f,&f,CV_DXT_INV_SCALE,f.rows);
for(int i = 0;i<18;i+=2)
printf("%f,%f \n",f.data.db[i],f.data.db[i+1]);
return 0;
}
CvMat構造体
http://opencv.jp/opencv/document/opencvref_cxcore_...
今回はdouble型で作成。
CV_64FC2(64ビットの2チャネル)を指定する。
以下の2次元データを「2次元離散フーリエ変換」して、
それを再び「2次元逆フーリエ変換」をしてもどせ。
double data[3][3][2] =
{
{{0,0},{0,0},{1,0}},
{{1,0},{1,0},{1,0}},
{{0,0},{0,0},{0,0}}
};
その他条件:
逆フーリエ変換では、スケーリングすること。
→OpenCV::離散フーリエ変換3 (画像へのフーリエ)
#include <cv.h>
#include <highgui.h>
#include <cstdio>
using namespace std;
double data[3][3][2] =
{
{{0,0},{0,0},{1,0}},
{{1,0},{1,0},{1,0}},
{{0,0},{0,0},{0,0}}
};
int main( int argc, char **argv)
{
CvMat f = cvMat (3,3, CV_64FC2, &data[0][0]);
puts("------ Original -------");
for(int i = 0;i<18;i+=2)
printf("%f,%f \n",f.data.db[i],f.data.db[i+1]);
/* 離散フーリエ */
puts("------ DFT -------");
cvDFT(&f,&f,CV_DXT_FORWARD,f.rows);
for(int i = 0;i<18;i+=2)
printf("%f,%f \n",f.data.db[i],f.data.db[i+1]);
/* 逆離散フーリエ + スケーリング */
puts("------ IDFT and SCALING -------");
cvDFT(&f,&f,CV_DXT_INV_SCALE,f.rows);
for(int i = 0;i<18;i+=2)
printf("%f,%f \n",f.data.db[i],f.data.db[i+1]);
return 0;
}
CvMat構造体
http://opencv.jp/opencv/document/opencvref_cxcore_...
今回はdouble型で作成。
CV_64FC2(64ビットの2チャネル)を指定する。