用matlab对一幅图像加上高斯噪声后,分别采用中值滤波、自适应滤波和平滑滤波三 种方法对其进行滤波,并比较滤波后结果。
时间: 2023-11-09 15:07:56 浏览: 86
这里给出一个简单的实现过程:
1. 读取图像并加上高斯噪声
```matlab
img = imread('lena.png');
noisy_img = imnoise(img, 'gaussian', 0, 0.01); % 添加方差为0.01的高斯噪声
```
2. 中值滤波
```matlab
filtered_img_median = medfilt2(noisy_img, [3 3]); % 使用3x3的中值滤波器
```
3. 自适应滤波
```matlab
filtered_img_adaptive = wiener2(noisy_img, [3 3]); % 使用3x3的自适应滤波器
```
4. 平滑滤波
```matlab
h = fspecial('average', [3 3]); % 构造3x3均值滤波器
filtered_img_smooth = imfilter(noisy_img, h); % 使用均值滤波器进行平滑滤波
```
5. 比较滤波后结果
```matlab
figure;
subplot(2, 2, 1); imshow(img); title('原图');
subplot(2, 2, 2); imshow(noisy_img); title('加噪后');
subplot(2, 2, 3); imshow(filtered_img_median); title('中值滤波');
subplot(2, 2, 4); imshow(filtered_img_adaptive); title('自适应滤波');
subplot(2, 2, 4); imshow(filtered_img_smooth); title('平滑滤波');
```
这样就可以进行三种滤波方法的比较了。需要注意的是,不同的滤波方法可能需要调整不同的参数以达到最佳效果。
阅读全文