matlab 8.读入lena图像,利用理想低通滤波器对其进行平滑处理,设置滤波半径依次为5,15,45,65.显示相应滤波结果。
时间: 2023-06-09 22:04:36 浏览: 309
用matlab实现图像的平滑滤波
好的,您可以按照以下步骤操作:
1. 加载 Lena 图像
```matlab
lena = imread('lena.jpg'); % 请替换为您的 Lena 图像路径
```
2. 计算 Lena 图像的傅里叶变换(FFT)
```matlab
f = fftshift(fft2(lena));
```
3. 构造理想低通滤波器
```matlab
[M,N] = size(lena);
D0 = [5,15,45,65]; % 滤波半径
H = cell(1,length(D0)); % 存储滤波器
[X,Y] = meshgrid(1:N,1:M);
center = [fix(N/2)+1,fix(M/2)+1];
for i=1:length(D0)
D = sqrt((X-center(1)).^2 + (Y-center(2)).^2);
H{i} = double(D<=D0(i));
end
```
4. 利用理想低通滤波器对 Lena 图像进行平滑处理,即相当于将其频谱与滤波器做点乘
```matlab
g = cell(1,length(D0)); % 存储滤波后的图像
for i=1:length(D0)
g{i} = real(ifft2(ifftshift(H{i}.*f)));
end
```
5. 显示滤波结果
```matlab
figure;
for i=1:length(D0)
subplot(2,2,i);
imshow(uint8(g{i}));
title(['D0=',num2str(D0(i))],'FontSize',14);
end
```
执行完以上步骤,您就可以得到 Lena 图像的理想低通滤波器平滑处理后的结果了。希望能解决您的问题!
阅读全文