• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab实现傅里叶变换

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

代码实现

clc;clear;close all;

%读取图片,展示图片
I=imread(\'p3.jpg\');
figure(\'Name\',\'原图\',\'NumberTitle\',\'off\');imshow(I);
 
I=rgb2gray(I); %I = rgb2gray(RGB) 将真彩色图像 RGB 转换为灰度图像 I。
I=im2double(I); %I = im2double(I) 将图像 I 转换为双精度。
figure(\'Name\',\'灰度图\',\'NumberTitle\',\'off\');imshow(I,[0,1]);%展示原灰度图像
 
F=fft2(I); %Y = fft2(X) 使用快速傅里叶变换算法返回矩阵的二维傅里叶变换,这等同于计算 fft(fft(X).\').\'。如果 X 是一个多维数组,fft2 将采用高于 2 的每个维度的二维变换。输出 Y 的大小与 X 相同。
Fm=abs(F);%得到变换后的模
T=log(Fm+1);%求自然对数
figure(\'Name\',\'傅里叶变换频谱图\',\'NumberTitle\',\'off\');imshow(T,[]);%展示傅里叶变换后的图
 
Ff=fftshift(F);%快速傅里叶变换 Y = fftshift(X) 通过将零频分量移动到数组中心,重新排列傅里叶变换 X。
Fm=abs(Ff);
T=log(Fm+1);
figure(\'Name\',\'中心偏移后的傅里叶变换频谱图\',\'NumberTitle\',\'off\');imshow(T,[]); 

r=log(abs(real(Ff)));
i=log(abs(imag(Ff)));
figure(\'Name\',\'中心偏移后的傅里叶变换频谱图实部\',\'NumberTitle\',\'off\');imshow(r,[]);
figure(\'Name\',\'中心偏移后的傅里叶变换频谱图虚部\',\'NumberTitle\',\'off\');imshow(i); 


J=ifft2(F);%X = ifft2(Y) 使用快速傅里叶变换算法返回矩阵的二维离散傅里叶逆变换。
figure(\'Name\',\'傅里叶逆变化得到的灰度图\',\'NumberTitle\',\'off\');imshow(J,[0,1]);

open fftshift
open ifft2
open fft2


结果:

原图

灰度图

傅里叶频谱图

中心偏移后的傅里叶频谱图

中心偏移后频谱图的实部

中心偏移后频谱图的虚部

傅里叶逆变换得到的灰度图


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi指针数组的引用发布时间:2022-07-18
下一篇:
Delphi / C++ Builder 使用 UDT ( UDP-based Data Transfer ) 4.11发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap