离散傅里叶变换2 用标记方法而不是归一化

核心函数:cvDFT

程序:

代码:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int DFT2(int argc,char** argv)  //离散傅里叶变换(Discrete Fourier Transform,缩写为DFT)
{
IplImage* src=cvLoadImage("e:\\picture\\4.jpg",0);
IplImage* Src32F=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);
IplImage* Dst32F=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);
IplImage* Dst32F_Inverse=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);
IplImage* DFTResult_32F=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);
IplImage* DFTResult=cvCreateImage(cvGetSize(src),8,1);
IplImage* src2=cvCreateImage(cvGetSize(src),8,1);
cvConvertScale(src,Src32F);
cvDFT(Src32F,Dst32F,CV_DXT_FORWARD);
cvDFT(Dst32F,Dst32F_Inverse,CV_DXT_INVERSE | CV_DXT_SCALE); //用CV_DXT_SCALE即可不做归一化处理
cvConvertScale(Dst32F_Inverse,src2);
//对傅里叶变换结果进行归一化以显示结果
double MaxVal=0;
double MinVal=0;
cvMinMaxLoc(Dst32F,&MinVal,&MaxVal);
double scale=255/(MaxVal-MinVal);
double shift=-MinVal*scale;
cvConvertScale(Dst32F,DFTResult_32F,scale,shift);
//把归一化的福利叶变换结果转换为8位以便显示
cvConvertScale(DFTResult_32F,DFTResult);
cvMinMaxLoc(DFTResult,&MinVal,&MaxVal);
std::cout<<"DFTResult Max:"<<MaxVal<<"DFTResult Max:"<<MinVal<<std::endl;
cvNamedWindow("src");
cvNamedWindow("src2");
cvNamedWindow("DFTResult");
cvShowImage("src",src);
cvShowImage("src2",src2);
cvShowImage("DFTResult",DFTResult);
cvWaitKey(0);
cvDestroyWindow("src");
cvDestroyWindow("src2");
cvDestroyWindow("DFTResult");
cvReleaseImage(&src);
cvReleaseImage(&src2);
cvReleaseImage(&DFTResult);
return 0;
}

离散傅里叶变换2 用标记方法而不是归一化

时间: 2024-10-05 10:20:46

离散傅里叶变换2 用标记方法而不是归一化的相关文章

[傅里叶变换及其应用学习笔记] 二十. 离散傅里叶变换的定义

DFT 离散傅里叶变换有定义如下 有离散信号$\underline{f}=\left( \underline{f}[0],\underline{f}[1],…,\underline{f}[N-1] \right)$,它的DFT是离散信号$\underline{\mathcal{F}f}\left( \underline{\mathcal{F}f}[0],\underline{\mathcal{F}f}[1],…,\underline{\mathcal{F}f}[N-1] \right)$ $\u

Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)

我是做Tracking 的,对于速度要求很高.发现傅里叶变换可以使用.于是学习之! 核心: 最根本的一点就是将时域内的信号转移到频域里面.这样时域里的卷积可以转换为频域内的乘积! 在分析图像信号的频率特性时,对于一幅图像,直流分量表示预想的平均灰度,低频分量代表了大面积背景区域和缓慢变化部分,高频部分代表了它的边缘,细节,跳跃部分以及颗粒噪声.  因此,我们可以做相应的锐化和模糊的处理:提出其中的高频分量做傅里叶逆变换得到的就是锐化的结果.提出其中的低频分量做傅里叶逆变换得到的就是模糊的结果.

灰度图像--频域滤波 傅里叶变换之二维离散傅里叶变换

学习DIP第24天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 开篇废话 今天要记录的是二维离散傅里叶变换的一些性质,也是傅里叶在图像处理中要用到的一些性质,所以

脉冲压缩与离散傅里叶变换学习心得

脉冲压缩理论在雷达测绘领域应用十分广泛,借助脉冲压缩工具可以提高探测的分辨率.信噪比和隐蔽性.可以使用傅里叶变换对信号进行脉冲压缩,在控制理论.信号处理等领域中,傅里叶变换是十分有效的工具,借助傅里叶变换可以简化许多复杂的时域计算.由于现在都是使用基于数字处理的PC工具进行分析计算,只有离散傅里叶变换(DFT)才真正具有实用价值. 脉冲压缩思想基于如下几点: (1)信号S可以分解为若干个正交函数f(1).f(2).--.f(n),其中n为采样点数: (2)f(1).f(2).--.f(n)的起始

离散傅里叶变换(Discrete Fourier Transform,缩写为DFT)

核心函数: cvDFT 程序: 代码: #include "cv.h" #include "cxcore.h" #include "highgui.h" #include <iostream> int DFT(int argc,char** argv)  //离散傅里叶变换(Discrete Fourier Transform,缩写为DFT) { IplImage* src=cvLoadImage("e:\\picture\

c语言数字图像处理(六):二维离散傅里叶变换

基础知识 复数表示 C = R + jI 极坐标:C = |C|(cosθ + jsinθ) 欧拉公式:C = |C|ejθ 有关更多的时域与复频域的知识可以学习复变函数与积分变换,本篇文章只给出DFT公式,性质,以及实现方法 二维离散傅里叶变换(DFT) 其中f(x,y)为原图像,F(u,v)为傅里叶变换以后的结果,根据欧拉公式可得,每个F(u,v)值都为复数,由实部和虚部组成 代码示例 1 void dft(short** in_array, double** re_array, doubl

浅谈快速离散傅里叶变换的实现

在运用之前我们需要知道他是什么?是怎么来的?怎么去应用. 傅立叶变换是一种分析信号的方法,它可分析信号的组成成分,也可用这些成分合成信号.许多波形可作为信号的成分,比如正弦波.方波.锯齿波等,傅立叶变换用正弦波作为信号的组成成分,在时域他们是相互重叠在一起的,我们需要运用傅里叶变换把他们分开并在频域显示出来. 连续傅里叶变换(Fourier Transform)如下: 连续傅里叶变换的反变换为: 满足傅里叶变换的条件是f(t)在整个定义域是绝对可积的(不发散),只有这样积分才有效. 快速傅里叶变

补零与离散傅里叶变换的分辨率

离散傅里叶变换(DFT)的输入是一组离散的值,输出同样是一组离散的值.在输入信号而言,相邻两个采样点的间隔为采样时间Ts.在输出信号而言,相邻两个采样点的间隔为频率分辨率fs/N,其中fs为采样频率,其大小等于1/Ts,N为输入信号的采样点数.这也就是说,DFT的频域分辨率不仅与采样频率有关,也与信号的采样点数有关.那么,如果保持输入信号长度不变,但却对输入信号进行补零,增加DFT的点数,此时的分辨率是变还是不变? 答案是此时分辨率不变.从时域来看,假定要把频率相差很小的两个信号区分开来,直观上

[傅里叶变换及其应用学习笔记] 二十一. 离散傅里叶变换的矩阵定义,一些性质

DFT在零点 $\underline{\mathcal{F}}\underline{f}(0) = \displaystyle{ \sum_{n=0}^{N-1}\underline{f}[n]e^{-2\pi i\frac{n0}{N}} = \sum_{n=0}^{N-1}\underline{f}[n] }$ 还记得傅里叶变换在零点处也有类似的式子 $\mathcal{F}f(0) = \displaystyle{ \int_{-\infty}^{\infty}f(t)e^{-2\pi i