使用变换的视频编码和解码的制作方法与工艺

文档序号:12541584阅读:190来源:国知局
使用变换的视频编码和解码的制作方法与工艺
本发明涉及视频压缩和解压缩系统,特别涉及一种框架,其自适应地使用变换函数及相关工具对预测和熵编码之间的信号表示进行自适应地建模,包括缩放、量化、扫描和信令。

背景技术:
在类似于例如电视广播、互联网视频流服务和视频会议的若干应用中,采用视频序列的传输和存储。原始格式中的视频序列需要非常大量的数据来表示,由于序列的每一秒可以包括数十个单独帧,并且通常每个帧由每像素至少8位来表示,每个帧需要几百或几千个像素。为了尽量减小传输和存储成本,视频压缩被用在原始视频数据上。其目的是以尽可能小的容量来表示原始信息,即,以尽可能少的位来表示。表示视频序列的所需容量的减少将会影响压缩序列的视频质量,即其与原始的未压缩视频序列的相似度。现有的视频编码器,诸如AVC/H.264,在实现用于压缩视频序列的视频质量的所需水平的同时,利用以下预测、变换、量化和熵编码这四个主要的处理过程来实现最大水平的视频压缩。预测过程利用在视频序列中发现的时间和空间冗余来大大减少表示数据所需的容量。用于预测数据的机制对于编码器和解码器两者都是已知的,因此只有误差信号或残差必须被发送到解码器以重构原始信号。该过程通常在数据块(例如8×8像素)而不是整个帧中进行。预测通常针对于已重构的帧或属于同一帧的重构像素的块进行。变换过程的目的在于利用存在于残差信号中的相关性。它通过将信号的能量集中到几个系数来实现上述目的。因此,变换系数通常比残差的像素需要更少的位来表示。基于离散余弦变换(DCT),H.264使用4×4和8×8整数类型变换。表示变换过程的输出中的数据所需的容量对于许多应用可能还是太高。此外,修改变换过程以便达到所需的用于压缩信号的容量水平是不可能的。量化过程通过允许进一步降低表示该信号所需的容量考虑到了这一点。应当注意的是,这个过程是破坏性的,即该重构的序列看起来会不同于原始序列。熵编码过程需要所有的非-零量化变换系数并对它们进行处理以便有效地表示为位流。这需要以特定顺序读取或扫描变换系数,以尽量减小表示压缩视频序列所需的容量。上述描述适用于视频编码器;视频解码器将以大致相反的顺序进行所有上述过程。特别地,在解码器侧的变换过程将需要使用在编码器上使用的变换的反转。类似地,熵编码变成熵解码,量化过程变成逆缩放。预测过程通常以完全相同的方式在编码器和解码器两者上进行。这里给出了变换过程的更全面的回顾。残差的统计特性影响了变换(即,DCT)在少量系数中压缩输入信号的能量的能力。根据预测的质量和该预测是否利用了空间或时间冗余,残差显示了完全不同的统计特性。其它影响预测质量的因素是所使用的块的大小以及被处理的序列的空间/时间特征。众所周知,DCT对于高度相关的Markov-I信号达到了最大的能量集中(energycompaction)性能。随着信号相关性的变弱,DCT的能量集中性能开始下降。例如,可以显示,对于输入信号,离散正弦变换(DST)是怎样利用较低的相邻的相关特征而优于DCT的。在图像和视频编码中的DCT和DST通常在块上使用,即2D信号;这意味着,一维变换首先在一个方向上(例如,水平)进行,随后是在另一方向上进行的一维变换。如上文所述,变换的能量集中能力取决于输入信号的统计。在一些情况下,对于二维信号沿着两个垂直轴线和水平轴线输入变换以显示不同的统计是可能的并且实际上是常见的。在这种情况下,在每个轴上选择最佳执行变换是可行的。类似的方法已经在新的正在发展的ISO和ITU视频编码标准以及高效率视频编码(HEVC)内进行了尝试。特别地,如类似于DCT[2]和DST[3]的两个一维可分离的变换的组合已经在正在发展的HEVC标准中使用。虽然基于DCT的先前的编码标准使用了二维变换(2DDCT),但较新的解决方案将DCT和DST的组合应用到帧内预测块上,即,在空间预测的块上。已经表明,当方向预测是从更接近水平的方向然后是垂直的方向时,对于行变换,DST比DCT是更好的选择,并且类似地,当方向预测是从更接近垂直的方向开始时,对于列变换,DST比DCT是更好的选择。在其余方向上(例如,在行中,当DST应用到列上时)使用DCT。为了实现目的,在视频编码中,通常使用DCT和DST的整数近似值,其在本文以下部分中将被简称为DCT和DST。用于整数类似DCT变换的其中一个解决方案使用了16位中间数据表示,并被称为部分蝶形。其主要的特性与DCT的(抗)对称特性相同,几乎正交的基矢量、在每个变换级之前和之后的16位数据表示、用于所有内部乘法的16位乘法器、以及在(去)量化期间不需要对基向量的不同范数进行校正。

