使用matlab对一幅图像,分别添加不同模板的高斯噪声、椒盐噪声,并进行直方图变换、均值滤波、中值滤波,最后分析滤波效果。代码
时间: 2024-03-26 16:40:40 浏览: 53
好的,以下是Matlab代码:
```matlab
% 读取图像
img = imread('your_image.jpg');
% 添加高斯噪声
gaussian_noise_img = imnoise(img, 'gaussian', 0, 0.01);
% 添加椒盐噪声
salt_pepper_noise_img = imnoise(img, 'salt & pepper', 0.02);
% 直方图变换
histeq_img = histeq(img);
gaussian_noise_histeq_img = histeq(gaussian_noise_img);
salt_pepper_noise_histeq_img = histeq(salt_pepper_noise_img);
% 均值滤波
mean_filter_img = imfilter(img, ones(3)/9);
gaussian_noise_mean_filter_img = imfilter(gaussian_noise_img, ones(3)/9);
salt_pepper_noise_mean_filter_img = imfilter(salt_pepper_noise_img, ones(3)/9);
% 中值滤波
median_filter_img = medfilt2(img, [3,3]);
gaussian_noise_median_filter_img = medfilt2(gaussian_noise_img, [3,3]);
salt_pepper_noise_median_filter_img = medfilt2(salt_pepper_noise_img, [3,3]);
% 展示结果
figure;
subplot(3,4,1);imshow(img);title('原图');
subplot(3,4,2);imshow(gaussian_noise_img);title('高斯噪声');
subplot(3,4,3);imshow(salt_pepper_noise_img);title('椒盐噪声');
subplot(3,4,4);imshow(histeq_img);title('直方图变换');
subplot(3,4,5);imshow(gaussian_noise_histeq_img);title('高斯噪声+直方图变换');
subplot(3,4,6);imshow(salt_pepper_noise_histeq_img);title('椒盐噪声+直方图变换');
subplot(3,4,7);imshow(mean_filter_img);title('均值滤波');
subplot(3,4,8);imshow(gaussian_noise_mean_filter_img);title('高斯噪声+均值滤波');
subplot(3,4,9);imshow(salt_pepper_noise_mean_filter_img);title('椒盐噪声+均值滤波');
subplot(3,4,10);imshow(median_filter_img);title('中值滤波');
subplot(3,4,11);imshow(gaussian_noise_median_filter_img);title('高斯噪声+中值滤波');
subplot(3,4,12);imshow(salt_pepper_noise_median_filter_img);title('椒盐噪声+中值滤波');
```
其中,`your_image.jpg` 为你所要处理的图像文件名,需要放在代码所在的文件夹内。
代码中使用 `imnoise()` 函数添加噪声,使用 `histeq()` 函数进行直方图变换,使用 `imfilter()` 函数进行均值滤波,使用 `medfilt2()` 函数进行中值滤波。最后使用 `subplot()` 函数将结果展示在一张图中,方便比较滤波效果。
注意:以上代码只是示例,具体使用中需要根据实际情况进行调整。
阅读全文