matlab 二维图形 高通滤波代码
时间: 2023-11-20 12:54:59 浏览: 180
以下是Matlab中实现二维图形高通滤波的代码:
```matlab
clear all;clc;
I = imread('D:\resource_photo\1(1).png');
figure(1);
subplot(221),imshow(I); title('原始图像');
% 进行二维傅里叶变换
k=fft2(im2double(I));
s=fftshift(fft2(im2double(I)));
subplot(222),imshow(k); title('二维傅里叶变换后图像');
% 计算中心频谱图像
subplot(223),imshow(log(abs(s))); title('中心频谱图像')
[a,b]=size(s);
a0=round(a/2);
b0=round(b/2);
d0=50; % 将理想高通滤波器的截止频率D0设置为50
% 计算理想高通滤波器
for i=1:a
for j=1:b
distance=sqrt((i-a0)^2+(j-b0)^2);
if distance<=d0 % 根据理想高通滤波器产生公式,当D(i,j)<=D0,置为0
h=0;
else % 根据理想高通滤波器产生公式,当D(i,j)>D0,置为1
h=1;
end
s(i,j)=h*s(i,j);% 频域图像乘以滤波器的系数
end
end
% 进行二维傅里叶反变换转换为时域图像
s=real(ifft2(ifftshift(s)));
subplot(224),imshow(s,[]); title('理想高通滤波所得图像');
```
以上代码实现了对一张图片进行二维傅里叶变换,计算中心频谱图像,然后根据理想高通滤波器的公式计算出滤波器系数,最后进行二维傅里叶反变换转换为时域图像,得到经过高通滤波处理后的图像。
阅读全文