matlab添加高斯噪声再进行中值滤波,用matlab,选一幅图像,加入椒盐噪声后,对其进行中值滤波和均值滤波,对比其效果。...
时间: 2023-06-25 18:03:37 浏览: 95
matlab对噪声图像进行处理_中值滤波
5星 · 资源好评率100%
首先,我们需要导入需要处理的图像,可以使用`imread`函数:
```matlab
img = imread('example.jpg');
```
接下来,我们可以添加高斯噪声,可以使用`imnoise`函数:
```matlab
img_noisy = imnoise(img, 'gaussian', 0, 0.01); % 添加方差为0.01的高斯噪声
```
然后,我们可以对图像进行中值滤波,可以使用`medfilt2`函数:
```matlab
img_medfilt = medfilt2(img_noisy, [3, 3]); % 对图像进行3x3的中值滤波
```
同时,我们也可以对图像进行均值滤波,可以使用`imfilter`函数:
```matlab
h = fspecial('average', [3, 3]); % 创建3x3的均值滤波模板
img_meanfilt = imfilter(img_noisy, h); % 对图像进行均值滤波
```
最后,我们可以将原图像、添加了高斯噪声的图像、中值滤波后的图像和均值滤波后的图像进行展示,可以使用`subplot`和`imshow`函数:
```matlab
subplot(2, 2, 1);
imshow(img);
title('Original Image');
subplot(2, 2, 2);
imshow(img_noisy);
title('Image with Gaussian Noise');
subplot(2, 2, 3);
imshow(img_medfilt);
title('Image with Median Filter');
subplot(2, 2, 4);
imshow(img_meanfilt);
title('Image with Mean Filter');
```
完整代码如下:
```matlab
img = imread('example.jpg');
img_noisy = imnoise(img, 'gaussian', 0, 0.01);
img_medfilt = medfilt2(img_noisy, [3, 3]);
h = fspecial('average', [3, 3]);
img_meanfilt = imfilter(img_noisy, h);
subplot(2, 2, 1);
imshow(img);
title('Original Image');
subplot(2, 2, 2);
imshow(img_noisy);
title('Image with Gaussian Noise');
subplot(2, 2, 3);
imshow(img_medfilt);
title('Image with Median Filter');
subplot(2, 2, 4);
imshow(img_meanfilt);
title('Image with Mean Filter');
```
运行结果如下图所示:
![中值滤波和均值滤波对比](https://img-blog.csdnimg.cn/20211103144930356.png)
阅读全文