本申请案主张2011年3月8日申请的第61/450,555号美国临时申请案、2011年3月10日申请的第61/451,485号美国临时申请案、2011年3月10日申请的第61/451,496号美国临时申请案、2011年3月14日申请的第61/452,384号美国临时申请案、2011年6月8日申请的第61/494,855号美国临时申请案及2011年6月15日申请的第61/497,345号美国临时申请案的权益,这些申请案中的每一者以全文引用的方式并入本文中。
具体实施方式
数字视频装置实施视频压缩技术以更有效率地发射及接收数字视频信息。视频压缩可以应用空间(帧内)预测及/或时间(帧间)预测技术来减少或移除视频序列中固有的冗余。
作为一个实例,对于根据视频译码联合协作组(JCT-VC)当前正在开发的高效率视频译码(HEVC)标准的视频译码,可以将视频帧分割成译码单元。译码单元一般是指充当基本单元的图像区域,各种译码工具被应用于所述基本单元以进行视频压缩。译码单元通常是正方形的(但不必如此),并且可以被认为是类似于所谓的宏块,例如,根据例如ITU-H.264等其它视频译码标准。在本申请案中出于说明的目的将描述根据正在开发的HEVC标准的一些目前所提出的方面的译码。然而,本发明中描述的技术可以用于其它视频译码过程,例如根据H.264或其它标准定义的视频译码过程或专有视频译码过程。
为了实现合意的译码效率,译码单元(CU)可以具有取决于视频内容的可变大小。另外,译码单元可以分裂成较小块用于进行预测或变换。明确地说,每一译码单元可以进一步被分割成预测单元(PU)及变换单元(TU)。预测单元可以被认为是类似于根据例如H.264标准等其它视频译码标准的所谓的分区。变换单元(TU)一般是指残余数据块,变换被应用于所述残余数据块以产生变换系数。
译码单元通常具有一个亮度分量(表示为Y)及两个色度分量(表示为U及V)。取决于视频取样格式,就样本数目而言,U及V分量的大小可以与Y分量的大小相同或不同。
为了对块(例如,视频数据的预测单元)进行译码,首先推导用于所述块的预测符。所述预测符(还称为预测性块)可以通过帧内(I)预测(即,空间预测)或帧间(P或B)预测(即,时间预测)来推导。因此,可以使用相对于相同帧(或切片)中的相邻参考块中的参考样本的空间预测对一些预测单元进行帧内译码(I),并且可以相对于其它先前经译码帧(或切片)中的参考样本块对其它预测单元进行单向帧间译码(P)或双向帧间译码(B)。在每一情况下,参考样本均可用于形成用于待译码块的预测性块。
在识别出预测性块后,即刻确定原始视频数据块与其预测性块之间的差。这个差可被称为预测残余数据,并且指示所述块中的像素值与被选择为表示经译码块的预测性块中的经译码及像素值之间的像素差。为了实现更好的压缩,可以例如使用离散余弦变换(DCT)、整数变换、卡忽南-拉维(K-L)变换或另一变换对预测残余数据进行变换。
变换块(例如TU)中的残余数据可以布置在驻存在空间像素域中的像素差值的二维(2D)阵列中。变换将残余像素值转换成变换域(例如频域)中的变换系数的二维阵列。为了进一步压缩,可以在熵译码之前对变换系数进行量化。熵译码器接着对经量化变换系数应用熵译码,例如上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、概率区间分割熵译码(PIPE)等。
为了对经量化变换系数块进行熵译码,通常执行扫描过程,以便在经排序的一维(1D)阵列(即,变换系数的向量)中根据特定扫描次序来处理块中的经量化变换系数的二维(2D)阵列。用变换系数的1-D次序应用熵译码。对变换单元中的经量化变换系数的扫描将熵译码器的变换系数的2D阵列串行化。可以产生有效性图以指示有效(即,非零)系数的位置。可以应用扫描以扫描有效(即,非零)系数的层级及/或对有效系数的正负号进行译码。
作为一实例,对于DCT,朝向2D变换单元的左上角(即,低频区域)的非零系数的概率常常更高。可能需要用增加将非零系数在系数的串行化行程的一端处分组在一起的概率的方式扫描所述系数,从而准许朝向串行化向量的另一端将零值系数分组在一起,并且将零值系数更有效率地译码成零行程。因为这个原因,扫描次序对于有效熵译码来说可能较重要。
作为一个实例,在HEVC标准中已采用所谓的对角线(或波前)扫描次序来用于扫描经量化的变换系数。替代地,可以使用z字形、水平、垂直或其它扫描次序。如上文所提及,对于变换是DCT的实例,通过变换及量化,非零变换系数一般位于朝向块的左上方区域的低频区域处。因此,在对角线扫描过程(所述过程可能首先横越左上方区域)之后,非零变换系数通常更可能位于扫描的前面部分中。对于首先从右下方区域横越的对角线扫描过程,非零变换系数通常更有可能位于扫描的后面部分中。
多个零系数通常将在扫描的一端处被分组在一起(这取决于扫描方向),这是因为在较高频率下能量减少,并且是因为量化的影响,量化可能致使一些非零系数在位深度减小后即刻变为零值系数。在熵译码器设计中可以利用串行化1D阵列中的系数分布的这些特性来改进译码效率。换句话说,如果非零系数可以通过某种适当的扫描次序而有效布置在1D阵列的一个部分中,那么归因于许多熵译码器的设计,可以预期更好的译码效率。
为了实现将更多非零系数放置在1D阵列的一端处的这个目标,可以在视频编码器-解码器(编解码器)中使用不同扫描次序来对变换系数进行译码。在一些情况下,对角线扫描可能是有效的。在其它情况下,例如z字形、垂直或水平扫描等不同类型的扫描可能更加有效。
可以用各种方法来产生不同的扫描次序。一个实例是,对于变换系数的每一块,可以从多个可用的扫描次序中选出“最佳”扫描次序。视频编码器接着可以针对每一块向解码器提供对通过相应索引表示的一组扫描次序当中的最佳扫描次序的索引的指示。通过应用若干扫描次序并且选择在将非零系数放置在1D向量的开头或结尾附近方面最有效的一个扫描次序,可以确定最佳扫描次序的选择,由此促进有效的熵译码。
在另一实例中,可以基于与相关预测单元的译码有关的各种因素来确定用于当前块的扫描次序,所述因素例如是预测模式(I、B、P)、块大小、变换或其它因素。在一些情况下,因为可以在编码器及解码器两侧推断相同信息(例如预测模式),所以可能不需要向解码器提供对扫描次序索引的指示。而是,视频解码器可以存储配置数据,所述配置数据指示在了解用于块的预测模式及将预测模式映射到特定扫描次序的一个或一个以上准则的情况下的适当扫描次序。
为了进一步改进译码效率,可用的扫描次序可能并不是一直不变。而是,可以启用某种调适,以便例如基于已经译码的系数来自适应地调整扫描次序。总的来说,可以用使得根据选定扫描次序、零及非零系数更有可能被分组在一起的方式来进行扫描次序调适。
在一些视频编解码器中,初始可用扫描次序可以采用非常常规的形式,例如完全水平、垂直、对角线或z字形扫描。替代地,可以通过训练过程来推导扫描次序,并且因而所述扫描次序可能看起来有些随机。所述训练过程可能涉及向块或若干系列块应用不同扫描次序以识别产生合意的结果的扫描次序(例如如上文所提及,在非零及零值系数的有效放置方面)。
如果从训练过程推导扫描次序,或者如果可以选择多种不同的扫描次序,那么可能在编码器及解码器两侧保存特定扫描次序是有益的。指定此类扫描次序的数据量可相当大。举例来说,对于32×32变换块,一个扫描次序可能含有1024个变换系数位置。因为可能存在不同大小的块并且对于每一大小的变换块可能存在多个不同扫描次序,所以需要保存的数据的总量不可小视。例如对角线、水平、垂直或z字形次序等常规扫描次序可能不需要存储,或者可能需要最少的存储。然而,对角线、水平、垂直或z字形次序可能无法提供充足的种类来提供与被训练的扫描次序同等的译码性能。
在一个常规实例中,对于目前正在开发的H.264及HEVC标准,当使用CABAC熵译码器时,在系数层级之前对变换块(即,HEVC中的变换单元)中的有效系数(即,非零变换系数)的位置进行编码。对有效系数位置的译码过程称为有效性图译码。系数的有效性与系数层级的二进位0相同。如图1中所示,经量化变换系数11的有效性图译码产生有效性图13。有效性图13是1及0的图,其中1指示有效系数的位置。有效性图通常需要视频位速率的高百分比。本发明的技术还可适于与其它熵译码器(例如,PIPE)一起使用。
D.马普(D.Marpe)、H.施华兹(H.Schwarz)及T.维根(T.Wiegand)的“H.264/AVC视频压缩标准中的基于上下文的自适应二进制算术译码(Context-Based Adaptive BinaryArithmetic Coding in the H.264/AVC Video Compression Standard)”(《IEEE视频技术电路与系统期刊》(IEEE Trans.Circuits and Systems for Video Technology),2003年7月,第7期,第13卷)中描述了用于对有效性图进行译码的实例过程。在此过程中,如果如经译码块旗标(CBF)所指示在块中存在至少一个有效系数,则对有效性图进行译码,上述情况被定义为:
经译码块旗标:coded_block_flag是一位符号,其指示在单一变换系数块内部是否存在有效(即,非零)系数,针对所述块,经译码块模式指示非零条目。如果coded_block_flag是零,则不针对相关块发射进一步的信息。
如果所述块中存在有效系数,则通过如下遵照所述块中的变换系数的扫描次序对有效性图进行编码:
对变换系数的扫描:首先使用给定扫描模式将coded_block_flag针对其指示非零条目的子块的变换系数层级的二维阵列映射成一维列表。换句话说,根据扫描模式扫描具有有效系数的子块。
在给定扫描模式的情况下,如下扫描有效性图:
有效性图:如果coded_block_flag指示一个块具有有效系数,则对二进制值的有效性图进行编码。针对扫描次序中的每一变换系数,发射一位符号significant_coeff_flag。如果significant_coeff_flag符号是一,即,如果在这个扫描位置存在非零系数,则发送另一个一位符号last_significant_coeff_flag。这个符号指示当前有效系数是不是所述块内部的最后一个有效系数,或者后面是否跟着其它有效系数。如果到达最后一个扫描位置,并且有效性图编码尚未以值为一的last_significant_coeff_flag终止,则显然最后一个系数必须是有效的。
近来关于HEVC的提议已经移除了last_significant_coeff旗标。在这些提议中,在发送有效性图之前,先发送对最后一个有效系数的位置的X及Y位置的指示。
当前,在HEVC中,提出对有效性图使用三种扫描模式:对角线、垂直及水平。图2展示了z字形扫描17、垂直扫描19、水平扫描21及对角线扫描15的实例。如图2中所示,这些扫描中的每一者在正向方向上进行,即,从变换块左上角的较低频率变换系数到变换块右下角的较高频率变换系数。在对有效性图进行译码之后,对每一有效变换系数(即,系数值)的其余的层级信息(二进位1-N,其中N是二进位的总数)进行译码。
在先前在H.264标准中指定的CABAC过程中,在处置了4×4子块之后,例如根据一元代码将变换系数层级中的每一者二进制化,以产生一系列二进位。在H.264中,用于每一子块的CABAC上下文模型集合是由二乘五个上下文模型组成,其中有五个模型用于coeff_abs_level_minus_one语法元素的第一个二进位及所有其余二进位(高达并且包含第14个二进位),所述语法元素对变换系数的绝对值进行编码。值得注意的是,在HEVC的一个所提议的版本中,其余的二进位仅包含二进位1及二进位2。其余的系数层级是用哥伦布-莱斯(Golomb-Rice)译码及指数哥伦布(Golomb)代码来译码。
在HEVC中,可以像在H.264标准中提出的原始CABAC过程中一样执行上下文模型的选择。然而,可以针对不同子块选择上下文模型的不同集合。明确地说,针对给定子块的上下文模型集合的选择取决于先前经译码的子块的某些统计数据。
图3展示HEVC过程的一个所提出的版本在对变换单元25中的变换系数的层级(层级的绝对值及层级的正负号)进行编码时所遵照的扫描次序。应注意,存在用于扫描较大块的4×4子块的正向z字形模式27,及用于扫描每一子块内的变换系数层级的逆z字形模式23。换句话说,在正向z字形模式中扫描一系列4×4子块,从而以一序列扫描所述子块。然后,在每一子块内,执行逆z字形扫描来扫描子块内的变换系数的层级。因此,将变换单元形成的二维阵列中的变换系数串行化成一维阵列,使得给定子块中被逆扫描的系数后面接着是在相继子块中被逆扫描的系数。
在一个实例中,根据图3中展示的子块扫描方法扫描的系数的CABAC译码可以使用60种上下文,即,10种上下文的6个集合,每一者如下文所描述而分布。对于4×4块,如表1中所示,可以使用10种上下文模型(5种模型用于二进位1,且5种模型用于二进位2到14):
表1-用于子块的系数层级的二进位1及二进位2到14的上下文
根据表1,分别在以下情况下对二进位1使用上下文集合中的上下文模型0到4中的一者:在已经在子块内编码了大于1的系数之后,对正在所述子块中被扫描的当前经编码系数进行编码,当前经编码系数是在子块中扫描的初始系数,或者在所述子块中不存在尾随的1(没有先前经编码系数),在所述子块中存在1个尾随的1(即,已经编码了1,但是尚未对大于1的系数进行编码),在所述子块中存在两个尾随的1,或者在所述子块中存在三个或三个以上尾随的1。对于二进位2到14中的每一者(虽然HEVC的当前所提出的版本仅使用CABAC对二进位2进行译码,其中用指数哥伦布代码对系数层级的相继二进位进行译码),分别在以下情况下可以使用上下文模型0到4中的一者:所述系数是在所述子块中扫描的初始系数,或者存在大于1的零个先前经译码系数,存在大于1的一个先前经译码系数,存在大于1的两个先前经译码系数,存在大于1的三个先前经译码系数,或者存在大于1的四个先前经译码系数。
取决于在对子块的正向扫描中的先前经译码4×4子块中的大于1的系数的数目,存在这10个模型的6个不同集合:
表2-用于二进位1及二进位2到14的上下文
根据表2,分别在以下情况下针对给定子块使用上下文模型的集合0到5:子块大小是4×4,先前经译码子块中存在0到3个大于1的系数,先前经译码子块中存在4到7个大于1的系数,先前经译码子块中存在8到11个大于1的系数,先前经译码子块中存在12到15个大于1的系数,或者给定子块是第一4×4子块(左上方子块)或在先前经译码子块中存在16个大于1的系数。
上述用于H.264的译码过程及当前所提出的用于HEVC的译码过程具有若干缺点。如图3中所示,一个缺点是,用于系数层级的扫描针对子块的扫描而向前进行(即,从左上方子块开始),但是接着针对每一子块内的系数层级的扫描向后进行(即,从每一子块中的右下方系数开始)。这种方法意味着在所述块内来回走动,这可能使数据获取更加复杂。
另一个缺点来自以下事实:系数层级的扫描次序与有效性图的扫描次序不同。在HEVC中,存在用于有效性图的三个不同的所提议的扫描次序:正向对角线、正向水平及正向垂直,如图2中所示。所有有效系数扫描都与当前针对HEVC所提出的系数层级的扫描不同,因为层级扫描是在逆方向上进行。因为系数层级扫描的方向及模式不与有效性扫描的方向及模式匹配,所以必须检查更多的系数层级。举例来说,假设针对有效性图使用水平扫描,并且在第一行系数的末尾发现最后一个有效系数。HEVC中的系数层级扫描将需要跨越用于层级扫描的多个行的对角线扫描,此时仅第一行实际上包含不同于0的系数层级。这种扫描过程可能引入不想要的低效。
在针对HEVC的当前提议中,有效性图的扫描在块中从在块的左上角发现的DC系数向前进行到通常在块的右下角发现的最高频率系数,而针对系数层级的扫描是在每一4×4子块内向后进行。这也有可能导致数据获取更加复杂并且更加低效。
当前HEVC提议的另一缺点来自上下文集合。针对CABAC的上下文集合(参见以上表2)对于块大小4×4与对于其它块大小是不同的。根据本发明,跨越所有块大小协调上下文以使得较少的存储器专用于存储不同上下文集合将是合意的。
此外,如下文中将更详细描述,用于针对HEVC的有效性图的当前所提出的CABAC上下文只有在扫描次序是正向时才是有效的。因此,这将不允许逆有效性图扫描。
此外,上文所描述的用于对经量化系数的层级进行编码的上下文试图利用系数层级的局部相关。这些上下文取决于4×4子块当中的相关(参见表2中的上下文集合),以及每一子块内的相关(参见表1中的上下文模型)。这些上下文的缺点是所述相依性可能太远(即,从一个子块到另一个子块被若干其它系数彼此分离的系数之间存在低相依性)。此外,在每一子块内,所述相依性可能较弱。
本发明提出若干不同特征,这些特征可以减少或消除上文所描述的一些缺点。在一些实例中,这些特征可以提供视频译码中的变换系数的更有效并且协调的扫描次序。在本发明的其它实例中,这些特征提供将用于与所提议的扫描次序一致的变换系数的基于CABAC的熵译码的更有效的上下文集合。应注意,本发明中描述的所有技术都可以独立使用或者可以用任何组合一起使用。
图4是图解说明实例视频编码及解码系统10的框图,所述系统可经配置以利用根据本发明的实例的用于对变换系数进行译码的技术。如图4中所示,系统10包含源装置12,所述源装置经由通信信道16向目的地装置14发射经编码视频。经编码视频还可存储于存储媒体34或文件服务器36上,并且可以由目的地装置14在需要时存取。源装置12及目的地装置14可包括广泛多种装置中的任一者,包含桌上型计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手持机(例如所谓的智能电话)、电视、相机、显示装置、数字媒体播放器、视频游戏控制台等。在许多情况下,此类装置可以经配备用于无线通信。因此,所述通信信道16可包括适合于发射经编码的视频数据的无线信道、有线信道或无线与有线信道的组合。类似地,文件服务器36可以由目的地装置14通过任何标准数据连接(包含因特网连接)来存取。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、缆线调制解调器等)或适合于存取存储于文件服务器上的经编码视频数据的以上两者的组合。
根据本发明的实例的用于对变换系数进行译码的技术可以被应用于支持多种多媒体应用中的任一者的视频译码,所述多媒体应用例如是空中电视广播、有线电视发射、卫星电视发射、串流视频发射(例如,经由因特网),对用于存储于数据存储媒体上的数字视频的编码,对存储于数据存储媒体上的数字视频的解码,或者其它应用。在一些实例中,所述系统10可经配置以支持单向或双向视频发射,以支持例如视频串流、视频回放、视频广播及/或视频电话等应用。
在图4的实例中,源装置12包含视频源18、视频编码器20、调制器/解调器22及发射器24。在源装置12中,视频源18可包含一源,例如视频俘获装置,例如摄像机,包含先前俘获的视频的视频存档,用于从视频内容提供者接收视频的视频馈入接口及/或用于产生计算机图形数据作为源视频的计算机图形系统,或此类源的组合。作为一个实例,如果视频源18是摄像机,那么源装置12及目的地装置14可以形成所谓的相机电话或视频电话。然而,本发明中所描述的技术可大体上适用于视频译码,且可应用于无线及/或有线应用。
可由视频编码器20对所俘获、预俘获或计算机产生的视频进行编码。调制解调器22可以根据例如无线通信协议等通信标准对经编码视频信息进行调制,并且经由发射器24将经编码视频信息发射到目的地装置14。调制解调器22可包含各种混频器、滤波器、放大器或其它经设计用于信号调制的组件。发射器24可包含经设计以用于发射数据的电路,包含放大器、滤波器及一个或一个以上天线。
被视频编码器20编码的俘获、预先俘获或计算机产生的视频还可存储到存储媒体34或文件服务器36上以用于以后消耗。存储媒体34可包含蓝光光盘、DVD、CD-ROM、快闪存储器或用于存储经编码视频的任何其它合适的数字存储媒体。目的地装置14可接着存取存储于存储媒体34上的经编码视频以用于解码及回放。
文件服务器36可以是任何类型的能够存储经编码视频并且将经编码视频发射到目的地装置14的服务器。实例文件服务器包含网络服务器(例如,用于网站)、FTP服务器、网络附接存储(NAS)装置、本机磁盘驱动器或任何其它类型的能够存储经编码视频数据并且将经编码视频数据发射到目的地装置的装置。经编码视频数据从文件服务器36的传输可能是流式传输、下载传输或两者的组合。目的地装置14可以通过任何标准数据连接(包含因特网连接)来存取文件服务器36。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、缆线调制解调器、以太网、USB等)或适合于存取存储于文件服务器上的经编码视频数据的以上两者的组合。
图4的实例中的目的地装置14包含接收器26、调制解调器28、视频解码器30及显示装置32。目的地装置14的接收器26经由信道16接收信息,并且调制解调器28对所述信息进行解调以产生用于视频解码器30的经解调位流。经由信道16传送的信息可包含由视频编码器20产生以供视频解码器30在对视频数据进行解码时使用的多种语法信息。此类语法还可包含在存储于存储媒体34或文件服务器36上的经编码视频数据中。视频编码器20及视频解码器30中的每一者可以形成能够对视频数据进行编码或解码的相应编码器-解码器(编解码器)的一部分。
显示装置32可以与目的地装置14集成或者在目的地装置14外部。在一些实例中,目的地装置14可包含集成的显示装置,并且还经配置以与外部显示装置介接。在其它实例中,目的地装置14可能是显示装置。总的来说,显示装置32将经解码视频数据显示给用户,并且可包含多种显示装置中的任一者,例如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示装置。
在图4的实例中,通信信道16可包括任一无线或有线通信媒体,例如,射频(RF)频谱或一个或一个以上物理传输线、或无线及有线媒体的任一组合。通信信道16可形成例如局域网、广域网或例如因特网的全球网络的基于包的网络的一部分。通信信道16一般表示用于将视频数据从源装置12发射到目的地装置14的任何合适的通信媒体或不同通信媒体的集合,包含有线或无线媒体的任何合适的组合。通信信道16可包含路由器、交换器、基站或任何其它可以用于促进从源装置12到目的地装置14的通信的设备。
视频编码器20及视频解码器30可以根据一种视频压缩标准(例如目前正在开发的高效率视频译码(HEVC)标准)来操作,并且可以符合HEVC测试模型(HM)。替代地,视频编码器20及视频解码器30可以根据其它专有或业界标准来操作,所述标准例如是ITU-T H.264标准,或者被称为MPEG-4,第10部分,高级视频译码(AVC),或此类标准的扩展。然而,本发明的技术不限于任何特定译码标准。其它实例包含MPEG-2及ITU-T H.263。
尽管图4中未展示,但在一些方面中,视频编码器20及视频解码器30可各自与音频编码器及解码器集成,且可包含适当的多路复用器-多路分用器(MUX-DEMUX)单元或其它硬件及软件,以处置对共同数据流或单独数据流中的音频与视频两者的编码。在一些实例中,如果适用,则MUX-DEMUX单元可以符合ITU H.223多路复用器协议,或例如用户数据报协议(UDP)等其它协议。
视频编码器20及视频解码器30各自可实施为多种合适的编码器电路中的任一者,例如一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当部分地用软件实施所述技术时,装置可将用于所述软件的指令存储于合适的非暂时性计算机可读媒体中且在使用一个或一个以上处理器的硬件中执行所述指令以执行本发明的技术。视频编码器20及视频解码器30中的每一者可以包含在一个或一个以上编码器或解码器中,所述编码器或解码器中的任一者可以集成为相应装置中的组合编码器/解码器(编解码器)的一部分。
视频编码器20可以实施本发明的任何或所有技术以在视频译码过程中改进变换系数的编码。同样,视频解码器30可以实施这些技术中的任何或所有技术以在视频译码过程中改进变换系数的解码。如本发明中所描述,视频译码器可以指视频编码器或视频解码器。类似地,视频译码单元可以指视频编码器或视频解码器。同样,视频译码可以指视频编码或视频解码。
在本发明的一个实例中,视频译码器(例如视频编码器20或视频解码器30)可经配置以对视频译码过程中与残余视频数据相关联的多个变换系数进行译码。视频译码器可经配置以根据扫描次序对指示所述多个变换系数的有效系数的信息进行译码,并且根据扫描次序对指示多个变换系数的层级的信息进行译码。
在本发明的另一实例中,视频译码器(例如视频编码器20或视频解码器30)可经配置以对视频译码过程中与残余视频数据相关联的多个变换系数进行译码。所述视频译码器可经配置以用一种扫描对指示变换系数块中的有效变换系数的信息进行译码,所述扫描在从所述变换系数块中的较高频率系数到所述变换系数块的较低频率系数的逆扫描方向上进行。
在本发明的另一实例中,视频译码器(例如视频编码器20或视频解码器30)可经配置以对视频译码过程中与残余视频数据相关联的多个变换系数进行译码。所述视频译码器可经配置以:基于一种扫描次序将变换系数块布置成变换系数的一个或一个以上子集;对每一子集中的变换系数的层级的第一部分进行译码,其中层级的所述第一部分至少包含每一子集中的变换系数的有效性;以及对每一子集中的变换系数的层级的第二部分进行译码。
在本发明的另一实例中,视频译码器(例如视频编码器20或视频解码器30)可经配置以:根据一种扫描次序对指示所述多个变换系数的有效系数的信息进行译码;将所述经译码信息划分成至少第一区域及第二区域;根据上下文的第一集合使用上下文推导准则对所述第一区域中的经译码信息进行熵译码;以及根据上下文的第二集合使用与第一区域相同的上下文推导准则对第二区域中的经译码信息进行熵译码。
图5是图解说明可以使用如本发明中所描述的用于对变换系数进行译码的视频编码器20的实例的框图。出于说明的目的将在HEVC译码的背景下描述视频编码器20,但关于可能需要扫描变换系数的其它译码标准或方法而不限制本发明。视频编码器20可以对视频帧内的CU执行帧内及帧间译码。帧内译码依赖于空间预测以减少或移除给定视频帧内的视频中的空间冗余。帧间译码依赖于时间预测来减少或移除当前帧与视频序列的先前经译码帧之间的时间冗余。帧内模式(I模式)可以指若干基于空间的视频压缩模式中的任一者。例如单向预测(P模式)或双向预测(B模式)等帧间模式可以指若干基于时间的视频压缩模式中的任一者。
如图5中所示,视频编码器20接收待编码视频帧内的当前视频块。在图5的实例中,视频编码器20包含运动补偿单元44、运动估计单元42、帧内预测模块46、参考帧缓冲器64、求和器50、变换模块52、量化单元54及熵编码单元56。图5中图解说明的变换模块52是向残余数据块应用实际变换的模块,并且不应与也可被称为CU的变换单元(TU)的变换系数块混淆。为了视频块重构,视频编码器20还包含逆量化单元58、逆变换模块60及求和器62。还可包含解块滤波器(图5中未展示)以将块边界滤波,以从经重构视频移除成块效应假影。在需要时,去块滤波器通常将对求和器62的输出进行滤波。
在编码过程期间,视频编码器20接收待译码的视频帧或切片。所述帧或切片可以被划分为多个视频块,例如,最大译码单元(LCU)。运动估计单元42及运动补偿单元44可以相对于一个或一个以上参考帧中的一个或一个以上块执行对接收到的视频块的帧间预测性译码以提供时间压缩。帧内预测单元46可相对于与待译码块相同的帧或切片中的一个或一个以上相邻块执行对所接收的视频块的帧内预测性译码以提供空间压缩。
模式选择单元40可以例如基于误差(即,失真)结果针对每一模式来选择译码模式中的一者(帧内或帧间),并且向求和器50提供所得的经帧内或经帧间译码块以产生残余块数据,并且向求和器62提供所得的经帧内或经帧间译码块以重构经编码块以供在参考帧中使用。某些视频帧可以被标示为I帧,其中I帧中的所有块都在帧内预测模式下被编码。在一些情况下,帧内预测模块46可以在例如运动估计单元42执行的运动搜索未产生对块的足够预测的情况下执行P或B帧中的块的帧内预测编码。
运动估计单元42及运动补偿单元44可以高度集成,但出于概念目的分开加以图解说明。运动估计是产生估计视频块的运动的运动向量的过程。举例来说,运动向量可以指示当前帧中的预测单元相对于参考帧的参考样本位移。参考样本可以是被发现在像素差方面与CU的包含经译码PU的部分紧密匹配的块,像素差可以通过绝对差总和(SAD)、平方差总和(SSD)或其它差异度量来确定。运动补偿单元44执行的运动补偿可以包括基于由运动估计确定的运动向量来获取或产生用于所述预测单元的值。同样,在一些实例中,运动估计单元42及运动补偿单元44可以在功能上集成。
运动估计单元42通过将预测单元与存储在参考帧缓冲器64中的参考帧的参考样本进行比较来计算经帧间译码帧的预测单元的运动向量。在一些实例中,视频编码器20可以计算存储在参考帧缓冲器64中的参考帧的子整数像素位置的值。举例来说,视频编码器20可以计算四分之一像素位置、八分之一像素位置或参考帧的其它分数像素位置的值。因此,运动估计单元42可以相对于整数像素位置及分数像素位置执行运动搜索并且输出具有分数像素精确度的运动向量。运动估计单元42将计算出的运动向量发送到熵编码单元56及运动补偿单元44。参考帧的通过运动向量识别的部分可被称为参考样本。运动补偿单元44可以例如通过检索通过PU的运动向量识别的参考样本来计算用于当前CU的预测单元的预测值。
作为运动估计单元42及运动补偿单元44执行的帧间预测的替代方案,帧内预测模块46可以对接收到的块进行帧内预测编码。帧内预测模块46可以相对于相邻的先前经译码块(例如,当前块的上方、右上方、左上方或左侧的块)对接收到的块进行编码,假设块的编码次序为从左到右、从上到下。帧内预测模块46可以配置有多种不同帧内预测模式。举例来说,帧内预测模块46可以基于正被编码的CU的大小而配置有某个数目的方向预测模式,例如33种方向预测模式。
帧内预测模块46可以例如通过计算各种帧内预测模式的误差值及选择产出最低误差值的模式来选择帧内预测模式。方向预测模式可包含用于组合空间相邻的像素的值及向PU中的一个或一个以上像素位置应用所述组合值的功能。一旦已经计算出PU中的所有像素位置的值,帧内预测模块46便可以基于PU与待编码的所接收块之间的像素差来计算所述预测模式的误差值。帧内预测模块46可以继续测试帧内预测模式,直到发现得出可接受误差值的帧内预测模式为止。帧内预测模块46可以接着将PU发送到求和器50。
视频编码器20通过从正被译码的原始视频块减去由运动补偿单元44或帧内预测模块46计算的预测数据来形成残余块。求和器50表示执行此减法运算的组件。残余块可以对应于像素差值的二维矩阵,其中残余块中的值的数目与对应于所述残余块的PU中的像素的数目相同。残余块中的值可以对应于PU中与待译码的原始块中位于同一地点的像素之间的差,即误差。所述差可以是色度或亮度差,这取决于经译码的块的类型。
变换模块52可以从残余块形成一个或一个以上变换单元(TU)。变换模块52向TU应用变换,例如离散余弦变换(DCT)、定向变换或概念上类似的变换,从而产生包含变换系数的视频块。变换模块52可以将所得变换系数发送到量化单元54。量化单元54可以接着对变换系数进行量化。熵编码单元56可以接着根据所指定的扫描次序对矩阵中的经量化变换系数执行扫描。本发明将熵编码单元56描述为执行所述扫描。然而,应理解,在其它实例中,其它处理单元(例如量化单元54)可执行所述扫描。
如上文所提及,变换系数的扫描可以涉及两个扫描。一个扫描识别所述系数中的哪一些是有效的(即,非零)以形成有效性图,而另一个扫描对变换系数的层级进行译码。在一个实例中,本发明提出用于对块中的系数层级进行译码的扫描次序与用于对块的有效性图中的有效系数进行译码的扫描次序相同。在HEVC中,所述块可以是变换单元。如本文所使用,术语扫描次序可以指扫描的方向及/或扫描的模式。因此,所述有效性图及系数层级的扫描可能在扫描模式及/或扫描方向方面是相同的。也就是说,作为一个实例,如果用于形成有效性图的扫描次序是正向方向上的水平扫描模式,那么用于系数层级的扫描次序也应当是正向方向上的水平扫描模式。同样,作为另一实例,如果用于有效性图的扫描次序是逆方向上的垂直扫描模式,那么用于系数层级的扫描次序也应当是逆方向上的垂直扫描模式。这种情况可适用于对角线、z字形或其它扫描模式。
图6展示用于变换系数块(即,变换块)的逆扫描次序的实例。变换块可以使用变换(例如,举例来说,离散余弦变换(DCT))来形成。应注意,逆对角线模式9、逆z字形模式29、逆垂直模式31及逆水平模式33中的每一者从变换块右下角的较高频率系数向变换块左上角的较低频率系数进行。因此,本发明的一个方面呈现用于对有效性图进行译码及对系数层级进行译码的统一扫描次序。所提出的技术向用于系数层级译码的扫描次序应用用于有效性图的扫描次序。总的来说,已经展示水平、垂直及对角线扫描模式很有效果,因而减少了对额外扫描模式的需要。然而,本发明的一般技术适用于与任何扫描模式一起使用。
根据另一方面,本发明提出将有效性扫描作为逆扫描来执行,即从变换单元中的最后一个有效系数到变换单元中的第一系数(即,DC系数)。图6中展示逆扫描次序的实例。明确地说,有效性扫描从较高频率位置处的最后一个有效系数向较低频率位置处的有效系数且最终向DC系数位置进行。
为了便于逆扫描,可以使用用于识别最后一个有效系数的技术。在J.Sole,R.Joshi、I.-S.Chong、M.Coban、M.Karczewicz所著的“高译码效率中的用于有效性图的并行上下文处理(Parallel Context Processing for the significance map in highcoding efficiency)”(JCTVC-D262,韩国大邱第4届JCT-VC会议,2011年1月)中还有2010年12月3日申请的授予Joel Sole Roials等人的标题为“视频译码中最后一个有效变换系数的位置的编码(Encoding of the position of the last significant transformcoefficient in video coding)”的第61/419,740号美国临时专利申请中描述了用于识别最后一个有效系数的过程。一旦识别出所述块中的最后一个有效系数,那么便可向有效性图及系数层级两者应用逆扫描次序。
本发明此外提出有效性扫描及系数层级扫描并非分别是逆向及正向的,而是实际上具有相同扫描方向并且更明确地说在一个块中只有一个方向。具体来说,提出有效性扫描及系数层级扫描两者均使用从变换单元中的最后一个有效系数到第一个系数的逆扫描次序。因此,从最后一个有效系数到第一个系数(DC系数)执行有效性扫描(相对于当前所提出的用于HEVC的扫描是逆扫描)。本发明的这个方面呈现用于对有效性图进行译码及对系数层级进行译码的统一单向扫描次序。明确地说,所述统一单向扫描次序可以是统一逆扫描次序。根据统一逆扫描模式的用于有效性及系数层级扫描的扫描次序可以是逆对角线、逆z字形、逆水平或逆垂直,如图6中所示。然而,可以使用任何扫描模式。
作为为了CABAC上下文推导目的的如图3中所示的在二维子块中定义系数集合的替代,本发明提出将系数集合定义为根据扫描次序连续扫描的若干系数。明确地说,系数的每一集合可包括整个块上的扫描次序的连续系数。可以考虑任何大小的集合,但是已经发现扫描集合中的16个系数的大小很有效果。集合大小可以是固定的或自适应的。这个定义允许集合是2D块(如果使用子块扫描方法)、矩形(如果使用水平或垂直扫描)或对角线形状(如果使用z字形或对角线扫描)。系数的对角线形状的集合可以是对角线形状的一部分、连续对角线形状,或连续对角线形状的一部分。
图7到9展示用固定4×4块布置之外的根据特定扫描次序布置成16系数子集的系数的实例。图7描绘由前16个系数以逆对角线扫描次序组成的16系数子集51。在此实例中,下一个子集将简单地由沿逆对角线扫描次序的接下来的16个连续系数组成。类似地,图8描绘逆水平扫描次序的用于前16个系数的16系数子集53。图9描绘逆垂直扫描次序的用于前16个系数的16系数子集55。
这种技术与用于系数层级的与用于有效性图的扫描次序相同的扫描次序相容。在此情况下,不需要用于系数层级的不同的(并且有时繁琐的)扫描次序,例如图3中所示。与目前针对HEVC所提出的有效性图扫描相同,系数层级扫描可以形成为从变换单元中的最后一个有效系数的位置到DC系数位置进行的正向扫描。
如当前在HEVC中所提出,对于使用CABAC的熵译码,用以下方式对变换系数进行编码。首先,在完整变换单元上存在一个回合(采用有效性图扫描次序)以对有效性图进行编码。随后,对层级的二进位1(第一回合)、其余的系数层级(第二回合)及系数层级的正负号(第三回合)进行编码存在三个回合(以系数层级扫描次序)。用于系数层级译码的这三个回合不是针对完整变换单元进行的。而是,如图3中所示,在4×4子块中进行每一回合。当已经在一个子块中完成所述三个回合时,通过依次执行相同三个编码回合来处理接下来的子块。这种方法促进编码的平行化。
如上文所描述,本发明提出以更加协调的方式扫描变换系数,从而使得用于系数层级的扫描次序与用以形成有效性图的有效系数的扫描次序相同。另外,提出以从块中的最后一个有效系数到块中的第一个系数(DC分量)进行的逆方向执行用于系数层级及有效系数的扫描。如当前所提出,根据HEVC,这种逆扫描与用于有效系数的扫描相反。
如先前参看图7到9描述,本发明进一步提出将用于系数层级(包括有效性图)的上下文划分成若干子集。也就是说,针对系数的每一子集确定上下文。因此,在此实例中,相同上下文不一定用于整个系数扫描。而是,变换块内的不同子集可以具有针对每一子集单独地确定的不同上下文。每一子集可包括扫描次序的连续扫描系数的一维阵列。因此,系数层级扫描从最后一个有效系数向第一个系数(DC分量)进行,其中所述扫描根据扫描次序在概念上被分割成连续扫描系数的不同子集。举例来说,每一子集可包含用于特定扫描次序的n个连续扫描系数。将系数根据其扫描次序分组在若干子集中可以提供系数之间的更好相关,并且因而提供更有效的熵译码。
本发明进一步提出通过扩展系数层级的若干回合的概念以包含用于有效性图的额外回合,来提高变换系数的基于CABAC的熵译码的并行化。因而,具有四个回合的实例可包含:(1)对用于变换系数的有效系数旗标值的译码,例如,以形成有效性图,(2)对用于变换系数的层级值的二进位1的译码,(3)对系数层级值的其余的二进位的译码,及(4)对系数层级的正负号的译码,这些全都采用相同扫描次序。使用本发明中描述的技术,可以促进以上概述的四回合译码。也就是说,用相同扫描次序扫描有效系数及变换系数的层级(其中扫描次序在从高频系数到低频系数的逆方向上进行)支持上文所描述的若干回合译码技术的执行。
在另一实例中,五回合扫描技术可包含:(1)对用于变换系数的有效系数旗标值的译码,例如,以形成有效性图,(2)对用于变换系数的层级值的二进位1的译码,(3)对用于变换系数的层级值的二进位2的译码,(4)对系数层级的正负号的译码(例如,在旁路模式中),及(5)对系数层级值的其余的二进位的译码(例如,在旁路模式中),所有回合使用相同扫描次序。
还可采用具有较少回合的实例。举例来说,其中并行处理层级及正负号信息的二回合扫描可包含:(1)在一个回合中对常规回合二进位进行译码(例如,有效性、二进位1层级及二进位2层级),及(2)在另一个回合中对旁路二进位进行译码(例如,其余的层级及正负号),每一回合使用相同扫描次序。常规二进位是使用通过上下文推导准则确定的经更新的上下文用CABAC编码的二进位。举例来说,如下文将更详细解释,上下文推导准则可包含因果相邻系数相对于当前变换系数的经译码层级信息。旁路二进位是用具有固定上下文的CABAC编码的二进位。
上文所描述的若干扫描回合的实例可以一般化成包含系数层级的第一部分的第一扫描回合,其中所述第一部分包含有效性回合,以及系数层级的第二部分的第二扫描回合。
在以上给定的实例中的每一者中,所述回合可以在每一子集中循序执行。虽然使用包括连续扫描系数的一维子集可能是合意的,但是若干回合方法也可应用于例如4×4子块等子块。以下更详细地概述用于连续扫描的子集的实例二回合及四回合过程。
在简化的二回合过程中,针对变换单元的每一子集,第一回合遵循扫描次序对所述子集中的系数的有效性进行译码,并且第二回合遵循相同扫描次序对所述子集中的系数的系数层级进行译码。扫描次序的特征可能在于扫描方向(正向或逆向)及扫描模式(例如,水平、垂直或对角线)。如上文所描述,如果每一子集中的这两个回合遵循相同扫描次序,那么所述算法可能更顺从并行处理。
在更加精细的四回合过程中,针对变换单元的每一子集,第一回合对所述子集中的系数的有效性进行译码,第二回合对所述子集中的系数的系数层级的二进位1进行译码,第三回合对所述子集中的系数的系数层级的其余的二进位进行译码,并且第四回合对所述子集中的系数的系数层级的正负号进行译码。同样,为了更顺从并行处理,每一子集中的所有回合应具有相同扫描次序。如上所述,已经展示具有逆方向的扫描次序很有效果。应注意,第四回合(即,系数层级的正负号的译码)可以紧接在第一回合(即,有效性图的译码)之后或恰在系数层级的其余值之前进行。
针对一些变换大小,子集可以是整个变换单元。在此情况下,存在对应于整个变换单元的所有有效系数的单一子集,并且有效性扫描及层级扫描以相同扫描次序进行。在此情况下,作为一子集中的n(例如,n=16)个系数的有限数目的替代,所述子集可以是变换单元的单一子集,其中所述单一子集包含所有有效系数。
返回到图5,一旦扫描了变换系数,熵编码单元56就可以向系数应用例如CAVLC或CABAC等熵译码。另外,熵编码单元56可以对运动向量(MV)信息以及在视频解码器30处对视频数据进行解码时有用的多种语法元素中的任一者进行编码。语法元素可包含具有有效系数旗标(其指示特定系数是否有效(例如,非零))及最后一个有效系数旗标(其指示特定系数是否为最后一个有效系数)的有效性图。视频解码器30可以使用这些语法元素来重构经编码视频数据。在熵编码单元56进行的熵译码之后,可以将所得的经编码视频发射到另一装置,例如视频解码器30,或者将所述视频存档用于以后发射或检索。
为了对语法元素进行熵编码,熵编码单元56可以执行CABAC及基于(举例来说)先前扫描的N个系数中的有效系数的数目来选择上下文模型,其中N是可与被扫描的块的大小有关的整数值。熵编码单元56还可基于用于计算被变换成变换系数块的残余数据的预测模式及用于将残余数据变换成变换系数块的变换类型来选择上下文模型。当利用帧内预测模式预测对应预测数据时,熵编码单元56可以进一步使上下文模型的选择基于帧内预测模式的方向。
此外,根据本发明的另一方面,提出将CABAC的上下文划分成系数的若干子集(例如,图7到9中展示的子集)。提出每一子集由整个块上的扫描次序中的连续系数构成。可以考虑任何大小的子集,但是已经发现扫描子集中的16个系数的大小很有效果。在此实例中,一子集可能是扫描次序的16个连续系数,所述扫描次序可以是任何扫描模式,包含子块、对角线、z字形、水平及垂直扫描模式。根据此提议,系数层级扫描从一块中的最后一个有效系数进行。因此,系数层级扫描从块中的最后一个有效系数向第一个系数(DC分量)进行,其中所述扫描在概念上被分割成系数的不同子集以便推导要应用的上下文。举例来说,所述扫描以扫描次序中的n个连续系数的子集而布置。最后一个有效系数是在从块的最高频率系数(通常在块的右下角附近发现)朝向块的DC系数(块的左上角)的逆扫描中遇到的第一个有效系数。
在本发明的另一方面中,提出针对所有块大小协调CABAC上下文推导准则。换句话说,作为具有如上文所论述的基于块大小的不同上下文推导的替代,每一块大小将依赖于CABAC上下文的相同推导。以此方式,不需要考虑特定的块大小以便推导所述块的CABAC上下文。上下文推导对于有效性译码及系数层级译码两者也是相同的。
还提出,CABAC上下文集合取决于子集是否为子集0(被定义为具有最低频率的系数(即含有DC系数及邻近的低频系数)的子集)(即,上下文推导准则)。参见以下表3a及3b。
表3a-上下文集合表。与表2比较。对子集存在相依性,不论所述子集是否为子集0(最低频率)。
根据以上表3a,如果分别在先前经译码子集中存在大于1的零个系数,在先前经译码子集中存在大于1的一个系数,或者在先前经译码子集中存在大于1的一个以上系数,则上下文模型的集合0到2用于最低频率扫描子集(即,n个连续系数的集合)。如果分别在先前经译码子集中存在大于1的零个系数,在先前经译码子集中存在大于1的一个系数,或在先前经译码子集中存在大于1的一个以上系数,则上下文模型的集合3到5用于所有高于最低频率子集的子集。
表3b-上下文集合表。
表3b展示一个上下文集合表,所述表展示了良好的性能,因为这个表考虑到前一子集中大于1的系数的数目的更精确的计数。表3b可以用作以上表3a的替代方案。
表3c展示具有也可替代地使用的上下文推导准则的简化上下文集合表。
表3c-上下文集合表。
另外,含有变换单元中的最后一个有效系数的子集可以利用唯一的上下文集合。
本发明还提出,用于子集的上下文仍然取决于前一子集中的大于1的系数的数目。举例来说,如果前一子集中的系数的数目是滑动窗,则设此数目为uiNumOne。一旦校验此值以决定用于当前子扫描集合的上下文,便不将所述值设置成零。而是,将这个值归一化(例如,使用uiNumOne=uiNumOne/4,这等效于uiNumOne>>=2,或uiNumOne=uiNumOne/2,这等效于uiNumOne>>=1)。通过这样做,仍然可以考虑紧接在前一个子集之前的子集的值,但是是在给予当前经译码子集的CABAC上下文决策较小权重的情况下。明确地说,给定子集的CABAC上下文决策不仅考虑到前一子集中的大于1的系数的数目,而且还考虑到先前经译码子集中的大于1的系数的经加权数目。
另外,上下文集合可能取决于以下各者:(1)当前扫描的子集中的有效系数的数目,(2)当前子集是否为具有有效系数的最后一个子集(即,使用逆扫描次序,这是指所述子集是否为针对系数层级被第一个扫描的)。另外,用于系数层级的上下文模型可以取决于当前系数是否为最后一个系数。
在HEVC中,先前已经针对16×16及32×32的变换系数块的有效性图译码提出了高度自适应上下文选择方法。应注意,这种上下文选择方法可以扩展到所有块大小。如图10中所示,这种方法将16×16块划分成四个区域,其中较低频率区域41中的每一系数(16×16块的实例中的x,y坐标位置中的左上角的四个系数([0,0]、[0,1]、[1,0]、[1,1]),其中[0,0]指示左上角,DC系数)具有其自身的上下文,顶部区域37中的系数(16×16块的实例中从x,y坐标位置[2,0]到[15,0]的顶行中的系数)共用3个上下文,左侧区域35中的系数(16×16块的实例中从x,y坐标位置[0,2]到[0,15]的左侧列中的系数)共用另外3个上下文,并且其余的区域39中的系数(16×16块中的其余的系数)共用5个上下文。作为一实例,用于区域39中的变换系数X的上下文选择是基于5个变换系数B、E、F、H及I中的最大变换系数的有效性的总和。因为X与沿扫描方向(在此实例中为z字形或对角线扫描模式)的X的相同对角线线路上的其它位置无关,所以可以根据扫描次序中的先前对角线线路并行地计算沿扫描次序中的对角线线路的变换系数的有效性的上下文。
如图10中所示,用于有效性图的所提出的上下文只有在扫描次序是正向的情况下才是有效的,因为如果使用逆扫描,则所述上下文在解码器处会变得非因果。也就是说,如果使用逆扫描,则解码器尚未如图10中所示对系数B、E、F、H及I进行解码。其结果是,位流是不可解码的。
然而,本发明提出使用逆扫描方向。因此,当扫描次序是逆方向时,有效性图在系数当中具有相应的相关性,如图6中所示。因此,如上文所描述,对有效性图使用逆扫描提供合意的译码效率。此外,对有效性图使用逆扫描用以协调用于系数层级及有效性图的译码的扫描。为了支持有效系数的逆扫描,上下文需要变化,使得其与逆扫描相容。提出有效系数的译码利用相对于逆扫描有因果关系的上下文。
在一个实例中,本发明进一步提出一种使用图11中描绘的上下文的用于有效性图译码的技术。较低频率区域43中的每一系数(在16×16块的实例中的x,y坐标位置中的左上角[0,0]、[0,1]、[1,0]的三个系数,其中[0,0]指示左上角DC系数)具有其自身的上下文推导。顶部区域45中的系数(在16×16块的实例中从x,y坐标位置[2,0]到[15,0]的顶行中的系数)具有取决于顶部区域45中的两个先前系数(例如,紧接在待译码系数右侧的两个系数,其中在给定逆扫描的情况下,此类系数是用于解码目的的因果相邻者)的有效性的上下文。左侧区域47中的系数(在16×16块的实例中的从x,y坐标位置[0,2]到[0,15]的左侧列中的系数)具有取决于两个先前系数(例如,紧接在待译码系数下方的两个系数,其中在给定逆扫描定向的情况下,此类系数是用于解码目的的因果相邻者)的有效性的上下文。应注意,图11中的顶部区域45及左侧区域47中的这些上下文是图10中展示的上下文的相逆者(例如,其中顶部区域37中的系数具有取决于左侧系数的上下文,并且左侧区域35中的系数具有取决于上方的系数的上下文)。返回到图11,用于其余区域49中的系数(即,较低频率区域43、顶部区域45及左侧区域47外部的其余系数)的上下文取决于标记有I、H、F、E及B的位置中的系数的有效性的总和(或任何其它函数)。
在另一实例中,顶部区域45及左侧区域47中的系数可以使用与区域49中的系数完全相同的上下文推导。在逆扫描中,这是可能的,因为标记有I、H、F、E及B的相邻位置可用于顶部区域45及左侧区域47中的系数。在行/列结尾处,用于因果系数I、H、F、E及B的位置可以在块的外部。在所述情况下,假定此类系数的值是零(即,非有效)。
在选择上下文时有许多选项。基本的想法是使用已经根据扫描次序译码的系数的有效性。在图10所示的实例中,基于在位置B、E、F、H及I处的系数的有效性的总和来推导在位置X处的系数的上下文。这些上下文系数出现在本发明中针对有效性图提出的逆扫描次序的当前系数之前。在正向扫描中有因果关系的上下文在逆扫描次序中变为非因果关系(不可用)。解决这种问题的方式是将图10中的常规情况的上下文镜射到图11中用于逆扫描的上下文。针对在逆方向上从最后一个有效系数向DC系数位置进行的有效性扫描,用于系数X的上下文邻域由系数B、E、F、H、I构成,这些系数与相对于系数X的位置的较高频率位置相关联,并且已经被编码器或解码器在逆扫描中在系数X的译码之前加以处理。
如上文所论述,表1及2中图解说明的上下文及上下文模型试图采用4×4子块当中的系数层级的局部相关。然而,所述相依性可能太远。也就是说,在彼此通过若干系数分开的系数(举例来说,从一个子块到另一个子块)之间可能存在低相依性。此外,在每一子块内,系数之间的相依性可能较弱。本发明描述用于采用更加局部的上下文邻域的通过创建用于系数层级的上下文集合来解决这些问题的技术。
本发明提出例如在根据HEVC或其它标准的视频译码中使用局部邻域来推导变换系数层级的上下文。这个邻域由已经被编码(或被解码)的与当前系数的层级具有高相关性的系数构成。所述系数可能在空间上与待译码的系数相邻,并且可以包含限定待译码系数及其它附近系数的系数两者,例如图11或图13所展示。值得注意的是,用于上下文推导的系数不限于子块或先前子块。而是,局部邻域可包括空间上定位成靠近待译码系数但将不一定驻存在与待译码系数相同的子块中或在彼此相同的子块中的系数(如果所述系数是布置在子块中)。并非依赖于位于固定子块中的系数,本发明提出使用在给定所使用的特定的扫描次序的情况下可用的相邻系数(即,已经被译码)。
可以针对系数的不同子集(例如,基于系数的先前经译码的子集)指定不同的CABAC上下文集合。在系数的给定子集内,基于系数的局部邻域(有时称为上下文邻域)来推导上下文。根据本发明,在图12中展示上下文邻域的实例。上下文邻域中的系数可以在空间上位于待译码系数附近。
如图12中所示,对于正向扫描,用于变换系数X的层级的上下文取决于系数B、E、F、H及I的值。在正向扫描中,系数B、E、F、H及I与相对于位置及系数X的已经被编码器或解码器在译码系数X之前处理的较低频率位置相关联。
为了对CABAC的二进位1进行编码,上下文取决于在此上下文邻域中的有效系数(即,在此实例中,为系数B、E、F、H及I)的数目的总和。如果上下文邻域中的系数不属于所述块(即,归因于数据损耗),则为了确定系数X的上下文的目的,可以考虑所述值是0。为了对CABAC的其余二进位进行编码,所述上下文取决于所述邻域中等于1的系数的数目的总和以及所述邻域中大于1的系数的数目的总和。在另一实例中,二进位1的上下文可能取决于局部上下文邻域中的系数的二进位1值的总和。在另一实例中,二进位1的上下文可能取决于此上下文邻域中的有效性系数及二进位1值的总和的组合。
在选择上下文邻域时有许多可能性。然而,上下文邻域应由系数构成,使得编码器及解码器两者均可存取相同信息。明确地说,在邻域中的系数B、F、E、I及H先前已经被编码或解码并且可在确定用于系数X的上下文的过程中用于参考的意义上,这些系数应当是因果相邻者。
上文参看图12所描述的上下文是许多可能性中的一者。此类上下文可以被应用于当前提出以供在HEVC中使用的三种扫描中的任一者:对角线、水平及垂直。本发明提出用于推导系数层级的上下文的上下文邻域可以与用于推导有效性图的上下文的上下文邻域相同。举例来说,用于推导系数层级的上下文的上下文邻域可以是局部邻域,在有效性图的译码中就是这种情况。
如上文中更详细地描述,本发明提出使用逆扫描次序来扫描有效系数以形成有效性图。逆扫描次序可以是逆z字形模式、垂直模式或水平模式,如图6中所示。如果用于系数层级扫描的扫描次序也是逆模式,那么图12中展示的上下文邻域将变为非因果关系。本发明提出颠倒上下文邻域的位置,使得其参照逆扫描次序是有因果关系的。图13展示用于逆扫描次序的上下文邻域的实例。
如图13中所示,针对从最后一个有效系数到DC系数位置的逆方向进行的层级扫描,用于系数X的上下文邻域包括系数B、E、F、H及I,这些系数与相对于系数X的位置的较高频率位置相关联。在给定逆扫描的情况下,系数B、E、F、H及I已经由编码器或解码器在译码系数X之前经过处理,并且因此在其可供使用的意义上是有因果关系的。类似地,这种上下文邻域可以被应用于系数层级。
在一个实例中,本发明进一步提出另一种利用经选择以支持逆扫描的上下文的用于有效性图译码的技术。如上文所论述,先前对于HEVC已经针对16×16及32×32的变换系数块的有效性图译码提出了高度自适应上下文选择方法。举例来说,如上文参看图10所描述,这种方法将16×16块划分成四个区域,其中区域41中的每一位置具有其自身的上下文集合,区域37具有若干上下文,区域35具有另外3个上下文,并且区域39具有5个上下文。作为一实例,用于变换系数X的上下文选择是基于5个位置B、E、F、H及I中的最大者的有效性的总和。因为X与X沿扫描方向的相同对角线线路上的其它位置无关,所以可以根据扫描次序中的先前对角线线路并行地计算沿扫描次序中的对角线线路的变换系数的有效性的上下文。
用于上下文推导的当前HEVC方法具有若干缺点。一个问题是每个块的上下文的数目。具有较多上下文意味着每当刷新上下文时的较多存储器及较多处理。因此,具有一种具有很少上下文并且因此具有用以产生上下文的很少方式(例如,少于前述实例中的四种方式,即四种模式)的算法将是有益的。
解决这些缺点的一种方式是以逆次序对有效性图进行译码,也就是说,从最后一个有效系数(较高频率)到DC分量(最低频率)。以逆次序的这个过程的结果是用于正向扫描的上下文不再有效。上文所描述的技术包含一种用于确定基于逆扫描方向上的先前经译码的有效系数来指示当前一个有效系数的信息的上下文自适应二进制算术译码(CABAC)的上下文的方法。在逆z字形扫描的一实例中,先前经译码的有效系数驻存在当前有效系数所驻存的扫描线路的右侧的位置处。
至少基于与边界的距离及与DC分量的距离,对于变换块的不同位置上下文产生可能有所不同。在上文所描述的实例技术中,提出有效性图译码利用图11中描绘的上下文的集合。
本发明提出可以通过减少每个块的上下文的数目而实现较高性能的用于逆有效性图扫描的上下文集合。返回参看图11,通过允许左侧区域47及顶部区域45使用与其余的区域49相同的上下文推导,可以实现每个块的上下文数目的减少。在逆扫描中,这是可能的,因为标记有I、H、F、E及B的相邻位置可用于区域47及45处的系数。
图14展示根据此实例的上下文推导的实例。在此实例中,仅存在两个上下文区域:用于DC系数的低频区域57及用于所有其它系数的其余区域59。因此,此实例仅提出两种方式来推导上下文。在低频区域57(x,y位置[0,0]处的DC系数)中,基于位置来推导上下文,即DC系数具有其自身的上下文。在其余区域57中,基于用于每一待译码系数的局部邻域中的相邻系数的有效性来推导上下文。在此实例中,这是取决于通过图14中的I、H、F、E及B表示的5个相邻者的有效性的总和来推导的。
因此,推导一个块内的上下文的方式的数目从4减少到2。此外,上下文的数目相对于图11中的先前实例减少了8个(下部频率区域43有2个,并且上部区域45及左侧区域47各有3个)。在另一实例中,DC系数可以使用与块的其余部分相同的方法,因此推导块内的上下文的方式的数目减少到1。
图15展示一实例,其中系数X的当前位置致使相邻系数中的一些(在此情况下为H及B)在当前块之外。如果当前系数的任何相邻者在块的外部,则可以假设此类相邻系数具有0有效性(即,其是零值并且因而是非有效的)。替代地,可以对右下方的一个或一个以上系数指定一个或一个以上特殊上下文。以此方式,较高频率系数可以具有取决于位置的上下文,其方式与DC系数类似。然而,假设相邻者为零可以提供足够的结果,特别是因为右下方系数将一般具有较低的具有有效系数的概率,或者至少具有较低的具有较大值的有效系数的概率。
图14的实例中的上下文数目的减少对于实施很有好处。然而,这可能会导致性能稍微降低。本发明提出另一种用来改进性能同时仍然减少上下文数目的技术。明确地说,提出具有还基于相邻系数的第二上下文集合。上下文推导算法完全相同,但是使用具有不同概率模型的两个上下文集合。所使用的上下文集合取决于待译码的系数在变换单元内的位置。
更确切地说,当对较高频率系数(例如,系数的右下方x,y坐标位置)使用不同于较低频率处的系数(例如,系数的左上方x,y坐标位置)的上下文模型时,已经展示出增加的性能。将较低频率系数与较高频率系数分开并且因而将用于每一者的上下文模型分开的一种方式是计算系数的x+y值,其中x是系数的水平位置,且y是系数的垂直位置。如果这个值小于某个阈值(例如,已经展示4很有效果),那么使用上下文集合1。如果所述值等于或大于阈值,那么是上下文集合2。同样,上下文集合1及2具有不同概率模型。
图16展示这个实例的上下文区域的实例。同样,位置(0,0)处的DC系数具有其自身的上下文区域61。较低频率上下文区域63由等于或小于阈值4(不包含所述DC系数)的x+y位置处的变换系数组成。较高频率上下文区域65是由在大于4的阈值的x+y位置处的变换系数组成。阈值4是用作实例,并且可以被调整成任何实现较好性能的数字。在另一实例中,所述阈值可以取决于TU大小。
用于较低频率上下文区域63及较高频率上下文区域65的上下文推导在使用相邻者来选择上下文的方式方面是完全相同的,但是所采用的概率(即,上下文)是不同的。明确地说,可以使用基于相邻者的上下文选择的相同准则,但是应用此类准则会导致针对不同系数位置选择不同上下文,因为不同系数位置可以与不同上下文集合相关联。以此方式,算法中并入了对较低及较高频率系数具有不同统计数据的了解,使得可以使用用于不同系数的不同上下文集合。
在其它实例中,可以取决于系数的位置将x+y函数改变成其它函数。举例来说,一选项是对所有x<T并且y<T的系数给予相同的上下文集合,其中T是一阈值。图17展示具有这些上下文区域的变换系数块的实例。同样,在位置(0,0)处的DC系数可以具有其自身的上下文区域61。较低频率上下文区域73由X或Y位置小于或等于阈值4(不包含DC系数)的变换系数组成。较高频率上下文区域是由X或Y位置大于4的阈值的所有变换系数组成。同样,阈值4是用作实例,并且可以被调整成任何实现较好性能的数字。在一个实例中,所述阈值可以取决于TU大小。
图16及17中展示的上述技术具有5个上下文的两个集合,这与图10中展示的上下文数目相比仍然是较小的上下文数目并且展现较高性能。其获得方式是通过将块分隔成不同区域,并且对于不同区域中的系数指定不同上下文集合,但是仍然向每一区域应用相同的上下文推导准则。
图18展示具有上下文区域的变换系数块的另一实例。在此实例中,区域81中的DC系数及区域83及85中的x,y位置(1,0)及(0,1)处的系数各自具有其自身的上下文。其余的区域87具有又一上下文。在图18中展示的实例的变化形式中,区域83及85共用一上下文。
总的来说,上述技术可包含在从变换系数块中的较高频率系数到所述变换系数块中的较低频率系数的逆方向上扫描所述变换系数块中的有效系数以形成有效性图,并且基于所述块中的先前扫描的系数的局部邻域来确定用于有效性图的有效系数的上下文自适应二进制算术译码(CABAC)的上下文。可以基于局部邻域中具有比相应变换系数高的频率的先前扫描的变换系数来为有效系数中的每一者确定上下文。在一些实例中,可以基于上下文邻域的先前扫描的系数中的有效系数的数目的总和来确定所述上下文。待译码的有效系数中的每一者的局部邻域可包括空间上与所述块中的相应系数相邻的多个变换系数。
可以基于针对DC位置处的有效系数指定的个别上下文来确定所述变换系数块的DC(例如,最上方)位置处的有效系数的上下文。此外,可以使用基本上与用于确定不在所述块的左边缘及顶边缘处的系数的上下文的准则类似或等同的准则,来为所述块的左边缘及顶边缘处的系数确定上下文。在一些实例中,可以使用假定所述块外部的相邻系数为零值系数的准则来确定所述块的最右下方位置处的系数的上下文。此外,在一些实例中,确定上下文可包括基于系数在变换系数块内的位置,使用基本上类似或等同的用于选择上下文集合内(但是是不同的上下文集合)的上下文的准则来确定系数的上下文。
本发明中对上部、下部、右侧、左侧及类似说法的参考一般是为了方便而使用,以便指代较高频率及较低频率系数在变换系数块中的相对位置,所述变换系数块以常规方式布置,从而使较低频率系数朝向块的左上方,且较高频率系数朝向块的右下方,并且这不应当被视为对较高及较低频率系数可以用不同的非常规方式布置的情况进行限制。
返回到图5,在一些实例中,变换模块52可经配置以对某些变换系数(也就是说,某些位置中的变换系数)进行归零。举例来说,变换模块52可经配置以对在变换之后在TU的左上象限之外的所有变换系数进行归零。作为另一实例,熵编码单元56可经配置以对在阵列中的某些位置后面的阵列中的变换系数进行归零。在任何情况下,视频编码器20均可经配置以例如在扫描之前或之后对变换系数的某一部分进行归零。短语“归零”用于指将系数值设定成等于零,而不必跳过或丢弃所述系数。在一些实例中,这种将系数设定成零可能是对可能由于量化而引起的归零的补充。
逆量化单元58及逆变换模块60分别应用逆量化及逆变换以分别在像素域中重构残余块,(例如)以供稍后用作参考块。运动补偿单元44可以通过将残余块添加到参考帧缓冲器64的帧中的一者的预测性块来计算参考块。运动补偿单元44还可将一个或一个以上内插滤波器应用于经重构残余块以计算子整数像素值以用于运动估计。求和器62将经重构残余块添加到由运动补偿单元44产生的经运动补偿预测块以产生经重构视频块,以供存储在参考帧缓冲器64中。经重构视频块可由运动估计单元42及运动补偿单元44用作参考块以对后续视频帧中的块进行帧间译码。
图19是图解说明用于图5的视频编码器中的熵编码单元56的实例的框图。图19图解说明熵编码单元56的用于选择在CABAC熵译码使用的扫描次序及对应上下文集合的各种功能方面。熵编码单元56可包含扫描次序及上下文选择单元90、2D/1D扫描单元92、熵编码引擎94及扫描次序存储器96。
扫描次序及上下文选择单元90选择由2D/1D扫描单元92用于有效性图扫描及系数层级扫描的扫描次序。如上文所论述,扫描次序由扫描模式及扫描方向两者组成。扫描存储器96可以存储定义要对特定情形使用哪种扫描次序的指令及/或数据。作为实例,可以使用帧或切片的预测模式、块大小、变换,或视频数据的其它特性来选择扫描次序。在HEVC的一项提议中,将帧内预测模式中的每一者指派给特定扫描次序(子块对角线、水平或垂直)。解码器解析帧内预测模式,并且使用查找表确定要应用的扫描次序。可以使用自适应方法来追踪最频繁的有效系数的统计数据。在另一实例中,扫描可以基于在扫描次序中第一位的最频繁使用的系数。作为另一实例,扫描次序及上下文选择单元90可以对所有情形使用预定扫描次序。如上文所描述,扫描次序及上下文选择单元90可以针对有效性图及系数层级扫描两者选择扫描次序。根据本发明的技术,所述两个扫描可以具有相同扫描次序,并且明确地说可以都在逆方向上。
基于所述选定扫描次序,扫描次序及上下文选择单元90还选择将用于熵编码引擎94中的CABAC的上下文,例如上文参看图11及图13到18所描述的上下文。
2D/1D扫描单元92向变换系数的二维阵列应用所述选定扫描。明确地说,2D/1D扫描单元92可以扫描子集中的变换系数,如同上文参看图7到9所描述。明确地说,根据扫描次序在由多个连续系数组成的子集中扫描变换系数。这些子集可适用于有效性图扫描以及系数水平扫描两者。另外,2D/1D扫描单元92可以作为连续扫描并且根据相同扫描次序来执行有效性图及系数层级扫描。如上文所描述,连续扫描可以由若干扫描组成。在一个实例中,第一扫描是有效性图扫描,第二扫描是每一子集中的变换系数层级的二进位1的扫描,第三扫描是变换系数层级的其余二进位的扫描,并且第四扫描是变换系数层级的正负号的扫描。
熵编码引擎94使用从扫描次序及上下文选择单元90选出的上下文向扫描系数应用熵编码过程。在一些实例中,可以针对所有情况预定用于CABAC的上下文,并且因此,可能不需要用一个过程或单元来选择上下文。可以在系数被完全扫描成1D向量或在每一系数被添加到1D向量时向所述系数应用熵编码过程。在其它实例中,使用扫描次序直接在2D阵列中处理所述系数。在一些情况下,熵编码引擎94可经配置以并行地对1D向量的不同区段进行编码,以促进熵编码过程的并行化,以便提高速度及效率。熵编码引擎94产生携载着经编码视频的位流。可以将所述位流发射到另一装置或将其存储在数据存储档案中以供以后检索。除了残余变换系数数据之外,所述位流还可以携载可用于对位流中的经编码视频进行解码的运动向量数据及各种语法元素。
另外,熵编码单元56可以在经编码视频位流中提供信令以指示用于CABAC过程中的扫描次序及/或上下文。举例来说,可以作为各种层级下的语法元素(例如帧、切片、LCU、CU层级或TU层级)来发信号通知扫描次序及/或上下文。如果设置了预定扫描次序及/或上下文,则可能不需要在经编码位流中提供信令。此外,在一些实例中,可能视频解码器30无需信令即可推断一些参数值。为了准许用于不同TU的不同扫描次序的定义,可能需要在TU层级(例如,在TU四叉树标头中)发信号通知此类语法元素。虽然出于说明的目的描述了经编码视频位流中的信令,但是可以在边信息中在带外发信号通知指示参数值或函数的信息。
在此背景下,在经编码位流中发信号通知扫描次序及/或上下文不需要将此类元素从编码器实时发射到解码器,而是意味着此类语法元素被编码成位流,并且使其可以被解码器用任何方式存取。这可包含实时发射(例如,在视频会议中)以及将经编码位流存储在计算机可读媒体上,以供将来由解码器使用(例如,通过流式传输、下载、磁盘存取、卡存取、DVD、蓝光等)。
应注意,虽然为了便于图解说明而展示为分开的功能单元,但是扫描次序及上下文选择单元90、2D/1D扫描单元92、熵编码引擎94及扫描次序存储器96的结构及功能性可以彼此高度集成。
图20是图解说明对经编码视频序列进行解码的视频解码器30的实例的框图。在图20的实例中,视频解码器30包含熵解码单元70、运动补偿单元72、帧内预测模块74、逆量化单元76、逆变换单元78、参考帧缓冲器82及求和器80。在一些实例中,视频解码器30可执行一般与关于视频编码器20(图5)描述的编码回合互逆的解码回合。
熵解码70用与图5的熵编码单元56所使用的过程相反的过程对经编码视频进行熵解码。运动补偿单元72可基于从熵解码单元70接收的运动向量而产生预测数据。帧内预测模块74可基于发信号通知的帧内预测模式及来自当前帧的经先前解码块的数据而产生用于当前帧的当前块的预测数据。
在一些实例中,熵解码单元70(或逆量化单元76)可以使用镜射视频编码器20的熵编码单元56(或量化单元54)使用的扫描次序的扫描来扫描接收到的值。虽然可以在逆量化单元76中执行系数的扫描,但是出于图解说明的目的将把扫描描述成由熵解码单元70执行。另外,虽然为了便于图解说明而展示为分开的功能单元,但是熵解码单元70、逆量化单元76及视频解码器30的其它单元的结构及功能性可以彼此高度集成。
根据本发明的技术,视频解码器30可以根据相同扫描次序来扫描变换系数以及变换系数层级的有效性图两者。也就是说,用于有效性图及层级译码的扫描次序应具有相同模式及方向。另外,视频编码器30可以使用有效性图的扫描次序,即在逆方向上。作为另一实例,视频编码器30可以对有效性图使用层级译码的在逆方向上协调的扫描次序。
在本发明的另一方面中,视频解码器30可以扫描子集中的变换系数。明确地说,根据扫描次序在由多个连续系数组成的子集中扫描变换系数。这些子集可适用于有效性图扫描以及系数水平扫描两者。另外,视频解码器30可以根据相同扫描次序而执行有效性图扫描及系数层级扫描以作为连续扫描。在一个方面中,所述扫描次序是逆扫描次序。连续扫描可以由若干扫描回合组成。在一个实例中,第一扫描是有效性图扫描,第二扫描是每一子集中的变换系数层级中的二进位1的扫描,第三扫描是变换系数层级的其余二进位的扫描,并且第四扫描是变换系数层级的正负号的扫描。
视频解码器30可以从经编码位流接收识别由视频编码器20用于CABAC的扫描次序及/或上下文的信令。另外,或替代地,可以由视频解码器30基于经译码视频的例如预测模式、块大小等特性或其它特性来推断扫描次序及上下文。作为另一实例,视频编码器20及视频解码器30可以对所有使用情况都使用预定扫描次序及上下文,并且因此,将不需要经编码位流中的信令。
不管如何确定扫描次序,熵解码单元70都使用扫描次序的相逆次序将1D向量扫描到2D阵列中。由熵解码单元70产生的变换系数的2D阵列可以经量化,并且可以一般匹配由视频编码器20的熵编码单元56扫描的变换系数的2D阵列以产生变换系数的1D向量。
逆量化单元76将在位流中提供且由熵解码单元70解码的经量化变换系数逆量化,即解量化。逆量化过程可包含常规过程,例如,类似于针对HEVC所提出的过程或H.264解码标准所定义的过程。所述逆量化过程可包含使用视频编码器20针对CU所计算以确定量化程度及同样应应用的逆量化程度的量化参数QP。逆量化单元76可以在系数从1D向量转换成2D阵列之前或之后对变换系数进行逆量化。
逆变换模块78应用逆变换,例如逆DCT、逆整数变换、逆KLT、逆旋转变换、逆定向变换或另一逆变换。在一些实例中,逆变换模块78可以基于来自视频编码器20的信令或通过根据例如块大小、译码模式等一个或一个以上译码特性推断变换来确定逆变换。在一些实例中,逆变换模块78可以基于在用于包含当前块的LCU的四叉树的根节点处发信号通知的变换来确定将应用于当前块的变换。在一些实例中,逆变换模块78可以应用级联的逆变换。
运动补偿单元72产生经运动补偿块,有可能基于内插滤波器而执行内插。待用于具有子像素精度的运动估计的内插滤波器的识别符可包含在语法元素中。运动补偿单元72可使用由视频编码器20在视频块的编码期间使用的内插滤波器来计算参考块的子整数像素的内插值。运动补偿单元72可根据所接收的语法信息而确定由视频编码器20使用的内插滤波器且使用所述内插滤波器来产生预测性块。
在HEVC实例中,运动补偿单元72及帧内预测模块74可以使用一些语法信息(例如,通过四叉树提供)来确定用于对经编码视频序列的帧进行编码的LCU的大小。运动补偿单元72及帧内预测模块74还可使用语法信息来确定分裂信息,所述分裂信息描述经编码视频序列的帧的每一CU如何被分裂(以及同样,子CU如何被分裂)。语法信息还可包含指示每一分裂如何被编码的模式(例如,帧内或帧间预测,且对于帧内预测为帧内预测编码模式),用于每一经帧间编码的PU的一个或一个以上参考帧(及/或含有用于参考帧的识别符的参考列表)及用于对经编码视频序列进行解码的其它信息。
求和器80将残余块与由运动补偿单元72或帧内预测模块74产生的对应预测性块组合以形成经解码块。如果需要,还可应用去块滤波器以对经解码块进行滤波,以便移除块效应假影。随后将经解码视频块存储在参考帧缓冲器82中,参考帧缓冲器82提供用于后续运动补偿的参考块且还产生经解码视频用于呈现于显示装置(例如图4的显示装置32)上。
如上文所提及,本发明中呈现的用于扫描变换系数的技术可适用于编码器及解码器两者。视频编码器可以应用扫描次序将扫描变换系数从二维阵列扫描到一维阵列,而视频解码器可以例如用与编码器逆向的方式应用扫描次序将变换系数从一维阵列扫描到二维阵列。替代地,视频解码器可以应用扫描次序将变换系数从一维阵列扫描到二维阵列,并且视频编码器可以用与解码器逆向的方式应用扫描次序将变换系数从二维阵列扫描到一维阵列。因此,由译码器进行的扫描可以指由编码器进行的2D/1D扫描,或者由解码器进行的1D/2D扫描。另外,根据扫描次序进行的扫描可以指用于2D/1D扫描的扫描次序中的扫描、用于1D/2D扫描的扫描次序中的扫描、用于1D/2D扫描的扫描次序的相逆次序中的扫描,或用于2D/1D扫描的扫描次序的相逆次序中的扫描。因此,可以针对由编码器进行的扫描或由解码器进行的扫描来确立扫描次序。
视频解码器30可以用基本上与视频编码器20的操作方式对称的方式操作。举例来说,视频解码器30可以接收表示经编码CU的经熵编码数据,包含经编码PU及TU数据。视频解码器30可以对接收到的数据进行逆熵编码,从而形成经编码量化系数。当视频编码器20使用算术译码算法(例如,CABAC)对数据进行熵编码时,视频解码器30可以使用上下文模型对所述数据进行解码,所述上下文模型对应于视频编码器20用来对所述数据进行编码的相同的上下文模型。
视频解码器30还可以利用镜射由视频编码器20使用的扫描的逆扫描来对经解码系数进行逆扫描。为了对系数进行逆扫描,视频解码器30选择由视频编码器20使用的相同扫描次序,所述扫描次序可以存储在解码器处,或者由编码器在经编码位流中发信号通知。使用这种扫描次序,视频解码器30由此根据熵解码过程所产生的经量化变换系数的一维向量而形成二维矩阵。明确地说,视频解码器30根据由视频编码器20使用的扫描次序将系数从一维阵列逆扫描成二维阵列。
接下来,视频解码器30可以对根据所述扫描次序执行的逆扫描所产生的二维矩阵中的系数进行逆量化。视频解码器30可以接着向二维矩阵应用一个或一个以上逆变换。所述逆变换可以对应于由视频编码器20应用的变换。举例来说,视频解码器30可以基于在对应于当前经解码的CU的四叉树的根处发信号通知的信息或参照指示适当逆变换的其它信息来确定要应用的逆变换。在应用逆变换后,视频解码器30即刻恢复像素域中的残余视频数据,并且应用可适用的帧内预测或帧间预测解码,以重构原始视频数据。
图21是图解说明用于图20的视频解码器的熵解码单元70的实例的框图。图21图解说明用于选择视频解码过程中的CABAC解码的扫描次序及上下文的熵解码单元70的各种功能方面。如图21中所示,熵编码单元70可包含扫描次序及上下文选择单元100、1D/2D扫描单元102、熵解码引擎104及扫描次序存储器106。
熵解码引擎104对发射到视频解码器30或视频解码器30从存储装置检索的经编码视频进行熵解码。举例来说,熵解码引擎104可以向携载经编码视频的位流应用例如CAVLC、CABAC或另一过程的熵解码过程以恢复变换系数的1D向量。除了残余变换系数数据之外,熵解码引擎104还可以应用熵解码以再现可用于对位流中的经编码视频进行解码的运动向量数据及各种语法元素。熵解码引擎104可以基于经编码视频位流中的信令或通过从位流中的其它信息推断适当过程来确定选择哪个熵解码过程,例如,CAVLC、CABAC或另一过程。
根据本发明的技术,熵解码引擎104可以使用CABAC根据两个不同上下文区域对经编码视频进行熵解码。扫描次序及上下文选择单元100可以向熵解码引擎104提供上下文推导。根据本发明的实例,用于第一上下文区域的上下文推导取决于变换系数的位置,而用于第二区域的上下文推导取决于变换系数的因果相邻者。在另一实例中,第二上下文区域可使用两个不同上下文模型,这取决于变换系数的位置。
扫描次序及上下文选择单元100还可基于经编码视频位流中的信令来确定扫描次序及/或扫描次序的指示。举例来说,熵解码单元70可以接收明确地发信号通知扫描次序的语法元素。同样,虽然出于说明的目的描述经编码视频位流中的信令,但是扫描次序可以由熵解码单元70接收以作为边信息中的带外信息。此外,在一些实例中,可能扫描次序及上下文选择单元100在没有信令的情况下推断扫描次序。扫描次序可能基于预测模式、块大小、变换或经编码视频的其它特性。与图19的存储器96相同,图21的存储器106可以存储界定扫描次序的指令及/或数据。
1D/2D扫描单元102从扫描次序及上下文选择单元100接收扫描次序,并且直接地或以逆向方式应用扫描次序来控制系数的扫描。根据本发明的技术,相同扫描次序可用于有效性图扫描及系数层级两者。在本发明的另一方面中,有效性图扫描可以在逆方向上进行。在本发明的另一方面中,有效性图扫描及系数层级扫描两者均可在逆方向上。
根据本发明的另一方面,1D/2D扫描单元102可以将变换系数的一维阵列扫描成一个或一个以上变换系数子集,对每一子集中的变换系数的有效性进行译码,及对每一子集中的变换系数的层级进行译码。在本发明的另一方面中,根据相同扫描次序以连续扫描执行有效性图及系数层级扫描。在一个方面中,所述扫描次序是逆扫描次序。连续扫描可能由若干扫描组成,其中第一扫描是有效性图扫描,第二扫描是每一子集中的变换系数的层级中的二进位1,第三扫描是变换系数的层级的其余二进位,并且第四扫描是变换系数的层级的正负号。
在编码器侧,变换系数的译码可包含根据扫描次序对变换系数进行编码以形成变换系数的一维阵列。在解码器侧,对变换系数译码可包含根据扫描次序对变换系数进行解码以重构变换块中的变换系数的二维阵列。
应注意,虽然为了便于图解说明而展示为分开的功能单元,但是扫描次序及上下文选择单元100、1D/2D扫描单元102、熵解码引擎104及扫描次序存储器106的结构及功能性可以彼此高度集成。
图22是图解说明用于使用经协调扫描次序的有效性图及系数层级扫描的实例过程的流程图。提出一种对在视频译码过程中与残余视频数据相关联的多个变换系数进行译码的方法。所述方法可以由视频译码器(例如图4的视频编码器20或视频解码器30)执行。视频译码器可经配置以选择扫描次序(120)。扫描次序可能是基于预测模式、块大小、变换或经编码视频的其它特性而选择。另外,扫描次序可能是默认扫描次序。扫描次序定义扫描模式及扫描方向两者。在一个实例中,扫描方向是从所述多个变换系数中的较高频率系数向所述多个变换系数中的较低频率系数进行的逆扫描方向。扫描模式可包含z字形模式、对角线模式、水平模式或垂直模式中的一者。
视频译码器可进一步经配置以根据扫描次序对指示所述多个变换系数的有效系数的信息进行译码(122),及确定用于对有效系数的多个子集的有效系数层级进行译码的上下文,其中所述多个子集中的每一者包括根据所述扫描次序扫描的一个或一个以上有效系数(124)。视频译码器还对指示根据所述扫描次序的所述多个变换系数的层级的信息进行译码(126)。子集可能是不同大小。应注意,步骤122、124及126可以是交错的,因为用于层级信息的上下文的确定取决于先前经译码的相邻系数。
图23是图解说明用于有效性图及系数层级扫描及CABAC上下文推导的另一实例过程的流程图。图23的方法与图22中展示的方法略有不同,因为不同大小的块的上下文可以使用相同的上下文推导准则。作为一个实例,视频译码器可以:根据上下文推导准则来推导用于变换系数的第一块的第一上下文,第一块具有第一大小;以及根据与第一块相同的上下文推导准则来推导用于变换系数的第二块的第二上下文,第二块具有第二不同大小(123)。与图22相同,步骤122、123及126可以是交错的,因为用于层级信息的上下文的确定取决于先前经译码的相邻系数。
图24是图解说明用于有效性图及系数层级扫描及CABAC上下文推导的另一实例过程的流程图。图24的方法与图22中展示的方法略有不同,因为用于子集的上下文是基于子集中的DC系数的存在而确定的。作为一个实例,视频译码器可以基于相应子集是否含有变换系数的DC系数来确定系数的不同子集的上下文的不同集合(125)。与图22相同,步骤122、125及126可以是交错的,因为用于层级信息的上下文的确定取决于先前经译码的相邻系数。
图25是图解说明用于有效性图及系数层级扫描及CABAC上下文推导的另一实例过程的流程图。图25的方法与图22中展示的方法略有不同,因为上下文是基于其它先前子集中的有效系数的经加权数目而确定的。作为一个实例,视频译码器可以基于前一个系数子集中的有效系数的数目及系数的其它先前子集中的有效系数的经加权数目来确定用于系数的不同子集的上下文的不同集合(127)。与图22相同,步骤122、127及126可以是交错的,因为用于层级信息的上下文的确定取决于先前经译码的相邻系数。
图26是图解说明用于使用逆扫描方向的有效性图译码的实例过程的流程图。提出一种对在视频译码过程中与残余视频数据相关联的变换系数进行译码的方法。所述方法可以由视频译码器(例如图4的视频编码器20或视频解码器30)执行。视频译码器可经配置以选择具有逆向方向的扫描次序(140),并且基于在逆扫描方向上的先前经译码有效系数来确定用于指示当前一个有效系数的信息的上下文自适应二进制算术译码(CABAC)的上下文(142)。视频译码器可以进一步经配置以对指示沿逆扫描方向的有效变换系数的信息进行译码,以形成有效性图(146)。
在一个实例中,所述扫描具有对角线模式,并且先前经译码的有效系数驻存在当前一个有效系数所驻存的扫描线路的右侧的位置处。在另一实例中,所述扫描具有水平模式,并且先前经译码的有效系数驻存在当前一个有效系数所驻存的扫描线路的下方的位置处。在另一实例中,所述扫描具有垂直模式,并且先前经译码的有效系数驻存在当前一个有效系数所驻存的扫描线路的右侧的位置处。
视频译码器可进一步经配置以对指示有效变换系数的层级的信息进行译码(148)。对指示有效变换系数的层级的信息进行译码的步骤可以在从变换系数块中的较高频率系数向变换系数块中的较低频率系数的逆扫描方向上进行。与图22相同,步骤142、146及148可以是交错的,因为用于层级信息的上下文的确定取决于先前经译码的相邻系数。
图27是图解说明用于根据变换系数的子集的有效性图及系数层级扫描的实例过程的流程图。提出一种对在视频译码过程中与残余视频数据相关联的变换系数进行译码的方法。所述方法可以由视频译码器(例如图4的视频编码器20或视频解码器30)执行。视频译码器可经配置以:将变换系数块布置成变换系数的一个或一个以上子集(160);对每一子集中的变换系数的有效性进行译码(162);以及对每一子集中的变换系数的层级进行译码(164)。在一个实例中,布置变换系数块可包含将变换系数块布置成对应于整个变换单元的变换系数的单一集合。在另一实例中,布置变换系数块可包含基于扫描次序将变换系数块布置成变换系数的一个或一个以上子集。
视频译码器可经配置以根据扫描次序对每一子集中的变换系数的有效性进行译码,并且根据所述扫描次序对变换系数层级进行译码。对有效性图进行译码(162)及对层级进行译码(164)可以在对子集的两个或两个以上连续扫描回合中一起执行(165)。
图28是图解说明用于根据变换系数的子集的有效性图及系数层级扫描的另一实例过程的流程图。视频编码器可以通过首先在相应子集中的变换系数的第一扫描中对子集中的变换系数的有效性进行译码(170)来执行连续扫描(165)。
对每一子集中的系数层级进行译码(164)包含对相应子集中的变换系数的至少第二扫描。所述第二扫描可包含在对相应子集中的变换系数的第二扫描中对子集中的变换系数层级的二进位1进行译码(172),在对相应子集中的变换系数的第三扫描中对子集中的变换系数的层级的其余二进位进行译码(174),以及在对相应子集中的变换系数的第四扫描中对子集中的变换系数层级的正负号进行译码(176)。
图29是图解说明用于根据变换系数的子集的有效性图及系数层级扫描的另一实例过程的流程图。在此实例中,对变换系数层级的正负号的译码(176)是在对层级的译码(172,174)之前执行。
图30是图解说明用于使用多个区域的熵译码的实例过程的流程图。提出一种对在视频译码过程中与残余视频数据相关联的多个变换系数进行译码的方法。所述方法可以由视频译码器(例如图4的视频编码器20或视频解码器30)执行。视频译码器可经配置以根据扫描次序对指示所述多个变换系数的有效系数的信息进行译码(180),将经译码信息划分成第一区域及第二区域(182),使用上下文自适应二进制算术译码根据上下文的第一集合对第一区域中的经译码信息进行熵译码(184),并且使用上下文自适应二进制算术译码根据上下文的第二集合对第二区域中的经译码信息进行熵译码(186)。在一个实例中,所述扫描次序具有逆方向及对角线扫描模式。这种方法还可应用于两个以上区域,其中每一区域具有一上下文集合。
第一及第二区域可以用若干方式划分。在一个实例中,第一区域至少含有所述多个变换系数的DC分量,并且第二区域含有不在第一区域中的其余多个变换系数。
在另一实例中,第一区域含有通过x+y<T定义的区域内的所有变换系数,其中x是变换系数的水平位置,y是变换系数的垂直位置,并且T是阈值。第一区域可能含有DC系数。第二区域含有不在第一区域中的其余多个变换系数。
在另一实例中,第一区域含有通过x<T及y<T定义的区域内的所有变换系数,其中x是变换系数的水平位置,y是变换系数的垂直位置,并且T是阈值。第二区域含有不在第一区域中的其余多个变换系数。
在另一实例中,第一区域含有DC系数,第二区域含有通过x<T及y<T定义的区域内的所有变换系数(排除所述DC系数),其中x是变换系数的水平位置,y是变换系数的垂直位置,并且T是阈值,且第三区域含有不在第一区域或第二区域中的其余多个变换系数。在另一实例中,上文所描述的第二及第三区域可以使用相同方法来推导上下文,但使用用于每一区域的不同上下文集合。
在另一实例中,第一区域包含在位置(1,0)及(0,1)处的DC分量及变换系数。第二区域含有不在第一区域中的其余多个变换系数。
在另一实例中,第一区域仅含有所述多个变换系数的DC分量,并且第二区域含有其余多个变换系数。
总的来说,用于第一区域中的每一变换系数的第一上下文是基于第一区域中的每一变换系数的位置,而用于第二区域中的每一变换系数的第二上下文是基于每一变换系数的因果相邻者的经译码信息。在一些实例中,第二上下文进一步是基于第二区域中的每一变换系数的位置。在另一实例中,用于第二区域中的每一变换系数的第二上下文是基于每一变换系数的五个因果相邻者的经译码信息。
在一个或一个以上实例中,本发明中描述的功能可以用硬件、软件、固件或其任何组合来实施。如果用软件实施,则可以通过基于硬件的处理单元(例如一个或一个以上处理器)来执行所述功能,所述处理单元执行呈计算机可读指令或代码的形式的软件。此类指令或代码可以在计算机可读媒体上存储或传输,并且由基于硬件的处理单元来执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形非暂时媒体,例如数据存储媒体,或包含任何促进例如根据一种通信协议将计算机程序从一处传送到另一处的媒体的通信媒体。以此方式,计算机可读媒体一般可以对应于(1)有形计算机可读存储媒体,其是非暂时的,或(2)通信媒体,例如信号或载波。数据存储媒体可以是可由一个或一个以上计算机或一个或一个以上处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用的媒体。计算机程序产品可包含计算机可读媒体。
借助于实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、快闪存储器、CD-ROM或任何其它固态、光学或磁性数据存储媒体,包含光盘存储装置、磁盘存储装置或其它磁性存储装置,或任何其它可用于以指令或数据结构的形式存储所需的程序代码并且可以由计算机存取的媒体。同样,可恰当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波的无线技术从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波的无线技术包括于媒体的定义中。但是,应理解,所述计算机可读存储媒体及数据存储媒体并不包含连接、载波、信号或其它瞬时媒体,而是针对于非瞬时有形存储媒体。如本文中所使用,磁盘及光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘及蓝光光盘,其中磁盘通常磁性地再现数据,而光盘使用激光光学地再现数据。以上各者的组合也应包括在计算机可读媒体的范围内。
可由例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一个或一个以上处理器来执行所述指令。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文所述的功能性可以在经配置用于编码及解码的专用硬件及/或软件模块内提供,或者并入在组合编解码器中。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可以通过广泛多种装置或设备来执行,所述装置或设备包含桌上型计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手持机(例如所谓的智能电话)、电视、相机、显示装置、数字媒体播放器、视频游戏控制台等。在许多情况下,此类装置可以经配备用于无线通信。另外,此类技术可以通过集成电路(IC)或一组IC(例如,芯片组)来实施。经配置以执行本发明的技术的装置可包含上述装置中的任一者,并且在一些情况下,可能是视频编码器或视频解码器或组合的视频编码器-解码器,即视频编解码器,其可能通过硬件、软件及固件的组合而形成。本发明中描述各种组件、模块或单元可能是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。而是,如上文所描述,各种单元可以联合合适的软件及/或固件而组合在编解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一个或一个以上处理器。
已描述了各种实例。这些及其它实例处于所附权利要求书的范围内。