分享

[转载]小波基构造与多孔算法-屈小波?个人?主页?网站-中国教育人博客

 leelyq 2010-07-29
转载]小波基构造与多孔算法 (2008-02-18 20:54)

对小波的分解有几种模式,按照边界补零方式、边界缠绕方式、边界平滑方式以及周期延拓方式。其中,使用周期延拓模式,可以使得小波分解的信号个数与理论值相符;但在信号重构时,各级的信号个数怎样才能做到与理想个数一致呢?比如,信号1024点,分4层,各层系数分别为512,256,128,64,64。另外一个问题,小波分解有这么多种模式,不同的模式得到的小波系数不同,我要算信号能量,不知哪种适合?(分解时我采用的dwtmode('per');)不需要,补任何值。用圆周卷积就行了。

 

小波发展到今天,在各个领域的应用都受到了重视。但看了许多文献、论文,觉得咱们国内的小波研究领域,90%都局限于应用,说得在实在些就有点照葫芦画瓢。其实,小波的基本概念、基本理论还是国外一些大师的东西。这几天,在看小波基的构造方法,有点乱,说出来大家看看,给些帮助和建议。
1、由尺度函数出发-->正交尺度函数-->滤波器h-->正交小波;这是基于MRA思想的小波构造方法,不过好像都是大师们的专利,没有看到实际有人这样做,各种参考书在介绍这种方法是也是引用的资料;
2、滤波器构造方法。直接构造满足要求条件的滤波器h(比如对称性、支集长度等),再计算滤波器g,再由两尺度方程导出的滤波器与尺度函数、小波函数间的关系,得到尺度函数与小波函数;
3、目前说的比较多的好像是提升算法,我还没看,一点不懂什么意思。看到有一篇文章说,由提升算法,可以从已知小波直接构建新的小波。不知道这种构建得到的小波与原来的小波有多大的区别,也就是它们之间的性质可以改变多少,又有什么内在的联系。
小波的构造文章有很多,不过形成系统理论的还是前两种,本人正在郁闷中,望大侠多指教。

基于提升格式的第二代小波有如下特点:
(1)本位操作:所有运算可作本位操作,节省内存;
(2)效率高:利用复合复制,减少了浮点运算量;
(3)并行性:一个上升步骤中的所有操作是并行的,而多个上升步骤之间是串行的;
(4)逆变换:逆变换只须简单地改变代码执行的先后顺序,具有与正向变换相同的计算复杂性;
(5)通用性:由于变换过程中不必依赖Fourier分析,很容易推广到一般性应用领域;
(6)易于构造非线性小波变换(如整数变换)。

 

小波边缘提取方法中的多孔算法能否得到二值图像的边缘,我看过网上流传的一个比较好的多孔算法的程序,不过得到的并不是二值边缘图像。不知道多孔算法进行二值图像边缘提取的思想是什么?另外如果不用滤波器进行边缘检测时,想进行多尺度的边缘提取,对于尺度这个参量该如何在程序中进行体现?

小波的问题在那里?其中之一,平移不变性。说白了,先将源信号平移n位,再做小波变换,和先将源信号做小波变换,再平移n位,结果不同。这对于实时处理和一些场合是极为不便的。(gibbs效应于此也有关)。

怎么办?多孔算法(a trous)可以解决此瓶颈。多孔算法,又称非抽取小波变换,即undecimated wavelet transform or nonsampled wavelet transform,简写(NSWT)。(有可能二进小波变换也是一个意思)。

实现多孔算法,需要什么呢?回答MALLAT算法是基础。若你不懂MALLAT,请去学习,或看我置顶的贴子。我可以告诉大家,我写TROUS代码从看论文到完成只用了10分钟。

但单单MALLAT算法够吗?答案否定的。我们必须找到两种算法的不同点。方可得心应手。这里我浅谈一二。

首先,为什么MALLAT不具有移不变特点而TROUS具有移不变特点。根源就在抽取插值上。看这个系统Y(N)=X(2N),它是不是移不变系统,显然不是。现在大家明白了吧。所以非抽取算法,是移不变的。而这个移不变所付出的代价,就是高频分量加低频分量长度再不是源信号的长度,而是源信号长度的2倍。

