小波阈值降噪matlab代码
时间: 2023-10-15 21:01:18 浏览: 89
小波阈值降噪是一种常用的图像降噪方法,可以有效地去除图像中的噪声。以下是一个简单的小波阈值降噪的Matlab代码示例:
```matlab
% 读取原始图像
originalImage = imread('original_image.jpg');
subplot(2, 2, 1);
imshow(originalImage);
title('原始图像');
% 对原始图像进行小波变换
[LL, LH, HL, HH] = dwt2(originalImage, 'haar');
% 选择合适的阈值
threshold = 0.1 * max(abs(HH(:)));
% 对小波系数进行阈值处理
HH1 = HH.* (abs(HH) > threshold);
LH1 = LH.* (abs(LH) > threshold);
HL1 = HL.* (abs(HL) > threshold);
% 将处理后的小波系数重构回原始图像
reconstructedImage = idwt2(LL, LH1, HL1, HH1, 'haar');
subplot(2, 2, 2);
imshow(uint8(reconstructedImage));
title('去噪后的图像');
% 计算噪声能量
noiseEnergy = norm(HH(:))^2 / numel(HH);
% 计算信噪比
snr = 10 * log10( sum(originalImage(:).^2) / noiseEnergy );
% 显示信噪比
subplot(2, 2, 3);
imshow(originalImage);
title(['信噪比:', num2str(snr), ' dB'])
```
这段代码首先读取原始图像,然后使用Haar小波变换将图像分解为低频(LL)和高频(LH, HL, HH)部分。然后通过选择合适的阈值对高频部分进行阈值处理,将小于阈值的高频系数置零。最后将处理后的小波系数与低频部分进行逆小波变换,得到去噪后的图像。同时计算噪声能量和信噪比,并在图像上显示信噪比值。
阅读全文