小波变换 算法_基于AltiVec技术的小波变换优化算法
摘要:小波变换克服了传统傅立叶变换的缺点,具有良好的时频局部化性能,从而使得小波理论在图像处理领域得到广泛的应用。PowerPC G4系列以后的CPU中增加了SIMD扩展指令集,并命名为AltiVec技术,利用这些指令可以显著提高需要处理大量数据运算的软件的效率。本文提出了一种基于AltiVec技术的小波变换优化算法,实验结果表明此算法是行之有效的。
关键词:多分辨分析;小波变换; PowerPC; Altivec
An Optimized Algorithm of Wavelet Transform Based on Altivec
XIE Xue-jun, SUN Jia-xing, LI Bin, HUANG Lei, FAN Zhi-ping
(Department of Integrated Circuit, Ministry of Information Industry Software
and Integrated Circuit Promotion Center, Beijing 100038, China)
Abstract: The Wavelet Transform overcomes the disadvantage of the traditional Fourier Transform and has very good time-frequency localization performance, which brings the Wavelet Theory into the image processing fields. PowerPC G4"s and higher families extend the SIMD instruction set in CPU, which is named as AltiVec. With these instructions we can improve the efficiency of the software dealing with a large amount of data. This paper proposes an optimized algorithm based on AltiVec technology for wavelet transform, and the experiment result indicates that it works well.
Keywords: Multi-Resolution Analysis; Wavelet Transform; PowerPC; Altivec
1小波多分辨分析
多分辨率分析(Multi-Resolution-Analysis, MRA)的主要思想是将L2(R)分解为一串具有不同分辨率的子空间序列,该子空间序列的极限就是L2(R) ,然后将L2(R)中的函数描述为具有一系列近似函数的逼近极限, 其中每一个近似函数都是在不同分辨率子空间上的投影。有了这种逼近的思想,人们引入了多分辨率分析的概念。
定义1[MRA]. 空间L2(R)的一个多分辨率分析由其中的一个嵌套闭子空间序列{Vj}j?缀z构成, 且这些闭子空间满足:
(5)Riesz基:存在函数θ,使得平移后的函数系{θ(t-k)}k?缀Z是V0的一组Riesz基。
按照多分辨分析的思想,只要知道任一个子空间的基,就可以通过MRA的尺度伸缩得到相邻子空间的基,然后再通过逼近性质得到全空间的基。 而性质(5)说明,我们可以通过Riesz基的规范正交化构造出V0中的规范正交基。
下面的引理给出了空间中V0的任一函数Φ(t)的平移系{Φ(t-k)}k?缀Z构成规范正交系的充要条件。
引理2设Φ(t)为V0空间中的任一函数,则{Φ(t-k)}k?缀Z构成规范正交系的充要条件为
这样,我们就可以由MRA的Reisz基得到V0中的规范正交基了。
定理3设{Vj}j?缀Z为L2 (R)上的一个多分辨率分析,θ为V0的Riesz基,那么由V0构造的下述函数φ(t):
它的平移系{φ(t-k)}k?缀Z构成V0的规范正交基。 进一步,它的伸缩平移函数:
φj,k(t)=2-j /2φ(2j t -k)
对所有j?缀Z,函数系{φj,k}k?缀Z是Vj的一组规范正交基。
函数φ(t)被称为尺度函数,Vj称为尺度空间, 而小波空间Wj是Vj-1中Vj的正交补空间,通过构造Wj的正交基,我们可以找到相应的小波函数ψ(t),因而尺度函数也被称为父小波。下面这个定理是多分辨分析的主要结果。
定理4设φ(t)为多分辨分析{Vj}j?缀Z的一个尺度函数,h(k)由
确定,g(k)由
确定,小波函数ψ(t) 由
确定,则对任何尺度2j,{ψj,k}k?缀Z是小波子空间Wj的一组规范正交基; 进一步地,对所有尺度2j, {ψj,k}(j,k)?缀Z2是L2(R)的一组规范正交基。
2小波分解的Mallat算法
小波变换将信号x(t) 表示为一簇函数的加权和,而这簇函数是由基本小波ψ(t)经过伸缩平移而形成的。伸缩尺度为a,时间平移为b的小波ψa,b定义为
连续小波变换W(f)(a,b)的定义为
发明了一种有效的计算方法,该方法通过使用滤波器来完成。Mallat算法作为一种双通道子带编码方法实际上是一种经典的信号处理方法。
快速小波变换的分解过程不断将较高分辨率上的逼近PV j f分解为较低分辨率上的逼近PV j+1 f与小波系数PW j+1 f的和;重构过程从PV j+1 f和PW j+1 f恢复PV j f。下面给出Mallat小波分解与重构的公式。
定理5设{φj,k}k?缀Z为Vj的规范正交基, {φj,k}k?缀Z为Wj的规范正交基。函数f在空间Vj, Wj上的投影分别记为:
也就是我们所要求的小波变换W(f)(j,k)。
3一维小波变换程序实现
一般我们只需知道双通道滤波器组h(k)和g(k)即可对空间L2(R)作正交分解,h(k)本质上是一个低通滤波器的脉冲响应,它将输入信号的高频去掉,得到信号的低频信息;g(k)本质上是一个高通滤波器的脉冲响应,它收集余下的高频信息。
在此我们只考虑小波分解的过程实现。为了实现更好的分解效果,需要利用小波的正则性和消失矩来判断采用什么样的小波,这方面的内容可以参考文献[1][2][3]。下面是一维小波正变换的函数原型:
int dwt1d( float *signal, int size, float *hfilter, int hsize, float *lfilter, int lsize, int level)
其中,一维数组指针signal存放原始输入信号, size指定输入信号的长度; 一维数组指针hfilter存放高通滤波器脉冲响应g(k)的系数,hsize指定高通滤波器的长度;一维数组指针lfilter存放低通滤波器脉冲响应h(k)的系数,lsize指定低通滤波器的长度;level指定小波分解层数,即伸缩因子j的值。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 对于正交小波基而言,尺度函数与小波函数有相同的支集长度,从而高通滤波器与低通滤波器有相同的长度;但对于双正交小波基,尺度函数与对偶小波函数一般会有不同的支集长度。在这里我们采用正交小波基, 故总有hsize=lsize。
程序的主体部分用一个嵌套的循环语句组成, 其中,一维数组label[]在函数体内声明,其长度为level,用于存放各级小波变换时数据的长度。 浮点型变量highpass,lowpass用于存放临时的和值。 一维数组result[]长度与输入信号长度一致, 对于不同的分解层数$L$,我们都对它进行格式化: 前0□2-Ln-1个元素存放信号在分辨率j=L上的平均信息(即c L , k),之后的2-L n□2-(L-1)n-1个元素存放信号在分辨率j =L上的细节信息(即d L , k), ……,最后的2-1n□n-1个元素存放信号在分辨率j=1上的细节信息(即d1,k)。
for (j=0;j>1;
for (k=0;k 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
