在处理二维矩阵时,常想着如何把时域转换到频域来处理,因此翻来了以往数分里面的常用的傅里叶(Fourier Transform);
(Notes:一下公式中 M,N分别为二维矩阵的列数和行数,f(x,y) 代表改二维矩阵,F(u,v)为转换后的矩阵);
I. 傅里叶变换的公式:

拆分到这里,我也很开心的掏出祖传的Matlab写了几行代码来实现:

function [Fuv] = Myft2(fxy)[N,M,dim] = size(fxy);if dim > 1txy = double((rgb2gray(fxy)))/255;elsetxy = double(fxy)/255;end[U,V] = meshgrid(0:M-1,0:N-1);Gxv = zeros(N,M);for y = 1:NA2 = txy.*exp(-2*pi*1i * (y-1)*V./N);Gxv(y,:) = sum(A2,1);endFuv = zeros(N,M);for x = 1:MA1 = Gxv .* exp(-2*pi*1i * (x-1)*U ./ M);Fuv(:,x) = sum(A1,2);end

然后与matlab自带函数fft2 做组对比:

clear;clc;
Lena = imread('lena.jpg');tic;
tSrc_fft = Lena;
Fmy = Myft2(tSrc_fft);
sp1 = toc;
tic;
if size(Lena,3) > 1tSrc_mat = double((rgb2gray(Lena)))/255;
elsetSrc_mat = double(Lena)/255;
end
Fmatlab = fft2(tSrc_mat);
sp2=toc;
tE = isempty(find(abs(Fmatlab - Fmy) > 0.01, 1));
disp(['是否为空:',num2str(tE)]);
disp(['时间长(s):',num2str(sp1 - sp2)]);

但是时间却相差甚远:

看了看原公式,想了想如果把上述代码转换成Matlab 矩阵运算是不是会提速。然后就实际行动起来:
上面公式可以转换成 F = g1* f *g2;(矩阵与代码如下:)

function [Fuv ] = Myft2(fxy )[N,M,dim] = size(fxy);if dim > 1txy = double((rgb2gray(fxy)))/255;elsetxy = double(fxy)/255;end[Vx,Vy] = meshgrid(0:N-1,0:N-1);G1 = exp(-1i*2*pi .*(Vx.*Vy)./N);[Ux,Uy] = meshgrid(0:M-1,0:M-1);G2 = exp(-1i*2*pi .*(Ux.*Uy)./M);Fuv = G1 * txy * G2;

重复上面的对比:

果然Matlb矩阵计算还是有优势的,效果看起来还可以;

II. 傅里叶逆变换公式:

用同样的方式,写傅里叶逆变换的代码,即可获取同样的效果,这里就只贴上公式了;下一期打算做一下基于fft的高通滤波

二维傅里叶变换简化方式相关推荐

  1. matlab极坐标下的二维傅里叶变换_形象理解二维傅里叶变换

    公众号关注 "DL-CVer" 设为 "星标",DLCV消息即可送达! 来自 | 知乎  作者 | 阿姆斯特朗 链接 | https://zhuanlan.zh ...

  2. MATLAB作二维傅里叶变换所需要注意和知道的东西(im2double、fft2、abs、imshow、二维傅里叶变换的物理意义)

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 代码如下,这个代码是实现灰度图像作二维傅里叶变换 ...

  3. 二维傅里叶变换是怎么进行的?

    1.首先回顾一下一维FT 通俗来讲,一维傅里叶变换是将一个一维的信号分解成若干个三角波. 对于一个三角波而言,需要三个参数来确定它:频率,幅度 A ,相位.因此在频域中,一维坐标代表频率,而每个坐标对 ...

  4. 2维FFT算法实现——基于GPU的基2快速二维傅里叶变换

    2维FFT算法实现--基于GPU的基2快速二维傅里叶变换 上篇讲述了一维FFT的GPU实现(FFT算法实现--基于GPU的基2快速傅里叶变换),后来我又由于需要做了一下二维FFT,大概思路如下. 首先 ...

  5. Matlab:二维傅里叶变换

    Matlab:二维傅里叶变换 二维傅里叶变换 二维衍射模式 fft2 函数将二维数据变换为频率空间.例如,您可以变换二维光学掩膜以揭示其衍射模式. 二维傅里叶变换 以下公式定义 m×n 矩阵 X 的离 ...

  6. 形象理解二维傅里叶变换

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来自 | 知乎  作者 | 阿姆斯特朗 链接 | https:// ...

  7. 使用matlab对图像进行二维傅里叶变换

    这学期选了<图像工程基础>这门课,课上老师留了一个作业:对图像进行二维傅里叶变换. 现在我使用matlab解决这个问题 1.实验基本指令 首先我试了一下matlab图像处理的基本指令 原图 ...

  8. Matlab实现频域滤波——二维傅里叶变换、低通、高通

    目录 1.二维傅里叶变换 1.1二维傅里叶变换定义 1.2性质 2.低通滤波器 2.1理想低通滤波器 3.高通 1.二维傅里叶变换 1.1二维傅里叶变换定义 首先通过傅里叶变换将图像从空间域转换为频率 ...

  9. 二维傅里叶变换频谱图的直观理解

    众所周知:频谱中心代表低频,四周代表高频. 问:那(u,v)一点代表什么? 答: 1.当为水平方向的正弦图片时,二维傅里叶变换后,其只有u方向的频谱值: 2.当为垂直方向的正弦图片是,二维傅里叶变换后 ...

  10. 模板码:个性二维码制作,改变二维码设计方式

    网站名称:模板码 网址:http://www.mobanma.com/ 网站简介: 模板码是一个让二维码设计与制作变得非常简单的工具,它开放功能让用户自己制作模板使用或销售,不仅让设计师加快设计速度, ...

最新文章

  1. 综合技术 --@Autowired和@Resource
  2. 【高薪】阿联酋起源人工智能研究院诚邀优秀人才(博士)
  3. GGGit与Github
  4. 日本依靠储能系统解决光伏消纳问题
  5. 白盒测试之初识gtest工具
  6. vxWorks下常用的几种延时方法
  7. 实例58:python
  8. mac php编译freetype,Mac下本机自带PHP缺少freetype最终解决方案
  9. Linux C 存储映射IO
  10. 2018 ACM-ICPC World Finals - Beijing F.Go with the Flow
  11. 一道海量日志的随机选取问题
  12. 基于MATLAB的身份证号码的识别算法
  13. C/S、B/S架构模式的三层结构特点分析
  14. 浅谈混迹力扣和codeforces上的几个月
  15. CentOS 出现 No packages marked for update
  16. 机器学习从入门到创业手记-初识sklearn
  17. springboot电子邀请函制作
  18. ADFでパラメーターのやり取り
  19. 快递跨界电商是在“走弯路”
  20. MISRA-C那些事儿

热门文章

  1. Sentaurus TCAD模型创建、激活电极等
  2. 批量读取word docx文件指定表格内容,保存在excel文件中
  3. 示例项目:简单的六足步行者
  4. python矩阵连乘_动态规划之矩阵连乘问题Python实现方法
  5. wind python接口手册_wind量化平台-用户手册(python).pdf
  6. 怎么样利用“消息集中管控中心”批量管理手机信息
  7. 全国地名联动选择的程序|地名三级联动(原创JS无数据库19K优化版)
  8. 谷歌浏览器添加插件——json
  9. 支持向量机之思维导图
  10. mybatis插件的执行顺序