确定用于变换系数的二进制码字的方法

文档序号:7993085阅读:284来源:国知局
确定用于变换系数的二进制码字的方法
【专利摘要】提供了一种创建用于变换系数的级别参数更新码字的系统,变换系数用于涉及在高效率视频编译(HEVC)系统中被分割成编译单元(CU)的变换单元(TU)。该系统提供码字的二值化并且去除不必要的操作以减少系统复杂度和增加压缩性能。该系统生成涉及TU的变换系数,并且通过提供设置成初始值0的参数变量(cRiceParam)开始。参数变量然后基于参数变量的当前值和符号的值被转换成二进制码字,并且然后在已经将每个符号转换之后利用新当前值更新。参考表值可以提供更新,或者根据组合逻辑可以提供这些值。
【专利说明】确定用于变换系数的二进制码字的方法
[0001]相关申请的交叉引用
[0002]本申请根据35U.S.C.§ 119(e)要求以下优先权:在2011年11月8日提交的在先提交美国专利临时申请系列N0.61/556,826 ;2011年11月26日提交的在先提交美国临时申请系列N0.61/563,774;以及在2011年11月28日提交的在先提交的美国专利临时申请系列N0.61/564,248,其全部内容通过引用合并于此。
【技术领域】
[0003]本公开涉及视频压缩领域,具体而言,涉及使用采用块处理的高效视频编译(HEVC)的视频压缩。
【背景技术】
[0004]图1描述包括可以用于发射和接收HEVC数据的编译系统110和解码系统140的内容分布系统100。在一些实施例中,编译系统110可以包括输入接口 130、控制器111、计数器112、帧存储器113、编码单元114、发射器缓冲器115和输出接口 135。解码系统140可以包括接收器缓冲器150、解码单元151、帧存储器152和控制器153。编译系统110和解码系统140经由可以承载压缩比特流105的传输路径,可以彼此被耦合。编译系统110的控制器111在接收器缓冲器150的容量的基础上可以控制将被发射的数据量,并且可以包括诸如每个时间单位的数目量的其他参数。控制器111可以控制编码单元114以防止解码系统140的接收信号解码操作的失败的发生。控制器111可以是处理器或者通过非限制性示例的方式包括具有处理器的微计算机、随机存取存储器和只读存储器。
[0005]通过非限制性示例,从内容提供商供应的源图片120可以包括含有视频序列中的源图片的帧的视频序列。源图片120可以未被压缩或被压缩。如果源图片120未被压缩,则编译系统110可以具有编码功能。如果源图片120被压缩,则编译系统110可以具有代码转换功能。利用控制器111可以从源图片推导出编译单元。帧存储器113可以具有第一区域和第二区域,第一区域可以用于存储来自源图片120的流入帧,第二区域可以用于读出这些帧并且将其输出到编码单元114。控制器111可以将区域切换控制信号123输出到帧存储器113。区域切换控制信号123可以指示将利用第一区域还是第二区域。
[0006]控制器111可以将编码控制信号124输出到编码单元114。编码控制信号124可以使得编码单元114开始编码操作,诸如基于源图片准备编译单元。响应于来自控制器111的编码控制信号124,编码单元114可以开始将被准备的编译单元读出到高效编码处理,诸如预测编译处理或变换编译处理,其基于与编译单元相关联的源图片处理生成视频压缩数据的准备编译单元。
[0007]编码单元114可以在包括视频分组的封装基本流(PES)中封装生成的视频压缩数据。编码单元114可以使用控制信息和程序时间戳(PTS)将视频分组映射到编码视频信号122,并且编码视频信号122可以被发射到发射器缓冲器115。
[0008]包括生成的视频压缩数据的编码视频信号122可以被存储在发射器缓冲器115中。信息量计数器112可以递增,以指示在发射器缓冲器115中的总数据量。因为数据被检索并且从缓冲器移除,所以计数器112可以递减以反映发射器缓冲器115中的数据量。可以将被占的区域信息信号126发射到计数器112,以指示来自编码单元114的数据是否已经被添加或从发射的缓冲器115移除,所以计数器112可以递增或递减。控制器111在可以被通信的被占区域信息126的基础上可以控制由编码单元114产生的视频分组的生成,以便预见、避免、预防和/或检测在发射器缓冲器115中发生的上溢和下溢。
[0009]响应于由控制器111生成和输出的预置信号128,可以重置信息量计数器112。在重置信息计数器112之后,其能对由编码单元114输出的数据进行计数并且获得已经生成的视频压缩数据和/或视频分组的量。信息量计数器112可以给控制器111供应代表所获得的信息量的信息量信号129。控制器111可以控制编码单元114,使得在发射器缓冲器115处不存在上溢。
[0010]在一些实施例中,解码系统140可以包括输入接口 170、接收器缓冲器150、控制器153、帧存储器152、解码单元151和输出接口 175。解码系统140的接收器缓冲器150可以临时存储压缩比特流105,包括基于来自源图片120的源图片的接收到的视频压缩数据和视频分组。解码系统140可以读取控制信息和与接收到的数据中的视频分组相关联的呈现时间戳信息,并且输出可以应用到控制器153的帧数信号163。控制器153可以以预定间隔监督这些帧的计数数目。通过非限制示例,每次解码单元151完成解码操作,控制器153可以监督这些帧的计数数目。
[0011]在一些实施例中,当帧数信号163指示接收器缓冲器150处于预定容量时,控制器153可以将解码开始信号164输出到解码单元151。当帧数信号163指示接收器缓冲器150处于小于预定容量时,控制器153可以等待所计数数目的帧变得等于预定量的情形的发生。当该情形发生时,控制器153可以输出解码开始信号164。通过非限制性示例,当帧数信号163指示接收器缓冲器150处于预定容量时,控制器153可以输出解码开始信号164。基于与编码视频分组相关联的呈现时间戳,以单调顺序(即增加或减少)可以解码编码的视频分组和视频压缩数据。
[0012]响应于解码开始信号164,解码单元151将合计成与帧相关联的数据和与关联来自接收器缓冲器150的视频分组的图片相关联的压缩视频数据解码。解码单元151可以将解码视频信号162写入帧存储器152。帧存储器152可以具有该解码视频信号被写入的第一区域,和用于将解码图片160读出到输出接口 175的第二区域。
[0013]在各种实施例中,编译系统110可以被合并或者以其他方式与在头端的转码器或编码装置相关联,并且解码系统140可以被合并或者以其他方式与诸如移动设备、机顶盒或转码器的下游设备相关联。
[0014]可以分别或一起利用编译系统110和解码系统140,以编码和解码根据各种编译格式的视频数据,包括高效视频编译(HEVC)。HEVC是基于块的混合空间和时间预测编译方案。在HEVC中,诸如视频帧的输入图像可以被划分成称为最大编译单元(LCU) 200的方块,如图2中所示。IXU200每个可以是与128x128像素相同大,不同于将输入图像分成16x16像素的宏块的其他编译方案。如图3中所示,通过将IXU200分裂成四个编译单元(⑶)202可以分割每个IXU200。⑶202可以是每个为IXU200的四分之一大小的方块。每个⑶200可以进一步分成每个为较大⑶202的四分之一的四个较小⑶202。通过非限制性示例,在图3中所描述的IXU200的右上角的⑶202可以被划分成四个更小的⑶202。在一些实施例中,可以将这些更小的⑶202进一步分成甚至更小尺寸的四分之一,并且将⑶202分成更小⑶202的该处理可以完成多次。
[0015]利用越来越高的视频数据密度,所需要的是进一步改善编译CU的方式,使得可以快速地、有效率地和精确地编码和解码大输入图像和/或宏块。

