图像小波变换去噪matlab代码
时间: 2023-07-22 20:08:13 浏览: 124
以下是一个基于小波变换的图像去噪的 MATLAB 代码示例:
```matlab
% 加载图像
img = imread('lena.png');
% 将图像转换为灰度图像
img = rgb2gray(img);
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0.05);
% 小波变换去噪
[c, s] = wavedec2(noisy_img, 2, 'haar');
thr = wthrmngr('dw2ddenoLVL', c);
sorh = 's'; % 去噪方法,'s'表示软阈值
keepapp = 1; % 是否保留最低频率近似系数
denoised_c = wthresh(c, sorh, thr);
denoised_img = waverec2(denoised_c, s, 'haar');
% 显示结果
subplot(1, 3, 1);
imshow(img);
title('原始图像');
subplot(1, 3, 2);
imshow(noisy_img);
title('添加高斯噪声后的图像');
subplot(1, 3, 3);
imshow(denoised_img);
title('去噪后的图像');
```
该代码首先加载一张图像(这里使用的是 Lena 图像),然后将其转换为灰度图像。接下来,使用 `imnoise` 函数向原始图像中添加高斯噪声。然后,使用 `wavedec2` 函数进行二维小波变换,并使用 `wthrmngr` 函数计算阈值。在此基础上,使用 `wthresh` 函数对小波系数进行软阈值处理,再使用 `waverec2` 函数进行逆变换。最后,将原始图像、添加噪声后的图像以及去噪后的图像进行显示。
阅读全文