使用边界保持类平滑滤波器,编写matlab程序,对含噪声(高斯噪声或椒盐噪声)图像进行去噪,并显示去噪前后的图像。
时间: 2024-02-20 09:01:00 浏览: 26
好的,我可以提供一个Matlab的示例程序,使用边界保持类平滑滤波器对含噪声的图像进行去噪。程序中使用的是Matlab自带的图像处理函数。
```matlab
% 加载图像
img = imread('noisy_image.jpg');
img_gray = rgb2gray(img);
% 添加高斯噪声
mean = 0;
var = 100;
sigma = sqrt(var);
gaussian = sigma * randn(size(img_gray)) + mean;
noisy_image = im2double(img_gray) + gaussian;
% 添加椒盐噪声
salt_pepper_ratio = 0.05;
salt_pepper = rand(size(img_gray));
noisy_image(salt_pepper < salt_pepper_ratio) = 0;
noisy_image(salt_pepper > 1 - salt_pepper_ratio) = 1;
% 定义边界保持类平滑滤波器
d = 10;
sigma_color = 0.025;
sigma_space = 10;
filtered_image = bfilter2(noisy_image, d, [sigma_color, sigma_space]);
% 显示原图、含噪声图像以及去噪后的图像
subplot(1, 3, 1), imshow(img_gray), title('Original Image');
subplot(1, 3, 2), imshow(noisy_image), title('Noisy Image');
subplot(1, 3, 3), imshow(filtered_image), title('Denoised Image');
```
在程序中,我们先加载了一张图像并添加了高斯噪声和椒盐噪声。然后定义了一个边界保持类平滑滤波器,并使用该滤波器对含噪声的图像进行了去噪。最后,我们显示原图、含噪声图像以及去噪后的图像。
你可以根据自己的需要更改程序中的参数以及图像的读取方式,以适应不同的应用场景。