Matlab 图像小波变换

二维小波变换和一维小波变换十分类似,下面直接通过例子说明。

1. 读入原始图像并显示
I_noise = imread( 'coins.png');
figure, imshow(I_noise);
title( '原始图像' );
Matlab <wbr>图像小波变换

2. 对图像进行一层小波分解 dwt2
[cA1, cH1, cV1, cD1] dwt2(I_noise, 'bior3.7');
figure
subplot(221), imshow(cA1, []);
subplot(222), imshow(cH1, []);
subplot(223), imshow(cV1, []);
subplot(224), imshow(cD1, []);
Matlab <wbr>图像小波变换
可以看出,第一张图是图像的近似,相当于图像的低频部分,而其它三张图是图像的轮廓,也就是水平,垂直和对角三个方向的细节。是图像的高频部分。至此,各变量的维数如下所示。
Matlab <wbr>图像小波变换

3. 使用upcoef2 从系数中构建近似和细节
A1 upcoef2('a'cA1, 'bior3.7'1);
H1 upcoef2('d'cH1, 'bior3.7'1);
V1 upcoef2('v'cV1, 'bior3.7'1);
D1 upcoef2('d'cD1, 'bior3.7'1);
figure
subplot(221), imshow(A1, []);
subplot(222), imshow(H1, []);
subplot(223), imshow(V1, []);
subplot(224), imshow(D1, []);
Matlab <wbr>图像小波变换
从结果上看,似乎与小波分解得到的直接结果非常接近。但查看一下变量的大小,就会发现重构得到的结果,其维数与原始图像的维数基本一致(稍大一些),而小波分解得到的结果则近似是一个1/2 递减的过程。
Matlab <wbr>图像小波变换

4. 多重小波分解 wavedec2
[C, S] wavedec2(I_noise, 2, 'bior3.7');
C代表分解系数的组合,是一个向量
Matlab <wbr>图像小波变换
S表示每一层分解结果的维数,如果进行n层小波分解,S 的大小是(n+1)*2,最后一行表示的是原始图像的size
Matlab <wbr>图像小波变换

5. 利用 waverec2 进行小波重构
I_wrec waverec2(C, S, 'bior3.7');
figure, imshow(I_wrec, []);
Matlab <wbr>图像小波变换
可以看出,使用 waverec2 重构得到的结果不像使用 upcoef2 那样多出黑边,此外,通过查看变量维数可以发现,I_wrec 的维数与原图像相同。
Matlab <wbr>图像小波变换

6. 利用 appcoef2 抽取第一层低频近似系数和第二层低频近似系数。
wcA2 appcoef2(C, S, 'bior3.7'2);
figure, imshow(wcA2, []);
wcA1 appcoef2(C, S, 'bior3.7'1);
figure, imshow(wcA1, [])
Matlab <wbr>图像小波变换

可以看出,二者大小上存在差异,但显示内容大致相同。
Matlab <wbr>图像小波变换
对比还可发现,wcA1 的 size 与 dwt2 分解得到的 cA1 是相同的,事实上,二者基本是等价的。

7. 使用 upcoef 重构
I_wup2 upcoef2('a'wcA2, 'bior3.7'2)
figure, imshow( I_wup2, []);
I_wup1 upcoef2('a'wcA1, 'bior3.7'1);
figure, imshow(I_wup1, []); 这个结果与dwt2 部分得到的 A1 相同
Matlab <wbr>图像小波变换

这里为了简便,只重构了一层和二层的近似结果,如果需要对细节进行重构,只需将'a' 换成'h', 'v' 或者 'd' 即可。从图中可以发现,一层重构得到的图像要相对准确很多,这是因为二层小波近似所丢失的信息更多。

8. 抽取第一层细节 detcoef2
[chd1, cvd1, cdd1] detcoef2('all'C, S, 1);
figure
subplot(131), imshow(chd1, []);
subplot(132), imshow(cvd1, []);
subplot(133), imshow(cdd1, []);
Matlab <wbr>图像小波变换
同理,这个结果与 dwt2 得到的结果是一致的,所有变量的 size 如下图所示。
Matlab <wbr>图像小波变换

9. wrcoef2 对小波进行单支重构
Matlab help 中的例子如下
Matlab <wbr>图像小波变换
实际上,wrcoef2 的过程就相当于 appcoef2 或者 detcoef2 后再进行 upcoef2。其得到结果的 size 应该比原信号稍大一些。



  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值