写一个基于matlab的频率域滤波的程序
时间: 2024-05-08 16:19:24 浏览: 61
可以的,以下是一个基于 Matlab 的频率域滤波程序示例:
```matlab
% 读入图像
I = imread('example.jpg');
% 转换为灰度图像
I = rgb2gray(I);
% 显示原始图像
figure, imshow(I); title('Original Image');
% 计算图像的二维傅里叶变换
F = fft2(double(I));
% 对频谱进行中心化
Fshift = fftshift(F);
% 计算频谱的幅值谱
Fmag = abs(Fshift);
% 显示频谱的幅值谱
figure, imshow(log(1+Fmag), []); title('Frequency Spectrum');
% 定义一个高斯滤波器
H = fspecial('gaussian', size(I), 10);
% 对滤波器进行频率域变换
Hf = fft2(double(H), size(I,1), size(I,2));
% 对频率域图像进行滤波
G = Fshift .* Hf;
% 计算滤波后的图像的幅值谱
Gmag = abs(G);
% 显示滤波后的图像的幅值谱
figure, imshow(log(1+Gmag), []); title('Filtered Spectrum');
% 对滤波后的图像进行逆傅里叶变换
Ifiltered = ifft2(ifftshift(G));
% 显示滤波后的图像
figure, imshow(uint8(Ifiltered)); title('Filtered Image');
```
希望能对您有所帮助!
阅读全文