用matlab实现:1. 对一个图像进行不同大小的模板的均值滤波,并比较结果。 选一幅图像(如eight.tif),对图像加入椒盐噪声,然后分别选择3×3、5×5、7×7等模板进行均值滤波,同时观察噪声图像、不同尺寸模板的均值滤波图像,并就不同尺寸的滤波器模板进行滤波操作的图像进行比较。 2. 利用一个低通模板对一幅有噪图象(GAUSS白噪声)进行滤波(原图像可选lena.bmp、saturn.tif、pout.tif等),检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×5中值滤波器)对噪声的滤波效果。
时间: 2024-02-09 14:13:11 浏览: 280
1. 对一个图像进行不同大小的模板的均值滤波
```matlab
% 读入图像
img = imread('eight.tif');
% 添加椒盐噪声
img_noise = imnoise(img, 'salt & pepper', 0.2);
% 定义不同大小的模板
mask_3 = ones(3)/9;
mask_5 = ones(5)/25;
mask_7 = ones(7)/49;
% 对不同大小的模板进行均值滤波
img_3 = imfilter(img_noise, mask_3);
img_5 = imfilter(img_noise, mask_5);
img_7 = imfilter(img_noise, mask_7);
% 显示结果
figure;
subplot(2,2,1), imshow(img_noise), title('加噪图像');
subplot(2,2,2), imshow(img_3), title('3x3模板均值滤波');
subplot(2,2,3), imshow(img_5), title('5x5模板均值滤波');
subplot(2,2,4), imshow(img_7), title('7x7模板均值滤波');
```
2. 利用一个低通模板对一幅有噪图象进行滤波
```matlab
% 读入图像
img = imread('lena.bmp');
% 添加高斯白噪声
img_noise = imnoise(img, 'gaussian');
% 定义5x5线性邻域平均模板
mask_linear = ones(5)/25;
% 定义3x5中值滤波器
mask_median = ones(3,5);
% 对图像分别进行线性平均滤波和中值滤波
img_linear = imfilter(img_noise, mask_linear);
img_median = medfilt2(img_noise, [3 5]);
% 显示结果
figure;
subplot(2,2,1), imshow(img_noise), title('加噪图像');
subplot(2,2,2), imshow(img_linear), title('5x5线性邻域平均滤波');
subplot(2,2,3), imshow(img_median), title('3x5中值滤波器滤波');
```
通过比较两种滤波方法的结果,可以发现中值滤波器对于椒盐噪声的去除效果更好。
阅读全文