wavedec2函数详解
2016-01-25 21:41
579 查看
很多人对小波多级分解的wavedec2总是迷惑,今天就详释她!
wavedec2函数:
1.功能:实现图像(即二维信号)的多层分解,多层,即多尺度.
2.格式:[c,s]=wavedec2(X,N,'wname')
[c,s]=wavedec2(X,N,Lo_D,Hi_D)(我不讨论它)
3.参数说明:对图像X用wname小波基函数实现N层分解,
这里的小波基函数应该根据实际情况选择,具体选择办法可以搜之或者 help WFILTERS
.输出为c,s.
c为各层分解系数,s为各层分解系数长度,也就是大小.
4.c的结构:c=[A(N)|H(N)|V(N)|D(N)|H(N-1)|V(N-1)|D(N-1)|H(N-2)|V(N-2)|D(N-2)|...|H(1)|V(1)|D(1)]
可见,c是一个行向量,即:1*(size(X)),(e.g,X=256*256,then c大小为:1*(256*256)=1*65536)
A(N)代表第N层低频系数,H(N)|V(N)|D(N)代表第N层高频系数,分别是水平,垂直,对角高频,以此类推,到H(1)|V(1)|D(1).
每个向量是一个矩阵的每列转置的组合存储。原文:Each vector is thevector column-wise storage of a matrix.
这是你理解A(N) H(N) | V(N) |D(N)
的关键。
很多人对wavedec2和dwt2的输出差别不可理解,后者因为是单层分解,所以低频系数,水平、垂直、对角高频系数就直接以矩阵输出了,没有像wavedec2那样转换成行向量再输出,我想你应该不再迷惑了。
那么S有什么用呢?
s的结构:是储存各层分解系数长度的,即第一行是A(N)的长度(其实是A(N)的原矩阵的行数和列数),
第二行是H(N)|V(N)|D(N)|的长度,
第三行是
H(N-1)|V(N-1)|D(N-1)的长度,
倒数第二行是H(1)|V(1)|D(1)长度,
最后一行是X的长度(大小)
从上图可知道:cAn的长度就是32*32,cH1、cV1、cD1的长度都是256*256。
到此为止,你可能要问C的输出为什么是行向量?
1、没有那一种语言能够动态输出参数的个数,更何况C语言写的Matlab
2、各级详细系数矩阵的大小(size)不一样,所以不能组合成一个大的矩阵输出。
因此,把结果作为行向量输出是最好,也是唯一的选择。
另:MATLABHELP wavedec2 里面说得非常明白了,呵呵.
wavedec2函数:
1.功能:实现图像(即二维信号)的多层分解,多层,即多尺度.
2.格式:[c,s]=wavedec2(X,N,'wname')
[c,s]=wavedec2(X,N,Lo_D,Hi_D)(我不讨论它)
3.参数说明:对图像X用wname小波基函数实现N层分解,
这里的小波基函数应该根据实际情况选择,具体选择办法可以搜之或者 help WFILTERS
.输出为c,s.
c为各层分解系数,s为各层分解系数长度,也就是大小.
4.c的结构:c=[A(N)|H(N)|V(N)|D(N)|H(N-1)|V(N-1)|D(N-1)|H(N-2)|V(N-2)|D(N-2)|...|H(1)|V(1)|D(1)]
可见,c是一个行向量,即:1*(size(X)),(e.g,X=256*256,then c大小为:1*(256*256)=1*65536)
A(N)代表第N层低频系数,H(N)|V(N)|D(N)代表第N层高频系数,分别是水平,垂直,对角高频,以此类推,到H(1)|V(1)|D(1).
每个向量是一个矩阵的每列转置的组合存储。原文:Each vector is thevector column-wise storage of a matrix.
这是你理解A(N) H(N) | V(N) |D(N)
的关键。
很多人对wavedec2和dwt2的输出差别不可理解,后者因为是单层分解,所以低频系数,水平、垂直、对角高频系数就直接以矩阵输出了,没有像wavedec2那样转换成行向量再输出,我想你应该不再迷惑了。
那么S有什么用呢?
s的结构:是储存各层分解系数长度的,即第一行是A(N)的长度(其实是A(N)的原矩阵的行数和列数),
第二行是H(N)|V(N)|D(N)|的长度,
第三行是
H(N-1)|V(N-1)|D(N-1)的长度,
倒数第二行是H(1)|V(1)|D(1)长度,
最后一行是X的长度(大小)
从上图可知道:cAn的长度就是32*32,cH1、cV1、cD1的长度都是256*256。
到此为止,你可能要问C的输出为什么是行向量?
1、没有那一种语言能够动态输出参数的个数,更何况C语言写的Matlab
2、各级详细系数矩阵的大小(size)不一样,所以不能组合成一个大的矩阵输出。
因此,把结果作为行向量输出是最好,也是唯一的选择。
另:MATLABHELP wavedec2 里面说得非常明白了,呵呵.
相关文章推荐
- <LeetCode OJ> 125. Valid Palindrome
- 【C++探索之旅】第一部分第七课:函数效应,分而治之
- 韩顺平 javascript教学视频_学习笔记13_类和对象细节_创建对象的几种方式_js对象内存分析
- 使用DrWeb修复hosts文件后无法再进行修改的解决方案
- [c++]实例-类array,重载操作符
- 多线程之handler
- 《笨办法学Python》 第23课手记
- PyQuery查询html信息
- xshell和xftp
- Permission is only granted to system apps
- 项目导包-->V7包报错及解决方法
- css 全局 兼容性问题
- hdu2973 YAPTCHA(威尔逊定理)
- 字典套数组
- 关于Dinic和当前弧优化_(:зゝ∠)_
- 从后台绑定数据到ligerui 的comboBox下拉框组件
- JAVA 笔记 七
- HDU 1175 连连看(DFS)
- 数学建模——公式
- Loader,SearchView概述