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