相关申请:本申请要求由En-hui Yang和Longji Wang于2004年7月16日提交的标题为“JOINT OPTIMIZATION OF RUN-LENGTH CODING,CONTEXT-BASED ARTIHMETIC CODING AND QUANTIZATION STEPSIZES(行程编码、基于上下文的算术编码和量化步长的联合优化)”的美国临时申请No.60/588,380的权益,以及他们于2004年7月14日提交的标题为“JOINTOPTIMIZATION OF RUN-LENGTH CODING,HUFFMAN CODING ANDQUANTIZATION TABLE WITH COMPLETE BASELINE JPEG DECODERCOMPATIBILITY(具有完整的基线JPEG解码器兼容性的行程编码、霍夫曼编码和量化表的联合优化)”美国临时申请No.60/587,555的权益,现将其全部内容引用在此作为参考。
具体实施方式
部分I:具有完全基线JPEG兼容性的行程编码、霍夫曼编码额量化表的联合优化
[0055]图1中显示了执行三个基本步骤的JPEG编码器20。编码器20首先将输入的图像22分割成8×8块,接着按照光栅扫描的顺序一个接一个处理这8×8个图像块(基线JPEG)。每个块首先通过8×8DCT24而从像素域过渡成DCT域。然后,合成的DCT系数使用8×8的量化表26来统一地量化。从量化28来的系数指数为在步骤30中使用零行程编码和霍夫曼编码进行编码的熵。如果必须使用步长来量化所有的图像块,则JPEG语法将量化步长和霍夫曼码字留给编码器选择。这种构架提供了巨大的机会在编码器20应用比率-失真(R-D)因素,其中量化表26和霍夫曼表32是编码器能优化的两个自由参数。
[0056]编码器还能优化的第三个但有些隐藏的自由参数是图象数据本身。取决于图象数据在整个JPEG编码处理期间的阶段,图象数据表现为不同的形式,如在图2中所示。在硬决策量化前,它们表现为DCT系数34的形式;而在硬决策量化后,它们表现为DCT指数36的形式,即量化的DCT系数由所使用的量化步长归一化;在锯齿形序列化和行程编码后,在指定各个类别(run、size)代码和同类(in category)指数38内的DCT指数的精确幅度的整数后,它们表现为行程指数对(run-size)的形式。同类(为了简明起见,我们将这样的整数称之为同类同类指数)。要注意的是,DCT指数与量化步长一起确定量化的DCT系数。虽然JPEG语法允许量化表在编码器定制,但通常使用按标准给定的示例性的量化表的缩放版本(参见参考文献[1])(称之为默认表)。由于默认表是独立于图像的并且缩放比例并不是图像自适应的,因此默认表的缩放比例不是最理想的。即便使用图像自适应的量化表,JPEG也必须为每个图像块提供相同的表,以表示从优化系数指数,即DCT指数中仍然保留了潜在增益。要注意的是,硬决策量化加系数指数优化等于软决策量化。由于系数指数能等同地表示为同类行程尺寸对,其后面是经过行程编码的同类指数,因此我们可以简单地将系数指数优化称之为与步长和霍夫曼优化并行的行程编码优化。如以下所描述的,我们不仅提出了非常灵巧、基于曲线图的行程编码优化方案,还提供了一种用于联合优化如分别在图2的步骤40、42和44中的行程编码、霍夫曼编码和量化步长的迭代优化方案。
形式问题说明
[0057]现在,我们来制定我们的联合优化问题,其中对在基线JEG中的所有三个自由参数进行最小化处理。在这部分中我们仅考虑AC系数的优化。DC系数的优化将在以后讨论。
[0058]在JPEG编码中给定输入图像I0和固定量化表Q,系数指数通过行程编码完全确定了后继是用于每个8×8块的同类指数的行程尺寸对序列,反之亦然。我们的的问题是对后继是同同类的指数ID的所有可能的行程尺寸对(R,S)序列、所有可能的霍夫曼编码表H、和所有可能的量化表Q进行约束的最优化(constrained optimization)
或等价于
其中d[I0,(R,S,ID)Q]表示在原始图像I0和由(R,S,ID)和Q对所有AC系数所确定的重构图像之间的失真,r[(R,S),H]表示用于所有从选定的序列(R,S,ID)和霍夫曼表H所得的AC系数的压缩率。在公式(10)和(11)中,rbudget和dbudget分别是比率约束(rate constraint)和失真约束(distortion constraint)。根据拉格朗日乘子,我们可以将比率约束问题或失真约束问题转化成以下的非约束问题。
其中拉格朗日乘子λ是固定参数,其表示用于失真比率的折中(tradeoff),而J(λ)为与拉格朗日成本。这种类型的优化落入到所谓的固定斜率编码(fixedslope coding)的类型中,该固定斜率编码由E.-h.Yang,Z.Zhang,和T.Berger于1997年9月在IEEE Trans.Inform.Theory,第43卷,第1465-1476页的“Fixedslope universal lossy data compression(固定斜率的通用有损数据压缩)”(以下称之为“参考文献[10]”)以及E.-h.Yang和Z.Zhang于1999年3月在IEEE Trans.Inform.Theory,第45卷,第586-608页的“Variable-rate trellis source coding(可变比率的栅格信源编码)”(以下称之为“参考文献[11]”)中所倡导。
[0059]介绍性地,将我们的联合优化问题与联合阀值和量化器选择进行比较(参见参考文献[8]和[9])。另一方面,这两者都是旨在联合优化三个参数的迭代处理。另一方面,我们的方案在两个方面显著不同(参见参考文献[8]和[9])。首先,我们考虑了系数指数或(R,S,ID)序列的全部优化而不是考虑只忽略无关紧要的系数指数表示的部分优化(参见参考文献[8]和[9])。正如我们在以下部分中所要看见的,这使得全部的优化都是非常灵巧、可有效计算的解决方案。这与所提出的相对耗时和繁琐解决方案的部分优化(参见参考文献[7],[8]和[9]))截然不同。其次,我们不需要提供任何耗时的量化器选择方案来在每次迭代中找出R-D的优化步长。相反,我们使用默认的量化表作为起始点,随后为步长的局部优化而在每次迭代中有效地更新步长。
问题的解决方案
[0060]比率失真优化问题(12)就是失真、比率、霍夫曼表、量化表和序列(R,S,ID)的联合优化。为了使优化问题易于处理,我们提出了一种迭代算法,其假定其他两个参数固定,反复选择序列(R,S,ID)、霍夫曼表、和量化表来使(12)的拉格朗日成本最小。由于行程尺寸概率分布P完全决定了霍夫曼表,因此我们使用P来替代在优化处理中的霍夫曼表H。这种迭代算法可以描述如下:
1)从给定图像I0和量化表Q0而初始化行程尺寸分布P0。由于量化是独立于图像的,因此这种将预定的量化表Q0应用到I0就称之为硬量化(hard-quantization)。(例如,初始的行程尺寸分布P0可以是通过使用由初始Q0所给定的硬决策量化器所得的(run、size)对序列的经验分布,并用于量化I0的DCT系数。)设定t=0,并指定公差ε作为收敛性判别标准(convergence criterion)。
2)为任意t≥0固定Pt和Qt。找到能满足以下最小式的优化序列(Rt,St,IDt)
其中,由Jt(λ)表示d[I0,(Rt,St,IDt)Qt]+λ·r[(Rt,St),Pt]
3)固定(Rt,St,IDt)。将Qt和Pt分别更新成Qt+1和Pt+1以便Qt+1和Pt+1一起满足以下最小式
其中以上的最小化对所有的量化表Q和所有的行程尺寸概率分布P进行。要注意的是Pt+1可以选定为(Rt,St)的经验行程尺寸分布。
4)对t=0,1,2,...重复进行步骤2)和3)直到Jt(λ)-Jt+1(λ)≤ε。接着输出(Rt+1,St+1,IDt+1),Qt+1和Pt+1。
[0061]由于拉格朗日成本函数在每一步中并不增加,因此保证了收敛性。迭代算法的核心是步骤2)和步骤3),即,找到序列以用给定的Q和P最小化拉格朗日成本J(λ),并用图像的新指数更新量化步长。这两步将在以下分别叙述。
基于曲线图的行程编码优化
[0062]如上所述,即便根据图像自适应的量化表,JPEG量化缺乏局部自适应性,这显示出从系数指数本身的优化依然剩余潜在的增益。这种增益可在步骤2)中使用。优化阀值(参见参考文献[7])仅考虑了系数指数的部分优化,即忽略在R-D方向(R-Dsense)中不显著的系数。我们提出了一种高效的基于曲线图的优化搜索算法以优化在R-D方向中的全部系数指数。它不仅能忽略(drop)非显著的系数,而且还能将它们从一种分类变为另一种——如果在R-D方向中需要,甚至将零系数变为很小的非零系数也是可能的。换句话说,我们的基于曲线图的最佳路径搜索算法在所有的可能系数指数(或等效地,优化行程尺寸对)中发现优化系数指数以最小化拉格朗日成本。由于给定了Q和P,因此拉格朗日成本J(λ)是以块方式(block-wise)增加的,在步骤2)中的最小化能通过一块接一块的方式解决。也就是说,可以为每个8×8图像块独立地确定优化序列(R,S,ID)。这样,在以下中,我们仅限于讨论一个8×8的图像块。
[0063]让我们限定一个具有65个节点(或状态)的定向图。如在图3中所示,首先的64个状态,其用数字i=0,1,...,63表示,相应于锯齿形顺序中8×8图像块的64个系数指数。最后一个状态是称之为末状态(end state)的特定状态,其被用来处理EOB(end-of-block(块末端))。每个状态i(i≤63)可以具有从相应于在(R,S)对中的run、R的先前的16个状态j(j<i)引入的连接。(在JPEG语法中,R从0到15取值)。末状态可以具有从具有表示EOB编码(即,在第i个系数后的编码(0,0))的状态i(i≤62)来的每个连接的所有其他状态来的引入连接。状态63进到状态端点而没有EOB代码。对于给定的状态i(i≤63)以及它的前趋i-r-1(0≤r≤15),在它们之间存在10个并行的过渡,其相应于在(R,S)对中的尺寸组,S。为了简明起见,我们仅仅画出在图3中所示的曲线图中的一个过渡;整个曲线图都需要S的延伸。对于每个i,其中i>15,从相应于对(15,0)的状态i-16到状态i还存在一个过渡,即,ZRL(零行程)编码。我们从状态i-r-1到状态i将成本分配给每个过渡(r,s),其中该成本被限定为当第ith个DCT系数被量化为尺寸组s(即,该系数指数需要s位来表示它的幅度)并且在该第ith个DCT系数被量化为零之前所有的r个DCT系数立即出现时从从状态i-r-1到状态i进行的拉格朗日成本。具体地,这个增加的成本等于
其中,Cj,j=1,2,...,63,为第jth个DCT系数,IDi为相应于尺寸组s的同类指数,其中该尺寸组在由该尺寸组s所指定的分类中的所有同类指数之间使Ci产生最小化失真,而qi为第ith个量化步长。类似地,对于从状态i(i≤62)到末状态的过渡,它的成本限定为
从状态63到末状态的过渡未分配成本。
[0064]很容易看出,根据以上的描述,8×8块的行程尺寸对的每个序列相应于具有拉格朗日成本的从状态0到末状态的一条路径。例如,块的行程尺寸对序列(0,5),(4,3),(15,0),(9,1),(1,0)相应于图4所示的路径。另一方面,在定向图中并不是所有从状态0到末状态都代表8×8块的行程尺寸对的合法序列。我们将称这样的路径是非法路径。例如,从状态0到状态1的过渡(0,5)以及从状态1到状态17的过渡(15,0)和从状态17到末状态的过渡(0,0)构成的路径就是非法路径,并且其不表示8×8块的行程尺寸对的合法序列。当,不难看出,对于任意非法路径,总是存在合法路径,该合法路径的拉格朗日成本要比非法路径的要小。因此,在包括了合法路径和非法路径的所有可能路径中从状态0到末状态具有最小总的拉格朗日成本的最佳路径一定是合法路径。此外,最佳路径连同其相应的如在公式(13)中所确定的同类指数一起为任意给定的Q,P和8×8块获得了步骤2)中的最小化。同样地,我们可以将快速动态编程算法应用到整个定向图,以便为给定的8×8块找到优化序列。应当指出的是,基线JPEG语法并不会为8×8块产生由(15,0)结束的序列(R,S)。理论上,通过我们的动态编程所找到的优化(R,S)序列可以由(15,0)至状态63而结束,即使其不太可能在实际应用中发生(当(15,0)的熵率(entropy rate)比(0,0)的熵率要小时才可能发生)。但,由(15,0)至状态63结束的(R,S)序列为合法路径并且可以由JPEG语法来正确地编码/解码。
[0065]以下将更详细的一步步描述该算法。开始时,该算法基于给定行程尺寸分布P而为每个行程尺寸对(r,s)预先计算λ·(-log2P(r,s)+s)。为每个状态i,递归预计算由忽略在状态前的前述1至15个系数获得的失真以及在该状态结束该块的余数成本。该算法从状态0(DC系数)开始。忽略所有AC系数的成本存储在J0中。接着,进到状态1(第一AC系数)。存在十条路径从状态0开始到状态1。这十条路径相应于该第一AC指数可以落入的10个尺寸分类。与每条路径关联的成本使用公式(13)来计算,其中还预先计算在(13)中的第一项,而IDi如下来确定。为了简明起见,这里我们只考虑正指数;对称性地可以类似地处理负指数。假定IDi‘为响应输入Ci的具有步长qi的硬决策量化器的输出,其落入到由s‘所指定的分类中。如果s=s‘,则由于在这样的尺寸组中IDi导致了Ci的最小失真,因此选定IDi作为IDi‘。如果s<s‘,则由于这个最大的数导致了在这个组中的最小失真,因此选定IDi作为该尺寸组s中的最大数。类似地,如果s>s‘,则选定IDi作为该尺寸组s中的最小数。在计算出十个增加成本后,我们可以找到从状态0到状态1的最小成本并能够记录该最小成本以及导致到状态1的最小成本的行程尺寸对(r,s)。接着,将忽略(dropping)从2到63的所有系数的成本加入到状态1的最小成本。这个总和存储在Ji中,其即为当第一AC系数为要被发送的最后的非零系数时这个块的总的最小成本。进行到状态2,从状态0到状态2存在110条路径。在这些路径中,十条路径是直接从状态0到状态2,而100条路径是从状态0通过状态1到状态2(10乘10)。确定在状态2终止的最佳路径的最有效的方法是使用动态编程算法。由于与在状态0和状态1终止关联的最小成本是已知的,因此找到终止在状态2中的最小成本路径的工作就是简单地找到从状态0到状态2和从状态1到状态2的最小增加成本。分别将这两个最小增加成本加入状态0和状态1的最小成本;在这两个总和之中较小的一个就是状态2的最小成本。这个最小成本和导致该最小成本的行程尺寸对(r,s)都存储在状态2中。接着,将忽略所有从3到63的系数的成本加入到状态2的最小成本。该总和存储在Ji中,其即为当第二AC系数为要被发送的最后的非零系数时这个块的总的最小成本。要注意的是,如果到状态2的最小路径是直接从状态0来的,则在所存储的状态2的行程尺寸对(r,s)中所存储的r为1,这意味着该第一AC被量化或强制为0。如果该到状态2的最小路径是从状态1来的,则所存储的r为0,这意味着该第一AC指数是非零的。该递归继续到第三系数,直到在位置63的最后的系数也进行完了。此时,我们比较Jk(k=0,1,...,63)的值,并找到最小值,也就是说,对某个k*的Jk。通过在每个状态中所存储的对(r,s)的帮助下从k*返回,可以在所有可能的路径中找到从状态0到末状态具有最小成本的最佳路径,从而得到给定8×8块的优化序列(R,S,ID)。这个算法的伪码如图6a、6b和6c所示。
[0066]以上的处理是全动态编程方法。为了进一步降低计算的复杂性,我们可以对其进行细微地修改。具体地,在实际中我们并不一定要比较在从一个状态到另一个状态的10或11个并行过渡中增加的成本。反而,对我们来说,只要比较在与尺寸组s-1,s,和s+1关联的过渡中的增加成本就已经足够了,其中s为相应于给定硬决策量化器的输出的尺寸组。与其他组关联的过渡最有可能导致更大的增加成本。我们应当比较在以下所述的实验结果中这两个方案的复杂性和性能差异。
优化量化表更新
[0067]为了更新在步骤3)中的量化步长,我们需要解决以下的最小化问题
由于一旦给定了(R,S,ID),则压缩率就与Q无关,其中I0表示要被压缩的原始图像,Q=(q0,q1,...,q63)代表了量化表。让Ci,j表示以第jth块的锯齿形顺序中在第ith个位置处的I0的DCT系数。序列(R,S,ID)确定DCT指数,即,由量化步长归一化量化的DCT系数。让Ki,j表示以从(R,S,ID)获得的第jth块的锯齿形顺序在第ith个位置的DCT指数。接着,通过Ki,j qi给定以第jth块的锯齿形顺序中在第ith个位置处的量化的DCT系数。根据Ci,j和Ki,j qi,我们可以将d[I0,(R,S,ID)Q]重写为
其中Num_Blk为在给定图像中的8×8块的数量。
[0068]在公式(15)中,其遵循d[I
0,(R,S,ID)
Q]的最小化可以通过独立地为每个i=1,2,...,63最小化公式(15)内部总和而获得。我们的目的是找到一组新的量化步长
(1≤i≤63)来最小化
[0069]公式(16)可以写作
[0070]这些二次函数的最小化可以对公式(17)的
取导数而估算。当按下式时,获得了公式(16)的最小化
从而更新在步骤3)中的步长。
基于栅格的DC优化
[0071]在这部分,我们根据量化步长和霍夫曼表考虑量化的DC系数的联合优化。在JPEG语法中,量化的DC系数使用一维预测器差异性编码,其为先前的量化DC值。由于对量化DC编码的成本仅仅取决于先前量化的DC系数,因此在联合优化中使用栅格。
[0072]让我们限定栅格具有N个阶段,其相应于DC系数的数量,即,在重新开始的间隔中8×8块的数量(DC系数的预测初始于在每个重新开始的间隔和每个扫描开始的0处(参见参考文献[1])。每个阶段都具有M个状态,其相应于DC指数能取的不同值,同时在相邻阶段中的状态能完全连接,如同在图5中所示的。在每个阶段中的每个状态都与作为从初始状态到该状态的最小成本的成本关联。找到优化DC指数序列的处理从0阶段开始直至N-1阶段。在N-1阶段,具有最小成本的状态被挑选出来并且从0阶段到N-1阶段的具有最小成本的最佳路径被向后描绘出,从而产生优化DC指数序列。
[0073]以下将更具体地一步步描述该处理。让x(i,j)表示在阶段i中的第jth个状态(0≤i≤N-1,0≤j≤M-1),让v(i,j)表示相应于状态x(i,j)的Dc指数值。让cost_mini(i,j)表示从初始状态到x(i,j)的最小成本。让cost_inc(i-1,j’,i,j)表示从x(i-1,j’)到x(i,j)的增加成本,其限定如下
cost_inc(i-1,j’,i,j)=|DC1-q0·v(i,j)|2+λ·(-log2P(S)+S) (19)
其中q0为用于DC系数的量化步长,DCi为第ith个系数,S为|v(i,j)-v(i-1,j’)|之差的组类,而P(S)为在12个尺寸类(0≤S≤11)中的概率。与初始状态关联的成本被设定为0。我们从阶段0开始。由于每个状态只有一个引入路径,因此在0阶段中对每个状态的成本为从初始状态增加的成本。接着,我们转到阶段1并从状态0开始。从x(0,j’)到x(1,0)存在M条引入路径(0≤j’≤M-1)。使用公式(19)来计算M个增加成本(即,cost_inc(i-1,j’,1,0))同时将这些M个增加成本分别加入到与在阶段0处的M个状态关联的M个最小成本。选定最小的并将其记录为状态x(1,0)的cost_mini(1,0)。为了回撤的目的还记录优化前趋。以相同的方式,我们需要为在阶段1中的其他M-1个状态找到cost_mini(1,j)(0≤j≤M-1)和优化前趋。该过程对阶段2继续进行直到阶段N-1。此时,我们为0≤j≤M-1找到了具有最小cost_mini(N-1,j)的j*。这个cost_mini(N-1,j*)为从初始状态到阶段N-1的最佳路径的最小成本。在每个状态中所存储的优化前趋的帮助下通过从j*回撤,可以找到从初始状态到阶段N-1的最优路径。从而,得到优化DC指数序列。
[0074]在获得优化DC指数序列后,如以上所讨论的,我们可以以相同的方式更新P(S)和量化步长q0。接着如同我们为根据量化步长和霍夫曼表联合优化量化AC系数所作的一样,重复该优化处理。
[0075]在基线JPEG中DC指数能上达2047个不同的值(-1023至1023),其在每阶段中需要2047个状态。大量的状态不仅增加了以上算法的复杂性,而且还需要大量的存储位置。实际上,如果DC系数被软量化到与硬决策量化器的输出相差很远的值,则最有可能导致更高的成本路径。因此,在实际的基于栅格的DC量化的执行中,我们可以只设置相应于在硬决策量化器的输出附近的DC指数的少量状态。例如,我们可以在相应于硬决策量化器输出的具有中间状态的每个阶段只使用33个状态,而以上和以下的16个状态分别相应于比硬决策量化器的输出要大或要小的16个邻近指数。这就在轻微降低性能的同时显著地降低了计算的复杂性和存储器的需求。
[0076]在图7的流程中显示了根据本发明一方面的用于联合优化行程编码、霍夫曼编码和量化表的处理。在步骤52,开始迭代处理,如在图8的流程图中详细概括的一样。在步骤54,j,表示N个总块的第jth块的指数,被设定为1。在步骤56,处理为块j确定最佳路径,在这种情况下,为第一块。这将在图9中的流程图中详细概括。在查询58,其确定了j是否为最后的块。这通过将j与N(总的块数量)进行比较而得。如果j比N要小,则在步骤60中增加j。
[0077]为每个块j找到最佳路径的处理继续,直到j=N。当j=N时,就确定了N个块的每个的最佳路径。在步骤62中计算J(λ)的第(t+1)th个值作为与N个块的每个关联的总的最小失真。然后,该值与在查询64中的J(λ)的第tth个值进行比较。若在J(λ)的第tth个值与J(λ)的第(t+1)th个值之间的差小于ε(选择标准,或更具体地,收敛性判别标准),则认为已完成了优化。若不是这种情况,则联合优化处理转到步骤66并且更新量化表Qt+1,如在图12的流程图中所详细概括的。
[0078]在步骤68,使用第(t+1)th个概率分布函数来计算与行程尺寸对(r,s)关联的熵率。在步骤70,增加指数t,随后执行额外的迭代。若确定了满足在查询64中的选择标准,则使用与行程尺寸对(r,s)关联的第(t+1)th个概率分布函数在步骤72中产生定制的霍夫曼表。步骤74使用这些定制的霍夫曼表来对行程尺寸对和指数编码。用于联合优化行程编码、霍夫曼编码和量化表的处理完成。
[0079]现参考图8的流程图,更详细地描述在图7的流程图的步骤52中的迭代处理的初始化。在步骤82,选择拉格朗日乘子,λ。它是表示用于失真的比率折衷的固定参数。在步骤84,选择收敛性判别标准ε。这就是通过连续迭代的拉格朗日成本,Jt(λ),的量被认为该迭带是成功和完成必须低于的的量。
[0080]在步骤86,产生初始量化表Q0。步骤88使用给定的图像I0和在先前步骤中产生的量化表Q0来确定行程尺寸分布P0(r,s)。在步骤90,该行程尺寸分布接着用于计算与行程尺寸对(r,s)关联的熵率。在步骤92,基于原始DCT系数和拉格朗日算子λ而计算初始的拉格朗日成本J0(λ)、量化表Q0和与行程尺寸对(r,s)关联的熵率。在步骤94,将N设定为等于图像块的数量,而在步骤96,当指数被强制到尺寸组0时,为给第ith个DCT系数发送的指数ID(i,0)被设定为0,其中,15<i<63。最后,在步骤98,迭代指数t设定等于0并且完成初始化迭代处理的处理。
[0081]现参考图9的流程图,在图7中的流程图更详细地描述了用于为步骤56的块j确定最佳路径的处理。在步骤112,初始化块j,如在图10的流程图中详细概括的。在步骤114,current minicost,为块j的状态i存储当前最低拉哥朗日成本的变量,被设定为大数。在步骤116,变量k被分配一个值,以表示从先前状态引入连接的数。若i>15,则k被分配的值是15。若i≤15,则k=i-1。在步骤118,与行程关联的变量r被设定为等于0,而在步骤120,与尺寸组关联的变量s被设定为0。
[0082]在查询122,处理确定关系式s=0和r<15是否为真。若不是这种情况,则在步骤124计算对状态i的成本,正如在图11的流程图中所详细概括的一样。在查询126,对状态i的成本与当前最小的成本,current_cost,进行比较。若J,对状态i的成本比current_cost要少,则用J替换current_cost并且在步骤128将变量r、s、id(i,s)和J存储到状态i。
[0083]在当前成本不少于current_minicost时从步骤128,以及从查询126,当找到s=0和r<15持续为真时从查询122,处理转到查询130,其询问s是否少于10。若s<10,则在步骤132增加s并且与计算对状态i的成本关联的迭代与更新的变量一起重复。若在查询130中s≥10,则查询134询问r是否小于k。若r<k,则在步骤136中r增加,在步骤120中将s重置为0,并且重复用于计算对状态i的成本的迭代。但,若r不少于k,则查询138询问i是否少于63。若存在这种情况,则在步骤140增加i并且重复整个迭代。若i不少于63,则认为所有的成本都已被计算并且在步骤142中通过回撤而确定块j的最佳路径。在步骤144,从最佳路径来的行程尺寸对(r,s)用来更新行程尺寸概率分布函数Pt+1(r,s),同时完成对块j找寻最佳路径的处理。
[0084]现参考图10的流程图,更详细地描述图9的流程图中步骤112的用于块j的初始化。在步骤152中,块成本的末端,对0≤i≤62,递归地计算eob_cost(i)。这相应于在状态i后忽略所有系数的成本。在步骤154,失真,对i≤r≤15和2≤i≤63,递归地计算dist(r,i)。这涉及到忽略在状态i-r-1和状态i之间的所有系数的均方失真(MSE)。
[0085]在步骤156,第二失真度量(distortion metric),对于1≤i≤63和1≤s≤10,计算d(i,s)。当相应的指数强制到尺寸组s中时,这是从第ith个DCT系数(1≤i≤63)导出均方失真(MSE)。在步骤158,当指数在尺寸组s中时,计算用于第i个DCT系数的要被发送的指数id(i,s),其中1≤i≤63和1≤s≤10。最后,在步骤160,状态值数i被设定为等于1同时完成对块j的初始化。
[0086]现参考图11的流程图,用于计算对状态i的成本的过程,在图9的流程图的步骤124进行了详细描述。查询172询问s是否等于0。若发现这种情况为真,则步骤174确定从状态i-r-1(其中r=15)到状态i增加的失真作为在忽略状态i-16和i之间所有系数的均方失真和忽略在当前块中的第ith个DCT系数的均方失真的总和。接着,在步骤176中计算对状态i的的成本,来作为对状态i-r-1的成本、从状态i-r-1到状态i增加的失真、以及与由λ测量的与行程尺寸对(15,0)关联的熵率的总和。
[0087]若s在查询172不等于0,则在步骤178中计算增加的失真作为忽略在状态i-r-1和状态i之间所有系数的均方失真和当若强制到尺寸组s中则相应的指数时从第i个DCT系数所得的均方失真的总和。接着在步骤180中计算对状态i的成本作为对状态i-r-1的成本,加上从状态i-r-1到状态i的增加成本,加上与由λ测量的行程尺寸对(15,0)关联的熵率的总和。当该迭代的成本已经在步骤176或步骤180中计算时,完成对状态i的成本计算。
[0088]现参考图12的流程图,详细说明图7的流程图的步骤66用于更新量化表Qt+1的处理。在步骤192中,分子阵列,num(i)对1≤i≤63初始为0。类似地,在步骤194,分母阵列,den(i)也对1≤i≤63初始为0。在步骤196,块指数j初始为1。在步骤198,块j从它的行程尺寸和指数格式恢复以产生系数指数阵列Ki,j。在步骤200,指数i,其表示在第j块的锯齿形顺序中的位置被设定为1。
[0089]在步骤202,计算在分子阵列中的第ith个值以作为它的当前值和第jth个块的原始的第ith个DCT系数和在以第jth个块的锯齿形顺序中第ith个位置恢复的DCT系数的乘积的总和,正如在步骤198中从行程尺寸和指数格式一样。在步骤204,计算在分母阵列中的第ith个值以作为它的当前值和在以第jthu个块的锯齿形顺序中第ith个位置的DCT指数的平方。
[0090]查询206询问i是否小于63。若i<63,则在步骤208中增加i并且计算与新的i关联的分子和分母值。若在查询206中i不小于63,则查询210询问j是否比N(块的总数量)小。如果j<N,则在步骤212增加j并且基于下一个块执行分子和分母的计算。否则在步骤214将i设定等于1。
[0091]在步骤216,计算与在量化表Qt+1的锯齿形顺序中的第ith个位置关联的值,qi,以作为在位置i的分母上的分子值。查询218询问i是否小于63。若这种情况为真,则在步骤220增加i并且计算在量化表中的余数位置。否则,完成Qt+1的更新。
[0092]参考图13,其显示根据本发明的优选方面的用于执行诸如与图7-12相关联的如上所述的压缩方法的数据处理系统230的结构图。如所示,系统230包括显示器232,其用于显示例如要被传输的图像等。类似地,存储器234可以包括要被传输的JPEG或MPEG文件。在通过用户界面236从用户接收指令时,微处理器238使用计算模块和初始模块(未示出)以上述描述的方式压缩输入的图像数据,随后将压缩的数据提供给子系统240。然后,通信子系统240向网络242传输该压缩的数据。
[0093]如上所述,虽然从通信子系统240向网络242传输的方式可以是无线的或通过电话线,或通过更高带宽的连接,但系统240可以集成到数码相机或移动电话中。
实验结果
AC系数的优化
[0094]上述的基于曲线图的行程编码优化算法和迭代的联合优化算法为解码器的兼容优化可以适用于JPEG和MPEG编码环境。它们两者都以给定的量化表开始。由于以上讨论的量化步长更新算法仅取得了局部优化性,因此如果必须使用默认的量化表,则默认的量化表的初始缩放比例对R-D性能有直接的影响。例如,图14显示了使用我们的基于曲线图的行程编码优化方法对512×512的Barbara图像的影响。曲线“a”相应于默认的量化表而曲线“b”相应于0.5精密标度(即,所有步长长度的一半)。这些曲线通过所有感兴趣的正值清除拉格朗日算子λ而得到。对于比较的目的,通过缩放量化表而取得的R-D曲线也给定为“c”可以看出,我们可以从曲线“a”或曲线“b”取的点X的相同的失真。从曲线“a”我们可以使用小λ来得到点Y。(由于可以预乘熵率因此在执行比率以降低复杂性之前替换λ;-1/λ在R-D曲线上具有坡度的物理意义)。从曲线“b”我们可以使用比较大地λ来得到点Z。即便对分检索(binary search)方法能够用来找到在R-D方向上优化的初始比例缩放因子,根据经验所确定的比例能很好地起作用并可以取得通过优化方案所取得的大多数增益。在我们的实验中也使用了经验方法。
[0095]给定初始量化表,在迭代的联合优化算法中的叠代数还在计算复杂性和取得压缩性能上有直接的影响。图15比较了为512×512Lena图像从一次迭代(仅优化行程尺寸对)、两次迭代和全部迭代(收敛性判别标准ε设定为0.1同时迭代的结果的平均数为大约6)取得的R-D曲线。可以看出,从全部联合优化所得到的大多数增益可以在两次迭代中取得。
[0096]如上所述,量化步长更新算法仅能得到局部优化性。除了比例缩放的默认量化表外,所提出的联合量化算法还可以很轻易地被配置来从诸如从在参考文献[3]-[5]中的任何方案所得的任意其他的量化表开始。(应当指出的是,在参考文献[3]-[5]中提出的方案仅仅解决了如何设计用于硬决策量化的优化量化表;同样地,从这些方案中所得到的量化表对我们在本发明中所考虑的软决策量化不是最优的。但,作为用于我们迭代联合优化算法的初始量化表,这些量化表优于比例缩放的默认量化表。)在我们的试验中,我们选择在参考文献[5]中的快速算法来产生以此开始的初始量化表。图16和表I比较了我们的优化方法和用于512×512Lena图像的参考方法的不同配置的峰值信噪比(PeakSignal-Noise Ratio,PSNR)性能。图17和表II比较了512×512Barbara图像的相同性能。定制的霍夫曼表用在最后的熵编码阶段。几条备注是按序的。首先,在参考文献[7]和[9]中的优化自适应阀值方案是所提出的行程编码优化的子集。因此,建议的行程编码优化方案像我们期望的在任意位率下的两个图像优于优化自适应阈值方案。其次,由于在低位率更多的系数被量化为零,因此量化表优化在低位率起着较少的作用。所提出具有初始缩放比例默认量化表的联合优化方案在低位率可以比在参考文献[9]中的联合优化方案取得更好的结果。第三,对于例如Barbara等的复杂图像,由于存在更多要被优化的非零系数,因此所提出的具有从参考文献[5]所产生的初始量化表的联合优化方案在所有位率相比于在参考文献[9]中的联合优化方案要作得更好。对于例如Lina等简单图像,由于量化表在低位率起着较小的作用,因此所提出的联合优化方案在低位率相比于在参考文献[9]中的方案仍然能取得更好的结果。但,由于我们的方法并不在每次迭代中尽其可能地找出优化量化步长,因此在参考文献[9]的方案对于Lena图像在高位率仍然能取得较好的结果。第四,相比于定制的基线JPEG,所提出的联合优化方案显著地改进了目标PSNR,对于低位率的例如Barbara等复杂图像,对比可知其性能超出了一些例如在1993年12月J.Shapiro的“Embeded imagecoding using zerotress of wavelet coefficients(使用小波系数的零树的内嵌图像编码)”(IEEE Trans.Signal Processing,第41卷,第3445-3462页)(以下称之为参考文献[13])中所提出的Shapiro’s内嵌零树小波算法等现有技术的基于小波图像编码器的所报结果。表III和IV列出了所提出的优化方案对于另外两种图像(512×512的Mandrill和Goldhill)的PSNR结果。
表I具有不同优化方法的PSNR比较(512×512的Lena)
比率(bpp) |
定制基线 |
自适应阀值[9] |
行程编码优化 |
联合优化+初始缩放比例默认量化表 |
[5]的联合优化+初始量化表 |
联合优化[9] |
基线小波过渡编码器[12] |
内嵌零树小波算法[13] |
.25 |
31.64 |
32.1 |
32.19 |
32.39 |
32.45 |
32.3 |
33.17 |
38.17 |
.50 |
34.90 |
35.3 |
35.38 |
35.74 |
35.99 |
35.9 |
36.18 |
36.28 |
.75 |
36.56 |
37.2 |
37.25 |
37.59 |
38.05 |
38.1 |
38.02 |
N/A |
1.00 |
37.94 |
38.4 |
38.58 |
39.12 |
39.50 |
39.6 |
39.42 |
39.55 |
表II具有不同优化方法的PSNR比较(512×512的Barbara)
比率(bpp) |
定制基线 |
自适应阀值 |
行程编码优 |
联合优化+ |
[5]的联合 |
联合优化 |
基线小波过 |
内嵌零树小 |
| |
[9] |
化 |
初始缩放比例默认量化表 |
优化+初始量化表 |
[9] |
渡编码器[12] |
波算法[13] |
.25 |
24.95 |
25.9 |
26.01 |
26.91 |
27.00 |
26.7 |
26.64 |
26.77 |
.50 |
28.10 |
29.3 |
29.49 |
30.63 |
30.90 |
30.6 |
29.54 |
30.53 |
.75 |
31.02 |
31.9 |
32.23 |
33.13 |
33.79 |
33.6 |
32.55 |
N/A |
1.00 |
33.16 |
34.1 |
34.41 |
35.22 |
36.01 |
35.9 |
34.56 |
35.14 |
表III512×512的Mandrill的PSNR结果
比率(bpp) |
定制基线 |
行程编码优化 |
联合优化+初始缩放比例默认量化衣 |
[5]的联合优化+初始量化表 |
基线小波过渡编码器[12] |
.25 |
22.31 |
22.70 |
22.92 |
22.95 |
22.87 |
.50 |
24.17 |
24.59 |
25.25 |
25.33 |
25.04 |
.75 |
25.52 |
26.05 |
27.11 |
27.22 |
26.95 |
1.00 |
26.67 |
27.38 |
28.48 |
28.85 |
28.45 |
表IV512×512的Goldbill的PSNR结果
比率(bpp) |
定制基线 |
行程编码优化 |
联合优化+初始缩放比例默认量化表 |
[5]的联合优化+初始量化表 |
基线小波过渡编码器[12] |
.25 |
29.30 |
29.72 |
29.97 |
30.00 |
30.08 |
.50 |
31.72 |
32.15 |
32.50 |
32.64 |
32.62 |
.75 |
33.26 |
33.73 |
34.28 |
34.52 |
34.42 |
1.00 |
34.55 |
35.05 |
35.83 |
36.05 |
35.94 |
计算复杂性
[0097]现在我们介绍一些行程编码优化算法和迭代联合优化算法的计算复杂性的结果。如上所述,给定状态和前趋,我们可以通过比较所有的10个寸组或3个尺寸组(即,从硬决策量化器来的尺寸组和从软决策量化器来的尺寸组)来找出最小的增加成本。我们的实验显示了这两个方案在所感兴趣的区域中取得了相同的性能。仅在λ非常大时,我们可以看出比较10个尺寸组的结果略微好于比较3个尺寸组的结果。但,实际上,由于会导致大的失真或不能接收的低劣图像质量,因此并不使用很大的λ值。因此,在本发明中所有的实验结果都可以通过比较3个尺寸组而得到。表V列出了在奔腾PC(Pentium PC)上对512×512的Lena图像进行一次迭代时用于所提出的联合优化算法的C代码执行的CPU时间。可以看出,我们的算法相比于参考文献[7]和[9]中的方案是非常高效的(对512×512的图像在SPARC-II工作站上,参考文献[7]中的快速阀值算法一次迭代花费大约6.1秒;而在参考文献[9]中的方案一次迭代花费大约几十秒)。当将所提出的联合优化算法应用于网路图像加速时,其花费大约0.2秒来用2次迭代优化通常尺寸(300×200)JPEG彩色图像。
表V.在所提出的联合优化算法在奔腾PC上一次迭代的CPU时间(512×512Lena)
设置 |
浮点DCT |
快速整数DCT |
比较3个尺寸组 |
1.5s |
0.3s |
比较10个尺寸组 |
2.0s |
0.7s |
DC系数的优化
[0098]在先前的实验中并没有优化量化的DC系数。与AC系数不同,DC系数通常非常大并且对于在JPEG语法中的霍夫曼编码差别只有12个尺寸组(与AC系数的162个不同的行程尺寸对相反)。因此,从基于栅格的DC系数来的增益是有限的。当从DC优化来的增益平均为位率时,在PSNR上的所有改进都是可以忽略的。为了显示从在部分V中所概括基于栅格的DC优化所得到的性能的改进,图18图示了对于512×512Lena图像的DC熵vs.DC失真。从这些绘图,即便增益非常有限,我们也可以清楚地看出在缩放比例的步长上基于栅格的DC优化算法的改进。
部分II:行程编码、基于上下文的算术编码和量化步长的联合优化
[0099]以上的讨论提出了一种基于曲线图的联合优化算法,其联合优化了JPEG编码器的三个自由参数:量化步长、霍夫曼表和RUN-SIZE对格式的DCT指数。这种联合优化算法在计算上非常有效,并对已有的JPEG和MPEG编码器具有完全的兼容性。
[00100]现在,假定我们考虑不同的情况,其中抛开对JPEG兼容性的要求,但相比于那些JPEG编码器和解码器,编码器和解码器都需要具有低计算复杂性。(这种情况常应用于诸如JPEG压缩图像的重新编码中)。我们应当如何进一步改进在上述JPEG兼容的联合优化的顶部的比率失真性能呢?
[00101]一旦消除了JPEG兼容性的要求,任何现有技术中的图像压缩/解压缩算法和方案,诸如,在1993年12月J.Shapiro的“Embeded image coding usingzerotress of wavelet coefficients(使用小波系数的零树的内嵌图像编码)”(IEEETrans.Signal Processing,第41卷,第3445-3462页)(以下称之为参考文献[13])中所提出的Shapiro’s内嵌零树小波算法;在Said和W.A.Pearlman的“New,fast,and efficient image codec based on set partitioning in hierarchical trees”中所描述的.层次树中的设定分离(SPIHT)(IEEE Trans.Circuits,Syst.,Video Technol,第6卷,第243-249页,1996年6月)(以下称之为“参考文献[15]”);在D.Taubman的“High performance scalable image compression with EBCOT”中描述的具有最佳平截的内嵌块编码(IEEE Trans.Image Processing,第9卷,第1158-1170页,2000年7月)(以下称之为“参考文献[15]”);在X.Wu的“High-order contextmodeling and embedded conditional entropy coding of wavelet coefficients for imagecompression”中描述的小波系数或DCT系数的基于上下文的熵编码(在Proc.31Asilomar Conf.Signal,System,Computers,第1378-1382页,1997年11月);Tu,J.Liang,和T.Tran的“Adaptive Runlength Coding”(IEEE Signal ProcessingLetters,第10卷,第61-64页,2003年3月);和Tu和T.Tran的“Context-basedEntropy Coding of Block Transform Coefficients for Image Compression”(IEEETrans.Image Processing,第11卷,第1271-1283页,2002年11月)(以下分别称之为“参考文献[16]”、“参考文献[17]”和“参考文献[18]”);在T.Tran,J.Liang,和C.Tu的“Lapped Transform via Time-domain Pre-and Post-Filtering”中描述的预置和后置滤波技术(IEEE.Trans.Signal Processing,第51卷,第1557-1571页,2003年6月)(以下称之为“参考文献[19]”);都可能被应用以改进给定图像的比率失真性能。但,由于他们固有的编码结构,因此这些方法在编码器和解码器上不能满足严厉的计算复杂性的需求。
[00102]在这部分中将提供不同的方法。为了满足严厉的计算复杂性的需求,我们用基于上下文的算术编码来替代霍夫曼编码。在这种方式中,我们避免了执行在计算上高昂的小波变换和反向小波变换以及额外DCT变换和反向DCT变换,特别是在JPEG压缩图像重新编码的情况下。为了改进比率-失真性能,我们接着联合第优化行程编码、基于上下文的编码,和量化步长,如图19中所示,在图19中显示了JPEG压缩图像的重新编码。在图20中显示了未压缩图像的编码。
[00103]图19和20显示了根据本发明的一个方面的编码器320在不同环境中的操作的方框图。在图19的情况中,输入是JPEG图像。如结合图1的描述,本JPEG图像已经进行了霍夫曼编码和量化。因此,为了开始量化、行程编码和基于上下文算法编码的联合优化,这个JPEG图像首先必须在步骤322中解码霍夫曼编码而在步骤324中进行量化。基于合成的DCT系数,在步骤326中的量化、在步骤328中的行程编码和基于上下文的算术编码(在步骤330中)的联合优化使用上下文模块332来进行。
[00104]在图20中,编码器320对未压缩的图像340执行操作,而不是如图19中那样对JPEG图像进行操作。类似于图1的JPEG编码器20,图20的编码器320首先将未压缩的图像340分割成8×8块,然后,处理这些8×8的图像块。在DCT步骤342中通过8×8DCT每个块都首先从图像域转换成DC域。基于该合成的DCT系数,在步骤326中的量化、在步骤328中的行程编码和在步骤330中的基于上下文的算术编码的联合优化使用上下文模块332来进行。
RUN和LEVEL的上下文建模
[00105]JPEG标准使用行程编码来将量化系数块排序为以如下所示增加频率的次序的锯齿形序列
(DC)(run,size)(Amplitude)...(run,size)(Amplitude)(EOB)接着对该序列进行霍夫曼编码。在上下文建模和关联的熵编码中,DCT系数的幅度通常被合并成尺寸部分以形成如下所示的(run,level)序列
(DC)(run,level)(Amplitude)...(run,level)(Amplitude)(EOB)其中,RUN仍然表示先于非零的系数指数的连续零AC系数指数的数量,而LEVEL为非零系数指数的值。EOB符号表示在当前块中不存在额外的非零系数指数。
[00106]Tu等人的[17]提出了上下文建模方案,其使用量化DCT块的RUN-LEVEL序列属性,诸如小RUN要比大RUN出现的频率高,而具有小幅度的LEVEL比具有大幅度的LEVEL发生的频繁等。接着,使用基于上下文的二进制算术码分别对RUN和LEVEL编码(EOB视作特殊的RUN符号)。为了由二进制算术编码器对非二进制符号进行编码,该符号首先要被二进制化。由于小RUN和小LEVEL出现比较频繁,因此较短的二进制序列应当分配给较小的RUN和LEVEL。在Tu等人的[17]中详细描述了一种满足这种需求的简单二进制方案,其详细描述如下:RUN二进制为由“1”跟随的(RUN+1)“0’s”;EOB视为特定的RUN并二进制为“1”;LEVEL二进制为除了标志位外由结尾“1”所跟随的(|LEVEL|-1)“0’s”。块的DC系数从其左边相邻的块和它的顶部的DC值而预测。如果该预测的DC余数是非零,则以相同的方式将其二进制作为规则的LEVEL符号的二进制。由于不同位的统计可能大不一样,因此不同的模型通常使用不同的位来最大化编码的效率。
基于上下文算术编码的联合优化
[00107]基于上下文算术编码的联合优化的基本构思类似于在部分I中所描述的JPEG兼容性的联合优化。对所有(run,level)(或缩写为(R,L))对序列、所有可能的上下文模型M和所有可能的量化表Q进行强制优化。因此,该优化问题可以表述为如下:
其中d[I0,(R,L)Q]表示在原始图像I0和在所有AC系数上由(R,L)和Q所确定的重新构建的图像之间的失真,而r[(R,L),M]表示为从所选定的(R,L)对和上下文模型M所得的所有AC系数的压缩率。等效的非强制性优化问题是
其中拉格朗日乘子λ是固定参数,其表示用于失真比率的折中(tradeoff),而J(λ)为与拉格朗日成本。在本部分中,我们选择适当的上下文并在每次迭代中的每个上下文中更新(或优化)概率分布。接着,解决本非强制优化问题的迭代算法可以如下描述:
1)从给定图像I0和量化表Q0初始化上下文模型分布P(M0)。设定t=0,
并指定公差ε作为收敛性判别标准(convergence criterion)。
2)为任意t≥0固定P(Mt)和Qt。找到能满足以下最小式的优化序列(Rt,Lt)
其中,由Jt(λ)表示d[I0,(Rt,Lt)Qt]+λ·r[(Rt,Lt),P(Mt)]
3)固定(Rt,Lt)。将P(Mt)和Qt分别更新成P(Mt+1)和Qt+1以便P(Mt+1)和Qt+1一起满足以下最小式
4)对t=0,1,2,...重复进行步骤2)和3)直到Jt(λ)-Jt+1(λ)≤ε。接着输出(Rt+1,Lt+1),Qt+1和P(Mt+1)。
[00108]该迭代算法的核心是步骤2)和步骤3),即,找出序列(R,L)以最小化给定P(M)和Q的拉格朗日成本J(λ),并用该图像新的指数更新量化步长。在部分I中同样的量化步长更新算法也能用于后面的目的。下文中,我们专注于步骤2),即如何为给定上下文模型和量化步长的分布,为每个块找到优化序列(R,L)。
适用的上下文模型
[00109]以下使用的上下文模型是一组从参考文献[17]而来但为DC、RUN、和LEVEL稍微修改了的上下文模型,其合并在此作为参考。
(1)用于DC余数的上下文模型
[00110]为DC余数的幅值使用了两个上下文,其是在当前DC指数和顶部相邻块的DC指数之间的差别,并取决于顶部相邻块的DC余数是否为零。
(2)用于第一个RUN的上下文模块
[00111]第一个RUN是以相邻块的平面为条件的。使用了五个上下文模型来对块的第一个RUN编码。前三个模型用来对相应于具有非零的AC指数的左边和上边的相邻块之一,或全部,或全不是的第一个RUN的第一个二进位编码。第四模型用来为第一个RUN的第二个二进位编码,而第五模型用来为所有剩余的二进制位编码。
[00112]应当指出的是,第一个RUN的五个上下文模型都仅在最后的熵编码阶段使用;在联合优化处理中并不会涉及它们(在联合优化处理中,我们只为第一RUN采用固定模型)。这是因为第一个RUN是以相邻块的平面熵为条件的,因此,在联合优化中包括第一个RUN将导致更复杂的联合优化算法。由于第一个RUN编码仅使用了在位率中非常小的片断,因此可以很好地调整压缩。
(3)用于其他RUN的上下文模型
[00113]其他RUN符号以前述LEVEL的幅值和锯齿形顺序为条件的,其分别用m和zz表示。则上下文模型可以选定如:
(zz<6和m=1),(zz<6和m>1),(6≤zz<15和m=1)
(6≤zz<15和m>1),(zz≥15) (22)
[00114]此外,可以为第一个二进位、第二个二进位和所有剩余的二进位使用不同的模型。总共15个上下文模型都可以用于其他的RUN。
(4)用于LEVEL幅值的上下文模型
[00115]LEVEL的幅值以zz,当前LEVEL的锯齿形顺序,和r,当前RUN为条件。上下文模型选定为:
(0<zz<3),(3≤zz<6),(6≤zz<15和r<3)
(15≤zz或3≤r) (23)
[00116]此外,可以为第一个二进位、和所有剩余的二进位使用不同的模型。总共8个上下文模型都可以用于LEVEL幅值。
[00117]一个额外的单个模型可以用于LEVEL和DC余数的标记位但也不会进入联合优化。总的来说,可以使用31个二进制上下文模型来对DCT系数指数编码。
基于曲线图的RUN-LEVEL优化
[00118]类似于部分I的基于曲线图优化的构思也用来在基于上下文算术编码的联合优化中找出优化序列(R,L)。但,由于现在通常给定锯齿形顺序和前述LEVEL的幅值编码RUN,因此使用了与部分I中所考虑的不同的曲线图。
[00119]从RUN编码的方式,可以遵循如下,在RUN编码中所将量化的幅值(单一或非单一的)与前14个AC系数的锯齿形顺序一起使用;但,在前14个后的AC系数的量化振幅仅基于锯齿形顺序而不是基于幅值进行编码。为了解决该额外的依赖性,我们为前14个AC系数的每个限定一个或多个状态。具体地,我们限定具有64个超级节点(或超级状态)的定向图,其相应于锯齿形顺序的8×8个图像块的64个系数指数以及末端状态(末端节点),如图21所示。相应于前14个AC系数的前14个超级节点的每个(状态0相应于DC系数)包括两个状态(或节点):一个称之为基本状态,其表示相应的AC系数的幅值>1(状态1’到状态14’),另一个称之为扩展状态,其表示相应的AC系数大额幅值等于1(状态1到状态14)。剩余的超级状态(状态15到状态63以及状态0)的每个仅具有一个状态并被称之为规则状态。每个非末端的状态都可以包括从前面16个超级节点来的引入连接(incoming connection),其相应于在(R,L)对中的RUN,R,其中R的取值是从0到15。末端状态可以具有从其他所有状态来的引入连接,其相应于EOB节点,即代码(0,0)。状态63到末端状态而没有EOB代码。对于给定的基本状态i’(1≤i’≤14)以及它的前趋i’-r-1(0≤r≤15)(虽然对于前14个状态r≤13),在它们中间存在2m-2个平行的过渡,其中m为LEVEL的最大幅值。要注意的是,前趋可以是基本状态或扩展状态。我们从状态i’-r-1到状态i’分配给每个过渡(r,l’)成本(-m≤l’≤m,|l’|>1),其被限定为当第t’个DCT系数被量化为l’(|l’|>1)并且所有的r个DCT系数在第t’个DCT系数被量化为零之前立即出现时从状态i’-r-1到状态i’增加的拉格朗日成本。该增加成本被限定为:
其中Ci’和qi’分别为第ith个DCT系数和第ith个量化步长;而f(r,l’)为长度函数,其基于上下文模型M的当前概率分布从过渡(r,l’)映射到熵率。要注意的是,给定上下文模型M的r的概率分布仅取决于前趋,而给定上下文模型M的l’概率分布取决于r和i’状态。类似地,对于给定的扩展状态i(1≤i≤14)和它的前趋i-r-1,在它们之间存在两个过渡,(r,1)和(r,-1)。由于单独处理标记位,因此为了简便起见,我们仅画出了图21中定向图的一个过渡。这两个过渡的拉格朗日成本,即第ith个DCT系数被量化为统一的并且在第ith个DCT系数被量化成零之前所有的r个DCT系数立即出现,被限定为:
[00120]对于规则状态i(15≤i≤63)和它的前趋i-r-1,在它们之间存在2m个平行的过渡(要注意的是,如果前趋的位置小于15,则基本节点和扩展节点对状态i都具有2m个平行的过渡)。与从状态i-r-1到状态i关联的过渡(r,l)(-m≤l≤m,l≠0)增加的拉格朗日成本类似地可以限定为:
[00121]对于从每个超级状态i(如果1≤i≤14,则是基本状态和扩展状态)到末端状态的过渡,它的成本被限定为:
[00122]对于每个规则状态i(i≥16),从状态i-16到i(取决于i-16的位置)存在一个或两个以上的过渡,其相应于对(15,0),即ZRL(零行程)编码,。它的成本被限定为:
其中对(15,0)被视作具有16个长度的特定RUN。根据上述限定,8×8个块的每个(R,L)对序列都相应于具有拉格朗日成本的从状态0到末端状态的路径。类似于部分I的方法,可以将快速动态编程算法应用到整个定向图来为给定的8×8块找出优化序列(R,L)。快速动态编程算法的详细描述类似于部分1。因此在图22a到22d的伪码中略述了相应的伪码。
[00123]在图23的流程图中显示了根据本发明的一个方面的用于联合优化行程编码、基于上下文算术编码和量化步长处理。在步骤352,开始迭代处理,如在图24的流程图中详细概括的。在步骤353,开始统一所有的上下文模型入口。接着,在步骤354,表示N个总的块的第jth个块的指数被设定为1。在步骤356,该处理确定在本第一行程通径、第一块中用于块j的最佳路径。这在图25的流程图中详细概括。在查询358,处理确定j是否是最后的块。这通过将j与N(总的块数)进行比较而得到。如果j比N小,则在步骤360中增加j。
[00124]为每个块j找出最佳路径的处理一直持续到j等于N。当j等于N时,可以确定为N个块的每个的最佳路径。在图23的方法中的步骤362中计算J(λ)的第(t+1)th个值作为与N个块的每个关联的最小成本的和。接着在查询364中将该值与J(λ)的第tth个值进行比较,如果在J(λ)的第tth个值和在J(λ)的第(t+1)th个值间的差别小于ε(选择标准,或更具体地,收敛性判别标准),则认为优化完成。如果不是这种情况,则联合优化处理继续到步骤366,其中量化表被更新为Qt+1,正如在图29的流程图中所详细概括的。上下文模型P(Mt)可以使用在迭代t的末端的上下文模型的概率分布来更新到P(Mt+1),正如在段落[0099]中所讨论的。在实际的实现中,自适应基于上下文的算术编码实际上既应用于联合优化也应用于最终的编码/解码。在每个迭代开始时自适应基于上下文的算术编码设定上下文模型的入口为统一的,如在步骤353中所指定的每次迭代的开始和在步骤444指定的在每个块的末端更新上下文模型。在步骤370,增加指数t,并且在步骤353连续执行再次开始的额外迭代。
[00125]如若已经确定在查询364中选择标准是令人满意的,则在步骤374中使用基于上下文的算术编码来对选定的(r,l)对编码。在步骤374后,完成用于联合优化行程编码、基于上下文的算术编码和量化表的处理。
[00126]现在参考图24的流程图,更详细的描述在图23的流程图的步骤352中的迭代处理的初始化。在步骤382,选择拉格朗日乘子λ。它是一个固定参数,用来表示失真率的折中。在步骤384,选择敛性判别标准ε。这就是连续迭代的拉格朗日成本,Jt(λ),的差被认为成功和完成迭代所必需低于的量。
[00127]在步骤386中,产生初始量化表Q0。在步骤392,为了确保初始拉格朗日成本超过了由该方法确定的最小成本,初始拉格朗日成本J0(λ)被设定为非常大的数。在步骤394,N被设定为等于图像块的数量,在步骤396,M被设定为等于要被比较的过渡的数量。如上所述,虽然该步骤仅处理基本节点和规则节点,但要被比较的过渡数量取决于在询问中的状态或节点是否是基本节点、扩展节点或规则节点而不同。在步骤398,迭代指数t被设定等于0并且完成初始化叠代处理的处理。
[00128]现在,参考图25的流程图,更详细地概括在图23的流程图中图周356的用于对块j确定最佳路径的处理。在步骤412,确定用于当前块的dist(r,i);d(i,l)和eob_dist(t):(1)dist(r,i)为忽略在状态i-r-1和状态i间的所有系数的均方失真;(2)d(i,l)为当相应指数的幅值为1时从Ci,j得出的均方失真;(3)eob_dist(t)为在状态i后忽略系数的均方失真(eob表示末端块)。在步骤416,i被设定为等于1,表示图25的方法在块j的第一AC系数开始。在步骤418,用于基本状态的minicost,和用于扩展状态的minicost_ext都被设定等于大数,但两者并不一定要是相同的大数。在步骤420,第ith个系数指数的幅值被设定等于相应的由当前用于该锯齿形顺序的系数的量化步长首先分隔的第i个DCT系数,随后转到最接近的整数。在步骤422,给变量k赋值以表示在该系数前立即运行的最大可能行程值。如果,i比15大,而k被赋值为值15。如果i小于等于15,则k被设定为i-1。在步骤424,与RUN相关的变量,被设定为0。
[00129]在步骤426,计算对状态i的成本,其中i为基本或规则状态。在查询428,处理器确定当前系数是否为前14个系数之一,以确定是否存在扩展状态。如果当前状态是前14个系数之一,则接着查询428返回真的回答,同时方法继续到步骤430,其中在该方法接着进行到查询432之前确定对第ith个扩展状态的成本。如果i超过了14,则方法直接从查询428转到查询432,跳过步骤430。
[00130]在查询432,方法询问r是否比k小。如果r比k小,则r在步骤434中增加,并重复用于计算对状态i的成本的迭代。如果r不小于k,则方法进行到步骤436,其中计算特定过渡(15,0)(即,零行程编码)的成本。当然,如果i小于或等于15,则就没有特定过渡,因此也没有特定的过渡成本。方法接着进行到查询438。
[00131]查询438询问i是否小于63,也就是说,图25的流程图是否已经遍历了图21的定向图的所有超级节点。如果i小于63,则查询438返回为真的答案同时方法进行到步骤440,在其中增加i。随后,在步骤418开是重复整个迭带。另一方面,如果查询438返回假的答案,那么,就认为已经计算了对每个状态的最小成本(要注意的是,状态0的最小成本为0)。在步骤442,当第ith个DCT系数为要被发送的最后的非零系数时,其中J*(λ),0≤i≤63,,计算该块的总的最小成本作为对状态i的最小成本、忽略在状态i(即,eob_dis(t))后的系数的均方失真和由λ所缩放比例的与行程水平对(0,0)(即,末端块编码)关联的熵率的总和。该块的总的最小成本,J*(i*),通过比较值J*(i*),0≤i≤63,而确定。通过根据所存储的行程水平对和进入状态类型而从i*回撤,可以确定块j的行程水平对格式的最佳路径。在步骤444,使用从最佳路径的行程水平对来更新上下文模型并完成了为块j找出最佳路径的处理。
[00132]现参考图26的流程图详细概括图25的步骤426中的对第ith个基本/规则状态计算成本。在步骤446,表示要被考虑的特定过渡的偏移m开始时被设定为0。该方法接着进行到步骤448,其中计算增加的成本(dist_inc)以作为以下的总和,(1)从忽略在状态i-r-1和状态i(dist(r,i))间的所有系数所得的均方失真,和(2)当相应的水平值被强制为I-m(dist(i,I-m))时从第ith个DCT系数得到的均方失真。在步骤450,计算状态i的成本作为对状态i-r-1、在步骤448中计算的增加的失真和与由λ缩放比例的行程水平对(r,I-m)关联的熵率的和。[00133]方法接着进行到查询452,其询问这个总的成本是否小于开始时在步骤418被设定为大数的minicost项。如果确定该对状态i的成本小于minicost,则方法进行到步骤454,其中用J代替minicost。此外在方法进行到查询456之前在步骤454记录所有的r,I-m,J和对状态i的引入状态类型。如果查询452返回了假的答案,则由于J大于或等于minicost,则方法直接进行到查询456而跳过步骤454。
[00134]在查询456,方法检查前述状态是否是前14个基本状态之一,或规则状态。如果查询456返回了真的答案,则前述状态为基本状态,同时方法进入到步骤458、查询460和步骤462。如果查询456返回了假的答案,则由于前述状态是规则状态而不是基本状态,因此方法跳过步骤458、查询460和步骤462,反而直接进到查询464。
[00135]在步骤458,方法通过前述扩展状态而不是基本状态检查对状态i的成本。也就是说,状态i的成本被计算为对扩展状态i-r-1,从扩展状态i-r-1到状态i的增加失真和与行程水平对(r,I-m)关联的熵率的总和。接着方法进行到查询460,其检查该总的成本是否小于minicost。如果J比minicost小,则方法进行到步骤462,其中用J替代minicost。在此步骤中,还记录下r,I-m,J和对状态i的引入状态类型。接下来方法进入查询464,其检查从前述状态到当前状态的所有特定过渡是否都已经被检查了。如果m小于M-1,则并不是所有的这种过渡都已被检查了,并且方法进行到步骤466,在其中m加1。接着,方法为另一个过渡返回到步骤448。另一方面,如果m不小于M-1,则步骤464返回假的答案,并且完成图26中对第i个基本/规则状态成本的计算。
[00136]现在参考图27的流程图详细概括在图25的流程图中的步骤430,在步骤中,计算对第ith个扩展状态的成本计算。在步骤468,计算增加失真作为以下的总和,(1)从忽略在状态i-r-1和状态i(dist(r,i))间的所有系数所得的均方失真,和(2)当相应的指数被强制为具有水平值1时,从第ith个DCT系数得到的均方失真。在步骤470,从前述基本状态i-r-1来的对状态i的成本被计算来作为对基本状态i-r-1的成本、从基本状态i-r-1到状态i的增加失真以及由λ按比例缩放的行程水平对(r,1)关联的熵率的总和。接着,方法进行到查询472,其检查在步骤470中计算的成本,J是否小于开始时在步骤418中被设定为大数的minicost_ext。如果J小于minicost_ext,则方法进行到步骤474,其中用J替代minicost_ext。还是在步骤474中,还记录下r,1,J和对状态i的引入状态类型。方法进到步骤476。如果J大于或等于minicost_ext,那么,方法从查询472直接进到步骤476。
[00137]在步骤476,从前面扩展的状态i-r-1计算对状态i的成本作为扩展的状态i-r-1的成本、从扩展的状态i-r-1代状态i增加失真、由λ按比例缩放的行程水平对(r,1)关联的熵率的总和。如果在步骤476中所确定的成本,J,小于minicost_ext,则查询478返回真的答案并且方法进行到步骤480,其中用J代替minicost_ext。图27的方法在步骤480后结束。此外,在步骤480中还记录下r,1,J和对状态i的引入状态类型。如果在步骤476中确定的总的成本J不小于minicost_ext,则图27的方法不执行步骤480就终止。
[00138]参考图28,详细概括在图25的流程图中步骤436中为特定过渡(15,0)的成本计算。回想对每个规则状态i(i大于或等于16)的成本计算,从状态i-16存在一个或两个额外的过渡(取决于状态i-16是否是包括有两种状态的前14个超级状态中的一个)。这些过渡相应于零行程(ZRL)编码(15,0)。该额外过渡成本在图28的流程图中的方法中确定。
[00139]查询482通过检查i是否小于或等于62且大于或等于16而开始。也就是说,如果i为63,则i相应于最后的系数,并且需要单独考虑。另一方面,如果i小于16,则行程当然不是15。这样,如果查询482表示i在闭区间[16,62]外,则方法终止。否则,图28的方法进行到步骤484,在其中确定从状态i-r-1(如果r等于15)到状态i的增加失真作为以下的总和,(1)忽略在状态i-16和状态i间的所有系数所得的均方失真,和(2)在当前块中忽略第ith个DCT系数得到的均方失真。接着,在步骤486中计算的对状态i的成本,J,作为对基本或规则状态i-16的成本、从状态i-16到状态i的增加失真以及在步骤486中由λ按比例缩放的行程水平对(r,1)关联的熵率的总和。
[00140]如果在步骤486中计算的对状态i的成本,J,小于minicost,则方法从查询488进入步骤490,在其中用J代替minicost。此外,在步骤490中记录行程15、用于第ith个节点的水平值0、成本J和对状态i的引入状态类型。接着方法进入查询492。如果在步骤486中计算的成本不小于minicost,则图28的方法直接从查询488进入到查询492。
[00141]查询492检查i是否小于或等于30,这是由于如果i小于或等于30,则在特定过渡(15,0)下的前述节点可能是扩展节点,而如果i大于30,则在特定过渡(15,0)下的前述节点将是规则节点。如果i小于或等于30,则在终止前,图28的方法进入到步骤494、查询496和步骤498,而如果i大于30,则图28的方法在查询492后终止。
[00142]在步骤494,计算对状态i的成本作为扩展状态i-16的成本、从扩展状态i-16到状态i的增加成本失真以及与行程水平对(15,0)关联的熵率的总和。如果在步骤492中计算的成本,J,小于minicost,则方法通过查询496进入步骤498。可替换地,如果该成本,J,不小于minicost,则图28的方法在查询496后终止。在步骤498,将minicost更新为在步骤494中计算的成本,J。此外,记录15的行程、用于第ith个节点的水平值0、J和对状态i(扩展)的引入状态类型。接着,图28的方法终止。
[00143]现在参考图29的流程图,详细概括在图23的流程图的步骤366中用来更新量化表Qt+1的处理。在步骤500,分子阵列num(i)被初始化为0,0≤i≤63。类似地,在步骤502,分母阵列den(i)也被初始化为0,0≤i≤63。在步骤504,块指数j被初始化为1。在步骤506,从行程水平格式恢复块j以产生系数指数阵列Ki,j。在步骤508,表示第jth块以锯齿形顺序中DCT系数位置的指数i被设定为一。在步骤510,计算分子阵列中的第ith个值作为其当前值和第j个块(Ci,j)的原始的第ith个DCT系数与在步骤506(Ki,j)中所确定的以第jth个块的锯齿形顺序中在第i个位置上恢复的DCT系数乘积的总和。在步骤512,计算分母阵列中的第ith个值作为其当前值和第jth个块(K2 i,j)的锯齿形顺序中第ith个位置上的DCT指数序列的总和。
[00144]查询514询问i是否小于63(也就是说,在本块中的所有系数是否已经被考虑了)。如果i小于63,则方法从查询514进入到步骤516,并在其中增加i,接着方法为下一个系数而返回到步骤510。另一方面,如果i不小于63,则方法从查询514进入进入查询517,并在其中询问j是否小于N,即总的块数。如果j小于N,则在步骤518中增加j并且基于下一个块来更新分子和分母阵列,如上述图29的方法返回到步骤506所描述的。否则,在步骤519设定i=1。
[00145]在步骤520,计算与量化表Qt+1,qi的锯齿形顺序中第ith个位置关联的值作为在位置i的分母上的分子值。接着,查询522询问i是否小于63。如果为真,则在步骤524将i增加并计算在量化表中剩余的元素。否则,完成Qt+1的更新并终止图29的方法。
[00146]在本部分的余下部分,我们来看一个计算给定过渡的熵率的实例。
[00147]实例:对于给定的I计算在图21中的从状态14到状态16的过渡的熵率(即,从状态14到状态16的过渡(1,I)的熵率)。
[00148]除了特定的过渡(0,0)和(15,0)外,与任何过渡关联的熵率都包括三个部分:RUN的熵率、LEVEL标识的熵率和LEVEL幅值的熵率。
[00149]RUN的熵率为当前RUN的每一位的熵率,1,其根据上述的二进制化方案而被二进制化为三位001。由于该RUN并不是第一个RUN(从状态0开始的RUN才是第一个RUN),因此它的第一位、第二为和余下位使用不同的上下文模型,该上下文模型从前述LEVEL的锯齿形顺序(这里,由于该过渡从状态14开始,因此这里的锯齿形顺序为14)和状态14的LEVEL幅值(由于该过渡从扩展状态开始,因此使用相应于统一幅值的上下文模型)而确定。一旦确定了上下文模型,我们就能基于当前上下文模型的概率分布找出相应的熵率。
[00150]为在最后的熵编码阶段的标志位使用固定的上下文模型。我们可以使用一位(由λ适当地比例缩放)作为在增加的拉格朗日成本中标志位的成本。
[00151]LEVEL的幅值被二进制化为由结束“1”跟随的(|LEVEL|-1)”0’s”。幅值的第一位和余下位使用不同的上下文模型,这由当前状态的矩形顺序(这里,当前状态的锯齿形顺序为16)和当前run(这里,当前run为1)确定。给定LEVEL,I,因此可以确定熵率。
[00152]实际上,我们并不一定要比较在前趋和基本状态间所有的2m-2个过渡或在前趋和规则状态间所有的2m个过渡中的增加成本。相反,我们可以仅比较在LEVEL=I+1,I,I-1,I-2,9-3,...,(其中I为具有最新的量化步长的硬决策器的输出的绝对值)中的几个(例如,4个)过渡。其他的水平大都可能导致大的增加成本。当在比较中的过渡数量在下一个部分中改变了时,我们应当比较性能和复杂性的不同。
[00153]依然根据本发明的进一步方面,在图13中所示的数据处理系统230还可以用来执行诸如结合附图19至29所描述的压缩方法。在这些情况下,存储器234可以包括从JPEG或MPEG文件所获得的霍夫曼解码的图像,以及未压缩的图像。在经由用户界面236而从用户接收指令时,微处理器238使用计算模块和初始化模块以上述的方式压缩输入的图像数据,随后将该压缩数据提供给通信子系统240。通信子系统240接着可以将这些压缩数据传送到网络242。
[00154]如在部分I中所述,系统240可以集成到数字相机或移动电话中,而从通信子系统240到网络242的传输模式可以是无线的,或通过电话线、以及高速宽带连接。
试验结果
[00155]正如在最后一个部分中所讨论的,给定状态(而不是任意的扩展状态或末端状态)和前趋,存在2m或2m-2个可能的过渡,其中m为LEVEL的最大幅值。我们可以通过比较在这些每两个状态间直至2m或2m-2个任意多个过渡来找出最小增加成本。模拟的结果显示了仅比较两个过渡就能得到我们采用全部比较方案所取得的多数增益。作为实例,图30划出了当对512×512的Barbara图像比较中过渡数量改变时的R-D曲线。当在比较中的过渡数量大于4时,压缩性能几乎没有变化。在以下的试验中,我们在任意两个状态间仅比较四个过渡。表VI图示了在奔腾PC上对512×512的Barbara图像进行一次迭代时基于上下文算术编码的联合优化算法的C代码执行的CPU时间。
表VI.所提出的联合优化算法在奔腾PC上CPU时间(512×512的Barbara)
设定 |
浮点DCT |
快速整数DCT |
比较1个过渡 |
1.7s |
0.30s |
比较4个过渡 |
1.7s |
0.35s |
比较20个过渡 |
1.9s |
0.48s |
[00156]在本部分中以上概括的迭代算法从初始的量化表开始并在迭代期间使用在部分I中所概括的算法更新步长。由于在部分I中步长更新算法仅仅取得了局部优化,因此初始的量化表还在一定程度上影响R-D性能。正如我们在部分I中所做的,我们能够使用从参考文献[1]或在诸如从参考文献[3]、[9]和[5]中的方案所得到的量化表等其他任何缩减的默认量化表。在本部分中,我们仅用缩放的默认量化表的算法开始并比较在基于霍夫曼编码的联合优化算法和基于上下文的算术编码的联合优化间的性能。图31显示了对于512×512的Barbara图像基于上下文的算术联合优化算法和基于霍夫曼编码的联合优化算法的PSNR性能。该曲线是通过对给定缩减的默认量化表搜索拉格朗日乘子λ而得到的。为了图示的目的,在图31中还显示了由混合方案所产生的PSNR性能曲线,在该混合方案中在基于霍夫曼编码的联合优化方案中霍夫曼编码的最后一个阶段由基于上下文的算术编码代替。可以很容易的看出,在基于霍夫曼编码的联合优化算法上的基于上下文的算术编码的增益来自于两部分。第一部分来自于在定制的霍夫曼编码上的基于上下文的算术编码的增益。而第二部分来自于联合优化。图32为512×512的Lena图像而比较了相同的性能。表VII和VIII为这两种图像罗列了在最常见的位率上的编码结果,其中默认的量化表为每一个位率而在开始线性地缩放。从这些表和图可以看出,通过限定至0.5dB,或10~15%的尺寸减小,基于上下文的算术编码的联合优化方法始终优于基于霍夫曼编码的联合优化算法。
表VII具有不同优化方法的PSNR的比较(512×512的Barbara图像)
比率(bpp) |
定制基线 |
基于霍夫曼编码的联合优化[1] |
基于霍夫曼编码的联合优化+基于上下文的算术编码 |
基于上下文的算术编码的联合优化 |
.25 |
25.31 |
26.93 |
27.03 |
27.24 |
.50 |
28.34 |
30.65 |
31.06 |
31.11 |
.75 |
31.02 |
33.12 |
33.53 |
33.72 |
1.00 |
33.16 |
35.18 |
35.52 |
35.68 |
表VII具有不同优化方法的PSNR的比较(512×512的Lena图像)
比率(bpp) |
定制基线 |
基于霍夫曼编码的联合优化[1] |
基于霍夫曼编码的联合优化+基于上下文的算术编码 |
基于上下文的算术编码的联合优化 |
.25 |
31.63 |
32.37 |
32.92 |
32.96 |
.50 |
34.90 |
35.75 |
36.18 |
36.22 |
.75 |
36.62 |
37.60 |
38.07 |
38.11 |
1.00 |
37.91 |
39.13 |
39.46 |
39.53 |
[00157]本发明还可以有其他的变化和改进。例如,以上在部分II中描述的上下文模型也可以很容易地由其他上下文模型替代。而且,虽然以上描述的本发明的方面依赖于(run,size)对和对(run,level),但本领域的技术人员可以清楚地明白,通过来自基于指数的值而不是来自系数指数的尺寸和水平,可以使用其他的(run,index derivative)对。所有的这种类似的修改或改变都被认为是在由所附权利要求所限定的本发明的范围中的。