技术实现要素:
本发明涉及编码的变换部分。在一个方面,本发明包括对视频进行编码的方法,其利用在图像值的块的行上操作的并具有行变换矢量的行变换和在图像值的块的列上操作的并具有列变换矢量的列变换,该方法包括以下步骤:建立一组变换模式,包括其中行变换和列变换之一或或两者被跳过的跳过模式;选择所述模式中的一个;对于变换被跳过的任何块,将缩放因子应用于该块的相应图像值上,其中缩放因子取决于被跳过的变换的变换矢量的范数,以使得未经变换的图像值与经变换的系数具有相同水平;以及为解码器提供所选择模式的指示。本发明还包括对已经被编码的视频进行解码的方法,所述编码利用在图像值的块的行上操作的并具有行变换矢量的行变换和在图像值的块的列上操作的并具有列变换矢量的列变换,该方法包括以下步骤:接收其中行变换和列变换之一或两者被跳过的变换跳过模式的指示;根据所述模式应用逆变换并将逆缩放应用到任何未经变换的图像值上,缩放因子取决于被跳过的变换的变换矢量的范数。相同的缩放因子可用于缩放的行或列中的所有系数。在另一个方面,本发明包括对视频进行编码的方法,其利用在图像值的块的行上操作的并具有行变换矢量的行变换和在图像值的块的列上操作的并具有列变换矢量的列变换,该方法包括以下步骤:建立一组变换模式,包括其中行变换和列变换之一或两者被跳过的跳过模式;选择所述模式中的一个;对于变换被跳过的任何块,根据被跳过的变换调整量化级,以及为解码器提供所选择模式的指示。在这个方面,本发明还包括对已经被编码的视频进行解码的方法,所述编码利用在图像值的块的行上操作的并具有行变换矢量的行变换和在图像值的块的列上操作的并具有列变换矢量的列变换,该方法包括以下步骤:接收其中行变换和列变换之一或两者被跳过的变换跳过模式的指示;根据所述模式应用逆变换,并且根据被跳过的变换应用调整的逆量化。优选地,当在列上操作的变换被跳过时,在每列中具有相同值的量化矩阵被应用,当在行上操作的变换被跳过时,在每行中具有相同值的量化矩阵被应用。在又一方面,本发明包括利用在块的行和列上操作的空间变换对视频进行编码的方法,该方法包括以下步骤:建立一组变换跳过模式;选择所述模式中的一个;以及为解码器提供所选择的模式的指示;其中,块内的要编码/解码的第一和最后系数的位置被用信号通知给解码器,并且系数的扫描在所述第一和最后系数之间进行。在该方面,本发明还包括对已经利用在块的行和列上操作的、具有一组变换跳过模式的空间变换编码的视频进行解码的方法;该方法包括以下步骤:接收变换跳过模式的指示;根据所述模式应用逆变换;接收块内的要解码的第一和最后系数的位置的指示,以及扫描所述第一和最后系数之间的系数。可以进行双重扫描,其中变换系数的块用系数的子块来表示;每个子块在子块水平扫描中被访问,并且在每个子块内部使用扫描。以下的优选特征与上述本发明的各个方面有关。该组变换跳过模式可包括两种模式:在行和列上进行变换;不进行变换。可选的,该组变换跳过模式可以包括四个模式:在行和列上进行变换;仅在行上进行变换;仅在列上进行变换;不进行变换。模式选择可以发信号通知给解码器,其中每一个模式都被分配有一个代码字。在YUV块的所有分量(亮度-Y和色度-U和V)上可以使用相同的变换跳过模式。对于一组块,对于块的所有分量YUV,可以发信号通知变换跳过模式,并且对于其它组块的每一分量,分别发信号通知变换跳过模式。因此,在HEVC中,对于INTER编码块具有共同的YUV模式信令和对于INTRA编码块的每个分量具有分离TSM模式是有用的。对于仅具有零值系数的块,不需要发信号通知变换跳过模式。当亮度分量仅具有零值时,可以不需要发信号通知变换跳过模式;在这种情况下,在色度分量上使用2D变换。当亮度分量的仅非零值系数是块的左上角(DC分量)时,可以不需要发信号通知变换跳过模式,在这种情况下,在色度分量上使用2D变换。仅对于具有预先定义的其它模式(例如,仅从其他帧中预测)的块,用信号通知变换跳过模式。在一些例子中,在熵编码级中扫描块内的系数的顺序可以根据变换跳过模式进行调整。因此,在行变换被跳过而列变换被保持时,可以采用逐行扫描,并在列变换被跳过而行变换被保持时,可以采用逐列扫描。附图说明现在将通过示例的方式参照附图来描述本发明,在附图中:图1是示出了根据本发明的实施方式的编码器特征的方框图;图2是示出了根据实施方式的解码器特征的方框图。图3是示出了已知的Z字形扫描方法的可选方式的示意图。图4是示出了另一可选的扫描方法的示意图;图5是示出了据本发明的另一实施方式的编码器特征的方框图;图6是示出了根据实施方式的解码器特征的方框图;图7是示出了根据本发明的另一实施方式的解码器特征的方框图。具体实施方式本发明提出一种进行变换过程-变换跳过模式(TSM)的模式。如上所述,在视频编码中使用的最常见的变换是DCT。其能量集中性能取决于残差的相关性。还描述了怎样可以使残差高度地解除相关性或仅在一个方向上相关,由此使得2DDCT效率较低。当编码器在速率-失真意义上作出这样的决定时,建议跳过该变换过程。所选择的变换模式必须用信号通知给解码器,随后执行在信令中定义的变换/跳过变换的组合。可以以两种模式操作,也就是说,可以按具有2D变换(包含行变换和列变换)的第一模式和不进行变换的第二模式进行操作。在以下描述的大部分中,这些模式被补充有通过仅跳过行变换或仅跳过列变换而形成的额外的模式。因此,四种被定义的变换模式如表1所示。TSM行变换列变换注释TS0++2D变换TSI+-1D变换TS2-+1D变换TS3--不进行变换表1-变换跳过模式选项TS0模式对应于2D变换,即2DDCT。TS1模式定义了应用一维水平DCT,之后在正交方向上的变换跳过,即列变换被跳过。TS2定义了跳过水平变换,而仅有列变换。最后,TS3模式在两个轴线上完全跳过变换,即,没有应用到输入信号上的变换。图1和图2分别示出了编码器和解码器的核心变换跳过模式方框图。每个变换跳过模式以相应的标志对(Tf0,Tf1)被选择,如:TS0:(1,1)、TS1:(1,0)、TS2:(0,1)和TS3:(0,0)。对于任何其它来自可以启用自适应选项的压缩位流的附加位,变换跳过模式的信令成本可以是昂贵的。因此,设计出了几种策略来最大化编码效率。使用精心设计的代码字,可以用信号通知四种TSM选项。那些代码字不需要为每个块发送,但一些其它方法可以用于节省所需的位率。一些用于降低信令成本的可能方式如下所列:每个选项影响编码器和解码器的与变换相关的部分:1.相同的变换模式用于YUV块的所有分量(亮度-Y和色度-U和V)上,因此,对于Y、U和V配置块,只发送TSM选项。2.当所有的量化块(Y、U和V)仅具有零值系数时,不用信号通知TSM。3.当Y块仅具有零值系数时,对于块,不用信号通知TSM,并且然后在U和V分量上-使用2DDCT。4.仅对于具有某些其它模式(如双向预测)的块,用信号通知TSM;否则应用2D-DCT。5.在一组块上用信号通知TSM的应用(如果“接通”那么对于该组中的每个块用信号通知TS模式)。6.在一组块上用信号通知TSM(即,所有子块共享相同的TSM)。7.如果呈现某些其它块的特征时,用信号通知TSM;例如当Y块仅具有一个非零值时,不用信号通知TSM,并且该值在块的左上角(直流分量);在该情况下,2D-DCT用于所有分量。可以用各种代码字来定义四种TSM模式(2D变换,两个1D块变换和块上的跳过变换),例如,用简单的2位字,或用更多位(即,用一元码)来定义:TSM2位信令一元码TS0111TS11001TS201001TS300000如果使用算术编码,可以用不同的概率模型(即,每片的初始上下文状态)来对代码字的每个容器(bin)进行编码,这取决于当前块的大小和QP值。在另一方面,如果使用可变长度编码,TSM代码字可以独立地进行编码或与其他语法元素进行合并,以减少信令开销。在一些方法中,块不总是只变换一次,而是施加将其划分为更小单元的选项,并且在每个子单元中施加变换。这种变换结构的表示是残差四叉树(RQT)方法。尽管到目前为止假设TSM应用于不再被进一步划分成更小的单元的块上,但TSM也可以应用到这种多分割变换结构上。标识了一些选项:1.在块水平上决定了TSM,并且相同的变换选择应用到了每个子单元上。2.TSM仅被允许处在变换结构的根水平上,即,当多分割结构被启用时块未被进一步划分成更小的单元时;如果块被分割成更小的单元,则使用2D变换来变换每个单元。3.对于每个子单元判定和发信号通知TSM,与其深度无关。4.对于子单元,直至特定深度(大小)的单元,判定和发信号通知TSM;对于更低子单元,当不发信号通知TSB时,使用2D变换。当在一个或两个方向上未执行变换时,块内的系数可以具有不同的特征。因此,根据变换跳过模式,可以应用不同的编码策略,以更好地压缩给定系数。当2D变换应用到块上时,所得到的系数通常朝着块的左上角被分组,也就是说它们是低频率分量。传统的扫描,例如Z字形扫描,因此对这种信号的编码来说是一个好的选择。如果只应用1D变换(TS1或TS2),可以使用自适应扫描。例如,逐行或逐列的扫描可分别用于TS2和TS1的情况,因为人们可以预期应用变换可以使系数朝着更低的频率集中。对于在任何方向上不应用变换的TS3的情况下,可以使用传统的扫描(用于2D变换块)扫描。可选择地,可以采用考虑到非-零系数不是均匀分布的概率(决定中隐含不进行变换)的不同的扫描模式。例如,系数可以被分组为由零系数的“海”包围的“岛”。因此,在一个新的布置中,块内的第一和最后有效系数的位置可以在位流中传输,然后可以执行块内的系数的传统扫描。这被示于图3,其中白色方块表示未编码并具有零值的系数,灰色方块表示将要被编码的系数,即包括有效(非零)系数,其中第一编码系数用“F”标记,最后编码系数用“L”标记。仅对属于由第一和最后系数定义的区域的行和列进行行扫描。在这种扫描方法中,第一系数的x和y的坐标必须等于或小于最后有效系数的x和y的坐标。此设置将导致非零系数形成群集的情况下的高效编码,但在确定块内的第一和最后有效系数的位置的编码器中需要额外的复杂性,连同需要将这些位置用信号通知给解码器。在备选方案中,使用双Z字形扫描,如图4所示,其中变换系数的块用系数的子块表示。每个子块在子块水平Z字形扫描中被访问,并且在每个块内部使用Z字形扫描(或任何其它扫描)。这使得能够更好地对非零系数进行分组,该非零系数分组往往在空间上靠近。所希望的是,其中决定跳过任一个或两个1D变换来最小化或移除对改变该过程的其它元件以适应被跳过变换的需要。这里,标识了两个用于自适应变换级的实施策略:1)跳过所选行/列变换,以及修改量化级。2)通过合适的缩放步骤替换所选的行/列变换,以及在需要时调整量化步骤。在第一策略适当地呈现在图1和图2中的同时,采用缩放的第二策略示于图5和图6中。为什么进行缩放的其中一个主要的原因是以所支持的最高精度维持变换块之间的信号水平。这用图5和图6中的虚线表示。通过按从相应的变换矢量的范数2得到的因子来对每个输入像素值缩放来进行缩放,(如果选择变换,在行/列的相同位置处,其将用于获得变换系数值)。一些变换具有每个矢量的接近正交的特性,并且由于单值可用于适当地缩放跳过变换的整个行/列,该特性可以进一步简化缩放设计。以下内容中,缩放策略是以具有16位中间数据表示的整数DCT变换为背景加以论述的。然而,可以看出,这只是一个例子。在HEVC中使用的变换具有范数(TNN),其中N是变换的大小,其接近以下数值:-4-点变换:TN4=128=27;TNS4=7;-8-点变换:TN8=181=27.5;TNS8=7.5;-16-点变换:TN16=256=28;TNSi6=8;-32-点变换:TN32=362=28.5;TNS32=8.5;其中,TNS是相应的变换范数移位参数(由左移位表示的2的幂)。需要注意的是,在HEVC中,每个变换矢量可以具有略微不同的范数,但这些数字是很好地近似于实际应用。这个事实也反映在量化的设计和变换水平调整中,以保持16位中间数据表示。例如,在HEVC解码器设计中,16位值进入逆变换。为了达到列(第一级逆)和行(第二级逆)变换之间的16位精度和达到行变换之后的9+DB精度,发生了以下的信号水平移位(考虑n×n块的大小):SHIFT=TNSN-SHIFT_INV_1ST+TNSN-(SHIFT_INV_2ND-DB),其中,以此标准来算,SHIFT_INV_1ST=7和SHIFT_INV_2ND=12,并且DB是用于处理的位深度增量(例如,0或2)。内部处理位深度是B=8+DB。因此,SHIFT等于:SHIFT=2·TNSN-19+DB=2·TNSN-27+B这对应于在HEVC量化中使用的参数变换移位。对于考虑4×4块的例子(TNS4=7)的情况下,这导致-SHIFT4=13-B,即,右移13-B。虽然此实例可用于解决对TS3的信号水平调整,但当仅在一个方向上应用变换时,也必须考虑一些其他的注意事项。那是因为TNSN并不总是整数,因而移位并不是水平调整的唯一选项。在下文中解决了为这种组合解决统一设计的其它选项。在变换用缩放取代的情况中,自适应变换级以某种方式被设计成使其可以在用16位中间数据表示的整数DCT变换内进行交织,即,为了实现取代其某些部分和与支持原始2D变换的编码解码器的剩余部分相兼容的目的。例如,可以以某种方式使用不应用到行上的变换,其仍然与应用到列上的2D变换的部分相兼容。这意味着用于2D变换的量化也可被用于自适应变换选择。正向变换跳过分别针对行和列定义。在行的x采样上,变换跳过被应用为:y=(x·缩放+偏移)向右移S位(a)其中:S=M-1+DB偏移=1被向左移(S-1)位DB=B-用于处理的8位深度增量M=log2(N),其中N是像素数量中的行/列大小,缩放是无符号整数乘数。在列中,变换跳过被用于(a)中,其中x是列的采样,但具有:S=M+6偏移=1被向左移(S-1)位以这种方式,确保了每个变换级之后的16位宽,如在2D变换中一样。同样,以某种方式将缩放因子设计为接近相关变换矢量的范数2(缩放N2=TNN2=N·642)并是一个整数。在列的采样x上,逆变换跳过被应用为:y=(x·缩放+偏移)向右移S位其中:S=7偏移=1被向左移(S-1)位且缩放与在正向跳过中的相同。在行上,应用了相同的变换跳过操作,但具有S=12-DB,其中DB与在正向变换跳过中的相同。为了节省不必要的像素处理,其中,一个或两个1D变换被跳过,缩放可以移动到量化。此外(例如),如果仅保持垂直变换,其可以被调整以保证最大16位的像素表示。这使得能够完全利用可用的位宽。因此,缩放量化必须进行调整,不仅是因为缩放与跳过的变换相关,而且还与变换内的新的缩放有关。TSM=TS0(2D变换)使用正规2D变换和相应的量化。TSM-TS1(1D行变换)和TS2(1D列变换)在这两种情况下,该正向变换对应于行的原始变换。y=(x+偏移)向右移S位,(b)其中x是残差块的原始值,S=M-1+DB,偏移=1向左移(S-1)位且M和DB与在(a)中的相同。这确保了16位中间数据精度。量化被调整,并考虑此时的信号水平。TSM=TS3(不进行变换)使用平面矩阵直接将残差像素量化,以使得信号水平对应于经2D变换和量化的量化系数的水平。参照图7,以下示出了当变换被跳过时如何调整信号水平的另一例子。在这个例子中,其目的是减少达到期望的性能所需的多个操作。在该上下文中,其中变换或其部分可以被跳过或替换,该技术使用一个或多个基本操作的组合:1.对变换级内的移位的改变;2.对量化的调整,其对应于按小于2的因子对信号缩放;3.通过量化外的标量替换变换或它的部分。信号的每次缩放可以通过因子2N(其中N是正整数)的缩放来表示,并通过小于2的因子M的缩放来表示。需要注意的是,在这种情况下N是前述实施例中的变换大小。在本发明中,操作1使得信号能够按2N(移位)因子缩放,操作2使得信号通过M因子缩放。M的选择通常受限,并且取决于量化设计。视频编码中的1D变换的典型分量是移位。因此,在这里应用的操作1易于使得能够按2N因子调整信号水平。在这两种变换都被跳过的情况下,对信号水平的调整可以在图7中的对应于操作3的“缩放”块中进行。在任何情况下,通过小于2的因子、量化参数偏移或量化缩放因子来对信号的调整可以被适当地选择成进行所需的信号水平调整。例如,在高效率视频编码(HEVC)中,为量化参数添加一个偏移3等于通过平方根(2)(根2)调整信号水平。应理解,已经通过示例的方式描述了本发明,并且在不脱离所附权利要求中所阐明的本发明范围的情况下可以进行多种修改。除了具体提到的情形之外,本文所描述的在某些组合中的特征可以在其他的组合中找到有用的应用,以及在某些情况下可以被单独使用。例如,除了变换跳过模式的情况之外,视频编码或解码中的扫描方法可以是有用的,其中:块内的要编码/解码的第一和最后系数的位置被用信号通知给解码器,并且对系数的扫描在所述第一和最后系数之间进行;或进行双扫描,其中变换系数的块用系数的子块来表示;每个子块在子块水平Z字形扫描中被访问,并且在每个子块内部使用附加的扫描模式。尽管已经用四种变换跳过模式描述了本发明的各方面,它将如上所述可能在某些应用中运行那些模式中的仅两个。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1