Matlab图像增强—频域滤波代码
时间: 2023-11-17 08:04:22 浏览: 89
以下是一段 Matlab 中的频域滤波代码,用于图像增强:
```matlab
% 读取图像
img = imread('lena.png');
% 将图像转换为灰度图像
img = rgb2gray(img);
% 对图像进行傅里叶变换
fft_img = fft2(double(img));
% 将零频分量移到中心位置
fft_img = fftshift(fft_img);
% 滤波器
D0 = 20; % 截止频率
[M, N] = size(img);
H = zeros(M, N);
for i = 1:M
for j = 1:N
D = sqrt((i-M/2)^2 + (j-N/2)^2);
H(i, j) = exp(-(D^2)/(2*D0^2));
end
end
% 进行频域滤波
fft_img_filtered = fft_img .* H;
% 将零频分量移回原位置
fft_img_filtered = ifftshift(fft_img_filtered);
% 对滤波后的图像进行傅里叶反变换
img_filtered = real(ifft2(fft_img_filtered));
% 显示原图像和滤波后的图像
subplot(121), imshow(img);
title('Original Image');
subplot(122), imshow(img_filtered, []);
title('Filtered Image');
```
该代码使用了高斯低通滤波器,可以通过调整截止频率 D0 来控制滤波效果。滤波后的图像将会显示在右侧的图像窗口中。
阅读全文