相关申请:本申请要求由En-hui Yang和Longji Wang于2004年7月14日提交的标题为“JOINT OPTIMIZATION OF RUN-LENGTH CODING,HUFFMAN CODINGAND QUANTIZATION TABLE WITH COMPLETE BASELINE JPEG DECODER COMPATIBILITY(具有完整的基线JPEG解码器兼容性的行程编码、霍夫曼编码和量化表的联合优化)”美国临时申请No.60/***,***的权益,其全部内容引用在此作为参考。
背景技术
[0002]如W.Pennebaker和J.Mitchell在“JPEG still image datacompression standard(JPEG静态图像数据压缩标准)”中所描述的(KluwerAcademic出版商,1993年)(以下称之为“参考文献[1]”),和G..Wallace在“The JPEG still-image compression standard(JPEG静态图像压缩标准)”(Commun.ACM,1991年4月,第34卷第30-44页)(以下称之为“参考文献[2]”)中所描述的,JPEG是一种常见的基于DCT的静态图像压缩标准。JPEG格式在诸如万维网和数字相机等中有着广泛的使用。
[0003]JPEG编码系统的普及已经激发了对JPEG优化方案的研究——例如,参见J.Huang和T.Meng于1991年4月在Proc.IEEE Int.Conf.Acoustics,Speech and Signal Processing,第2621-2624页中的“Optimal quantizer stepsizes for transform coders(用于变换编码器的优化量化器步长)”(以下称之为“参考文献[3]”);S.Wu和A.Gersho于1993年在Proc.IEEE Int.Conf.Acoustics,Speech and Signal Processing,第5卷,第389-392页中的“Rate-constrained picture-adaptive quantization for JPEG baselinecoders(用于JPEG基线编码器的强制速率图片适应性量化)”(以下称之为“参考文献[4]”);V.Ratnakar和M.Livny于1995年在Proc.Data CompressionConf..,第332-341中的“RD-OPT:An efficient algorithm for optimizingDCT quantization tables(RD-OPT:用于优化DCT量化表的有效法则)”(以下称之为“参考文献[5]”);V.Ratnakar和M.Livny于2000年2月在IEEE TransImage Processing,第9卷,第267-370中的“An efficient algorithm foroptimizing DCT quantization tables(用于优化DCT量化表的有效法则)”(以下称之为“参考文献[6]”);K.Ramchandran和M.Vetterli于1994年9月在IEEE Trans Image Processing,第3卷,第700-704页的“Rate-distotionoptimal fast thresholding with complete JPEG/MPEG decoder compatibility(具有完全JPEG/MPEG解码器兼容性的速率失真优化快速阀值)”(以下称之为“参考文献[7]”);M.Crouse和K.Ramchandran于1995年在Proc.IEEE Int.Conf.Acoustics,Speech and Signal Processing,第23311-2334页中的“Jointthresholding and quantizer selection for decoder-compatible baselineJPEG(用于兼容解码器的基线JPEG的联合阀值和量化选择)”(以下称之为“参考文献[8]”);和M.Crouse和K.Ramchandran于1997年2月在IEEE Trans ImageProcessing,第6卷,第285-297中的“Joint thresholding and quantizerselection for transform image coding:Entropy constrained analysis andapplications to baseline JPEG(用于变换图像编码的阀值和量化选择:对基线JPEG的熵强制分析和应用)”(以下称之为“参考文献[9]”)。所有这些参考文献所描述的规则都忠于JPEG语法。由于这些规则仅优化了JPEG编码器而没有改变标准的JPEG解码器,因此它们不仅能进一步降低JPEG压缩图像的尺寸,而且还具有易于展开的优点。这个独有的特性使得它们在接收终端并不善于支持新的解码器的应用中十分有吸引力,诸如在无线通信中。
量化表优化
[0004]JPEG量化步长很大程度上决定了在JPEG压缩图像中的速率失真折中。但由于量化表是独立于图像的,因此使用默认的量化表并不是最佳的。因此,所有量化表优化规则的目的都是为每个图像分量得到有效、图像自适应的量化表。量化表优化的问题能从以下轻易地阐明。(为了不失一般性,我们在以下讨论中仅考虑一个图像分量。)给定具有目标比特率Rbudget的输入图像,想找到一组量化步长{Qk:k=0,…,63},以最小化整个失真
对比特率约束
其中Num_Blk是块数量,Dn,k(Qk)是在其由步长Qk量化时在第nth块中第Kth个DCT系数的失真,而Rn(Q0,…,Q63)是在用量化表{Q0,…,Q63}对第nth块编码所产生的比特数。
[0005]由于JPEG使用零行程(run-length)编码,其将从不同频带来的零系数指数(coefficient index)合并成一个符号,因此比特率并不是简单地通过对每个单独的系数指数编码所得的比特之和。因此,很难用传统的比特分配技术来对(1)和(2)得到最优解。Huang和Meng(参见参考文献[3])提出了一种梯度下降技术(gradient descent technique),其基于DCT系数的概率分布为拉普拉斯算子的假定而对量化表设计问题解决局部最优解。其后又提出了最速下降方案,该方案并未假定DCT系数的概率分布(参见参考文献[4])。开始于大步长的初始量化表,响应低比特率和高失真,这些算法每次均减少在量化表的一个入口处的补偿步长直至达到目标比特率。在每次迭代中,该算法试图以下述方式更新量化表:对用于量化表的一个入口的所有可能降低的步长值上,最大化在失真中降低的比率以在比特率中增加。数学上,这些算法都在找寻解决如下最大化问题的k和q的值
其中ΔD|Qk→q和ΔR|Qk→q分别为在失真中的改变以及当量化表的第kth个入口中Qk由q取代时整个的比特率。这些增量由以下计算
和
重复迭代直到/Rbudget-R(Q0,…,Q63)/≤ε,其中ε为由用户指定的收敛性标准(convergence criterion)。
[0006]上述的两个算法在运算上都很昂贵。Ratnakar和Livny(参见参考文献[5]和[6])提出了一种比较有效的算法来基于DCT系数分布统计构建量化表而无需重复整个压缩-解压缩的循环。他们提供了一种动态编程途径来在比率和失真的大范围中优化量化表并得到了与在参考文献[4]中方案类似的性能。
优化阀值
[0007]在JPEG中,相同的量化表必须应用到每个图像块。即便当使用图像自适应量化表时也是如此。这样,JPEG量化缺乏局部自适应性,这意味着在特定块的特性和平均块统计之间的使用差异仍存在潜在的增益。这就是最优快速阀值算法的动因(参见参考文献[7]),它降低了在R-D方向上较不重要的系数指数。在数学上,对于固定的量化器,在原始图像X和施加比特预算限制的量化图像
给定的阀值图像
之间的失真最小化,即,
[0008]等效的未受限问题将被最小化
[0009]采用动态编程算法来解决上述递归优化问题(7)。它为每个0≤k≤63计算Jk *,接着找到使该Jk *最小化的k*,即,找到最佳非零系数以结束在每个独立块中的扫描。读者可以详细参阅参考文献[7]。由于只有不显著的系数指数改变了,因此最优快速阀值算法(参见参考文献[7])并未选定具有JPEG解码器兼容性的系数指数的全部优化。
联合阀值和量化器选择
[0010]由于在阀值算法采用块水平统计的同时,自适应量化器选择方案利用了广泛图像的统计,因此它们的运算近似于“正交”。这意味着将它们绑定在一起是很有益处的。霍夫曼表是另一种留给JPEG编码器的自由参数。因此,Crous和Ramchandran(参见参考文献[8]和[9]),提出了一种对这三个参数的联合优化的方案,即,
其中Q为量化表,H为合成的霍夫曼表,T为一组二进制阀值标志,其为是否对系数指数取阀值的信号。(8)的受限最小化问题被转换成拉格朗日乘子的非受限问题,
[0011]接着,他们提出了一种算法,其反复选择每个Q、T、H以在假定其他参数都固定的情况下最小化拉格朗日成本(9)。
发明内容
[0012]根据本发明的第一方面,提供了一种在给定量化表和行程尺寸(run-size)分布下通过确定由确定成本的三重序列(run、size、ID)所表示的确定成本的n个系数指数序列而压缩n个系数序列的方法,其中每个三重序列(run、size、ID)限定了相应的系数指数序列,以便,(i)在相应的系数指数序列中的每个指数为数字数(digital number),(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(run value),整数值ID,用于指定遵循特定值的连续指数的数量的指数幅度,以及尺寸值,限定将指数存储在由ID值指定的分类中所需的多个比特。该方法包括步骤:(a)使用给定的量化表和行程尺寸分布来为多个可能的三重序列(run、size、ID)制订成本函数;(b)将该成本函数应用到在多个可能的三重序列(run、size、ID)中的每个序列以确定关联成本;和(c)基于可能的三重序列(run、size、ID)的关联成本函数从多个可能的三重序列(run、size、ID)中选择确定成本的三重序列(run、size、ID);并使用霍夫曼编码对相应的所选择的序列对(run、size)进行编码。
[0013]根据本发明的第二方面,提供了一种用于在给定的量化表和行程尺寸分布下通过使用表示多个可能的三重序列(run、size、ID)的曲线图(graph)来压缩n个系数序列的方法,该曲线图与同类(in-category)的指数ID以及给定的量化表一起确定n个量化的系数序列,其中每个三重序列(run、size、ID)限定了相应的系数指数序列,以便,(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值。该方法包括步骤:(a)使用给定量化表和行程尺寸分布以制订用于多个可能的序列对(run、size)的成本函数;(b)构建表示多个可能的序列对(run、size)的曲线图;(c)基于由成本函数所确定的关联成本而从曲线图的第一节点到末端节点延伸曲线图的路径;(d)从所选定的路径确定相应的三重序列(run、size、ID);和(e)使用霍夫曼编码对相应的序列对(run、size)编码。
[0014]根据本发明的第三方面,提供了一种通过联合确定输出量化表、由三重序列(run、size、ID)所表示的确定成本的系数指数序列和行程尺寸分布来压缩n个系数序列的方法,其中每个三重序列(run、size、ID)限定相应的系数指数序列,以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值,其中系数指数序列与量化表一起确定n个软决策(soft-decision)量化系数的序列。该方法包括步骤:(a)选择第0th个量化表;(b)选择第0th个行程尺寸分布;(c)设定计数器t为0;(d)使用第tth个量化表和行程尺寸分布来制定用于多个可能的三重序列(run、size、ID)的第tth个成本函数;(e)将该成本函数应用到在第tth个多个可能的三重序列(run、size、ID)中的每个可能的序列以确定关联成本;(f)基于该关联成本从第tth个多个可能的三重序列(run、size、ID)中选择三重序列(run、size、ID)的第tth个确定成本序列;(g)如果三重序列(run、size、ID)确定成本的序列以及第tth个量化表和行程尺寸分布都满足选择标准;则选择三重序列(run、size、ID)的第tth个确定成本的序列作为三重序列(run、size、ID)的确定成本的序列,选定该tth个量化表作为输出量化表;否则将t加一而从三重序列(run、size、ID)的第tth个确定成本的序列中确定第(t+1)th个量化表和行程尺寸分布,并返回到步骤(d);和(h)使用霍夫曼编码对相应选定的序列(run、size、ID)编码。
[0015]根据本发明的第四方面,提供了一种为在n个系数序列的序列中的n个系数的每个序列,和由三重序列(run、size、ID)最终确定成本的序列所表示的系数指数的最终确定成本的序列而通过联合确定输出量化表、输出行程尺寸分布来压缩n个系数序列的序列的方法,其中每个三重序列(run、size、ID)限定相应的系数指数序列,以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值,其中系数指数序列与量化表一起确定n个软决策量化系数的序列。该方法包括步骤:(a)选择第0th个量化表;(b)选择第0th个行程尺寸分布;(c)设定计数器t为0;(d)对于在n个系数序列的序列中的n个系数的每个序列,(i)使用第tth个量化表和行程尺寸分布来制定用于关联的第tth多个可能的三重序列(run、size、ID)的第tth个成本函数;(ii)将该成本函数应用到关联的第tth个多个可能的三重序列(run、size、ID)中的每个可能的序列,以确定关联成本;(iii)基于该关联成本从关联的第tth多个可能的三重序列(run、size、ID)中选择三重序列(run、size、ID)的关联的第tth个确定成本序列;(e)在步骤(d)后,将总的成本函数提供给用于在n个系数序列的序列中的n个系数的每个序列的第tth个关联的确定成本的三重序列(run、size、ID),以确定第t个总成本;(f)如果该第tth个总成本满足选择标准,则选定该第tth个量化表和行程尺寸分布作为输出量化表和行程尺寸分布,对于在n个系数序列的序列中的n个系数的每个序列,将由最终确定成本的三重序列(run、size、ID)所表示的最终确定的系数指数序列作为关联的第tth个三重序列(run、size、ID);否则将t加一而从三重序列(run、size、ID)的第tth个确定成本的序列中确定第(t+1)th个量化表和行程尺寸分布,并返回到步骤(d);和(g)使用霍夫曼编码对相应选定的序列(run、size、ID)进行编码。
[0016]根据本发明的第五方面,提供了一种在给定量化表和给定尺寸分布(size distribution)下通过确定由相应的确定成本的差数序列所表示的N个系数的确定成本的序列来压缩N个系数的方法,其中每个差数序列限定相应的N个系数的序列,以便在差数序列中的每个差数都为第ith个指数值减去第(i-1)th个指数值的数字数,其中i比0大且小于N-1。该方法包括步骤:(a)使用给定的量化步长和给定的行程尺寸分布来制定用于多个可能的差数序列的成本函数;(b)将该成本函数应用到在多个可能的差数序列中的每个可能的序列以确定关联成本;和(c)基于该关联成本从该多个可能的差数序列中选择相应的确定成本的差数序列,并从相应的确定成本的差数序列确定确定成本的N个指数序列。
[0017]根据本发明的第六方面,提供了一种在输出量化步长和输出尺寸分布下通过联合确定输出量化步长,和由相应的确定成本的差数序列所表示的输出确定成本的N个指数序列而压缩N个系数序列的方法,其中每个差数序列都限定相应的N个指数序列,以便在差数序列中的每个差数都为等于第ith个指数值减去第(i-1)th个指数值的数字数,i比0大且比N-1小。该方法包括步骤:(a)选择第0th个量化表和第0th个行程尺寸分布;(b)设定计数器t为0;(c)使用第tth个量化步长和第tth个行程尺寸分布来制定用于第t个th多个可能的差数序列的第tth个成本函数;(d)将该第tth个成本函数应用到在第tth个多个可能的差数序列中的每个可能的序列以确定关联成本;(e)基于该关联成本从第tth多个可能的差数序列中选择第tth个确定成本的差数序列;(f)如果该第tth个相应的确定成本的差数序列以及第tth个量化表和第tth个尺寸分布都满足选择标准;则选择第tth个确定成本的差数序列作为输出的确定成本的差数序列,选定该tth个量化步长作为输出量化步长,选定该第tth个尺寸分布作为输出的量化步长,并选定该第t个确定成本的N个指数序列作为输出的确定成本的N个指数序列;否则将tth加一而从第tth个确定成本的差数序列中确定第(t+1)th个量化步长和和第(t+1)th个行程尺寸分布,并返回到步骤(c)。
[0018]根据本发明的第七方面,提供了一种数据处理系统,其用于在给定的量化表和行程尺寸分布下通过确定由确定成本的三重序列(run、size、ID)所表示的确定成本的n个系数指数序列而压缩n个系数序列,其中每个三重序列(run、size、ID)限定了相应的系数指数序列,以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值(sizevalue)。该数据处理系统包括:(a)初始化装置,其用于使用给定的量化表和行程尺寸分布来为多个可能的三重序列(run、size、ID)制订成本函数;(b)计算装置,其用于将该成本函数应用到在多个可能的三重序列(run、size、ID)中的每个序列以确定关联成本;基于可能的三重序列(run、size、ID)的关联成本函数从多个可能的三重序列(run、size、ID)中选择确定成本的三重序列(run、size、ID);和使用霍夫曼编码对相应所选定的序列对(run、size)编码。
[0019]根据本发明的第八方面,提供了一种数据处理系统,其用于在给定的量化表和行程尺寸分布下通过使用表示多个可能的三重序列(run、size、ID)的曲线图(graph)来压缩n个系数序列,该曲线图与同类(in-category)的指数ID以及给定的量化表一起确定n个量化系数序列,其中每个三重序列(run、size、ID)限定了相应的系数指数序列,以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值。该数据处理系统包括:(a)初始化装置,其用于使用给定量化表和行程尺寸分布以制订用于多个可能的序列对(run、size)的成本函数;(b)计算装置,其用于(i)构建表示多个可能的序列对(run、size)的曲线图;(ii)基于由成本函数所确定的关联成本而从曲线图的第一节点到末端节点延伸曲线图的路径;(iii)从所选定的路径确定相应的三重序列(run、size、ID);和(iv)使用霍夫曼编码对相应的序列对(run、size)编码。
[0020]根据本发明的第九方面,提供了一种数据处理系统,其用于通过联合确定输出量化表、由三重序列(run、size、ID)所表示的确定成本的系数指数序列、和行程尺寸分布来压缩n个系数序列,其中每个三重序列(run、size、ID)限定相应的系数指数序列,以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(runvalue)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值,其中系数指数序列与量化表一起确定n个软决策量化系数的序列。该数据处理系统包括:(a)初始化装置,其用于选择第0th个量化表、选择第0th个行程尺寸分布,并设定计数器t为0;(b)计算装置,其用于(i)使用第tth个量化表和行程尺寸分布来制定用于多个可能的三重序列(run、size、ID)的第tth个成本函数;(ii)将该成本函数应用到在第tth个多个可能的三重序列(run、size、ID)中的每个可能的序列以确定关联成本;(iii)基于该关联成本从第tth多个可能的三重序列(run、size、ID)中选择三重序列(run、size、ID)的第tth个确定成本序列;(iv)如果三重序列(run、size、ID)第tth个确定成本的序列以及第tth个量化表和行程尺寸分布都满足选择标准;则选择三重序列(run、size、ID)的第tth个确定成本的序列作为三重序列(run、size、ID)的确定成本的序列,选定该tth个量化表作为输出量化表;否则将t加一而从三重序列(run、size、ID)的第tth个确定成本的序列中确定第(t+1)th个量化表和行程尺寸分布,并返回到步骤(i);和(v)使用霍夫曼编码对相应选定的序列(run、size、ID)编码。
[0021]根据本发明的第十方面,提供了一种数据处理系统,其用于为在n个系数序列的序列中的n个系数的每个序列,和由三重序列(run、size、ID)最终确定成本的序列所表示的系数指数的最终确定成本的序列而通过联合确定输出量化表、输出行程尺寸分布来压缩n个系数序列的序列的方法,其中每个三重序列(run、size、ID)限定相应的系数指数序列,以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了有特定值的多个值,和(iii)每个三重序列(run、size、ID)限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值,其中系数指数序列与量化表一起确定n个软决策量化系数的序列。该数据处理系统包括:(a)初始化装置,其用于选择第0th个量化表;选择第0th个行程尺寸分布;并设定计数器t为0;(b)计算装置,其用于对于在n个系数序列的序列中的n个系数的每个序列,(i)使用第tht个量化表和行程尺寸分布来制定用于关联的第tth多个可能的三重序列(run、size、ID)的第tth个成本函数;(ii)将该成本函数应用到在第tth个多个可能的三重序列(run、size、ID)中的每个可能的序列以确定关联成本;(iii)基于该关联成本从第tth多个可能的三重序列(run、size、ID)中选择三重序列(run、size、ID)的第tth个确定成本序列;(iv)在步骤(iii)后,将总的成本函数应用到用于在n个系数序列的序列中的n个系数的每个序列的第tth个关联的确定成本的三重序列(run、size、ID),以确定第tth个总成本;(v)如果该第tth个总成本满足选择标准,则选定该第tth个量化表和行程尺寸分布作为输出量化表和行程尺寸分布,对于在n个系数序列的序列中的n个系数的每个序列,将由最终确定成本的三重序列(run、size、ID)所表示的最终确定的系数指数序列作为关联的第tth个三重序列(run、size、ID);否则将t加一而从三重序列(run、size、ID)的第tth个确定成本的序列中确定第(t+1)th个量化表和行程尺寸分布,并返回到步骤(i);和(vi)使用霍夫曼编码对相应选定的序列(run、size、ID)编码。
[0022]根据本发明的第十一方面,提供了一种数据处理系统,其用于在给定量化表和给定尺寸分布(size distribution)下通过确定由相应的确定成本的差数序列所表示的N个系数的确定成本的序列来压缩N个系数,其中每个差数序列限定相应的N个系数的序列以便在差数序列中的每个差数都为第I个指数值减去第(i-1)个指数值的数字数,其中i比0大且小于N-1。该数据处理系统包括:(a)初始化装置,其用于使用给定的量化步长和给定的行程尺寸分布来制定用于多个可能的差数序列的成本函数;(b)计算装置,其用于将该成本函数应用到在多个可能的差数序列中的每个可能的序列以确定关联成本;和基于该关联成本从该多个可能的差数序列中选择相应的确定成本的差数序列,并从相应的确定成本的差数序列确定确定成本的N个指数序列。
[0023]根据本发明的第十二方面,提供了一种数据处理系统,其用来在输出量化步长和输出尺寸分布下通过联合确定输出量化步长,和由相应的确定成本的差数序列所表示的输出确定成本的N个指数序列而压缩N个系数序列,其中每个差数序列都限定相应的N个指数序列以便在差数序列中的每个差数都为等于第i个指数值减去第(i-1)个指数值的数字数,i比0大比N-1小。该数据处理系统包括:(a)初始化装置,其用来选择第0th个量化表和第0th个行程尺寸分布,并设定计数器t为0;(b)计算装置,其用来(i)使用第tth个量化步长和行程尺寸分布来制定用于多个可能的差数序列的第tht个成本函数;(ii)将该第tth个成本函数应用到在多个可能的差数序列中的每个可能的序列以确定关联成本;(iii)基于该关联成本从第tth多个可能的差数序列中选择第tth个确定成本的差数序列;(iv)如果该第tth个相应的确定成本的差数序列以及第tth个量化表和第tth个尺寸分布都满足选择标准;则选择第tth个确定成本的差数序列作为输出的确定成本的差数序列,选定该tth个量化步长作为输出量化步长,选定该第tth个尺寸分布作为输出的量化步长,并选定该第tth个确定成本的N个指数序列作为输出的确定成本的N个指数序列;否则将t加一而从第tth个确定成本的差数序列中确定第(t+1)th个量化步长和和第(t+1)th个行程尺寸分布,并返回到步骤(i)。
[0024]根据本发明的第十三方面,提供了一种在计算机上使用的计算机程序产品,其在给定量化表和行程尺寸分布下通过确定由确定成本的三重序列(run、size、ID)所表示的确定成本的n个系数指数序列而压缩n个系数序列,其中每个三重序列(run、size、ID)都限定了相应的系数指数序列以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了包括有特定值的多个值,和(iii)每个三重序列(run、size、ID)都限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值,该计算机程序产品包括记录介质,和在记录介质上记录以指示计算机执行如下步骤的装置,(a)使用给定的量化表和行程尺寸分布来为多个可能的三重序列(run、size、ID)制订成本函数;(b)将该成本函数提供给在多个可能的三重序列(run、size、ID)中的每个序列以确定关联成本;和(c)基于可能的三重序列(run、size、ID)的关联成本函数从多个可能的三重序列(run、size、ID)中选择确定成本的三重序列(run、size、ID);并使用霍夫曼编码对相应选定的序列对(run、size)编码。
[0025]根据本发明的第十四方面,提供了一种在计算机上使用的计算机程序产品,其用于在给定的量化表和行程尺寸分布下通过使用曲线图(graph)来压缩n个系数序列,该曲线图表示了与同类(in-category)的指数ID以及给定的量化表一起确定n个量化系数序列的多个可能的三重序列(run、size、ID),其中每个三重(run、size、ID序列都限定了相应的系数指数序列以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了包括有特定值的多个值,和(iii)每个三重序列(run、size、ID)都限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值。该计算机程序产品包括记录介质和在介质上记录有用于指示计算机执行以下步骤的装置,(a)使用给定量化表和行程尺寸分布以制订用于多个可能的序列对(run、size)的成本函数;(b)构建表示多个可能的序列对(run、size)的曲线图;(c)基于由成本函数所确定的关联成本而从曲线图的第一节点到末端节点延伸曲线图的路径;(d)从所选定的路径确定相应的三重序列(run、size、ID);和(e)使用霍夫曼编码对相应的序列对(run、size)编码。
[0026]根据本发明的第十五方面,提供了一种在计算机上使用的计算机程序产品,其通过联合确定输出量化表、由三重序列(run、size、ID)所表示的确定成本的系数指数序列、和行程尺寸分布来压缩n个系数序列,其中每个三重序列(run、size、ID)限定相应的系数指数序列以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了包括有特定值的多个值,和(iii)每个三重序列(run、size、ID)都限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值,其中系数指数序列与量化表一起确定n个软决策量化系数的序列。该计算机程序产品包括记录介质和在介质上记录有用来指示计算机执行以下步骤的装置,(a)选择第0th个量化表;(b)选择第0th个行程尺寸分布;(c)设定计数器t为0;(d)使用第tth个量化表和行程尺寸分布来制定用于多个可能的三重序列(run、size、ID)的第tth个成本函数;(e)将该成本函数提供给在多个可能的三重序列(run、size、ID)中的每个可能的序列以确定关联成本;(f)基于该关联成本从第tth多个可能的三重序列(run、size、ID)中选择三重序列(run、size、ID)的第tth个确定成本序列;(g)如果三重序列(run、size、ID)确定成本的序列以及第tth个量化表和行程尺寸分布都满足选择标准;则选择三重序列(run、size、ID)的第tth个确定成本的序列作为三重序列(run、size、ID)的确定成本的序列,选定该t个量化表作为输出量化表;否则将t加一而从三重序列(run、size、ID)的第tth个确定成本的序列中确定第(t+1)th个量化表和行程尺寸分布,并返回到步骤(d);和(h)使用霍夫曼编码对相应选定的(run、size、ID)序列编码。
[0027]根据本发明的第十六方面,提供了一种在计算机上使用的计算机程序产品,其为在n个系数序列的序列中的n个系数的每个序列,和由三重序列(run、size、ID)最终确定成本的序列所表示的系数指数的最终确定成本的序列而通过联合确定输出量化表、输出行程尺寸分布来压缩n个系数序列的序列,其中每个三重序列(run、size、ID)限定相应的系数指数序列以便(i)在相应的系数指数序列中的每个指数为数字数,(ii)相应的系数指数序列包括了包括有特定值的多个值,和(iii)每个三重序列(run、size、ID)都限定了表示特定值的多个连续指数的行程值(run value)、指定遵循特定值的连续指数的数量的指数幅度的整数值ID、以及限定将指数存储在由ID值指定的分类中所需的多个比特的尺寸值,其中系数指数序列与量化表一起确定n个软决策量化系数的序列。该计算机程序产品包括记录介质和记录在记录介质上用来指示计算机执行如下步骤的装置,(a)选择第0th个量化表;(b)选择第0th个行程尺寸分布;(c)设定计数器t为0;(d)对于在n个系数序列的序列中的n个系数的每个序列,(i)使用第tth个量化表和行程尺寸分布来制定用于关联的第tth多个可能的三重序列(run、size、ID)的第tth个成本函数;(ii)将该成本函数提供给在多个可能的三重序列(run、size、ID)中的每个可能的序列以确定关联成本;(iii)基于该关联成本从第tth多个可能的三重序列(run、size、ID)中选择三重序列(run、size、ID)的第t个确定成本序列;(e)在步骤(d)后,将总的成本函数提供给用于在n个系数序列的序列中的n个系数的每个序列的第tth个关联的确定成本的三重序列(run、size、ID),以确定第tth个总成本;(f)如果该第tth个总成本满足选择标准,则选定该第tth个量化表和行程尺寸分布作为输出量化表和行程尺寸分布,对于在n个系数序列的序列中的n个系数的每个序列,将由最终确定成本的三重序列(run、size、ID)所表示的最终确定的系数指数序列作为关联的第tth个三重序列(run、size、ID);否则将t加一而从三重序列(run、size、ID)的第tth个确定成本的序列中确定第(t+1)th个量化表和行程尺寸分布,并返回到步骤(d);和(g)使用霍夫曼编码对相应选定的序列(run、size、ID)编码。
[0028]根据本发明的第十七方面,提供了一种在计算机上使用的计算机程序产品,其在给定量化表和给定尺寸分布下通过确定由相应的确定成本的差数序列所表示的N个系数的确定成本的序列来压缩N个系数,其中每个差数序列限定相应的N个系数的序列以便在差数序列中的每个差数都为第ith个指数值减去第(i-1)th个指数值的数字数,其中i比0大且小于N-1,该计算机程序产品包括记录介质,和记录在记录介质上用来指示计算机系统执行如下步骤的装置,(a)使用给定的量化步长和给定的行程尺寸分布来制定用于多个可能的差数序列的成本功能;(b)将该成本函数提供给在多个可能的差数序列中的每个可能的序列以确定关联成本;和(c)基于该关联成本从该多个可能的差数序列中选择相应的确定成本的差数序列,并从相应的确定成本的差数序列确定确定成本的N个指数序列。
[0029]根据本发明的第十八方面,提供了一种在计算机上使用的计算机程序产品,其在输出量化步长和输出尺寸分布下通过联合确定输出量化步长,和由相应的确定成本的差数序列所表示的输出确定成本的N个指数序列而压缩N个系数序列,其中每个差数序列都限定相应的N个指数序列以便在差数序列中的每个差数都为等于第ith个指数值减去第(i-1)th个指数值的数字数,i比0大比N-1小,该计算机程序产品包括记录介质,和记录在记录介质上用以指示计算机系统执行如下步骤的装置,(a)选择第0th个量化表和第0th个行程尺寸分布;(b)设定计数器t为0;(c)使用第tth个量化步长和行程尺寸分布来制定用于多个可能的差数序列的第tth个成本函数;(d)将该第tth个成本函数提供给在多个可能的差数序列中的每个可能的序列以确定关联成本;(e)基于该关联成本从第tth多个可能的差数序列中选择第tth个确定成本的差数序列;(f)如果该第tth个相应的确定成本的差数序列以及第tth个量化表和第t个尺寸分布都满足选择标准;则选择第tth个确定成本的差数序列作为输出的确定成本的差数序列,选定该tth个量化步长作为输出量化步长,选定该第tth个尺寸分布作为输出的量化步长,并选定该第tth个确定成本的N个指数序列作为输出的确定成本的N个指数序列;否则将t加一而从第tth个确定成本的差数序列中确定第(t+1)th个量化步长和和第(t+1)th个行程尺寸分布,并返回到步骤(c)。
具体实施方式
[0049]图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是编码器能优化的两个自由参数。
[0050]编码器还能优化的第三个但有些隐藏的自由参数是图象数据本身。取决于图象数据在整个JPEG编码处理期间的阶段,图象数据表现为不同的形式,如在图2中所示。在硬决策量化前,它们表现为DCT系数34的形式;而在硬决策量化后,它们表现为DCT指数36的形式,即量化的DCT系数由所使用的量化步长归一化;在锯齿形排序和行程编码后,通过指定在各个分类——(run、size)代码和同类的指数38中的DCT指数的精确幅度的整数,它们表现为行程尺寸对的形式。(为了简明起见,我们将这样的整数称之为同类指数)。要注意的是,DCT指数与量化步长一起确定量化的DCT系数。虽然JPEG语法允许量化表在编码器定制,但通常使用按标准给定的示例性的量化表的缩放版本(参见参考文献[1])(称之为默认表)。由于默认表是独立于图像的并且缩放不是图像自适应的,因此默认表的缩放比例不是最理想的。即便使用自适应图像的量化表,JPEG也必须为每个图像块应用相同的表,以表示从优化系数指数,即DCT指数中仍然保留了潜在增益。要注意的是,硬决策量化加系数指数优化等于软决策量化。因为系数指数可以等同地表示为行程尺寸对,其后面是经过行程编码的同类指数,因此我们可以简单地将系数指数优化称之为与步长和霍夫曼优化并行的行程编码优化。如以下所描述的,我们不仅提出了非常灵巧、基于曲线图的行程编码优化方案,还提供了一种用于联合优化如分别在图2的步骤40、42和44中的行程编码、霍夫曼编码和量化步长的迭代优化方案。
形式问题定义
[0051]现在,我们来阐述我们的联合优化问题,其中对在基线JPEG中的所有三个自由参数进行最小化处理。在这部分中我们仅考虑AC系数的优化。DC系数的优化将在以后讨论。
[0052]在JPEG编码中给定输入图像I0和固定量化表Q,通过行程编码找到每个8×8块的同类指数后,系数指数完全确定了行程尺寸对的序列,反之亦然。我们提出的问题是在同类的指数ID、所有可能的霍夫曼编码表H、和所有可能的量化表Q之后,在所有可能的行程尺寸对(R,S)序列上进行有约束的最优化:
或等效于
其中d[I0,(R,S,ID)Q]表示在原始图像I0和在所有AC系数上由(R,S,ID)和Q所确定的重构图像之间的失真,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页的“Fixed slope 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]”)中所倡导。
[0053]介绍性地,将我们的联合优化问题与联合阀值和量化器选择进行比较(参见参考文献[8]和[9])。另一方面,这两者都是旨在联合优化三个参数的迭代处理。另一方面,我们的方案在两个方面显著不同(参见参考文献[8]和[9])。首先,我们考虑了系数指数或(R,S,ID)序列的全部优化而不是考虑只忽略无关紧要的系数指数表示的部分优化(参见参考文献[8]和[9])。正如我们在以下部分中所要看见的,这使得全部的优化都是非常灵巧、可有效计算的解决方案。这与所提出的相对耗时和繁琐解决方案的部分优化(参见参考文献[7],[8]和[9]))截然不同。其次,我们不需要提供任何耗时的量化器选择方案来在每次迭代中找出R-D的优化步长。相反,我们使用默认的量化表作为起始点,随后为步长的局部优化而在每次迭代中有效地更新步长。
问题的解决方案
[0054]比率失真优化问题(12)就是失真、比率、霍夫曼表、量化表和序列(R,S,ID)的联合优化。为了使优化问题易于处理,我们提出了一种迭代算法,其假定其他两个参数固定,反复选择序列(R,S,ID)、霍夫曼表、和量化表来使公式(12)的拉格朗日成本最小。由于行程尺寸概率分布P完全决定了霍夫曼表,因此我们使用P来替代在优化处理中的霍夫曼表Ho这种迭代算法可以描述如下:
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。
[0055]由于拉格朗日成本函数在每一步中并不增加,因此保证了收敛性。迭代算法的核心是步骤2)和步骤3),即,找到序列以用给定的Q和P最小化拉格朗日成本J(λ),并用图像的新指数更新量化步长。这两步将在以下分别叙述。
基于曲线图的行程编码优化
[0056]如上所述,即便使用图像自适应量化表,JPEG量化也缺乏局部自适应性,这显示出从系数指数本身的优化依然存在潜在的增益。这种增益可在步骤2)中使用。优化阀值(参见参考文献[7])仅考虑了系数指数的部分优化,即忽略在R-D方向(R-D sense)中不显著的系数。我们提出了一种高效的基于曲线图的优化搜索算法以优化在R-D方向中的全部系数指数。它不仅能忽略(drop)非显著的系数,而且还能将它们从一种分类变为另一种,如果在R-D方向中需要,甚至将零系数变为很小的非零系数也是可能的。换句话说,我们的基于曲线图的优化路径搜索算法在所有的可能系数指数(或等效地,优化行程尺寸对)中发现优化系数指数以最小化拉格朗日成本。由于给定了Q和P,因此拉格朗日成本J(λ)是以块方式(block-wise)增加的,在步骤2)中的最小化能通过一块接一块的方式解决。也就是说,优化序列(R,S,ID)可以为每个8×8图像块独立确定。这样,在以下中,我们仅限于讨论一个8×8的图像块。
[0057]让我们限定一个具有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)来的每个连接的所有其他状态来的引入连接。对于给定的状态i(i≤63)以及它的前趋i-r-1(0≤r≤15),在它们之间存在10个并行的过渡,其相应于在(R,S)对中的尺寸组,So为了简明起见,我们仅仅画出在图3中所示的曲线图中的一个过渡;整个曲线图都需要S的延伸。对于每个i,其中i>15,从相应于对(15,0)的状态i-16到状态i还存在一个过渡,即,ZRL(零行程)代码。我们从状态i-r-1到状态i分配给每个过渡(r,s)一个成本,其中该成本被限定为当第i个DCT系数被量化为尺寸组s(即,该系数指数需要s比特来表示它的幅度)并且在该第i个DCT系数被量化为零之前所有的r个DCT系数立即出现时从从状态i-r-1到状态i进行的拉格朗日成本。具体地,这个增加的成本等于
其中,Cj,j=1,2,…,63,为第jth个DCT系数,IDi为相应于尺寸组s的同类指数,其中该尺寸组在由该尺寸组s所指定的分类中的所有同类指数之间使Cj产生最小化失真,而qi为第ith个量化步长。类似地,对于从状态i(i≤62)到末状态的过渡,它的成本限定为
从状态63到末状态的过渡未分配成本。
[0058]很容易看出,根据以上的定义,8×8块的行程尺寸对的每个序列相应于具有拉格朗日成本的从状态0到末状态的一条路径。例如,块的行程尺寸对(0,5),(4,3),(15,0),(9,1),(0,0)的序列相应图4所示的路径。另一方面,在定向图中并不是所有从状态0到末状态都代表8×8块的行程尺寸对的合法序列。我们称这样的路径是非法路径。例如,由从状态1到状态17的过渡(15,0)和从状态17到末状态的过渡(0,0)后的从状态0到状态1的过渡(0,5)构成的路径就是非法路径,该路径不表示8×8块的行程尺寸对的合法序列。然而,不难看出,对于任意非法路径,总是存在合法路径,该合法路径的拉格朗日成本确实要比非法路径的要小。因此,在包括了合法路径和非法路径的所有可能路径中从状态0到末状态具有最小总的拉格朗日成本的优化路径一定是合法路径。此外,优化路径,以及其相应的如在(13)中所确定的同类指数,为任意给定的Q,P和8×8块得到了步骤2)中的最小化。例如,我们可以将快速动态编程算法应用到定向的曲线图,以便为给定的8×8块找到优化序列(R、S、ID)。应当指出的是,基线JPEG语法并不会为8×8块产生由(15,0)结束的序列(R,S)。理论上,通过我们的动态编程所找到的优化(R,S)序列可以由(15,0)至状态63而结束,即使其不太可能在实际应用中发生(当(15,0)的熵率(entropy rate)比(0,0)的熵率要小时才可能发生)。但是,由(15,0)至状态63所结束的(R,S)序列为合法路径,并且可以由基线JPEG语法来正确地编码/解码。
[0059]以下将更详细的一步步描述该算法。开始时,该算法基于给定行程尺寸分布P而为每个行程尺寸对(r,s)预先计算λ·(-log2P(r,s)+s)。为每个状态i,递归预计算由忽略在状态前的前述1至15个系数获得的失真以及在该状态结束该块的剩余成本。该算法从状态0(DC系数)开始。忽略所有AC系数的成本被存储在J0中。接着,进行状态1(第一AC系数)。存在十条路径从状态0开始到状态1。这十条路径相应于该第一AC指数可以落入的尺寸分布。与每条路径关联的成本使用公式(13)来计算,其中,预先计算在公式(13)中的第一项,之后确定IDi。为了简明起见,这里我们只考虑正指数;对称性地可以类似地处理负指数。假定IDi‘为响应输入Ci的具有步长qi的硬决策量化器的输出,其落入到由s‘所指定的分类中。如果s=s‘,则由于在这样的尺寸组中IDi导致了C的最小失真,因此选定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所示。
[0060]以上的处理是全动态编程方法。为了进一步降低计算的复杂性,我们可以对其进行细微地修改。具体地,在实际中我们并不一定要比较在从一个状态到另一个状态的10或11个并行过渡中增加的成本。反而,对我们来说,只要比较在与尺寸组s-1,s,和s+1关联的过渡中的增加成本就已经足够了,其中s为相应于给定硬决策量化器的输出的尺寸组。与其他组关联的过渡最有可能导致大的增加成本。我们应当比较在以下所述的实验结果中这两个方案的复杂性和性能差异。
优化量化表更新
[0061]为了更新在步骤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块的数量。
[0062]在公式(15)中,其遵循d[I
0,(R,S,ID)
Q]的最小化可以通过独立地为每个i=1,2,…,63最小化公式(15)的内部总和来获得。我们的目的是找到一组新的量化步长
(1≤i≤63)来最小化
i=1,…,63 (16)
[0063]公式(16)可以写作
i=1,…,63 (17)
[0064]这些二次函数的最小化可以根据
对公式(17)取导数而估算。公式(16)的最小化可根据下式获得:
i=1,…,63 (18)
从而更新在步骤3)中的步长。
基于栅格的DC优化
[0065]在这部分,我们根据量化步长和霍夫曼表考虑量化DC系数的联合优化。在JPEG语法中,量化的DC系数使用一维预测器差异性编码,其为先前的量化DC值。由于对量化的DC系数编码的成本仅仅取决于先前量化的DC系数,因此在联合优化中使用栅格。
[0066]让我们限定栅格具有N阶段,其相应于DC系数的数量,即,在重新开始的时间间隔中8×8块的数量(DC系数的预测初始于在每个重新开始的时间间隔和每个扫描开始的0处(参见参考文献[1])。每个阶段都具有M个状态,其相应于DC指数能取的不同值,在相邻阶段中的状态能完全连接,如同在图5中所示的。在每阶段中的每个状态都与作为从初始状态到该状态的最小成本的成本关联。找到优化DC指数序列的处理从0阶段开始直至N-1阶段。在N-1阶段,具有最小成本的状态被挑选出来并且从0阶段到N-1阶段的具有最小成本的优化路径被向后描绘出,从而产生优化DC指数序列。
[0067]以下将更具体地一步步描述该处理。让x(i,j)表示在阶段ith中的第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)=|DCi-q0·v(i,j)|2+λ·(-log2P(S)+S) (19)
其中q0为用于DC系数的量化步长,DCi为第ith个DC系数,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指数序列。
[0068]在获得优化DC指数序列后,如以上所讨论的,我们可以以相同的方式更新P(S)和量化步长q0。然后,如同我们用量化步长和霍夫曼表联合优化量化AC系数所作的一样,重复该优化处理。
[0069]在基线JPEG中,DC指数能上达2047个不同的值(-1023至1023),其在每个阶段中需要2047个状态。大量的状态不仅增加了以上算法的复杂性,而且还需要大量的存储位置。实际上,如果DC系数为软量化为与硬决策量化器的输出相差很远的值,则最有可能导致更高的成本路径。因此,在实际的基于栅格的DC量化的实现中,我们可以只设置相应于在硬决策量化器的输出附近的DC指数的少量状态。例如,我们可以只使用33格状态,其中每个具有中间状态的阶段相应于硬决策量化器的输出,而以上和以下的16个状态分别相应于比硬决策量化器的输出要大或要小的16个邻近指数。这就在稍微降低性能的同时显著地降低了计算的复杂性和存储器的需求。
[0070]在图7的流程图中显示了根据本发明一方面的用于联合优化行程编码、霍夫曼编码和量化表的处理。在步骤52,开始迭代处理,如在图8的流程图中详细概括的。在步骤54,j,表示N个总块的第jth块的指数,被设定为1。在步骤56,处理为块j确定优化路径,在这种情况下,为第一块。这将在图9中的流程图中详细概括。在查询58,其确定了j是否为最后的块。这通过将j与N(总的块数量)进行比较而得。如果j比N要小,则在步骤60中增加j。
[0071]处理为每个块j找到优化路径直到j=N。当j=N时,就为N个块的每一个确定了优化路径。在步骤62中计算J(λ)的第(t+1)th个值作为与N个块的每个关联的总的最小失真。该值接着与在查询64中的第tth个值进行比较。若在J(λ)的第tth个值与J(λ)的第(t+1)th个值间的差小于ε(选择标准,或更具体地,收敛性判别标准),则认为已完成了优化。若不是这种情况,则联合优化处理转到步骤66并且更新量化表Qt+1,如在图12的流程图中所详细概括的。
[0072]在步骤68,使用第(t+1)th个概率分布函数来计算与行程尺寸对(r,s)关联的熵率。在步骤70,增加指数t,随后执行额外的迭代。若确定了满足在查询64中的选择标准,则使用与行程尺寸对(r,s)关联的第(t+1)th个概率分布函数在步骤72中产生定制的霍夫曼表。步骤74使用这些定制的霍夫曼表来对行程尺寸对和指数编码。用于联合优化行程编码、霍夫曼编码和量化表的处理完成。
[0073]现参考图8的流程图,更详细地描述在图7的流程图的步骤52中的迭代处理的初始化。在步骤82,选择拉格朗日乘子λ。它是表示用于失真的比率交替的固定参数。在步骤84,选择收敛性判别标准ε。这就是通过连续迭代的拉格朗日成本,Jt(λ),的差必须低于的量,因此认为迭代是成功和完成了。
[0074]在步骤86,产生初始量化表Q0。步骤88使用给定的图像I0和在先前步骤中产生的量化表Q0来确定行程尺寸分布P0(r,s)。在步骤90,该行程尺寸分布接着用于计算与行程尺寸对(r,s)关联的熵率。在步骤92,基于原始DCT系数和拉格朗日乘子λ、量化表Q0和与行程尺寸对(r,s)关联的熵率而计算初始的拉格朗日成本Jo(λ)。在步骤94,将N设定为等于图像块的数量,而在步骤96,当指数被强制到尺寸组0时,为给第ith个DCT系数发送的指数(15<i<63),并则ID(i,0)被设定为0。最后,在步骤98,迭代指数t设定等于0并且完成初始化迭代处理的处理。
[0075]现参考图9的流程图,在图7中的流程图更详细地描述了用于为步骤56的块j确定优化路径的处理。在步骤112,初始化块j,如在图10的流程图中详细概括的。在步骤114,为块j的状态i存储当前最低拉哥朗日成本的变量,current_minicost被设定为大数。在步骤116,变量k被赋值表示从先前状态增加的连接数。若i>15,则k赋值为15。若i≤15,则k=i-1。在步骤118,与行程关联的变量被设定为等于0,而在步骤120,与尺寸组关联的变量s被设定为0。
[0076]在查询122,处理确定关系式s=0和r<15是否为真。若不是这种情况,则在步骤124计算对状态i的成本,正如在图11的流程图中所详细概括的。在查询126,对状态i的成本与当前最小的成本current_cost进行比较。若状态i的成本J比current_cost要少,则用J替换current_cost,并且在步骤128将变量r、s、id(i,s)和J存储到状态i。
[0077]在当前成本不少于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找寻优化路径的处理。
[0078]现参考图10的流程图,更详细地描述图9的流程图中步骤112的用于块j的初始化。在步骤152中,块成本的末端,eob_cost(i)对0≤i≤62进行递归计算。这相应于在状态i后忽略所有系数的成本。在步骤154,失真dist(r,i)对i≤r≤15和2≤i≤63进行递归计算。这涉及到忽略在状态i-r-1和状态i之间的均方失真(MSE)。
[0079]在步骤156,第二失真度量(distortion metric),d(i,s)对于1≤i≤63和1≤s≤10进行计算。当相应的指数强制到尺寸组s中时从第ith个DCT系数导出均方失真(MSE)。在步骤158,当指数在尺寸组s中时用于第ith个DCT系数的要被发送的指数,id(i,s)对于1≤i≤63和1≤s≤10进行计算。最后,在步骤160,状态值数i被设定为等于1,同时完成对块j的初始化。
[0080]现参考图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)关联的熵率的总和。
[0081]若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的成本计算。
[0082]现参考图12的流程图,详细说明图7的流程图的步骤66用于更新量化表Qt+1的处理。在步骤194中,分子队列,num(i)对1≤i≤63初始为0。类似地,在步骤194,分母队列,den(i)也对1≤i≤63初始为0。在步骤196,块指数j初始为1。在步骤198,块j从它的行程尺寸和指数格式恢复以产生系数指数队列Ki,j。在步骤200,指数i,其表示在第jth块的锯齿形顺序中的位置被设定为1。
[0083]在步骤202,计算在分子队列中的第ith个值以作为它的当前值和第jth个块的原始的第ith个DCT系数和在以第jth个块的锯齿形顺序中第ith个位置恢复的DCT系数的乘积的总和,正如在步骤198中从行程尺寸和指数格式确定的一样。在步骤204,计算在分母队列中的第ith个值以作为它的当前值和在以第jth个块的锯齿形顺序中第ith个位置的DCT指数的平方。
[0084]查询206询问i是否小于63。若i<63,则在步骤208中增加i并且计算与新的i关联的分子和分母。若在查询206中i不小于63,则查询210询问j是否比N(块的总数量)小。如果j<N,则在步骤212增加j并且基于下一个块执行分子和分母的计算。否则在步骤214将i设定等于1。
[0085]在步骤216,计算与在量化表Qt+1的锯齿形顺序中的第ith个位置关联的值,计算qi作为在位置i的分母上的分子值。查询218询问i是否小于63。若这种情况为真,则在步骤220增加i并且计算在量化表中的剩余位置。否则,完成Qt+1的更新。
[0086]参考图13,其显示根据本发明的优选方面的用于执行诸如与图7-12相关联的如上所述的压缩方法的数据处理系统230的结构图。如图13所示,系统230包括显示器232,其用于显示例如要被传输的图像等。类似地,存储器234可以包括要被传输的JPEG或MPEG文件。在通过用户界面236从用户接收指令时,在将压缩的数据提供给子系统240之前,微处理器238使用计算模块和初始模块(未示出)以上述描述的方式压缩输入的图像数据。然后,通信子系统240可以向网络242传输该压缩的数据。
[0087]如上所述,虽然从通信子系统240到网络242传输的方式可以是无线的或通过电话线,或通过更高带宽的连接,但系统240可以集成到数码相机或移动电话中。
实验结果
AC系数的优化
[0088]上述的基于曲线图的行程编码优化算法和迭代的联合优化法可以应用到用于解码器的兼容优化的JPEG和MPEG编码环境。它们两者都以给定的量化表开始。由于以上讨论的量化步长更新算法仅取得了局部优化性,因此,如果必须使用默认的量化表,则默认的量化表的初始缩放比例对R-D性能有直接的影响。例如,图14显示了使用我们的基于曲线图的行程编码优化方法对512×512的Barbara图像的影响。曲线“a”相应于默认的量化表而曲线“b”相应于0.5精密标度(即,所有步长长度的一半)的曲线。这些曲线通过所有感兴趣的正值清除拉格朗日乘子λ而得到。对于压缩目的,通过缩放量化表而取得的R-D曲线也给定为“c”可以看出,我们可以从曲线“a”或曲线“b”的点X取得相同的失真。从曲线“c”我们可以使用小λ来得到点Y。(由于可以预乘熵率因此在执行比率以降低复杂性之前替换λ;-1/λ在R-D曲线上具有坡度的物理意义)。从曲线“b”我们可以使用比较大地λ来得到点Z。即便对半检索(binarysearch)方法能够用来找到在R-D方向上优化的初始比例缩放因子,根据经验所确定的比例能很好地起作用并可以取得通过优化方案所取得的大多数增益。在我们的实验中使用了经验方法。
[0089]给定初始量化表,在迭代的联合优化算法中的叠代数还在计算复杂性和得到的压缩性能上有直接的影响。图15包括为512×512Lena图像而从一次迭代(仅优化行程尺寸对)、两次迭代和全部迭代(收敛性公差ε设定为0.1,同时迭代的结果的平均数为大约6)取得的R-D曲线。可以看出,从全部联合优化所得到的大多数增益可以在两次迭代中取得。
[0090]如上所述,量化步长更新算法仅能得到局部优化性。除了比例缩放默认的量化表外,所提出的联合量化算法还可以很轻易地被配置来从诸如从在参考文献[3]-[5]中的任何方案所得的任意其他的量化表开始。(应当指出的是,在参考文献[3]-[5]中提出的方案仅仅指出了如何设计用于硬决策量化的优化量化表;同样地,从这些方案中所得到的量化表对我们在本发明中所考虑的软决策量化不是最优的。但是,作为用于我们迭代联合优化算法的初始量化表,这些量化表优于比例缩放的默认量化表。)在我们的试验中,我们选择在参考文献[5]中的快速算法来产生以此开始的初始量化表。图16和表I比较了我们的优化方法和用于512×512Lena图像的参考方法的不同配置的峰值信噪比(PeakSignal-Noise Ratio,PSNR)性能。图17和表II比较了512×512Barbara图像的相同性能。定制的霍夫曼表用在最后的熵编码阶段。几条备注是按序的。首先,在参考文献[7]和[9]中的优化自适应阀值方案是所提出的行程编码优化的子集。因此,在我们期望的任意比特率下,本发明的行程编码优化方案胜过了用于两个图像的优化自适应阈值方案。其次,由于在低比特率时更多的系数被量化为零,因此量化表优化在低比特率起着较少的作用。所提出具有初始缩放比例默认量化表的联合优化方案在低比特率可以比在参考文献[9]中的联合优化方案取得更好的结果。第三,对于例如Barbara等的复杂图像,由于存在更多要被优化的非零系数,因此所提出的具有从参考文献[5]所产生的初始量化表的联合优化方案在所有比特率相比于在参考文献[9]中的联合优化方案要作得更好。对于像Lena的简单图像,由于量化表优化在低比特率其着较小的作用,因此所提出的联合优化方案在低比特率相比于在参考文献[9]中的方案仍然能取得更好的结果。但是,由于我们的方法并不在每次迭代中尽其可能地找出优化量化步长,因此在参考文献[9]的方案对于Lena图像在高比特率仍然能取得较好的结果。第四,相比于定制的基线JPEG,所提出的联合优化方案显著地改进了目标PSNR,对于低比特率的例如Barbara等复杂图像,对比可知其性能超出了一些例如在1993年12月J.Shapiro的“Embeded image coding using zerotrcss of waveletcoefficients(使用微波系数的零树的内嵌图像编码)”(IEEE Trans.SignalProcessing,第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 |
33.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) |
定制基线 |
自适应阀值[9] |
行程编码优化 |
联合优化+初始缩放比例默认量化表 |
[5]的联合优化+初始量化表 |
联合优化[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 |
表III 512×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 |
表IV 512×512的Goldhill的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 |
计算复杂性
[0091]现在我们介绍一些行程编码优化算法和迭代联合优化算法的计算复杂性的结果。如上所述,给定状态和前趋,我们可以通过比较所有的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系数的优化
[0092]在先前的实验中并没有优化量化的DC系数。与AC系数不同,DC系数通常非常大并且对于在JPEG语法中的霍夫曼编码差别只有12个尺寸组(与AC系数的162个不同的行程尺寸对相反)。因此,从基于栅格的DC系数来的增益是有限的。当从DC优化来的增益平均为比特率时,在PSNR上的所有改进都是可以忽略的。为了显示从在部分V中所概括从基于栅格的DC优化所得到的性能的改进,图18图示了对于512×512Lena图像的DC熵vs.DC失真。从这些绘图,我们也可以清楚地看出,即便增益非常有限,在缩放比例的步长上基于栅格的DC优化算法的改进。
[0093]本发明还可以有其他的变化和改进。可以认为,所有这样的改进或变化都在由所附权利要求限定的本发明的范围中。