通信与信息系统汪金涛矢量量化的图像压缩技术矢量量化过程:矢量量化码书的设计A编码阶段B解码阶段C选择最优训练码书•要实现信噪比高的矢量量化压缩图像,先要建立一个优质的训练码书。要做好矢量量化算法,建立好的训练码书是关键。•采用的压缩图像是512*512的,先选择码书大小为64的为例,这样每个图像就是8*8的图像块,再设定码书中码字的大小为4*4。一在程序中,先定义好码书的大小与码书中码字的大小01020202020202对图像的每个图像块进行归类,由于码书中码字的大小为4*4,即原图像中每16个数值为一个图像块03对图像重新排列,变成每行只有16个数值每列则有16384个数值512*512/16二三•通过这样的重新安排,对于图像在设计训练码书时每个码字做比较有较好的帮助,不用担心程序因为找不到接着的图像数值进行迭代比较而重复比较,或者进入死循环,以至于不断地无休止地重复比较.•码本设计对压缩性能产生重要影响,码本设计的好坏直接关系到图像矢量量化的质量。•最著名的优化码本设计算法是由Linde等人提出的LBG算法。其主要思想是:从一组码矢量出发,将所有的图像适量进行划分,然后再重新计算码矢量,直到码矢量的变化收敛时,即完成了码书的选择。LBG算法的基本步骤如下:•初始化,给定码书码本大小N;对于计算},1,...,2,1,0;{,000NiyYi1,0,1,...,2,1,0,DmIjxi},1,...,2,1,0;{NiyYmim10))(,(1)(IjjmjmmxQxdIQD若停止;寻找令,返回•其中,I表示训练矢量的个数,m表示循环迭代次数,)()()(11mmmmmmQDQDQD},1,...,2,1,0);({)(NiRxYxim)(1mmYxY•表示训练矢量和在第m次迭代代码本中对应码字的失真误差,如果失真误差用欧式距离的平方来测量,则定义为:•步骤(4)中的是对码字集重新进行优化分割,是对重新分割所得到的,统计出其质心。由于,从而保证了算法的收敛性。))(,(jjxQmxdjx))(,(jjxQmxd2)())(,(jjjjxQmxxQmxdmYmY}1,...,2,1,0);({)(NiRxYximiR)(iRx)()(11mmmmQDQD•由于矢量量化压缩图像的方法就是对图像行比较,选出最贴近码书中码字的数值,用码书中的数值代替该图像中对应位置上的数值,而且代入的数值只是对应码字的位置编号,并不是该码字的数值,通过这样的方法对图像进行压缩。最后图像中,出现的数值就是1~64,分别代表每个位置中,对应的训练码书中的数值。•考虑到每个码字都是以大小为4*4的数值代表的,因此,在取代时,都需要用4*4个数组来代表。于是根据上面建立码书时的训练码书建立前的过程,在编写编码器的时候,也要把图像变成行数16384,列数为16的数组矩阵,这样才可以对应训练码书中的数组要求。•对图像进行编码,就是在码书的码字中寻找满足公式:的码字中的编号代替原图像中的数值。对图像进行距离的计算,并得出最相近数值,用其对应的编号进行代替,从而实现矢量量化的压缩过程。压缩后,图像中的所有数据都被码书中码字的编号代表了,这样就压缩了数据的存储量,实现了编码中压缩算法的目的。)()()(11mmmmmmQDQDQD•在解码器中,要实现的功能就是查码书中的码字,通过压缩后的数字排列,在码书中找出相应的数值,并代入原图像的对应位置。得出的图像就是对应的解码图像,由于压缩时编码的数值都是用近似训练码书中的码字代替的,因此还原后,图像会有一定的失真。当把码书的大小改为siz_book=512时,图像明显比码书为64时清晰,因为码书为64时候所分的区间大,导致图像解码时不精确度加大。当siz_book=1024时,与siz_book=512时的矢量量化后图片变化很小,很难用眼睛区分开来,这说明了影响图片质量的主要因素不是码书的大小了,而是码字的大小或者其他因素,导致图片解码后不够清晰。同时码字的大小也对矢量量化编码的影响很大,当码字较小时,图片的轮廓更加清晰,而码字变大时,图片编码更加模糊。由上所述,LBG算法是一个不断迭代、不断调整聚类中心的过程,聚类速度慢,初始点的选取对聚类影响大。所以如何克服经典LBG算法因迭代次数过大而导致程序运行时间长的缺点值得进一步对算法研究,提出不仅缩短运行时间,又能提高解码出来后图像的质量的算法。谢谢大家