Matlab图像增强—频域滤波代码
时间: 2023-11-17 19:04:21 浏览: 98
MATLAB中的频域滤波
5星 · 资源好评率100%
以下是一个简单的 Matlab 频域滤波示例代码,它可以对图像进行增强。该代码使用离散傅里叶变换(DFT)和频域滤波器(低通和高通滤波器)。
```matlab
% 读取图像
I = imread('lena.bmp');
% 将图像转换为灰度图像
if size(I, 3) == 3
I = rgb2gray(I);
end
% 对图像进行离散傅里叶变换
F = fft2(double(I));
% 将频谱中心移动到图像中心
F_shift = fftshift(F);
% 创建低通滤波器
[M, N] = size(I);
D0 = 30; % 截止半径
H = zeros(M, N);
for u = 1:M
for v = 1:N
D = sqrt((u-M/2)^2 + (v-N/2)^2);
if D <= D0
H(u, v) = 1;
end
end
end
% 应用低通滤波器
G = H .* F_shift;
% 将频谱中心移回原处
G_shift = ifftshift(G);
% 对滤波后的频域图像进行反离散傅里叶变换
J = real(ifft2(G_shift));
% 显示原图像和增强后的图像
figure;
subplot(1, 2, 1);
imshow(I);
title('原图像');
subplot(1, 2, 2);
imshow(J, []);
title('低通滤波增强后的图像');
```
你也可以使用高通滤波器对图像进行增强,只需将上述代码中的低通滤波器替换为高通滤波器即可。
阅读全文