专利名称:小波包快速重构方法
技术领域:
本发明涉及现代信息处理领域中一个快速发展的分枝——数据压缩技术,特别涉及一种小波包快速重构方法。
本发明主要针对小波包重构方法的改进,目前对小波变换尚没有很好的快速重构方法,由于小波变换其根本上只能采用卷积方法,因此不能象DFT(如果其维数为2的整数幂次)一样由于采用蝶形方法而大大加速(FFT方法),这也正是小波方法虽然具有许多优越于DCT方法的数学性质,但难于实用的瓶颈所在,但根据在小波的重构过程中需要多次插零值的特性,可以大大降低小波重构的计算量同时降低存储空间上的开销。
本发明的目的是小波包解码器中小波重构的一个快速方法,它为音频数据小波包压缩方案的实现提供保证,在对由音频小波包编码器得到的音频压缩码流进行解码时,可以应用于对解码速度和内存资源有较高的要求的场合。
本发明的目的可以按下述方式实现,首先确定子带0插值的规律,在计算时跳过这些0插值点的计算。
图1为每帧分为16个子带,共128个样本点的小波包分解示意图。
图2为小波包解码中子带合成的过程示意图。
图3为小波分解树(由上至下)和合成树(由下至上)示意图。
以如图1所示的小波包分解为例,其分解样本每帧长度为128点,其中第1-4子带各为1个样本点,第5-6子带各为2个样本点,第7-13子带各为8个样本点,第14-15子带各为16个样本点,第16子带为32个样本点。
合成子带时,按常规方法,各子带插值分别与合成小波滤波器卷积后相加,如图2所示然而这种方法有很明显的没有效率的地方,(1)首先各子带均有相当多的零参与卷积,而且需要系统分配大量RAM去存储16个序列,明显缺乏执行效率。因此根据小波分解序列的特点,提出快速方法,它的主要优点在于(2)它充分考虑了子带0插值的规则性,在计算时避开了这些0插值点的计算;(3)它只需一个Buffer去存储必要的数据,因此极大地减少了存储空间。
与常规方法相比,本发明方法能极大地提高合成方法的运算效率,并且节省了大量的RAM分配。本发明的快速方法和通常卷积方法均采用DB-10小波作为小波基,小波树结构均如附图1所示,其重构128点的计算量和RAM空间占用情况对比如下(滤波器长度分别为1144,1144,1144,1144,568,568,136,136,136,136,136,136,136,64,64,28)常规方法计算量(乘法)=16*(4*(1144*128)+2*(568*128)+7*(136*128)+2*(64*128)+28*128)=872960*16;常规方法RAM空间=4*(1144+128)+2*(568+128)+7*(136+128)+2*(64+128)+28+128=8868本文算法计算量(乘法)=16*(4*(1144/128*128)+2*(568/64*128)+7*(136/16*128)+2*(64/8*128)+28/4*128)=17408*16本文方法RAM空间=4*(1144+128)/128+2*(568+128)/64+7*(136+128)/16+2*(64+128)/8+(28+128)/4=264结合某一具体小波滤波器前后还具有许多零元,则其计算量还可以大幅降低。
不难发现,其对比效果是惊人的。
实现本文快速方法的核心C-伪代码for(ii=O;ii<子带数;ii++){samplept=sample+帧长-1;∥指向数据帧的末尾for(int i=0;i<样本序列长度;i++)
{ConvResult=0;for(int j=0;j<该子带中的样本数;j++){∥计算该次计算所对应的滤波器和输入样本序列的起始运算位置∥gap为该子带样本间的0插值数。
kBegin=((i-j*gap+Ox7F) & OxFFFFFF80);for(int k=kBegin;k<=子带滤波器长度;k+=帧长)ConvResult+=样本序列[k]*子带滤波器[k];}(*samplept--)+=ConvResult;}}∥End ii loop
权利要求
1.小波包快速重构方法,其特征在于首先确定子带0插值的规律,在计算时跳过这些0插值点的计算。
全文摘要
本发明涉及现代信息处理领域中一个快速发展的分枝——数据压缩技术,特别涉及一种小波包快速重构方法。本发明其特征在于首先确定子带0插值的规律,在计算时跳过这些0插值点的计算。本发明方法能极大地提高合成方法的运算效率,并且节省了大量的RAM分配。
文档编号G06T9/00GK1319952SQ01109620
公开日2001年10月31日 申请日期2001年3月13日 优先权日2001年3月13日
发明者陈笑天, 潘兴德, 顾春来 申请人:北京阜国数字技术有限公司