二维小波变换和一维小波变换十分类似,下面直接通过例子说明。
1. 读入原始图像并显示
I_noise =
figure,
title( '原始图像' );
|
2. 对图像进行一层小波分解 dwt2
[cA1,
figure
subplot(221),
subplot(222),
subplot(223),
subplot(224), |
可以看出,第一张图是图像的近似,相当于图像的低频部分,而其它三张图是图像的轮廓,也就是水平,垂直和对角三个方向的细节。是图像的高频部分。至此,各变量的维数如下所示。
3. 使用upcoef2 从系数中构建近似和细节
A1
H1
V1
D1
figure
subplot(221),
subplot(222),
subplot(223),
subplot(224), |
从结果上看,似乎与小波分解得到的直接结果非常接近。但查看一下变量的大小,就会发现重构得到的结果,其维数与原始图像的维数基本一致(稍大一些),而小波分解得到的结果则近似是一个1/2 递减的过程。
4. 多重小波分解 wavedec2
[C, |
C代表分解系数的组合,是一个向量
S表示每一层分解结果的维数,如果进行n层小波分解,S 的大小是(n+1)*2,最后一行表示的是原始图像的size
5. 利用 waverec2 进行小波重构
I_wrec
figure, |
可以看出,使用 waverec2 重构得到的结果不像使用 upcoef2 那样多出黑边,此外,通过查看变量维数可以发现,I_wrec 的维数与原图像相同。
6. 利用 appcoef2 抽取第一层低频近似系数和第二层低频近似系数。
wcA2
figure,
wcA1
figure, |
可以看出,二者大小上存在差异,但显示内容大致相同。
对比还可发现,wcA1 的 size 与 dwt2 分解得到的 cA1 是相同的,事实上,二者基本是等价的。
7. 使用 upcoef 重构
I_wup2
figure,
I_wup1
figure, |
这里为了简便,只重构了一层和二层的近似结果,如果需要对细节进行重构,只需将'a' 换成'h', 'v' 或者 'd' 即可。从图中可以发现,一层重构得到的图像要相对准确很多,这是因为二层小波近似所丢失的信息更多。
8. 抽取第一层细节 detcoef2
[chd1,
figure
subplot(131),
subplot(132),
subplot(133), |
同理,这个结果与 dwt2 得到的结果是一致的,所有变量的 size 如下图所示。
9. wrcoef2 对小波进行单支重构
Matlab help 中的例子如下
实际上,wrcoef2 的过程就相当于 appcoef2 或者 detcoef2 后再进行 upcoef2。其得到结果的 size 应该比原信号稍大一些。
原文:点击打开链接