用Matlab编程实现图像的傅立叶变换和逆变换并显示出来

用Matlab编程实现图像的傅立叶变换和逆变换并显示出来

% 用Matlab编程实现图像的傅立叶变换并显示出来
% 可进行傅立叶变换和逆变换恢复
clear all
close all
clc
I=imread('1.JPG');      % 读取图像
I=rgb2gray(I);          % 灰度处理
fftI=fft2(I);           % 二维离散傅立叶变换
sfftI=fftshift(fftI);   % 直流分量移到频谱中心
RR=real(sfftI);         % 取傅立叶变换的实部
II=imag(sfftI);         % 取傅立叶变换的虚部
A=sqrt(RR.^2+II.^2);    % 计算频谱幅值
B=(A-min(min(A)))./(max(max(A))-min(min(A)))*225; % 归一化
pha=angle(fftI);        % 计算复数的相位角
figure(1)               % 设定窗口
subplot(2,2,1),imshow(I);title('原图');
subplot(2,2,2),imshow(B);title('原图像的频谱');   % 显示原图像的频谱
subplot(2,2,3),imshow(log(B),[]);title('原图像的频谱');   % 显示原图像的频谱
subplot(2,2,4),imshow(pha);title('相位谱')
figure(2)
x=abs(ifft2(fftI));     % 取绝对值
magif=ifft2(abs(fftI)); % 二维离散傅里叶逆变换
phaif=ifft2(exp(1i*pha));   % 1i为复数单位,因为 i 容易和变量搞混了,所以matlab在使用符号函数求解时,其结果会推荐你使用 1i 
subplot(1,3,1),imshow(phaif,[]);title('相位谱重建图像');
subplot(1,3,2),imshow(x,[]);title('频谱重建原图像')
subplot(1,3,3),imshow(magif,[]);title('幅度谱重建图像')

展示

处理图
在这里插入图片描述
重建图
在这里插入图片描述

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值