使用变换系数的基于函数的扫描次序的视频译码的制作方法

文档序号:7886296阅读:232来源:国知局
专利名称:使用变换系数的基于函数的扫描次序的视频译码的制作方法
技术领域
本发明涉及视频译码,且更特定来说涉及用于扫描用于视频译码的残余变换系数的技术。
背景技术
数字视频能力可并入到广泛多种装置中,包括数字电视机、数字直播系统、无线广播系统、个人数字助 理(PDA)、膝上型或桌上型计算机、数码相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式或卫星无线电电话、视频电话会议装置和类似装置。数字视频装置实施视频压缩技术,例如由MPEG-2、MPEG-4、ITU-T H.263、ITU-TH.264/MPEG-4第10部分高级视频译码(AVC)定义的标准、当前在开发的高效视频译码(HEVC)标准以及此些标准的扩展中描述的那些技术,从而更有效地发射、接收和存储数字视频息。视频压缩技术包括空间预测和/或时间预测以减少或移除视频序列中固有的冗余。对于基于块的视频译码,视频帧或切片可经分割为若干块。每一块可进一步经分割。经帧内译码(I)帧或切片中的块是使用相对于同一帧或切片中的相邻块中的参考样本的空间预测来编码。经帧间译码(P或B)帧或切片中的块可使用相对于同一帧或切片中的相邻块中的参考样本的空间预测或相对于其它参考帧中的参考样本的时间预测。空间或时间预测得到待译码块的预测块。残余数据表示待译码的原始块与预测块之间的像素差。经帧间译码块是根据指向形成预测块的参考样本的块的运动向量以及指示经译码块与预测块之间的差的残余数据来编码。经帧内译码块是根据帧内译码模式和残余数据来编码。为了进一步压缩,可将残余数据从像素域变换到变换域,从而得到残余变换系数,所述系数随后可经量化。初始以二维阵列布置的经量化变换系数可以特定次序经扫描而产生用于熵译码的变换系数的一维向量。所述扫描次序可经选择以将非零系数和零值系数进行单独分组以促进熵译码过程的效率,例如零值系数的游程长度译码。

发明内容
大体上,本发明描述用于使用扫描次序的基于函数的定义来扫描与残余视频数据块相关联的变换系数的视频译码的装置和方法。视频译码器可至少部分地基于预定义函数和函数的一个或一个以上参数值来定义变换系数的扫描次序。视频编码器例如可使用基于函数的扫描次序来扫描变换系数的二维阵列以产生变换系数的一维阵列以用于产生经编码视频数据。视频解码器作为另一实例可例如以相反方式使用基于函数的扫描次序来扫描变换系数的一维阵列以再生变换系数的二维阵列以用于产生经解码视频数据。在每一情况下,所述扫描次序可根据参数值而变化。在一些实例中,视频编码器可发信号通知由视频编码器产生的经编码视频数据中的参数值中的至少一些。视频解码器可将参数值应用于函数以定义扫描次序。在一些实例中,参数值可包括变换单元大小、扫描定向和/或扫描定向强度。在一个实例中,本发明描述一种对视频数据进行译码的方法,所述方法包含至少部分地基于预定义函数和所述函数的一个或一个以上参数值来定义与残余视频数据块相关联的变换系数的扫描次序,且根据所述扫描次序扫描所述变换系数以供用于视频译码过程中。在一些实例中,所述方法可用视频编码器执行。在其它实例中,视频译码单元可以用视频解码器执行。在另一实例中,本发明描述一种用于对视频数据进行译码的设备,所述设备包含视频译码单元,其经配置以至少部分地基于预定义函数和所述函数的一个或一个以上参数值来定义与残余视频数据块相关联的变换系数的扫描次序,且根据所述扫描次序扫描所述变换系数以供用于视频译码过程中。在一些实例中,所述视频译码器可与视频编码器相关联。在其它实例中,所述视频译码器可与视频解码器相关联。在另一实例中,本发明描述一种计算机可读媒体,其包含致使视频译码器进行以下操作的指令:至少部分地基于预定义函数和所述函数的一个或一个以上参数值来定义与残余视频数据块相关联的变换系数的扫描次序,且根据所述扫描次序扫描所述变换系数以供用于视频译码过程中。在一些实例中,所述视频译码器可与视频编码器相关联。在其它实例中,所述视频译码器可与视频解码器相关联。在附图和以下描述中陈述一个或一个以上实例的细节。从描述和图式以及从权利要求书将明了其它特征、目的和优点。


