JPEG2000中最佳截断嵌入码块编码EBCOT

1. 最佳截断嵌入码块编码EBCOT

最佳截断嵌入码块编码 (embedded block coding with optimized truncation,EBCOT)是David Taubman在1999年发表的一种编码算法。

JPEG2000的小波系数量化编码采用EBCOT编码,EBCOT量化编码是JPEG2000标准的核心,是一种小波系数的嵌入式比特层编码方法。

EBCOT编码分为两部分:第1部分tierl,将每个子带划分为独立的编码块,然后对每个编码块独立进行嵌入式编码扫描,每个编码块的比特层编码,最后对编码扫描结果进行MQ算术编码,得到嵌入式码流;第2部分tier2,根据输出码率的要求,组合每个编码块的嵌入式码流,对所有编码块的编码流进行优化截断排序、打包等处理,得到JPEG2000的码流。

EBCOT嵌人式比特层编码主要包括嵌入式比特层编码、优化截断位流排序和MQ算术熵编码。MQ编码 MQ(Multiple Quantization多路量化)编码是一种用于二进制数据的自适应算术编码。

先将小波变换后的各个子带系数分成小的码块,然后将这些码块中的系数按照一定的量化步长进行量化,量化后的结果送人EBCOT编码器进行编码。

在tierl中,将每个码块中的小波系数分解成位平面,即一个个的比特层。编码从码块的非零最高有效位平面(MSB平面)逐个平面编码直到最低位平面(LSB平面)。对每一层位平面上的比特进行3次扫描过程,根据一定的规则将该位平面上的比特分在3个不同的编码通道上。接下来对这3次扫描过程的结果依次进行位平面的条件编码,条件编码后产生的上下文信息和编码码流再一同送人MQ算术编码器,进行算术编码。

经过tier1编码,输出的是一系列经过编码的通道。在有损编码情况下,编码器可以只在码流中保留一部分重要的编码通道,而舍弃其他的编码通道,这是除了量化以外的另一个信息损失的主要原因。

在tier2中,实质就是让tierl输出的一系列编码通道信息形成数据单元——包,这些包随后输出给最终码流,这样就完成了编码部分。

2. 位平面条件编码-Tier1

1)位平面的获取

         为了实现位平面编码,首先需要将码块(code-block)转换为位平面。

         将每个码块分解成一个个的比特层,最高层位平面log2(max(value)),value在 -128~127之间。(每个码块上的系数都分解到不同位平面上,位平面上存放的是系数的二进制对应位上的位值)。如图5所示。

位平面

注意:位平面编码之前,小波变换后的数据需要进行格式转换。

因为小波变换数据时采用补码来表示,而位平面编码要求每个数据按“符号 + 幅度”的原码方式表示。

通过符号位和量值分离的方法对离散小波变换的系数取模值之后,位平面编码待处理的数据取值范围[0,128]。找最高层位平面,从最高层位平面到最低层进行位平面编码。

       位平面的作用有二:1)把一个平面分成三个通道,方便以后的率控制。2)把每个像素点的每一位都判断(根据子带信息和位本身邻居的信息),输出判决结果和上下文序号提供给MQ用作输入。

2)位平面编码

         位平面编码过程中,其扫描方式很特殊。编码块中的每个位平面以一种特殊的方式进行扫描,从左侧最上面的系数开始,每4个系数作为一列称为stripe,直到扫遍编码块中的所有系数为止。如下图所示,其中方框内表示系数h的8个邻域。


