小波变换降维的matlab代码
时间: 2023-07-22 18:11:04 浏览: 43
以下是使用MATLAB进行小波变换降维的示例代码:
假设我们有一个大小为100x100的图像,我们希望将其压缩成一个50x50的图像。
```matlab
% 读入图像
img = imread('image.jpg');
% 将图像转换为灰度图
gray_img = rgb2gray(img);
% 将图像转换为double类型
double_img = im2double(gray_img);
% 进行2级小波变换
[cA2, cH2, cV2, cD2] = dwt2(double_img, 'haar');
[cA1, cH1, cV1, cD1] = dwt2(cA2, 'haar');
% 保留高频系数
cH1_low = imresize(cH1, [50 50], 'nearest');
cV1_low = imresize(cV1, [50 50], 'nearest');
cD1_low = imresize(cD1, [50 50], 'nearest');
% 重构图像
low_img = idwt2(cA1, cH1_low, cV1_low, cD1_low, 'haar');
% 显示原始图像和压缩后的图像
figure;
subplot(1,2,1);
imshow(gray_img);
title('Original Image');
subplot(1,2,2);
imshow(low_img);
title('Compressed Image');
```
在上面的代码中,我们使用`dwt2`函数进行了2级小波变换,并保留了高频系数。然后,我们使用`imresize`函数将高频系数缩小为50x50的大小。最后,使用`idwt2`函数重构压缩后的图像。