·
图1是说明实例性视频编码和解码系统的框图。图2是说明视频编码器的实例的框图,所述视频编码器可使用用于变换系数的扫描次序的基于函数的定义的技术。图3是说明视频解码器的实例的框图,所述视频解码器可使用用于变换系数的扫描次序的基于函数的定义的技术。图4是说明用于图2的视频编码器中的熵编码单元的实例的框图。图5是说明用于图3的视频解码器的熵解码单元的实例的框图。图6是说明在实例变换单元中用于变换系数的z字形扫描次序的图。图7是说明在实例变换单元中用于变换系数的水平扫描次序的图。图8是说明在实例变换单元中用于变换系数的垂直扫描次序的图。图9是说明具有水平扫描定向的扫描次序的图。图10是说明具有比图9的扫描次序小的水平扫描定向强度的扫描次序的图。图11是说明基于扫描定向和扫描定向强度参数定义的基于函数的扫描次序的实例的图。
图12是说明基于扫描定向和扫描定向强度参数定义的基于函数的扫描次序的另一实例的图。图13是说明视频编码器中的用于变换系数的扫描次序的基于函数的定义的实例方法的流程图。图14是说明在视频解码器中的用于变换系数的扫描次序的基于函数的定义的实例方法的流程图。图15是说明视频编码器中的用于变换系数的扫描次序的基于函数的定义的另一实例方法的流程图。图16是说明在视频解码器中的用于变换系数的扫描次序的基于函数的定义的另一实例方法的流程图。
具体实施例方式数字视频装置实施视频压缩技术以较有效地发射和接收数字视频信息。视频压缩可应用空间(帧内)预测和/或时间(帧间)预测技术以减少或移除视频序列中固有的冗余。作为一个实例,对·于根据当前由视频译码联合合作组(JCT-VC)开发的高效视频译码(HEVC)标准的视频译码,视频帧可经分割为若干译码单元。译码单元通常指代用作为了视频压缩而应用各种译码工具的基本单元的图像区。译码单元通常是正方形的,且可视为类似于所谓的宏块,例如在例如ITU-T H.264等其它视频译码标准下。为了说明目的,在本申请案中将描述根据开发HEVC标准的当前提出的方面中的一些方面的译码。然而,本发明中描述的技术可用于其它视频译码过程,例如根据H.264定义的那些视频译码过程或其它标准或专用视频译码过程。为了实现所要的译码效率,根据HEVC,译码单元(⑶)可取决于视频内容而具有可变大小。另外,译码单元可经分裂为用于预测或变换的较小块。特定来说,每一译码单元可进一步经分割为预测单元(PU)和变换单元(TU)。预测单元可视为类似于例如H.264标准等其它视频译码标准下的所谓的分区。TU通常指代经应用变换以产生变换系数的残余数据块。译码单元通常具有表示为Y的一个明度分量和表示为U和V的两个色度分量。取决于视频取样格式,U和V分量在样本数目方面的大小可与Y分量的大小相同或不同。为了对块(例如,视频数据的预测单元(PU))进行译码,首先导出块的预测符。也称为预测块的预测符可通过帧内(I)预测(即,空间预测)或帧间(P或B)预测(S卩,时间预测)来导出。因此,一些预测单元可使用相对于同一帧中的相邻参考块中的参考样本的空间预测来帧内译码(I),且其它预测单元可相对于其它帧中的参考样本块而经单向帧间译码(P)或双向帧间译码(B)。在每一情况下,可使用参考样本来形成待译码块的预测块。在识别出预测块后,即刻确定原始视频数据块与其预测块之间的差。此差可称为残余数据,且指示待译码块中的像素值与经选择以表示经译码块的预测块中的像素值之间的像素差。为了实现较好的压缩,可例如使用离散余弦变换(DCT)、整数变换、卡忽南-拉维(Karhunen-Loeve, K-L)变换或另一变换来变换残余数据。例如TU等变换块中的残余数据可用驻留于空间像素域中的像素差值的二维(2D)阵列来布置。变换将残余像素值转换为例如频域等变换域中的变换系数的二维阵列。为了进一步压缩,可在熵译码之前量化变换系数。熵译码器随后将例如上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)或类似译码等熵译码应用于经量化变换系数。为了对经量化变换系数块进行熵译码,通常执行扫描过程以使得根据特定扫描次序将块中的经量化变换系数的二维(2D)阵列重新布置为变换系数的经排序一维(ID)阵列,即向量。随后将熵译码应用于所述变换系数的向量。对变换单元中的经量化变换系数的扫描使用于熵译码器的变换系数的2D阵列串行化。可产生有效性图来指示有效(即,非零)系数的位置。在其它实例中,可不产生有效图。可应用扫描来扫描若干系数层级,例如有效(即,非零)系数层级,和/或对有效系数的正负号进行译码。层级可指代系数的绝对值。系数扫描可指代扫描系数以对系数有效性进行译码、对系数层级进行译码、对系数正负号进行译码或对其它相关系数信息进行译码。在一些实例中,扫描可支持例如根据CAVLC译码过程对例如系数层级、正负号、非零系数之间的零游程长度或类似者的信息进行熵译码。而且,在一些实例中,扫描可支持例如根据CABAC译码过程对例如重要性图的重要性信息、系数层级、系数正负号或类似者的变换系数信息进行熵译码。因此,可应用根据本发明中描述的技术产生的扫描次序以支持根据例如CAVLC或CABAC过程等不同类型的熵译码技术对变换系数信息进行译码。作为一实例,对于DCT,经常存在朝向2D变换单元的左上角(即,低频区)的非零系数的较高概率。可能希望以增加在系数的经串行化游程的开始处将非零系数分组在一起的概率的方式扫描系数,从而准许朝向经串行化向量的末尾将零值系数分组在一起且更有效地译码为若干零的游程。为此原因,扫描次序对于有效的熵译码可为重要的。作为一个实例,所谓的“z字形”扫描次序己广泛用于扫描经量化变换系数。或者可使用水平、垂直或其它扫描次序。在一些情况下,可使用将z字形、水平和/或垂直扫描次序的方面组合的扫描次序。也可使用例如对角线扫描次序等其它扫描次序。通过如上文提到的变换和量化,非零变换系数通常位于朝向块的左上区的低频区域处,例如对于其中变换为DCT的实例。因此,在可首先遍历左上区的z字形扫描过程之后,非零变换系数通常较可能位于ID阵列的前部部分 中。若干零系数通常跟在ID阵列的末尾处,原因在于较高频率下减少的能量以及量化的作用,其可致使在位深度减小时一些非零系数即刻变为零值系数。经串行化ID阵列中的系数分布的这些特性可在熵译码器设计中使用以改善译码效率。换句话说,如果通过某种适当扫描次序可在ID阵列的前部部分中有效地布置非零系数,则由于许多熵译码器的设计而可预期较好的译码效率。举例来说,熵译码可对零值系数的游程进行译码,从而提供较有效的用于译码的符号。为了实现将较多非零系数置于ID阵列的前部区段处的此目的,在视频编码器-解码器(CODEC)中可使用不同的扫描次序来对变换系数进行译码。在一些情况下,z字形扫描可为有效的。在其它情况下,在将非零系数置于ID阵列的前部区段中时,例如垂直扫描或水平扫描等不同类型的扫描可较有效。可以多种方式产生不同扫描次序。一个实例是对于每一变换系数块,可从若干可用扫描次序中选择“最佳”扫描次序。视频编码器随后可针对每一块向编码器发信号通知由相应索引表示且存储在解码器处的一组扫描次序当中的最佳扫描次序的索引。通过应用若干扫描次序且选择最有效地将非零系数置于ID向量的开始附近的一个扫描次序可确定最佳扫描次序的选择,进而促进有效的熵译码。在另一实例中,可基于与例如预测模式(1、B、P)等与相关预测单元的译码有关的各种因素或其它因素来确定当前块的扫描次序。在此情况下,因为可在编码器和解码器两侧处推断或以其它方式确定相同信息(例如,预测模式),所以可能不需要从编码器向解码器发信号通知扫描次序索引。而是,视频解码器在给定块的预测模式的知识以及将预测模式映射到特定扫描次序的一个或一个以上准则的情况下可知晓适当的扫描次序。为了进一步改善译码效率,可用扫描次序可能并不总是恒定的。而是,可能启用某种调适,使得例如基于已经译码的系数来自适应地调整扫描次序。大体上,扫描次序调适可用一方式来完成以使得根据选定扫描次序,在较不可能具有非零系数的位置之前扫描较可能具有非零值的系数位置。
在一些视频编解码器中,可供使用的初始扫描次序可呈非常规则的形式,例如纯水平、垂直或z字形扫描。或者,扫描次序可通过训练过程而导出且因此可能似乎在某种程度上为随机的。训练过程可涉及将不同扫描次序应用于一块或一系列块以识别例如在如上文提到的非零和零值系数的有效放置方面产生所要结果的扫描次序。如果从训练过程导出扫描次序,或如果扫描次序在次序布置方面不具有规则模式,则可能必须在编码器和解码器两侧处均保存特定扫描次序。遗憾的是,在一些情况下,指定此些扫描次序的数据量可能很大。举例来说,对于32x32变换块,一个扫描次序可含有1024个变换系数位置。因为可存在不同大小的块且对于变换块的每一大小可存在若干不同扫描次序,所以需要保存的总数据量不可忽视。例如水平、垂直或z字形次序等规则扫描次序可能不需要存储,或者可能需要最少的存储。然而,水平、垂直或z字形次序可能无法提供足够的多样性来提供与经训练扫描次序相同的译码性能。根据本发明的实例,用于扫描变换系数块中的变换系数的扫描次序可使用一函数来有效地定义。可使用单一函数来基于不同的函数参数值而产生不同的扫描次序。或者,可使用多个函数例如以相同或不同的参数或参数值而产生不同的扫描次序。因此,通过选择不同的参数值、不同的函数或两者的组合可产生不同的扫描次序。以此方式,可例如以减少在编码器和解码器处为定义复合扫描次序而需要的所存储数据量的方式来定义此些复合扫描次序。在一些实例中,扫描次序的基于函数的定义的使用可准许产生多种扫描次序而不需要在编码器和/或解码器处的存储器中存储扫描次序。举例来说,可在编码器和/或解码器处应用一函数以针对给定块或块群组产生扫描次序。不同参数值的使用允许编码器和/或解码器相对于例如z字形、水平和垂直扫描次序等简单扫描次序以较灵活的方式调整扫描次序。而且通过使用函数来定义扫描次序,编码器和/或解码器可存储比直接表示若干不同扫描次序通常将需要的数据实质上少的数据。例如视频编码器或视频解码器等视频译码器可至少部分地基于预定义函数以及用于所述函数的一个或一个以上参数值来定义变换系数的扫描次序。视频编码器例如可使用基于函数的扫描次序来扫描变换系数的二维阵列以产生变换系数的一维阵列以用于产生经编码视频数据。视频解码器作为另一实例可以相反方式使用基于函数的扫描次序来扫描变换系数的一维阵列以再生变换系数的二维阵列以用于产生经解码视频数据。变换系数可表达为变换系数的层级,即绝对值。例如对于CABAC过程,扫描次序可用于对有效系数的有效性图进行译码、对有效系数的层级进行译码和/或对有效系数的正负号进行译码,和/或对其它相关变换信息进行译码。在其它实例中,例如对于CAVLC过程,扫描次序可用于对系数的层级进行译码、对有效系数的正负号进行译码、对非零系数之间的零游程长度进行译码,和/或对其它相关变换信息进行译码。因此,根据扫描次序扫描变换系数在各种实例中可包含根据扫描次序对与残余视频数据块相关联的变换系数(例如,TU中的变换系数)的有效性(即,作为非零或零值系数的系数状态)、层级、正负号或零游程长度中的至少一者进行译码。由视频译码器(即,视频编码器或视频解码器)定义的扫描次序可根据参数值而变化。在一些实例中,参数值可包括变换单元大小(即,块大小)、扫描定向和/或扫描定向强度。视频编码器可明确地或通过索引值向视频解码器发信号通知参数值,所述索引值指向由解码器存储的不同参数值。在一些实例中,视频编码器可例如通过索引值来发信号通知多个可用函数当中的特定函数。因此,视频编码器和视频解码器可使用单一函数或多个函数。在每一情况下,可将不同参数值集合作为输入应用于一函数以产生扫描次序。为了说明,本发明大体上描述 具有不同参数值的单一函数的使用。然而,本发明中描述的技术可通常适用于使用具有不同参数值集合的单一函数或多个函数,以在视频编码器和/或视频解码器处定义扫描次序。另外,本发明大体地但也参考正开发的HEVC标准的一些方面来描述扫描次序的基于函数的定义。虽然为了说明而描述HEVC标准,但本发明中描述的技术可大体上适用于其中需要扫描变换系数的任何视频译码过程。图1是说明实例性视频编码和解码系统10的框图,所述系统利用用于扫描次序的基于函数的定义的技术来扫描与残余视频数据块相关联的变换系数。如图1所示,系统10包括源装置12,所述源装置12经由通信信道16将经编码视频发射到目的装置14。源装置12和目的装置14可包含广泛多种装置中的任一者,包括桌上型计算机、笔记型(即,膝上型)计算机、平板计算机、机顶盒、例如所谓的智能电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台或类似装置。在许多情况下,此些装置可经装备以用于无线通信。因此,通信信道16可包含适合于发射经编码视频数据的无线信道、有线信道或无线与有线信道的组合。根据本发明的实例的用于扫描变换系数的扫描次序的基于函数的定义的技术可应用于视频译码以支持多种多媒体应用中的任一种,例如空中电视广播、闭路电视发射、卫星电视发射、流式视频发射(例如,经由因特网)、为存储在数据存储媒体上对数字视频的编码、对存储在数据存储媒体上的数字视频的解码,或其它应用。在一些实例中,系统10可经配置以支持单向或双视频发射以支持例如视频流式传输、视频回放、视频广播和/或视频电话等应用。在图1的实例中,源装置12包括视频源18、视频编码器20、调制器/解调器22和发射器24。在源装置12中,视频源18可包括例如以下各项的源:例如摄像机等视频俘获装置、含有先前俘获视频的视频档案、用以从视频内容提供者接收视频的视频馈送接口,和/或用于产生计算机图形数据作为源视频的计算机图形系统,或此些源的组合。作为一个实例,如果视频源18是摄像机,则源装置12和目的装置14可形成所谓的相机电话或视频电话。然而,本发明中描述的技术可大体上适用于视频译码,且可应用于无线和/或有线应用,或存取存储经编码视频数据的本地媒体。所俘获、预俘获或计算机产生的视频可由视频编码器20编码。经编码视频信息可由调制解调器22根据例如无线通信协议等通信标准而调制,且经由发射器24发射到目的装置14。调制解调器22可包括为了信号调制而设计的各种混频器、滤波器、放大器或其它组件。发射器24可包括为了发射数据而设计的电路,包括放大器、滤波器和一个或一个以上天线。在图1的实例中,目的装置14包括接收器26、调制解调器28、视频解码器30和显示装置32。目的装置14的接收器26经由信道16接收信息,且调制解调器28对所述信息进行解调以产生用于视频解码器30的经解调位流。经由信道16传送的信息可包括由视频编码器20产生以供视频解码器30用于对视频数据进行解码的多种语法信息。视频编码器20和视频解码器30中的每一者可形成能够对视频数据进行编码或解码的相应编码器-解码器(CODEC)的部分。显示装置32可与目的装置14集成或在目的装置14的外部。在一些实例中,目的装置14可包括集成显示装置,且还经配置以与外部显示装置介接。在其它实例中,目的装置14可为显示装置。大体上,显示装置32向用户显示经解码视频数据,且可包含多种显示装置中的任一者,例如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器,或另一类型的显示装置。在图1的实例中,通信信道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。虽然图1中未图示,但在一些方面中,视频编码器20和视频解码器30可各自与音频编码器和解码器集成,且可包括适当的多路复用器-多路分用器(MUX-DEMUX)单元或其它硬件和软件,以处置共同数据流或单独数据流中的音频和视频两者的编码。如果适用,在一些实例中,MUX-DEMUX单元可符合ITU H.223多路复用器协议,或例如用户数据报协议(UDP)等其它协议。视频编码器20和视频解码器30各自可实施为多种合适编码器电路中的任一者,例如一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任一组合。当所述技术部分地以软件实施时,装置可将用于所述软件的指令存储在合适的非暂时性计算机可读媒体中,且使用一个或一个以上处理器执行硬件中的指令以执行本发明的技术。视频编码器20和视频解码器30中的每一者可包括于一个或一个以上编码器或解码器中,其中任一者可集成为相应装置中的组合式编码器/解码器(CODEC)的部分。视频编码器20可实施本发明的技术中的任一者或全部以改善译码单元的变换单元的编码。同样,视频解码器30可实施这些技术中的任一者或全部以改善译码单元的变换单元的解码。大体上,本发明的技术涉及用于使用扫描次序的基于函数的定义来扫描与残余视频数据块相关联的变换系数的视频译码的装置和方法。如本发明中描述的视频译码器可指代视频编码器或视频解码器。因此,视频编码器20和视频解码器30各自可大体上称为视频译码器。同样,视频译码可指代视频编码或视频解码。术语译码器、编码器和解码器指代经配置以用于视频数据的译码(例如,编码、解码或两者)的特定机器。大体上,用于定义扫描次序的函数可为针对作为输入应用于所述函数的一个或一个以上参数值的给定集合产生特定扫描次序的算法、过程、等式、序列或公式。扫描次序可指代编码器扫描变换单元中的变换系数的二维阵列以产生变换系数的一维阵列(例如,为了对例如层级和/或正负号等与此些变换系数相关联的信息进行译码)的次序,或解码器扫描变换系数的一维阵列成为变换系数的二维阵列的次序。变换系数的二维阵列可驻留于变换域中。变换系数的一维阵列可为变换系数的二维阵列的经串行化表示。在每一情况下,经扫描系数可为经量化或未经量化的变换系数。视频编码器可应用扫描次序以从二维阵列到一维阵列扫描变换系数,而视频解码器可例如以与编码器相反的方式应用扫描次序以从一维阵列到二维阵列扫描变换系数。或者,视频解码器可应用扫描次序以从一维阵列到二维阵列扫描变换系数,且视频编码器可以与解码器相反的方式应用扫描次序以从二维阵列到一维阵列扫描变换系数。因此,译码器的扫描可指代编码器的2D到ID扫描或解码器的ID到2D扫描。另外,根据扫描次序的扫描可指代呈2D到ID扫描的扫描次序的扫描、呈ID到2D扫描的扫描次序的扫描、与ID到2D扫描的扫描次序相反的扫描,或与2D到ID扫描的扫描次序相反的扫描。因此,可针对编码器的扫描或解码器的扫描建立扫描次序。在HEVC译码的实例中,视频编码器20可接收最大译码单元(IXU)且确定是否将LCU分裂为各自包含子CU的四 个象限,或是否在不分裂的情况下对LCU进行编码。在决定将IXU分裂为子⑶之后,视频编码器20可确定是否将每一子⑶分裂为各自包含子⑶的四个象限。视频编码器20可继续递归地确定是否分裂CU,其中分裂的最大次数由LCU深度指示。视频编码器20可提供指示LCU和LCU的子CU的分裂的四叉树数据结构。LCU可对应于四叉树的根节点。四叉树的每一节点可对应于LCU的CU。而且,每一节点可包括指示对应CU是否经分裂的分裂旗标值。如果例如LCU经分裂,则视频编码器20可设置根节点中的分裂旗标的值以指示IXU经分裂。随后,视频编码器20可设置根节点的子节点的值以指示IXU的子⑶中的哪些(如果存在)经分裂。未经分裂的CU可对应于四叉树数据结构的叶节点,其中叶节点没有子节点。对于对应于叶节点的每一 CU,视频编码器20可确定是否形成具有与CU相同大小的一个PU,或形成表示CU的部分的四个PU。对于每一 PU,预测块可形成有根据帧内预测模式从相邻先前经译码CU检索或根据帧间预测模式从先前经译码参考帧中的预测块检索的预测数据。在每一情况下,在帧内预测或帧间预测译码以产生CU的PU的预测值之后,视频编码器20可计算残余数据以产生CU的一个或一个以上变换单元(TU)。残余数据可对应于待译码的PU的像素和的预测值之间的像素差。视频编码器20可形成包括CU的残余数据的一个或一个以上TU。视频编码器20可随后例如使用离散余弦变换(DCT)、整数变换、卡忽南-拉维(Karhunen-Loeve,K-L)变换或另一变换来变换TU。在一些实例中,视频编码器20可经配置以例如以级联方式将一个以上变换应用于TU。通过变换TU的残余数据,视频编码器20产生变换系数的二维阵列。所述二维阵列大体上具有与变换的输入块(即,TU)相同的大小。大体上,变换过程准备残余数据用于量化,所述量化进一步压缩数据。量化大体上指代其中变换系数经量化以可能地减少用以表示所述系数的数据量的过程。量化过程可减小与TU中的系数中的一些或全部相关联的位深度。举例来说,在量化期间可将η位值下舍入到m位值,其中η大于m。视频编码器20可应用预定义扫描次序或产生特定扫描次序以扫描经量化变换系数,且进而产生用于熵编码的变换系数的经串行化向量。在一些实例中,视频编码器20可基于针对特定块的一个或一个以上准则来选择不同的扫描次序。举例来说,视频编码器20可基于特定块的不同译码模式(例如,通常1、P或B模式或者1、P或B的特定模式)或者基于不同类型的变换、不同TU大小或其它准则来选择不同的扫描次序。另外或替代地,扫描次序可基于扫描的经验测试来定义(例如)以优化向量中的变换系数的放置,使得朝向变换系数的经串行化向量的前部压缩较高能量系数(即,非零系数)。在一些实例中,视频编码器20可以经验方式测试不同扫描,评估各种基于函数的扫描次序,且选择产生变换系数的所需放置的扫描次序。举例来说,视频编码器20可调整函数的一个或一个以上参数值以产生不同扫描次序,且例如在朝向ID向量的前部对非零变换系数的有效压缩方面评估扫描次序的结果。视频编码器20可根据多种预定测试方案中的任一者来测试某一范围的参数值。如果函数具有多个参数值,那么测试可评估对参数的一维改变(例如,改变一个参数的值,同时保持其它值固定)或对参数的多维改变(例如,一次改变多个参数的值)。用于定义扫描次序的函数可经配置以响应于作为输入的单一参数值或多个参数值。在一些实例中,函数可经配置以基于不同的块大小(例如,TU大小)、扫描定向和/或扫描定向强度来定义不同的扫描次序。扫描`定向可在跨TU中的变换系数块的行或列的扫描方面指定扫描主要是水平或垂直地定向还是在另一方向上定向。扫描定向强度可指示扫描次序的定向的强度,例如作为扫描次序朝向扫描定向偏置的程度。举例来说,具有极强水平定向的扫描次序可能扫描一行中的所有系数,之后才前进到扫描下一行中的系数。具有较弱水平定向的扫描次序可能扫描第一行中的系数的子集,且随后前进到扫描一个或一个以上其它行中的系数的子集,之后才返回到扫描第一行中的剩余系数。在一些情况下,扫描次序可多次返回到第一行以基于与其它行中的系数的子集交替的方式扫描剩余系数的若干子集。根据本发明的实例,视频编码器20和视频解码器30可基于函数来定义用于扫描变换系数块中的变换系数的扫描次序。又,视频编码器20和视频解码器30可利用单一函数来以不同的函数参数值产生不同的扫描次序。或者或另外,视频编码器20和视频解码器30可使用多个函数例如以相同参数值或不同参数值产生不同的扫描次序。因此,在这些实例中,通过选择不同的参数值、不同的函数或两者的组合可产生不同的扫描次序。在一些实例中,视频编码器20可指定给定函数的一个或一个以上函数参数的值以根据所述函数定义扫描次序,且随后向视频解码器30发信号通知所述一个或一个以上参数值中的至少一些。如上文提到,向视频解码器30发信号通知的参数的值可由视频编码器20基于对不同参数集合的评估以及对在经串行化向量开始附近的非零系数的有效压缩方面产生最佳或至少令人满意的结果的参数的选择来选择。应注意到,如本发明中描述的信令不一定指代并入有视频编码器20的装置与并入有视频解码器30的装置之间的交互式实时通信。而是,信令可在经编码视频位流中呈现。经编码视频位流可从并入有视频编码器20的源装置发射到并入有视频解码器30的目的装置。在许多情况下,替代地,经编码视频位流可仅记录在数据存储档案中(例如,磁盘或服务器上),且由存取所述数据存储档案上的数据或从所述数据存储档案请求数据的装置检索。举例来说,经编码视频可发射到例如在计算机、媒体播放器、智能电话或类似物中的视频解码器30或存储在由视频解码器30存取的本地存储装置上。函数可为由存储在视频编码器20和视频解码器30两者处的指令定义的单一函数。在此情况下,视频编码器20可向视频解码器30发信号通知所述一个或一个以上参数值中的至少一些。或者,函数可为由存储在视频编码器20和视频解码器30处的指令定义的多个函数中的一者。在此情况下,视频编码器20可在由视频解码器30接收或存取的经编码视频中发信号通知选定函数的身份和所述函数的所述一个或一个以上参数值中的至少一些。此信令可例如针对个别TU、PU或CU在位流中发射,使得可针对CU内的个别TU或多个TU指定不同的扫描次序。然而,为个别TU指定特定扫描次序的能力在某些应用中可能是需要的。视频编码器20可明确地或通过参考识别函数或参数值的索引值来在适用时发信号通知函数和/或参数值。视频编码器20可例如个别地或针对一组参数值发信号通知由视频解码器30存储的参数值的一个或一个以上索引,和/或由视频解码器存储的指令或数据所定义的特定函数。在一些实例中,视 频编码器20还可例如使用用以定义函数的值表以及参数值来发信号通知函数的特定特性。在一些情况下,视频解码器30可经配置以推断函数的一个或一个以上参数。作为一实例,视频解码器30可根据由视频编码器20发射的语法元素确定TU大小,并基于TU大小而选择函数或函数的一个或一个以上参数值。在一些实例中,可推断一些参数值且可在经编码位流中通过语法元素来发信号通知一些参数值。在其它实例中,视频编码器20可发信号通知扫描次序函数的所有参数值。函数和/或参数值可例如作为视频数据的各种层级处的语法元素来发信号通知,所述层级例如为序列层级、图片层级、切片层级、译码单元层级(包括LCU和CU两个层级)、TU层级或其它译码层级。为了准许对不同TU的不同扫描次序的定义,可能希望例如在TU四叉树标头中在TU层级处发信号通知此些语法元素。视频编码器20可在经编码视频位流中发信号通知参数值。视频解码器20在接收到或以其它方式存取经编码视频位流后随后即刻可将发信号通知的参数值应用于己知函数来根据所述函数构造扫描次序。函数可由存储在与视频解码器20相关联的存储器中的指令或数据定义。在其它实例中,函数或指令集对于视频编码器20和视频解码器30两者可为己知的,且可在编码器和解码器两侧处例如基于变换单元的特性(例如块大小)推断参数值。在此情况下,视频编码器20和视频解码器30两者可存储参数值和/或函数以用于扫描次序的基于函数的定义。因此,在一些实例中,视频编码器20可能不需要发信号通知参数值或函数。在以上实例中的每一者中,在视频编码器20和/或视频解码器30处使用函数来构造扫描次序可提供如下能力:产生复杂且灵活的扫描次序而不需要在编码器和解码器处逐个位置地保存确切的扫描次序,这原本将会需要大量的数据存储。替代于从存储器检索大量的扫描次序定义,举例来说,视频解码器30可使用由视频编码器20发信号通知或由解码器推断出的函数和参数值来构造扫描次序。存储用以基于一个或一个以上参数值定义扫描次序的函数的指令或数据可比存储多个实际扫描次序所消耗的视频解码器30中的存储器显著减少。可使用具有一个或一个以上特定参数的函数来产生变换系数扫描次序。在一个实例中,如上文提到,函数参数可包括变换单元大小、扫描定向和扫描定向强度中的一者或一者以上。这些参数可个别地或组合地使用以定义由视频编码器20和视频解码器30使用的扫描次序。给定这些参数的值,可由视频编码器20和视频解码器30使用函数来产生扫描。对于某一大小的变换块,例如通过提供不同扫描定向和定向强度,可使用具有不同参数值的函数在视频编码器20处产生多个扫描次序。视频编码器20可选择扫描次序中递送所要结果的扫描次序,且随后向视频解码器30发信号通知用以产生所述扫描次序的相关参数值。如上所述,在一些实例中,同一函数可用于编码器和解码器两者。因此,只要相同函数参数值对视频编码器和视频解码器两者己知,便可在编码器和解码器两侧处产生相同扫描次序。 在应用选定扫描次序将变换单元的变换系数的二维矩阵扫描为一维向量之后,视频编码器20可例如使用内容自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)或其它熵译码过程对所述一维向量进行熵编码。给定特定熵编码器的设计,有效地朝向向量的开始放置非零系数的扫描次序的选择可帮助改善译码效率。作为一个实例,为了执行CAVLC,视频编码器20可针对待发射符号选择可变长度码。VLC中的码字可经构造以使得相对较短的代码对应于较可能的符号,而较长的代码对应于较不可能的符号。以此方式,VLC的使用可例如针对待发射的每一符号使用相等长度码字来实现位节省。作为另一实例,为了执行CABAC,视频编码器20可选择上下文模型以应用于某一上下文来对待发射的符号进行编码。所述上下文可例如涉及相邻值是否为非零。视频编码器20还可对例如在执行自适应扫描时产生的有效系数旗标和最后系数旗标等语法元素进行熵编码。视频解码器30可以与视频编码器20基本上对称的方式来操作。举例来说,视频解码器30可接收表示经编码⑶的经熵编码数据,包括经编码PU和TU数据。视频解码器30可对所接收数据进行熵解码,从而形成经解码的量化系数。当视频编码器20例如使用可变长度码算法对数据进行熵编码时,视频解码器30可使用一个或一个以上VLC表来确定对应于所接收码字的符号。当视频编码器20使用算术译码算法对数据进行熵编码时,视频解码器30可使用上下文模型来对数据进行解码,所述模型可对应于由视频编码器20使用来对数据进行编码的同一上下文模型。
视频解码器30可随后使用与由视频编码器20使用的扫描成镜像的逆扫描来逆扫描经解码系数。为了逆扫描系数,视频解码器30可根据可由存储在解码器处或由编码器发信号通知的指令或数据定义的由视频编码器20使用的函数且根据为所述函数指定的一个或一个以上参数值来产生扫描次序。特定来说,视频解码器30可从视频编码器20接收一个或一个以上参数值的信令用于与函数一起使用,和/或推断一个或一个以上参数值且基于所述参数 值产生扫描次序。使用此扫描次序,视频解码器30进而从得自熵解码过程的经量化变换系数的一维向量形成二维矩阵。接着,视频解码器30可对由根据基于函数的扫描次序执行的逆扫描产生的二维矩阵中的系数进行逆量化。视频解码器30可随后将一个或一个以上逆变换应用于所述二维矩阵。逆变换可对应于由视频编码器20应用的变换。视频解码器30可基于例如对应于当前正解码的CU的四叉树的根部处发信号通知的信息或参考指示适当逆变换的其它信息,来确定将应用的逆变换。在应用逆变换后,视频解码器30即刻恢复像素域中的残余视频数据,且在适用时应用帧内预测或帧间预测解码以重构原始视频数据。图2是说明视频编码器20的实例的框图,所述视频编码器20可使用如本发明中描述的用于变换系数的扫描次序的基于函数的定义的技术。为了说明的目的将在HEVC译码的上下文中描述视频编码器20,但关于可能需要变换系数扫描的其它译码标准或方法本发明不受限制。视频编码器20可对视频帧内的CU执行帧内和帧间译码。帧内译码依赖于空间预测来减少或移除给定视频帧内的视频中的空间冗余。帧间译码依赖于时间预测来减少或移除视频序列的当前帧与先前经译码帧之间的时间冗余。帧内模式(I模式)可指代若干基于空间的视频压缩模式中的任一者。例如单向预测(P模式)或双向预测(B模式)等帧间模式可指代若干基于时间的视频压缩模式中的任一者。如图2所示,视频编码器20接收待编码视频帧内的当前视频块。在图2的实例中,视频编码器20包括运动补偿单元44、运动估计单元42、帧内预测单元46、参考帧缓冲器64、求和器50、变换单元52、量化单元54以及熵编码单元56。熵编码单元56指代视频编码器20的应用熵译码的部分,且不应与CU混淆。同样,图2中说明的变换单元52是将实际变换应用于残余数据块的单元,且不应与变换系数块混淆,变换系数块也可称为CU的变换单元(TU)。对于视频块重构,视频编码器20还包括逆量化单元58、逆变换单元60和求和器62。还可包括解块滤波器(图2中未图示)以对块边界进行滤波以从经重构视频移除成块假象。如果需要,则解块滤波器将通常对求和器62的输出进行滤波。在编码过程期间,视频编码器20接收待译码的视频帧或切片。所述帧或切片可划分为多个视频块,例如最大译码单元(LCU)。运动估计单元42和运动补偿单元44相对于一个或一个以上参考帧中的一个或一个以上块执行所接收视频块的帧间预测译码以提供时间压缩。帧内预测单元46可相对于与待译码块相同的帧或切片中的一个或一个以上相邻块执行所接收视频块的帧内预测译码以提供空间压缩。模式选择单元40可例如基于每一模式的误差(S卩,失真)结果而选择译码模式中的一者(帧内或帧间),且将所得经帧内或帧间译码块提供到求和器50以产生残余块数据且提供到求和器62以重构经编码块以用于参考帧中。一些视频帧可经指定为I帧,其中I帧中的所有块是在帧内预测模式中编码。在一些情况下,帧内预测单元46可例如在由运动估计单元42执行的运动搜索未得到块的足够好的预测时对P或B帧中的块执行帧内预测编码。运动估计单元42和运动补偿单元44可高度集成,但为了概念目的而分开来说明。运动估计是产生估计视频块的运动的运动向量的过程。举例来说,运动向量可指示当前帧中的预测单元相对于参考帧的参考样本的位移。参考样本可为被发现在像素差方面紧密匹配于⑶的包括正译码PU的部分的块,所述像素差可通过绝对差和(SAD)、平方差和(SSD)或其它差量度来确定。由运动补偿单元44执行的运动补偿可涉及基于由运动估计确定的运动向量来获取或产生预测单元的值。又,在一些实例中,运动估计单元42和运动补偿单元44可在功能上集成。运动估计单元42通过将预测单元与存储在参考帧缓冲器64中的参考帧的参考样本进行比较来计算经帧间译码帧的预测单元的运动向量。在一些实例中,视频编码器20可计算存储在参考帧缓冲器64中的参考帧的子整数像素位置的值。举例来说,视频编码器20可计算参考帧的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可执行相对于全像素位置和分数像素位置的运动搜索,且输出具有分数像素精度的运动向量。运动估计单元42将所计算的运动向量发送到熵编码单元56和运动补偿单元44。由运动向量识别的参考帧的部分可称为参考像素数据块。运动补偿单元44可例如通过检索由PU的运动向量识别的参考块来计算当前CU的预测单元的预测块。帧内预测单元46可对所接收块进行帧内预测编码,作为对由运动估计单元42和运动补偿单元44执行的帧间预测的替代。帧内预测单元46可采用块的从左到右、从上到下编码次序,相对于相邻的先前经译码块对所接收块进行编码,所述相邻块例如是当前块的上方、右上方、左上方或左边的块。帧内预测单元46可以用多种不同帧内预测模式来配置。举例来说,帧内预测单元46可基于正编码的CU的大小,以某一数目的方向性预测模式来配置,例如33个方向性预测模式。帧内预测单元46例如通过计算各种帧内预测模式的误差值且选择产生最低误差值的模式来选择帧内预测模式。方向性预测模式可包括用于组合空间相邻像素的值且将经组合值应用于PU中的一个 或一个以上像素位置的功能。一旦己计算PU中的所有像素位置的值,帧内预测单元46便可基于与待编码的所接收块之间的像素差来计算预测模式的误差值。帧内预测单元46可继续测试帧内预测模式直到发现产生可接受或最小误差值的帧内预测模式为止。帧内预测单元46可随后将的预测块发送到求和器50。视频编码器20通过从正译码的原始视频块减去由运动补偿单元44或帧内预测单元46计算的预测数据来形成残余块。求和器50表示执行此减法运算的组件。残余块可对应于像素差值的二维矩阵,其中残余块中的值的数目与对应于残余块的I3U中的像素的数目相同。残余块中的值可对应于I3U的预测块中和待译码原始块中的位于同一地点的像素的值之间的差,即误差。所述差取决于经译码的块的类型而可为色度或亮度差。变换单元52可从残余块形成一个或一个以上变换单元(TU)。变换单元52将例如离散余弦变换(DCT)、方向性变换或概念上类似的变换等变换应用于TU,从而产生包含变换系数的视频块。变换单元52可将所得变换系数发送到量化单元54。量化单元54可随后量化变换系数。熵编码单元56可随后根据指定扫描次序对矩阵中的经量化变换系数执行扫描。本发明描述熵编码单元56执行扫描。然而应了解,在其它实例中,例如量化单元54等其它处理单元可执行扫描。
视频编码器20经由熵编码单元56或例如量化单元54等另一功能单元可通过将不同参数集应用于定义扫描次序的给定函数和/或通过将不同参数集应用于不同函数,而产生多个不同扫描次序。举例来说,视频编码器20可利用单一函数或一组函数来产生不同扫描次序。取决于函数的配置,不同函数可接收相同参数或不同参数。视频编码器20可应用不同函数或不同参数值来产生不同扫描次序,且随后例如在朝向得自扫描的ID阵列的前部压缩较高能量系数方面评估扫描次序的结果。视频编码器20例如经由熵编码单元56可随后选择扫描次序中的产生最佳结果或至少相对于某种准则令人满意的结果的一者,且应用所述扫描次序以产生用于熵编码的ID阵列。熵编码单元56随后对变换系数的ID阵列进行熵编码以产生经熵译码位流。视频编码器20可在位流中发射一个或一个以上语法元素以发信号通知用于扫描次序函数的参数值,且在一些情况下,如果多个函数是可能的,则发信号通知函数的身份。以此方式,通过从视频编码器20接收信令,视频解码器30能够确定由视频编码器使用的参数值和/或函数且进而再生扫描次序。如将描述,视频解码器30随后可以用相反方式应用扫描次序以将变换系数的ID阵列转换为变换系数的2D阵列。又,系数可由量化单元54量化或在替代实例中不量化。在一些实例中,熵编码单元56可经配置以基于先前经译码TU的统计数据来选择扫描次序函数的一个或一个以上参数的值。举例来说,统计数据可指示处于特定位置的变换系数将为非零的概率。在一些实例中,统计数据可基于TU大小或形状、其它TU(例如,具有相同大小和形状)中的有效系数的数目或布置、其它TU(例如,具有相同大小和形状)中的系数层级或有效系数的数目,或其它信息。使用此些概率,熵编码单元56可选择扫描次序函数的一个或一个以上参 数例如作为开始点,且随后测试其它参数值以识别例如在朝向扫描的前部放置非零系数方面产生所要结果的扫描次序。熵编码单元56可使用各种统计数据和计算来确定随着时间的概率。而且,熵编码单元56可跟踪不同预测模式和/或变换的单独统计数据。一旦变换系数经扫描,熵编码单元56便可将例如CAVLC或CABAC等熵译码应用于系数。另外,熵编码单元56可对运动向量(MV)信息和可用于在视频解码器30处对视频数据进行解码的多个语法元素中的任一者进行编码。在一些实例中,语法元素可包括具有指示特定系数是否有效(例如,非零)的有效系数旗标、指示特定系数是否为最后有效系数的最后有效系数旗标和/或其它信息的有效性图。在其它实例中,语法元素可包括零游程长度信息、系数层级信息、最后有效系数位置和/或其它信息。视频解码器30可使用这些语法元素来重构经编码视频数据。在熵编码单元56的熵译码之后,所得经编码视频可发射到例如视频解码器30等另一装置,或经归档以用于稍后发射或检索。为了对语法元素进行熵编码,熵编码单元56可执行CABAC且基于例如先前扫描的N个系数中的有效系数的数目来选择上下文模型,其中N是可与正扫描的块的大小相关的整数值。熵编码单元56还可基于用以计算曾经变换为变换系数块的残余数据的预测模式以及用以将残余数据变换为变换系数块的变换的类型,来选择上下文模型。当使用帧内预测模式来预测对应预测单元(PU)时,熵编码单元56可进一步使上下文模型的选择基于帧内预测模式的方向。在一些实例中,变换单元52可经配置以将某些变换系数(即,某些位置中的变换系数)归零。举例来说,变换单元52可经配置以在变换之后将TU的左上方象限之外的所有变换系数归零。作为另一实例,熵编码单元56可经配置以将阵列中的在阵列中的某一位置之后的变换系数归零。在任一情况下,视频编码器20可经配置以例如在扫描之前或之后将变换系数的某一部分归零。短语“归零”用以表示将系数的值设置为零,但不一定跳过或丢弃所述系数。在一些实例中,这种将系数设置为零可与可得自量化的归零相结合。在一些情况下,熵编码单元56或视频编码器20的另一单元可经配置以除了熵译码之外还执行其它译码功能。举例来说,熵编码单元56可经配置以确定⑶和的经译码块模式(CBP)值。而且,在一些情况下,熵编码单元56可执行系数的游程长度译码。逆量化单元58和逆变换单元60分别应用逆量化和逆变换以重构像素域中的残余块,例如用于稍后用作参考块。运动补偿单元44可通过将残余块加到参考帧缓冲器64的帧中的一者的预测块来计算参考块。运动补偿单元44还可将一个或一个以上内插滤波器应用于经重构残余块以计算子整数像素值以用于运动估计。求和器62将经重构残余块加到由运动补偿单元44产生的经运动补偿预测块以产生经重构视频块以存储在参考帧缓冲器64中。经重构视频块可由运动估计单元42和运动补偿单元44用作参考块以对后续视频帧中的块进行帧间译码。图3是说明对经编码视频序列进行解码的视频解码器30的实例的框图。在图3的实例中,视频解码器30包括熵解码单元70、运动补偿单元72、帧内预测单元74、逆量化单元76、逆变换单元78、参考帧缓冲器82以及求和器80。在一些实例中,视频解码器30可执行与关于视频编码器20(图2)描述的编码遍次大体上互逆的解码遍次。运动补偿单元72可基于从熵解码单元70接收的运动向量而产生预测数据。帧内预测单元74可基于发信号通知的帧内预测模式和来自当前帧的先前经解码块的数据来产生当前帧的当前块的预测数据。在一些实例中,熵解码单元70 (或逆量化单元76)可使用与由视频编码器20的熵编码单元56 (或量化单元54)使用的扫描次序成镜像的扫描来扫描所接收值。虽然系数扫描可在逆量化单元76中执行,但为了说明目的将扫描描述为由熵解码单元70执行。另外,虽然为便于说明而展示为单独的功能单元,但熵解 码单元70、逆量化单元76和视频解码器30的其它单元的结构和功能性可彼此高度集成。在图3的实例中,视频解码器30可基于函数和所述函数的一个或一个以上参数值来定义扫描次序。或者,函数可为由视频解码器30存储的指令或数据所定义的单一函数或多个函数中的一者。视频解码器30可从视频编码器20接收识别函数的一个或一个以上参数值且在多个函数的情况下识别将使用的函数中的一者的信令。另外或替代地,视频解码器30可基于经译码视频的特性,例如TU大小、帧间或帧内译码模式或其它特性,来推断函数的选择或者一个或一个以上参数值的选择。为了说明的目的将描述其中视频编码器20和视频解码器30使用单一函数且视频编码器30发信号通知函数的一个或一个以上参数值的实例。熵解码单元70可经配置以基于函数和一个或一个以上相关联参数值来产生扫描次序,且随后应用所述扫描次序以将变换系数的ID向量转换为变换系数的2D阵列。举例来说,使用所述函数,熵解码单元70可确定由视频编码器20针对特定变换块使用的扫描次序,或确定与由视频编码器使用的扫描次序相反的扫描次序。在任一情况下,熵解码单元70使用扫描次序的相反次序来将ID向量扫描为2D阵列。由熵解码单元70产生的变换系数的2D阵列可经量化且可大体上匹配于由视频编码器20的熵编码单元56扫描以产生变换系数的ID向量的变换系数的2D阵列。逆量化单元76逆量化(即,解量化)在位流中提供且由熵解码单元70解码的经量化变换系数。逆量化过程可包括例如类似于针对HEVC提出或由H.264解码标准定义的过程的常规过程。逆量化过程可包括使用由视频编码器20针对CU计算的量化参数QPy来确定量化程度,且同样确定应当应用的逆量化程度。逆量化单元76可在系数从ID向量转换为2D阵列之前或之后对变换系数进行逆量化。逆变换单元58应用逆变换,例如逆DCT、逆整数变换、逆KLT、逆旋转变换、逆方向性变换或另一逆变换。在一些实例中,逆变换单元78可基于来自视频编码器20的信令或通过从例如块大小、译码模式或类似物等一个或一个以上译码特性推断变换来确定逆变换。在一些实例中,逆变换单元78可基于包括当前块的CU的四叉树的根节点处发信号通知的变换来确定将应用于当前块的变换。在一些实例中,逆变换单元78可应用级联逆变换。运动补偿单元72可能基于内插滤波器执行内插来产生经运动补偿的块。将用于具有子像素精度的运动估计的内插滤波器的识别符可包括于语法元素中。运动补偿单元72可使用由视频编码器20在视频块编码期间使用的内插滤波器来计算参考块的子整数像素的经内插值。运动补偿单元72可根据所接收语法信息来确定由视频编码器20使用的内插滤波器且使用所述内插滤波器来产生预测块。在HEVC实例中,运动补偿单元72和帧内预测单元74可使用语法信息(例如,由四叉树提供)中的一些来确定用以对经编码视频序列的帧进行编码的LCU的大小、描述经编码视频序列的帧的每一 CU如何分裂(以及同样,子CU如何分裂)的分裂信息、指示每一分裂如何经编码的模式(例如,帧内或帧间预测,和针对帧内预测的帧内预测编码模式)、每一经巾贞间编码F1U的一个或一个以上参考巾贞(和/或含有参考巾贞的识别符的参考列表),以及用以对经编码视频序列进行解码的其它信息。求和器80将残余块与由运动补偿单元72或帧内预测单元74产生的对应预测块进行组合以形成经解码块。如果需要,则还可应用解块滤波器以对经解码块进行滤波以便移除成块假象。随后将经解码视频块存储在参考帧缓冲器82中,参考帧缓冲器82提供用于后续运动补偿的参考块且还产生经解码视频用于在显示装置(例如图1的显示装置32)上呈现。图4是说明用于图2的视频编码器20中的熵编码单元56的实例的框图。图4说明熵编码单元56的用于基于一函数确定扫描次序和应用所述扫描次序将变换系数的2D阵列转换成变换系数的ID阵列用于对视频数据进行编码的各种功能方面。如图1中所示,熵编码单元56可包括基于函数的扫描控制单元90、2D到ID扫描单元92、熵译码引擎94和函数存储器96。扫描控制单元90向函数应用一个或一个以上参数值以产生扫描次序。函数存储器96存储定义用于 产生扫描次序的函数的指令和/或数据。举例来说,函数存储器96可以存储指定用以执行以产生扫描次序的操作的计算机代码。基于函数的扫描控制单元90从函数存储器96检索指令,并且应用所述指令来实施所述函数。明确地说,基于函数的扫描控制单元90应用一个或一个以上参数值作为对函数的输入,并且根据所述函数产生扫描次序。
函数存储器96可以存储用于单一函数的指令和/或数据。替代地,函数存储器96可以存储用于多个函数的指令和/或数据。在一些情况下,所述函数可经配置以接受相同集合的参数或不同集合的参数作为输入,包括更大或更小数目的参数。在一些实例中,扫描控制单元90可经配置以基于例如块大小、帧间或帧内译码模式、变换等等各种译码特性来选择多个函数中的一者。扫描控制单元90可以用各种集合的参数值来测试单一函数或多个函数,以识别例如在所测试的那些扫描次序当中产生最佳或至少令人满意的结果以用于在ID向量中放置系数以支持有效系数译码的扫描次序。在图4的实例中,扫描控制单元90接收变换单元大小、扫描定向和扫描定向强度作为输入参数。扫描控制单元90向所述函数应用所述参数的值以产生所述扫描次序。在一些实例中,扫描控制单元90可以基于所述函数和单一参数集合产生单一扫描次序。在其它实例中,可以基于例如块大小、帧间或帧内译码模式、变换等等各种译码特性来选择所述参数的值中的一者或一者以上。在额外实例中,可以例如用受控制的方式调整所述参数的值以测试所述函数产生的多个不同扫描次序,并且由此识别提供系数在ID向量中的有效放置以支持熵译码性能的扫描次序。在评估多个输入参数和/或函数的集合的实例中,熵编码单元56可经配置以基于与系数在ID向量中的有效放置相关的多种准则中的任一种来选择所述扫描次序中的
一者O所述扫描次序可以是所测试的多个扫描次序当中被发现产生系数的最有效放置的特定扫描次序或满足效率阈值的扫描次序。举例来说,扫描控制单元100可以测试不同扫描次序,直到产生令人满意(即,就系数的有效放置而言)的扫描次序为止。扫描单元92从扫描控制单元90接收所述扫描次序,并且应用所述扫描次序将系数的2D阵列转换成系数的串行化ID向量。同样,变换系数的2D阵列可包括经量化变换系数。类似地,所述ID向量可包括经量化变换系数。替代地,所述系数可以是未经量化的。熵编码引擎94例如使用CAVLC、CABAC或其它过程向经扫描系数应用熵编码过程。可以在系数被完全扫·描成ID向量之后或在每一系数被添加到ID向量时向所述系数应用熵编码过程。在一些情况下,熵编码引擎94可经配置以并行地对ID向量的不同区段进行编码,以促进熵编码过程的并行度以便提高速度和效率。熵编码引擎94产生携载经编码视频的位流。可以将所述位流发射到另一装置或将其存储在数据存储档案中以供以后检索。除了残余变换系数数据之外,所述位流还可以携载运动向量数据和可用于对位流中的经编码视频进行解码的各种语法元素。另外,熵编码单元56可以在经编码视频位流中提供信令以指示应用于函数以产生用于将变换系数的2D阵列转换成变换系数的ID阵列的扫描次序的参数值。在一些实例中,所述信令可以或者或另外指示用于产生扫描次序的特定函数。作为实例,所述信令可以明确地发信号通知参数值或函数,或发信号通知供视频解码器30查找参数值的索引值。可以举例来说作为各种层级的语法元素(例如帧、切片、LCU、CU层级或TU层级)来发信号通知函数和/或参数值。如果使用单一函数,则可能不需要发信号通知所述函数。此外,在一些实例中,可能视频解码器30无需信令即可推断一些所述参数值。为了准许用于不同TU的不同扫描次序的定义,可能需要在TU层级(例如,在TU四叉树标头中)发信号通知此类语法元素。虽然出于说明的目的描述了经编码视频位流中的信令,但是可以在辅助信息中在带外发信号通知指示参数值或函数的信息。图5是说明用于图3的视频解码器中的熵解码单元的实例的框图。图5说明熵解码单元70的用于基于一函数确定扫描次序和应用所述扫描次序将变换系数的ID阵列转换成变换系数的2D阵列用于对视频数据进行解码的各种实例功能方面。如图1中所示,熵解码单元70可包括基于函数的扫描控制单元100、1D到2D扫描单元102、熵译码引擎104和函数存储器106。熵解码引擎104对发射到视频解码器30或视频解码器30从存储装置检索的经编码视频进行熵解码。举例来说,熵解码引擎104可以向携载经编码视频的位流应用例如CAVLC、CABAC或另一过程的熵解码过程以恢复变换系数的ID向量。除了残余变换系数数据之外,熵解码引擎104还可以应用熵解码以再生运动向量数据和可用于对位流中的经编码视频进行解码的各种语法元素。熵解码引擎104可以基于经编码视频位流中的信令或通过从位流中的其它信息推断适当过程来确定选择哪种熵解码过程,例如,CAVLC、CABAC或另一过程。

熵解码单元70可以基于经编码视频位流中的信令来确定用于扫描次序函数的参数值和/或对所使用的特定函数的指示。举例来说,熵解码单元70可以接收明确地发信号通知参数值和/或准许查找此类信息的函数标识或索引值的语法元素。同样,虽然出于说明的目的描述经编码视频位流中的信令,但是熵解码单元70可以作为带外辅助信息接收到指示参数值或函数的信息。如果使用单一函数,则可能不需要发信号通知所述函数。实际上,熵解码单元70可以依赖于存储在视频解码器处(例如,在函数存储器106中)的单一函数。此外,在一些实例中,可能视频解码器30无需信令即可推断一些所述参数值。与图4的存储器96相同,图5的存储器106可以存储定义用于产生扫描次序的函数的指令和/或数据。函数存储器106可以存储用于单一函数的指令和/或数据。替代地,如果函数存储器106存储用于多个函数的指令和/或数据,则经编码视频可包括指示应当使用哪个函数产生扫描次序的信令,或者熵解码单元70可以基于一个或一个以上译码特性推断特定函数。基于函数的扫描控制单元100从函数存储器106检索指令,并且应用所述指令来实施所述函数以产生扫描次序。基于函数的扫描控制单元100应用一个或一个以上参数值(其中一些或所有可以在经编码视频位流中发信号通知)作为对函数的输入,并且根据所述函数产生扫描次序。扫描控制单元100向指定函数应用所述参数值以产生所述扫描次序。扫描单元102从扫描控制单元100接收所述扫描次序,并且直接或以相反方式应用所述扫描次序来控制系数的扫描。在图5的实例中,扫描控制单元100接收变换单元大小、扫描定向和扫描定向强度作为输入参数。使用这些参数值和函数存储器106提供的函数,视频解码器30能够再生视频编码器20使用的扫描次序。总的来说,所述函数和参数值用于在视频解码器30的熵解码单元70中再生与视频编码器20的熵编码单元56应用的扫描次序相同或基本上相同的扫描次序,或逆扫描次序。扫描单元102于是可以直接或以相反方式应用所述扫描次序来针对给定TU重构曾被视频编码器20转换成ID阵列的变换系数的2D阵列。同样,扫描单元102产生的ID阵列中的变换系数可以经量化。可以在视频解码器30中应用逆变换之前对系数应用逆量化。
使用函数来定义视频编码器20和视频解码器30处的扫描次序可以准许根据函数参数的不同值产生多种扫描次序。以此方式,视频编码器20和视频解码器30可以在相对于固定扫描次序(例如z字形、水平和垂直扫描次序)制定扫描次序方面提供至少一些灵活性。另外,扫描次序的基于函数的定义可以减少存储用于产生扫描次序的信息所需的存储器的量。代替于存储每一系数在扫描次序中的位置,在一些实例中,视频编码器20和视频解码器30可以简单地存储用于所述函数的指令和/或数据,并且根据所述函数和指定用于所述函数的参数而在运行中产生所述扫描次序。图6是说明在实例变换单元(TU)中用于变换系数的z字形扫描次序的图。在图6中,字母a-p指示系数的标识,并且数字1-15指示扫描此类系数的次序。如图6中所示,为了支持经量化变换系数的块的熵译码,z字形扫描次序总体上以对角线来回模式从块的左上角前进到右下角,以将变换系数的2D阵列转换成变换系数的ID向量。针对DCT,有较高概率非零系数将朝向变换单元的左上角(即,在低频区中)定位并且零值系数将朝向右下角(即,在高频区中)定位(尤其是在量化之后)。因此,如图6所说明的z字形扫描增加了将非零系数在系数的串行化串的开头分组在一起的概率。图7是说明在实例变换单元中用于变换系数的水平扫描次序的图。在图7中,字母a-p指示系数的标识,并且数字1-15指示扫描此类系数的次序。如图7中所示,水平扫描次序总体上从左上角沿顶行前进到右上角,并且接着继续在从TU的顶部延伸到底部的每一连续行中从左向右扫描。图8是说明在实例变换单元中用于变换系数的垂直扫描次序的图。在图8中,字母a-p指示系数的标识,并且数字1-15指示扫描此类系数的次序。如图8中所示,垂直扫描次序总体上从左上角沿左侧列前进到左下角,并且接着继续在从TU的左侧延伸到右侧的每一连续行中从上到下扫描。在图6-8的实例中,向变换系数的4x4块应用z字形、水平和垂直扫描次序。为了说明而展示了具有变换系数的4行和4列的4x4块。在一些实例中,变换单元可以更大得多。举例来说,变换单元可以是8x8、16xl6或更大的大小。图6、7和8中的每一正方形表示十六个变换系数中的一者,并且每一正方形内部的数字(例如,0、1、2等)展示了变换系数在扫描次序中的位置。换句话说,正方形中的数字的升序展示了扫描系数以形成系数的串行化序列的次序。根据本发明的实例,可以通过函数有效地定义用于扫描变换系数的块中的变换系数(例如,为了对例如层级和正负号等变换系数信息进行译码)的扫描次序。在一些实例中,如上文所论述,视频编码器20可以指定函数参数的值以根据所述函数定义扫描次序,并且向视频解码器30发信号通知所述值。使用函数可以在制定扫描次序方面提供更大复杂度和灵活性。可以使用具有特定参数的函数来产生用于不同大小的变换块(即,变换单元)的变换系数扫描次序。在一个实例中,所述函数参数可包括变换块大小、扫描定向和扫描定向强度中的一者或一者以上。在给定了这些参数的值的情况下,可以由编码器和解码器使用所述函数产生扫描。出于说明的目的作为用于构造扫描次序的函数的一实例描述使用这些参数的函数。然而,具有不同参数的其它函数也可以是有用的。图9是说明具有水平扫 描定向的扫描次序的图。在图9中,字母a-p指示系数的标识,并且数字1-15指示扫描此类系数的次序。扫描次序可以具有特定定向(例如水平或垂直)和指示扫描次序朝向所述定向偏置的程度的定向强度。在图9的实例中,扫描次序朝向水平定向强烈偏置,因为每一行被全部扫描,即,先扫描行中的所有系数,然后扫描前进到下一行。明确地说,为了说明而使用4x4TU,所述扫描次序跨越最上部行前进,以0-3的次序从左向右扫描所有位置,并且接着继续以4-7的次序从左向右扫描第二行中的所有位置,接着继续以8-11的次序从左向右扫描第三行中的所有位置,并且接着以12-15的次序从左向右扫描第四行中的所有位置。图10是说明具有比图9的扫描次序小的水平扫描定向强度的扫描次序的图。在图10中,字母a-p指示系数的标识,并且数字1-15指示扫描此类系数的次序。与图9的扫描次序相同,图10的扫描次序具有水平定向。因此,用于图9和图10的扫描次序的扫描定向参数两者都是水平的。然而,水平定向强度相对于图9的水平定向强度减少。换句话说,图9中的扫描次序比图10中的扫描次序朝向水平方向具有更强定向。如上文所论述,根据图9中的扫描次序,先对当前行中的系数全部进行译码,然后对下方的下一行处的任何系数进行译码。明确地说,先连续扫描每一行中的所有系数(例如,图9中的系数0、1、2、3),然后扫描下方行中的任何系数。然而,根据图10中的扫描次序,先对后面的行处的一些系数进行译码然后对当前(即较早行)处的所有系数进行译码。举例来说,在图10中,先在扫描次序位置3处扫描来自第二行的第一(最左侧)系数e,然后在扫描次序位置4处扫描第一(最顶部)行中的最后(最右侧)系数d。此外,先在扫描次序位置6处扫描第三行中的第一系数,然后分别在扫描次序位置7和10处在第二行中扫描第三和第四系数(从左向右)。还在扫描次序位置8处扫描第三行中的第二系数j,并且在扫描次序位置9处扫描第四行中的第一系数m,然后在扫描次序位置10处扫描第二行中的最后系数h。从图10中所呈现的数字看,其余的扫描次序显而易见。虽然图10中的扫描次序也偏向于水平方向,但其定向并没有图9中的扫描次序的定向那么强。

在图9中,定向参数值是水平的,并且所述定向强度参数值可以表征为“高”或呈现为数值等级上的较高或最高数字。在图10中,定向参数值是水平的,并且所述定向强度参数值可以表征为“中等”或表征为数值等级上的中等数字。为了由视频编码器20发信号通知,可以通过一位旗标(例如,I表示水平且O表示垂直,或反之亦然)来表示定向参数值的水平或垂直指示。可以(举例来说)通过在位流中发信号通知的数值(明确地或作为对于多个数值中的一者的索引)(例如,在视频解码器30处存储的表或其它数据结构中)来表示定向强度参数值的强度。上面的图9和10中的说明描述了水平方向定向的扫描次序的情况。如果关于行的论述改为应用于在4x4TU中从左向右延伸的列,贝U基本上相同的描述还可应用于垂直方向定向的扫描次序。所以,为简洁起见,未说明其中垂直定向的扫描次序具有不同垂直定向强度的情况,但是通过本发明中描述的技术可以解决此类情况。总的来说,变换系数块的扫描可以从左上角位置开始。根据本发明,如果扫描定向参数指示扫描次序是水平定向的,那么扫描次序沿行方向水平地继续。否则,如果所述定向是垂直的,则扫描次序沿列方向垂直地继续。另外,基于定向强度参数,扫描次序函数可以经配置以使得可以针对水平定向为每一行(或针对垂直定向为每一列)导出一个阈值。在以下描述中,将阐述水平定向的扫描的情况,但是通过简单地用“列”替换“行”,相同描述也可应用于垂直定向的扫描。从定向强度参数导出的阈值可用于指定应先对当前行处的多少个系数进行译码然后才对下一行处的系数进行译码。在达到系数的阈值数目之后,可以用交错方式对当前行和下一行处的系数的扫描进行排序。图11是说明基于扫描定向和扫描定向强度参数定义的基于函数的扫描次序的实例的图。在图11中,字母a-p指示系数的标识,并且数字1-15指示扫描此类系数的次序。在图11的实例中,函数经配置以基于扫描定向参数来确定扫描方向,并且基于定向强度参数值产生阈值以确定精确的扫描次序。在一些实例中,可以针对不同块大小(例如,TU大小)选择不同扫描次序函数。替代地,给定扫描次序函数可以应用所述块大小来调整扫描次序。同样,为了说明的目的展示了 4x4TU,但关于向较大TU应用基于函数的扫描次序定义没有限制。对于图11的实例,假设扫描定向是水平的,并且定向强度参数值被指定为4的值。基于定向强度参数值,视频编码器20或视频解码器30可以根据所述函数为每一行导出一个阈值。在此实例中,所述函数经配置使得第一(顶)行阈值被设置成等于定向强度值,即,等于4。然后,根据所述函数,可以在TU中从上到下为接下来的行中的每一者的阈值指派逐渐减小的值。在其它实例中,可以根据块大小(例如,TU大小)或根据块大小和定向强度的组合作为对扫描次序函数的输入·参数来设置阈值。另外,定向确定扫描的总体方向,并且可以充当对扫描次序函数的另一输入参数。出于说明的目的,将参看图11描述根据定向强度参数调整阈值。在图11的实例中,所述阈值逐行(即,针对顶行下方的每一连续行)减小I。然而,应注意用于指派每一行的阈值的其它函数也是可能的。举例来说,所述函数可以向每一行指派相同阈值,或指定阈值应针对每一行减小2等等。此外,根据定义不同扫描方案的函数,针对连续行的阈值减小可以是线性或非线性的。如上文所提及,根据给定扫描次序函数,针对每一行导出的阈值可用于指定应当先扫描当前行处的多少个系数然后才扫描下一行处的系数。同样,阈值可以是定向强度参数的值的函数。在此实例中,在对于给定当前行达到阈值(即,在当前行中已经扫描了等于阈值的数目的系数)之后,以交错方式扫描当前行和下一行处的系数。在图11中,将用于第一、第二、第三和第四行的阈值分别编索引为Thres [O]、Thres [I]、Thres [2]和Thres [3]。在图11中展示的实例中,阈值随着从行到行的扫描的进展可以变化。第一行的阈值等于4,但第二、第三和第四行的阈值分别逐渐减小成值3、2和I。在第一行的阈值为4的情况下,要先扫描第一行中的所有4个系数a、b、c和d,然后扫描第一行下方的其它行处的任何系数。图11中的第一行中的这些系数a、b、c和d以扫描次序编号为0、1、2、3。对于第二行,阈值是3。因此,先对第二行处的前三个系数进行译码,然后对随后行中的任何系数进行译码,并且将所述系数以扫描次序编号为4、5、6。在仅扫描用于第二行的这三个系数e、f和g(根据由第二行的阈值3设置的限制)之后,扫描前进到第三行。明确地说,第三行中的第一系数i被译码,并且以扫描次序被编号为7。因为第三行的阈值是2并且此时在第三行中存在两个系数尚未译码,所以扫描回到第二行,并且对下一系数(即,第二行中的第四系数h)进行译码,并且将此系数以扫描次序编号为数字8,如图11中所示。随后,在已经对第二行中的所有系数完成扫描后,所述函数指定扫描去往第三行,并且对此行处的下一系数(即,第三行中的第二系数j)进行译码。此扫描系数j以扫描次序被编号为9,如图11所指示。在此点,第三行处已经有两个系数经过译码(第三行中在扫描次序位置7处的第一系数i和第三行中在扫描次序位置9处的第二系数j)。基于第三行的2的阈值,扫描去往第四行处的第一系数m。第四行中的第一系数m的位置以扫描次序被编号为10。从此位置继续,在第四行的阈值给定为I的情况下,扫描回到第三行。明确地说,如图11中所示,扫描以交错的交替方式在第三行与第四行之间来回,在扫描次序位置11处扫描第三行中的第三系数k,然后在扫描次序位置12处扫描第四行中的第二系数n,然后返回到第三行以在扫描次序位置13处扫描第四系数1,并且然后在扫描次序位置14和15处扫描第四行中的第三和第四系数o、p。在图11的实例中,所述扫描未前进到后面的行,直到在先前行中已经扫描了等于先前行的阈值的数目的变换系数为止。根据产生图11的扫描次序的函数,所述阈值从行到行可以变化,并且从上到下以增量减小。图12是说明基于扫描定向和扫描定向强度参数定义的基于函数的扫描次序的另一实例的图。在图12中,字母a-p指示系数的标识,并且数字1-15指示扫描此类系数的次序。基于上文所描述的用于与图11的扫描次序相关联的函数的规则,可以看到用于每一行(或列)的阈值确定所得扫描次序模式。图12提供用于每一行的阈值设置成3的固定值的替代的实例。换句话说,在图12中,每一行具有相同阈值3,可以基于定向强度参数来确定所述阈值。在图12的实例中,定向强度参数值是3,并且扫描次序函数应用定向强度参数值以产生用于TU的每一行的固定阈值。

在此情况下,使用固定阈值,扫描次序在扫描次序位置O、I和2处继续扫描第一行中的前三个系数a、b、c,因此满足用于第一行的阈值3。于是,先扫描扫描次序位置3处的第二行中的第一系数e,然后在扫描次序位置4处扫描第一行中的第四系数d。扫描接着返回到第二行以扫描第二行中的第二和第三系数f、g,在此点满足用于第二行的3的阈值。在此点,满足用于第二行的3的阈值。所以,扫描前进到下一行,即,第三行,并且扫描第一系数i。扫描接着返回到第二行,并且扫描第四系数h。所述过程以类似方式继续通过第三和第四行。在每一情况下,扫描直到已经在先前行中扫描了三个变换系数(与适用于所述行的阈值一致)才继续到后面的行。扫描引起变换块中的系数的2D阵列向系数的ID阵列(S卩,向量)的转换。同样,在图12的实例中,针对所有行,阈值固定在3。在图11和12的实例中,基于扫描定向强度参数来确定用于指导扫描次序的阈值。作为对使用定向强度作为参数的一个替代方案,函数还可直接采用阈值阵列作为参数来产生扫描次序。因此,视频编码器20可以为函数或函数的阈值阵列指定定向强度参数。在每一情况下,函数可以为每一行设置阈值来指导扫描。使用阈值阵列作为用于扫描次序函数的输入参数的方法可以在基于上文所描述的规则产生扫描次序方面提供更多自由度。然而,实际上发现,基于定向强度值,用于每一行(或列)的逐渐减小的阈值可能在产生用于视频译码的有效扫描次序方面足够好。
图11和12中的实例展示了 4x4块的情况。然而,显然此概念可以直接扩展到其它块大小,例如8χ8、16χ16、32χ32。在这些情况下,块大小可以是用于选择多个可供使用的扫描次序函数当中的一个扫描次序函数的参数中的一者,或者作为对扫描次序函数的输入,因为所述块大小确定了有待扫描的系数的数目,并且可用于例如配合定向强度参数值来设置阈值。在视频编码器20处,图11中展示的扫描次序将系数的2D阵列(在严格地水平扫描或光栅扫描的情况下排序为abcdefghijklmnop)重新布置成排序为abcdefgihjmknlop的ID阵列。图12中展示的扫描次序(在视频编码器20处)将把系数的2D阵列(在严格地水平扫描的情况下排序为abcdefghijklmnop)重新布置成排序为abcedfgihjkmlnop的ID阵列。在图11和12的实例中,视频解码器30将以相反方式应用扫描次序以将ID阵列扫描成2D阵列。针对图12,举例来说,视频解码器30将把用于每一行的阈值3和第一扫描系数abc应用到第一行中,然后将e扫描到第二行中,然后将下一系数d扫描到第一行中,然后将系数f和g扫描到第二行中,然后将系数i扫描到第三行中,然后将系数h扫描到第二行中,依此类推。因此,扫描次序函数基于扫描定向强度产生的阈值可以用类似方式由视频编码器20应用于2D到ID扫描,并且由视频解码器30应用于ID到2D扫描。在任一情况下,根据函数和相关联的参数产生的扫描次序控制着视频编码器或视频解码器(按照合适)对系数的扫描。下文是本 发明中说明的基于函数的扫描次序技术的C代码实施方案的实例。在所述函数参数当中,orderlD是扫描次序阵列,其存储来自2D变换块的有待扫描的系数的扫描次序位置。参数blkSize是变换块的大小,S卩,在形成NxN块的行和列的数目N方面。参数dir是扫描定向,例如,I指示水平且O指示垂直。参数w是定向强度参数。在函数内部,阵列iThres[]保存变换块的每一行或列的导出的阈值。函数Min O返回两个输入值中的
较小一者。
权利要求
1.一种对视频数据进行译码的方法,所述方法包含: 至少部分地基于预定义函数和所述函数的一个或一个以上参数值来定义与残余视频数据块相关联的变换系数的扫描次序;以及 根据所述扫描次序扫描所述变换系数以供在视频译码过程中使用。
2.根据权利要求1所述的方法,其中所述变换系数驻留于二维阵列中,且扫描所述变换系数包含根据所述扫描次序在视频编码器中将所述变换系数扫描为一维阵列。
3.根据权利要求2所述的方法,其进一步包含在经编码视频中提供所述一维阵列中的所述经扫描变换系数,且发信号通知所述函数的所述一个或一个以上参数值以定义所述扫描次序。
4.根据权利要求1所述的方法,其中所述变换系数驻留于一维阵列中,且扫描所述变换系数包含根据所述扫描次序在视频解码器中将所述变换系数扫描为二维阵列。
5.根据权利要 求4所述的方法,其进一步包含在经编码视频中接收所述一维阵列中的所述经扫描变换系数,以及指示用以定义所述扫描次序的所述函数的所述一个或一个以上参数值的信令。
6.根据权利要求4所述的方法,其进一步包含在经编码视频中接收所述一维阵列中的所述经扫描变换系数,且推断所述函数的一个或一个以上参数值以定义所述扫描次序。
7.根据权利要求1所述的方法,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述残余数据块的大小。
8.根据权利要求1所述的方法,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述扫描次序的定向。
9.根据权利要求8所述的方法,其中所述一个或一个以上参数值进一步包括所述扫描次序的定向强度。
10.根据权利要求9所述的方法,其中所述定向包括水平扫描定向和垂直扫描定向中的一者。
11.根据权利要求1所述的方法,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述残余数据块的大小、所述扫描次序的定向以及所述扫描次序的定向强度。
12.根据权利要求1所述的方法,其中所述一个或一个以上参数值包括所述扫描次序的定向强度,其中至少部分地基于预定义函数定义扫描次序包含至少部分地基于所述定向强度确定阈值,且其中定义所述扫描次序包含基于所述阈值而定义在扫描关于所述块的稍后行或列将扫描的变换系数之前关于所述块的多个行或列中的每一者将扫描的所述变换系数的数目。
13.根据权利要求12所述的方法,其进一步包含针对在所述块中扫描的所述行或列中的每一连续行或列将所述阈值设定于固定值。
14.根据权利要求12所述的方法,其进一步包含相对于在所述块中扫描的所述行或列中的前一者的所述阈值的值而减小在所述块中扫描的所述行或列中的每一连续行或列的所述阈值的值。
15.根据权利要求12所述的方法,其中根据所述扫描次序扫描所述变换系数包含: 关于所述块的第一行或列扫描等于所述阈值的数目个所述系数; 如果所述第一行或列中的变换系数的所述数目大于所述阈值,则以与关于所述第一行或列的未经扫描系数交替的方式扫描关于第二行或列的所述系数中的一者或一者以上;以及 在扫描关于第三行或列的未经扫描系数之前减小所述第二行或列的所述阈值且扫描关于所述第二行或列的等于所述经减小阈值的数目个未经扫描系数。
16.根据权利要求1所述的方法,其中根据所述扫描次序扫描所述变换系数包含以所述扫描次序对所述变换系数的层级或正负号中的至少一者进行译码。
17.一种用于对视频数据进行译码的设备,所述设备包含视频译码器,所述视频译码器经配置以: 至少部分地基于预定义函数和所述函数的一个或一个以上参数值来定义与残余视频数据块相关联的变换系数的扫描次序,以及 根据所述扫描次序扫描所述变换系数以供在视频译码过程中使用。
18.根据权利要求17所述的设备,其中所述变换系数驻留于二维阵列中,且所述视频译码器包含视频编码器,所述视频编码器经配置以根据所述扫描次序将所述变换系数扫描为一维阵列。
19.根据权利要求18所述的设备,其中所述视频编码器经配置以在经编码视频中提供所述一维阵列中的所述经 扫描变换系数,且发信号通知所述函数的所述一个或一个以上参数值以定义所述扫描次序。
20.根据权利要求17所述的设备,其中所述变换系数驻留于一维阵列中,且所述视频译码器包含视频解码器,所述视频解码器经配置以根据所述扫描次序将所述变换系数扫描为二维阵列。
21.根据权利要求20所述的设备,其中所述视频解码器经配置以在经编码视频中接收所述一维阵列中的所述经扫描变换系数,以及指示用以定义所述扫描次序的所述函数的所述一个或一个以上参数值的信令。
22.根据权利要求20所述的设备,其中所述视频解码器经配置以在经编码视频中接收所述一维阵列中的所述经扫描变换系数,且推断所述函数的一个或一个以上参数值以定义所述扫描次序。
23.根据权利要求17所述的设备,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述残余数据块的大小。
24.根据权利要求17所述的设备,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述扫描次序的定向。
25.根据权利要求24所述的设备,其中所述一个或一个以上参数值进一步包括所述扫描次序的定向强度。
26.根据权利要求24所述的设备,其中所述定向包括水平扫描定向和垂直扫描定向中的一者。
27.根据权利要求17所述的设备,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述残余数据块的大小、所述扫描次序的定向以及所述扫描次序的定向强度。
28.根据权利要求17所述的设备,其中所述一个或一个以上参数值包括所述扫描次序的定向强度,其中所述译码单元经配置以至少部分地基于所述定向强度确定阈值,且基于所述阈值而定义在扫描关于所述块的稍后行或列将扫描的变换系数之前关于所述块的多个行或列中的每一者将扫描的所述变换系数的数目。
29.根据权利要求28所述的设备,其中所述视频译码器经配置以针对在所述块中扫描的所述行或列中的每一连续行或列将所述阈值设定于固定值。
30.根据权利要求28所述的设备,其中所述视频译码器经配置以相对于在所述块中扫描的所述行或列中的前一者的所述阈值的值而减小在所述块中扫描的所述行或列中的每一连续的所述阈值的值。
31.根据权利要求28所述的设备,其中所述视频译码器经配置以: 关于所述块的第一行或列扫描等于所述阈值的数目个所述系数; 如果所述第一行或列中的变换系数的所述数目大于所述阈值,则以与关于所述第一行或列的未经扫描系数交替的 方式扫描关于第二行或列的所述系数中的一者或一者以上;以及 在扫描关于第三行或列的未经扫描系数之前减小所述第二行或列的所述阈值且扫描等于所述经减小阈值的数目个关于所述第二行或列的未经扫描系数。
32.根据权利要求28所述的设备,其中所述视频译码器包含视频解码器。
33.根据权利要求28所述的设备,其中所述视频译码器包含视频编码器。
34.根据权利要求17所述的设备,其中所述视频译码器经配置以用所述扫描次序对所述变换系数的层级或正负号中的至少一者进行译码。
35.一种用于对视频数据进行译码的设备,所述设备包含: 用于至少部分地基于预定义函数和所述函数的一个或一个以上参数值来定义与残余视频数据块相关联的变换系数的扫描次序的装置;以及 用于根据所述扫描次序扫描所述变换系数以供在视频译码过程中使用的装置。
36.根据权利要求35所述的设备,其中所述变换系数驻留于二维阵列中,且所述用于扫描所述变换系数的装置包含用于根据所述扫描次序在视频编码器中将所述变换系数扫描为一维阵列的装置。
37.根据权利要求36所述的设备,其进一步包含用于在经编码视频中提供所述一维阵列中的所述经扫描变换系数且发信号通知所述函数的所述一个或一个以上参数值以定义所述扫描次序的装置。
38.根据权利要求35所述的设备,其中所述变换系数驻留于一维阵列中,且所述用于扫描所述变换系数的装置包含用于根据所述扫描次序在视频解码器中将所述变换系数扫描为二维阵列的装置。
39.根据权利要求38所述的设备,其进一步包含用于在经编码视频中接收所述一维阵列中的所述经扫描变换系数以及指示用以定义所述扫描次序的所述函数的所述一个或一个以上参数值的信令的装置。
40.根据权利要求35所述的设备,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述扫描次序的定向和所述扫描次序的定向强度。
41.根据权利要求40所述的设备,其中所述定向包括水平扫描定向和垂直扫描定向中的一者。
42.根据权利要求35所述的设备,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述残余数据块的大小、所述扫描次序的定向以及所述扫描次序的定向强度。
43.根据权利要求35所述的设备,其中所述一个或一个以上参数值包括所述扫描次序的定向强度,其中所述用于至少部分地基于预定义函数定义扫描次序的装置包含用于至少部分地基于所述定向强度确定阈值的装置,且其中所述用于定义所述扫描次序的装置包含用于基于所述阈值而定义在扫描关于所述块的稍后行或列将扫描的变换系数之前关于所述块的多个行或列中的每一者将扫描的所述变换系数的数目的装置。
44.根据权利要求43所述的设备,其进一步包含用于相对于在所述块中扫描的所述行或列中的前一者的所述阈值的值而减小在所述块中扫描的所述行或列中的每一连续行或列的所述阈值的值的装置。
45.根据权利要求43所述的设备,其中所述用于根据所述扫描次序扫描所述变换系数的装置包含: 用于关于所述块的第一行或列扫 描等于所述阈值的数目个所述系数的装置; 用于在所述第一行或列中的所述变换系数的数目大于所述阈值的情况下以与关于所述第一行或列的未经扫描系数交替的方式扫描关于第二行或列的所述系数中的一者或一者以上的装置;以及 用于在扫描关于第三行或列的未经扫描系数之前减小所述第二行或列的所述阈值且扫描等于所述经减小阈值的数目个关于所述第二行或列的未经扫描系数的装置。
46.一种计算机可读媒体,其包含用以致使视频译码器进行以下操作的指令: 至少部分地基于预定义函数和所述函数的一个或一个以上参数值来定义与残余视频数据块相关联的变换系数的扫描次序;以及 根据所述扫描次序扫描所述变换系数以供在视频译码过程中使用。
47.根据权利要求46所述的计算机可读媒体,其中所述变换系数驻留于二维阵列中,且所述指令致使所述视频译码器根据所述扫描次序在视频编码器中将所述变换系数扫描为一维阵列,且其中所述指令致使所述视频译码器在经编码视频中提供所述一维阵列中的所述经扫描变换系数且发信号通知所述函数的所述一个或一个以上参数值以定义所述扫描次序。
48.根据权利要求46所述的计算机可读媒体,其中所述变换系数驻留于一维阵列中,且所述指令致使所述视频译码器根据所述扫描次序在视频解码器中将所述变换系数扫描为二维阵列,且其中所述指令致使所述视频译码器在经编码视频中接收所述一维阵列中的所述经扫描变换系数以及指示用以定义所述扫描次序的所述函数的所述一个或一个以上参数值的信令。
49.根据权利要求46所述的计算机可读媒体,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述残余数据块的大小。
50.根据权利要求46所述的计算机可读媒体,其中所述残余视频数据块包括指示经译码视频数据块和预测视频数据块的像素值之间的差的残余值,所述变换系数包括由应用于所述残余视频数据块的变换产生的系数,且所述一个或一个以上参数值包括所述扫描次序的定向,其中所述一个或一个以上参数值进一步包括所述扫描次序的定向强度,且其中所述定向包括水平扫描定 向和垂直扫描定向中的一者。
全文摘要
视频译码装置和方法使用扫描次序的基于函数的定义来扫描与残余视频数据块相关联的变换系数。视频译码器可基于预定义函数和一个或一个以上参数值来定义系数的扫描次序。视频编码器可使用基于函数的扫描次序来扫描系数的二维阵列以产生系数的一维阵列供在产生经编码视频数据时使用。视频编码器可向视频解码器发信号通知所述参数,或所述视频解码器可推断所述参数中的一者或一者以上。视频解码器可使用所述基于函数的扫描次序来扫描系数的一维阵列以再生系数的二维阵列供在产生经解码视频数据时使用。在每一情况下,所述扫描次序可根据参数值而变化,所述参数值可包括块大小、定向和/或定向强度。
文档编号H04N7/26GK103238326SQ201180058172
公开日2013年8月7日 申请日期2011年11月17日 优先权日2010年12月3日
发明者王翔林, 拉詹·L·乔希, 穆哈默德·扎伊·科班, 马尔塔·卡切维奇 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1