opencv DFT 離散傅立葉變換

shihyuyao 2011-03-12 10:08:35
int main(int argc, char* argv[]) 
{
unsigned int i;
CvMat* s = cvCreateMat(1,32,CV_32FC1);
CvMat* d = cvCreateMat(1,32,CV_32FC1);
CvMat* s2 = cvCreateMat(1,32,CV_32FC1);
for(i=0;i<32;i++)
cvSetReal2D(s,0,i,i);

//顯示一下輸入信號
for(i=0;i<32;i++)
printf("%6.2f ",cvGetReal2D(s,0,i));
printf(" ");

//DFT 離散傅立葉變換
cvDFT(s,d,CV_DXT_FORWARD); //CV_DXT_FORWARD 代表了正變換:空域-〉頻域

printf("The result of DFT: ");
for(i=0;i<32;i++)
printf("%6.2f ",cvGetReal2D(d,0,i));

//DFT 離散傅立葉逆變換
cvDFT(d,s2,CV_DXT_INVERSE); //逆變換
printf(" The result of IDFT: ");
for(i=0;i<32;i++)
printf("%6.2f ",cvGetReal2D(s2,0,i));
printf(" ");

system("pause");

return 0;
}



The result of DFT:

496.00 -16.00 162.45 -16.00 80.44 -16.00 52.74 -16.00 38.63 -16.00
29.93 -16.00 23.95 -16.00 19.50 -16.00 16.00 -16.00 13.13 -16.00
10.69 -16.00 8.55 -16.00 6.63 -16.00 4.85 -16.00 3.18 -16.00
1.58 -16.00





我用matlab fft 做出來實部部分不一樣

496.000000000000 + 0.00000000000000i
-16.0000000000000 + 162.450726201742i
-16.0000000000000 + 80.4374318740136i
-16.0000000000000 + 52.7449313430131i
-16.0000000000000 + 38.6274169979695i
-16.0000000000000 + 29.9338945886302i
-16.0000000000000 + 23.9456922026478i
-16.0000000000000 + 19.4960564094076i
-16.0000000000000 + 16.0000000000000i
-16.0000000000000 + 13.1308606532586i
-16.0000000000000 + 10.6908582067088i
-16.0000000000000 + 8.55217817521267i
-16.0000000000000 + 6.62741699796952i
-16.0000000000000 + 4.85354693771748i
-16.0000000000000 + 3.18259787807453i
-16.0000000000000 + 1.57586245371465i
-16.0000000000000 + 0.00000000000000i
-16.0000000000000 - 1.57586245371465i
-16.0000000000000 - 3.18259787807453i
-16.0000000000000 - 4.85354693771748i
-16.0000000000000 - 6.62741699796952i
-16.0000000000000 - 8.55217817521267i
-16.0000000000000 - 10.6908582067088i
-16.0000000000000 - 13.1308606532586i
-16.0000000000000 - 16.0000000000000i
-16.0000000000000 - 19.4960564094076i
-16.0000000000000 - 23.9456922026478i
-16.0000000000000 - 29.9338945886302i
-16.0000000000000 - 38.6274169979695i
-16.0000000000000 - 52.7449313430131i
-16.0000000000000 - 80.4374318740136i
-16.0000000000000 - 162.450726201742i



matlab 都是 -16 為什麼opencv 跟matlab fft 不一樣?

...全文
649 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