每个编码块中,每个系数都有一个二进制数的状态与之对应,表示该系数重要与否。这个二进制数即是相应层的位平面的比特值(码块系数的量值,右移k位与1的位与结果。k为待编码相应位平面的层次)。
在同一个位平面上,为l的系数要比为0的系数重要得多。因此EBCOT对位平面中的系数以下列3种编码过程之一进行编码:显著性传播过程(significance propagation pass)、幅度细化过程(magnitude refinement pass)和清除过程(clean up pass)。每个比特只在其中一个编码通道上编码,最终形成3个编码通道。


  • (1)显著性传播过程。这是每个位平面户的第一个编码过程 (除了最高位平面,在最高位平面中,只有一种编码过程,即清除编码过程),编码那些当前不是显著系数,但其8个邻域有显著系数的系数。显著系数是立即更新的。如图3.10所示,如果系数g在显著性扫描过程中变为显著时,则其还未扫描到的邻域系数如k,l就有显著系数邻域了。位平面中的那些现在不重要,但成为重要的概率很大的比特数据将被编码。对于待编码数据X,只要周围8个比特数据有一个是重要的,则该比特将在此通道进行编码。该通道主要采用零编码算法进行编码。一旦该编码数据变为重要,则需要进行符号位编码。
  • (2)幅度细化过程。这是每个位平面P的第二个编码过程 (除了最高位子面,在最高位平面中,只有一种编码过程,即清除编码过程),编码那些已经是显著系数的系数。
  • (3)清除过程。这是每个位平面p的第三个编码过程 (除了最高位平面,在最高位平面中,只有一种编码过程,即清除编码过程),编码那些剩下的系数。清除编码通道中的数据成为重要的概率极小,因此采用游程编码来处理这些不重要的数据。在此通道中需要对一排的四个比特同时进行判断。当四个比特都没有重要的相邻数据时,则对其采用游程长度编码,否则分别对每个比特采用零编码。
举例:有4个组成一列的系数,分别为10,1,3,—7,一共有4个比特层,其编码结果如表3.3所示。


对于一个码块中的小波系数,逐位平面的经过上面3个编码扫描过程后,得到每个位平面的3组二进制序列。对这些二进制输出,EBCOT采用4种编码方法,显著性编码(ZC),符号编码(SC),幅度细化(MR)编码和RLC编码,一共有19个上下文,9个用于ZC编码,5个用于SC编码,3个用于MR编码,1个用于RLC编码,还有1个全局上下文。其中对显著性过程的二进制输出结果进行ZC编码和SC编码,对幅度细化过程的扫描结果进行MR编码,对清除过程的扫描结果进行ZC编码、SC编码和RLC编码,然后用MQ编码器编码这4个编码方法输出的结果。

编码块中的每一个系数有一个称为“显著状态”的二进制状态变量p[j],p表示第p比特层,j表示系数扫描坐标。显著状态被初始化为0,表示当前系数是不显著,在编码过程中如果系数变为显著,则显著状态立即更新为1

对于一个给定的当前系数,他周围8个领域的情况就确定了这个系数的上下文。也就是说有2^8=256种不同的上下文。考虑到待编码比特与邻域的相关性和设计的可行性,这8个邻域被分为3类:h,v,d。其8个邻域系数显著状态信息如下图所示。


领域分类

JPEG2000中定义四个算子:零编码(重要性编码)(CN:0-8)、符号编码(9-13)、幅度细化编码(14-16)、游程长度编码(清理编码)(17-18)。

四种基本编码操作

a)零编码( 显著性编码 ZC编码)

表示当前系数左右两边的显著状态量之和;同理,V=V0+V1上下显著状态量之和;四个对角显著状态量之和。



ZC的上下文设计原理如果编码块属于LH子带(垂直高通,水平低通),显著样本最有可能来自图像水平方向的特征,因此认为水平邻近样本的显著状态最能表示当前系数的显著状态。垂直邻近系数是第二重要的显著状态指示器,对角线方向的系数则是最后才考虑。HL子带和LH子带类似,只须将垂直和水平方向的重要性交换即可,而HH子带则是对角线方向的显著状态最重要。需要指出,这些规则实际上是大量实践研究的结果。

b)符号编码

每个系数的符号编码只调用一次,紧跟在系数变为显著系数的显著系数编码之后,其上下文的构成由当前系数的4个邻域(上下和左右)系数的符号组成。系数的状态有3种:正显著(用1表示)、负显著(用—1表示)和不显著(用0表示),因此一共有81种上下文,并遵循以下规则:

    ①系数的水平方向或垂直方向的符号相同是合理的;

    ②如果系数的左邻域和右邻域的符号相反,则与系数的左邻域和右邻域都是不显著,对当前系数符号提供的信息量是一样的;

    ③在垂直方向上有相同的性质。

