matlab中DWT处理图像
时间: 2023-10-25 21:06:51 浏览: 144
DWT(离散小波变换)在图像处理中常常被用来进行图像的压缩、去噪等操作。在MATLAB中,可以使用dwt2函数来进行二维离散小波变换。
以下是一个简单的代码示例,演示如何使用DWT对图像进行压缩:
```matlab
% 读入图像
img = imread('lena.jpg');
% 显示原始图像
subplot(2,2,1);
imshow(img);
title('Original Image');
% 对图像进行DWT
[cA,cH,cV,cD] = dwt2(img,'haar');
% 保留低频分量,舍弃高频分量
cH(:) = 0;
cV(:) = 0;
cD(:) = 0;
% 重构图像
img_compressed = idwt2(cA,cH,cV,cD,'haar');
% 显示压缩后的图像
subplot(2,2,2);
imshow(uint8(img_compressed));
title('Compressed Image');
% 计算压缩比
original_size = numel(img);
compressed_size = numel(cA) + numel(cH) + numel(cV) + numel(cD);
compression_ratio = original_size / compressed_size;
% 显示压缩比
subplot(2,2,[3,4]);
bar(compression_ratio);
ylim([0 1.2]);
title('Compression Ratio');
```
在这个例子中,我们首先读入了一个名为lena.jpg的图像,并使用subplot函数将原始图像、压缩后的图像和压缩比显示在同一张图中。然后,我们使用dwt2函数对图像进行离散小波变换,并保留低频分量,舍弃高频分量。最后,我们使用idwt2函数将变换后的系数重新组合成图像,得到压缩后的图像。我们还计算了压缩比,并将其显示在图中。
阅读全文