图像处理基础(三)DFT与IDFT变换

article/2025/9/26 19:49:11

傅里叶变换(DFT)

首先来看看傅里叶(DFT)变换的公式
DCT变换公式 (1)

FP=\frac {1}{N}\sum_{x=0}^{N-1}\sum_{y=0}^{N-1}P_{x,y}\exp(-j(\frac{2 \pi}{N})(ux+vy))

幅度
(2)

w=\sqrt{u^2+v^2}

其中
u,v代表空间频率,即灰度梯度,梯度由坐标与灰度值求导的向量
w代表 振幅幅度
N代表 灰度像素点总数
Pxy代表 当前像素点灰度
x,y代表 当前像素点的灰度值

在看图像处理的时候可能会很迷茫,作为波形分析的傅里叶变换怎么会有傅里叶变换,图像的傅里叶变换中,T是什么,为什么会有时域?抱着这个问题,先来理解下下面这段话。

图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯
度。傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅

立叶逆变换是将图像的频率分布函数变换为灰度分布函数。

可知,图像是没有事件变化的,只有对x,y轴上的像素变化,与时域对应,叫做图像的空间域。
空间域 (spatial domain) 释义: 又称图像空间(image space)。由图像像元组成的空间。在图像空间中以长度(距离)为自变量直接对像元值进行处理称为空间域处理。
频率域 spatial frequency domain 释义: 以频率(即波数)为自变量描述图像的特征,可以将一幅图像像元值在空间上的变化分解为具有不同振幅、空间频率和相位的简振函数的线性叠加,图像中各种频率成分的组成和分布称为空间频谱。这种对图像的频率特征进行分解、处理和分析称为频率域处理或波数域处理。

初始化定义

#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#define VALUE_MAX 255
#define WIDTH 5
#define HEIGHT 5
#define M_PI 3.1415926535897932
struct Complex_{double real;//实部double imagin;//虚部
};
typedef struct Complex_ Complex;

随机数据初始化


int Initdata(double (*src)[WIDTH],int size_w,int size_h){srand((int)time(0));for(int i=0;i<size_w;i++){for(int j=0;j<size_h;j++){src[i][j]=rand()%VALUE_MAX;printf("%lf ",src[i][j]);}printf(";\n");}return 0;
}

2维傅里叶变换函数

//2维傅里叶变换函数
int DFT2D(double (*src)[WIDTH],Complex (*dst)[WIDTH],int size_w,int size_h){for(int u=0;u<size_w;u++){for(int v=0;v<size_h;v++){double real=0.0;double imagin=0.0;for(int i=0;i<size_w;i++){for(int j=0;j<size_h;j++){double I=src[i][j];double x=M_PI*2*((double)i*u/(double)size_w+(double)j*v/(double)size_h);real+=cos(x)*I;imagin+=-sin(x)*I;}}dst[u][v].real=real;dst[u][v].imagin=imagin;if(imagin>=0)printf("%lf+%lfj ",real,imagin);elseprintf("%lf%lfj ",real,imagin);}printf(";\n");}return 0;
}

逆傅里叶变换(IDFT)

2维度逆傅里叶变换函数

//2维逆傅里叶变换函数
int IDFT2D(Complex (*src)[WIDTH],Complex (*dst)[WIDTH],int size_w,int size_h){for(int i=0;i<size_w;i++){for(int j=0;j<size_h;j++){double real=0.0;double imagin=0.0;for(int u=0;u<size_w;u++){for(int v=0;v<size_h;v++){double R=src[u][v].real;double I=src[u][v].imagin;double x=M_PI*2*((double)i*u/(double)size_w+(double)j*v/(double)size_h);real+=R*cos(x)-I*sin(x);imagin+=I*cos(x)+R*sin(x);}}dst[i][j].real=(1./(size_w*size_h))*real;dst[i][j].imagin=(1./(size_w*size_h))*imagin;if(imagin>=0)printf("%lf+%lfj ",dst[i][j].real,dst[i][j].imagin);elseprintf("%lf%lfj ",dst[i][j].real,dst[i][j].imagin);}printf(";\n");}return 0;
}

测试函数

int main() {double src[WIDTH][HEIGHT];Complex dst[WIDTH][HEIGHT];Complex dst_[WIDTH][HEIGHT];Initdata(src, WIDTH, HEIGHT);printf("\n\n");DFT2D(src,dst,WIDTH,HEIGHT);printf("\n\n");IDFT2D(dst,dst_,WIDTH,HEIGHT);
}

http://chatgpt.dhexx.cn/article/ypENsmrO.shtml