【发明内容】

[0016]本发明提供了一种用于HEVC的改进的系统。在用于该系统的实施例中,提供了以有效方式确定用于变换系数的二进制码字的方法。在编码输入图像和/或宏块中,使用作为CU202的细分的变换单元(TU)内的变换系数的码字。
[0017]在一个实施例中,提供了一种方法,该方法包括:提供含有变换系数的一个或多个子集的变换单元,每个变换系数具有量化值;通过从变换系数的量化值减去阈值,确定用于每个变换系数的符号,所述变换系数具有等于或大于阈值的量化值;提供设置成初始值O的参数变量;基于参数变量的当前值和符号的值将每个符号转换成二进制码字;以及在已经转换每个符号之后,利用新当前值更新参数变量的值,新当前值至少部分地基于当前或先前子集中的参数变量的最后值和最后被转换的符号的值。
[0018]在另一个实施例中,本发明包括确定用于变换系数的二进制码字的方法,其使用查找表以确定变换系数。该方法包括:提供包括变换系数的一个或多个子集的变换单元,每个变换系数具有量化值;通过从变换系数的量化值减去阈值,确定用于每个变换系数的符号,所述变换系数具有等于或大于阈值的量化值;提供设置成初始值O的参数变量;基于参数变量的当前值和符号的值,将每个符号转换成二进制码字;基于参数变量的最后值和最后被转换的符号的值,从表中查找新当前值;以及利用新当前值取代参数变量的值。
[0019]在另一个实施例中,本发明包括确定用于变换系数的二进制码字的方法,其使用利用逻辑而不是需要查找表来执行的一个或多个数学条件。该方法包括:提供包括变换系数的一个或多个子集的变换单元,每个变换系数具有量化值;通过从变换系数的量化值减去阈值,确定用于每个变换系数的符号,所述变换系数具有等于或大于阈值的量化值;提供设置成初始值O的参数变量;基于参数变量的当前值和符号的值,将每个符号转换成二进制码字;确定参数变量的最后值和最后被转化的符号的值是否一起满足一个或多个条件;并且将整数I与用于满足一个或多个条件的每个的参数变量的最后值算术地相加。
【专利附图】

