cvDFT

来源:互联网 发布:mac安装dmg文件失败 编辑:程序博客网 时间:2024/06/14 10:32

傅里叶变换是复数域变换。而一个复数在openCV中需要用双通道来表示,第一通道表示实部,第二通道表示虚部。

如  复数1+2i,1保存在第一通道,2保存在第二通道。


代码示例:

// cvDFT.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <cv.h>
#include <highgui.h>
#ifdef _DEBUG
#pragma comment(lib,"opencv_imgproc220d.lib")
#pragma comment(lib,"opencv_core220d.lib")
#pragma comment(lib,"opencv_highgui220d.lib")
#else
#pragma comment(lib,"opencv_imgproc220.lib")
#pragma comment(lib,"opencv_core220.lib")
#pragma comment(lib,"opencv_highgui220.lib")
#endif


float data1[]={
1,2,
3,4
};


void Show_Mat2D(CvArr* mat,int row,int col);
void main()
{
CvMat *mat_src,*mat_dst,*mat_test1,*mat_test2;
mat_src=cvCreateMat(2,2,CV_32FC2);
mat_dst=cvCreateMat(2,2,CV_32FC2);
mat_test1=cvCreateMat(2,2,CV_32FC1);
mat_test2=cvCreateMat(2,2,CV_32FC1);
cvZero(mat_src);
cvZero(mat_dst);
cvZero(mat_test1);
cvZero(mat_test2);
cvSetData(mat_test1,data1,mat_test1->step);
cvMerge(mat_test1,mat_test2,NULL,NULL,mat_src);/////////至此mat_src完成初始化,
//第一通道为实部,数据为data1,第二通道为虚部,全部为0
///////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////正变换测试
cvDFT(mat_src,mat_dst,CV_DXT_FORWARD);
cvSplit(mat_dst,mat_test1,mat_test2,NULL,NULL);/////将变换之后的实部虚部分开
printf("********************正变换结果:\n");


printf("实部为:\n");
Show_Mat2D(mat_test1,2,2);
printf("虚部为:\n");
Show_Mat2D(mat_test2,2,2);


/////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////反变换测试,将mat_dst反变换回去。
cvZero(mat_src);
cvDFT(mat_dst,mat_src,CV_DXT_INV_SCALE);////////////反变换


cvSplit(mat_src,mat_test1,mat_test2,NULL,NULL);/////将反变换后的实部虚部分开
printf("************反变换结果:\n");
printf("实部为:\n");
Show_Mat2D(mat_test1,2,2);
printf("虚部为:\n");
Show_Mat2D(mat_test2,2,2);
return ;
}


void Show_Mat2D(CvArr* mat,int row,int col)
{
int i,j;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%.3f   ",cvGet2D(mat,i,j).val[0]);
}
printf("\n");
}
}

0 0
原创粉丝点击