(1)读入一幅图像,进行理想低通滤波,取理想低通滤波的截止频率分别为 5,15,35,70,同屏显示原始图像和滤波后的图像,并标注截止频率。 matlab实现
时间: 2024-02-09 16:11:36 浏览: 64
低通滤波实现图像增强和小波滤波器去噪增强变换,基于小波变换的图像去噪,matlab
5星 · 资源好评率100%
好的,我会为你解答这个问题。
以下是 Matlab 的代码实现:
```matlab
% 读入一幅图像
img = imread('example.jpg');
% 显示原始图像
subplot(2, 3, 1);
imshow(img);
title('Original Image');
% 取理想低通滤波的截止频率分别为 5, 15, 35, 70
D = [5, 15, 35, 70];
for i = 1:length(D)
% 理想低通滤波器
H = zeros(size(img));
[M, N] = size(img);
for u = 1:M
for v = 1:N
D_uv = sqrt((u-M/2)^2 + (v-N/2)^2);
if D_uv <= D(i)
H(u,v) = 1;
end
end
end
% 滤波后的图像
img_lp = real(ifft2(ifftshift(fftshift(fft2(double(img))).*H)));
% 显示滤波后的图像
subplot(2, 3, i+1);
imshow(uint8(img_lp));
title(['Low Pass Filter (D_{0}=', num2str(D(i)), ')']);
end
```
解释:
首先,我们读入一幅图像 `img`,并显示原始图像。
然后,我们定义了一个截止频率的数组 `D`,并用循环对每个截止频率进行滤波。
在滤波之前,我们需要先生成理想低通滤波器 `H`。通过两个嵌套的循环,我们可以计算出每个像素的频率,并根据截止频率 `D(i)` 来决定是否将其保留。如果像素的频率小于等于截止频率,则将其保留,否则将其置为零。
接着,我们将滤波器应用到原始图像上,得到滤波后的图像 `img_lp`。我们使用 `ifft2` 函数将频域的滤波器转换回时域,再使用 `ifftshift` 和 `fftshift` 函数进行中心化和频率域平移。
最后,我们将滤波后的图像显示在一个子图中,并在标题中标注截止频率。
希望这个代码可以帮到你!
阅读全文