采用二维中值滤波分别对受高斯噪声、椒盐噪声干扰的图像滤波,窗口分别采用3*3,5*5,7*7。
时间: 2024-10-10 11:07:04 浏览: 53
基于MATLAB二维中值滤波的图像复原.pdf
二维中值滤波是一种非线性的平滑滤波方法,主要用于去除图像中的椒盐噪声和斑点噪声,因为它能够保留边缘信息而不会像高斯滤波那样过度平滑。以下是使用MATLAB进行不同窗口大小的二维中值滤波的步骤:
1. **读取带噪图像**:首先从文件或变量中获取受到高斯噪声和椒盐噪声的图像,如之前所述。
2. **设置滤波窗口大小**:
- `window_size_3x3`:例如`[3, 3]`
- `window_size_5x5`:例如`[5, 5]`
- `window_size_7x7`:例如`[7, 7]`
3. **高斯噪声滤波**:
- 使用`medfilt2`函数,第一个输入是图像,第二个输入是窗口尺寸:
```matlab
img_filtered_gaussian_3x3 = medfilt2(img, window_size_3x3);
img_filtered_gaussian_5x5 = medfilt2(img, window_size_5x5);
img_filtered_gaussian_7x7 = medfilt2(img, window_size_7x7);
```
4. **椒盐噪声滤波**:
```matlab
img_filtered_salt_pepper_3x3 = medfilt2(noisy_img_salt_pepper, window_size_3x3);
img_filtered_salt_pepper_5x5 = medfilt2(noisy_img_salt_pepper, window_size_5x5);
img_filtered_salt_pepper_7x7 = medfilt2(noisy_img_salt_pepper, window_size_7x7);
```
5. **创建图像数组**:
创建一个新的矩阵或cell数组来存储不同窗口大小下的滤波结果。
6. **显示结果**:
使用`subplot`和`imshow`函数显示原始图像、三种不同窗口大小下高斯噪声滤波后的图像和椒盐噪声滤波后的图像。
```matlab
figure;
for i = 1:2 % 高斯和椒盐噪声分别处理
for j = 3:5 % 窗口大小
subplot(2, 3, i * 3 + j - 4)
if i == 1
img_to_show = img_filtered_gaussian;
else
img_to_show = img_filtered_salt_pepper;
end
imshow(img_to_show(j-1:j, j-1:j)), title(sprintf('Window Size (%dx%d)', window_size(j), window_size(j)));
end
end
```
阅读全文