目录

一、理论基础

1.1二维FFT变换

1.2窗函数

二、核心程序

三、测试结果


一、理论基础

1.1二维FFT变换

以下公式定义 m×n 矩阵 X 的离散傅里叶变换 Y:

ωm 和 ωn 是复单位根:

i 是虚数单位,p 和 j 是值范围从 0 到 m–1 的索引,q 和 k 是值范围从 0 到 n–1 的索引。在此公式中,X 和 Y 的索引平移 1 位,以反映 MATLAB® 中的矩阵索引。

计算 X 的二维傅里叶变换等同于首先计算 X 每列的一维变换,然后获取每行结果的一维变换。换言之,命令 fft2(X) 等同于 Y = fft(fft(X).').'。

二维傅里叶变换:

二维傅里叶逆变换:

在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。最初傅里叶分析是作为热过程的解析分析的工具被提出的。

图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅里叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅里叶变换就表示f的谱。从纯粹的数学意义上看,傅里叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅里叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数。

1、图像经过二维傅里叶变换后,其变换系数矩阵表明:

若变换矩阵Fn原点设在中心,其频谱能量集中分布在变换系数短阵的中心附近(图中阴影区)。若所用的二维傅里叶变换矩阵Fn的原点设在左上角,那么图像信号能量将集中在系数矩阵的四个角上。这是由二维傅里叶变换本身性质决定的。同时也表明一股图像能量集中低频区域。

2 、变换之后的图像在原点平移之前四角是低频,最亮,平移之后中间部分是低频,最亮,亮度大说明低频的能量大(幅角比较大)。

1.2窗函数

数字信号处理的主要数学工具是傅里叶变换.而傅里叶变换研究的是整个时间域和频率域的关系。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用截取的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无限长的信号被截断以后,其频谱发生了畸变,原来集中在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。

数字信号处理的主要数学工具是傅里叶变换.而傅里叶变换是研究整个时间域和频率域的关系。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用截取的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无限长的信号被截断以后,其频谱发生了畸变,原来集中在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截断,截断函数称为窗函数,简称为窗。

加窗实质是用一个所谓的窗函数与原始的时域信号作乘积的过程(当然加窗也可以在频域进行,但时域更为普遍),使得相乘后的信号似乎更好地满足傅立叶变换的周期性要求。如下图所示,原始的信号是不满足FFT变换的周期性要求的,变换后存在泄漏,如果施加一个窗函数,会在一定程度上减少泄漏。为了减少泄漏,用一个窗函数与原始周期信号相乘,得到加窗后的信号为周期信号,从而满足FFT变换的周期性要求。

在实际进行数字信号处理时,往往需要把信号的观察时间限制在一定的时间间隔内,只需要选择一段时间信号对其进行分析。这样,取用有限个数据,即将信号数据截断的过程,就等于将信号进行加窗函数操作。而这样操作以后,常常会发生频谱分量从其正常频谱扩展开来的现象,即所谓的“频谱泄漏”。当进行离散傅立叶变换时,时域中的截断是必需的,因此泄漏效应也是离散傅立叶变换所固有的,必须进行抑制。而要对频谱泄漏进行抑制,可以通过窗函数加权抑制DFT的等效滤波器的振幅特性的副瓣,或用窗函数加权使有限长度的输入信号周期延拓后在边界上尽量减少不连续程度的方法实现。而在后面的FIR滤波器的设计中,为获得有限长单位取样响应,需要用窗函数截断无限长单位取样响应序列。另外,在功率谱估计中也要遇到窗函数加权问题。

二、核心程序

.......................................
F=fft2(f);
fd=abs(fftshift(F));
fdf=ifft2(fd);%对幅度傅里叶反变换
xw=angle(F);
xwf=ifft2(exp(j*xw));
figure;
subplot(2,2,1);
imshow(log(abs(fftshift(F))),[])%显示频谱幅度
title('图像频谱幅度');
subplot(2,2,2);
imshow(angle(fftshift(F)),[])
title('图像相位');
%---------------------------
subplot(2,2,3);
imshow(log(1+abs(fdf)),[]);
title('图像频谱幅度的逆变换');
subplot(2,2,4);
imshow(xwf,[]);
title('图像相位的逆变换');
%-----------------------------------
up34

三、测试结果

通过二维FFT变换对比加入窗函数之后的图像频谱和相位相关推荐

  1. 【经典算法实现 44】理解二维FFT快速傅里叶变换 及 IFFT快速傅里叶逆变换(迭代法 和 递归法)

    [经典算法实现 44]理解二维FFT快速傅里叶变换 及 IFFT快速傅里叶逆变换(迭代法 和 递归法) 一.二维FFTFFTFFT快速傅里叶变换 公式推导 二.二维FFTFFTFFT 及 IFFTIF ...

  2. TMS320C6455二维FFT和IFFT实现

    目录 FFT原理简介 DSPLib配置 图像数据生成 DSPLib中的FFT和IFFT 二维FFT和IFFT实现 图像分析工具(Image Analyzer) 测试结果 相关资源链接 参考资料: Ra ...

  3. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  4. c代码实现 ifft运算_二维FFT,IFFT,c语言实现 | 学步园

    学习DIP第6天 网上关于FFT的实例有很多,具体也可以参照上一篇,其实Matlab,OpenCV都可以很轻松的实现相关操作,但是对于学习其原理,还是自己操作下比较好. 二维FFT的是实现方法是先对行 ...

  5. 计算机图形学(四)几何变换_4_二维复合变换_4_二维刚体变换

    二维复合变换_4_二维刚体变换 如果一个变换矩阵仅包含平移和旋转参数 ,则它是一个刚体变换矩阵 (rigid-body transforma-tion matrix) .二维刚体变换矩阵的一般形式为 ...

  6. 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等

    接上文 计算机图形学 学习笔记(六):消隐算法:Z-buffer,区间扫描线,Warnock,光栅图形学小结 在图形学中,有两大基本工具:向量分析,图形变换.本文将重点讲解向量和二维图形的变换. 5. ...

  7. 图像加密 关于二维Arnold变换,广义Arnold变换和更一般形式变换的练习(Matlab实现)

    索引 1. 将其离散化,应用到图像变换,假设图像大小为 N × N N\times N N×N, ( m n ) = ( 1 1 1 2 ) ( i j ) m o d N , i , j = 0 , ...

  8. c语言二维图形变换程序,C语言图形编程(五、二维图形变换-01)(国外英文资料).doc...

    C语言图形编程(五.二维图形变换-01)(国外英文资料) C语言图形编程(五.二维图形变换-01)(国外英文资料) The first user coordinates to the screen c ...

  9. 二维离散变换由c语言编写,离散余弦变换(DCT)的DSP程序设计与实现

    <离散余弦变换(DCT)的DSP程序设计与实现>由会员分享,可在线阅读,更多相关<离散余弦变换(DCT)的DSP程序设计与实现(15页珍藏版)>请在人人文库网上搜索. 1.DS ...

最新文章

  1. android 读取excel数据并保存为xml文件
  2. CSDN博客官方算法故障-随意删除图片记录
  3. LeetCode 1456. 定长子串中元音的最大数目(滑动窗口)
  4. (9)SPI接收verilog与Systemverilog编码
  5. 【二分法】计蒜客:二分快速幂
  6. C++算法学习(贪心算法)
  7. jetty-maven-plugin
  8. ArrayList ListItr
  9. 转 linux shell 数组建立及使用技巧
  10. 擎标带你了解CMMI3与CMMI5的区别
  11. Siemens 软件下载
  12. Web漏洞扫描器—AppScan
  13. 'E:\AndroidSDK\platform-tools\adb.exe start-server' failed -- run manually if necessary
  14. 多多参谋参谋|拼多多店群什么产品容易成为爆款呢|魔店分享
  15. 泛型类、泛型方法的使用与理解
  16. java版我的世界MITE怎么下_我的世界mite作弊图文教程
  17. Java三个月速成学习路线图
  18. 蓝牙配对码配置错误_“看yellow 的时候,连错了蓝牙耳机,结果....”哈哈哈哈我笑到村里通网!!...
  19. [学习笔记]快速沃尔什变换 (FWT)
  20. 留言板代码 php js,原生JS实现留言板功能

热门文章

  1. 2022虚拟数字人TOP50排行榜出炉,李未可、柳夜熙等IP入选虚拟偶像TOP30
  2. 脑洞大开!网易推出国内首部VR漫画《地狱电梯》
  3. 调试AVIN后视注册消息BUG改正记录保存
  4. 高起专c语言试卷及答案,《C程序设计(高起专)C程序设计》东师20秋在线作业1题目及答案...
  5. 国产PLC必学编程-- 汇川H1UModbus通讯例程
  6. 戴尔笔记本/台式机/工作站入选最新节能产品政府采购清单及环境标志产品政府采购清单...
  7. 开始系统学习,考不考证再议
  8. AM@空间平面束(平面系)方程pencil of planes
  9. JavaSE-09 Thread 多线程
  10. 手把手推导Ring All-reduce的数学性质