matlab2022a读入一幅图像,进行理想低通滤波,取理想低通滤波的截止频率分别为5,15,35,70,同屏显示原始图像和滤波后的图像,并标注截止频率。
时间: 2024-02-09 18:10:54 浏览: 77
好的,我了解了你的要求。以下是Matlab代码实现:
```matlab
% 读入图像
img = imread('image.jpg');
% 显示原始图像
subplot(2,3,1);
imshow(img);
title('Original Image');
% 对原始图像进行理想低通滤波
d0 = [5, 15, 35, 70];
for i = 1:length(d0)
% 构造理想低通滤波器
[M, N] = size(img);
u = 0:(M-1);
v = 0:(N-1);
idx = find(u > M/2);
u(idx) = u(idx) - M;
idy = find(v > N/2);
v(idy) = v(idy) - N;
[V, U] = meshgrid(v, u);
D = sqrt(U.^2 + V.^2);
H = double(D <= d0(i));
% 进行频域滤波
img_fft = fft2(double(img));
img_fft_shift = fftshift(img_fft);
img_fft_filtered = img_fft_shift .* H;
img_filtered = real(ifft2(ifftshift(img_fft_filtered)));
% 显示滤波后的图像
subplot(2,3,i+1);
imshow(img_filtered, []);
title(['D0 = ',num2str(d0(i))]);
end
```
运行上述代码,即可在同一窗口中显示原始图像和四张滤波后的图像,每张图像上标注了对应的截止频率。注意,为了更好地显示滤波后的图像,使用了`imshow(img_filtered, [])`,即将图像的像素值范围缩放到[0,1]。如果需要显示滤波后的图像的具体像素值,可以将`[]`改为`[0,255]`。
阅读全文