使用或适用于与依赖标量量化的组合的变换系数的有效编码的制作方法

文档序号:26013125发布日期:2021-07-23 21:34阅读:88来源:国知局
本申请涉及变换系数级别的编码,诸如用于对图像或视频进行编码。
背景技术
::在设置量化参数时,编码器必须做出折衷。粗略地渲染量化会降低位率,但会增加量化失真,而更精细地渲染量化会降低失真,但会增加位率。在手头有一个概念,对于给定的可用的量化级别的域,可以提高编码效率,这将是有利的。这样的一种可能性是使用依赖量化,其中依赖于先前量化和编码的数据来稳定地适应量化。但是,量化中的依赖关系还会引发一些问题,如编码复杂性的提高,用于执行上下文建模的信息存储空间的减少,因为依赖关系影响了待量化和编码的数据项之间的相互关系,从而影响了用于单个句法元素进行编码的可用于上下文推导的信息的可用性。技术实现要素:通过使用依赖量化和上下文自适应熵编码来实现对变换块的系数的更有效编码,或设置如果使用依赖量化与上下文自适应熵编码的组合允许更有效的编码的方式来实现对变换块的系数的编码的概念将是有利的。本发明的目的是提供一种用于对变换系数块进行编码的概念。此目的通过本申请的独立权利要求的主题来解决。有利的方面是从属权利要求的主题。附图说明下面参照附图描述本申请的优选实施例,其中:图1示出作为用于图像编码器的示例的示例性视频编码器的框图,所述图像编码器可以被实现为根据以下描述的任何实施例进行操作或者并入根据本文阐述的实施例的功能。图2示出变换编码器的框图;以及(b)变换解码器,以说明基于块的变换编码的基本方法;图3示出分布的直方图,其示出均匀重构量化器。图4示出(a)细分为子块的变换块和(b)子块的示意图,以示出用于扫描变换系数级别的示例,在此示例性地在h.265|mpeg-hhevc中使用的一个;特别地,(a)示出将16×16变换块划分成4×4子块以及子块的编码顺序;(b)示出在4×4子块内的变换系数级别的编码顺序。细分可以示例性地用于本申请的实施例中,用于系数的遍次以解码其标志和余数,以及用于在对其标志和余数进行去量化时的状态过渡。图5示出每个变换系数由一个轴跨越的多维输出空间的示意图,以及在两个变换系数的简单情况下允许的重构向量的位置:(a)独立标量量化;(b)依赖标量量化的示例。图6示出使用依赖标量量化的变换解码器的框图,从而形成根据本申请的媒体解码器的实施例。通过比较图2b,可以得出相对于常规的变换编码(具有独立标量量化器)的修正。以相应的方式,可以通过类似地修正图2a的编码器来获得用于使用依赖标量量化对变换块进行编码的实施例。图7是示出对于依赖量化的实施例的两组重构级别的示意图,其完全由单个量化步长尺寸δ确定。突出显示了两个可用的重构级别的集合,分别表示为集合0(顶线)和集合1(底线)。圆圈下方的数字给出了表示一组内部的重构级别的对于量化索引的示例。空心圆和实心圆表示重构级别的集合内部的两个不同子集;这些子集可用于为重构顺序中的下一个变换系数确定重构级别的集合。两集合都包括等于零的重构级别,但在其他方面是不相交的,两集合都围绕零对称。图8示出伪代码,其示出用于变换系数的重构过程的示例。k表示指定当前变换系数的重构顺序的指标,用于当前变换系数的量化索引由level[k]表示,应用于当前变换系数的量化步长δk由quant_step_size[k]表示,而trec[k]代表重构的变换系数t′k的值。变量setid[k]指定适用于当前变换系数的重构级别的集合。它是根据按重构顺序的先前的变换系数确定的;setid[k]的可能值为0和1。变量n指定量化步长尺寸的整数因子;它由选择的重构级别的集合(即setid[k]的值)和传输的量化索引level[k]给定。图9示出伪代码,此伪代码示出图8中的伪代码的替代实现。主要变化是与量化步长的乘法是通过使用标度和移位参数的整数实现表示的。通常,移位参数(由shift表示)对于变换块而言是恒定的,并且仅缩放参数(由scale[k]给出)可能取决于变换系数的位置。变量的加法表示舍入偏移量,通常将其设置为等于add=(1<<(shift-1))。在δk是变换系数的标称量化步长的情况下,以使得我们具有δk≈scale[k]·2-shift的方式选择参数shift和scale[k]。图10示出伪代码,所述伪代码示出用于变换块的变换系数的重构过程的示例。阵列级别表示针对变换块的传输的变换系数级别(量化索引),并且阵列trec表示相应的重构的变换系数。2d表state_trans_table指定状态过渡表,表setid指定与状态关联的量化集合。图11示出说明作为网格结构的依赖标量量化中的状态过渡的示意图。水平轴以重构顺序表示不同的变换系数。垂直轴表示依赖量化和重构过程中的可能出现的不同的状态。所示连接指定了不同变换系数在状态之间的可用路径。图12a示出变换块的示意图,所述变换块用于以编码顺序示出第一非零量化索引的位置的信令,所述第一非零量化索引的位置通过回填来示出。除了第一非零变换系数的位置之外,还仅传输阴影的系数的二进制位,将白色标记的系数推断为等于0。图12b示出变换块的示意图,并且示出用于选择概率模型的模板。黑色正方形表示当前扫描位置,阴影的正方形表示用于导出上下文模型的局部邻域。图13示出根据对变换系数块进行编码的第一实施例的伪代码;图14示出示意图,所述示意图示出通过递归将量化索引的值域二等分并根据图13的实施例的变换系数的量化索引的表示;图15示出图13的示例中的解码的多种遍次的示意图,所述遍次按照图13的示例在遍次中变换系数的方式,以及在哪遍次编码了哪些标志或提示;图16是用于说明对变换系数块进行编码的第二实施例的伪代码;图17是示出根据图16的实施例的系数的量化索引的表示的示意图;图18是表示对变换系数块进行编码的第三实施例的伪代码;以及图19示出伪代码,所述伪代码示出用于对变换系数块进行编码的第四实施例。在以下描述的实施例中,变换编码用于变换一组样本。使用依赖量化对得到的变换系数进行量化,并对得到的量化索引进行熵编码,即上下文自适应算术编码。在解码器侧,通过对量化索引进行相应的解码以及变换系数的依赖重构来获得重构的样本的集合,使得逆变换得到样本。样本可以是图像或视频的一部分,并且可以描述某个图像块。自然地,也存在其他可能性。下面的实施例的描述主要针对图像和视频编解码器中的预测误差样本的块的有损编码,但是这些实施例也可以应用于有损编码的其他区域。特别地,不存在对形成矩形块的样本的集合的限制,并且对表示预测误差样本(即,原始信号和预测信号之间的差)的样本的集合也没有限制。所有最新的视频编解码器,诸如国际视频编码标准h.264|mpeg-4avc和h.265|mpeg-hhevc遵循混合视频编码的基本方法。将视频图像划分为块,使用图像内预测或间预测来预测块的样本,并且使用变换编码对所得的预测误差信号的样本(原始样本与预测信号的样本之间的差)进行编码。图1示出典型的现代视频编码器的简化的框图。视频序列的视频图像按一定顺序编码,这称为编码顺序。图像的编码顺序可能与捕获和显示顺序不同。对于实际编码,将每个视频图像划分为块。一个块包括特定颜色分量的矩形区域的样本。对应于同一矩形区域的所有颜色分量的块的实体通常称为单元。根据块划分的目的,在h.265|mpeg-hhevc中,在编码树块(ctb)、编码块(cb)、预测块(pb)和变换块(tb)之间有所区别。关联的单元称为编码树单元(ctu)、编码单元(cu)、预测单元(pu)和变换单元(tu)。通常,视频图像最初被划分为固定的尺寸的单元(即,对于所有颜色分量对齐的固定的尺寸的块)。在h.265|mpeg-hhevc中,这些固定的尺寸的单元称为编码树单元(ctu)。每个ctu可以进一步分为多个编码单元(cus)。编码单元是为其选择编码模式(例如,图像内或图像间编码)的实体。在h.265|mpeg-hhevc中,将ctu分解为一个或多个cu,这由四叉树(qt)句法指定,并作为位流的一部分进行传输。ctu的cu以所谓的z扫描顺序进行处理。这就是说,分割产生的四个块将按光栅扫描顺序进行处理;并且如果任何一个块进一步被划分了,则在处理较高分割级别的下一个块之前,先处理对应的四个块(包括所包括的较小的块)。如果cu以内编码的模式编码,则用于亮度信号的内预测模式,并且如果视频信号包括色度分量,则传输用于色度信号的另一内预测模式。在ituth.265|mpeghhevc中,如果cu尺寸等于最小cu尺寸(如序列参数集合中所指示的),则亮度块也可以分为四个尺寸相等的块,在这种情况下,对于这些块中的每一个,单独亮度内预测模式被传输。实际的内预测和编码是在变换块的基础上完成的。对于图像内编码的cu的每个变换块,使用已经重构的相同颜色分量的样本来得出预测信号。用于生成变换块的预测信号的算法由传输的内预测模式确定。可以将以图像间编码的模式编码的cu进一步拆分成多个预测单元(pu)。预测单位是亮度的实体,对于颜色视频,是两个关联的色度块(覆盖相同的图像区域),为此使用了一组预测参数。cu可以编码为单个预测单元,它也可以被拆分成两个非正方形(支持对称和非对称拆分)或四个正方形预测单元。对于每个pu,传输一组单个的运动参数。每组运动参数包括运动假设的数量(h.265|mpeghhevc中的一个或两个),对于每个运动假设,参考图像(通过参考图像指标指示到参考图像列表中)和相关的运动向量。此外,h.265|mpeg-hhevc提供了一种所谓的合并模式,其中运动参数没有被明确地传输,而是基于空间或时间相邻的块的运动参数而得出的。如果以合并模式对cu或pu进行编码,则仅传输运动参数候选的列表的指标(此列表是使用空间和时间相邻的块的运动数据得出的)。所述指标完全确定所使用的运动参数的集合。通过运动补偿的预测来形成用于间编码的pu的预测信号。对于每个运动假设(由参考图像和运动向量指定的),预测信号由指定的参考图像中的位移的块形成,其中相对于当前pu的位移由运动向量指定。通常以子样本精确度指定位移(在h.265|mpeghhevc中,运动向量的精密度为四分之一亮度样本)。对于非整数运动向量,通过内插重构的参考图像(通常使用可分离的fir滤波器)来生成预测信号。具有多假设预测的pu的最终预测信号由单个运动假设的预测信号的加权的和形成。通常,同一组运动参数用于pu的亮度和色度块。即使最新的视频编码标准使用平移位移向量来指定当前区域(样本的块)相对于参考图像的运动,也可以采用高阶运动模型(例如,仿射运动模型)。在这种情况下,必须为运动假设传输其他的运动参数。对于图像内和图像间编码的cu两者,通常经由变换编码来传输预测误差信号(也称为残余信号)。在h.265|mpeg-hhevc中,cu的亮度残余样本的块以及色度残余样本的块(如果存在)被划分为变换块(tb)。通过四叉树句法指示cu到变换块的划分,四叉树句法也称为残余四叉树(rqt)。使用变换编码对所得的变换块进行编码:将2d变换应用于残余样本的块,使用独立的标量量化对所得的变换系数进行量化,并对所得的变换系数级别(量化索引)进行熵编码。在p和b切片中,在cu句法的开头,将传输skip_flag。如果此标志等于1,则表示相应的cu由以合并模式编码的单个预测单元集合成(即,推断merge_flag等于1),并且所有变换系数均等于零(即,重构信号等于预测信号)。在这种情况下,除了skip_flag之外,仅传输merge_idx。如果skip_flag等于0,则发出预测模式(间或内)的信号,后跟上述句法特征。由于已经编码的图像可用于后续的图像中的块的运动补偿的预测,因此必须在编码器中完全重构图像。将针对块的重构的预测误差信号(通过重构给定量化索引的变换系数并进行逆变换而获得)添加到对应的预测信号,并且将结果写入当前图像的缓存器中。重构图像的所有块后,可以应用一个或多个环路滤波器(例如,解块滤波器和样本自适应偏移滤波器)。然后将最终的重构的图像存储在解码的图像缓存器中。以下描述的实施例提出了一种用于对诸如与预测误差有关的变换系数块进行编码的概念。所述概念适用于图像内和图像间编码的块。它也适用于非矩形样本区域的变换编码。与传统的变换编码相反,变换系数不是独立地量化的。相反,它们是使用依赖量化来量化的。根据依赖量化,针对特定变换系数的可用重构级别的集合取决于为其他变换系数选择的量化索引。所有主要的视频编码标准(包括最新标准h.265|mpeg-hhevc)都将变换编码的概念用于预测误差样本的编码块。块的预测误差样本表示所述块的原始信号的样本和预测信号的样本之间的差。通过图像内预测(在这种情况下,基于同一图像内相邻的块的已重构的样本得出当前块的预测信号的样本)或通过图像间预测来获得预测信号(在这种情况下,基于已重构的图像的样本得出预测信号的样本)。通过从当前块的原始信号的样本值中减去预测信号的样本值来获得原始的预测误差信号的样本。样本块的变换编码包括线性变换、标量量化和量化索引的熵编码。在编码器侧(参见图2a),使用线性分析变换a对n×m个原始样本的块进行变换。结果是n×m个变换系数块。变换系数tk代表不同信号空间(或不同坐标系)中的原始的预测误差样本。使用n×m个独立标量量化器对n×m个变换系数进行量化。每个变换系数tk被映射到量化索引qk,也称为变换系数级别。对获得的量化索引qk进行熵编码并写入位流。在图2b中所示的解码器侧,从接收到的位流中解码出变换系数级别qk。每个变换系数级别qk映射到重构的变换系数t’k。通过使用线性合成变换b变换重构的变换系数块来获得重构的样本的n×m个块。即使视频编码标准仅指定合成变换b,但通常的做法是将合成变换b的倒数用作编码器中的分析变换a,即a=b-1。而且,在实际的视频编码系统中使用的变换表示正交变换(b-1=bt)或接近正交的变换。对于正交变换,信号空间中的均方误差(mse)失真等于变换域中的mse失真。正交具有重要的优势,即可以使用独立标量量化器将原始的样本块和重构的样本块之间的mse失真最小化。即使在编码器中使用的实际的量化过程考虑了变换系数级别之间的依赖性(由上面的熵编码描述引入),正交变换的使用也显著简化了量化算法。对于典型的预测误差信号,所述变换具有使信号能量集合中在几个变换系数中的效果。与原始的预测误差样本相比,减少了所得变换系数之间的统计依赖性。在最新的视频编码标准中,使用可分离的离散余弦变换(类型ii)或其整数近似。然而,可以容易地替换该变换而无需修正变换编码系统的其他方面。文献或标准化文件中提出的改进示例包括:·将离散正弦变换(dst)用于图像内预测块(可能取决于内预测模式和/或块尺寸)。请注意,h.265|mpeg-hhevc已经包括用于图像内预测的4×4变换块的dst。·切换的变换:编码器从预定义的变换的集合中选择实际使用的变换。可用的变换的集合对于编码器和解码器都是已知的,因此可以使用进入可用的变换的列表的指标来有效地通过信号通知它。可用的变换的集合及其在列表中的顺序可以取决于该块的其他编码参数,诸如所选择的内预测模式。在特殊情况下,所使用的变换完全通过对诸如内预测模式之类的参数进行编码来确定,因此不需要传输用于指定变换的句法元素。·不可分离的变换:编码器和解码器中使用的变换表示不可分离的变换。注意,转换的变换的概念可以包括一个或多个不可分离的变换。由于复杂性原因,不可分离的变换的使用可以限于某些特定块尺寸。·多级别变换:实际的变换由两个或多个变换阶段组合成。第一变换阶段可以由计算复杂度低的可分离的变换组合成。并且在第二阶段,使用不可分离的变换来进一步变换所得的变换系数的子集合。与整个变换块的不可分离的变换相比,两阶段方法的优点是,将更复杂的不可分离的变换应用于较少数量的样本。多级别变换的概念可以与转换的变换的概念有效地结合在一起。使用标量量化器对变换系数进行量化。作为量化的结果,减少了变换系数的允许的值的集合。换句话说,变换系数被映射到所谓的重构级别的可数的集合(实际上是有限集合)。重构级别的集合表示可能的变换系数值的集合的适当子集合。为了简化随后的熵编码,可允许的重构级别由量化索引(也称为变换系数级别)表示,该量化索引作为位流的一部分进行传输。在解码器侧,将量化索引(变换系数级别)映射到重构的变换系数。重构的变换系数的可能值对应于重构级别的集合。在编码器侧,标量量化的结果是变换系数级别(量化索引)的块。在最新的视频编码标准中,使用均匀重构量化器(urq)。其基本设计如图3中所示。urq具有重构级别s等距分布的特性。两个相邻的重构级别之间的距离δ称为量化步长尺寸。重构级别之一等于0。因此,可用的重构级别的完整集合由量化步长尺寸δ唯一指定。量化索引q到重构的变换系数t'的解码器的映射原则上由以下简单公式给出t′=q·δ。在此上下文中,术语“独立标量量化”是指这样的特性,在给定任何变换系数的量化索引q的情况下,可以独立于其他变换系数的所有量化索引来确定关联的重构的变换系数t'。由于视频解码器通常利用具有标准精密度(例如32位)的整数算术,因此标准中使用的实际公式可能与简单乘法略有不同。忽略对变换系数支持的动态范围的裁剪时,h.265|mpeg-hhevc是通过以下方式获得t′=(scale·q+(1<<(shift-1)))>>shift,其中的运算符“<<”和“>>”分别代表左移和右移。当我们忽略整数运算时,量化步长尺寸δ对应于δ=scale·2-shift。较旧的视频编码标准,例如h.262|mpeg-2视频还规定了修正后的urq,其重构级别零和第一非零重构级别之间的距离相对于标称的量化步长尺寸增加了(例如,标称的量化步长尺寸δ的三分之二)。变换系数的量化步长尺寸(或缩放和移位参数)由两个因素确定:·量化参数qp:量化步长尺寸通常可以基于块进行修正。为此,视频编码标准提供了预定义的量化步长尺寸的集合。使用量化步长尺寸的预定义列表中的指标来指示所使用的量化步长尺寸(或者,等效地,上文引入的参数“缩放”和“移位”)。所述指标称为量化参数(qp)。在h.265|mpeg-hhevc中,qp和量化步长尺寸之间的关系近似为切片qp通常在切片标头中传输。通常,可以基于块来修正量化参数qp。为此目的,可以传输dqp(增量量化参数)。使用的量化参数由传输的dqp和预测的qp值确定,该值使用已编码(通常为相邻的)的块的qp得出。·量化加权矩阵:视频编码标准通常为单个变换系数提供使用不同量化步长尺寸的可能性。这通过指定所谓的量化加权矩阵w来实现,其通常可以在序列或图像级别上由编码器进行选择,并且作为位流的一部分被传输。量化加权矩阵w具有与相应变换系数块相同的尺寸。变换系数tik的量化步长尺寸δik由下式给出δik=wik·δblock,其中δblock表示所考虑的块的量化步长尺寸(由块量化参数qp表示),i和k表示指定变换块内部的当前变换系数的坐标,wik表示量化加权矩阵w中的相应条目。量化加权矩阵的主要目的是提供一种以感知上有意义的方式引入量化噪声的可能性。通过使用适当的加权矩阵,可以利用人类视觉的空间对比度敏感度来实现位率和主观重构质量之间的更好权衡。但是,许多编码器使用所谓的平面量化矩阵(可以使用高级别句法元素有效地传输该矩阵)。在这种情况下,对于块中的所有变换系数使用相同的量化步长尺寸δ。然后,量化步长尺寸完全由量化参数qp指定。变换系数级别的块(对于变换系数的量化索引)被熵编码(即,以无损的方式作为位流的一部分被传输)。由于线性变换只能减少线性依赖性,因此通常以一种方式设计变换系数级别的熵编码,以便可以利用块中的变换系数级别之间的其余的非线性依赖性进行有效编码。众所周知的示例是在mpeg-2视频中的运行级别编码,在h.263和mpeg-4visual中的运行级别末尾编码,在h.264|mpeg-4avc中的上下文自适应可变的长度编码(cavlc),以及在h.264|mpeg-4avc和h.265|mpeg-hhevc中基于上下文的自适应二进制位的算术编码(cabac)。最新的视频编码标准h.265|mpeg-hhevc中指定的cabac遵循一个通用概念,可应用于多种变换块尺寸。大于4x4样本的变换块被划分为4x4子块。在图4a和图4b中以16×16变换块为例示出划分。图4a中所示的4×4子块的编码顺序以及图4b中所示的子块内部的变换系数级别的编码顺序通常由图中所示的反向对角线扫描指定。对于某些特定的图像内预测块,使用视频或垂直扫描模式(取决于实际的内预测模式)。编码顺序始终从高频位置开始。在h.265|mpeg-hhevc中,基于4x4子块传输变换系数级别。变换系数级别的无损的编码包括以下步骤:1.对句法元素coded_block_flag进行传输,该信号指示变换块中是否存在任何非零变换系数级别。如果coded_block_flag等于0,则不会为该转变换块编码其他数据。2.以编码顺序(例如,图4中所示的逐块反向对角线扫描顺序)传输第一非零变换系数级别的x和y坐标。坐标的传输分为前缀和后缀部分。所述标准使用句法元素last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix以及last_sig_coeff_x_suffix。3.从按编码顺序包含第一非零变换系数级别的4x4子块开始,按编码顺序处理4x4子块,其中子块的编码包括以下主要步骤:a.传输句法元素coded_sub_block_flag,该句法元素指示子块是否包含任何非零变换系数级别。对于第一个和最后一个4x4子块(即包含第一非零变换系数级别或dc级别的子块),此标志不会传输,但可以推断为等于1。b.对于coded_sub_block_flag等于1的子块内的所有变换系数级别,句法元素ificate_coeff_flag指示相应变换系数级别是否不等于零。仅当无法根据已传输的数据推断其值时,才传输此标志。特别是,如果dc系数位于与第一非零系数(按编码顺序)不同的子块中并且最后一个子块的所有其他significant_coeff_flags均等于零,则不会为第一有效扫描位置(由传输的x和y坐标指定的)传输标志,也不会为dc系数传输标志。c.对于significant_coeff_flag等于1(如果有)的前八个变换系数级别,传输标志coeff_abs_level_greater1_flag。它指示变换系数级别的绝对值是否大于1。d.对于coeff_abs_level_greater1_flag等于1(如果有)的第一变换系数级别,将传输标志coeff_abs_level_greater2_flag。它指示变换系数级别的绝对值是否大于2。e.对于significant_coeff_flag等于1的所有级别(下面将描述一个例外),将传输句法元素coeff_sign_flag,该句法元素指定变换系数级别的符号。f.对于所有尚未通过significant_coeff_flag、coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag的值完全指定绝对值的变换系数级别(如果任何已传输的标志等于零,则完全指定绝对值),绝对值的余数为使用多级别句法元素coeff_abs_level_remaining传输。在h.265|mpeg-hhevc中,所有句法元素均使用基于上下文的自适应二进制位的算术编码(cabac)进行编码。首先将所有非二进制位的句法元素映射到一系列二进制位的决策上,其也被称为二进制位。使用二进制位的算术编码对所得的二进制位序列进行编码。为此目的,每个二进制位与概率模型(二进制位的概率质量函数)相关联,此概率模型也称为上下文。对于大多数二进制位,上下文表示自适应的概率模型,这意味着将根据实际编码的二进制位的值更新关联的二进制位的概率质量函数。通过基于已传输的数据切换某些特定二进制位的上下文,可以利用条件概率。cabac还包括所谓的旁路模式,其中使用了固定的概率质量函数(0.5,0.5)。为coded_sub_block_flag的编码选择的上下文取决于对于已编码的相邻的子块的coded_sub_block_flag的值。基于子块内部的扫描位置(x和y坐标)、变换块的尺寸以及相邻的子块中coded_sub_block_flag的值来选择significant_coeff_flag的上下文。对于标志coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag,上下文选择取决于当前子块是否包括dc系数以及是否已为相邻的子块传输等于1的任何coeff_abs_level_greater1_flag。对于coeff_abs_level_greater1_flag,它还取决于针对子块已编码的coeff_abs_level_greater1_flag的数量和值。符号coeff_sign_flag和绝对值coeff_abs_level_remaining的余数在二进制位的算术编码器的旁路模式下编码。为了将coeff_abs_level_remaining映射到一系列二进制位(二进制位的决策)上,使用了自适应二值化方案。二值化由单个参数控制,此参数基于子块的已编码的值进行适配。h.265|mpeg-hhevc还包括所谓的符号数据隐藏模式,其中(在某些特定条件下)省略了子块内最后一个非零级别的符号的传输。取而代之的是,将此级别的符号嵌入到相应子块的级别的绝对值之和的奇偶校验位中。注意,编码器在确定适当的变换系数级别时必须考虑这一方面。视频编码标准仅指定位流句法和重构过程。如果我们考虑对给定的原始的预测误差样本块和给定的量化步长尺寸进行变换编码,则编码器具有很大的自由度。给定用于变换块的量化索引qk,熵编码必须遵循唯一定义的算法,用于将数据写入位流(即,构造算术码字)。但是,在给定原始的预测误差的样本块的情况下,用于获得量化索引qk的编码器算法不在视频编码标准的范围之内。此外,编码器具有以块为基础对量化参数qp进行选择的自由度。对于以下描述,我们假设给出了量化参数qp和量化加权矩阵。因此,每个变换系数的量化步长尺寸是已知的。我们进一步假设编码器执行的分析变换是指定的合成变换的倒数(或与倒数非常近似的数),以获得原始的变换系数tk。即使在这些条件下,编码器也可以自由选择每个原始的变换系数tk的量化索引qk。由于变换系数级别的选择决定了失真(或重构/近似质量)和位率,因此使用的量化算法对产生的位流的比率失真性能具有实质性影响。最简单的量化方法将原始的变换系数tk舍入到最接近的重构级别。对于通常使用的urq,可以根据以下公式确定相应的量化索引qk:其中sgn()是符号函数,并且运算符返回小于或等于其自变数的最大整数。这种量化方法保证了mse失真被最小化,但它完全忽略了传输所得的变换系数级别qk所需的位率。通常,如果将舍入偏向零,则可获得更好的结果:如果量化过程将拉格朗日函数d+λ·r最小化,则可获得速率失真感应的最佳结果,其中d表示变换块的失真(例如,mse失真),r指定传输块的变换系数级别所需的二进制位的数量,并且λ是拉格朗日乘数。对于使用在qp和量化步长尺寸之间的关系的编解码器(诸如h.264|mpeg-4avc或h.265|mpeg-hhevc),随后的在拉格朗日乘数λ和块量化参数qp之间的关系经常被使用其中c1和c2代表切片或图像的常数因子。旨在最小化失真和速率的拉格朗日函数d+λ·r的量化算法也称为速率失真优化的量化(rdoq)。如果我们使用mse或加权的mse来测量失真,则应以某种方式确定转变换块的量化索引qk,以使以下成本度量最小化:d+λ·r=∑kαk·(tk-δk·qk)2+λ·r(qk|qk-1,qk-2,…)。此时,变换系数指标k指定变换系数级别的编码顺序(或扫描顺序)。项r(qk|qk-1,qk-2,…)表示传输量化索引qk所需的二进制位的数量(或其估计)。此条件说明(由于使用了组合的概率或条件的概率)特定变换系数级别qk的二进制位的数量通常取决于编码顺序中先前的变换系数级别qk-1,qk-2等的选择的值。上式中的因子αk可用于加权个体变换系数的贡献,例如,用于模拟人类视觉的对比敏感度。在下文中,我们通常假设所有加权因子αk等于1(但是可以通过考虑不同加权因子的方式直接修正算法)。对于在h.265|mpeg-hhevc中的变换系数编码,速率项的精确计算非常复杂,因为大多数二进制位的决策都是使用自适应的概率模型进行编码的。但是,如果我们忽略了概率模型选择的某些方面,并且忽略了概率模型在变换块内部进行适配,则有可能可以设计出具有合理复杂度的rdoq算法。在参考软件中为h.265|mpeg-hhevc实现的rdoq算法包含以下基本处理步骤:1.对于每个扫描的位置k,在级别未被推断为零的假设下,通过将拉格朗日成本dk(qk)+λ·rk(qk)最小化来选择变换系数级别qk。dk(qk)表示(加权的)平方的误差dk(qk)=αk·(tk-δk·qk)2,rk(qk)代表传输qk所需的二进制位的数量的估计。2.通过比较以下两种情况的拉格朗日成本来确定4×4子块的标志coded_sub_block_flag:(a)使用在步骤1中选择的变换系数级别;(b)将句法元素coded_sub_block_flag设置为等于零,因此,将4×4子块的所有变换系数级别设置为等于零。3.通过比较拉格朗日成本确定第一非零变换系数级别的位置,拉格朗日成本是通过选择非零变换系数级别(在步骤1之后)中的一个作为编码顺序中的第一非零变换系数级别而获得的(前面的变换系数级别设置为零)。4.coded_block_flag是通过比较步骤1后得到的变换系数级别的序列的拉格朗日代价,并将变换块内的所有变换系数级别设置为零来确定的。变换系数不被独立地量化和重构是变换编码的修正概念。取而代之的是,变换系数的可允许的重构级别取决于以重构顺序为先前的变换系数选择的量化索引。依赖标量量化的概念与修正后的熵编码相组合,其中对于变换系数的概率模型选择(或,可替代地,码字表选择)取决于可允许的重构级别的集合。变换系数的依赖量化的优点在于,可允许的重构向量在n维信号空间中密集合堆积(其中n表示变换块中的样本的数量或变换系数的数量)。用于变换块的重构向量指的是变换块的有序的重构的变换系数(或者,替代地,有序的重构的样本)。对于两个变换系数的最简单的情况,在图5a和图5b中说明了这种效果。图5a示出用于独立标量量化的可允许的重构向量(代表二维平面中的点)。可以看出,第二变换系数t′1的允许的值的集合不取决于第一重构的变换系数t′0的选择值。图5b示出用于依赖标量量化的示例。注意,与独立标量量化相对比,第二变换系数t′1的可选的重构值取决于第一变换系数t′0的选择的重构级别。在图5b的示例中,对于第二变换系数t′1有两个不同的可用的重构级别的集合(由不同的颜色示出)。如果第一变换系数t′0的量化索引为偶数(...,-2,0,2,...),则第一集合(蓝点)的任何重构级别可以为第二变换系数t′1选择。并且如果第一变换系数t′0的量化索引为奇数(...,-3,-1,1,3,...),则可以为第二变换系数t′1选择第二集合(红点)的任何重构级别。在所述示例中,第一集合和第二集合的重构级别偏移量化步长尺寸的一半(第二集合的任何重构级别位于第一集合的两个重构级别之间)。变换系数的依赖标量量化具有以下效果:对于每n维单元体积的给定的平均数量的重构向量,变换系数的给定的输入向量与最接近的可用的重构向量之间的距离的期望值会减小。结果,对于给定的平均二进制位的数量,可以减小变换系数的输入向量与向量重构的变换系数之间的平均失真。在向量量化中,此效应称为空间填充增益。对变换块使用依赖标量量化,可以利用高维向量量化的潜在空间填充增益的主要部分。并且,与向量量化相对比,重构过程(或解码过程)的实现复杂度可与具有独立标量量化器的常规变换编码相媲美。图6中示出具有依赖标量量化的变换解码器的框图。主要变化与依赖量化有关,导致箭头的指向为从上至下。如这些垂直箭头所示,具有重构顺序指标k>0的重构的变换系数t′k不仅取决于相关的量化索引qk,而且还取决于用于重构顺序中的先前的变换系数的量化索引q0,q1,…,qk-1。注意,在依赖量化中,必须唯一定义变换系数的重构顺序。如果在熵编码中还利用了与与量化索引qk相关联的重构级别集合的知识,则可以改善整体变换编解码器的性能。这意味着,基于应用于变换系数的重构级别的集合来切换上下文(概率模型)或码字表是有利的。如在常规变换编码中一样,根据本文概述的实施例的变换编码除了分析变换之外还包括量化算法和熵编码。作为分析变换,通常使用合成变换的倒数(或倒数的近似的数),并且通常在给定熵解码过程的情况下唯一地指定熵编码。但是,类似于常规的变换编码,在给定原始的变换系数的情况下,选择量化索引有很大的自由度。变换系数的依赖量化是指这样一种概念,其中,变换系数的可用的重构级别的集合取决于以重构顺序(在同一变换块内)中为先前的变换系数选择的量化索引。预定义多组重构级别,并且基于编码顺序中对于先变换系数的量化索引,选择预定义集合之一来重构当前变换系数。在一组(两个或更多集合)预定的重构级别集合中,选择当前变换系数的可允许重构级别的集合(基于编码顺序中对于先变换系数的量化索引)。重构级别的集合中的重构级别的值由基于块的量化参数来参数化。基于块的量化参数(qp)确定量化步长δ,并且所有重构级别(在所有重构级别的集合中)表示量化步长δ的整数倍。特定的变换系数tk的量化步长尺寸δk(其中k表示重构顺序)可以不仅仅由块量化参数qp确定,但是也可以通过量化加权矩阵和块量化参数确定特定的变换系数tk的量化步长尺寸δk。通常,用于变换系数tk的量化步长尺寸δk由用于变换系数tk(由量化加权的矩阵指定)的加权因子wk和块量化步长尺寸δblock(由块量化参数指定)的乘积给出,δk=wk·δblock。在实施例中,用于变换系数的依赖标量量化使用两个不同的重构级别的集合,并且变换系数tk的两个集合地所有重构级别均表示此变换系数的量化步长尺寸δk的整数倍(即至少部分地由基于块的量化参数确定)。注意,量化步长δk仅代表两个集合中允许的重构值的缩放因子。除了在变换块内用于不同变换系数tk的可能的单个量化步长尺寸δk(并且,因此,是单个缩放因子)之外,相同的两个重构级别的集合用于所有变换系数。在图7中,示出两个重构级别的集合的优选配置。第一量化集合(在图中标记为集合0)中包含的重构级别表示量化步长尺寸的偶数整数倍。第二量化集合(在图中标记为集合1)包含量化步长尺寸的所有奇数整数倍,此外还包含等于零的重构级别。请注意,两个重构集合都对称于零。等于零的重构级别包含在两个重构集合中,否则重构集合不相交。两个重构集合的并集合包含量化步长尺寸的所有整数倍。编码器在允许的重构级别中选择的重构级别在位流内部指示或传输。如在常规的独立标量量化中一样,这可以使用所谓的量化索引来实现,该量化索引也称为变换系数级别。量化索引(或变换系数级别)是整数,其唯一地标识量化集合内(即,重构级别的集合内)的可用的重构级别。量化索引作为位流的一部分传输到解码器(使用任何熵编码技术)。在解码器侧,可以基于当前的重构级别的集合(由编码/重构顺序中的先前的量化索引确定的)和对于当前变换系数的传输的量化索引来唯一地计算重构的变换系数。图7中的重构级别用相关的量化索引(量化索引由表示重构级别的圆圈下方的数字给出)。将等于0的量化索引分配给等于0的重构级别。将等于1的量化索引分配给大于0的最小的重构级别,将等于2的量化索引分配给大于0的下一个重构级别(即,第二小的重构级别大于0),等等。或者,换句话说,大于0的重构级别以大于0的整数编号(即1、2、3等)的值按其升序被标记。类似地,将量化索引-1分配给小于0的最大的重构级别,将量化索引-2分配给小于0的下一个(即第二大的)重构级别,等等。或者,换句话说,小于0的重构级别以小于0的整数编号(即-1、-2、-3等),按其值的降序被标记。表示量化步长的整数倍的重构级别的使用允许在计算方面低复杂度的算法用于在解码器侧重构变换系数。下面基于图7的优选示例对此进行说明。第一量化集合包括量化步长的所有偶数整数倍,而第二量化集合包括量化步长的所有奇数整数倍和等于0的重构级别(两个量化集中都包含)。可以类似于图8的伪代码中指定的算法来实现对变换系数的重构过程。在图8的伪代码中,level[k]表示针对变换系数tk传输的量化索引,并且setid[k](等于0或1)指定当前重构级别的集合的标识符(如以下将更详细描述的,基于在重构顺序中先前的量化索引来确定)。变量n表示由量化索引level[k]和设置标识符setid[k]给出的量化步长尺寸的整数倍。如果使用第一重构级别的集合(setid[k]==0)对变换系数进行编码,此重构级别包含量化步长尺寸δk的偶数整数倍,则变量n是传输的量化索引的两倍。如果使用第二重构级别的集合(setid[k]==1)对变换系数进行编码,则有以下三种情况:(a)如果level[k]等于0,n也等于0;(b)如果level[k]大于0,则n等于量化索引level[k]减去1的两倍;(c)如果level[k]小于0,则n等于量化索引level[k]加1的两倍。这可以使用符号函数指定然后,如果使用第二量化集合,则变量n等于量化索引level[k]减去量化索引的符号函数sign(level[k])的两倍。一旦确定了变量n(指定量化步长尺寸的整数因子),则通过将n乘以量化步长尺寸δk来获得重构的变换系数t′k。如上所述,代替与量化步长尺寸δk的精确乘法,可以通过整数近似来获得重构的变换系数t′k。这在图8的伪代码中进行了说明。此处,变量移位表示向右移位。它的值通常仅取决于块的量化参数(但也可以为块内的不同变换系数更改移位参数)。变量scale[k]代表用于变换系数tk的缩放因子;除了块量化参数之外,它还可以例如取决于量化加权矩阵的相应条目。变量“add”指定一个舍入偏移量,通常将其设置为等于add=(1<<(shift-1))。应当注意,在图8的伪代码(最后一行)中指定的整数算术除舍入外,等效于与量化步长尺寸为δk的乘法,由以下表示δk=scale[k]·2-shift。相对于图8,图9中的另一个(纯粹是表面形式的)变化是,使用三元if-then-else运算符(a?b:c)实现了两个重构级别的集合之间的切换,这从编程语言中就可以知道,诸如作为c编程语言。除了上面讨论的重构级别的集合的选择之外,变换编码中依赖标量量化的另一个任务是用于在定义的量化集合(重构级别的集合)之间切换的算法。所使用的算法确定可以在变换系数的n维空间(并且,因此也可以在重构的样本的n维空间中)中实现的“压缩密度”。更高的压缩密度最终导致编码效率的提高。在优选实施例中,量化集(集合0和集合1)之间的过渡由状态变量确定。对于重构顺序的第一变换系数,将状态变量设置为等于预定值。通常,所述预定义值等于0。按照编码顺序的以下变换系数的状态变量由更新过程确定。特定变换系数的状态仅取决于重构顺序中的前一个变换系数的状态和前一个变换系数的值。状态变量可以具有四个可能的值(0、1、2、3)。一方面,状态变量指定用于当前变换系数的量化集合。当且仅当状态变量等于0或1时,才使用量化集合0;当且仅当状态变量等于2或3时,才使用量化集合1。另一方面,状态变量指定量化集合之间的可能过渡。例如,对于特定变换系数的状态可以仅取决于重构顺序中的先前变换系数的状态以及先前变换系数级别的值的二元函数。以下将二元函数称为路径。在特别优选的实施例中,使用以下状态过渡表,其中“路径”是指以重构顺序中的先前变换系数级别的所述二元函数。表1:具有4个状态的配置的状态过渡表的首选示例。所述路径可以由量化索引的奇偶校验位给出。以level[k]为变换系数级别,可以根据下式确定path=(level[k]&1),其中的运算符&表示两个补码整数运算中的按位“和”。所述路径还可以表示level[k]的其他二元函数。例如,它可以指定变换系数级别等于或不等于0:用于依赖标量量化的状态过渡的概念允许在解码器中重构变换系数的低复杂度实现。在图10中示出使用c型伪码的单个变换块的变换系数的重构过程的优选示例。在图10的伪代码中,指标k指定变换系数的重构顺序。应当注意,在示例代码中,指标k以重构顺序减小。最后一个变换系数具有等于k=0的指标。第一指标kstart指定第一重构的变换系数的重构指标(或更准确地说,是倒数重构指标)。变量kstart可以设置为等于变换块中变换系数的数量减去1,也可以以编码/重构顺序设置为等于第一非零量化索引的指标(例如,如果第一非零量化索引的位置以所应用的熵编码方法被传输)。在后一种情况下,所有先前的变换系数(指标为k>kstart)都被推断为等于0。每个单个变换系数的重构过程与图9的示例相同。在图9的示例中,量化索引由level[k]表示,并且相关的重构的变换由trec[k]表示。状态变量由状态表示。1d表setid[]指定与状态变量的不同值关联的量化集合,而2d表state_trans_table[][]指定给定当前状态(第一参数)和路径(第二参数)的状态过渡。例如,路径可以由量化索引的奇偶校验位给出(使用逐位和运算符&),但是其他概念也是可能的。作为另一示例,路径可以指定变换系数是等于还是不等于零。表的示例以c样式句法如下(这些表与上面显示的表1相同)。setid[4]={0,0,1,1}state_trans_table[4][2]={{0,2},{2,0},{1,3},{3,1}}未使用表state_trans_table[][]来确定下一个状态,代之以可以使用产生相同结果的算术运算。类似地,表setid[]也可以使用算术运算来实现。或者,可以使用算术运算来实现使用1d表setid[]进行表查找和符号函数的组合。依赖标量量化的主要方面是,对于变换系数有不同可允许的重构级别的集合(也称为量化集合)。基于先前的变换系数的量化索引的值来确定当前变换系数的量化集合。如果我们考虑图7中的示例并比较两个量化集合,很明显,集合0中的等于0的重构级别与相邻的重构级别之间的距离比集合1中的大。因此,如果使用集合0,量化索引等于0的可能性更大,如果使用集合1,则较小。通过基于量化集合或更一般地基于用于当前量化索引的状态的切换概率模型,可以在熵编码中利用这种效果。注意,对于码字表或概率模型的适当切换,当熵解码当前量化索引(或当前量化索引的相应二进制决策)时,必须知道所有先前量化索引的路径(量化索引的二元函数)。量化索引可使用类似于h.264|mpeg-4avc或h.265|mpeg-hhevc的二进制算术编码来编码。为此,首先将非二进制量化索引映射到一系列二进制决策(通常称为二进制位)上。在下文中,描述了关于如何,即,以什么顺序和使用什么上下文对由依赖量化产生的量化索引进行二值化和算术编码的各种示例。在此,将量化索引作为绝对值传输,并且对于大于0的绝对值,传输符号。当符号作为单个二进制位传输时,有很多可能将绝对值映射到一系列二进制决策,这些决策在下面描述的示例中表现出来。以下描述首先关注于编码顺序和二值化方案,并因此给出各种示例。在下文中,描述了用于上下文建模的不同示例。后者可以与涉及编码顺序和二值化方案的先前实施例组合,但是先前实施例不限于后面的示例。示例1:传输以下二进制和非二进制句法元素:·sig_flag:指定变换系数级别的绝对值是否大于0;·如果sig_flag等于1,gt1_flag:指定变换系数级别的绝对值是否大于1;·如果gt1_flag等于1,gt2_flag:指定变换系数级别的绝对值是否大于1;·如果gt2_flag等于1,余数:非二进制句法元素,用于指定绝对级别的余数。例如,使用哥伦布-莱斯码在算术编码引擎的旁路模式下传输此句法元素。现有的句法元素没有被推断为等于0。在解码器侧,按如下方式重构变换系数级别的绝对值:abslevel=sig_flag+gt1_flag+gt2_flag+remainder可以传输附加的gtx_flag’s,或者可以省略gt2_flag,或者可以同时省略gt1_flag和gt2_flag。使用自适应的上下文模型对sig_flag和gtx_flag’s进行编码。示例2:传输以下二进制和非二进制句法元素:·sig_flag:指定变换系数级别的绝对值是否大于0;·如果sig_flag等于1,则gt1_flag:指定变换系数级别的绝对值是否大于1;·如果gt1_flag等于1,则:οpar_flag:指定变换系数级别的绝对值的余数(即,绝对值–2)的奇偶校验位;οremainder:非二进制句法元素,用于指定绝对级别的余数(即(绝对值–2–par_flag)/2)。例如使用哥伦布-莱斯码以算术编码引擎的旁路模式传输所述句法元素。现有的句法元素没有被推断为等于0。在解码器侧,按如下方式重构变换系数级别的绝对值:abslevel=sig_flag+gt1_flag+par_flag+2*remainder可以传输附加的gtx_flag’s,也可以省略gt1_flag。作为一个示例,代替上面的余数,可以传输gt2_flag(指定绝对值是否大于3)和(如果gt2_flag等于1)修正后的余数(即,(绝对值–3–par_flag)/2)。然后,根据下式构建绝对值abslevel=sig_flag+gt1_flag+par_flag+2*(gt2_flag+remainder)使用自适应上下文模型对sig_flag,gtx_flag’s和par_flag进行编码。示例3:传输以下二进制和非二进制句法元素:·sig_flag:指定变换系数级别的绝对值是否大于0;·如果sig_flag等于1,则οpar_flag:指定变换系数级别的绝对值的余数(即,绝对值–1)的奇偶校验位;οgt1_flag:指定变换系数级别的绝对值的余数(即(绝对值–1–par_flag)/2)是否大于0;·如果gt1_flag等于1,则gt2_flag:指定变换系数级别的绝对值的余数(即(绝对值–1–par_flag)/2)是否大于1;·如果gt2_flag等于1,则remainder:非二进制句法元素,用于指定绝对级别的余数(即(绝对值–1–par_flag)/2-2)。例如使用golombrice码在算术编码引擎的旁路模式下传输此句法元素。现有的句法元素没有被推断为等于0。在解码器侧,按如下方式重构变换系数级别的绝对值:abslevel=sig_flag+par_flag+2*(gt1_flag+gt2_flag+remainder)可以传输附加的gtx_flag’s,也可以省略gt2_flag。使用自适应的上下文模型对sig_flag,gtx_flag’s和par_flag进行编码。进一步的二值化是可能的。关于上下文建模,提供了以下示例,以说明二值化、二进制位/系数排序和上下文推导之间的相互影响。在特定示例中,用于传输变换块的量化索引的句法包括二进制位,所述二进制位指定量化索引是否等于零或不等于0(上面介绍的sig_flag)。可以在两个或多个概率模型的集合中选择用于对此二进制位进行编码的概率模型。所使用的概率模型的选择取决于当前状态变量(状态变量表示所使用的量化集合)。此时,可以将不同的概率模型的集合用于状态变量的所有可能值,或者可以将状态变量的可能值聚类为两个或多个的群集,并且可以将不同的概率模型的集合用于每个群集(例如,用于状态0和1的第一组概率模型,用于状态2的第二组概率模型和用于状态3的第三组概率模型;或者可替代地,用于状态0和1的第一组概率模型;以及用于状态2和状态3的第二组概率模型)。也可能的是,为其他二进制句法元素(例如gt1_flag或par_flag)选择的概率模型也取决于当前状态变量的值。有利的是,将变换系数的依赖量化与熵编码相结合,其中对量化索引的二进制表示的一个或多个二进制位(也称为量化级别)的概率模型的选择取决于当前量化索引的状态变量。状态变量由编码和重构顺序中的先前变换系数的量化索引(或代表量化索引的二进制位的子集)给出。特别地,有利地,所描述的概率模型的选择与以下熵编码方面中的一个或多个相结合:·传输用于变换块的标志,所述标志指定用于变换块的量化索引是否不等于零,或者用于变换块的所有量化索引是否均等于零。·将变换块的系数划分(至少,对于超过由所述块的尺寸或所包含的样本的数量给定的预定义的大小的变换块)为多个子块。对于图12a中的变换块10,示例性地示出这一点,其中,块的系数12被细分为子块14,这里示例性地示出大小为4×4的系数。如果将变换块划分为多个子块14,则对于一个或多个子块,传输标志(除非基于已经传输的句法元素来推断),所述标志指定所述子块是否包含任何非零的量化索引。子块也可以用于指定二进制位的编码顺序。例如,二进制位的编码可以被分成子块14,使得子块的所有二进制位在传输下一个子块14的任何二进制位之前被编码。但是可以在此子块内部的变换系数上多次遍次编码特定子块14的二进制位。例如,可以在编码任何符号位之前对指定子块的量化索引的绝对值的所有二进制位进行编码。如上所述,绝对值的二进制位也可以分成多个遍次。·按编码顺序传输第一非零的位置。所述位置在图12a中以粗体显示。它可以作为指定在变换系数的2d阵列中的位置的x和y坐标进行传输,可以作为扫描顺序的索引进行传输,也可以通过任何其他手段进行传输。如图12a中所示,按编码顺序的第一非零量化索引(或变换系数)的传输的位置指定,以编码顺序(图12a中标志为白色)推断出在所识别的系数等于零之前的所有变换系数12。仅针对指定位置处的系数(在图12a中标志为黑色/粗体)即,按编码顺序的第一传输进一步数据,并按编码顺序(在图12a中标有阴影)跟随此系数的系数传输进一步数据。图12a中的示例示出具有4x4子块14的16x16变换块10;使用的编码顺序是h.265|mpeg-hhevc中指定的子块方位对角扫描。应当注意,可以稍微修改指定位置处的量化索引的编码(编码顺序中的第一非零系数)。例如,如果针对量化索引的绝对值的二值化包括指定量化索引是否不等于0的二进制位,则不会在指定位置为量化索引发送此二进制位(已经知道系数不等于0),而是将二进制位推论为等于1。·量化索引的绝对值的二值化包括自适应编码的二进制位,它指定量化索引是否不等于0。用于编码此二进制位的概率模型(称为上下文)是从一组候选概率模型中选择的。所选择的候选概率模型不仅可以由当前量化索引的状态变量确定,而且此外,还可以由已传输的用于变换块的量化索引确定。在优选实施例中,状态变量确定可用的概率模型的子集(也称为上下文集合),并且已经编码的量化索引的值确定此子集(上下文集合)内使用的概率模型。在优选实施例中,基于当前变换系数50的局部邻域52中已编码的量化索引的值来确定上下文集合内使用的概率模型,即,其二进制位当前被编码/解码的系数之一,因此需要确定相同的上下文。这种局部邻域52的示例在图12b中示出。在所述图中,当前变换系数50被标志为黑色,而局部邻域52被标志为阴影。在下文中,列出了一些示例性度量,其可以基于局部邻域52内的邻近系数51的量化索引的值来导出,然后可以用于选择预定的上下文集合的概率模型。此外,可将可用于解码器的其他数据用于(明确地或与上面列出的度量结合使用)以导出预定上下文集合中的概率模型。这些数据包括:ο当前变换系数的位置(x坐标,y坐标,对角线的数量或它们的任意组合)。ο当前块的大小(垂直大小,水平大小,样本的数量或其任意组合)。ο当前变换块的纵横比。·量化索引的绝对值的二值化包括指定量化索引的绝对值是否大于1的自适应编码的二进制位。从一组候选概率模型中选择用于对此二进制位进行编码的概率模型(称为上下文)。所选择的概率模型由已传输的变换块量化索引确定。为了选择概率模型,可以使用上述任何方法(对于指定量化索引是否不等于0的二进制位)。如上所述,系数12的量化索引的二进制化的二进制位的编码顺序对块10的编码的效率具有影响。例如,为二进制决策(二进制位),通常为sig_flag,中的至少一个选择的概率模型,这取决于当前状态变量的值。并且由于状态变量是由前面的变换系数级别的二元函数path()确定的,因此,二进制位的编码顺序必须以这样的方式安排:在对于当前的变换系数对sig_flag进行编码时(或更普遍次地,概率模型取决于状态变量的二进制语法元素),所有先前的变换系数的路径都是已知的。例如,指定量化索引的绝对值的所有二进制位可被连续编码。这意味着,在编码/重构顺序中的所有在先前的量化索引的所有二进制位(用于绝对值)在当前量化索引的第一二进制位之前被编码。符号位可以或可以不在变换系数的单独第二遍次中编码(实际上可能取决于所使用的量化集合)。可以在用于子块的绝对值的二进制位之后,但是在用于下一个子块的任何二进制位之前对用于子块的符号位进行编码。在另一示例中,仅指定量化索引的绝对值的二进制位的子集在变换系数的第一遍次中被连续编码。但是这些二进制位唯一指定了状态变量。在变换系数上的一个或多个附加遍次中对其余的二进制位进行编码。如果我们假设所述路径是由量化索引的奇偶校验位指定的,则在变换系数的第一遍次中将包含奇偶校验位二进制位。剩余的二进制位可以通过一个或多个附加的遍次进行传输。在本发明的其他实施例中,使用类似的概念。例如,一元二进制位的数量可以基于已经传输的符号来修改甚至调整。可以在子块的基础上使用不同的遍次,在这种情况下,子块的二进制位被编码为多个遍次,但是在传输下一个子块的任何二进制位之前,传输子块的所有二进制位。下面,列出了一些示例,这些示例用于多次遍次中的二进制决策:示例a:此示例使用上面的示例3的二值化,并且路径由奇偶校验位给出。·遍次1:sig_flag,par_flag,gt1_flag·遍次2:gt2_flag·遍次3:remainder(余数)·遍次4:符号位(符号位)示例b:此示例使用上面的示例3的二值化,并且路径由奇偶校验位给出。·遍次1:sig_flag,par_flag·遍次2:gt1_flag·遍次3:gt2_flag·遍次4:remainder·遍次5:符号位示例c:此示例使用上面的示例1的二值化,并且路径指定绝对值是否大于0。·遍次1:sig_flag·遍次2:gt1_flag·遍次3:gt2_flag·遍次4:remainder·遍次5:符号位示例d:此示例使用上面的示例2的二值化,并且路径由奇偶校验位给出。·遍次1:sig_flag,gt1_flag,par_flag·遍次2:remainder·遍次3:符号位示例e:此示例使用上面示例2的二值化和一个附加的gt2_flag;路径由奇偶校验位给出。·遍次1:sig_flag,gt1_flag,par_flag,gt2_flag·遍次2:remainder·遍次3:符号位作为此示例的略微修改,gt2_flag也可以在单独的遍次中传输。进一步的编码顺序或组合是二值化的,并且编码顺序是可能的。为了实现高吞吐量解码器实现,最好使上下文编码的二进制位(也称为常规编码的二进制位)的数量尽可能少(同时不降低性能)。这可以通过限制某些二进制位的最大数量来实现(类似于hevc)。剩余信息使用算术编码引擎的旁路模式进行编码。下文中描述的减少上下文编码的二进制位的最大数量的方法可以与上面已经所取的以下一个或多个方面相结合:·用于变换系数的量化的多组重构级别。特别地,有两组:第一组包括量化步长尺寸的所有偶数整数倍;第二组包括量化步长尺寸和零的所有奇数整数倍。(至少对于变换块内的一部分变换系数而言)·选择的重构级别的集合取决于状态变量。对于重构顺序中的第一系数,将状态变量设置为等于0。对于所有其他系数,适用以下条件。当前变换系数的状态变量的值由先前变换系数级别的状态变量的值和先前变换系数级别的值的二元函数(路径)确定。·使用二进制算术编码对变换系数级别进行二值化,并对二进制位进行熵编码。二进制化包括sig_flag,它指定变换系数级别是否不等于零。使用自适应概率模型对此标志进行编码,其中选择的概率模型取决于用于当前变换系数(以及可能的其他参数)的状态变量的值。在下文中,描述了用于减少用于依赖标量量化的上下文编码二进制位的数量的多个实施例。对于这些实施例,基于子块来限制最坏情况的解码复杂度。通常,与hevc中一样,将较大的转变换块拆分为4x4子块,并适用以下条件:·变换块的句法包括句法元素(例如,coded_block_flag),所述句法元素指定变换块中是否存在任何非零变换系数级别。如果coded_block_flag等于0,则所有变换系数级别均等于0,并且不再为所述变换块传输任何进一步数据;否则(coded_block_flag等于1),以下规则适用;·传输按扫描顺序排列的第一有效变换系数的x和y坐标(由于实际扫描顺序指定了从高频分量到低频分量的扫描,因此有时称为最后有效系数);·变换系数的扫描是基于子块(通常是4x4子块)进行的;在对任何其他子块的任何变换系数级别进行编码之前,先对子块的所有变换系数级别进行编码;以预定的扫描顺序处理子块,从以扫描顺序包含第一有效系数的子块开始,以包含dc系数的子块结束;·所述句法包括coded_subblock_flag,其指示所述子块是否包含任何非零的变换系数级别;对于按扫描顺序的第一和最后一个子块(即,按扫描顺序包含第一有效系数的子块和包含dc系数的子块),不传输此标志,但是推断为等于1;当传输coded_subblock_flag时,通常在子块的开始处传输它;·对于coded_subblock_flag等于1的每个子块,在子块的扫描位置上的多次扫描遍次中传输的变换系数级别;以下实施例适用于具有coded_subblock_flag等于1的子块的变换系数级别的编码。然而,实施例不限于这种情况。也可以将实施例应用于完整的变换块(没有子块结构)。在这种情况下,也可以使用子块结构(如上所述),但是对最坏情况的复杂度进行限制(如下所述)以完成变换块(而不是将其分别限制在子块上)。实施例1在第一实施例中,在多个扫描遍次中对变换系数级别进行编码。它具有以下属性:·依赖量化的状态机由变换系数级别的奇偶校验位驱动,即二元函数路径(级别)返回其参数的奇偶校验位;·根据状态变量的相应值(以及可选的解码器可用的其他参数,请参见上文),为第一遍次选择sig_flag’s的概率模型;第一遍次:在扫描位置的第一遍次中,传输以下上下文编码的二进制位:·sig_flag,指示变换系数是否不等于0;如果可以推断sig_flag等于1(即,例如,变换块中第一有效扫描位置的情况(由x和y坐标明确由信号通知的),则不传输sig_flag。·如果sig_flag等于1(编码的或推断的值),则针对当前扫描位置另外传输以下内容:οpar_flag指定绝对级别的奇偶校验位减去1;οgt1_flag指定余数(由(绝对级别-1-par_flag)/2给出)是否大于0。·如果达到预定义的上下文编码的二进制位的最大数量,则第一遍次将终止。令max_reg_bins为第一遍次中可传输的最大二进制位的数量,令regbins代表仍可用的常规编码二进制位的数量。然后,适用以下条件:οregbins最初设置为等于max_reg_bins;ο对任何二进制位(sig_flag,gt1_flag,par_flag)进行编码后,regbins会减少1;ο如果在传输扫描位置的二进制位(sig_flag和sig_flag等于1,gt1_flag,par_flag)之后,仍然可用的二进制位regbins的数量小于3(即,下一个扫描位置无法传输sig_flag,par_flag和gt1_flag),则第一遍次扫描将终止。第二遍次:在扫描位置的第二遍次中,传输以下上下文编码的二进制位:·如果扫描位置的gt1_flag等于1,则传输gt2_flag,它指定余数(由(绝对级别-3-par_flag)/2给出)是否大于0。·如果已经传输了上下文编码的gt2_flag的最大预定义数量,则第二遍次将终止。如果到达在第一遍次中没有传输任何数据的扫描位置(即,对于此类扫描位置,在第二遍次中没有传输数据),则第二遍次也终止。第三遍次:在扫描位置的第三遍次中,针对绝对值(即,尚未由传输的sig_flag,par_flag,gt1_flag和gt2_flag指定的数据)的余数,在sig_flag在第一遍次编码的所在的所有扫描位置进行传输。使用结构化代码(诸如哥伦布-莱斯代码)对非二进制句法元素余数进行二值化,然后在算术编码引擎的旁路模式下对二进制位进行编码。余数的将传输给以下扫描位置:·对于所有扫描位置,在第二遍次中传输了等于1的gt2_flag:对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(绝对值–5–par_flag)/2·对于所有扫描位置,在第一遍次中传输了等于1的gt1_flag,但在第二遍次中未传输gt2_flag的所有扫描位置。对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(绝对值–3–par_flag)/2第四遍次:在第四遍次中,对所有扫描位置的绝对级别进行编码,其在第一遍次中没有传输任何数据。绝对级别首先使用结构化代码进行二值化,所使用的代码可能取决于局部活动性度量以及当前状态变量的值。二进制位使用算术编码引擎的旁路模式传输。第五遍次:最后,在第五遍次中,传输所有不等于0的变换系数级别的符号。符号以算术编码引擎的旁路模式传输。所描述的实施例的优点在于,相对于没有限制第一和第二遍次中的二进制位的数量的版本,有效地减少了上下文编码的二进制位的数量。由于上下文编码的二进制位的编码和解码比以旁路模式编码的二进制位需要更复杂的实现,因此降低了复杂度。让我们以图13中所示的伪代码为例来说明上述描述。图13示出根据上述实施例的用于对变换系数块进行解码的方法,但是通过“编码”替换所有的“解码”,可以容易地从中推导出对应的编码实施例。图13中所示的伪代码示出子块14内部的变换系数级别的编码/解码处理。从解码器的角度示出所述伪编码。来自数据流的解码沿着扫描顺序以扫描块10的变换系数位置12的遍次601至605的序列进行。在随后描述的实施例中改变了所使用的二进制化,即,用于定义系数的量化索引的标志/二进制位,标志的编码/解码和余数在编码/解码遍次上的分布,因此,图13的描述集中于概述或粗略描述的规定也适用于随后描述的实施例。遍次所基于的扫描顺序的可能性在上文中已经相对于图12a和12b进行了描述,并且在图12b中在62处示例性地示出,但是请注意,遍次601至605不需要扫描变换块10的所有变换系数位置12,而是它们都使用该扫描顺序62;此外,针对一些标志类型的标志可以在相同遍次中传输,如相对于图13中的实施例所描述的,但是也存在其他可能性。在图13中出现的预定义值max_reg_bins和max_gt2_bins分别指定遍次1601和遍次2602中的常规经编码二进制位的最大数量。布尔变量firstsubblock指定当前子块是否是针对块10(在该变换块内)按编码顺序经编码/解码的第一子块,诸如包含图12a中的粗体/黑色系数12的子块。firstsigscanidx指定与在变换块10中的第一有效变换系数的位置相对应的扫描索引,即,在变换块句法的开始处用信号显式通知的系数。从现在起使用参考符号64表示所述位置。minsubblockscanidx和maxsubblockscanidx表示当前子块,即当前经解码/编码的子块,的扫描索引的最小值和最大值。注意,为当前子块14传输任何数据所针对的第一扫描索引startscanidx取决于所述子块是否包括按照扫描顺序的第一有效系数。如果是这种情况,则第一扫描遍次从与第一有效变换系数64相对应的扫描索引处开始;否则,第一扫描通过从子块的最小扫描索引开始,诸如子块14的左下角系数位置,或者换句话说,是与扫描顺序62所引导至的dc位置66相距最远的那个子块。再次注意,尽管图13是使用逐子块编码的实施例,但是可以容易地修改所述概念以涉及对块进行系数编码或将以下描述的方面中的一些与子块相关,而其他方面与整个块10相关。在遍次601至604的序列中,上下文自适应二进制算术编码/解码用于对分别从具有一个或多个标志类型的集合中分别选择的标志或二进制位进行编码/解码,在当前描述的实施例1中,例如,包括sig_flag,par_flag,gt1_flag和gt2_flag,并且可变长度码用于对余数值进行编码/解码。也就是说,使用统一的非自适应概率模型,以二进制算术编码/解码引擎的旁路模式对可变长度代码的码字的二进制位进行编码/解码,导致单个二进制位的压缩率为1,因此,分别针对当前扫描的变换系数位置,诸如,图12b中由50指示的那个,对每个标志和每个余数值进行解码。在伪代码中,此当前位置由参数或索引k指示。在遍次601至605的序列中从数据流中进行解码的方式是,对于一组变换系数位置的编码的集合中的每个变换系数位置,对一个或多个标志和一个余数中的至少一个进行编码/解码。“变换系数位置的编码的集合”例如在预定义的第一变换系数位置,诸如startscanidx和预定义的最后一个变换系数位置,诸如endscanidx之间延伸,其中预定义的第一和最后一个变换系数位置指定变换块中变换系数位置的子集;可替代地,编码集合在第一非零系数64和诸如dc系数66的预定义的系数之间延伸。也就是说,在编码的集合中可以存在一个或多个系数,对于所述系数,余数被编码/解码,但是没有标志,对其一个或多个标志和一个余数的一个或多个系数进行编码/解码,以及对其一个或多个标志但没有余数的一个或多个系数进行编码/解码。对于每个系数,其编码的数据即标志和/或余数的编码/解码是顺序进行的,以便在顺序意义上连续地,或换句话说逐步地限制初始值域。例如,每个系数位置的量化索引的绝对值相对于ω=0to2x-1,e.g.x=16的初始值域在x二进制位表示中进行表示,其中任何用于当前扫描的变换系数位置的量化索引的绝对值都必须位于其中。通过顺序编码/解码,此初始值域被逐步限制为仅包括当前在值域内扫描的变换系数位置的量化索引的绝对值。就是说,最后,对于特定变换系数位置,一个或多个标志和一个编码/解码的余数值中的至少一个,在初始值域之外唯一地定义了后者。每个标志将用于当前扫描的变换系数位置的量化索引的绝对值的值域限制为第一子部分或第二子部分,其中用于当前扫描的变换系数位置的量化索引的绝对值的值域被双分。更准确地说,每个标志将值域部分双分,其中由于先前的一个或多个标志,如果有的话,已知各个系数的量化索引的绝对值在所述值域部分中。例如,sig_flag导致值域ω分为a={0}和然后,par_flag将限制为奇数或偶数,依此类推。如果对于某个当前扫描的变换系数位置50对余数值进行编码/解码,所述余数值唯一地指示对于当前扫描的变换系数位置,如果对于当前扫描的变换系数位置至少一个标志被解码,量化索引的绝对值超出值域之外,或者如果对于当前扫描的变换系数位置没有标志被解码,则在初始值域之外。注意,没有余数值被编码/解码的变换系数位置,针对这些变换系数位置被编码/解码的一个或多个标志已经将值域限制为仅包括一个绝对值。关于符号,如本实施例中所取的那样,如果整体对变换系数进行符号化,但不一定在修正的实施例中,则可以在旁路模式下分别对其进行编码。在图13中,它们被示出为针对任何非零量化索引在自己的遍次605中被单独地编码/解码,但是这可以被改变以达到进一步的实施例。依赖量化用于顺序地对变换系数位置的经编码集合中的变换系数位置的量化索引进行反量化。通过此措施,获得用于此变换系数位置的集合的经重构的变换系数。例如,可以使用如上所述的状态过渡。例如,其可以通过以下方式,使用沿扫描顺序62的状态过渡表或格状图来体现:即,通过如图10中所示,例如针对使用索引k表示的当前变换系数位置,其量化索引是通过上述概念被唯一地编码/解码的,基于针对当前变换系数位置状态过渡所取的状态,由图7中的“状态”指示,唯一地选择72多个73重构级别集合,即图7的集合0和集合1,中的一个重构级别集合,并且将量化索引level[k]反量化74到在所述一个重构级别集合中量化索引所指向的重构级别trec[k]上,即经重构的变换系数被设置为等于所述重构级别,并且通过对针对当前变换系数位置、即在依赖量化期间当前扫描的变换系数位置所取的状态过渡的状态进行更新76,以便产生针对在扫描顺序中跟随在当前变换系数之后的变换系数位置的更新状态78。根据当前变换系数位置的量化索引level[k]完成更新76,如图10中的80所示,其中为此使用表82。同样,使用所选择的级别集的量化在编码器一侧进行。如以上所示例的,状态过渡可以在与图10中所述的向量的4个元素相对应的四个不同状态之间转换。此外,可以根据以下情况通过在第一后继状态与第二后继状态841和842之间进行决定来执行更新:二元函数86,诸如奇偶校验函数,应用于当前变换系数位置的量化索引80,其中第一后继状态和第二后继状态取决于当前变换系数位置的状态,如88所示。编码和解码器可以通过预定量化步长尺寸,即图7中的δ和图10中的2shift对重构级别集合进行参数化,其中关于预定量化步长尺寸的信息例如在数据流中被传输。此外,如图7中所示,每个重构级别集合可以由预定量化步长尺寸的整数倍组成,其对于当前变换系数位置的所有重构级别集合是恒定的或有效的。注意,诸如由于上述缩放矩阵,可以对一个块10内的不同系数使用不同的步长尺寸。多个重构级别集合中的重构级别集合的数量可以是两个,并且多个重构级别集合可以包括第一重构级别集合,即集合0,其包括预定量化步长尺寸的零和偶数倍,以及第二重构级别集合,即集合1,包括预定量化步长尺寸的零和奇数倍。到目前为止,图13的描述也适用于随后描述的实施例。然而,实施例1使用以下机制来限制使用上下文适应性编码的标志的数量。尤其是,在遍次序列的某个遍次中,即在图13中遍次601中,sig_flag类型的标志只能达到进行编码/解码,“达到”在本文中应理解为之前的位置并包括尽管对位置“从[位置112]开始”的任何引用应理解为表示位置112之后的位置,不包括位置112-预定变换系数位置,在此遍次中,按照扫描顺序,预定中止标准填满了第一次。在图13中,不仅以此方式限制了sig_flag的数量,而且还限制了遍次601中的par_flag和gt1_flag和遍次602中的gt2_flag的数量。请注意,所述限制也会影响二值化:只要中止标准被满足,则不再将各个标志类型用于按照扫描顺序在刚刚提到的预定变换系数位置之后的系数位置的定义。即,预定标志类型的标志,即受编码/解码数量限制,仅针对在扫描顺序中预定变换系数位置之前并包括预定变换系数位置的类型进行编码/解码。因此,在图13中,一旦满足与遍次601有关的标准,即与max_reg_bins有关,对于按照扫描顺序在预定变换系数位置之后的变换系数位置的每个编码的集合,在此,在遍次序列的进一步遍次中,即在图13的遍次情况下遍次603,对余数值之一进行编码,以使得后者唯一地指示超出出初始值域之外的各个变换系数位置的量化索引的绝对值,即不受用于编码/解码相应系数的量化索引的标志类型的任何标志对初始值域的任何先前限制。为了说明用于限制上下文自适应编码/解码标志的数量的刚刚概述的概念,请参考图14至图15,除了图13之外。图14示出在90处的变换系数的量化索引的绝对值的初始值域。此初始值域可以包含零和某个最大值之间的所有整数值。初始值域也可以是一个向较大数字开放的间隔。初始值域90中的整数值的数量不必一定是2的幂。此外,图14示出参与表示各个量化索引,即参与表示其绝对值的各种标志类型。sig_flag类型指示某个量化索引的绝对值是否为零。即,sig_flag92将初始值域90双划分为两个子部分,即,一个仅包括零,而另一个包括所有其他可能的值。即,如果sig_flag已经如图14的底部所示恰好为零,则sig_flag已经已经唯一地指示了量化索引的绝对值。初始值域90的非零值形成了一个值域94,所述值域94为进一步由标志类型par_flag进行双划分,即一方面变成奇数,另一方面变成偶数。仅当某个量化索引是非零的时,才需要存在par_flag96。关于相同的双分值域94,par_flag96没有产生唯一性。它指示一半是下一个结果(递归定义的)值域,因此,下一个标志即gt1_flag98进一步在par_flag之后对此结果值域进行双分,即在量化索引值为奇数值的情况下为奇数非零值100,在量化索引值为偶数值时是非零的值102。特别地,以一种方式完成gt1_flag98的双分,使得一个部分分别仅包括值域100的最小奇数值或域102的最小非零偶数值。另一部分包括相应域100/102的所有其他值。后者的剩余值域以相同的方式由标志gt2_flag104进一步二分,即,最小值代表一个部分,其他值代表另一部分。如图14的底部所示,这意味着如果某个变换系数量化索引恰好为零,则仅将sig_flag92编码为某个变换系数的量化索引,并将sig_flag,par_flag和gt1_flag92、96和98编码为如果变换系数碰巧落入包括绝对值1和2的值区间106中,则表示所述变换系数的特定量化索引,并且对所有标志92、96、98和104进行编码以表示特定变换系数的量化索引的绝对值,如果变换系数恰好落入紧随其后的包括值3和4的值区间108中,则为所述变换系数的量化索引编码余数,所述变换系数的绝对值位于初始值域90之外的剩余区间110中。标志类型92、96和98的标志在第一遍次601中编码。标志104在第二遍次602中编码。这些标志使用上下文自适应算法编码编码。然而,遍次中编码的标志的数量可以被限制并且根据图13被限制。在图13的示例中,通过601中的标志类型的标志的数量被限制为max_rec_bins。仅当仍然可以在遍次601中仍对所有三种标志类型进行编码而在遍次601中编码的标志的总数没有超过遍次601中要被编码/解码的标志的最大允许数量时,标志类型92、96和98的标志才在沿顺序62的第一遍次中针对当前访问的变换系数位置12进行编码。在图15中,示出未超过遍次601中允许的标志最大数量的最后变换系数位置为112。类似地,仅在第二遍次中沿顺序62的当前访问的变换系数位置12的标志类型104的标志编码,前提是所述标志仍可以在遍次602中进行编码而遍次602中的已编码标志104的总数不超过遍次602中要进行编码/解码的最大允许标志的数量。在图15中,示出未超过遍次602中的最大允许标志数的最后变换系数位置为116。图15示出相对于子块14的变换系数或其量化索引的编码,但是如上所述,只要将图13的整个过程作为一个整体应用于块10,图13的实施例在这个范围内就可以有变化。此外,图15示出其中变换系数的编码的集合包括所有系数的情况,例如,对于包括第一非零变换系数位置64的扫描顺序62中的子块之后的子块而言就是这种情况。因此,在图15中用阴影线示出的变换系数位置与变换系数的量化索引以包括标志类型92、96和98的方式表示的变换系数有关。因此,在第一遍次601中,这些标志类型92、96和98的标志对于直到位置112的变换系数12进行编码。对于直到位置112的变换系数12中的一些,仅需要对sig_flag92进行编码,而对于其他所有三种标志类型,都包括在遍次601中并进行编码/解码。图15示出数据流相应地包括对应的部分114,这些标志类型92、96和98的标志在遍次601内被编码到其中。在第二遍次602中,变换系数位置12沿着扫描顺序62再次穿过,直到可以在遍次602期间编码的gt2_flag的最大数量,即这些标志的数量不超过max_gt2_bins,则将gt2_flag编码用于变换系数,其中,所述gt2_flag98指示相应的量化索引的绝对值位于包括间隔108和118的剩余值域部分内。图15示出所有变换系数位置12沿着扫描顺序62直到位置116在阴影线都划过时,并将这些位置与后续的变换系数位置12直到位置112区别开来,位置112只是简单地画了阴影线。图15中未用阴影线显示了位置112之后的所有变换系数位置12。将在遍次602期间编码的gt2_flag104编码为数据流的部分118,所述部分立即紧随部分114之后。在位置116之后的遍次602期间未对其他数据进行编码。在接下来的两个遍次603、604,可解释为一遍次的一半中,提示被编码到数据流的部分120中,紧接在部分118之后。特别地,在部分120的第一子部分中,在遍次603期间,对直到位置112的变换系数位置12的提示进行编码。因此,这些余数指示出针对交叉影线变换系数位置12的间隔110之外的某个变换系数位置12的量化索引的绝对值,即直到位置116的变换系数位置12以及剩余值域之外的某个量化系数位置12包括用于简单阴影线变换系数位置12的间隔108和110,即那些跟随位置116直到位置112的间隔。在子部分122中,变换系数位置12的余数直到位置112,还有另一个子部分在遍次604中,在位置112之后的每个变换系数位置12的余数,即每个非阴影的变换系数位置12,被编码到数据流中。后面的余数直接指示量化索引,即直接指示绝对值超出初始值域90。以这种方式,减少了上下文自适应编码的标志92、96、98和104的数量,并且使用旁路模式,即使用固定的等概率模式编码的二进制位的数量已增加,即余数的二值化的二进制位。即,在图13中,上述中止标准与在第一遍次中解码的标志的数量是否超过预定阈值有关。除了sig_flags,还对类型96和98的标志进行计数。可能是,从诸如哥伦布-莱斯码之类的预定义的可变长度码集合中选择了用于对当前扫描的变换系数位置的余值进行编码/解码的可变长度码。取决于当前扫描的变换系数位置是否位于预定变换系数位置112之前,即,在图15中的阴影线位置,还是按照扫描顺序62跟随预定变换系数位置112,选择的代码可以不同,其中,在图13的情况下,所述选择甚至可以取决于所述位置是否位于位置112和116之间。例如,余数的编码/解码可以包括与遍次604而非遍次603中不同的vlc码或与当在图13中的128处对图15的简单交叉阴影系数的余数进行编码/解码时所使用不同的vlc码相比,在130处对图15的阴影系数的余数进行编码/解码时所使用的vlc代码。选择涉及可参数化的vlc码的参数化,诸如选择指数golomb码的阶数,或如下所述的莱斯参数。可替代地,指示所选择的可变长度码的参数可以在通过603,4中保持恒定,并且可以在先前变换系数位置的量化索引满足预定标准时递增地改变。或者可以根据在对余数进行编码时,当前扫描的变换系数位置邻近的变换系数位置的量化索引来选择二值化参数。例如,仅对于图15中所有阴影线的位置,以仅在扫描顺序62之前的余数的当前变换系数位置被编码或者是预定变换系数位置112的情况下,可以使用这种依赖性。这方面将在下面概述。从所选/已参数化的代码中选择的代码字还取决于对余数进行编码/解码的系数位置:量化索引的绝对值减去可通过参数的第一遍次和第二遍次601,2的标志92、96、98和104表示的最大值,即4,加上1,即5,或由量化系数所属的系数的情况中任何系数的量化索引的余数二值化来表示或vlc编码到位置116,量化索引的绝对值减去第一遍次601的标志92、96、98可表示的最大值,即2加1,即3表示,或量化系数所属的系数的情况中任何系数的量化索引的余数二值化来表示或vlc编码到位置116之后,直到位置112,并且量化系数的绝对值直接表示或进行vlc编码在量化索引所属的系数的情况下,任何系数的量化索引的余数二值化都位于位置112之后。图13的实施例的几种变型可以适用。例如,gt2_flag可能不会在单独的遍次602中进行编码/解码,而是包含在第一遍次601中。然后,编码的gt2_flag的数量可能会包含在第一遍次601中上下文编码的二进制位的计数中,并且如果可用的上下文编码二进制位的数量小于4,则第一遍次终止。即,在这种情况下,使用上下文编码二进制位的数量的单个阈值。或者,根本不传输gt2_flag,在这种情况下,如果gt1_flag等于1,则对余数进行编码。在所述实施例的另一变型中,包括一个或多个另外的gtx_flag。与gt2_flag相似,仅当先前的gty_flag(y=x-1)等于1时才对这些标志进行编码。它们指示量化索引的绝对值是否大于先前gtx_flags指定的最小可能值。绝对值的重构由下式给出abslevel=sig_flag+par_flag+2*(gt1_flag+gt2_flag+gt3_flag+…+remainder)。这些标志可以与gt2_flag在同一遍次中编码(这包括gt2_flag包含在第一遍次中的情况),也可以在一个或多个附加遍次中进行编码。在后一种情况下,可以应用其他阈值来限制gtx_flag的数量。以下描述的第二实施例在一个方面与第一实施例不同:par_flag和gt1_flag的顺序被交换(并且这些标志的含义相应地改变)。如果sig_flag等于1,则首先传输gt1_flag,它指定变换系数级别的绝对值是否大于1。如果gt1_flag等于1,则par_flag指定余数的奇偶校验位(即,绝对级别–2)。对于第一实施例,适用以下:·依赖量化的状态机由变换系数级别的奇偶校验位驱动,即二元函数路径(级别)返回其自变量的奇偶校验位;·根据状态变量的相应值(以及可选的其他可用于解码器的参数,请参见上文),选择第一遍次中sig_flag的概率模型;第一遍次:在扫描位置的第一遍次中,传输以下上下文编码的二进制位:·sig_flag,指示变换系数是否不等于0;如果可以推断sig_flag等于1(即,例如,变换块中第一有效扫描位置的情况(由x和y坐标明确表示的信号),则不传输sig_flag。·如果sig_flag等于1(编码或推断的值),则针对当前扫描位置另外传输以下内容:οgt1_flag指定绝对级别是否大于1;ο如果gt1_flag等于1,则par_flag指定绝对级别的奇偶校验位减去2;·如果达到预定义的上下文编码的二进制位的最大数量,则第一遍次将终止。令max_reg_bins为第一遍次可传输的最大二进制位数,令regbins代表仍可用的常规编码二进制位数。然后,适用以下条件:οregbins最初设置为等于max_reg_bins;ο对任何二进制位(sig_flag,gt1_flag,par_flag)进行编码后,regbins会减少一;ο如果在传输扫描位置的二进制位(sig_flag,如果适用,则为gt1_flag和par_flag)之后,仍然可用的binregbins的数量少于3(即,不可能为下一个扫描位置传输sig_flag,par_flag和gt1_flag),则第一遍次扫描将终止。第二遍次:在扫描位置的第二遍次中,传输以下上下文编码的二进制位:·如果扫描位置的gt1_flag等于1,则传输gt2_flag,它指定余数(由(绝对级别-2-par_flag)/2给出)是否大于0。·如果已经传输了上下文编码的gt2_flag的最大预定义数量,则第二遍次将终止。如果到达在第一遍次中没有传输日期的扫描位置(即,对于此类扫描位置,在第二遍次中没有传输数据),则第二遍次也终止。第三遍次:在扫描位置的第三遍次中,针对绝对值(即,尚未由传输的sig_flag,par_flag,gt1_flag和gt2_flag指定的数据)的余数,为sig_flag所在的所有扫描位置进行传输在第一遍次中编码。使用结构化代码(诸如哥伦布-莱斯代码)对非二进制句法元素余数进行二值化,然后在算术编码引擎的旁路模式下对二进制位进行编码。余数将传输给以下扫描位置:·对于所有扫描位置,在第二遍次中传输了等于1的gt2_flag:对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(absolutevalue–4–par_flag)/2·对于所有扫描位置,在第一遍次中传输了等于1的gt1_flag,但在第二遍次中未传输gt2_flag的所有扫描位置。对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(absolutevalue–2–par_flag)/2第四遍次:在第四遍次中,对所有扫描位置的绝对级别进行编码,在第一遍次中没有传输任何数据。绝对级别首先使用结构化代码进行二值化,所使用的代码可能取决于局部活动性度量以及当前状态变量的值。使用算术编码引擎的旁路模式传输二进制位。第五遍次:最后,在第五遍次中,传输所有不等于0的变换系数级别的符号。符号以算术编码引擎的旁路模式传输。图16的伪代码进一步示出子块内部的变换系数级别的编码/解码处理。适用与第一实施例相同的注释。图17示出图14的修正版本,其适用于图16。图15对于图16也是有效的,除了细节诸如值域的开始,其余与位置112和116之间的系数有关的余数,即可使用标志92、96和98表示的最大值,在图13的情况下为2,在图16的情况下为1。可以看出,与图13的情形不同,第一遍次601中的标志par_flag的编码/解码专门针对在所述变换系数位置以及在所述变换系数位置之后标志gt1_flag指示对应的扫描变换系数的量化索引在量值上大于一的变换系数位置发生。在图13的情况下,此编码/解码不可避免地在通过对应的sig_flag指示非零的情形中发生。在此实施例的变型中,gt2_flag没有在单独的遍次中被编码,而是被包括到第一遍次中。然后,编码的gt2_flags的数量被包括在第一遍次的经上下文编码的二进制位的计数中,并且如果可用的上下文编码二进制位的数量小于4,则终止第一遍次。即,在这种情况下,使用针对经上下文编码的二进制位的数量的单个阈值。替代地,根本不传输gt2_flag,在这种情况下,如果gt1_flag等于1,则对余数进行编码。在所述实施例的另一变型中,包括一个或多个另外的gtx_flag。与gt2_flag相似,仅当先前的gty_flag(y=x-1)等于1时才对这些标志进行编码。它们指示量化索引的绝对值是否大于先前gtx_flags指定的最小可能值。绝对值的重构由下式给出abslevel=sig_flag+gt1_flag+par_flag+2*(gt2_flag+gt3_flag+…+remainder)这些标志可以与gt2_flag在同一遍次中编码(这包括gt2_flag包含在第一遍次中的情况),也可以在一个或多个其他遍次中进行编码。在后一种情况下,可以应用进一步阈值来限制gtx_flag的数量。第三实施例与第一实施例的不同之处在于:第一遍次中的sig_flag被编码用于所有扫描位置。仅par_flag和gt1_flag的存在是由已传输的上下文编码二进制位的数量确定的。对于第一实施例,适用以下条件:·依赖量化的状态机由变换系数级别的奇偶校验位驱动,即二元函数路径(级别)返回其自变量的奇偶校验位;·根据状态变量的相应值(以及可选的其他可用于解码器的参数,请参见上文),选择第一遍次中sig_flag的概率模型;第一遍次:在扫描位置的第一遍次中,传输以下上下文编码的二进制位:·sig_flag,指示变换系数是否不等于0;如果可以推断sig_flag等于1(即,例如,变换块中第一有效扫描位置的情况(由x和y坐标明确表示的信号),则不传输sig_flag。·如果sig_flag等于1(编码或推断值),则针对当前扫描位置另外传输以下内容:οpar_flag指定绝对级别的奇偶校验位减去1;οgt1_flag指定余数(由(absolutelevel-1-par_flag)/2)给出)是否大于0。·如果达到上下文编码的二进制位(包括尚未编码的sig_flags)的最大预定义数量,则跳过par_flag和gt1_flag的传输。令max_reg_bins为第一遍次可传输的最大二进制位数,令regbins代表仍可用的常规编码二进制位数。然后,以下适用:οregbins最初设置为max_reg_bins减去要在第一遍次中传输的sig_flag的数量(此数量由第一遍次中的第一扫描索引,子块的最后一个扫描索引以及所述子块是否包含扫描顺序中的第一有效系数);ο在对任何gt1_flag或par_flag进行编码后,将regbins减1;ο如果在传输扫描位置的二进制位(sig_flag,如果sig_flag等于1,gt1_flag,par_flag)之后,仍然可用的binregbins的数量小于2(即,无法传输par_flag和gt1_flag用于下一个扫描位置),那么对于第一遍次扫描中的所有后续扫描索引,仅传输sig_flag。第二遍次:在扫描位置的第二遍次中,传输以下上下文编码的二进制位:·如果扫描位置的gt1_flag等于1,则传输gt2_flag,它指定余数(由(absolutelevel-3-par_flag)/2)给出)是否大于0。·如果已经传输了上下文编码的gt2_flag的最大预定义数量,则第二遍次将终止。如果在第一遍次中仅传输了等于sig_flag的sig_flag到达扫描位置,第二遍次也将终止(即,对于此类扫描位置,第二遍次中未传输任何数据)第三遍次:在第三遍次通过扫描位置时,传输sig_flag、par_flag、gt1_flag和par_flag在一遍次中编码的所有扫描位置的绝对级别的余数(即未被发送的sig_flag、par_flag、gt1_flag和gt2_flag指定的数据)。使用结构化的代码(诸如哥伦布-莱斯代码)对非二进制句法元素余数进行二值化,然后在算术编码引擎的旁路模式下对二进制位进行编码。余数将传输给以下扫描位置:·对于所有扫描位置,在第二遍次中传输了等于1的gt2_flag:对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(absolutevalue–5–par_flag)/2·对于所有扫描位置,在第一遍次中传输了等于1的gt1_flag,但在第二遍次中未传输gt2_flag的所有扫描位置。对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(absolutevalue–3–par_flag)/2第四遍次:在第四遍次中,对所有扫描位置编码绝对值减去1,在第一遍次中仅编码等于1的sig_flag(但不传输gt1_flag)。余数(绝对级别减去1)首先使用结构化代码进行二值化,所使用的代码可能取决于局部活动性度量以及当前状态变量的值。使用算术编码引擎的旁路模式传输二进制位。第五遍次:最后,在第五遍次中,传输所有不等于0的变换系数级别的符号。符号以算术编码引擎的旁路模式传输。图18的伪代码进一步示出子块内部的变换系数级别的编码处理。适用与第一实施例相同的注释。图14和图15对图18也有效,除了以下事实:位置112指示从所述位置开始沿扫描顺序62开始,不再对标志96和98进行编码,而sig_flag可用于整个位置块,因此系数位置下游位置112的余数,未划阴影线的,不会立即表示相应系数的量化索引,而是仅对位置112之后的系数进行编码,仅其sig_flag表示非零且表示仅量化索引的绝对值减去1。请注意,在对第一等于1的sig_flag进行编码之后,状态变量是未知的,后面没有gt1_flag/par_flag。因此,对于随后的sig_flag,必须独立于状态变量导出使用的概率模型(对于先前的sig_flag,它仍然取决于状态变量)。实施例3的以下变型是可能的:1.状态机由sig_flag(即,变换系数级别等于或不等于零的信息)驱动。二元函数路径指定级别是否不等于零。在这种情况下,不需要传输奇偶校验位标志,除了sig_flag之外,仅传输以下数据:·第一遍次:gt1_flag的(传输的sig_flag等于1;指定绝对级别是否大于1);·第二遍次:gt2_flag的(传输的gt1_flag等于1;指定绝对级别是否大于2)。这具有以下优点:对于所有sig_flag,状态变量都是已知的,因此,用于对sig_flag进行编码的概率模型可以根据状态变量进行选择sig_flag。此外,可以从第一遍次中删除gt1_flag,并在独立的中进行编码,如下所示:·第一遍次:传输sig_flags·第二遍次:传输gt1_flags(最多gt1_flags的最大数量);·第三遍次:传输gt2_flags(最多gt2_flags的最大数量);·第四遍次:对于扫描索引的余数,其中(a)传输了等于1的gt2_flag和(b)传输了等于1的gt1_flag,但未传输gt2_flag;·第五遍次:sig_flag等于1的扫描位置的绝对级别减去1,但未传输gt1_flag。·第六遍次:所有变换系数级别不等于0的符号。2.状态机从奇偶校验位驱动状态机切换到有效位驱动状态机。这意味着:·对于regbins(在上面的伪代码中指定)大于或等于2的所有扫描索引,将使用奇偶校验位(即,二元函数路径指定变换系数级别的奇偶校验位)来更新状态变量;·在regbins小于2之后,状态变量将使用有效位信息进行更新(即,二元函数路径(级别)指定级别是否不等于零)。这样做的优点是,所有sig_flag的状态变量都是已知的,因此,可以基于状态变量选择用于对sig_flag进行编码的概率模型。与变型1(状态机始终由sig-flag驱动)相比,在n维空间中具有更高的打包密度,因此可以实现更高的编码效率。即,到目前为止描述为纯奇偶校验位驱动的在76处的状态过渡可以变化到这样的程度,即状态过渡的状态的更新取决于图10中由k给出的当前变换系数位置,相对于扫描601,位于扫描顺序62之前,或位于预定变换系数位置112,即位于图15中的阴影线位置之一,或者位于预定变换系数位置112之外,即位于图15中的非阴影线位置之一。如果当前变换系数位置沿扫描顺序62没有超出预定变换系数位置112,即在预定变换系数位置112之前或等于预定变换系数位置112,则更新取决于当前变换的第二标志类型96的标志系数位置,即奇偶校验位,如前所述,但是当前变换系数位置按扫描顺序位于预定变换系数位置之后,即沿扫描顺序62超出所述位置,更新取决于当前变换系数位置的第一标志类型的标志,即取决于当前系数的零度。然后,当上下文自适应熵解码预定第一标志类型的标志时,即,sig_flag参与,根据本实施例,甚至超出不同于在112处停止的奇偶校验标志和gt1标志的编码的系数位置112之外的每个系数的量化索引的表示,可以利用这一点:因此,解码器和编码器可以针对当前扫描的变换系数为之前的所有变换系数位置确定此类sig_flag的上下文,包括然后,根据状态过渡对当前扫描的变换系数位置所取的状态,跟随预定变换系数位置112。甚至可替代地,可以选择以任何方式完成状态更新,诸如,完全由奇偶校验位驱动,并根据依赖量化状态,直到在位置112之后独立于所述状态,完成直至到位置112的sig_flags的上下文。与实施例1类似,可能有以下变化:·gt2_flag包含在第一遍次中;·gt2_flag根本没有编码。·附加的gtx_flag已编码。即,在第三实施例的情况下,存在预定第一标志类型的标志92,即sig_flag和预定第二标志类型的标志96,即par_flag,并且与其他实施例一样,它们以这样的方式进行编码/解码,使得在扫描顺序62中对第一变换系数位置之后的对第二变换系数位置的量化索引的绝对值的值域的标志量化索引的绝对值的值域进行限制的标志之前,对第一变换系数位置的量化索引的绝对值的值域进行限制的标志进行编码/解码。即,在任何sig_flag[k+1]和par_flag[k+1]之前对任何sig_flag[k]和par_flag[k]进行编码/解码。参照图13,在预定第二标志类型的标志,即par_flag的编码/解码被执行到预定变换系数位置112之前,所述预定变换系数位置112在图18中由“startidxbypass-1”索引,在第一遍次601,中止标准沿着扫描顺序62填满第一次。例如第一遍次601中的编码标志的数量超过某个阈值-预定第一标志类型的标志,即sig_flag的编码/解码以扫描顺序62超出预定变换系数位置112进行,即对于所有的变换系数或者除了第一个非零量化索引以外的所有位置64,无需调查任何中止标准。第四实施例在一个方面不同于第三实施例:par_flag和gt1_flag的顺序被交换(并且这些标志的含义相应地改变)。如果sig_flag等于1,则首先传输gt1_flag,它指定变换系数级别的绝对值是否大于1。如果gt1_flag等于1,则par_flag指定余数的奇偶校验位(即,绝对级别–2)。对于第一实施例,适用以下条件:·对于依赖量化的状态机由变换系数级别的奇偶校验位驱动,即二元函数路径(级别)返回其自变量的奇偶校验位;·根据状态变量的值(以及可选的其他可用于解码器的参数,请参见上文),为第一遍次中选择sig_flag的概率模型;第一遍次:在扫描位置的第一遍次中,传输跟随的下上下文编码的二进制位:·sig_flag,指示变换系数是否不等于0;如果可以推断sig_flag等于1(即,例如,变换块中第一有效扫描位置的情况(由x和y坐标明确表示的信号),则不传输sig_flag。·如果sig_flag等于1(编码或推断地值),则针对当前扫描位置另外传输以下内容:οgt1_flag指定绝对级别是否大于1;ο如果gt1_flag等于1,则par_flag指定绝对级别的奇偶校验位减去2;·如果达到上下文编码的二进制位(包括尚未编码的sig_flags)的最大预定义数量,则跳过par_flag和gt1_flag的传输。令max_reg_bins为第一遍次中可传输的最大二进制位数,令regbins代表仍可用的常规编码二进制位数。然后,适用以下条件:οregbins最初设置为max_reg_bins减去要在第一遍次中传输的sig_flag的数量(此数量由第一遍次的第一扫描索引,子块的最后一个扫描索引以及所述子块是否包含扫描顺序中的第一有效系数);ο在对任何gt1_flag或par_flag进行编码后,将regbins减1;ο如果在传输扫描位置的二进制位(sig_flag,如果sig_flag等于1,gt1_flag,par_flag)之后,仍然可用的二进制位regbins的数量小于2(即,无法传输par_flag和gt1_flag用于下一个扫描位置),那么对于第一遍次中扫描中的所有跟随的扫描索引,仅传输sig_flag。第二遍次:在扫描位置的第二遍次中,传输跟随上下文编码的二进制位:·如果扫描位置的gt1_flag等于1,则传输gt2_flag,它指定余数(由(absolutelevel-2-par_flag)/2)给出)是否大于0。·如果已经传输了上下文编码的gt2_flag的预定义的最大数量,则第二遍次将终止。如果到达在第一遍次中仅传输了skip_flag等于1的扫描位置(即,对于此类扫描位置,在第二遍次中没有数据传输),则第二遍次也终止。第三遍次:在扫描位置的第三遍次中,为所有sig_flag和gt1_flag和par_flag在第一遍次中编码的所有扫描位置传输用于绝对级别(即,还没有被传输的sig_flag,par_flag,gt1_flag和gt2_flag指定的数据)的余数。使用结构化代码(例如哥伦布-莱斯代码)对非二进制句法元素余数进行二值化,然后在算术编码引擎的旁路模式下对二进制位进行编码。余数将传输给以下扫描位置:·对于所有扫描位置,在第二遍次中传输了等于1的gt2_flag:对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(absolutevalue–4–par_flag)/2·对于所有扫描位置,在第一遍次中传输了等于1的gt1_flag,但在第二遍次中未传输gt2_flag。对于这些扫描位置,传输的非二进制句法元素余数指定以下内容:(absolutevalue–2–par_flag)/2第四遍次:在第四遍次中,对所有扫描位置编码的绝对值减去一,其中只有sig_flag等于1在第一遍次中被编码(但不传输gt1_flag)。余数(绝对级别减去1)首先使用结构化代码进行二值化,所使用的代码可能取决于局部活动性度量以及当前状态变量的值。使用算术编码引擎的旁路模式传输二进制位。第五遍次:最后,在第五遍次中,传输所有不等于0的变换系数级别的符号。符号以算术编码引擎的旁路模式传输。图19的伪代码进一步示出子块内部的变换系数级别的编码处理。适用于图17和图15的第一和第三实施例相同的注释同样适用于图19,其中,在图15中,位置112和116之间的系数的余数所涉及的值域的开始,即使用标志92、96和98,在图13的情况下为2,在图19的情况下为1。对于实施例4,与实施例3相同的变化是可能的。这包括以下方面(与实施例2类似):·gt2_flag包含在第一遍次中;·gt2_flag根本没有编码。·附加的gtx_flag已编码。以下方面可以与上述任何实施例组合:用于sig_flag的概率模型选择在概率模型的集合中选择用于编码当前sig_flag的自适应概率模型。为简单起见,让我们假设可用的概率模型以4维阵列组织probmodelsig[csig][ssig][dsig][asig],其中csig指定取决于当前颜色信道的索引,ssig指定取决于状态变量的索引,dsig指定取决于变换块内x和y位置的索引,而asig指定取决于局部活动性度量的索引。概率模型的实际组织是实际实现的一个方面。例如,它们可以组织为一维阵列,在这种情况下,可以基于csig,ssig,dsig和asig的值导出组合索引。在下文中,我们描述了用于导出索引csig,ssig,dsig和asig的示例方法。但是,应注意,可以采用不同的方式来导出这些索引(或部分索引)。颜色信道索引csig在优选实施例中,当且仅当当前颜色信道表示亮度信道(或更一般地,第一颜色信道)时,颜色信道索引csig被设置为等于0。仅当当前颜色信道表示色度信道(或更普遍次地,不是第一颜色信道)时,csig才设置为等于1:csig=(currentchannelisluma?0:1)作为替代,可以将亮度信道的csig设置为等于0,将cb信道的csig设置为等于1,将cr信道的csig设置为等于2。状态索引ssig在优选实施例中,索引ssig被设置为等于这意味着,一组概率模型用于等于0和1的状态变量,第二组用于等于2的状态变量,第三组用于等于3的状态变量。作为替代,可以将索引ssig设置为等于状态变量(ssig=state),在这种情况下,将为状态变量的每个可能值使用单独的概率模型的集合。或者作为另一种替代,可以根据ssig=state>>1设置索引ssig,在这种情况下,将为两个量化器q0和q1的每一个使用一组单独的上下文模型(请注意,当状态等于0或1,使用量化器q0,并且当状态等于2或3时使用量化器q1)。位置索引dsig在一个优选的实施例中,索引dsig被设置如下:·如果索引csig等于0(即当前颜色信道代表亮度信道),则根据以下设置dsig·如果索引csig等于1(即当前颜色信道表示色度信道),则以下根据设置dsig在此diag处表示由diag=x+y给出的对角线位置,其中x和y表示变换块内部当前扫描位置的x和y坐标。替代地,对角线位置的任何其他聚类也是可能的。或者可替代地,可以将变换块内的(x,y)位置划分为多个类别,并且可以将索引dsig设置为等于相应的类别索引。局部活动性索引asig最后,在本发明的优选实施例中,根据以下项设置索引asig:asig=min(max_abs1,sumabs1),其中max_abs1是一个预定义值,sumabs1指的是局部模板中最小绝对变换系数级别的和,所述最小绝对绝对值由第一遍次传输的数据给出(请参见上文)。可替代地,sumabs1的函数或min(max_abs1,sumabs1)的函数可以用于导出asig。在本发明的优选实施例中,将预定义的值max_abs1设置为等于5。在本发明的优选实施例中,使用了图12b所示的局部模板。注意,模板包括在当前位置之前编码的相邻位置。也可以使用具有这些属性的其他局部模板(在当前位置之前扫描/编码的相邻位置)。这样的其他模板在两个方面可以与图12b中所示的模板不同:(1)所包括的变换系数位置的数量和(b)所包括的变换系数位置的位置。令abslevel1[i]为扫描索引i处的变换系数级别的部分重构的绝对值。并让t(k)指定用于当前扫描索引k的模板内的扫描索引的集合。然后,根据以下导出用于当前扫描索引k的变化的sumabs1即,sumabs1表示模板内部分重构的绝对值的总和。abslevel1[k]表示在扫描索引k处的变换系数级别的部分重构的绝对值。部分重构仅使用在第一遍次中传输的数据。在下面,指定了一些示例:·如果按照实施例1和实施例3的定义在第一遍次中传输了sig_flag,par_flag和gt1_flag(请参见上文:par_flag指定绝对值减去1的奇偶校验位,而gt1_flag指定(absolutelevel–1–par_flag)/2是否大于0),则可以根据以下公式推导部分重构的值abslevel1[k]=sig_flag[k]+par_flag[k]+2*gt1_flag[k],其中未被显式编码的par_flag和gt1_flag的值被推断为等于0。当gt2_flag被包括在第一遍次中时(实施例1和3的变型),它可以被附加地用于导出最小可能的绝对值。在这种情况下,部分重构的值可以根据abslevel1[k]=sig_flag[k]+par_flag[k]+2*(gt1_flag[k]+gt2_flag[k]),其中未被显式编码的gt2_flag的推断为等于0。·如果按照实施例2和实施例4的定义在第一遍次中传输sig_flag,gt1_flag和par_flag(请参见上文:gt1_flag指定绝对级别是否大于1,par_flag指定(absolutelevel-2)的奇偶校验位,则部分重构的值可以根据下式导出abslevel1[k]=sig_flag[k]+gt1_flag[k]+par_flag[k],其中未被显式编码的par_flag和gt1_flag的值被推断为等于0。当gt2_flag被包括在第一遍次中时(实施例2和4的变型),它可以被附加地用于导出最小可能的绝对值。在这种情况下,部分重构的值可以根据下式导出abslevel1[k]=sig_flag[k]+g1_flag[k]+par_flag[k]+2*gt2_flag[k],其中未被显式编码的gt2_flag的推断为等于0。·如果在第一遍次中仅对sig_flag和par_flag进行编码,则可以根据以下公式推导部分重构的值:abslevel1[k]=sig_flag[k]+par_flag[k]。·如果在第一遍次中仅对sig_flag进行编码,则可以根据以下公式推导部分重构的值:abslevel1[k]=sig_flag[k]。可以以类似的方式为其他配置指定部分重构。par_flag,gt1_flag和gt2_flag的概率模型选择在概率模型的集合中选择用于编码当前par_flag的自适应概率模型。与有效位标志类似,让我们假设可用的概率模型以4维阵列组织probmodelpar[cpar][spar][dpar][apar],其中cpar指定取决于当前颜色信道的索引,spar指定取决于状态变量的索引,dpar指定取决于变换块内x和y位置的索引,而apar指定取决于局部活动性度量的索引。对于gt1_flag和par_flag也使用相同的概念:probmodelgt1[cgt1][sgt1][dgt1][agt1],probmodelgt2[cgt2][sgt2][dgt2][agt2]在优选实施例中,相同的索引被用于三个标志par_flag,gt1_flag和gt2_flag。这样做的优点是,每个扫描索引仅需计算索引(或组合索引)即可:cgt2=cgt1=cparsgt2=sgt1=spardgt2=dgt1=dpargt2=agt1=apar即使索引相同,对于三个标志par-flag,gt1_flag和gt2_flag,仍使用不同的概率模型的集合。在不同的实施例中,对于gt1_flag和gt2_flag都使用了相同的概率模型的集合(在这种情况下,对于每个样本位置,gt1_flag和gt1_flaggt2_flag始终使用相同的概率模型进行编码)。也可以使用不同的方法来导出单个标志的索引。在下面,我们以索引cpar,spar,dpar和apar的派生为例进行描述。相同的方法适用于gt1_flag和gt2_flag的相应索引。颜色信道索引cpar与有效位标志类似,在优选实施例中,根据以下步骤设置颜色信道索引csig:cpar=(currentchannelisluma?0:1)可替代地,可以使用以上针对csig描述的替代方案。状态索引spar在优选实施例中,将索引spar设置为等于0。这意味着,所选择的概率模型不依赖于状态变量。因此,概率模型集合可以表示为3维阵列probmodelpar[cpar][dpar][apar],probmodelgt1[cgt1][dgt1][agt1],probmodelgt2[cgt2][dgt2][agt2]或组合索引,可以使用3个索引cpar,dpar和apar导出。可替代地,可以使用上述针对spar的任何方法。位置索引dpar在优选的实施例中,索引dpar被设置如下:·如果索引cpar等于0(即当前颜色信道代表亮度信道),则根据下式设置dpar·如果索引cpar等于1(即当前颜色信道表示色度信道),则根据下式设置dpar在此diag处表示由diag=x+y给出的对角线位置,其中x和y表示变换块内部当前扫描位置的x和y坐标。布尔变量firstnonzero指定当前扫描位置是否代表编码顺序中的第一非零级别的扫描位置(即,在编码的块标志之后传输的x和y坐标(或类似方式)标识的位置)。因此,对于编码顺序中的第一非零级别,将使用不同的概率模型的集合(与对角线位置无关)。替代地,对角线位置的任何其他聚类也是可能的。或者可替代地,可以将变换块内的(x,y)位置划分为多个类别,并且可以将索引dpar设置为等于相应的类别索引。同样对于这样的设置,可以将特殊的dpar的值用于第一有效扫描位置。局部活动性索引apar最后,在本发明的优选实施例中,根据apar=min(max_abs1_sig,sumabs1-numsig),其中max_abs1_sig是一个预定义的值,sumabs1指的是局部模板中的最小绝对变换系数级别的总和,所述模板由第一遍次中传输的数据给出(请参见上面的描述),并且numsig指定局部模板中非零级别的数量。在本发明的优选实施例中,将预定义的值max_abs1_sig设置为等于4。在本发明的优选实施例中,使用了图12b所示的局部模板。注意,模板包括在当前位置之前编码的相邻位置。也可以使用具有这些属性的其他局部模板(在当前位置之前扫描/编码的相邻位置)。这样的其他模板在两个方面可以与图12b所示的模板不同:(1)所包括的变换系数位置的数量和(b)所包括的变换系数位置的位置。令t(k)指定用于当前扫描索引k的模板内的扫描索引的集合。如上为sig_flag(sec.0)指定得出变量sumabs1,并根据以下公式得出当前扫描索引k的numsig即numsig表示模板内部非零变换系数(由sig_flag等于1表示)的数量。可替代地,可以使用sumabs1和numsig的不同最大值或不同函数。余数的二值化(被完全旁路的系数除外)在本发明的优选实施例中,句法元素余数以算术编码引擎的旁路模式被编码。压缩效率取决于所使用的二值化。在hevc中,使用一类称为哥伦布-莱斯码的二值化码对相似的句法元素进行编码。此类代码由所谓的莱斯参数参数化。可以在编码过程中调整莱斯参数,以便使用的二值化取决于先前的句法元素。在本发明的优选实施例中,使用所谓的哥伦布-莱斯码对句法元素余数进行二值化。哥伦布-莱斯码由前缀部分,以及如果要编码的值超过预定义的阈值,后缀部分组成。前缀部分代表截断的rice代码(请参阅hevc),所述参数由莱斯参数(rp)和最大符号值(cmax)参数化。如果要编码的值(余数)大于或等于cmax,则将后缀二进制位字符串添加到前缀二进制位字符串。后缀二进制位字符串由keg阶的指数golomb码给出。为了通过单个参数对级联代码进行参数设置,使用的cmax和keg的值代表莱斯参数(rp)的函数。在特定设置中,cmax和keg(指数golomb码的顺序)是根据以下公式得出的:cmax=(rp==1?6:7)<<rp,keg=rp+1cmax(rp)和keg(rp)的其他函数关系也是可能的。另外,可以使用结构化编码的其他参数化集合。在下文中,我们描述了两种用于调整莱斯参数(rp)或针对不同类别代码的相似参数的方法:方法1:如果最后的编码的值(或最后的绝对级别)超过阈值,则增加rp在子块(或可替代地变换块)的开始,莱斯参数rp设置为等于预定义的值。在特定实施例中,预定义的值等于0。在解码(或编码)句法元素余数之后,莱斯参数根据下式更新if(rp<max_rp&&remainder>threshold(rp)){rp=rp+1}在此,max_rp代表最大莱斯参数的预定义的值。在优选实施例中,将max_rp设置为等于3。函数threshold(rp)表示取决于莱斯参数的当前值的阈值。在优选的实施例中,此函数由下式定义:threshold(rp)=(3<<rp)–1,其中,运算符“<<”表示向右移二进制位。即,“3<<rp”等价于3*2^rp。threshold(rp)的任何其他定义,例如,查找表,都是可能的。在所述方法的变型中,不是编码的值余数,而是将重构的绝对级别abslevel用于与阈值进行比较。然后,根据下式更新莱斯参数if(rp<max_rp&&abslevel>threshold(rp)){rp=rp+1}方法2:基于局部邻域中的绝对级别确定rp在优选配置中,使用由局部模板覆盖的相邻级别的绝对和来导出莱斯参数。设sumabs为局部模板中绝对值的总和。在优选实施例中,使用与用于导出sig_flag的上下文模型相同的模板。莱斯参数rp是根据sumabs(即局部模板中的绝对值之和)得出的。在特别优选的实施例中,莱斯参数rp根据以下公式得出:在其他配置中,可以修正用于切换莱斯参数的阈值。或者,可以基于局部模板的其他活动性度量来导出莱斯参数。此外,还可以指定在子块内不允许莱斯参数变小。旁路模式下绝对级别的二值化在本发明的优选实施例中,将不同的二值化用于在旁路模式下完全编码的绝对级别(即,在实施例1和2中的第四遍次)。在优选配置中,使用了与上述相同的哥伦布-莱斯代码类别,但是莱斯参数是以不同的方式导出的。在本发明的优选实施例中,莱斯参数既取决于局部邻域中的绝对值之和又取决于状态变量(用于依赖量化)。所述依赖性rp(sumabs,state)可以由二维查找表来描述。此时,在访问查找表之前,绝对值的总和通常会被裁剪为任何最大值max_sum_abs。也就是说,莱斯参数是通过下式得出rp=lookuptable[state][min(max_sum_abs,sumabs)],其中lookuptable指定预定义的查找表。在此方法的一种变体中,绝对级别abslevel不直接由派生的莱斯参数确定的代码进行编码,但适用于以下情况:绝对值abslevel首先转换为值codevalue,然后使用golomb传输由莱斯参数rp指定的哥伦布-莱斯码。作为示例,编码的值codevalue是根据以下确定的:参数zpos是通过以下任何一种方法派生的:·zpos是根据局部邻域中绝对值sumabs的和的函数得出的;·zpos是根据状态变量的函数得出的;·根据状态变量的函数和局部邻域中的绝对值sumabs的函数得出zpos。sumabs的值与推导莱斯参数时使用的值相同。sumabs的值也被裁剪为与莱斯参数的推导相同的最大值max_sum_abs。可以通过预定义的查找表指定zpos与状态变量和/或裁剪的值min(max_sum_abs,sumabs)的依赖关系。也就是说,可以从可变长度码的预定义集合中选择用于对当前扫描的变换系数位置的余数值进行编码/解码的可变长度码,诸如由rp从另一个不同于哥伦布-莱斯码的集合中选择。可以根据余数将被编码/解码的当前扫描的变换系数位置是否位于直到预定变换系数位置112或以扫描顺序62在其下游来进行选择,即在前者和后者的案例中选择不同的rp。根据上面概述的方法1和2,指示所选的可变长度码的rp参数通常可以在通过603,4期间保持恒定,但在满足预定标准的立即完成解码/编码的变换系数的量化索引上递增地改变,诸如超过方法1中的某个极限,或满足某个标准的基于当前扫描的变换系数位置附近的系数位置处的量化索引上进行改变,诸如它们的总和超过某个极限。例如,仅在以下情况下可以使用这种依赖性或递增改变:如果其余数已被编码的当前变换系数位置位于直到预定变换系数位置112,即,对于图15中所有阴影线的位置。除了相邻系数的量化索引外,依赖量化状态还可用于选择二进制化代码参数。以下方面,尽管可能与上述实施例结合,但是可以可选地与以上实施例一起实现,以提高编码效率。此方面涉及不包含绝对值大于1的任何变换系数级别的块/子块的显式信令。为了减少用于对变换系数级别进行编码的二进制位的数量,在变换块或子块的基础上引入了专用标志,所述标志指示所述块或子块中的任何绝对级别是否大于1:·对于coded_subblock_flag等于1(编码或推断)的子块,将为所述子块传输第二个标志。此标志(gt1_subblock_flag)指定子块是否包含绝对级别大于1的任何变换系数级别。·如果gt1_subblock_flag等于0,则仅传输有效位信息(sig_flag)和用于变换系数级别不等于0的符号位。·如果gt1_subblock_flag等于1,则如实施例1至4中所述进行变换系数级别的编码。可以包括进一步的条件,即当达到子块中的最后一个扫描索引并且子块中所有先前的绝对级别等于1,则可以推断出最后一个绝对级别大于1。–因此,相应的gt1_flag可以被推断为等于1。对于实施例1和3,在这种情况下,奇偶校验位标志par_flag也可以被推断为等于0。不基于子块,也可以针对整个变换块传输指定所有绝对值等于1的级别的标志。也可能仅针对选择的子块(例如,包括第一有效位系数的子块)传输此标志。即,这里变换系数块10以以下方式被编码/解码。对于变换系数块10被划分成的至少一组子块14中的每一个,子块大小标志,即gt1_subblock_flag,指示相应子块14是否包含任何变换系数12,量化系数的绝对值大于预定的非零阈值,诸如一个阈值,被传输。对每个子块14内的变换系数块的变换系数,其中子块大小标志指示每个子块14中的量化索引的绝对值的至少一个变换系数大于预定非零阈值,如前所述,被编码/解码,即,通过对相应子块内的每个变换系数进行顺序编码/解码,一系列一个或多个标志92、96、98、194或其他标志递归地将相应变换系数的值域进行二分,二分为两个分区,并指示相应变换系数的量化索引位于两个分区中的哪个分区中,并在值域仅包括一个值时立即停止解码,或如果仅将值域解释为定义有符号的值,则在绝对意义上为相等的值。如果值域仍然包括在绝对意义上不同的多于一个的值,则对表示值域中的各个变换系数的量化索引的绝对值的余数进行编码/解码。然而,在每个子块中,子块大小标志指示每个子块中不存在量化系数的绝对值大于预定非零阈值的变换系数,相应子块内每个变换系数的一个或多个标志的序列的顺序解码在值域包括不超过非零阈值的一个值、仅一个值或绝对意义上相等的值时立即停止。第一停止标准源于以下事实:根据相应子块中所有系数的索引未超过预定的非零阈值,一旦由先前编码/解码的标志为各个系数确定的剩余值域或剩余值间隔,就仅包括一个满足子块大小标志所要求的值,则值域的这一值是量化索引。因此,除了其他内容之外,在上文中还描述了以下实施例。a1.一种用于对变换系数块进行解码的装置,所述装置被配置为在沿扫描顺序对块的变换系数位置进行扫描的遍次序列中,从数据流中对以下进行解码,(请注意,这些遍次无需扫描所有转变换块的变换系数位置,但它们都使用扫描顺序;此外,某些标志类型的标志可以在同一遍次中传输),使用上下文自适应二进制算术解码,解码1)标志,每个标志来自于具有一个或多个标志类型的集合(例如,实施例1:sig_flag,par_flag,gt1_flag,gt2_flag),以及使用可变长度码(例如,使用压缩率1;以旁路模式传输;如上所述,可能使用算术编码引擎对vlc码字二进制位进行编码,但不是使用上下文自适应地进行此操作,而是使用(0.5;0.5)概率旁路模式来完成–分别表示二进制化和非自适应二进制算术解码或对于这些vcl二进制位使用具有统一概率模型的旁路模式)解码2)余数值(余数),使得针对当前扫描的变换系数位置,分别对每个标志和每个余数(例如,实施例1:索引k)进行解码,使得针对变换系数位置的经编码集合的每个变换系数位置(例如,在预定义的第一变换系数位置和预定义的最后变换系数位置之间延伸,其中预定义的第一和最后一个变换系数位置指定变换块中变换系数位置的子集;或者,例如,在最后一个非零系数和预定义系数,诸如dc系数之间扩展),顺序地对一个或多个标志以及一个余数值中的至少一个进行解码(即一个余数,没有标志,一个或多个标志和一个余数,或一个或多个标志,没有余数),以便连续地(即,在顺序意义上)将用于当前扫描的变换系数位置的量化索引的绝对值位于其内的初始值域(例如,x二进制位表示→ω=0到2x-1;例如x=16),限制为仅包括用于当前扫描的变换系数位置的量化索引的绝对值(即,针对某个变换系数位置解码的“一个或多个标志和一个余数值中的至少一个”在初始值域之外唯一地定义了后者),其中每个标志将用于当前扫描的变换系数位置的量化索引的绝对值的值域限制为用于当前扫描的变换系数位置的量化索引的绝对值的值域被双分成的第一子部分或第二子部分(例如sig_flag:值域ω被分为a={0}和然后,par_flag将限制为奇数或偶数值…),并且,在针对当前扫描的变换系数位置对余数值进行解码的情形中,余数唯一地指示(以下两种选择应理解为:涵盖所有实施例,包括实施例1,其中对于某些变换系数位置仅编码余数,以及实施例3,其中这样的变换系数位置不存在)在针对当前扫描的变换系数位置队至少一个标志进行了解码的情形中在所述值域中的用于当前扫描的变换系数位置的量化索引的绝对值,或者在针对当前扫描的变换系数位置没有对标志进行解码的情形中在初始值域中的用于当前扫描的变换系数位置的量化索引的绝对值(请注意,没有解码余数值的变换系数位置中,为这些变换系数位置解码一个或多个标志已经将值域限制为仅包含一个绝对值;就符号而言,如果完全对tc进行了标记,则可以在旁路模式下对其进行单独编码),其中,所述装置配置为(例如实施例1至4)通过以下方式,使用沿扫描顺序的状态过渡(参见例如网格图)按1)顺序地进行反量化(即,使用依赖量化)变换系数位置的编码的集合的变换系数位置的量化索引,通过以下方式完成1)选择,对于当前的变换系数位置,唯一地根据状态过渡为当前的变换系数位置所取的状态,从多个重构级别集合中重构级别的集合,并进行反量化量化索引到重构级别上,在所述重构级别上所述量化索引指向所述重构级别集合,并通过2)更新为当前变换系数位置所取的状态过渡的状态(请注意,这是在依赖量化期间当前扫描的位置;“当前扫描的”用于表示遍次中当前解码的内容,用于(请注意,此术语现在表示更新的预期目的或更新效果)在扫描顺序中当前变换系数之后的变换系数位置取决于当前变换系数位置的量化索引。a2.实施例b5或a1中的任一个的装置,被配置为执行四个不同状态之间的状态过渡转换。a3.实施例b5或a1-a2中任一实施例的装置,被配置为在更新状态过渡的状态时,通过根据应用于当前变换系数位置的量化索引的二元函数,通过在第一后继状态和第二后继状态之间进行决定来执行更新,其中第一后继状态和第二后继状态取决于当前变换系数位置的状态。a4.根据实施例b5或a1-a3中任一项所述的装置,其中所述二元函数产生奇偶校验位或零位。a5.实施例b5或a1-a4中的任何一个的装置,被配置为通过预定量化步长参数化多个重构级别集合,并从数据流中获取关于预定量化步长的信息。a6.根据实施例b5或a1-a5中任一项所述的装置,其中,所述多个重构级别集合中的每一个均由预定量化步长的倍数组成,所述预定量化步长对于所述多个重构级别集合是恒定的。a7.根据实施例b5或a1-a6中任一项所述的装置,其中所述多个量化水平集合的量化水平集合的数量为两个,并且所述多个量化水平集合包括第一量化水平集合,所述第一量化水平集合包括预定量化步长尺寸的零和偶数倍,第二量化级别集合,所述第二量化级别集合包括预定量化步长尺寸的零和奇数倍。a8.前述实施例a1-a7中任一项的装置,其中,在遍次序列中的第一遍次中,将解码器配置为(例如,实施例3和4)为1)从预定第一标志类型的数据流标志中以一种方式解码(例如sig_flag)和预定第二标志类型的标志(例如par_flag),使得在扫描顺序中限制跟随在第一变换系数位置之后的第二变换系数位置的量化索引的绝对值的值域的标志之前,使得在对限制第一变换系数位置的量化索引的绝对值的值域的标志进行解码(即,在任何sig_flag[k+1]和par_flag[k+1]之前的任何sig_flag[k]和par_flag[k]),其中,执行预定第二标志类型的标志的解码直到预定变换系数位置(例如,实施例3:startidxbypass-1),其中预定中止标准在第一遍次中沿着扫描顺序填满第一次(例如第一遍次中的编码标志的数量超过某个阈值),并且以扫描顺序在预定变换系数位置之外执行预定第一标志类型的标志的解码(例如,对编码的集合中的所有标志或除第一非零量化索引而不调查任何中止标准),预定第一标志类型的标志表示当前扫描的变换系数的量化索引是否为零(例如sig_flag)。a9.实施例a8的装置中,其中,所述预定第二标志类型的标志指示针对当前扫描的变换系数的所述量化索引的奇偶性。a10.前述实施例a8-a9中的任何一个的装置,被配置为在所述第一遍次中对所述第二预定标志类型的标志进行解码,以专门用于所述变换系数位置,在其之后,在所述第一预定标志类型的标志指示当前扫描的变换系数的量化索引不为零。a11.实施例a8的装置,所述预定中止标准是关于在所述第一遍次中解码的标志的数量是否超过预定阈值。a12.前述实施例a8至a11中的任何一个的装置,被配置为在所述第一遍次中解码还具有第三预定标志类型的标志,所述第三预定标志类型指示按照绝对值,所取是否为值域中的最小值的所述用于当前扫描的变换系数位置的量化索引。a13.实施例a12的装置,被配置为在所述第一遍次中对所述第三预定标志类型的标志进行解码,所述第三预定标志类型的标志专门用于变换系数位置,对于所述变换系数位置,在其之后,所述第一预定标志类型的标志指示当前扫描的变换系数的量化索引不为零。a14.实施例a13的装置(例如,实施例3)被配置为在第一遍次中对变换系数位置进行解码,对于所述变换系数位置,在第一预定标志类型之后,所述第一预定标志类型的标志指示针对所述用于当前扫描的变换系数位置的量化索引不为零,第三预定标志类型的标志在第二预定标志类型的标志之后。a15.实施例a13的装置(例如,实施例4)被配置为在所述第一遍次中对变换系数位置进行解码,对于所述变换系数位置,在所述第一预定标志类型之后,所述第一预定标志类型的标志指示针对所述当前扫描的变换系数位置的所述量化索引不为零,第二预定标志类型的标志专门用于变换系数位置,其中,第三预定标志类型的标志指示最大大于1。a16.前述实施例a8至a15中任一实施例的装置,被配置为在所述第一遍次之后在第二遍次中解码,第四预定标志类型的标志也指示针对用于当前扫描的变换系数位置的量化索引,当前扫描的变换系数位置所取按照绝对值,取值域中的最小值或不受第一遍次中解码的标志的限制。a17.实施例a16的装置,被配置为在所述第二遍次之后,在一个或多个附加遍次中解码余数值。a18.前述实施例a8至a17中任一项的装置,被配置为在所述第一遍次之后的一个或多个遍次中对余数值进行解码。a19.前述实施例a8-a18中的任何一个的装置,被配置为在最后遍次中对非零变换系数的符号进行解码。a20.前述实施例a8至a19中任一项的装置,其中,解码器被配置为(例如,实施例3,第二替代方案“2.状态机从奇偶校验位驱动状态机切换到有效位驱动状态机”)1)在状态过渡中,根据以下情况执行状态过渡的状态的更新:–如果当前变换系数位置按扫描顺序在预定变换系数位置之前或等于预定变换系数位置,对于相应变换系数位置–相应变换系数位置的第二标志类型的标志(例如,实施例3:par_flag)上-如果相应变换系数位置按照扫描顺序遵循预定变换系数位置,对于相应变换系数位置-相应变换系数位置的第一个标志类型的标志(例如实施例3:路径(级别)产生零),2)在上下文自适应熵解码中,为当前扫描的变换系数确定用于解码所述预定第一标志类型的标志的上下文,对于在所述预定变换系数位置之前、包括以及之后的所有变换系数位置,这取决于状态过渡为当前扫描的变换系数位置所取的状态。a21.前述实施例a8至a19中任一项的装置,其中,解码器被配置为(例如,实施例3)在上下文自适应熵解码中,对于当前扫描的变换系数位置,确定用于解码预定第一标志类型的标志的上下文,对于在预定变换系数位置之前并包括预定变换系数位置的变换系数位置,取决于状态过渡对当前扫描的变换系数位置所取的状态以及对于预定变换系数位置之后的变换系数位置,与状态过渡对当前扫描的变换系数位置所取的状态无关。a22.前述实施例a8至a19中任一项的装置,其中,解码器被配置为(例如,实施例3,第一替代),1)在上下文自适应熵解码中,针对当前扫描的变换系数位置确定用于解码预定第一标志类型的标志的上下文,对于在预定变换系数位置之前、包括以及之后的所有变换系数位置,这取决于状态过渡对于当前扫描的变换系数位置所取的状态,2)在状态过渡中,根据当前变换系数位置的第一标志类型的标志,针对扫描顺序中各个转换系数位置之后的转换系数位置,执行针对当前转换系数位置所取的状态过渡的状态的更新(例如,实施例3:路径(级别)产生零)。b1.用于对变换系数块进行解码的装置,被配置为从数据流中进行解码,并沿扫描顺序扫描变换系数位置的遍次序列(请注意,这些遍次无需扫描变换块的所有变换系数位置,但它们全都使用扫描顺序;此外,某些标志类型的标志可以在同一遍次中传输),1)使用上下文自适应二进制算术解码,每个标志均不在一个或多个标志类型的集合中(例如,实施例1:sig_flag,par_flag,gt1_flag,gt2_flag)和2),使用可变长度码(例如,使用压缩率1;以旁路模式传输;也用于注释a1),余数值(余数),因此,分别针对当前扫描的变换系数位置对每个标志和每个余数值进行解码(例如,实施例1:索引k),并且对于变换系数位置的编码的集合的每个变换系数位置(例如,在预定义的第一变换系数位置和预定义的最后变换系数位置之间扩展,其中预定义的第一和最后变换系数位置指定变换块中变换系数位置的子集;或者,例如,在最后的非零系数,以及预定义的系数,诸如dc系数之间扩展,一个或多个标志和一个余数值中的至少一个(即一个余数和无标志,一个或多个标志和一余数,或一个或多个标志和无余数)被顺序解码,以便连续(即,在顺序意义上)限制初始值域(例如x二进制位表示ω=0到2x-1;例如x=16)其中用于当前扫描的变换系数位置的量化索引的绝对值仅包括值域内前扫描的变换系数位置的量化索引的绝对值(即,针对某个变换系数位置解码的“一个或多个标志和一个余数值中的至少一个”在初始值域之外唯一地定义了后者),其中每个标志限制用于用于当前扫描的变换系数位置的量化索引的绝对值的值域以到第一子部分或第二子部分中,其中用于当前扫描的变换系数位置的量化索引的绝对值的值域被双分而成(例如sig_flag:值域ω被分为a={0}和然后,par_flag将限制为奇数或偶数值…),并且,如果对当前扫描的变换系数位置解码了余数值,则余数唯一地指示(以下两种选择应理解为:涵盖所有实施例,包括实施例1,其中对于某些变换系数位置仅编码余数,以及实施例3,其中这样的变换系数位置不存在)如果对于当前扫描的变换系数位置,至少一个标志被解码,则对于用于当前扫描的变换系数位置的量化索引的绝对值超出值域,如果对于当前扫描的变换系数位置,没有标志进行解码,则当前扫描的变换系数位置超出初始值域(请注意,没有解码余数值的变换系数位置中,为这些变换系数位置解码一个或多个标志已经将值域限制为仅包含一个绝对值;就符号而言,如果完全对tc进行了标记,则可以在旁路模式下对其进行单独编码),其中,所述装置被配置为(例如,实施例1、2)在通过遍次序列中的第一遍次,a)从预定第一标志类型的数据流标志直到预定变换系数位置(例如,实施例1:由startidxbypass-1索引的那个),在其第一次遍次中,沿着扫描顺序预定中止标准满足了第一次(例如,在实施例1中:预定的标志的数量已经在第一遍次中解码了),预定第一标志类型的标志指示用于当前扫描的变换系数位置的量化索引是否为零(例如sig_flag),b)对标志进行解码,仅针对位于预定变换系数位置之前和包括所述预定变换系数位置的变换系数位置,并按照扫描顺序对预定变换系数位置之后的每个变换系数位置编码的集合进行解码,以使其余值之一后者唯一地表示在初始值域外相应变换系数位置的量化索引的绝对值。b2.实施例b1的装置,被配置为根据当前扫描的变换系数位置是在预定变换系数位置之前还是在预定变换系数位置之后,或按扫描顺序跟随预定变换系数位置,对用于对当前扫描的变换系数位置的余数值进行解码的可变长度码进行参数化。b3.实施例b1或b2的装置,被配置为对可变长度码进行参数化,可变长度码用于通过根据满足预定准则的先前变换系数位置的量化索引来递增地改变解码当前解码系数位置的余数值,和/或如果当前扫描的变换系数位置在前面(按扫描顺序)或者是预定变换系数位置,则取决于在当前扫描的变换系数位置附近的变换系数位置的量化索引。b4.实施例b1或b2或b3的装置,被配置对可变长度码进行参数化,可变长度码用于根据当前扫描的变换系数位置附近的变换系数位置的量化索引,解码当前扫描的变换系数位置的余数值,如果当前扫描的变换系数位置按照扫描顺序跟随预定变换系数位置,则取决于在状态过渡为当前扫描的变换系数位置所取的状态。b5.实施例b1至b4中任一项的装置,其中,解码器被配置为(例如,实施例1至4)使用状态过渡(例如,参见网格图)来顺序地对反量化变换系数位置的编码的集合的变换系数位置的量化索引进行量化(即,使用依赖量化),通过以下步骤进行:a)针对当前变换系数位置,唯一地根据状态过渡为当前变换系数位置所取的状态,从多个重构级别集合中选择一组重构级别,以及将量化索引反量化为重构级别,在所述重构级别上量化索引指向重构级别的集合,并通过b)更新过渡状态为当前变换系数位置所取的状态(请注意,这是在依赖量化期间当前扫描的内容;“当前扫描的”用于表示在遍次中当前解码的内容(注意,此术语现在表示更新的预期目的或更新效果的指示),取决于针对当前变换系数位置的量化索引,按照扫描顺序在当前变换系数位置之后用于变换系数位置。3.实施例a1-a22或b1-b5中的任何一个的装置,被配置为(例如实施例1至4)执行解码,使得对于一个或多个标志类型的集合中的每一个,各自标志类型的标志是在通过遍次序列中的一个中解码。4.前述实施例中的任何一个的装置(例如,实施例1-4,第4.5.4节),其中可变长度码是哥伦布-莱斯代码。5.根据前述实施例中任一项所述的装置,其中(例如,在4.5.4中的实施例1至4,方法1和2),所述装置被配置为对可变长度码进行参数化,可变长度码用于通过根据满足预定准则的先前变换系数位置的量化索引来递增地改变以解码当前扫描的变换系数位置的余数值,和/或取决于在当前扫描的变换系数位置附近的变换系数位置的量化索引。6.前述实施例中的任一个的装置,被配置为(例如,实施例1至4)确定变换系数位置的编码的集合沿扫描顺序在第一非零量化索引的位置和预定义的变换系数位置之间延伸,并基于数据流定位第一非零量化索引的位置。7.前述实施例中的任一个的装置,被配置为(例如,实施例1至4)使用等概率旁路模式从每个非零量化索引的数据流中解码符号位。10.根据前述实施例中任一项所述的装置,被配置为通过使用上下文自适应熵解码,通过根据预定的变换系数的系数位置来选择上下文,来针对预定变换系数位置对第一标志类型的标志进行解码。11.根据前述实施例中任一项所述的装置,被配置为通过上下文自适应熵解码,通过以下方式来解码用于预定变换系数位置的所述第一预定标志类型的标志:a)基于对于在预定变换系数位置周围的局部模板内的一组相邻变换系数位置,在将预定变换系数位置的预定标志类型的标志之前对标志的集合进行解码,并通过b)根据局部活动性来选择上下文。12.根据实施例11所述的装置,其中,所述标志的集合包括(至少;它可能甚至更多,诸如四个)预定第一标志类型的标志,预定第二标志类型的标志以及为所述相邻变换系数位置的集合解码的预定的第三标志类型的标志,并且所述装置配置为基于每个相邻变换系数位置的加数之和计算活动性,加数指示根据(至少)预定第一标志类型的标志,预定第二标志类型的标志以及针对相邻的变换系数位置解码的预定第三标志类型的标志确定的相邻的变换系数位置的量化索引的最小所取绝对值或最小所取绝对重构级别。13.根据前述实施例中任一项所述的装置,其中,所述解码器被配置为(例如,实施例1至4)1)对所述变换系数位置的所述编码集合的所述变换系数位置的量化索引进行顺序地反量化(即,使用依赖量化),使用沿着扫描顺序的状态过渡(例如,参见网格图),通过以下步骤进行:a)唯一地根据状态过渡为相应变换系数位置所取的状态,为每个变换系数位置从多个重构级别集合中选择一组重构级别,然后将量化索引反量化为重构级别,在所述重构级别上,量化索引指向重构级别的集合,并通过b)更新过渡状态为当前变换系数位置所取的状态(请注意,是在依赖量化期间当前扫描的一个;“当前扫描的”一个用于表示遍次期间当前解码的一个)(注意,此术语现在表示更新的预期目的或效果)用于按照扫描顺序的当前变换系数之后的变换系数位置,这取决于当前变换系数的量化索引,2)通过使用上下文自适应熵解码,通过根据状态过渡为预定变换系数位置所取的状态选择上下文,来对预定变换系数位置的第一预定标志类型的标志进行解码,和/或为预定变换系数位置选择的一组量化级别。20.根据前述实施例中任一实施例所述的装置,被配置为使用上下文自适应熵解码通过根据预定的变换系数的系数位置选择上下文来针对预定变换系数位置解码第二标志类型的标志。21.根据前述实施例中任一项所述的装置,被配置为使用上下文自适应熵解码来对预定变换系数位置的第二预定标志类型的标志进行解码,通过1)对于在针对预定变换系数位置周围的局部模板中的一组相邻的变换系数位置的,基于预定变换系数位置的第二预定标志类型的标志之前解码的标志的集合,来确定局部活动性,和/或预定变换系数位置附近的局部模板内的变换系数位置的数量,其中量化索引不为零,并通过2)选择取决于局部活动性和/或非零量化索引的数量来确定上下文。22.根据实施例21所述的装置,被配置为根据所述局部活动性与所述非零量化索引的数目之间的差来选择所述上下文。23.根据实施例20或21所述的装置,其中,所述标志的集合包括(例如,在实施例12中也是如此的第一扫描遍次中编码的)预定第一标志类型的标志,预定第二标志类型的标志以及为所述相邻变换系数位置的集合解码的预定的第三标志类型的标志,并且所述装置配置为基于每个相邻变换系数位置的加数之和计算活动性,加数指示根据(请注意,如果在第一遍次中传输了更多的标志,则可以使用更多的以下标志)预定第一标志类型的标志,预定第二标志类型的标志以及针对相邻的变换系数位置解码的预定第三标志类型的标志确定的相邻的变换系数位置的量化索引的最小所取绝对值或最小所取绝对量化索引。30.根据前述实施例中任一项所述的装置,被配置为通过使用上下文自适应熵解码,通过根据预定的变换系数的系数位置来选择上下文,来针对预定变换系数位置对第三预定标志类型的标志进行解码。31.前述实施例中任一项的装置,被配置为使用上下文自适应熵解码来对预定变换系数位置的第三预定标志类型的标志进行解码,通过1)对于在针对预定变换系数位置周围的局部模板中的一组相邻的变换系数位置,基于预定的变换系数的第二预定标志类型的标志之前解码的标志的集合,来确定局部活动性,和/或预定变换系数位置附近的局部模板内的变换系数位置的数量,其中量化索引不为零,并通过2)根据局部活动性和/或非零量化索引的数量选择上下文。32.根据实施例31所述的装置,被配置为取决于局部活动性与非零量化索引的数量之间的差来选择上下文。33.根据实施例30或31所述的装置,其中,所述标志集合包括(参见在实施例12和23上的注释)预定第一标志类型的标志,预定第二标志类型的标志以及为所述相邻变换系数位置的集合解码的预定的第三标志类型的标志,并且所述装置配置为基于每个相邻变换系数位置的加数之和计算活动性,加数指示根据(参见实施例12和23的注释)预定第一标志类型的标志,预定第二标志类型的标志以及针对相邻的变换系数位置解码的预定第三标志类型的标志确定的相邻的变换系数位置的量化索引的最小所取绝对值或最小所取绝对量化索引。c1.用于对变换系数块进行解码的解码器,被配置为1)对于至少将变换系数块划分为的子块的集合中的每个进行解码,子块大小标志指示相应子块是否包含任何变换系数的量化索引的绝对值,其中量化索引大于预定的非零阈值2)解码每个子块内变换系数块的变换系数,在每个子块中,子块大小标志指示每个子块中存在至少一个变换系数的量化索引的绝对值大于预定的非零阈值(a)通过顺序解码各个子块内的每个变换系数,一个或多个标志的序列,将相应变换系数的值域递归地分为两个分区,并指示相应变换系数的量化索引位于两个分区中的哪个分区中,并在值域仅包括一个或多个绝对意义上相等的值时停止解码序列,并且如果所述值域仍然包括多于一个在绝对意义上不同的值,则余数值表示所述值域中各个变换系数的量化索引的绝对值,并且在每个子块中,所述子块大小标志指示子块中不存在量化系数的绝对值大于预定非零阈值的变换系数,b)通过顺序解码各个子块内的每个变换系数,一个或多个标志的序列,一旦值域包括则仅包括一个不超过非零阈值的值,仅一个值或在绝对意义上相等的值,立即停止解码所述序列。c2.实施例c1的装置,其中标志的序列中的第一标志是有效位标志,其指示对其解码第一标志的变换系数是否为零。c3.实施例c2的装置,其中预定非零阈值为1,并且所述装置被配置为在每个子块内,所述子块大小标志指示所述子块不存在量化系数的绝对值大于1的变换系数,针对各个子块内的每个变换系数按顺序解码第一标志。c4.前述实施例c1-c3中任一实施例的装置,被配置为1)对于所述变换系数块被划分为的至少另一子块的集合中的每个子块进行解码,另一子块大小标志指示是否相应子块是否包含不等于零的任何变换系数的,并且2)确定子块的集合,其中子块大小标志被解码为包括所述子块,其中,所述子块的另一子块大小标志指示所述子块包括至少一个不等于零的变换系数,并且3)推断变换系数块的变换系数在每个子块中,另一个子块大小标志指示所述子块不存在非零变换系数,全为零。在以上描述中,提出了用于基于块的混合视频编码的量化和变换系数级别(量化索引)的熵编码的概念。上面概述的技术可以应用于残余样本块的有损编码。残差样本可以表示原始样本的块与预测信号的样本之间的差异(可以通过图像内预测或图像间预测,或者图像内和图像间预测的组合来获得预测信号,或任何其他方式;在特殊情况下,可以将预测信号设置为零)。可以使用信号变换来变换样本的残余块。通常,使用线性且可分离的变换(线性表示变换是线性的,但可以合并变换系数的附加舍入)。通常使用dct-ii的整数近似值或dct/dst系列其他变换的整数近似值。可以在水平或垂直方向上使用不同的变换。变换不限于线性变换和分离的变换。可以使用任何其他变换(线性和不可分离的或非线性的)。作为信号变换的结果,获得了变换系数块,其表示不同信号空间中残差样本的原始块。在特殊情况下,所述变换可以等于识别变换(即,变换系数块可以等于残差样本的块)。使用有损编码对变换系数块进行编码。在解码器侧,对重构的变换系数块进行逆变换,从而获得残余样本的重构的块。最后,通过添加预测信号,获得图像样本的重构的块。特别地,适合于变换系数块的有损编码,在上述实施例中使用了以下方面:·变换系数的依赖标量量化:在编码器侧,变换系数块被映射到变换系数级别(即,量化索引)的块,其代表具有降低的保真度的变换系数。在解码器侧,将量化索引映射到重构的变换系数(由于量化而与原始变换系数不同)。与常规的标量量化相比,变换系数不是独立地量化的。取而代之的是,某个变换系数的可允许重构的级别的集合取决于为其他变换系数选择的量化索引。·变换系数级别(量化索引)的熵编码:使用二进制算术编码对表示重构的变换系数的变换系数级别(用于依赖标量量化)进行熵编码。在这种情况下,利用了依赖量化的性质来提高熵编码的效率。上面描述了不同的实施例和方面。说明与不同方面相关,诸如标志/余数表示,标志和余数在遍次上的分布,上下文派生,上下文自适应编码标志的限制等等。在不同部分中描述的这些方面、特征、功能和细节可以可选地单独或一起引入本文描述的实施例中。而且,本文描述的实施例可以单独使用,并且还可以通过另一章中的任何特征、功能和细节来补充。另外,应注意,本文所述的各个方面可单独或组合使用。因此,可以将细节添加到每个所述各个方面,而无需将细节添加到所述多个方面中的另一个。特别地,在权利要求中还描述了实施例。权利要求中描述的实施例可以可选地由本文所述的任何特征、功能和细节来补充,无论是单独地还是组合地。还应当注意,本公开显式或隐式地描述了可用于视频编码器(用于提供输入视频信号的编码表示的装置)和视频解码器(基于视频信号的编码表示,用于提供视频信号的解码表示的装置)中的特征。因此,本文描述的任何特征可以在视频编码器的上下文中和在视频解码器的上下文中使用。此外,本文公开的与方法有关的特征和功能也可以在装置中使用(被配置为执行这种功能)。此外,本文中关于设备公开的任何特征和功能也可以在相应的方法中使用。换句话说,本文公开的方法可以由关于装置描述的任何特征和功能来补充。另外,如将在“实现替代方案”部分中描述的,本文中描述的任何特征和功能可以以硬件或软件来实现,或者可以使用硬件和软件的组合来实现。尽管已经在装置的上下文中描述了一些方面,但是很显然,这些方面也代表了对相应方法的描述,其中块或设备对应于方法步骤或方法步骤的特征。类似地,在方法步骤的上下文中描述的方面也表示对相应装置的相应块或项目或特征的描述。方法步骤中的一些或全部可以由(或使用)硬件装置,例如,微处理器、可编程计算机或电子电路执行。在一些实施例中,最重要的方法步骤中的一个或多个可以由这样的装置执行。取决于某些实施要求,本发明的实施例可以以硬件或软件来实施。可以使用具有存储有电子可读控制信号的数字存储介质,例如软盘、dvd、蓝光、cd、rom、prom、eprom、eeprom或flash存储器执行该实现,其与可编程计算机系统合作(或能够合作)的计算机,从而执行相应的方法。因此,数字存储介质可以是计算机可读的。根据本发明的一些实施例包括具有电子可读控制信号的数据载体,其能够与可编程计算机系统协作,从而执行本文所述的方法之一。通常,本发明的实施例可以被实现为具有程序代码的计算机程序产品,当计算机程序产品在计算机上运行时,该程序代码可用于执行一种方法。程序代码可以例如存储在机器可读的载体上。其他实施例包括存储在机器可读载体上的,用于执行本文描述的方法之一的计算机程序。换句话说,因此,本发明方法的实施例是一种计算机程序,该计算机程序具有用于执行,当计算机程序在计算机上运行时,本文描述的方法操作之一的程序代码。因此,本发明方法的进一步实施例是一种数据载体(或数字存储介质,或计算机可读的介质),其包括记录在其上的用于执行本文所述方法之一的计算机程序。数据载体、数字存储介质或记录的介质通常是有形的和/或非过渡性的。因此,本发明方法的进一步实施例是表示用于执行本文描述的方法之一的计算机程序的数据流或信号的序列。数据流或信号的序列可以例如被配置为经由数据通信连接,例如经由互联网来发送。进一步实施例包括处理装置,例如计算机或可编程逻辑器件,被配置为或适于执行本文描述的方法之一。进一步实施例包括一种计算机,该计算机上安装了用于执行本文描述的方法之一的计算机程序。根据本发明的进一步实施例包括一种装置或系统,该装置或系统被配置为(例如,以电子方式或光学方式)将用于执行本文描述的方法之一的计算机程序传送给接收器。接收器可以是例如计算机、移动设备、存储设备等。该装置或系统可以例如包括用于将计算机程序传送到接收器的文件服务器。在一些实施例中,可编程逻辑器件(例如现场可编程门阵列)可以用于执行本文描述的方法的一些或全部功能。在一些实施例中,现场可编程门阵列可以与微处理器协作以便执行本文描述的方法之一。通常,该方法优选地由任何硬件装置执行。可以使用硬件装置或使用计算机,或者使用硬件装置和计算机的组合来实现本文描述的装置。本文描述的装置或本文描述的装置的任何组件可以至少部分地以硬件和/或软件来实现。可以使用硬件装置,或使用计算机,或使用硬件装置和计算机的组合来执行本文描述的方法。本文描述的方法或本文描述的装置的任何组件可以至少部分地由硬件和/或软件执行。上面描述的实施例仅用于说明本发明的原理。应当理解,本文描述的布置和细节的修正和变化对于本领域的其他技术人员将是显而易见的。因此,本发明的意图仅由即将来临的专利权利要求的范围限制,而不受通过本文的实施方式的描述和解释而给出的具体细节的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1