因此用H表示水平方向系数的符号和,用V表示垂直方向符号和,H和V的范围都在-2~2之间,这样上下文可以减少到25个。同时如果当前系数的符号为1,水平方向的两个邻域系数符号也为1,与当前系数符号为-1,水平方向的两个邻域系数符号也为-1的概率分布是一样的,即如果系数符号反转,其水平方向系数符号也都反转,此时它的概率分布不变,垂直方向也有相同的性质,因此上下文又可减少一半,剩下13个。如果再次放宽j1/和y的符号约束,则可将上下文最终降为5个。符号编码的上下文索引和反转因子索引如表3.5所示。 V有同样性质,X表示反转因子。

H=0:表示水平邻域两个系数都是非显著;或者虽然都是显著,但符号相反。

H=1:表示水平邻域两个系数至少有一个正的显著系数。

H=-1:表示水平邻域两个系数至少有一个负的显著系数。




c)幅度细化编码:

幅度细化编码是处理幅度细化过程的二进制输出结果。定义H=H0+H1真为当前系数左右两边的显著状态量之和,同理上下显著状态量之和V=V0+V1,表示显著状态的延迟,即当一个系数第一次变为显著时,转变为l,但仍然保持为0,当对这个系数执行完一次幅度细化编码后,才转变为1。幅度细化编码的上下文索引如表3.6所示。


d)游程长度编码(RLC):

RLC编码用于清除编码过程中的某些二进制输出结果。在中等或高压缩率下,大多数子带样本是不显著的,即使那些最终编码为显著的系数,对很多初始比特平面来说也可能是不显著。因此引人了RLC模式来处理多个不显著系数,RIL主要用来降低编码复杂度。RLC编码的条件是:

①  连续4个系数在上一个比特层上是不显著的;

②  所有4个系数都没有显著邻域;

③  4个系数必须符合EBCOT定义的扫描列。

RLC只有1个上下文,上下文索引为0,当这4个系数在这个比特层中仍然是不显著的,则用“0”表示即可;当这4个系数在这个比特层中有系数变为显著的,则用“1”表示,接着用00,01,10,11来表示第一个显著系数出现的位置。它的上下文索引为全局上下文12,然后是这个显著系数的符号编码,剩下的系数就用显著编码方式编码

举例:为了便于书写,将一列的4个系数用行表示,具体的编码过程如表3.7所

         通过三个编码通道,就可以得到上下文内容和判断,作为算数编码器的输入,进行MQ编码。

举例说明

下图是某一编码块系数的最高两个比特层系数。最高比特层只有清除编码扫描。









解码:

同编码过程一样,解码也是从系数的最高位(MSB)的位平面开始解码,直到最后一个pass解完,完成所有比特平面的解码。解码时,码块的每个系数分别对应一个4位的状态寄存器,分别记录符号、重要性、幅度特性及该系数是否被访问这四个系数特征。解码起始时所有系数均被初始化为"不重要的"(insignificant),遇到非零比特时,该系数变为重要的(significant),接着接收该系数的符号位,并根据标准中规定的符号计算公式解出该系数的符号,并存入状态寄存器。之后,该系数的其他(在后续比特平面中处理的)比特位即进行"幅度精练"解码,直到整个系数所有比特平面解完。

算术编码MQ部分见下一个博客。

参考文献:

[1] Zheng P, Huang J. Discrete wavelet transform and data expansionreduction in homomorphic encrypted domain[J]. IEEE Transactions on ImageProcessing, 2013, 22(6): 2455-2468.

[2] D.Taubman, “High Performance Scalable Image Compression WithEBCOT”, IEEE Trans. Image

Processing, Vol.9, No.7, pp. 1158-1170, July 2000.

[3] David Taubman1, Erik Ordentlich2, Marcelo Weinberger,GadielSeroussi, “Embedded Block Coding in JPEG2000”,Feb 2001

[4] David Taubman, Erik Ordentlich, Marcelo Weinberger , Gadiel Seroussi,IkuroUeno, Fumitaka Ono,“Embedded Block Coding In JPEG2000”, IEEE 2000

[5] Jen-Shiun Chiang, Yu-Sen Lin, and Chang-Yo Hsieh, “EBCOTPass-Parallel Context Modeling

Architecture for JPEG2000”

[6] introductionon data compression,fourth edition[7]  JPEG2000图像压缩基础、标准和实践 / (美) David S. Taubman, Michael W. Marcellin著; 魏江力, 柏正尧等译










  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值