matlap利用Haar小波变换对一幅灰度图像分别进行一级小波分解和二级小波分解,得到各个部分的系数并组合在一起显示成一幅图像。
时间: 2023-07-22 09:23:23 浏览: 246
可以使用MATLAB中的`wavedec2`函数对一幅灰度图像进行小波分解,并使用`waverec2`函数对小波系数进行重构。以下是一级小波分解和二级小波分解的代码示例:
一级小波分解:
```matlab
% 读入灰度图像
img = imread('gray_image.jpg');
% 进行一级小波分解
[cA1, cH1, cV1, cD1] = wavedec2(img, 1, 'haar');
% 将小波系数组合在一起
coeffs1 = [cA1, cH1; cV1, cD1];
% 将小波系数重构成图像
reconstructed_img1 = waverec2(coeffs1, size(img), 'haar');
% 显示分解后的小波系数图像和重构后的图像
figure;
subplot(1,2,1); imshow(coeffs1, []); title('One-level wavelet decomposition');
subplot(1,2,2); imshow(reconstructed_img1, []); title('Reconstructed image');
```
二级小波分解:
```matlab
% 进行二级小波分解
[cA2, cH2, cV2, cD2, cH1, cV1, cD1] = wavedec2(img, 2, 'haar');
% 将小波系数组合在一起
coeffs2 = [cA2, cH2, cV2, cD2; cH1, cV1, cD1, zeros(size(cH1))];
% 将小波系数重构成图像
reconstructed_img2 = waverec2(coeffs2, size(img), 'haar');
% 显示分解后的小波系数图像和重构后的图像
figure;
subplot(1,2,1); imshow(coeffs2, []); title('Two-level wavelet decomposition');
subplot(1,2,2); imshow(reconstructed_img2, []); title('Reconstructed image');
```
注意,在二级小波分解中,需要使用一级小波分解得到的水平、垂直和对角线系数。
阅读全文