相关文章

第4章 Python 数字图像处理(DIP) - 频率域滤波7 - 二维DFT和IDFT的一些性质 - 傅里叶频谱和相角

目录 二维DFT和IDFT的一些性质傅里叶频谱和相角 二维DFT和IDFT的一些性质 傅里叶频谱和相角 F ( u , v ) R ( u , v ) j I ( u , v ) ∣ F ( u , v ) ∣ e j ϕ ( u , v ) (4.86) F(u, v) R(u, v) jI(u, v) |F(u, v)|e^{j\phi(u,v)} \tag{4.86} F(u,v)R(u,v)jI(u,v)∣F(…

实数序列频谱的共轭对称性(DFT与IDFT仿真实现)

一、基础知识 1、傅里叶变换&#xff1a;通俗来讲&#xff0c;是以时间为自变量的信号与以频率为自变量的“频谱函数”之间的某种转换关系。 DFT&#xff1a;即离散傅里叶变换&#xff0c;对离散序列进行傅里叶变换。设x(n)为长度为M的有限长序列&#xff0c;其N点DFT定义(公…

第4章 Python 数字图像处理(DIP) - 频率域滤波8 - 二维DFT和IDFT的一些性质 - 二维离散卷积定理

目录 二维DFT和IDFT的一些性质二维离散卷积定理二维离散傅里叶变换性质的小结 二维DFT和IDFT的一些性质 二维离散卷积定理 二维循环卷积表达式&#xff1a; ( f ⋆ h ) ( x , y ) ∑ m 0 M − 1 ∑ n 0 N − 1 f ( m , n ) h ( x − m , y − n ) (4.94) (f \star h)(x, …

FFT学习笔记(DFT,IDFT)

昨天参悟了一天FFT,总算是理解了&#xff0c;今天的莫比乌斯反演也不太懂&#xff0c;干脆弃疗&#xff0c;决定来认真水一发博客。 什么是FFT&#xff1f; FFT&#xff08;Fast Fourier Transformation&#xff09;&#xff0c;即为快速傅氏变换&#xff0c;是离散傅氏变换&…

【OpenCV4】图像的傅里叶变换 cv::dft() 和逆变换 cv::idft() 解析(c++)

图像傅里叶变换的作用&#xff1a; 频谱分析&#xff0c;获取图像中高频低频的分布情况快速卷积&#xff0c;两个矩阵的傅里叶变换结果相乘 案例代码&#xff1a; cv::Mat TestOpencvDft() {cv::Mat lena cv::imread("lena.jpg", 0);cv::resize(lena, lena, cv::…

Matlab如何进行利用离散傅里叶逆变换iDFT 从频谱恢复时域信号

文章目录 1. 定义2. 变换和处理3. 函数4. 实例演示例1&#xff1a;单频正弦信号&#xff08;整数周期采样&#xff09;例2&#xff1a;含有直流分量的单频正弦信号例3&#xff1a;正弦复合信号例4&#xff1a;含有随机干扰的正弦信号例5&#xff1a;实际案例 5. 联系作者 1. 定…

离散傅里叶变换(DFT/IDFT、FFT/IFFT)运算量的讨论

前言&#xff1a;关于为什么要写这个博客 最近在重新看《合成孔径雷达成像 算法与实现》这本书&#xff0c;看到“离散傅里叶变换记其逆变换的运算量级为”这句话&#xff0c;就想起当初在学《数字信号处理》中FFT那章节时&#xff0c;书中有对比DFT和FFT的运算量的一些文字&am…

OpenCV-离散傅里叶变换cv::dftcv::idft

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 函数原型 void dft(InputArray src, OutputArray dst, int flags 0, int nonzeroRows 0); void idft(InputArray src, Output…

12点的idft c语言,【整理】用IDFT实现UF-OFDM和OFDM的模拟调制

cooperate with Liu Lei 用IDFT实现OFDM的代码如下&#xff1a; N32; xrandint(1,N,[0 3]); x1qammod(x,4); f1:N; t0:0.001:1-0.001; w2*pi*f.*t; % w12*pi*(f0.2).*t; y1x1*exp(j*w);%子载波调制 x2ifft(x1,N); %ifft figure(1); plot(t,abs(y1)); hold on; stem(0:1/N:1-1/N…

离散傅立叶变换推导(DF、IDFT)

mazonex离散傅立叶变换视频笔记 需要先了解傅里叶变换推导(FT、IFT) 本文仅作为笔记&#xff0c;推导思想和图片来自视频 周期为 2 π 2\pi 2π的函数的复数形式展开(傅里叶级数) 在上一篇文章中part4中提到周期 T 2 L T2L T2L函数的复数形式展开为&#xff1a; f ( t ) ∑…

浅谈傅里叶——8. 一维iDFT的实现

这是本系列的最后一章&#xff0c;原先计划是把这部分内容一并挪到上一章里的&#xff0c;不过喜欢凑一个整数&#xff0c;而且想骗一点流量&#xff0c;所以把它们拆成了两部分。我们在前面的内容中&#xff0c;通过使用不同的频率信号对原始信号进行采样&#xff0c;从而分析…

idft重建图像 matlab_1周学FFT——第2天 DFT和IDFT的MATLAB实现

根据定义式&#xff0c;可写出DFT的MATLAB代码如下[从玉良&#xff0c;2009&#xff0c;p72]&#xff1a; function [f, Xk] mydft(xn, fs, N) % DFT n [0:1:N-1]; k n; WN exp(-j*2*pi/N); nk n * k; % N^2 times multiply Xk xn(1:N) * WN.^nk; % N^3 times multiply f …

FT,DTFT,DFT,IDFT,FFT含义

1.傅立叶变换FT(Fourier Transform) 性质&#xff1a;时域连续&#xff0c;频域连续 周期信号只有傅立叶级数&#xff0c;严格意义上讲&#xff0c;没有傅立叶变换&#xff1b;但可以令周期信号的周期趋于无穷大&#xff0c;这样&#xff0c;将周期信号变为非周期信号&#x…

DFT与IDFT

DFT与IDFT 一.方法简介 序列x(n)(n0,1,…N-1)的DFT定义为 X &#xff08; k &#xff09; ∑ n 0 N − 1 x ( n ) e − j 2 π n k N X&#xff08;k&#xff09;\sum_{n0}^{N-1}x(n)e^{-j\frac{2\pi nk}{N}} X&#xff08;k&#xff09;n0∑N−1​x(n)e−jN2πnk​ 设 x …

IDFT的python实现

IDFT IDFT(Inverse Discrete Fourier Transform), 傅里叶逆变换&#xff0c;可以将频域信号转换到时域中, 它的公式非常简单&#xff1a; x [ n ] 1 N ∑ k 0 N − 1 X [ k ] e j 2 π k n / N x[n] \frac{1}{N} \sum_{k0}^{N-1} X[k] e^{j2\pi kn/N} x[n]N1​k0∑N−1​X…

一文搞懂:FT、DTFT、DFT、IDFT

一文搞懂&#xff1a;FT、DTFT、DFT、IDFT 写在前面一切为了计算机的处理推导步骤 总结 写在前面 近期重温了一下可爱的数字信号处理&#xff0c;又回想起当初被 FT、DTFT、DFT、IDFT 这几兄弟折腾的傻傻分不清的日子&#xff0c;今天特地在此对它们进行一个梳理。 珠玉在前&a…

LDUOJ spj 修改

特判使用教程 感谢涛巨 记录一下&#xff0c;省的以后忘记了。 /* Utility functions for writing output validators for the Kattis* problem format.** The primary functions and variables available are the following.* In many cases, the only functions needed are …

noip 2022 第二题 喵了个喵 meow 在 Lemon LemonLime 中 SPJ Special Judge 测评 配置 设置

noip 2022 第二题 喵了个喵 meow 在 Lemon LemonLime 中 SPJ Special Judge 测评配置设置 比赛目录如下&#xff1a; 用户程序(meow.cpp)如下&#xff1a; #include <bits/stdc.h> using namespace std;template<typename T> inline void read(T &x) {x 0; …

数据库例题(创建数据库SPJ包含S、P、J和SPJ表)

目录 运行说明 例题 例题解答 运行说明 1、运行环境&#xff1a;win10 2、所需步骤&#xff1a; &#xff08;1&#xff09; 通过PowerDesigner软件创建逻辑数据模型(CDM)&#xff0c;再将其转换为物理数据模型(PDM)&#xff0c;再导出为SQL语句。 &#xff08;2&#xff…

Lemon LemonLime 中 SPJ Special Judge 使用 实践 入门 a

精度需要SPJ 入门&#xff1a; 题目&#xff0c;以整数形式给定圆的半径&#xff0c;输出该圆的周长&#xff0c;该圆的面积。 比赛目录如下&#xff1a; 标准输入输出数据如下&#xff1a; circle1.in 1 circle1.ans 6.283185 3.141593 circle2.in 2 circle2.ans 12.566370 12…