不用MATLAB自带函数,自己编写均值滤波程序,可选3X3窗口,图像边框像素可不处理。 利用自己编写的均值滤波程序,对含高斯噪声图像及含椒盐噪声图像进行去噪,并显示去噪前后的图像。。
时间: 2024-02-20 22:00:29 浏览: 75
MATLAB实现图像中值_图像均值_图像维纳滤波_源程序代码_matlab
可以按照以下步骤编写均值滤波程序,并利用该程序对含高斯噪声图像和含椒盐噪声图像进行去噪:
1. 定义均值滤波函数mean_filter:
```matlab
function filtered_img = mean_filter(img, filter_size)
[m, n] = size(img);
filtered_img = img;
for i = 1+filter_size : m-filter_size
for j = 1+filter_size : n-filter_size
filtered_img(i, j) = mean(mean(img(i-filter_size:i+filter_size, j-filter_size:j+filter_size)));
end
end
end
```
其中,img为输入图像,filter_size为滤波器大小。这里假设滤波器为正方形,大小为filter_size*filter_size。
2. 使用imread函数读取原始图像,将其赋值给一个矩阵变量,例如img:
```matlab
img = imread('image.jpg');
```
3. 使用imnoise函数添加高斯噪声和椒盐噪声:
```matlab
noisy_img_gauss = imnoise(img, 'gaussian', 0, 0.01);
noisy_img_salt_pepper = imnoise(img, 'salt & pepper', 0.05);
```
4. 对添加高斯噪声后的图像和添加椒盐噪声后的图像分别进行均值滤波:
```matlab
filtered_img_gauss = mean_filter(noisy_img_gauss, 1);
filtered_img_salt_pepper = mean_filter(noisy_img_salt_pepper, 1);
```
这里假设滤波器大小为3*3,可根据实际情况更改滤波器大小。
5. 使用subplot和imshow函数显示去噪前后的图像:
```matlab
subplot(2,2,1),imshow(img),title('原始图像');
subplot(2,2,2),imshow(noisy_img_gauss),title('添加高斯噪声后的图像');
subplot(2,2,3),imshow(filtered_img_gauss),title('高斯噪声去噪后的图像');
subplot(2,2,4),imshow(noisy_img_salt_pepper),title('添加椒盐噪声后的图像');
subplot(2,2,5),imshow(filtered_img_salt_pepper),title('椒盐噪声去噪后的图像');
```
这里使用subplot函数将原始图像、添加高斯噪声后的图像、添加椒盐噪声后的图像以及去噪后的图像都显示在同一窗口中,方便比较和观察。
完整代码示例:
```matlab
function filtered_img = mean_filter(img, filter_size)
[m, n] = size(img);
filtered_img = img;
for i = 1+filter_size : m-filter_size
for j = 1+filter_size : n-filter_size
filtered_img(i, j) = mean(mean(img(i-filter_size:i+filter_size, j-filter_size:j+filter_size)));
end
end
end
img = imread('image.jpg');
noisy_img_gauss = imnoise(img, 'gaussian', 0, 0.01);
noisy_img_salt_pepper = imnoise(img, 'salt & pepper', 0.05);
filtered_img_gauss = mean_filter(noisy_img_gauss, 1);
filtered_img_salt_pepper = mean_filter(noisy_img_salt_pepper, 1);
subplot(2,2,1),imshow(img),title('原始图像');
subplot(2,2,2),imshow(noisy_img_gauss),title('添加高斯噪声后的图像');
subplot(2,2,3),imshow(filtered_img_gauss),title('高斯噪声去噪后的图像');
subplot(2,2,4),imshow(noisy_img_salt_pepper),title('添加椒盐噪声后的图像');
subplot(2,2,5),imshow(filtered_img_salt_pepper),title('椒盐噪声去噪后的图像');
```
阅读全文