编写 MATLAB 代码实现图像去噪经典算法(均值滤波,高斯滤波,双边滤波,中值滤波),并且对添加了高斯噪声、泊松噪声、乘性噪声和椒盐噪声的图片分别进行去噪并比较性能,包括信噪比等指标。
时间: 2023-12-08 08:03:05 浏览: 148
以下是一个示例 MATLAB 代码,可以实现均值滤波、高斯滤波、双边滤波和中值滤波,并且对添加了不同类型噪声的图像进行去噪,包括计算信噪比等指标。
```matlab
% 读入图像
original_img = imread('lena.png');
figure, imshow(original_img), title('原始图像');
% 添加高斯噪声
noisy_img = imnoise(original_img, 'gaussian', 0, 0.01);
figure, imshow(noisy_img), title('添加高斯噪声后的图像');
% 均值滤波
mean_filtered_img = imfilter(noisy_img, fspecial('average', [5 5]));
figure, imshow(mean_filtered_img), title('均值滤波后的图像');
% 高斯滤波
gaussian_filtered_img = imgaussfilt(noisy_img, 1);
figure, imshow(gaussian_filtered_img), title('高斯滤波后的图像');
% 双边滤波
bilateral_filtered_img = imbilatfilt(noisy_img, 2, 0.1);
figure, imshow(bilateral_filtered_img), title('双边滤波后的图像');
% 中值滤波
median_filtered_img = medfilt2(noisy_img, [3 3]);
figure, imshow(median_filtered_img), title('中值滤波后的图像');
% 计算信噪比等指标
original_img = double(original_img);
noisy_img = double(noisy_img);
mean_filtered_img = double(mean_filtered_img);
gaussian_filtered_img = double(gaussian_filtered_img);
bilateral_filtered_img = double(bilateral_filtered_img);
median_filtered_img = double(median_filtered_img);
PSNR_noisy = psnr(noisy_img, original_img);
PSNR_mean = psnr(mean_filtered_img, original_img);
PSNR_gaussian = psnr(gaussian_filtered_img, original_img);
PSNR_bilateral = psnr(bilateral_filtered_img, original_img);
PSNR_median = psnr(median_filtered_img, original_img);
SSIM_noisy = ssim(noisy_img, original_img);
SSIM_mean = ssim(mean_filtered_img, original_img);
SSIM_gaussian = ssim(gaussian_filtered_img, original_img);
SSIM_bilateral = ssim(bilateral_filtered_img, original_img);
SSIM_median = ssim(median_filtered_img, original_img);
fprintf('添加高斯噪声后的图像:\n');
fprintf('PSNR: %.2f dB\n', PSNR_noisy);
fprintf('SSIM: %.2f\n', SSIM_noisy);
fprintf('均值滤波后的图像:\n');
fprintf('PSNR: %.2f dB\n', PSNR_mean);
fprintf('SSIM: %.2f\n', SSIM_mean);
fprintf('高斯滤波后的图像:\n');
fprintf('PSNR: %.2f dB\n', PSNR_gaussian);
fprintf('SSIM: %.2f\n', SSIM_gaussian);
fprintf('双边滤波后的图像:\n');
fprintf('PSNR: %.2f dB\n', PSNR_bilateral);
fprintf('SSIM: %.2f\n', SSIM_bilateral);
fprintf('中值滤波后的图像:\n');
fprintf('PSNR: %.2f dB\n', PSNR_median);
fprintf('SSIM: %.2f\n', SSIM_median);
```
注意:以上代码仅供参考,具体实现可能需要根据实际情况进行修改。
阅读全文
相关推荐
















