MATLAB频域处理-傅里叶变换和滤波

本文探讨了二维傅立叶变换及其在图像处理中的应用,包括频域低通滤波、高通滤波及拉普拉斯算子的使用。通过MATLAB代码实例,展示了如何对图像进行傅立叶变换、滤波以及逆变换,同时比较了空间域与频域滤波的效果。

主要demo:

二维傅立叶变换,二维FFT,频域低通滤波,高通滤波,拉普拉斯算子


      f=imread('你的图片');
      F=fft2(f);            %对图像f进行傅里叶变换
      S=abs(F);            %S是F的频谱
      imshow(S,[]);       %显示频谱,能量集中子在四个角
      FC=fftshift(F);       %频谱移动到中心
      figure,imshow(FC,[]);        %显示频谱,能量移动到中心
      S2=log(1+abs(FC));    %对频谱作对数变换,拓展其动态范围
      figure,imshow(S2,[]);        %显示变换后的频谱,频谱的细节部分也能清楚显示

f =imread('你的图'); 
imshow(f);
[M,N]=size(f);   % M,N分别是图像f的宽度和高度

%对f进行傅立叶变换,没有对f进行扩充填0操作
F=fft2(f);
sig=10;         % sig是高斯滤波器的方差

% lpfilter 产生一个频域低通滤波器
H =lpfilter('gaussian', M, N, sig);
G=H.*F;    % 频域滤波,将滤波器和F相乘
% 滤波结果进行傅立叶逆变换并取其实部,得到空间域的滤波结果
g =real(ifft2(G));
% 由于折叠效应,g的图像水平边缘有些模糊,但是垂直边缘并不模糊
figure, imshow (g,[]);
PQ=paddedsize (size(f));  %PQ是扩充后的图像尺寸,默认为(M*2, N*2)
Fp=fft2(f, PQ(1), PQ(2));   %傅立叶变换并扩充到指定尺寸
Hp=lpfilter('gaussian', PQ(1),PQ(2), 2*sig);  %Hp是指定尺寸的低通滤波器
Gp=Hp.*Fp;     %频域低通滤波
gp=real(ifft2(Gp));  % 傅立叶逆变换,得到滤波结果
figure, imshow(gp,[  ]);  % 傅立叶逆变换后的结果,原图像只占据左上角1/4
gpc=gp(1:size(f,1), 1:size(f,2));  %只取逆变换的左上角部分
figure, imshow(
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值