matlab代码:1.对添加了高斯噪声(均值为0,标准差为5)的cameraman.tif图像,进行基于小波变换(小波基函数任选)的去噪处理、基于三种不同滤波器的去噪处理;计算去噪前后图像的峰值信噪比,显示原始图像、加噪图像和去噪图像;对上述实验结果进行比较与分析。
时间: 2024-02-25 08:53:59 浏览: 126
以下是可能实现上述要求的 MATLAB 代码(其中使用小波基函数为haar,三种滤波器分别是高斯、中值、维纳滤波器):
```matlab
% 读取图像并添加高斯噪声
I = imread('cameraman.tif');
J = imnoise(I, 'gaussian', 0, 5^2/255^2);
% 小波去噪
[thr, sorh, keepapp] = ddencmp('den','wv',J);
X = wdencmp('gbl',J,'haar',2,thr,sorh,keepapp);
% 高斯滤波器去噪
K1 = imgaussfilt(J, 2);
% 中值滤波器去噪
K2 = medfilt2(J, [3, 3]);
% 维纳滤波器去噪
K3 = wiener2(J, [3, 3]);
% 计算峰值信噪比
PSNR1 = psnr(I, J);
PSNR2 = psnr(I, X);
PSNR3 = psnr(I, K1);
PSNR4 = psnr(I, K2);
PSNR5 = psnr(I, K3);
% 显示原始图像、加噪图像和去噪图像
figure;
subplot(2, 3, 1); imshow(I); title('原始图像');
subplot(2, 3, 2); imshow(J); title('加噪图像');
subplot(2, 3, 3); imshow(X); title(sprintf('小波去噪 PSNR=%.2f', PSNR2));
subplot(2, 3, 4); imshow(K1); title(sprintf('高斯滤波器去噪 PSNR=%.2f', PSNR3));
subplot(2, 3, 5); imshow(K2); title(sprintf('中值滤波器去噪 PSNR=%.2f', PSNR4));
subplot(2, 3, 6); imshow(K3); title(sprintf('维纳滤波器去噪 PSNR=%.2f', PSNR5)));
```
该代码将显示原始图像、加噪图像和四种去噪图像,并计算每个图像的峰值信噪比。可以通过比较峰值信噪比和视觉效果来分析四种去噪方法的优缺点。
阅读全文