- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
离散小波变换dwt进行图象压缩的方法与实现-read
利用离散小波变换(DWT)进行图象压缩
刘亚 喻丹
利用小波变换对静态图像进行压缩是一种新兴起的图像压缩方法。上学期,在杨士强老师的指导下,我们小组在这方面做了一些研究工作。下面是我们的工作总结,主要包括我们进行图象压缩的基本实验过程和对压缩过程中某些技术细节问题的讨论。
图像压缩的基本过程
对一幅静态图像,进行压缩的基本步骤如下:
在我们的研究中,DWT变换使用的小波基函数是Daubechies紧缩正交小波基函数。我们对这类小波函数中的几个不同基函数做了实验对比,具体结果在第三部分。VQ编码采用了一种基于LBG的方案,并对其作了一些改进。为了获得尽可能高的压缩图像质量,我们对DWT结果中高频部分的不同频段采用了不同的量化编码策略。这个方案的细节问题比较多,在第二部分第三节有较详细的介绍。
对压缩结果进行解压缩的步骤正好相反:
压缩算法中的几处关键
离散小波变换(DWT)的基本原理与实现
小波变换与傅立叶(Fourier)变换有很多相似之处,它们都是把一个信号函数分解为某基函数适当形式的表示。这里我们取((t)为小波基函数,则连续小波变换(CWT)及其反变换可用公式表示为
( 1 ) ( 2 )
其中
( 3 ) ( 4 )
类似地,二进制的离散小波变换(DWT)可表示为:
( 5 ) ( 6 )
其中
( 7 )
由于DWT具有多分辨率的性质,因此在实际应用中,常以滤波器的形式来表示(如Quadrature Mirror Filter, QMF),其结构可图示如下:
图中g为低通滤波器,h为高通滤波器。用它们对信号S0进行滤波,得S1 和W1,分别表示低频信息和高频信息。对S1再进行滤波,又可得S2和W2……这样最后S0就被分解为W1,W2,W3,…,Wn,Sn。在实验中我们使用了Daubechies滤波器对,这是一种与Daubechies紧缩正交小波基函数, 相联系的滤波器对。在从小波基函数求得滤波器g,h后,DWT就只是简单的卷积运算了:
( 8 ) ( 9 )
其中L为滤波器长度。
关于小波变换与傅立叶(Fourier)变换的比较和DWT的具体算法以及多分辨率的有关知识,可以参考资料[1],[2]。
向量量化(VQ)的实现
向量量化的关键在于码本的训练和生成,我们在实验中采用的是一种比较经典的算法—LBG算法。该算法首先选定一大小为N的初始码本集(N为向量量化的级数),然后在该量化级数下通过迭代对码本进行训练、求精,以使最后训练向量集使用该码本进行量化的平均误差最小。训练码本的迭代算法可描述如下:
Algorithm 1(LBG)
初始化:以N表示量化的级数,(0表示误差阈值,初始码本集为A0={yi: i=1,…,N},以及训练向量集T={xi: i=1,…,n}。并设定m=0和D-1=(。
求得T关于Am的最小误差划分,P(Am)={Si; i=1,…,N}:xj(Si当且仅当对所有l,有d(xj,yi)(d(xj, yl)。并且计算该划分的平均误差
若(Dm-1-Dm) / Dm ( (,则Am即为所求码本;否则,令Am+1={Si的质心; i =1,…,N},用m+1取代m后转1)。
完全按LBG算法实现向量量化效率不高。为了提高向量编码、解码的速度,我们在LBG算法的基础上对以下两方面作了一些改进:
初始码本的生成
从LBG算法的描述可以看到,初始码本的选取对迭代次数有着直接的影响,使用一个随机生成的初始码本可能比一个按某种指标选取的初始码本需要多得多的迭代次数。由于直接寻找一个高效的量化级数为N1的初始码本比较困难,而在N=1时寻找初始码本则相当简单(取T的质心即可),因此我们可以考虑将码本向量不断地进行二分,同时对码本进行进行训练,以得到要求大小的结果码本。例如,设N=2L,开始时取T的质心作为码本。对该码本中每个向量进行二分(此时要利用到与该向量相关联的训练向量集Si),再对二分后的码本用上面提到的方法进行训练,就得到大小为2的结果码本。继续这样做下去,经过L步后,就可以得到所求的大小为N的码本。
我们在实验中采用的二分算法是一种称为DSBS(Direct-Search Binary Splitting)的利用向量集方向特性进行二分的算法。该算法可描述如下:
Algorithm 2(DSBS)
设向量集为Si={Xj; j=1,…,m},求得其均值u和协方差矩阵S分别为:
求出S的最大特征值(和对应的单位特征向量V,并对Si中每个向量Xj,求得
根据Wj的正负将其分为两类W1、 W2,分别求得两类的均值为
,
,
求出两个二分点C1、C2如下
,
这种方法利用了Si的空间分布规律,它根据Si的协方差矩阵来确定二分后的两个向量
文档评论(0)