新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式零树小波EZW编码及其算法改进

嵌入式零树小波EZW编码及其算法改进

作者:时间:2011-08-18来源:网络收藏
SPIHT,它继承了图2所示的系数的零树结构,这里称作“空间方向树”结构。

本文引用地址:http://www.eepw.com.cn/article/150328.htm

  基于以上概念,在SPIHT中,集合的分割策略如下式所示:

  2)排序过程

  中使用了三个表:不重要系数表LIP(the list of insignificant pixels)、重要系数表LSP(the list of significant pixels)和不重要集合表LIS(the list of insiginificant sets)。LSP初始化为空表,LIP用最低频子带系数(如三级分解中的LL3、LH3、HL3、HH3中的系数)初始化,LIS用每一个空间方向树的根结点(如三级分解中的LH3、HL3、HH3中的系数位置)来初始化。

  对重要图的确定主要是通过空间方向树的多次分裂来实现的。一个三级空间方向树T(i,j)在初始化时分裂成树头结点c(i,j)和剩余集合D(i,j),见公式(1)。对c(i,j)判断其重要性,若重要则转到LSP中。对集合D(i,j) 进行重要性测试,若D(i,j)是不重要的,则D(i,j)用一个符号就可以表示出来。若D(i,j)是重要的,则D(i,j)继续分裂为两个集合O(i,j)和L(ij),如公式(2)。对O(i,j)中的每个元素分别进行重要性测试,把重要元素转到LSP中。对L(i,j)集合进行重要性测试,若L(i,j)不重要,则用一个符号就可以表示该集合,若L(i,j)重要,则L(i,j)分裂为四部分,每部分由相应空间方向树的位置上的元素构成,每一部分与O(i,j)中的四个元素分别构成四棵新树,由于每棵新树的头结点已经判断,只对新树的剩余部分也就是L(i,j)分裂出的四个集合即进行判断,见公式(3) 。如此重复对每棵树进行分裂和判断直到找出每棵树中的所有重要元素,把它们转到LSP中。可以看到SPIHT算法对重要图的排序是通过一系列的集合分裂完成的,即一棵树T(i,j)分裂成头结点元素c(i,j)和剩余部分D(i,j),对重要的D(i,j)继续分裂成头结点的直接四个孩子O(i,j)和剩余部分L(i,j),对重要的集合L(i,j)再继续分裂为四棵新树的剩余部分。

  对每棵树的分裂不是一次进行到底的,而是要按照一定的扫描顺序进行。对各个子带的扫描顺序与算法的扫描顺序相同。对由最低频子带(如LL3)和头结点构成的LIP中的元素是按从上到下、从左到右的顺序进行扫描的。而对其它子带则是按2×2的块为单位从上到下、从左到右依次扫描。对每个2×2块中元素还是按从上到下、对每个2×2块中元素还是按从上到下、从左到右顺序扫描。

  3) 量化过程:

  SPIHT采用与算法相同的逐次逼近量化。

  与EZW算法的比较:

  SPIHT算法继承了EZW算法中的系数的零树结构,这里称为“空间方向树结构”。该算法不但把零树作为一个集合,而且把剩余树(即除去头结点的零树)也作为一个集合处理。如图2,假设在HH3中的某个元素C(i,j)是重要的,而其后所对应的HH2、HH1中的元素是不重要的,则在EZW算法中第一次扫描把C(i,j)赋予符号P,对其后的所有元素形成四棵零树ZTR(2i,2j)、ZTR(2i,2j+1)、ZTR(2i+1,2j)、ZTR(2i+1,2j+1)。共用PZZZZ五个符号表示这样的一个结构。在SPIHT中C(i,j)即放在LIP中,又放在LIS中。对LIP中元素的比较之后把C(i,j)转到LSP中。而对LIS比较之后发现D(i,j)是不重要的(D(i,j_)是指以(i,j)为树根的树除去根结点外所有的结点),可用一个符号来表示。整个结构可用两个符号表示出来。所以该算法比EZW算法提高了压缩率。

  SPIHT算法初始化过程、细化过程类似与EZW算法,它了EZW 重要图的表示方法,也就是重要系数在表中的排序信息,使得集合的表示更为精简,从而提高了效率。SPIHT算法在不同的比特率下比EZW算法的峰值信噪比都有所提高[2]。

3.集合分裂嵌入块器SPECK

  3.1原理分析:

  对变换系数的分析可以看出,在系数中存在许多的不重要系数,尤其对于高频子带更是如此。在EZW算法和SPIHT算法中,主要是利用树结构来表示这些不重要系数。这两种方法虽然利用了子带间不重要系数的相关性,但是没有充分利用同一子带中不重要系数的相关性。为此 Asad 和 Pearlman提出了SPECK算法,该算法是近期分级图象编码算法中性能较好的一种。

  1)算法中用到的概念和定义

  集合定义:LIS——不重要系数集合列表 ,用最低频子带系数初始化(如三级分解中的LL3)。

  LSP——重要系数列表,存放重要系数以便进一步量化。

  集合S——放置待处理的块,用最低频子带系数初始化(如三级分解中的LL3)。

  集合I——放置除了S之外的剩余块集合,I=X-S,X是所有块的集合。

  块:相应小波分解的每一个子带定义一个相应的块。块可以是只包含单个元素,如8×8系数阵经过三级分解后对应的LL3、HL3、LH3和HH3都只包含一个元素。一般一个块中包含22N(N=0,1,2,…,n)个元素,其中,n-1是小波分解的层数。

  2)排序过程

  对于只包含一个元素的块,若重要则把它转到LSP中,以便进行进一步量化。对于包含2N×2N个元素的块,如果是不重要的,可以只用一个符号表示它。对于重要的块,则要等分为四个子块,然后从上到下、从左到右对各个子块进行重要性判断,对重要的子块继续分解,如此重复直到找出块中所有的重要系数,并把它转到LSP表中,以便进一步量化。

  对各个块的处理顺序是与EZW算法对子带的扫描顺序是相同的,即从低频块(子带)依次到高频块(子带)。具体在SPECK算法中,采用一种称为倍频程分裂的方法,来决定各块扫描顺序。初始化时集合X由所有块构成,集合S是由最低频块(如LL3)来初始化,而剩余集合I=X-S。集合I依次分解出三个最低频的块(如HL3,LH3,HH3)和剩余集合I。然后对剩余集合I再进行一次分裂,分解出三个次最低频的块(如HL2,LH2,HH2),如此重复直到把所有的块分裂出来,直到剩余集合I变为空集。这样就可以把各个块依次排列,重要图扫描就是以此顺序来进行。

  通过以上两步,就可以把重要系数重要性放到表LSP中,以便下一步的逐次量化。

  3)量化过程

  SPECK算法的量化、求初始阈值与EZW算法相同。

  SPECK算法的特点如下:①以上三种算法在扫描顺序和量化过程是一样的,差别在于对不重要系数的表示方法,EZW采用零树结构,SPIHT采用空间方向树,SPECK采用块结构。SPIHT算法在一个集合中包含了更多的不重要系数,提高了压缩率,而SPECK算法采用易于计算和并行处理的块结构,提高了编码速度。 ②另外,SPECK算法还有其它一些特点。需要小的动态存储,有强的容错性。因为块间是独立编码的,在传输发生误码时,只有误码所在的块受到影响。而在EZW和SPIHT中误码将影响到整个树结构,对图象的破坏较大。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