其次,滤波器还是可以用,WFILTERS()。而且重构和分解滤波器的关系,还是逆序后再右移一位(圆周卷积+周期延托)。但所有的滤波器系数要乘以SQRT(2)/2。为什么,答案在PR条件上。MALLET算法PR条件有两个,一个是抗混叠,另一个是完全重构。而多孔算法由于非插值抽取,只有完全重构,且等式的右边常数是“1”,而不是MALLET-PR条件的“2”。所以MALLET的PR条件要乘以“1/2”才和TROUS一致,而这个因子“1/2”正好被分配到两个滤波器上,所以是SQRT(2)/2。

再次,在每一层的下一层,滤波器中间要插值0。为什么?从谱上看,这是小波最经典的物理意义。数字信号一个周期的频谱范围为[-PI PI],MALLAT算法的低通滤波[-PI/2 PI/2],高通滤波[-PI -PI/2] U [PI/2 PI],则滤波后低频分量频谱范围[-PI/2 PI/2]。这时注意“开始抽取,频谱展宽”,又回到源信号频谱[-PI PI],然后再低通、高通滤波,周而复始。(小波包的问题顺便也说一下,实际上将高频抽取,频谱展宽后,发生了频谱颠倒现象,论坛里对此有精彩讨论,对此不再赘述。)而多孔呢?情况变了。低频分量始终是[-PI/2 PI/2],若低通滤波器仍是[-PI/2 PI/2],高通滤波器[-PI -PI/2] U [PI/2 PI],岂不是有些可笑吗?于是“滤波器插值”极其精妙的登场。低通和高通滤波器频谱变窄,低通[-PI/4 PI/4],高通[-PI/2 -PI/4] U [PI/4 PI/2],这下物理概念对了。那多孔有没有小波包呢,留给大家探讨。

 

连续小波变换的概念、操作、及时间尺度图的显示

1。连续小波的概念。就是把一个可以称作小波的函数(从负无穷到正无穷积分为零)在某个尺度下与待处理信号卷积。改变小波函数的尺度,也就改变了滤波器的带通范围,相应每一尺度下的小波系数也就反映了对应通带的信息。本质上,连续小波也就是一组可控制通带范围的多尺度滤波器。

2。连续小波是尺度可连续取值的小波,里面的a一般取整数,而不像二进小波a取2的整数幂。从连续小波到二进小波再到正交离散小波,其实就是a、b都连续,a不连续、b连续,a、b都不连续的过程。操作他们的快速算法也就是卷积(快速傅里叶),多孔(a trous),MALLAT。在MATLAB里,也就是CWT,SWT,DWT。SWT称平稳小波变换、二进小波变换、或者非抽取小波变换。

3。从冗余性上:CWT>SWT>DWT,前面两个都冗余,后面的离散小波变换不冗余。

4。从应用上:CWT适合相似性检测、奇异性分析;SWT适合消噪,模极大值分析;DWT适合压缩。

5。操作。就是在某个尺度上得到小波的离散值和原信号卷积,再改变尺度重新得到小波的离散值和原信号卷积。每一个尺度得到一个行向量存储这个尺度下的小波系数,多个尺度就是一个矩阵,这个矩阵就是我们要显示的时间-尺度图。

6。显示。“不要认为工程很简单”。我的一个老师说过的话。小波系数的显示还是有技巧的。很多人画出的图形“一片乌黑”就是个例子。第一步,一般将所有尺度下的小波系数取模;第二步,将每个尺度下的小波系数范围作映射,映射到你指定MAP的范围,比如如果是GRAY,你就映射到0-255;第三步,用IMAGE命令画图;第四步,设置时间和尺度坐标。MATLAB是个很专业的软件,它把这些做的很好,但也就使我们懒惰和糊涂,我是个好奇心重的人就研究了下。里面有个巧妙的函数把我说的(1,2)两个步骤封装在了一起,就是WCODEMAT,有兴趣的同学可以看看

1
0
评论 (1) | 阅读 (292) | 收藏 (0)

 

评论

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多