利用课程讲的滤波方法,自行设计滤波模板的内容和尺寸,分别对两个噪声图像进行去噪处理,得到的去噪结果,统一命名为denoise_lena_guassian和denoise_lena_salt_pepper。分别将去噪后的结果与原始图像(即没有噪声的lena_gray)进行比较。maTLab代码两种方法
时间: 2024-02-22 08:55:33 浏览: 64
好的,下面是利用MATLAB进行图像去噪的代码:
1. 高斯噪声图像的去噪
``` matlab
% 读入图像
img = imread('lena_gray.jpg');
% 添加高斯噪声
img_noise = imnoise(img, 'gaussian', 0, 0.01);
% 设计高斯滤波模板
G = fspecial('gaussian', [5 5], 1);
% 进行滤波操作
img_denoise = imfilter(img_noise, G);
% 显示原图、噪声图和去噪图
figure;
subplot(1,3,1); imshow(img); title('Original Image');
subplot(1,3,2); imshow(img_noise); title('Noisy Image');
subplot(1,3,3); imshow(img_denoise); title('Denoised Image');
% 计算信噪比
PSNR = psnr(img, img_denoise);
disp(['The PSNR of denoised image is ', num2str(PSNR), ' dB.']);
```
2. 椒盐噪声图像的去噪
``` matlab
% 读入图像
img = imread('lena_gray.jpg');
% 添加椒盐噪声
img_noise = imnoise(img, 'salt & pepper', 0.1);
% 设计中值滤波模板
M = medfilt2(img_noise, [5 5]);
% 进行滤波操作
img_denoise = imfilter(img_noise, M);
% 显示原图、噪声图和去噪图
figure;
subplot(1,3,1); imshow(img); title('Original Image');
subplot(1,3,2); imshow(img_noise); title('Noisy Image');
subplot(1,3,3); imshow(img_denoise); title('Denoised Image');
% 计算信噪比
PSNR = psnr(img, img_denoise);
disp(['The PSNR of denoised image is ', num2str(PSNR), ' dB.']);
```
其中,使用 `fspecial` 函数和 `medfilt2` 函数可以分别设计高斯滤波模板和中值滤波模板。在进行滤波操作时,使用 `imfilter` 函数进行处理。最后,使用 `psnr` 函数计算信噪比。
阅读全文