matlab 傅里叶变换 高斯高通滤波

close all;
clear all;
%加上两个close,clear  最后显示图像时候可以正常显示,否则图像会因为过大而被拉伸  
img=imread('c.jpg');
img=rgb2gray(img);
figure,imshow(img);
g=fft2(double(img));
%进行傅里叶变换,fft2是二维的傅立叶变换。
g=fftshift(g);
%中心化
imshow(abs(g),[])
[N1,N2]=size(g);
n=2;
d0=30; 
%d0是终止频率
n1=fix(N1/2);
n2=fix(N2/2);
%n1,n2指中心点的坐标,fix()函数是往 0  取整
for i=1:N1
  for j=1:N2
      d=sqrt((i-n1)^2+(j-n2)^2);
      h=1-exp(-d*d/(2*d0*d0));
      result(i,j)=h*g(i,j);
  end
end
result=ifftshift(result);
X2=ifft2(result);
%傅里叶去中心化以及反变换
final=uint8(real(X2));
%最终的结果归一化到0-7之间
figure,imshow(final);

原始图片
高斯高通滤波结果

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值