【附图说明】
[0020]在附图的帮助下进一步解释本发明的细节,在附图中:
[0021]图1描述内容分布系统的实施例。
[0022]图2描述将输入图像划成大编译单元的实施例。
[0023]图3描述将大编译单元划分成编译单元的实施例。
[0024]图4描述被划分成编译单元的大编译单元的四叉树表示。
[0025]图5描述编译单元内的预测单元的可能示例性布置。
[0026]图6描述用于编码和/或解码预测单元的实施例的框图。
[0027]图7描述被划分成预测单元和变换单元的编译单元的示例性实施例。[0028]图8描述被划分成变换单元的编译单元的四叉树表示的示例性实施例。
[0029]图9描述执行基于上下文的自适应二进制算术编译的方法的实施例。
[0030]图10描述重要图的示例性实施例。
[0031]图11描述变换单元内变换系数的逆之字形(zig-zag)扫描和变换系数的子集的实施例。
[0032]图12描述获取用于变换系数的系数级和符号的方法的实施例。
[0033]图13描述子集中变换系数的扫描顺序的实施例。
[0034]图14描述用于关联的参数变量的最大符号值的示例性实施例。
[0035]图15描述基于参数变量将这些符号转换成二进制码字的表的示例性实施例。
[0036]图16描述用于编译符号和更新参数变量的方法的实施例。
[0037]图17描述具有2、4、13、11和10的条件符号阈值的低复杂度更新表的示例性实施例。
[0038]图18描述具有3、6和12的条件符号阈值的低复杂度更新表的示例性实施例。
[0039]图19描述具有2、5和11的条件符号阈值的低复杂度更新表的示例性实施例。
[0040]图20描述用于2、4、13、11和10的条件符号阈值的条件的组合逻辑表不的不例性实施例。
[0041]图21描述用于3、6和12的条件符号阈值的条件的组合逻辑表示的示例性实施例。
[0042]图22描述基于2、5和11的条件符号阈值可以用于更新参数变量的示例性代码。
[0043]图23描述具有A、B和C的条件符号阈值的低复杂度更新表的示例性实施例。
[0044]图24描述用于A、B和C的条件符号阈值的条件的组合逻辑表不的不例性实施例。
[0045]图25描述具有2、4和12的条件符号阈值的低复杂度更新表的示例性实施例。
[0046]图26描述用于2、4和12的条件符号阈值的条件的组合逻辑表不的不例性实施例。
[0047]图27描述具有2、4和13的条件符号阈值的低复杂度更新表的示例性实施例。
[0048]图28描述用于2、4和13的条件符号阈值的条件的组合逻辑表不的不例性实施例。
[0049]图29描述具有2、4和11的条件符号阈值的低复杂度更新表的示例性实施例。
[0050]图30描述用于2、4和11的条件符号阈值的条件的组合逻辑表示的示例性实施例。
[0051]图31描述具有2、4和10的条件符号阈值的低复杂度更新表的示例性实施例。
[0052]图32描述用于2、4和10的条件符号阈值的条件的组合逻辑表示的示例性实施例。
[0053]图33描述计算机硬件的示例性实施例。
【具体实施方式】
[0054]在HEVC中,诸如视频帧的输入图像被分解成⑶,⑶然后以代码的形式被识别。然后,CU进一步分解成被编译的子单元,如随后将描述的。
[0055]最初为了该编译,四叉树数据表示可以用于描述LCU200的分割。四叉树表示可以具有与IXU200和⑶202相对应的节点。在四叉树表示的每个节点处,如果IXU200或⑶202被分成四个CU202,则可以指配标识“I”。如果该节点未被分成多个CU202,则可以指配标识“O”。通过非限制性示例,图4中所示的四叉树表示可以描述图3中示出的IXU分割,其中将IXU200分成四个⑶202,并且第二个⑶202被分成四个更小的⑶202。四叉树的二进制数据表示可以是CU分割标识,CU分割标识可以作为开销与诸如跳过模式标识、合并模式标识、和随后描述的PU编译模式一起被编译和发射。通过非限制性示例,图4中示出的CU分割标识四叉树表示可以被编译为二进制数据表示“10100”。
[0056]在四叉树的每个叶子处,最后的CU202可以被分解成称为预测单元(PU) 204的一个或多个块。PU204是方形或矩形。具有2Nx2N尺寸的⑶202可以具有图5中示出的PU204的四个示例性布置之一,PU204具有2Nx2N、2NxN、Nx2N或NxN的尺寸。
[0057]通过空间或时间预测可以获得PU。时间预测与帧间模式图片相关。空间预测与帧内模式图片相关。因此,每个CU202的PU204可以在帧内模式或帧间模式中被编译。将在下文段落中描述与帧内模式和帧间模式图片相关的编译的特征。
[0058]帧内模式编译在不需要参考其他图片的情形下可以使用来自当前输入图像的数据,以编译I图片。在帧内模式中,可以将PU204空间地预测编译。⑶202的每个PU204可以具有它自己的空间预测方向。空间预测方向可以是水平的、垂直的、45度对角、135度对角、DC、平面、或任何其他方向。用于TO204的空间预测方向可以被编译为句法元素。在一些实施例中,可以单独地预测用于PU204的亮度信息(亮度)和色彩信息(色度)。在一些实施例中,用于4x4、8x8、16x16、32x32和64x64块的亮度帧内预测模式的数目可以分别是18、35、35、35和4。在替代实施例中,用于任何大小的块的亮度帧内预测模式的数目可以是35。附加模式可以用于色度帧内预测模式。在一些实施例中,色度预测模式可以被称为“ IntraFromLuma,,。
[0059]帧间模式编译可以使用来自当前输入图像和一个或多个参考图像的数据,以编译“P “图片和/或“B”图片。在一些情形和/或实施例中,帧间模式编译可以导致高于帧内模式编译的压缩。在帧间模式中,PU204可以是时间上预测编译,使得⑶202的每个PU204可以具有一个或多个运动矢量和一个或多个关联的参考图像。通过在关联的参考图像上搜索用于PU204的最佳匹配预测的运动估计操作,可以执行时间预测。通过运动矢量和关联的参考图像可以描述最佳匹配预测。P图片使用来自当前输入图像和一个或多个先前参考图像的数据。B图片使用来自当前输入图像和先前和后续参考图像的数据,并且可以最多达到两个运动矢量。可以在HEVC比特流中编译运动矢量和参考图片。在一些实施例中,可以将运动矢量编译为句法元素“MV”,并且可以将参考图片编译为句法元素“refldx”。在一些实施例中,帧间模式编译可以允许空间和时间预测编译。
[0060]图6描述怎样将PU204、X编码和/或解码的框图。在606,可以从当前PU204,x减去如上所述的诸如通过在602的帧内模式或在604的帧间模式所预测的预测ro206,x’,以获得残留PU208,e。在608,利用块变换可以将残留PU208,e变换成一个或多个变换单元(TU) 210, E0每个TU210可以包括一个或多个变换系数212。在一些实施例中,块变换可以是方形。在替代实施例中,块变换可以是非方形。
[0061]如图7中所示,在HEVC中,在CU202上可以执行不同大小的块变换集合,使得可以将一些PU204划分成更小的TU210,并且其他PU204可以具有与PU204相同大小的TU210。通过四叉树表示可以示出⑶202和PU204至TU210的划分。通过非限制示例,图8中示出的四叉树表示描述了图7中示出的⑶202内的TU210的布置。
[0062]返回参考图6,在步骤610,可以将TU210,E的变换系数212量化成有限数的可能值之一。在一些实施例中,这是其中通过量化所丢失的数据不可恢复的有损操作。在已经量化变换系数212之后,在612,量化的变换系数212可以如下文所述被熵编译,以获得最终压缩比特214。
[0063]在614,可以将量化的变换系数212解量化为解量化的变换系数216E’。在616,然后将解量化的变换系数216E’逆变换,以重建残留TO218,e’。在618,然后能够将重建的残留PU218,e’与通过在602的空间预测或在604的时间预测所获得的相对应预测ro206,X’相加,以获得重建TO220,X’ ’。在620,在重建的PUs220,X’ ’可以使用解块滤波器,以减少块效应。在620,也提供了采样自适应偏移处理,能够有条件地执行该采样自适应偏移处理以补偿重建的像素和初始像素之间的像素值偏移。此外,在620,在重建的PU220,x’’可以有条件的使用自适应环路滤波器,以减少或最小化在输入图像和输出图像之间的编译失真。
[0064]如果重建的图像是在帧间模式编译中将用于未来时间预测的参考图像,则可以将重建的图像存储在参考缓冲器622中。帧内模式编译图像可以是其中在不需要额外的重建图像的情形下解码可以开始的可能点。
[0065]HEVC在步骤612期间可以使用熵编译方案,诸如基于上下文的自适应二进制算法编译(CABAC)。用于CABAC的编译处理在图9中示出。在902,变换单元210的最后有效变换系数的位置可以被编译。返回参考图6,通过量化TU210可以创建量化的变换系数。变换系数212可以是重要的或非重要的。图10示出变换系数212的重要图1002。非重要的变换系数212可以具有零的量化值,而重要的变换系数212可以具有一个或多个量化值。在一些实施例中,重要的变换系数212也可以已知为非零量化变换系数212。如果TU210包括一个或多个重要变换系数212,则如图10中所示,可以编译沿着从TU210的左上角至TU210的右下角的前向之字形编译扫描的最后重要变换系数212的坐标。在替代实施例中,沿着逆波阵扫描、逆水平扫描、逆垂直扫描或任何其他扫描顺序,可以扫描重要变换系数212。在一些实施例中,这些坐标可以被编译为句法元素“last_significant_coeff_y”和“last_significant_coeff_x”。通过非限制示例,图10描述在图9的框902中被编译的TU210内的最后重要变换212b的位置。
[0066]在图9中的框904,可以将重要图1002编译成指示TU210中的重要变换系数212的每个的位置。重要图1002可以包括用于TU210中的每个位置的二进制元素。可以将二进制元素编译为“0”,以指示在那个位置的变换系数212不重要。可以将二进制元素编译为“1”,以指示在那个位置的变换系数212是重要的。
[0067]图11图示了 TU210的量化变换系数212如何被划分成组。在一些实施例中,这些组可以是子块。子块可以是16个量化的变换系数212的方块。在其他实施例中,这些组可以是子集1102。子集1102可以包括沿着向后之字形扫描的扫描顺序连续的16个量化变换系数212,如图11中所示。第一子集可以是包括最后重要变换系数212b的子集1102,无论在子集内最后重要变换系数212b在何处。通过非限制示例,最后重要变换系数212b在子集中可以是第14个变换系数212,之后有两个非重要变换系数。
[0068]在一些情形和/或实施例中,可以存在16个量化的变换系数212的一个或多个组,量化的变换系数212不包括在含有最后重要变换系数212b的组之前沿着逆向扫描顺序的重要变换系数。在这些情形和/或实施例中,第一子集可以是含有最后重要变换系数212b的子集1102,并且在第一子集1102之前的任何组不视为子集1102的部分。通过非限制示例,在图11中,第一子集1102 “子集O”是沿着逆向之字形扫描顺序的16个变换系数212的第二组,而在TU210的右下角的16个变换系数212的组不是子集1102的部分,因为那些变换系数212都不是重要的。在一些实施例中,可以将第一子集1102表示为“子集0”,并且附加子集1102可以表示为“子集1”、“子集2”直至“子集N”。最后子集1102可以是在位置O具有DC变换系数212的子集1102,0在TU210的左上角。
[0069]重新参考图9,在最后框906中,可以将每个量化的变换系数212编译成二进制值,以获得图6中示出的最后压缩比特214,包括用于重要系数级别的编译。在编译期间,可以与量化的变换系数212的符号分离地编译每个量化的变换系数212的绝对值。图12图示涉及采取量化的变换系数的绝对值的编译步骤。如图12中所示,在1202,采取每个量化的变换系数212的绝对值,以使得能够获得用于框1204的量化的变换系数212的系数级别222。
[0070]在期望以更低频率发生的系数级别222之前,编译期望以更高频率发生的在框1204获得的系数级别。通过非限制示例,在一些实施例中,可以期望0、1或2的系数级别222最频繁地发生。在三个部分中编译系数级别222能够识别最频繁发生系数级别222,留下用于可能期望最少频率发生的系数级别222的更加复杂的计算。在一些实施例中,这可以通过在三个部分中编译系数级别222进行。首先,可以检查量化的变换系数212的系数级别222以确定其是否大于I。如果系数级别222大于1,则可以检查系数级别222以确定其是否大于2。
[0071]在图12中的1206,如果系数级别222大于2,则系数级别222减去3的阈值224以获得符号。通过非限制性示例,在一些实施例中,可以将系数级别222编译为三种变量:“coefT_abs_level_greaterl_flag”、“coefT_abs_level_greater2_flag” 和 “coeff_abs_level_minus3”。对于具有2或更多的系数级别222的量化的变换系数212,可以将“coeff_abs_level_greaterl_flag”设置成 I。如果“coeff_abs_level_greaterl_flag”被设置成I并且量化的变换系数212也具有3或更多的系数级别222,则可以将“coeff_abs_level_greater2_f lag” 设置成 “ I ”。如果将 “coeff_abs_level_greater2_f lag” 设置成 “ I ”,则3的阈值224可以从系数级别222减去以获得量化的变换系数的符号226,编译为“COefT_abs_level_minUs3”。在替代实施例中,在不同数目的部分中可以编译系数级别222,和/或阈值224可以是除了 3的整数。
[0072]针对如图12的框中所确定的发生频率更少并且具有3或更多的系数级别222的量化的变换系数212,如图12的框中所确定,可以将量化的变换系数符号226转换成二进制码字228,二进制码字228可以是如图6中所示生成的最终压缩比特214的部分。
[0073]图13图示了如何通过由每个子集1102扫描和根据参数变量230的值按顺序转换子集1102的每个符号226,并且然后移动到下一子集1102的符号226来编译每个符号226。仅利用截短(truncated) Rice码或者利用截短Rice码和第O阶指数哥伦布(Exp-Golomb)码的组合,可以执行至二进制码字228的转换。截短Rice码可以基于参数变量230和符号226获得二进制码字228。针对子集O和1,示出该编译进展的图和图11的之字形线一起在图13中示出。在一些实施例中,当前扫描位置可以由“η”表示。[0074]参考图15,参数变量230能够是当各个符号226被编译时能够更新的全局变量。参数变量230可以控制码字分布的平坦度。在一些实施例中,参数变量230可以是O和N之间的任何整数。通过非限制性示例,在一些实施例中,N可以是3,使得参数变量230可以是0、1、2或3。在一些实施例中,参数变量230可以表示为“cRiceParam”,如图15和图14中所示。
[0075]仍参考图14,每个参数变量230可以具有表示用于截短Rice码的截短点的相关联的最大符号值232。在一些实施例中,可以将用于特定参数变量230的最大符号值232表示为如图14中所示的“cTRMax” 232,其描述用于参数变量230 “cRiceParam”的最大符号值232 “cTRMax”的不例性表。将图14的表标记为表I,因为它提供相对于最大值符号cTRMax232的第一列表cRiceParam值230。如果图15的符号226少于或等于用于参数变量230的最大符号值232,则仅使用截短Rice码将符号226转换成二进制码字228。如果符号226大于用于参数变量230的最大符号值232,则使用截短Rice码和Exp-Golomb码的组合可以生成二进制码字228,利用与第O阶Exp-Golomb码级联的用于最大符号值232的截短Rice码字,以便符号226减去最大符号值232减去I。通过非限制性实施例,图15描述了基于符号226和参数变量230生成的二进制码字228的示例性表。因为图15提供了列出相对于其他值的cRiceParam参数变量230的第二表,其被标记为表2。
[0076]在一些情形和/或实施例中,利用较低参数变量230转换根据截短Rice码的符号226,比利用较高参数变量230转换根据截短Rice码的同一符号226,可能导致具有更少比特的二进制码字228。通过非限制性示例,如通过图15中所描述的表中所示,使用O的参数变量230转换O的符号226,可以导致具有I比特的“O”的二进制码字228,而使用I的参数变量230转换O的符号226,可以导致具有2比特的“00”的二进制码字228。
[0077]在其他情形和/或实施例中,利用较高参数变量230转换根据截短Rice码的符号226,比利用较低参数变量230转换根据截短Rice码的同一符号226,可以导致具有更少比特的二进制码字228。通过非限制性示例,如图14中所描述的表中所示,使用O的参数变量转换6的符号226可以导致具有7比特的“1111110”的二进制码字228,而使用2的参数变量230转换6的符号226可以导致具有4比特的“1010”的二进制码字228。
[0078]图16是描述用于熵编译符号226的方法的流程图。在1602,针对每个TU210,可以将参数变量最初设置成O值。在1604,编译系统110可以移至下一符号226。在一些情形和/或实施例中,下一符号226可以是如图11中不出的第一子集1102中的第一符号。在1606,使用参数变量230的当前值,利用截短Rice和/或Exp-Golomb代码,可以编译符号226。在1608,基于参数变量230的最后值和编译的最后符号226的值,可以更新参数变量230。在一些情形和/或实施例中,参数变量230的更新值可以与参数变量230的最后值相同。在其他情形和/或实施例中,参数变量230的更新值可以大于参数变量230的最后值。基于计算或从随后本文中所描述的表中推导出的值,可以更新参数变量230。
[0079]在1608已经更新参数变量230之后,编译系统110可以返回1604,并且移至下一符号226。下一符号226可以在当前子集1102或在下一子集1102中。然后,在1606使用参数变量230的更新值可以编译下一符号226,并且针对TU210中的所有剩余符号226,该处理可以重复。在一些实施例中,当后续子集1102中的符号226被编译时,基于来自先前子集1102的参数变量230的最后值可以更新参数变量230,使得参数变量230在每个子集1102的第一符号226处不被重置为零。在替代实施例中,参数变量230在每个子集1102的第一符号226处可以被设置成零。
[0080]通常参考图15,具有更小的cRiceParam参数值230的截短Rice码可以被优选为编译具有更小码字的这些符号,因为它们需要代表更少的比特。例如,如果符号226具有O的值,使用具有等于O的cRiceParam参数值230的截短Rice码,则仅需要I比特,但是当cRiceParam值分别是2、3或4时,需要2、3或4比特。如果符号具有6的值,使用具有cRiceParam值等于O的截短Rice码,则需要7比特。但是当cRiceParam值分别是2、3或4时,需要5、4或4比特。
[0081]在用图17的表所示出的一个实施例中,基于下文的表来推导和更新标有可变的coeff_level_minus3 [η]的 cRiceParam230。针对 TU 子集,最初将 cRiceParam230 设置成0,并且然后基于根据图17的表的先前cRiceParam和coeff_abs_level_minus3 [n_l]更新。因为图17示出其列出相对于cRiceParam参数值230的符号值226的第三表,该表被标记为表3。同样地,将连续地标记示出相似比较的后续表。
[0082]应注意的是,在常规实现中,具有初始“O”值的每个子集每次重置cRiceParam230。针对多于16个连续符号系数226的一个子集的TU,可以将用于coeff_abs_level_minus3的cRiceParam计算为每个子集重新设置成0,其支持更小符号值编译。通常,在每个TU内,从最后非零量化变换系数开始,非零量化的变换系数的绝对值趋于变得越来越大。因此,针对每个子集将cRiceParam重新设置成O可能不给予最佳压缩性能。
[0083]在图13中,每个循环代表量化的变换系数,并且每个循环内的数是coeff_abs_level_minus3的值。如果其是“NA”,则意指不存在用于该系数的coeff_abs_level_minus3的句法。遵循逆向扫描模式,coeff_abs_level_minus3的这些值趋于在每个子集中并且也从子集至子集更得更大,如图13的示例中所示。在示例中,将cRiceParam设置成在子集O中用于“5”的2,并且利用设置成2的cRiceParam,将“5”的值二值化成“1001”的码字,或者4比特,如图15的表2中所示。在常规实现中,然后将cRiceParam重置成子集I中的O。目前,利用O的重置cRiceParam,子集I中的“5”的相同值目前被二值化成111110的码字,或者6比特,如表2中所示。明显地,该重置处理不仅引进附加校验操作,也可能导致差的编译性能。
[0084]如相应图18和19中所示的表4和5描述了关于更新表的替代实施例。对于这些和其他实施例,cRiceParam参数230得出如下。首先,针对TU,将cRiceParam最初设置成
O,并且然后基于先前cRiceParam和根据诸如表4和表5的cRiceParam更新表的coeff_abs_level_minus3 [n-1]被更新。在这些实施例中,每个TU仅重新设置cRiceParam —次,而不是关于使用表3的实施例所指示的TU的每个子集。
[0085]通过在每个子集不将cRiceParam重新设置成O,针对每个子集所重新设置的这些操作被保存,并且一旦cRiceParam达到3,将总是利用相同设置的截短rice码(cRiceParam等于3) 二值化这些符号,这可以减少硬件复杂度。
[0086]应注意的是,通过利用不同的cRiceParam值230分析每个符号226所需要的比特的数目,可以从图15的表2中生成图19的表5,同时假定下一级别值在统计上不小于沿着逆向扫描的当前级别。例如,如果当前符号226是2并且cRiceParam是O时,下一符号大于2的可能性较高,并且应用具有等于I的cRiceParam的截短Rice码可能减少比特的数目。如果当前符号是5并且cRiceParam是1,则下一符号大于5的可能性较高,并且应用具有等于2的cRiceParam的截短Rice码可能减少比特的数目。如果当前符号是11并且cRiceParam是2,则下一符号大于11的可能性较高并且应用具有等于3的cRiceParam的截短Rice码可能减少比特的数目。
[0087]在一些实施例中,返回参考图16,根据比较等式而不是表,可以确定在1608更新参数变量230。在该比较中,确定参数变量230的最后值和最后编译符号226的值是否满足一个或多个条件1702,如图20所不。在一些实施例中,可以将最后编译符号226的值表不为如表3-5中的“coeff_abs_level_minus3[n-l] ”。根据哪些条件被满足可以更新参数变量230,并且然后使用截短Rice码和/或Exp-Golomb码,基于更新的参数变量230可以编译当前符号226的值。
[0088]在一些实施例中,每个条件1702可以包括两个部分,条件符号阈值和条件参数阈值。在这些实施例中,如果符号226的值等于或大于条件符号阈值并且参数变量230等于或大于条件参数阈值,则可以满足该条件1702。在替代实施例中,每个条件1702可以具有任何数目的部分或具有用于符号226或参数变量230或者两者的任何类型的条件。
[0089]因为更新表可以需要额外存储器以存储和提取该数据并且该存储器需要大量处理器周期,可以优选的是,使用组合逻辑执行比较来替代更新表,因为该逻辑可以非常少地使用处理器周期。在图20中示出确定用于在表3的位置更新的cRiceParam的组合逻辑的示例。在图21中示出用于表示表4的组合逻辑的示例。图22中示出用于表示表5的组合逻辑的示例。
[0090]在一些实施例中,基于参数变量230和最后编译符号226的可能值的条件1702的可能结果,作为如图17中的表中示出的低复杂度更新表1704被存储在存储器中。在这些实施例中,基于参数变量230的最后值和最后编译符号226的值,通过从低复杂度更新表1704中执行表查找可以更新参数变量230。
[0091]在另一个实施例中,可以提供在CABAC中的低复杂度级别参数更新表,在一些实施例中低复杂度级别参数更新表可以比先前表更有效地操作,并且不需要图20-22中示出的逻辑。针对这些低复杂度级别参数更新表,下文应用:(1)输入:先前cRiceParam和 coeff_abs_level_minus3[n_l]。 (2)输出:cRiceParam。 (3)先前 cRiceParam 和cRiceParam可以具有0、1、2或3的值。
[0092]此外,在该低复杂度级别参数更新表中,下文进一步应用:(1)参数变量230可以:当最后编译符号226的值在O和A-1之间时保持相同;(2)可以将参数变量230设置成I或者保持在参数变量230的最后值,当符号226在A和B-1之间时,哪个更大;(3)可以将参数变量230设置成2或保持在参数变量230的最后值,当符号226在B和C-1之间时,哪个更大;或者⑷当符号226大于C-1时可以将参数变量230设置成3。在图23中描述了用于这些条件1702的标记为表6的低复杂度更新表1704。在图24中描述了用于表6的组合逻辑表示。可以将A、B和C的值设置成任何期望值。在该示例性实施例中,A、B或C分别可以是条件符号阈值,并且0、1或2的值可以分别是参数符号阈值。
[0093]在图19至31中描述了更新表1704和具有A、B和C的特定值的它们关联的组合逻辑表示1706的非限制示例的选择。图19和20分别描述更新表1704和用于3、6和13的条件符号阈值的组合逻辑表示。图29和30分别描述更新表9和用于2、4和11的条件符号阈值的组合逻辑表示。图31和32分别描述更新表10和用于2、4和10的条件符号阈值的组合逻辑表示。
[0094]实践这些实施例所需要的指令的序列的执行可以由计算机系统3300执行,如图20中所示。在实施例中,由单一计算机系统3300执行指令的序列的执行。根据其他实施例,由通信链路3315耦合的两个或多个计算机系统3300可以彼此协调地执行这些指令的序列。虽然在本文中可以存在仅一个计算机系统3300的描述,但是应该理解的是,可以采用任何数目的计算机系统3300。
[0095]现将参考图20描述根据实施例的计算机系统3300,其是计算机系统3300的功能组件的框图。如本文所使用,术语计算机系统3300广泛用于描述可以存储和独立地运行一个或多个程序的任何计算设备。
[0096]计算机系统3300可以包括耦合到总线3306的通信接口 3314。通信接口 3314在计算机系统3300之间提供双向通信。相应的计算机系统3300的通信接口 3314发射和接收电的、电磁的或光信号,所述信号包括诸如指令、消息和数据的表示各种类型的信号信息的数据流。通信链路3315将一个计算机系统3300与另一计算机系统3300链接。例如,通信链路3315可以是LAN、综合业务数字网(ISDN)卡、调制解调器、或互联网。
[0097]计算机系统3300通过它相应的通信链路3315和通信接口 3314,可以发射和接收消息、数据和指令,包括诸如应用、代码的程序。接收到的程序代码随着其被接收可以由相应处理器(这些处理器)3307执行,和/或存储在存储设备3310或其他关联非易失性介质中,以便以后执行。
[0098]在实施例中,计算机系统3300结合数据存储系统3331操作,例如包含由计算机系统3300易接入的数据库3332的数据存储系统3331。计算机系统3300通过数据接口 3333与数据存储系统3331通信。
[0099]计算机系统3300可以包括总线3306和用于通信这些指令、消息和数据,统称为信息的其他通信机制,以及与用于处理信息的总线3306耦合的一个或多个处理器3307。计算机系统3300也包括耦合到总线3306的主存储器3308,诸如随机存取存储器(RAM)或其他动态存储设备,以用于存储由这些处理器3307执行的动态数据和指令。计算机系统3300可以进一步包括只读存储器(ROM) 3309或者耦合到总线3306的其他静态存储器,以用于存储用于处理器(多个处理器)3307的静态数据和指令。诸如磁盘或光盘的存储设备3310也可以被提供并且耦合到总线3306,以用于存储用于处理器(这些处理器)3307的数据和指令。
[0100]计算机系统3300可以经由总线3306被耦合到显示器设备3311,诸如IXD屏。诸如字母或其他键的输入设备3312被耦合到总线3306,以用于将信息和命令选择通信到处理器(多个处理器)3307。
[0101]根据一个实施例,个人计算机系统3300通过它们相应的处理器3307执行具体操作,处理器3307执行包含在主存储器3308中的一个或多个指令的一个或多个序列。可以将这些指令从诸如R0M3309或存储设备3310的另一计算机可用介质读取到主存储器3308。包含在主存储器3308中的指令序列的执行,使得处理器(多个处理器)3307执行本文中描述的处理。在替代实施例中,硬线电路可以用于代替或与软件指令组合。因此,这些实施例不限于硬件电路和/或软件的任何特定组合。[0102]虽然在上文已经具体描述本发明,但是仅教导本领域的技术人员如何制造和使用本发明。许多附加修改将落入本发明的范围内,如通过权利要求所定义的范围。
【权利要求】
1.一种确定用于变换系数的二进制码字的方法,包括: 提供包括所述变换系数的一个或多个子集的变换单元,每个所述变换系数具有量化值; 通过从所述变换系数的所述量化值减去阈值,确定用于每个所述变换系数的符号,所述变换系数具有等于或大于所述阈值的量化值; 提供设置成初始值O的参数变量; 基于所述参数变量的当前值和所述符号的值,将所述符号转换成二进制码字;以及在每个符号被转换之后,利用用于每个所述符号的新当前值来更新所述参数变量的所述值,所述新当前值至少部分 地基于所述参数变量的最后值和最后被转换的符号的值。
2.根据权利要求1所述的方法,其中所述转换包括:基于所述符号的所述值和所述参数变量的更新值,从表中查找所述二进制码字。
3.根据权利要求1所述的方法,其中,所述阈值是3。
4.根据权利要求1所述的方法,其中,更新所述参数变量包括: 基于(I)所述参数变量的最后值和(2)所述最后被转换的符号的所述值来从表中查找新值。
5.根据权利要求1所述的方法,其中,更新所述参数变量包括: 确定所述参数变量的最后值和所述最后被转换的符号的所述值是否一起满足一个或多个条件。
6.根据权利要求5所述的方法,其中,所述一个或多个条件中的每个包括条件符号阈值和条件参数阈值。
7.根据权利要求5所述的方法,其中,当所述最后被转换的符号的所述值大于或等于用于所述一个或多个条件中的一个条件的所述条件符号阈值并且所述参数变量的所述最后值小于或等于用于该一个条件的所述条件参数阈值时,满足该一个条件。
8.根据权利要求7所述的方法,其中,对于所述一个或多个条件中的每个,所述条件符号阈值不同。
9.根据权利要求1所述的方法,其中,所述参数变量的所述值被配置成0、1、2或3。
10.根据权利要求1所述的方法,其中,所述参数变量的所述值被配置成0、1、2、或者2与指定上限值之间的任何整数。
11.根据权利要求1所述的方法,其中,所述变换系数被提供在变换单元(TU)内,所述变换单元提供在高效率视频编译(HEVC)信号中的编译单元(CU)的细分。
12.根据权利要求1所述的方法,其中,所述变换系数被提供在变换单元(TU)的子集内,所述变换单元提供在高效率视频编译(HEVC)信号中的编译单元(CU)的细分。
13.一种确定用于变换系数的二进制码字的方法,包括: 提供包括所述变换系数的一个或多个子集的变换单元,每个所述变换系数具有量化值; 通过从所述变换系数的所述量化值减去阈值,确定用于每个所述变换系数的符号,所述变换系数具有等于或大于所述阈值的量化值; 提供设置成初始值O的参数变量; 基于所述参数变量的当前值和所述符号的值,将所述符号转换成二进制码字;基于所述参数变量的最后值和最后被转换的符号的值,从表中查找新当前值;以及 利用所述新当前值替换所述参数变量的所述值。
14.一种确定用于变换系数的二进制码字的方法,包括: 提供包括变换系数的一个或多个子集的变换单元,每个变换系数具有量化值; 通过从所述变换系数的所述量化值减去阈值,确定用于每个变换系数的符号,所述变换系数具有等于或大于所述阈值的量化值; 提供设置成初始值O的参数变量; 基于所述参数变量的所述当前值和所述符号的所述值,将每个符号转换成二进制码字;以及 确定所述参数变量的最后值和最后被转换的符号的值是否一起满足一个或多个条件;以及 将整数I与用于满足 所述一个或多个条件中的每个的所述参数变量的所述最后值算术地相加。
15.根据权利要求14所述的方法,其中,所述一个或多个条件中的每个包括条件符号阈值和条件参数阈值。
16.根据权利要求14所述的方法,其中,当所述最后被转换的符号的所述值大于或等于用于所述一个或多个条件中的一个条件的所述条件符号阈值并且所述参数变量的所述最后值小于或等于用于该一个条件的所述条件参数阈值时,满足该一个条件。
17.根据权利要求16所述的方法,其中,对于所述一个或多个条件中的每个,所述条件符号阈值不同。
18.根据权利要求14所述的方法,其中,所述参数变量的所述值被配置成0、1、2或3。
19.根据权利要求14所述的方法,其中,所述参数变量的所述值被配置成0、1、2、或者2与指定上限值之间的任何整数。
【文档编号】H04N19/91GK103931197SQ201280054977
【公开日】2014年7月16日 申请日期:2012年11月8日 优先权日:2011年11月8日
【发明者】娄健, 方雪, 王利民 申请人:摩托罗拉移动有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1