用matlab7.1编写代码,对lena.jpg图像分别采用5,15,45,65的截止半径进行理想低通滤波,显示原图、傅里叶变换图及各滤波后效果图。比较并分析所产生的模糊和振铃效应。
时间: 2024-12-13 16:15:39 浏览: 21
在MATLAB 7.1中,你可以使用`imfilter`函数和`fft2`函数来进行理想的低通滤波和傅立叶变换操作。首先,你需要读取 Lena.jpg 图像,然后进行预处理。以下是步骤的概述:
1. **读取图像**:
```matlab
img = imread('lena.jpg');
```
2. **创建高斯核**:
对于给定的截止半径(例如5, 15, 45, 65),使用`fspecial`函数生成对应的高斯核:
```matlab
radii = [5, 15, 45, 65];
h = fspecial('gaussian', [radius, radius], sigma);
```
`sigma`值可以根据需要调整,通常等于截止半径的一半。
3. **理想低通滤波**:
使用`imfilter`函数应用高斯滤波,保留直流分量(即零频率部分):
```matlab
filtered_imgs = imfilter(img, h, 'conv');
```
4. **傅里叶变换**:
对每个滤波后的图像做傅立叶变换,查看频域特性:
```matlab
fft_img = fft2(filtered_imgs);
```
5. **绘制结果**:
分别画出原图、傅里叶变换图以及滤波后的图片,对比效果,并注意观察模糊和振铃现象:
```matlab
figure; subplot(2, 3, 1), imshow(img, []);
subplot(2, 3, 2), imshow(log(abs(fft_img)), []);
for i = 1:length(radii)
subplot(2, 3, i + 3), imshow(filtered_imgs(:,:,i), []);
end
```
模糊程度会随着截止半径增大而降低,而振铃效应则是由于在高频区域去除过多信息造成的边缘失真。
6. **分析**:
- 比较不同半径下滤波的效果,较小的截止半径会产生更明显的边缘模糊,较大的则会减少细节;
- 看到的振铃效应通常是滤波器在高频率区过度平滑导致的。
阅读全文