第七章 小波变换编码的基本方法(下)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

也用于JBIG2标准(ITU-T T.88 / ISO/IEC 14492:2000)。
为了得到较好的压缩效率,在进行算术编码时,依据编码通道
的统计特性, 构造了不同的上下文模型。
上下文模型是根据当前编码系数邻域上的系数的有效状态
来建立的。
在J PEG2000中, 采用如图 所示的邻域, 其中, X表示当前要
Spatial Scalability
EBCOT coding Basic idea 在做完小波转换及量化之后会得到多个次频带,在EBCOT 做编码时,便将这些次频带切割成数个blocks (e.g. 64x64 或32x32),称作“code-blocks”,并且将每个block 都独 立做编码得到以block 为单位的Bit-stream。
在这个pass 送出第一个为“1” 的位的系数,即系数
si[m,n]由0 变为1,则同时也要送出他的符号(sign),利 用Sign-Coding 来编码Sign值,并视为重要系数。
Magnitude refinement pass: pass2
当symbols 在pass1 由insignificant 变为significant(si[m,n]
EBCOT 采用bit-plane 的方法来编码小波系数,一次以 一个bit-plane 作为编码的单位。
Significance, Refinement, Sign
•Significance: 当一个小波系数bit-plane 的值Si[m,n] ,第一次由0变为1时 (si[m,n]= 0~1),则此时这个小波系数将变为Significance。 Si[m,n]为该小波系数sample,si[m,n]为一个binary-valued state variable 用来记录目前sample 的状态。
第七章 小波变换编码的基本方法
EBCOT
EBCOT编码简介
最佳截断嵌入码块编码 (embedded block coding with optimized truncation,EBCOT)是David Taubman在 1999年发表的一种编码算法。 该方法与早期的EZW,SPIHT以及Taubman和Zakhor开 发的LZC(layered zero coding)等算法有着不同程度的联 系。 EBCOT算法是一种对小波变换产生的子带系数进行量化 和编码的方法。 它的基本思想是把每一个子带的小波变换系数分成独立编 码的码块(code-block),并且对所有的码块使用完全相同 的编码算法。
再将每个Block 从MSB 到LSB 分别以”Bit-plane” 方式 来做编码。
将每个bit-stream 切割成不同长度的subset Ri1, Ri2, Ri3 …, 因此每个subset 可以得到其相对应的distortion 标示为D i1, D i2, D i3 …。
bit-stream subset
位速率失真最佳
EBCOT算法把表示图像的子带分成相对比较小的许多码块 {Bi}i = 1, 2, ...,Bi表示第i个码块。每一个码块中的位流可以被 截断成各种长度的位流Ri1, Ri2, Ri3, ...,在重构图像时计算由 这些截断位流引起的失真Di1, Di2, Di3, ...。Bi对重构图像产生 的失真用Din表示,并假设失真度量是相加的,整个图像的 失真D表示为:
由垂直和水平邻近点的值,以及定义一个second state variable ai [m,n]来查表决定context states
ai[m,n]用来标明MR 编码方式是否已经被之前的bit-plane 所使用; ai [m,n]在初始时为0,在第一次MR编码后变为1。
ai[m,n]
上下文状态 17 16 15
•Refinement:
当一个小波系数已经是 Significance,则这个小波
系数接下来的bit接称之为
Refinement。 •Sign:
即小波系数的符号值。
四种编码方式:
依据目前小波系数的状态(Significance 或 Refinement)进行不同编码机制;共应用了四种 编码机制分别是:
上下文状态 14 13 12 11 10 11 12 13 14
Magnitude Refinement(MR)
当si[m,n]= 1,表示这个symbol 在之前已经变为significance, 因此这个symbol 便使用MR 做为其编码方式。
MR 由三个不同的context states 来取代编码该symbol 的值,
(a) 连续四个samples 的state variable 都是0 或1时 (b) 这四个samples 必须在同一条扫描线形成一个
group。 (c) 在JPEG2000中将该上下文状态设为9
Sign Coding(SC)
每个symbol 的Sign 值,只会在当symbol 第一次由 insignificance 变为significance 时送出,此时便是利用SC 来做 编码。 当si[m,n]= 0 且symbol值为1,则si[m,n]会由0变为1 表示这个symbol由insignificance 变为significance,此时必须将 送出该symbol 的sign值 sign 值是由五个不同的context states 来取代编码该symbol 的 sign 值,并由垂直及水平邻近点的sign 值和significance 来查表 决定context states,如图及表二。
MQ编码
MQ(Multiple Quantization多路量化)编码是一种用于二进制数据 的自适应算术编码
David S. Taubman << JPEG 2000 图像压缩基础\标准和实践>> 无乘法器的Q编码算法(W. Pennebaker等人于1988年提出)的改

增加了条件交换机制和概率估计状态机。 MQ编码器是I. Ueno等人于1999年专门为JPEG 2000标准设计的,
Zero Coding(ZC)、
Run-Length Coding(RLC)、 Sign Coding(SC)、 Magnitude Refinement(MR)
Zero Coding(ZC)
当si[m,n]= 0 时,会使用Zero Coding 做为编码的方法。利用 其身边八个邻近点的significance state 确定上下文。选取九个 不同的上下文中的一个,估计被编码位的概率,用MQ进行编 码。
Let hi[k] equal 0 if both horizontal neighbors are insignificant or both are significant with different signs, 1 if at least one of the horizontal neighbors is positive and -1 if at least one of the horizontal neighbors is negative. Definein vi[k] similar fashion for the vertical neighbors.
D Dini
i
其中,ni表示码块选择的截断点。相加性的失真度量可用均 方差MSE(Mean Square Error)或者加权的均方差来表示。
对某一组截断点{ni},位流中某一层的位速率用R表示
R Rini
i
Байду номын сангаас
EBCOT算法的目的就是在R≤Rmax 的限制条件下找一组截 断 位 流 ni 使 失 真 D 最 小 。 这 个 问 题 可 使 用 拉 格 朗 日 (Lagrange)乘数法求解,把问题就转化为求解使函数
R
i
ni i
Dini

最小化的问题。
概括地说,EBCOT编码的主要想法是:
把嵌入码块编码方法与码块位流的最佳截断方
法结合在一起,使重构图像的失真最小;
主要特性:
分辨率可变
信噪比可变 随机访问 较适合包括大图像的远程浏览。
SNR(Quality) Scalability
• 如图所示,图(a)表示使用小波变换进行三级分解之后的图像子带, 图(b)表示经过这种变换之后各个子带的Lena图像,EBCOT算法的基 本出发点就是把每一个图像子带的系数分成独立编码的码块。
图7-21 独立编码的码块
对每一个码块进行编码时,编码器不用其他码块的任何信 息,只是用码块自身的信息产生单独的嵌入位流。 每一码块的嵌入位流可以被截断成长度不等的位流,生成 不同的位速率,这就是EBCOT编码算法中“截断”的含 义。 每一码块的嵌入位流应该截断到什么程度才符合特定的目 标位速率、失真限度或者其他衡量图像质量的指标,也就 是在给定一个目标位速率的情况下,使重构图像的失真程 度最小,David Taubman提出了一种认为是“最佳”的 方法来截断每一个独立码块的位流,这就是EBCOT编码 算法中“最佳”的含义。
三种编码Passes
每个bit-plane 的每 个bit 皆利用三个pass 来扫描,以决定哪些系 数比较重要必须先送。

每一个pass 决定送出 的位又会根据这个位周 围八个相邻位的特性(0 或是1)决定以什么机率 来作arithmetic coding MQ coder产 生比特流。
每次对code block 作4 个row 的扫描,如图 所示,
编码的系数的有效状态,其他字母表示邻域上的系数的有效 状态。
D = Data, CX = ConteXt上下文, CD = Compressed Data压缩数据
邻域示意图
MQ编码器的编码过程
Run-Length Coding(RLC)
RLC 与ZC 结合使用可以用来减少我们所送出 binary symbols 的平均平均数量,当下列几种 情形同时发生时,会由以RLC 编码方式取代ZC 编码:
三个扫描pass
Significance propagation pass: pass1
扫瞄不重要的系数,预设的编码方式是Zero-coding,依
据之前位平面的数据决定是否在这个pass 送出。
对满足下面条件且属于小波系数的所有位编码:
系数不重要
其相邻八个位置的系数到目前为止至少一个是显著的
当每个block 都依据其rate-distortion 切割成数个 subsets 时,便可以将其分割成数个layer 来传送每个 subband 的数据,这也是最后真正要送出的bit-stream。
EBCOT编码算法引入了一个“质量层(quality layers)”的概念。图像 的最终码块位流以质量层的形式组织,每一层都包含每一个码块对图 像质量的贡献,如图。 为简单起见,图中只画了7个码块的位流,每一个码块的质量层只画 了5层,其中某些码块对质量没有贡献的层用“空”表示。
由0 变为1),则这些symbols 将会在pass2 利用magnituderefinement 编码方式来编码这些symbols。
•h:为水平邻近的点(0 h 2) •v:为垂直邻近的点(0 v 2) •d:为对角邻近的点(0 d 4)
得到了这些参数值之后,便可以经由查表后送出该 symbol 真正要送出去的值,表一即列出不同参数与其相 对应的context 值。
上下文状态 0 1 2 3 4 5 6 7 8
整个EBCOT 可分为两个Tier 来完成
Tier1 是对于在做block coding 的动作, Tier1 编码器处
理变换图像的小波变换系数,并把截断点放到码块中。 Tier2 则完成一个完整的bit-stream,把来自Tier1编码器 的零碎码块放到不同的质量层, 与不同的位速率相对应,并生 成实际的压缩位流和文件。
相关文档
最新文档