背景技术
在例如像视频会议、网络会议、电视广播和视频电话之类的几种应用中实时传输影像。
然而,因为通常通过用8比特(1字节)来表示画面中的每个像素来描述数字视频,所以表示影像需要大量的信息。这种未压缩的视频数据导致很大的比特量,并且由于有限的带宽而无法实时地经由常规的通信网络和传输线路传送。
因此,能够进行实时视频传输要求很大程度的数据压缩。然而数据压缩可能会损害画面质量。因此,已经投入很大努力来开发允许在带宽有限数据连接上实时传输高质量视频的压缩技术。
在视频压缩系统中,主要目标是以尽可能少的容量来表示视频信息。容量利用比特被定义为恒定值或比特/时间单元。在这两种情况中,主要目标是减少比特数目。
过去这些年已经开发了许多视频压缩标准。通过ISO(国际标准化组织)或ITU(国际电信联盟)来使这些方法中的很多标准化。此外,已经开发了多种其它专利方法。
主要的标准化方法有:
ITU:H.261,H.262,H.263,H.264
ISO:MPEG1,MPEG2,MPEG4/AVC
依照这些标准在编码处理中的第一步骤是把画面划分为正方形像素块,例如16×16或8×8像素。对亮度信息以及色度信息来进行这种划分。
接下来的预测处理显著地减少待传送的视频序列中的每个画面所要求的比特量。它利用序列一部分与序列的其它部分的相似性,并且生成对块中像素的预测。这可以是基于已经编码/解码画面中的像素(被称作帧间预测)或者基于相同画面中已经编码/解码的像素(帧内预测)。所述预测主要是基于用于表示运动的向量。
由于预测部分为编码器和解码器所共知,所以只需传送差异。这种差异通常要求少得多的容量来用于它的表示。在待编码的像素和预测的像素之间的差异常常被称为剩余(residual)。
被表示成数据块(例如4×4个像素)的剩余仍然包含内部相关性。利用这种特点的公知方法是执行二维块变换。在H.263中,使用8×8离散余弦变换(DCT),而H.264使用N×N(其中N可以是4或8)整型变换。这把N×N个像素变换为N×N个变换系数并且它们通常可由比像素表示更少的比特来表示。利用内部相关性变换N×N像素阵列可能会导致4×4变换系数块,其比原始的4×4个像素块具有少得多的非零值。
对于许多应用来说,变换系数的直接表示仍然太过耗费。为了进一步减小数据表示,执行量化处理。从而变换系数经历量化。简单版本的量化是把参数值除以一个数,导致可以由较少比特表示的较小数。这是用于控制比特产生和重构的画面质量的主要工具。应当提及,这种量化处理的结果是所重构的视频序列多少不同于未经压缩的序列。此现象被称作为“有损编码”。这意味着重构的画面一般具有比原始画面更低的质量。量化处理的输出是整数,没有正确地表示原始的变换系数。这些整数连同用于表示辅助信息的整数一起依照无损方式编码并且被发送到解码器。
最后,执行所谓的二维变换系数数据到一维数据集的扫描,并且依照熵编码方案进一步变换该一维集。熵编码意思是量化变换系数的无损表示。
对于编码器,依照自然次序列出了以上步骤。解码器在一定程度上依照相反次序执行操作并且进行“逆”操作,如逆变换代替变换以及去量化代替量化。
无损编码通常用于经量化的变换系数的熵编码,并且用于编码运动向量、编码模式和块编码模式(CBP)这样的辅助信息。典型情况下,利用事件表来定义“事件”集。然后定义可变长度码(VLC)代码表,并且每个事件被耦合到VLC表中的代码。下面是待编码的事件表的一些例子。
运动向量分量一般是水平或垂直分量。现在假定只考虑一个这样的分量,并且值是可以为正或负的整数。最可能的值是0。随后按下降的可能性是±1、±2、±3等。向量值和代码值的良好组合变为:
¨ ¨
-3 00110
-2 00100
-1 010
0 1
1 011
2 00101
3 00111
¨ ¨
对于最优解决方案来说,最可能的事件应当具有最短代码。更具体地说,比特的码长应当等于事件的熵或者:
代码_长度=-log2(事件的概率)。
因此,如果..-3、-2、-1、0、1、2、3..的概率是1/32、1/32、1/8、1/2、1/8、1/32、1/32等,那么以上VLC是最优的。
一般利用VLC表来编码的另一类辅助信息是CBP。利用VLC指出宏块中4个8×8亮度块和2个并列的8×8色度块中的哪个具有非零系数或不具有非零系数是有益的。因此,定义了具有26=64种可能事件的事件表。定义了相应的VLC表,用于匹配64种事件的概率。
还利用无损VLC来编码量化的变换系数。存在用于有效编码变换系数的许多方法。这可以导致不同的事件表以及相关联的VLC。通常,块中的量化变换系数由块中非零变换系数的数目、块中最后非零变换系数的位置以及变换系数的实际大小来表达。然后此信息的组合创建在VLC表中所定义的事件。例如,可以编码组合的事件,用于指示最后非零的位置以及最后系数的大小是等于1还是大于1。还可以使用其它组合,但是基础仍然是选择组合和相应的VLC表,以根据事件可能性使所要求的比特数目最小化。
只要待编码的数据与基础统计合理匹配,这就会导致低比特使用率。在相反情况中,当编码非常不典型的数据时,比特的使用可能变得过高。在其中待编码的数据不与“正常”统计相匹配的情况下,由大量比特表示的出现情况变得更为频繁。这可以是在捕获视频图像的环境中以迅速且持续的光改变的情况。因为编码处理自动地调整量化间隔以便遵循长码字的频繁出现情况,所以这会损害编码/解码图像的质量。
具体实施方式
本发明提供了具有动态匹配VLC表的事件表的无损编码。如上所述,应当向最可能的事件分配最短代码,随着相关联的出现概率降低,相应的事件应当具有增加的码长。本发明考虑了当我们经过视频序列的不同部分时事件表的概率分布可能不是稳定的。每当出现事件时,在事件表中把该事件向上移动一个位置,即刚出现的事件与关联于上面紧邻位置的事件交换位置。然而,分配给每个位置的代码保持不变,只是事件与表位置的关联被重新布置。
在这里的“事件”特别是指在表中表示的运动向量的出现,所述表映射实际运动向量值和相应的可变长度码。因为把特定的出现概率关联到每个运动向量值,所以使用表达“事件”,运动向量值进而确定用于表示它们中的每个的代码长度。
较之在原始事件表中的位置更频繁出现的事件表明将逐渐地分配更短的比特代码。从而,即便在迅速改变颜色或光的场合中或者其它很少出现的情况下,将提供更多比特的有效编码。
图2是图示了用于表示视频数据的方法的原理的示意性流程图。
所图示的方法是用于在编码过程中表示与视频图像的宏块相关的视频数据的方法,其中特定的视频数据或视频数据的一个或多个组合用预定义事件来表示,预定义事件与在可变长度码(VLC)表中的索引位置相关联。VLC表包括被分配给每个索引位置的代码。
所述方法起始于开始步骤200。
在检测步骤210,检测在编码过程期间在所述预定义事件当中的第一事件的出现。假设在步骤210中检测到第一事件,则执行随后的步骤。
接下来,在表查找步骤220,在VLC表中查找与所检测到的第一事件相关联的位置x。
接下来,在代码提供步骤230,提供被分配给VLC表中位置x的代码。
接下来,在测试步骤240中,确定是否位置x>0。如果该事件与不同于VLC表顶部位置的位置相关联,则是这种情况,因为在顶部的位置具有索引0。如果x>0,则执行VLC重新布置步骤250。否则,在步骤260终止该方法。
在VLC表重新布置步骤250中,VLC表按以下步骤来重新布置:
-使目前与位置x-1相关联的第二事件与位置x相关联,并且
-使所述预定义的事件当中的第一事件与位置x-1相关联。
在该方法中所使用的视频数据可以是以下中的一个或多个:
-量化变换系数的大小,
-块中非零量化变换系数的数目,
-块中最后非零量化变换系数的位置,
-块的大小,
-编码模式(coding mode),和
-码块样式(coded block pattern)。
在终止步骤260终止该方法。
图3是图示用于处理与视频图像的宏块相关的代码的方法的原理的示意性流程图。
所图示的方法是用于在解码过程中解释与视频图像的宏块相关的代码的方法,其中所述代码被解释成预定义的事件,预定义的事件与可变长度码(VLC)表中的索引位置相关联并表示解码视频数据或解码视频数据的组合,所述可变长度编码表包括被分配给每个索引位置的代码。
所述方法起始于开始步骤300。
在检测步骤310检测在解码过程期间代码的出现。假设在步骤310中检测到代码,那么执行随后的步骤。
然后,在表查找步骤320中,在VLC表中查找与所检测到的代码相关联的位置x。
接下来,在事件提供步骤330中,提供与VLC表中位置x相关联的第一事件。
接下来,在测试步骤340中,确定是否位置x>0。如果检测到的代码与不同于VLC表顶部位置的位置相关联,则是这种情况,因为在顶部位置具有索引0。如果x>0,则执行重新布置步骤350。否则,在步骤360终止该方法。
在VLC表重新布置步骤350中,通过执行以下步骤来重新布置VLC表:
-使目前与位置x-1相关联的第二事件与位置x相关联,并且
-使第一事件与位置x-1相关联。
在该方法中所使用的视频数据可以是以下中的一个或多个:
-量化变换系数的大小,
-块中非零量化变换系数的数目,
-块中最后非零量化变换系数的位置,
-块的大小,
-编码模式,和
-码块样式。
在终止步骤360终止该方法。
图4是图示编码装置400的原理的示意性框图。
编码装置400是用于表示在编码过程中与视频图像的宏块相关的视频数据的设备,其中特定的视频数据或视频数据的组合用关联于可变长度码(VLC)表中的索引位置的预定义事件来表示,所述可变长度码表包括被分配给每个索引位置的代码。
编码装置400包括内部总线420,该内部总线420用于互连诸如微处理器410之类的处理设备、I/O设备450和存储器420。存储器420包括包含处理指令的部分430和包含VLC表数据的部分440。
I/O设备450包括均连接到总线420的输入设备和输出设备(没有单独示出)。视频数据460作为输入被馈送到在I/O设备450中所包括的输入设备,从而可用于由处理设备410处理。在I/O设备450中所包括的输出设备被配置成提供由处理设备410所产生的VLC数据470作为输出。
在存储器部分430中所保持的处理指令被配置为使处理设备410执行如在本说明书中所描述的用于表示视频数据的方法,诸如参考图2所描述的方法。
图5是图示解码装置500的原理的示意性框图。
解码装置500是用于表示在解码过程中与视频图像的宏块相关的视频数据的设备,其中特定的视频数据或视频数据的组合用关联于可变长度码(VLC)表中的索引位置的预定义事件来表示,所述可变长度码表包括被分配给每个索引位置的代码。
解码装置500包括内部总线520,用于互连诸如微处理器510之类的处理设备、I/O设备550和存储器520。存储器520包括包含处理指令的部分530和包含VLC表数据的部分540。
I/O设备550包括均连接到总线520的输入设备和输出设备(没有单独示出)。
VLC数据570作为输入被馈送到在I/O设备550中所包括的输入设备,从而可用于由处理设备510处理。在I/O设备550中所包括的输出设备被配置成提供由处理设备510所产生的视频数据560作为输出。
在存储器部分530中所保持的处理指令被配置为使处理设备510执行如在本说明书中所描述的用于将代码解释为预定义事件的方法,诸如参考图3所描述的方法。
本发明可以被用于各种或者实际上所有的VLC实现方式。例如,当出现由蓝色占主导的视频序列部分时,于是包含非零蓝色分量的CBP事件往往具有相对较高的概率,而包含非零红色分量的事件往往很低。当序列颜色已经改变为红色时,事件的概率可能会改变。然后依照本发明,由于颜色变化而逐渐地重新布置VLC表。
用于各编码模式的事件表一般表明具有1、2或4个运动向量的帧间预测、帧内预测等。在画面中从帧到帧的微小运动情况下,具有1个运动向量的帧间模式一般可能具有最大概率。转到具有激烈运动甚至场景变化的序列部分,帧内模式可以是最可能的模式。
如已经指出的,本发明自适应地重新排序事件表中的事件,从而动态地获得在事件的概率分布和VLC代码的长度之间的较近匹配。在编码器和解码器动态地并且依照相同方式来进行重新排序,因此不必指示关于重新排序的任何辅助信息。可以依照几种方式来实现动态重新排序的精确方式。
在本发明的一个实施例中,考虑编码模式。在这里的模式定义了预测和编码MB的方式。典型的表可以是:
事件号 | 运动向量/帧内 | 大小 | 非零系数?
0 1 - 0
1 1 16×16 1
2 1 8×8 1
3 2 - 0
4 2 8×8 1
5 4 - 0
6 4 8×8 1
7 帧内 8×8 1
在CBP的情况下,存在64事件表,用于定义MB中6个8×8块中的哪个具有非零系数。最频繁的事件可以改变,因此依照本发明的动态VLC在CBP的情况下使用也是有益的。
编码最后位置如先前所提及与N×N个变换系数的编码相关。在统计上,低频率系数大于高频率系数。如在图1中所描述,在系数扫描中反映这点。因此典型的是朝向扫描末尾的许多系数等于0。从而指示扫描中最后非零系数的位置可能是有用的。表明此最后非零系数的绝对值是等于1还是大于1也是有利的。因此,我们最后得到具有2N2个事件的事件表。
现在将描述依照本发明动态地适应模式事件表的排序的方式。假定处理按照事件_0是最可能的假设、事件_1是次最可能的等开始。则事件的次序最初以下述表开始:
01234567
串中的位置指示了要使用的代码的号。在第一实例假定要编码事件_2。则使用代码号2。同时,事件_2与串中左边的事件交换位置,导致要用于编码下一事件的新排序。
02134567
事件_2再次出现并且这次是利用代码号1来编码。然后,另一重新排序依照以下结果进行:
20134567
下一个要编码的是事件_4,所述事件_4使用代码号4。在编码之后,把事件_4向前移动一个位置来产生新的事件次序
20143567
这种处理继续并且动态改变排序表以便匹配概率的排序。如果重新排序只反映暂时条件,那么VLC将逐渐地转换回到VLC的原始排序。如果稳定的光和颜色条件没有与统计很好地匹配,其中根据所述统计来导出原始排序,那么动态VLC将易于转换成不同的静态次序,更适应上述条件。
这种动态重新排序不局限于例子中的模式表,而是可以用于任何事件表。动态适应的方法也不限于上述简单方法。
本发明的方法和设备不要求在编码器和解码器之间交换任何数据。
本发明的方法和设备通过动态地重新排序事件表,从而在事件概率和VLC代码字之间获得更好匹配来导致更高效的数字压缩视频编码/解码。当通过暂时或恒定不同于用来导出静态VLC的预期条件的光和颜色条件来编码视频时,这是特别有用的。