CN103650510B - 用于变换系数级编码的上下文建模技术 - Google Patents
用于变换系数级编码的上下文建模技术 Download PDFInfo
- Publication number
- CN103650510B CN103650510B CN201280035145.4A CN201280035145A CN103650510B CN 103650510 B CN103650510 B CN 103650510B CN 201280035145 A CN201280035145 A CN 201280035145A CN 103650510 B CN103650510 B CN 103650510B
- Authority
- CN
- China
- Prior art keywords
- coefficient
- absolute level
- transformation
- context model
- transformation coefficient
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000009466 transformation Effects 0.000 title claims abstract description 154
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims abstract description 7
- 230000008859 change Effects 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 16
- 238000011002 quantification Methods 0.000 description 7
- 230000011218 segmentation Effects 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
在一个实施例中,提供了用于编码视频数据的方法,所述方法包括接收包括变换系数的二维阵列的变换单元以及沿着单级扫描顺序处理该二维阵列的变换系数。该处理包括为沿着单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于编码该非零变换系数的绝对级,其中该选择基于沿着单级扫描顺序先前编码的一个或多个变换系数。
Description
相关申请的交叉引用
本申请根据美国法典第35条119(e)款要求标题为“CONTEXT MODELING FOR LEVELCODING IN CABAC”、于2011年7月15日提交的美国临时申请No.61/508,595和标题为“WAVEFRONT SCAN AND RELATED CONTEXT MODELING”、于2011年11月8日提交的美国临时申请No.61/557,299的权益和优先权。这些申请的全部内容通过引用被包含在此以用于所有目的。
背景技术
视频压缩(即,编码)系统一般地针对大多数压缩操作采用块处理。块是一组邻近像素并且被认为是用于压缩目的的“编码单元”。理论上,较大的编码单元大小被优选成利用中间邻近像素当中的相关性。诸如运动图像专家组(MPEG)-1、MPEG-2以及MPEG-4的特定视频编码标准使用4x4、8x8或16x16个像素的编码单元大小(被称为宏块)。
高效率视频编码(HEVC)是同样采用块处理的替代性视频编码标准。如图1中所示,HEVC将输入图片100分割成称为最大编码单元(LCU)的方形块。每个LCU能够和128x128个像素一样大,并且能够被分割成称为编码单元(CU)的较小方形块。例如,LCU能够被分成四个CU,每个都是LCU的大小的四分之一。CU能够被进一步分成四个较小的CU,每个都是原始CU的大小的四分之一。能够重复这个分割过程直到满足特定准则为止。图2图示了被分割成七个CU(202-1、202-2、202-3、202-4、202-5、202-6以及202-7)的LCU200。如所示,CU202-1、202-2以及202-3每个都是LCU200的大小的四分之一。另外,LCU200的右上象限被分成四个CU202-4、202-5、202-6以及202-7,其每个都是象限的大小的四分之一。
每个CU包括一个或多个预测单元(PU)。图3图示了包括PU302-1、302-2、302-3以及302-4的示例CU分割300。PU被用于CU分割300的空间或时间预测编码。例如,如果CU分割300在“帧内”模式下被编码,则每个PU302-1、302-2、302-3以及302-4具有它自己的预测方向以用于空间预测。如果CU分割300在“帧间”模式下被编码,则每个PU302-1、302-2、302-3以及302-4具有它自己的(一个或多个)运动矢量和关联的(一个或多个)参考图片以用于时间预测。
另外,PU的每个CU分割都与一组变换单元(TU)相关联。像其它视频编码标准一样,HEVC对残差数据应用块变换以使块内的像素解相关并且将块能压缩成低阶变换系数。然而,不像对宏块应用单个4x4或8x8变换的其它标准,HEVC能够对单个CU应用不同大小的一组块变换。要应用于CU的该组块变换由它关联的TU来表示。通过示例,图4图示了具有关联的一组TU402-1、402-2、402-3、402-4、402-5、402-6以及402-7的图3的CU分割300(包括PU302-1、302-2、302-3以及302-4)。这些TU指示七个单独的块变换应该被应用于CU分割300,其中每个块变换的范围由每个TU的位置和大小来定义。与特定CU相关联的TU的配置能够基于各种准则而不同。
一旦已经关于特定TU应用了块变换操作,导致变换系数就被量化以降低系数数据的大小。所量化的变换系数然后被熵编码,导致最终一组压缩比特。HEVC当前提供被称为基于上下文的自适应二进制算术编码(CABAC)的熵编码方案。CABAC由于它基于先前编码的符号统计自适应地选择用于算术地编码输入符号的上下文模型(即,概率模型)的能力导致能够提供有效压缩。然而,CABAC中的上下文模型选择(被称为上下文建模)是复杂的,并且需要比其它压缩方案显著更多的处理能力以用于编码/编码。
发明内容
在一个实施例中,提供了用于编码视频数据的方法,所述方法包括接收包括变换系数的二维阵列的变换单元以及沿着单级扫描顺序处理二维阵列的变换系数。所述处理包括为沿着单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于编码非零变换系数的绝对级,其中所述选择基于沿着单级扫描顺序先前编码的一个或多个变换系数。
在另一实施例中,提供了用于解码视频数据的方法,所述方法包括:接收压缩数据的比特流,所述压缩数据对应于沿着单级扫描顺序被先前编码的变换系数的二维阵列;以及解码压缩数据的比特流。所述解码包括为沿着单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于解码非零变换系数的绝对级,其中所述选择基于沿着单级扫描顺序先前解码的一个或多个变换系数。
在另一实施例中,提供了用于编码视频数据的方法,所述方法包括接收包括多个变换系数的变换单元,以及使用单个扫描类型和单个上下文模型选择方案来编码变换单元的有效位图和所述多个变换系数的绝对级。
在另一实施例中,提供了用于解码视频数据的方法,所述方法包括接收压缩数据的比特流,所述压缩数据对应于包括被先前编码的多个变换系数的变换单元。所述方法还包括使用单个扫描类型和单个上下文模型选择方案来解码变换单元的有效位图和所述多个变换系数的绝对级。
以下具体实施方式和附图提供了特定实施例的本质和优点的更好理解。
附图说明
图1图示被分割成最大编码单元(LCU)的输入图片。
图2图示被分割成编码单元(CU)的LCU。
图3图示被分割成预测单元(PU)的CU。
图4图示被分割成PU的CU和与该CU相关联的一组变换单元(TU)。
图5图示用于编码视频内容的编码器。
图6图示用于解码视频内容的解码器。
图7图示CABAC编码/解码过程。
图8图示TU中的最后有效的系数位置。
图9图示用于使用正向扫描用于上下文模型选择的示例邻居。
图10图示包括每4x4子块的正向Z字形扫描和每个子块内的逆向Z字形扫描的两级扫描序列。
图11图示使用两级扫描序列用于变换系数级的CABAC编码/解码的过程。
图12图示根据一个实施例使用单级扫描用于变换系数级的CABAC编码/解码的过程。
图13图示单级、逆向Z字形扫描。
图14图示单级、逆向波前扫描。
图15图示根据一个实施例使用统一扫描类型和上下文模型选择方案用于有效位图值和变换系数级的CABAC编码/解码的过程。
图16图示使用逆向扫描用于上下文模型选择的示例邻居。
具体实施方式
本文中描述的是能够在诸如CABAC的上下文自适应熵编码方案内被用于变换系数级编码的上下文建模技术。在以下描述中,出于说明的目的,许多示例和特定细节被阐述以便提供对特定实施例的彻底理解。如由权利要求书所限定的特定实施例可以单独或者与在下面所描述的其它特征相结合地包括这些示例中的特征中的一些或全部,并且可以进一步包括本文中所描述的特征和概念的修改和等同物。
编码器和解码器实施例
图5描绘了用于编码视频内容的示例编码器500。在一个实施例中,编码器500能够实现HEVC标准。编码器500的通用操作在下面被描述;然而,应该领会的是,本描述被提供仅用于说明目的并且不旨在在此限制本公开和教导。本领域的普通技术人员将认识到针对编码器500的结构和操作的各种修改、变化以及替代方案。
如所示,编码器500接收当前PU“x”作为输入。PU x对应于CU(或其一部分),其相应地是正被编码的输入图片(例如,视频帧)的一部分。给定PU x,预测PU“x’”通过空间预测或时间预测(经由空间预测块502或时间预测块504)来获得。然后PU x减去PU x’以生成残差PU“e”。
一旦被生成,残差PU e就被传递给变换块506,所述变换块506被配置成对PU e执行一个或多个变换操作。这种变换操作的示例包括离散正弦变换(DST)、离散余弦变换(DCT)及其变体(例如,DCT-I、DCT-II、DCT-III等)。变换块506然后在变换域(“E”)中输出残差PU e,使得所变换的PU E包括变换系数的二维阵列。在这个块中,能够关于已经与对应于PU e的CU相关联的每个TU执行变换操作(如上面关于图4所描述的)。
所变换的PU E被传递给量化器508,所述量化器508被配置成将PU E的相对高精度的变换系数转换或者量化成有限数目的可能值。在量化之后,所变换的PU E经由熵编码块510被熵编码。该熵编码过程将所量化的变换系数压缩成被随后传送到适当的接收器/解码器的最终压缩比特。熵编码块510能够使用各种不同类型的熵编码方案,诸如CABAC。实现CABAC的熵编码块510的特定实施例被在下面更详细地描述。
除前面的步骤之外,编码器500包括其中去量化器512将PU E的所量化的变换系数去量化成去量化的PU“E’”的解码过程。PU E’被传递给逆变换块514,所述逆变换块514被配置成逆变换PU E’的所去量化的变换系数并且从而生成重建的残差PU“e’”。重建的残差PUe’然后被加到原始预测PU x’以形成新的、重建的PU“x’’”。环路滤波器516对重建的PU x’’执行各种操作以使块边界平滑并且最小化所重建的像素与原始像素之间的编码失真。所重建的PU x’’然后被用作用于编码视频内容的将来帧的预测PU。例如,如果所重建的PU x’’是参考帧的一部分,则所重建的PU x’’能够被存储在参考缓冲器518中以用于将来的时间预测。
图6描绘了与图5的编码器500互补的示例解码器600。像编码器500一样,在一个实施例中,解码器600能够实现HEVC标准。解码器600的通用操作在下面被描述;然而,应该领会的是,本描述被提供仅用于说明目的并且不旨在在此限制本公开和教导。本领域的普通技术人员将认识到针对解码器600的结构和操作的各种修改、变化以及替代方案。
如所示,解码器600接收压缩数据的比特流,诸如由编码器500所输出的比特流,作为输入。该输入比特流被传递给熵解码块602,所述熵解码块602被配置成对比特流执行熵解码以生成残差PU的所量化的变换系数。在一个实施例中,熵解码块602被配置成执行由编码器500的熵编码块510所执行的操作的逆。熵解码块602能够使用各种不同类型的熵编码方案,诸如CABAC。实现CABAC的熵解码块602的特定实施例被在下面更详细地描述。
一旦被生成,所量化的变换系数就被去量化器604去量化以生成残差PU“E’”。PUE’被传递给逆变换块606,所述逆变换块606被配置成逆变换PU E’的所去量化的变换系数并且从而输出所重建的残差PU“e’”。重建的残差PU e’然后被加到先前解码的预测PU x’以形成新的、所重建的PU“x’’”。环路滤波器608对所重建的PU x’’执行各种操作以使块边界平滑并且最小化所重建的像素与原始像素之间的编码失真。所重建的PU x’’然后被用来输出所重建的视频帧。在特定实施例中,如果所重建的PU x’’是参考帧的一部分,则所重建的PU x’’能够被存储在参考缓冲器610中以用于将来PU的重建(经由例如空间预测块612或时间预测块614)。
CABAC编码/解码
如关于图5和6所指出的,熵编码块510和熵解码块602能够每个实现CABAC,所述CABAC是将输入符号映射到非整数长度(例如,分数的)码字的算术编码方案。算术编码的效率在很大程度上取决于对于输入符号的准确概率的确定。因此,为了提高编码效率,CABAC使用其中不同的上下文模型(即,概率模型)被选择并且应用于不同的语法元素的上下文自适应技术。另外,能够在编码/解码期间更新这些上下文模型。
一般地说,使用CABAC来编码语法元素的过程包括三个基本步骤:(1)二值化,(2)上下文建模,以及(3)二进制算术编码。在二值化步骤中,语法元素被转换成二进制序列或二进制串(如果它还未被二值化)。在上下文建模步骤中,为二进制串的一个或多个二进制值(即,比特)选择(从每CABAC标准可用模型的列表中)上下文模型。上下文模型选择过程能够基于正被编码的特定语法元素以及最近编码的元素的统计而不同。在算术编码步骤中,每个二进制值基于所选上下文模型被编码(经由算术编码器)。使用CABAC来解码语法元素的过程对应于这些步骤的逆。
图7描绘了被执行以用于编码/解码残差PU(例如,图5的量化PU E)的量化的变换系数的示例性CABAC编码/解码过程700。过程700能够由例如图5的熵编码块510或图6的熵解码块602来执行。在特定实施例中,过程700被应用于与残差PU相关联的每个TU。
在块702处,熵编码块510/熵解码块602编码或者解码对应于当前TU中最后有效的(即,非零)变换系数的(y,x)坐标的最后有效的系数部分(针对给定扫描模式)。通过示例,图8图示了NxN个变换系数的TU800,其中系数802对于例如Z字形扫描来说对应于TU800中的最后有效的系数位置。关于编码过程,块702包括二值化“last_significant_coeff_y”语法元素(与y坐标相对应)并且二值化“last_significant_coeff_x”语法元素(与x坐标相对应)。块702还包括为last_significant_coeff_y和last_significant_coeff_x语法元素选择上下文模型,其中该上下文模型基于预定义上下文索引(lastCtx)和上下文索引增量(lastIndInc)而被选择。在一个实施例中,上下文索引增量被确定如下:
1.如果当前TU大小是4x4个像素,则lastIndInc=lastCtx
2.如果当前TU大小是8x8个像素,则lastIndInc=lastCtx+3
3.如果当前TU大小是16x16个像素,则lastIndInc=lastCtx+8
4.如果当前TU大小是32x32个像素,则lastIndInc=lastCtx+15
一旦上下文模型被选择,就使用所选模型在算术上编码/解码last_significant_coeff_y和last_significant_coeff_x语法元素。
在块704处,熵编码块510/熵解码块602编码或者解码与当前TU相关联的二进制有效位图,其中有效位图的每个元素(由语法元素significant_coeff_flag来表示)是指示在TU中的对应位置处的变换系数是否为非零的二进制值。块704包括扫描当前TU并且以扫描顺序为每个变换系数选择用于该变换系数的上下文模型。所选上下文模型然后被用来在算术上编码/解码与变换系数相关联的significant_coeff_flag语法元素。上下文模型的选择是基于基本上下文索引(sigCtx)和上下文索引增量(sigIndInc)。使用考虑变换系数的位置以及用于在当前变换系数附近的一个或多个相邻系数的有效位图值的基于邻居的方案针对每个变换系数动态地确定变量sigCtx和sigIndInc。
在一个实施例中,像在下面所指出的那样针对给定变换系数(y,x)来确定sigCtx和sigIndInc。在这个实施例中,假定TU使用正向Z字形扫描来扫描。其它类型的扫描可以导致用于确定sigCtx和sigIndInc的不同邻居的使用。
1.如果当前TU大小是4x4个像素,则sigCtx=y*4+x并且sigIndInc=sigCtx+48
2.如果当前TU大小是8x8个像素,则sigCtx=(y>>l)*4+(x>>l)并且sigIndInc=sigCtx+32
3.如果当前TU大小是16x16或32x32个像素,则sigCtx基于当前变换系数的位置(y,x)和系数的所编码的邻居的有效位图值被确定如下:
a.如果y<=2并且x<=2,则sigCtx=y*2+x
b.否则如果y=0(即,当前变换系数是在TU的上边界处),则sigCtx=4+significant_coeff_flag[y][x-1]+significant_coeff_flag[y][x-2]
c.否则如果x=0(即,当前变换系数是在TU的左边界处),则sigCtx=7+significant_coeff_flag[y-l][x]+significant_coeff_flag[y-2][x]
d.否则如果x>1并且y>1,则sigCtx=significant_coeff_flag[y-l][x]+significant_coeff_flag[y][x-1]+significant_coeff_flag[y-l][x-1]+significant_coeff_flag[y][x-2]+significant_coeff_flag[y-2][x]
e.否则如果x>1,则sigCtx=significant_coeff_flag[y-l][x]+significant_coeff_flag[y][x-1]+significant_coeff_flag[y-l][x-1]+significant_coeff_flag[y][x-2]
f.否则如果y>1,则sigCtx=significant_coeff_flag[y-l][x]+significant_coeff_flag[y][x-1]+significant_coeff_flag[y-l][x-1]+significant_coeff_flag[y-2][x]
g.否则sigCtx=significant_coeff_flag[y-l][x]+significant_coeff_flag[y][x-1]+significant_coeff_flag[y-l][x-1]
h.最终值,如果sigCtx是10+min(4,sigCtx)
4.如果当前TU大小是16x16,则sigIndInc=sigCtx+16
5.如果当前TU大小是32x32,则sigIndInc=sigCtx
为了帮助视觉化以上的邻居确定逻辑,图9在示例TU900中图示了不同变换系数的可能的邻居定义。对于位于TU900中间的变换系数(例如,位于(y,x)处的系数902),sigCtx基于位于(y,x–1)、(y,x–2)、(y–1,x)、(y–2,x)以及(y–1,x–1)处的五个邻居的有效位图值而被确定。对于位于TU900的左边界上的变换系数(例如,位于(y,0)处的系数904),sigCtx基于位于(y–1,0)和(y–2,0)处的两个邻居的有效位图值而被确定。对于位于TU900的上边界上的变换系数(例如,位于(0,x)处的系数906),sigCtx基于位于(0,x–1)和(0,x–2)处的两个邻居的有效位图值而被确定。并且对于位于TU900的上部左上边界中的特定变换系数(例如,系数908、910、912、914),sigCtx不是基于任何邻居数据。
在图7的块706处,熵编码块510/熵解码块602编码或者解码当前TU的有效(即,非零)变换系数。该过程包括针对每个有效变换系数,编码或者解码(1)变换系数的绝对级(还被称为“变换系数级”)以及(2)变换系数的符号(正或负)。作为编码/解码变换系数级的一部分,熵编码块510/熵解码块602编码或者解码三个不同语法元素:coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag以及coeff_abs_level_remaining。Coeff_abs_level_greater1_flag是指示变换系数的绝对级是否大于1的二进制值。Coeff_abs_level_greater2_flag是指示变换系数的绝对级是否大于2的二进制值。并且coeff_abs_level_remaining是等于变换系数的绝对级减预定值(在一个实施例中,这个预定值是3)的值。
在一个实施例中,编码/解码coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag语法元素的过程涉及基于子块方案为每个语法元素选择上下文模型(注意,coeff_abs_level_remaining语法元素不需要上下文模型选择)。在这个方案中,当前TU被划分成许多4x4个子块,并且针对给定非零变换系数的coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag的上下文模型选择基于变换系数的子块内的统计以及TU中先前的子块的统计而被执行。为了促进这个,在块706中,(在特定子块内)使用两次扫描或循环-(1)子块级处的外扫描和(2)变换系数级处的内扫描来扫描当前TU。这在视觉上在图10中被示出,图10描绘了TU1000的两级扫描序列。在该示例中,扫描序列根据关于TU1000的4x4个子块的正向Z字形模式进行(即,外扫描)。在每个4x4子块内,扫描序列根据关于子块的变换系数的逆向Z字形模式进行(即,内扫描)。这允许TU1000的每个4x4子块在移动到下一个子块上之前被整体地处理。
图11描绘了图示coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag语法元素如何使用10中所示出的两级扫描序列被编码/解码的过程1100。在块1102处,针对当前TU的每个4x4子块进入外FOR循环。这个外FOR循环根据第一扫描模式进行,所述第一扫描模式诸如图10中所示出的子块级正向Z字形模式。在块1104处,针对当前4x4子块中的每个变换系数进入内FOR循环。这个内FOR循环根据第二扫描模式进行,所述第二扫描模式诸如图10中所示出的系数级逆向Z字形模式。在块1104的内FOR循环内,如果变换系数是非零(即,如果对应的有效位图中用于变换系数的significant_coeff_flag等于1),则熵编码块510/熵解码块602编码或者解码当前变换系数的coeff_abs_level_greater1_flag语法元素(块1106)。
如上面所指出的,在块1106处编码/解码coeff_abs_level_greater1_flag语法元素包括选择适当的上下文模式,其中所选上下文模型是基于子块级数据(例如,当前子块内的统计和TU中先前的子块的统计)的。在一个实施例中,在块1106处为coeff_abs_level_greater1_flag选择上下文模型包括首先为当前子块确定上下文集(ctxSet)如下:
1.如果当前TU大小是4x4个像素,则ctxSet=0
2.如果当前TU大小大于4x4并且当前4x4子块在子块级扫描顺序(即,块1102的FOR循环)上是第一个,则ctxSet=5
3.否则ctxSet由在前一个4x4子块中具有大于1的绝对值的变换系数数目(lastGreater2Ctx)来确定;即,ctxSet=((lastGreater2Ctx)>>2)+1
在每个上下文集内,能够存在五个不同的上下文模型(被编号0至4)。一旦用于当前子块的上下文集像上面那样被确定,就为coeff_abs_level_greater1_flag语法元素选择该上下文集内的特定上下文模型如下:
1.初始上下文被设置为1
2.在当前4x4子块中具有大于1的绝对级的变换系数已被编码/解码之后,上下文模型被设置为0
3.当当前4x4子块中的仅一个变换系数已被编码/解码并且其绝对级等于1时,上下文模型被设置为2
4.当当前4x4子块中的仅两个变换系数已被编码/解码并且它们的绝对级等于1时,上下文模型被设置为3
5.当当前4x4子块中的三个或更多个变换系数已被编码/解码并且它们的绝对级等于1时,上下文模型被设置为4
在块1108处,在块1104处发起的内FOR循环结束(一旦当前子块中的所有变换系数都被遍历)。
在块1110处,针对当前4x4子块中的每个变换系数进入另一内FOR循环。该循环基本上与循环1104类似但被用来编码/解码coeff_abs_level_greater2_flag语法元素。特别地,在块1110的内FOR循环内,如果用于变换系数的coeff_abs_level_greater1_flag等于1则熵编码块510/熵解码块602编码或者解码当前变换系数的coeff_abs_level_greater2_flag(块1112)。
像coeff_abs_level_greater1_flag语法元素一样,在块1112处编码/解码coeff_abs_level_greater1_flag语法元素包括选择适当的上下文模型,其中所选上下文模型是基于子块级数据。在一个实施例中,在块1112处为coeff_abs_level_greater2_flag选择上下文模型包括首先根据与关于块11106所描述的ctxSet选择规则集相同的规则集来为当前子块确定上下文集。一旦用于当前子块的上下文集被确定,就为当前变换系数的coeff_abs_level_greater2_flag语法元素选择该上下文集内的特定上下文模型如下:
1.初始上下文被设置为0
2.当在当前4x4子块中具有大于1的绝对级的仅一个变换系数已被编码/解码时,上下文模型被设置为1
3.当在当前4x4子块中具有大于1的绝对级的仅两个变换系数已被编码/解码时,上下文模型被设置为3
4.当在当前4x4子块中具有大于1的绝对级的仅三个变换系数已被编码/解码时,上下文模型被设置为3
5.当在当前4x4子块中具有大于1的绝对级的四个或更多个变换系数已被编码/解码时,上下文模型被设置为4
在块1114处,在块1110处发起的内FOR循环结束(一旦当前子块中的所有变换系数都被遍历)。
尽管未在图11中示出,但是在块1114之后,过程1100能够包括用于分别编码/解码系数符号和coeff_abs_level_remaining语法元素的两个附加的内FOR循环(即,在当前子块内的循环)。注意,这些语法元素的编码不需要任何上下文模型选择。
在块1116处,在块1102处发起的外FOR循环结束(一旦当前TU中的所有子块都被遍历)。
如从图11及其所附描述能够看到的,很大部分地由于当为coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag语法元素选择上下文模型时4x4个子块之间的依赖,导致使用CABAC来编码和解码变换系数级的过程可能是复杂的。这些子块依赖导致两级扫描过程和相对复杂的上下文模型选择规则。以下部分描述了当使用CABAC来编码/解码变换系数级时简化扫描和上下文模型选择的各种增强。
使用单级扫描的变换系数级的CABAC编码/解码
在一组实施例中,在图7的块706处变换系数级的编码/解码能够被修改,使得针对coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag语法元素的上下文模型选择不再依赖子块级数据。替代地,在这些实施例中,能够基于当前TU内的单个变换系数来选择上下文模型。因此,和图11的过程1100对比,无需执行两级扫描序列(即,每子块的外子块级扫描和内系数级扫描)来编码/解码变换系数级。相反地,能够使用整个TU的单级扫描(即,沿着单级扫描顺序)执行编码/解码。这能够提高编码/解码性能,同时简化上下文模型选择所需的代码。
图12描绘了根据一个实施例用于使用单级扫描在CABAC中执行变换系数级编码/解码的过程1200。特别地,图12集中于coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag语法元素的编码/解码(coeff_abs_level_remaining语法元素的编码/解码因为不需要上下文模型选择而未被描述)。能够通过熵编码块510或熵解码块602在图7的块706内执行过程1200。在一个实施例中,能够执行过程1200代替图11的过程1100。
在块1202处,熵编码块510/熵解码块602能够针对当前TU中的每个变换系数进入FOR循环。该FOR循环能够表示沿着单级扫描顺序TU的遍历(即,不需要任何子块划分的扫描)。在一个实施例中,单级扫描顺序能够对应于如图13中所示出的逆向Z字形扫描。在另一实施例中,单级扫描顺序能够对应于如图14中所示出的逆波前扫描。在波前或逆波前扫描中,扫描线中的全部都具有相同的对角线扫描方向。在又一些实施例中,单级扫描顺序能够对应于本领域中已知的任何其它类型的扫描模式。
在块1204处,如果系数是非零则熵编码块510/熵解码块602能够编码/解码当前变换系数的coeff_abs_level_greater1_flag语法元素,其中编码/解码包括以当前单级扫描顺序(即,在块1202的FOR循环中)基于先前编码的/解码的变换系数来为coeff_abs_level_greater1_flag选择上下文模型。在一个实施例中,选择该上下文模型能够包括:
1.针对所有TU大小:
a.将初始上下文模型设置为1
b.如果具有大于1的绝对级的变换系数已经被以当前单级扫描顺序先前编码/解码,则将上下文模型设置为0
c.如果仅(n-1)个变换系数已经被以当前单级扫描顺序先前编码/解码并且它们的绝对级等于1,则将上下文模型设置为范围从2至T-1的n
d.如果(T-1)个变换系数已经被以当前单级扫描顺序先前编码/解码并且它们的绝对级等于1,则将上下文模型设置为T
注意在前面的逻辑中,上下文模型选择与当前TU的大小无关,因为相同的规则应用于所有TU大小。另外,关于(1)(c)和(1)(d),所选上下文模型能够基于已经被以当前单级扫描顺序先前编码/解码的、具有等于1的绝对级的变换系数的数目来改变,直到阈值数目T减1。当达到了T减1时,上下文模型能够被设置为阈值数目T。在特定实施例中,T的值能够被设置为10。
在可替换的实施例中,前面的针对coeff_abs_level_greater1_flag的上下文模型选择逻辑能够被修改成考虑当前TU的大小(范围从例如4x4个像素到32x32个像素)。在该实施例中,选择该上下文模型能够包括:
1.针对所有TU大小:
a.将初始上下文模型设置为1
b.如果具有大于1的绝对级的变换系数已经被以当前单级扫描顺序先前编码/解码了,则将上下文模型设置为0
2.对于4x4个TU,如果仅(n4x4-1)个变换系数已经在当前4x4TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T4x4-1的n4x4;如果(T4x4-1)或更多变换系数已经在当前4x4TU中被编码/解码了并且它们的级等于1,则将上下文模型设置为T4x4
3.对于8x8个TU,如果仅(n8x8-1)个变换系数已经在当前8x8TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T8x8-1的n8x8;如果(T8x8-1)或更多变换系数已经在当前8x8TU中被编码/解码了并且它们的级等于1,则将上下文模型设置为T8x8
4.对于16x16个TU,如果仅(n16x16-1)个变换系数已经在当前16x16TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T16x16-1的n16x16;如果(T16x16-1)或更多变换系数已经在当前16x16TU中被编码/解码了并且它们的级等于1,则将上下文模型设置为T16x16
5.对于32x32个TU,如果仅(n32x32-1)个变换系数已经在当前32x32TU中被编码/解码了并且它们的(一个或多个)绝对级等于1,则将上下文模型设置为范围从2至T32x32-1的n32x32;如果(T32x32-1)或更多变换系数已经在当前32x32TU中被编码/解码了并且它们的级等于1,则将上下文模型设置为T32x32
在特定实施例中,以上阈值数目T4x4、T8x8、T16x16以及T32x32的值分别能够被设置为4、6、8以及10。
在块1206处,熵编码块510/熵解码块602能够编码/解码当前变换系数的coeff_abs_level_greater2_flag语法元素,其中编码/解码包括以当前单级扫描顺序基于先前编码的/解码的变换系数来为coeff_abs_level_greater2_flag选择上下文模型。在一个实施例中,选择该上下文模型能够包括:
1.针对所有TU大小:
a.将初始上下文模型设置为0
b.如果具有大于1的(一个或多个)绝对级的仅m个变换系数已经被以当前单级扫描顺序先前编码/解码,则将上下文模型设置为范围从1至K-1的m
c.如果具有大于1的(一个或多个)绝对级的K个或更多个变换系数已经被以当前单级扫描顺序先前编码/解码,则将上下文模型设置为K
注意在前面的逻辑中,上下文模型选择与当前TU的大小无关,因为相同的规则应用于所有TU大小。另外,关于(1)(b)和(1)(c),所选上下文模型能够基于已经被以当前单级扫描顺序先前编码/解码的、具有大于1的绝对级的变换系数的数目来改变,直到阈值数目K减1。当达到了K时,上下文模型能够被设置为阈值数目K。在特定实施例中,K的值能够被设置为10。
在可替换的实施例中,前面的针对coeff_abs_level_greater2_flag的上下文模型选择逻辑能够被修改成考虑当前TU的大小(范围从例如4x4个像素到32x32个像素)。在该实施例中,选择该上下文模型能够包括:
1.对于所有TU大小,将初始上下文模型设置为0
2.对于4x4个TU,如果具有大于1的(一个或多个)绝对级的仅(m4x4-1)个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为范围从1至K4x4-1的m4x4;如果具有大于1的(一个或多个)绝对级的K4x4或更多个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为K4x4。
3.对于8x8个TU,如果具有大于1的(一个或多个)绝对级的仅(m8x8-1)个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为范围从1至K8x8-1的m8x8;如果具有大于1的(一个或多个)绝对级的K8x8或更多个变换系数已经在当前8x8TU中被编码/解码,则将上下文模型设置为K8x8。
4.对于16x16个TU,如果具有大于1的(一个或多个)绝对级的仅(m16x16-1)个变换系数已经在当前16x16TU中被编码/解码,则将上下文模型设置为范围从1至K16x16-1的m16x16;如果具有大于1的(一个或多个)绝对级的K16x16或更多个变换系数已经在当前16x16TU中被编码/解码,则将上下文模型设置为K16x16
5.对于32x32个TU,如果具有大于1的(一个或多个)绝对级的仅(m32x32-1)个变换系数已经在当前32x32TU中被编码/解码,则将上下文模型设置为范围从1至K32x32-1的m32x32;如果具有大于1的(一个或多个)绝对级的K32x32或更多个变换系数已经在当前4x4TU中被编码/解码,则将上下文模型设置为K32x32。
在特定实施例中,以上阈值数目K4x4、K8x8、K16x16以及K32x32的值分别能够被设置为4、6、8以及10。
在块1208处,在块1202处发起的FOR循环能够结束(一旦当前TU中沿着单级扫描顺序所有变换系数被处理)。
尽管图12描绘了coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag语法元素像发生在单个循环(即,FOR循环1202)中那样的编码/解码,但是在特定实施例中能够在单独的循环中编码/解码这些语法元素。在这些实施例中,针对coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag的每个FOR循环能够对应于当前TU的单级扫描。
使用统一扫描类型和上下文模型选择的变换系数级和有效位图的CABAC编码/解
码
如上面所指出的那样,使用CABAC来编码/解码TU的一个方面是编码/解码指示TU中的每个变换系数是否为非零的二进制有效位图。在当前HEVC标准中,通过其上下文模型被选择用于编码/解码有效位图的每个元素(即,significant_coeff_flag)的方法大大地不同于通过其上下文模型被选择用于编码/解码变换系数级的方法。例如,如关于图7的块704所描述的,针对TU编码/解码有效位图涉及使用例如正向Z字形扫描来遍历TU,以及基于围绕变换系数的特定邻居的有效位图值来为每个变换系数的significant_coeff_flag语法元素选择上下文模型。相比之下,如关于图7的块706所描述的,针对TU编码/解码变换系数级涉及使用两级、嵌套的扫描顺序(例如,每4x4子块的外正向Z字形扫描和给定子块内的内逆向Z字形扫描)来遍历TU,以及基于子块级系数数据来为每个变换系数的abs_coeff_level_greater1_flag和abs_coeff_level_greater2_flag语法元素选择单独的上下文模型。
在特定实施例中,能够修改在块704和706处执行的处理,使得针对TU的有效位图和变换系数级使用相同的扫描类型和相同的上下文模型选择方案被编码/解码。这个方法在图15中作为过程1500被示出。
在块1502处,熵编码块510/熵解码块602能够使用特定扫描类型和特定上下文模型选择方案来编码或者解码当前TU的有效位图。在一组实施例中,在块1502处使用的扫描类型可以是单级正向Z字形扫描、逆向Z字形扫描、正向波前扫描、逆向波前扫描或本领域中已知的任何其它扫描类型。在块1502处使用的上下文模型选择方案可以是基于邻居的方案,诸如关于图7的块704上面所描述的方案。基于邻居的方案能够基于围绕变换系数的一个或多个相邻变换系数来为当前TU的每个变换系数选择用于变换系数的significant_coeff_flag语法元素的上下文模型。在一个实施例中,在该方案中用于控制邻居选择的逻辑能够基于被使用扫描类型(例如,正向Z字形、逆向Z字形等)而变化。
在块1504处,熵编码块510/熵解码块602能够使用在块1502处使用的相同扫描类型和上下文模型选择方案来编码或者解码当前TU中每个变换系数的绝对级(例如,coeff_abs_level_greater1_flag和coeff_abs_level_greater2_flag语法元素)。例如,如果逆向Z字形扫描被用于在块1502处的有效位图编码/解码,则相同的逆向Z字形扫描能够被用于在块1504处的变换系数级编码/解码。另外,如果特定的基于邻居的上下文模型选择方案被用于在块1502处的有效位图编码/解码,则相同的(或类似的)基于邻居的方案能够被用于在块1504处的变换系数级编码/解码。该统一方法能够大大地降低实现CABAC编码和解码所需的软件和/或硬件的复杂性,因为软件和/或硬件逻辑的大部分能够被再用于有效位图和变换系数级编码阶段。
下列的是当统一正向扫描类型(例如,正向Z字形、正向波前等)和统一基于邻居的方案被使用时能够被应用于为TU中变换系数(y,x)的significant_coeff_flag、coeff_abs_level_greater1_flag以及coeff_abs_level_greater2_flag语法元素选择上下文模型的示例逻辑。在各种实施例中,相同的逻辑能够被应用于三个语法元素中的每一个。变量baseCtx指的是语法元素的基本上下文索引并且变量ctxIndInc指的是语法元素的上下文索引增量。
1.如果当前TU大小是4x4个像素,则baseCtx=y*4+x并且ctxIndInc=baseCtx+48
2.如果当前TU大小是8x8个像素,则baseCtx=(y>>l)*4+(x>>l)并且ctxIndInc=baseCtx+32
3.如果当前TU大小是16x16或32x32个像素,则baseCtx基于当前变换系数的位置(y,x)和系数的编码邻居的有效位图值被确定如下:
a.如果y<=2并且x<=2,则baseCtx=y*2+x
b.否则如果y=0(即,当前变换系数是在TU的上边界处),则baseCtx=4+significant_coeff_flag[y][x–1]+significant_coeff_flag[y][x–2]
c.否则如果x=0(即,当前变换系数是在TU的左边界处),则baseCtx=7+significant_coeff_flag[y–l][x]+significant_coeff_flag[y–2][x]
d.否则如果x>1并且y>1,则baseCtx=significant_coeff_flag[y–l][x]+significant_coeff_flag[y][x–1]+significant_coeff_flag[y–l][x–1]+significant_coeff_flag[y][x–2]+significant_coeff_flag[y–2][x]
e.否则如果x>1,则baseCtx=significant_coeff_flag[y–l][x]+significant_coeff_flag[y][x–1]+significant_coeff_flag[y–l][x–1]+significant_coeff_flag[y][x–2]
f.否则如果y>1,则baseCtx=significant_coeff_flag[y–l][x]+significant_coeff_flag[y][x–1]+significant_coeff_flag[y–l][x–1]+significant_coeff_flag[y–2][x]
g.否则baseCtx=significant_coeff_flag[y–l][x]+significant_coeff_flag[y][x–1]+significant_coeff_flag[y–l][x–1]
h.最终值,如果baseCtx是10+min(4,baseCtx)
4.如果当前TU大小是16x16,则baseIndInc=baseCtx+16
5.如果当前TU大小是32x32,则baseIndInc=baseCtx
上面被用来在逻辑中确定baseCtx的特定邻居在图9的TU900中被在视觉上示出。对于位于TU900中间的变换系数(例如,位于(y,x)处的系数902),baseCtx基于位于(y,x–1)、(y,x–2)、(y–1,x)、(y–2,x)以及(y–1,x–1)处的五个邻居而被确定。对于位于TU900的左边界上的变换系数(例如,位于(y,0)处的系数904),baseCtx基于位于(y–1,0)和(y–2,0)处的两个邻居而被确定。对于位于TU900的上边界上的变换系数(例如,位于(0,x)处的系数906),baseCtx基于位于(0,x–1)和(0,x–2)处的两个邻居而被确定。并且对于位于TU900的上部左上边界中的特定变换系数(例如,系数908、910、912、914),baseCtx不是基于任何邻居数据。
下列的是当统一逆扫描类型(例如,逆向Z字形、逆向波前等)和统一基于邻居的方案被使用时能够被应用于为TU中变换系数(y,x)的significant_coeff_flag、coeff_abs_level_greater1_flag以及coeff_abs_level_greater2_flag语法元素选择上下文模型的示例逻辑。在各种实施例中,相同的逻辑能够被应用于三个语法元素中的每一个。变量baseCtx指的是语法元素的基本上下文索引并且变量ctxIndInc指的是语法元素的上下文索引增量。
1.如果当前TU大小是4x4个像素,则baseCtx=y*4+x并且ctxIndInc=baseCtx+48
2.如果当前TU大小是8x8个像素,则baseCtx=(y>>l)*4+(x>>1)并且ctxIndInc=baseCtx+32
3.如果当前TU大小是16x16或32x32个像素,则baseCtx基于当前变换系数的位置(y,x)和系数的编码邻居的有效位图值被确定如下:
a.如果y<=2并且x<=2,则baseCtx=y*2+x
b.否则如果y=0(即,当前变换系数是在TU的上边界处),则baseCtx=4+significant_coeff_flag[y][x+1]+significant_coeff_flag[y][x+2]
c.否则如果x=0(即,当前变换系数是在TU的左边界处),则baseCtx=7+significant_coeff_flag[y+l][x]+significant_coeff_flag[y+2][x]
d.否则如果x>1并且y>1,则baseCtx=significant_coeff_flag[y+l][x]+significant_coeff_flag[y][x+1]+significant_coeff_flag[y+l][x+1]+significant_coeff_flag[y][x+2]+significant_coeff_flag[y+2][x]
e.否则如果x>1,则baseCtx=significant_coeff_flag[y+l][x]+significant_coeff_flag[y][x+1]+significant_coeff_flag[y+l][x+1]+significant_coeff_flag[y][x+2]
f.否则如果y>1,则baseCtx=significant_coeff_flag[y+l][x]+significant_coeff_flag[y][x+1]+significant_coeff_flag[y+l][x+1]+significant_coeff_flag[y+2][x]
g.否则baseCtx=significant_coeff_flag[y+l][x]+significant_coeff_flag[y][x+1]+significant_coeff_flag[y+l][x+1]
h.最终值,如果baseCtx是10+min(4,baseCtx)
4.如果当前TU大小是16x16,则baseIndInc=baseCtx+16
5.如果当前TU大小是32x32,则baseIndInc=baseCtx
上面被用来在逻辑中确定baseCtx的特定邻居在图16的TU1600中被在视觉上示出。对于位于TU1600中间的变换系数(例如,位于(y,x)处的系数1602),baseCtx基于位于(y,x+1)、(y,x+2)、(y+1,x)、(y+2,x)以及(y+1,x+1)处的五个邻居而被确定。对于位于TU1600的左边界上的变换系数(例如,位于(y,0)处的系数1604),baseCtx基于位于(y+1,0)和(y+2,0)处的两个邻居而被确定。对于位于TU1600的上边界上的变换系数(例如,位于(0,x)处的系数1606),baseCtx基于位于(0,x+1)和(0,x+2))处的两个邻居而被确定。并且对于位于TU1600的上部左上边界中的特定变换系数(例如,系数1608、1610、1612、1614),baseCtx不是基于任何邻居数据。
特定实施例可以被实现在用于由指令执行系统、设备、装置或机器使用或者连同其一起使用的非暂时性计算机可读存储介质中。例如,非暂时性计算机可读存储介质能够包含用于控制计算机系统/装置执行由特定实施例所描述的方法的程序代码或指令。程序代码当被计算机系统/装置的一个或多个处理器执行时,能够可操作来执行在特定实施例中被描述的程序代码。
如于此在本描述中和遍及以下权利要求书所使用的那样,除非上下文明确地另外规定,否则“一”、“一个”以及“该”包括复数参考。并且,如于此在本描述中和遍及以下权利要求书所使用的那样,除非上下文明确地另外规定,否则“在...中”的意义包括“在...中”和“在...上”。
上述描述连同特定实施例的方面如何可以被实现的示例一起图示了各种实施例。上述示例和实施例不应该被认为是仅有的实施例,并且被呈现来图示如由以下权利要求书所限定的特定实施例的灵活性和优点。基于上述公开和以下权利要求书,在不背离如由本权利要求书所限定的其范围的情况下可以采用其它布置、实施例、实施方式以及等同物。
Claims (16)
1.一种用于编码视频数据的方法,所述方法包括:
通过计算装置来接收包括变换系数的二维阵列的变换单元;以及
通过所述计算装置沿着单级扫描顺序处理所述二维阵列的所述变换系数,
其中,所述处理包括为沿着所述单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于基于所述非零变换系数的绝对级使用第一语法元素或者第一语法元素和第二语法元素来编码所述非零变换系数的绝对级,所述选择基于沿着所述单级扫描顺序先前编码的一个或多个变换系数,其中,选择所述一个或多个上下文模型包括:
为与所述非零变换系数相关联的所述第一语法元素选择第一上下文模型,其中,在用于所述非零变换系数的所述绝对级大于一的情况下,所述第一语法元素指示用于所述非零变换系数的所述绝对级大于一,并且其中,在用于所述非零变换系数的所述绝对级等于或小于一的情况下,所述第一语法元素指示用于所述非零变换系数的所述绝对级等于或小于一,以及
在所述第一语法元素指示用于所述非零变换系数的所述绝对级大于一的情况下,为与所述非零变换系数相关联的第二语法元素选择第二上下文模型,所述第二语法元素指示用于所述非零变换系数的所述绝对级是否大于二。
2.根据权利要求1所述的方法,其中,选择所述第一上下文模型基于具有等于一的绝对级的、沿着所述单级扫描顺序先前编码的变换系数的第一阈值数目。
3.根据权利要求2所述的方法,其中,所述第一阈值数目等于十。
4.根据权利要求1所述的方法,其中,选择所述第二上下文模型基于具有大于一的绝对级的、沿着所述单级扫描顺序先前编码的变换系数的第二阈值数目。
5.根据权利要求4所述的方法,其中,所述第二阈值数目等于十。
6.根据权利要求1所述的方法,其中,选择所述一个或多个上下文模型进一步基于所述变换单元的大小。
7.根据权利要求1所述的方法,其中,所述单级扫描顺序对应于逆Z字形扫描或逆波前扫描。
8.一种用于解码视频数据的方法,所述方法包括:
通过计算装置来接收压缩数据的比特流,所述压缩数据对应于沿着单级扫描顺序先前编码的变换系数的二维阵列;以及
通过所述计算装置来解码所述压缩数据的比特率,
其中,所述解码包括为沿着所述单级扫描顺序的每个非零变换系数选择一个或多个上下文模型以用于解码所述非零变换系数的绝对级,所述选择基于沿着所述单级扫描顺序先前解码的一个或多个变换系数,其中,选择所述一个或多个上下文模型包括:
为与所述非零变换系数相关联的第一语法元素选择第一上下文模型,其中,在用于所述变换系数的所述绝对级大于一的情况下,所述第一语法元素指示用于所述变换系数的所述绝对级大于一,并且其中,在用于所述变换系数的所述绝对级等于或小于一的情况下,所述第一语法元素指示用于所述变换系数的所述绝对级等于或小于一,以及
在所述第一语法元素指示用于所述非零变换系数的所述绝对级大于一的情况下,为与所述非零变换系数相关联的第二语法元素选择第二上下文模型,所述第二语法元素指示用于所述非零变换系数的所述绝对级是否大于二。
9.根据权利要求8所述的方法,其中,选择所述第一上下文模型基于具有等于一的绝对级的、沿着所述单级扫描顺序先前解码的变换系数的第一阈值数目。
10.根据权利要求8所述的方法,其中,选择所述第二上下文模型基于具有大于一的绝对级的、沿着所述单级扫描顺序先前解码的变换系数的第二阈值数目。
11.一种用于编码视频数据的方法,所述方法包括:
通过计算装置来接收包括多个变换系数的变换单元;以及
通过所述计算装置使用单个扫描类型和单个上下文模型选择方案来编码所述变换单元的有效位图和所述多个变换系数的绝对级,其中:
所述单个扫描类型指示单个扫描模式和单个扫描顺序,以及
使用指示用于非零变换系数的绝对级是否大于一的第一语法元素来编码所述多个变换系数中的所述非零变换系数的所述绝对级,以及当所述第一语法元素指示用于所述非零变换系数的所述绝对级大于一的情况下,编码指示用于所述非零变换系数的所述绝对级是否大于二的第二语法元素。
12.根据权利要求11所述的方法,其中,所述单个扫描类型是正向Z字形扫描、逆向Z字形扫描、正向波前扫描或逆向波前扫描。
13.根据权利要求12所述的方法,其中,所述单个上下文模型选择方案是基于邻居的方案,所述基于邻居的方案基于沿着所述单个扫描类型先前编码的一个或多个相邻变换系数来为所述多个变换系数中的每一个变换系数选择用于所述变换系数的上下文模型。
14.一种用于解码视频数据的方法,所述方法包括:
通过计算装置来接收压缩数据的比特流,所述压缩数据对应于包括先前编码的多个变换系数的变换单元;以及
通过所述计算装置使用单个扫描类型和单个上下文模型选择方案来解码所述变换单元的有效位图和所述多个变换系数的绝对级,其中:
所述单个扫描类型指示单个扫描模式和单个扫描顺序,以及
使用指示用于非零变换系数的绝对级是否大于一的第一语法元素来解码所述多个变换系数中的所述非零变换系数的所述绝对级,以及当所述第一语法元素指示用于所述非零变换系数的所述绝对级大于一的情况下,解码指示用于所述非零变换系数的所述绝对级是否大于二的第二语法元素。
15.根据权利要求14所述的方法,其中,所述单个扫描类型是正向Z字形扫描、逆向Z字形扫描、正向波前扫描或逆向波前扫描。
16.根据权利要求14所述的方法,其中,所述单个上下文模型选择方案是基于邻居的方案,所述基于邻居的方案基于沿着所述单个扫描类型先前解码的一个或多个相邻变换系数来为所述多个变换系数中的每一个变换系数选择用于所述变换系数的上下文模型。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161508595P | 2011-07-15 | 2011-07-15 | |
US61/508,595 | 2011-07-15 | ||
US201161557299P | 2011-11-08 | 2011-11-08 | |
US61/557,299 | 2011-11-08 | ||
US13/550,493 | 2012-07-16 | ||
US13/550,493 US20130016789A1 (en) | 2011-07-15 | 2012-07-16 | Context modeling techniques for transform coefficient level coding |
PCT/US2012/046960 WO2013012819A2 (en) | 2011-07-15 | 2012-07-16 | Context modeling techniques for transform coefficient level coding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103650510A CN103650510A (zh) | 2014-03-19 |
CN103650510B true CN103650510B (zh) | 2018-05-22 |
Family
ID=47518913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280035145.4A Active CN103650510B (zh) | 2011-07-15 | 2012-07-16 | 用于变换系数级编码的上下文建模技术 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20130016789A1 (zh) |
EP (1) | EP2732628A2 (zh) |
JP (1) | JP5733590B2 (zh) |
KR (1) | KR101625548B1 (zh) |
CN (1) | CN103650510B (zh) |
WO (1) | WO2013012819A2 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IN2014CN03598A (zh) * | 2011-11-04 | 2015-07-31 | Sharp Kk | |
WO2013070974A2 (en) | 2011-11-08 | 2013-05-16 | General Instrument Corporation | Method of determining binary codewords for transform coefficients |
CN103931197B (zh) | 2011-11-08 | 2018-01-23 | 谷歌技术控股有限责任公司 | 确定用于变换系数的二进制码字的方法 |
EP3550840A1 (en) * | 2012-01-20 | 2019-10-09 | Sony Corporation | Complexity reduction of significance map coding |
US10284851B2 (en) | 2012-01-21 | 2019-05-07 | Google Technology Holdings LLC | Method of determining binary codewords for transform coefficients |
WO2013109993A1 (en) | 2012-01-21 | 2013-07-25 | General Instrument Corporation | Method of determining binary codewords for transform coefficients |
US9866829B2 (en) * | 2012-01-22 | 2018-01-09 | Qualcomm Incorporated | Coding of syntax elements that correspond to coefficients of a coefficient block in video coding |
US9479780B2 (en) | 2012-02-01 | 2016-10-25 | Google Technology Holdings LLC | Simplification of significance map coding |
CN110602509A (zh) | 2012-02-04 | 2019-12-20 | 谷歌技术控股有限责任公司 | 用于最末重要系数位置编码中的上下文减少的设备和方法 |
US9167245B2 (en) | 2012-02-05 | 2015-10-20 | Google Technology Holdings LLC | Method of determining binary codewords for transform coefficients |
US9350998B2 (en) * | 2012-06-29 | 2016-05-24 | Qualcomm Incorporated | Coding of significance flags |
GB2513111A (en) * | 2013-04-08 | 2014-10-22 | Sony Corp | Data encoding and decoding |
US9781424B2 (en) | 2015-01-19 | 2017-10-03 | Google Inc. | Efficient context handling in arithmetic coding |
KR20160131526A (ko) * | 2015-05-07 | 2016-11-16 | 삼성전자주식회사 | 시스템 온 칩, 상기 시스템 온 칩을 포함하는 디스플레이 시스템, 및 상기 디스플레이 시스템의 동작 방법 |
CN107710759B (zh) * | 2015-06-23 | 2020-11-03 | 联发科技(新加坡)私人有限公司 | 转换系数编解码的方法及装置 |
CN105141966B (zh) * | 2015-08-31 | 2018-04-24 | 哈尔滨工业大学 | 视频压缩中变换系数的上下文建模方法 |
US10708164B2 (en) * | 2016-05-03 | 2020-07-07 | Qualcomm Incorporated | Binarizing secondary transform index |
CN114339227B (zh) * | 2016-05-04 | 2024-04-12 | 夏普株式会社 | 用于对变换数据进行编码的系统和方法 |
EP3264763A1 (en) * | 2016-06-29 | 2018-01-03 | Thomson Licensing | Method and apparatus for improved significance flag coding using simple local predictor |
US10244261B2 (en) * | 2017-01-26 | 2019-03-26 | Google Llc | Transform coefficient coding using level maps |
EP3490253A1 (en) * | 2017-11-23 | 2019-05-29 | Thomson Licensing | Encoding and decoding methods and corresponding devices |
CN116132673A (zh) * | 2017-12-13 | 2023-05-16 | 三星电子株式会社 | 视频解码方法及其装置以及视频编码方法及其装置 |
EP3562156A1 (en) * | 2018-04-27 | 2019-10-30 | InterDigital VC Holdings, Inc. | Method and apparatus for adaptive context modeling in video encoding and decoding |
CN112040247B (zh) * | 2018-09-10 | 2021-09-21 | 华为技术有限公司 | 视频解码方法、视频解码器以及计算机可读存储介质 |
US11006150B2 (en) * | 2018-09-24 | 2021-05-11 | Tencent America LLC | Method and apparatus for video coding |
WO2020141856A1 (ko) * | 2019-01-02 | 2020-07-09 | 엘지전자 주식회사 | 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치 |
CN111435993B (zh) * | 2019-01-14 | 2022-08-26 | 华为技术有限公司 | 视频编码器、视频解码器及相应方法 |
CN113853791B (zh) * | 2019-05-19 | 2023-11-14 | 字节跳动有限公司 | 数字视频中的变换旁路编解码残差块 |
US12041270B2 (en) | 2019-06-24 | 2024-07-16 | Alibaba Group Holding Limited | Transform-skip residual coding of video data |
CN114175653B (zh) * | 2019-09-17 | 2023-07-25 | 北京达佳互联信息技术有限公司 | 用于视频编解码中的无损编解码模式的方法和装置 |
WO2021062019A1 (en) * | 2019-09-24 | 2021-04-01 | Beijing Dajia Internet Information Technology Co., Ltd. | Lossless coding modes for video coding |
CN118509590A (zh) | 2019-11-21 | 2024-08-16 | 北京达佳互联信息技术有限公司 | 变换与系数信令的方法和装置 |
CN113497936A (zh) * | 2020-04-08 | 2021-10-12 | Oppo广东移动通信有限公司 | 编码方法、解码方法、编码器、解码器以及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7379608B2 (en) * | 2003-12-04 | 2008-05-27 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. | Arithmetic coding for transforming video and picture data units |
US8275045B2 (en) * | 2006-07-12 | 2012-09-25 | Qualcomm Incorporated | Video compression using adaptive variable length codes |
KR101375668B1 (ko) * | 2008-03-17 | 2014-03-18 | 삼성전자주식회사 | 변환 계수의 부호화, 복호화 방법 및 장치 |
-
2012
- 2012-07-16 WO PCT/US2012/046960 patent/WO2013012819A2/en active Application Filing
- 2012-07-16 KR KR1020147001166A patent/KR101625548B1/ko active IP Right Grant
- 2012-07-16 US US13/550,493 patent/US20130016789A1/en not_active Abandoned
- 2012-07-16 JP JP2014519103A patent/JP5733590B2/ja active Active
- 2012-07-16 EP EP12738006.1A patent/EP2732628A2/en not_active Ceased
- 2012-07-16 CN CN201280035145.4A patent/CN103650510B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
KR20140031370A (ko) | 2014-03-12 |
CN103650510A (zh) | 2014-03-19 |
KR101625548B1 (ko) | 2016-05-30 |
JP5733590B2 (ja) | 2015-06-10 |
EP2732628A2 (en) | 2014-05-21 |
WO2013012819A2 (en) | 2013-01-24 |
JP2014523709A (ja) | 2014-09-11 |
WO2013012819A3 (en) | 2013-06-20 |
US20130016789A1 (en) | 2013-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103650510B (zh) | 用于变换系数级编码的上下文建模技术 | |
RU2504103C1 (ru) | Способ и устройство для кодирования и декодирования изображения посредством использования вращательного преобразования | |
US10003792B2 (en) | Video encoder for images | |
CN103828376B (zh) | 用于在帧内编译期间使用扫描编译图案的方法和系统 | |
CN104272735B (zh) | 针对视频的上下文自适应二进制熵编码的变换系数编码 | |
CN104735454B (zh) | 通过使用大变换单元对图像进行编码和解码的方法和设备 | |
CN103918273B (zh) | 确定用于变换系数的二进制码字的方法 | |
CN103416066B (zh) | 使用亮度采样的色度块的内部预测方法以及使用其的装置 | |
CN103004195B (zh) | 将多种可变长度编码方法用于多种类型的变换系数块的视频压缩 | |
CN108259901B (zh) | 用于对游长编码变换系数进行熵编码的上下文确定 | |
CN107743239B (zh) | 一种视频数据编码、解码的方法及装置 | |
CN107925763A (zh) | 等级分割中的块级别变换选择和隐式信令的编码变换方法和设备 | |
CN106134201A (zh) | 在块预测技术中使用的预处理预测滤波的方法和装置 | |
CN105847811A (zh) | 用于对变换系数进行熵编码/熵解码的方法和设备 | |
CN104041040A (zh) | 用于无损视频编码的预测残差编码 | |
JP2015507885A5 (zh) | ||
JP2015507885A (ja) | 変換単位の残差係数のための有意度マップを符号化および復号化する方法、装置およびシステム | |
CN1798341A (zh) | 自适应系数扫描次序 | |
CN103703776A (zh) | 在视频译码中的系数扫描 | |
RU2567988C2 (ru) | Кодер, способ кодирования данных, декодер, способ декодирования данных, система передачи данных, способ передачи данных и программный продукт | |
CN101061515A (zh) | 表示时变图形模型的数据流的编码方案 | |
CN106454351B (zh) | 解码装置和解码方法 | |
CN105027560A (zh) | 确定用于变换系数的二进制码字的方法 | |
CN107333138A (zh) | 有效度图编码的复杂度降低 | |
CN108353175A (zh) | 使用系数引起的预测处理视频信号的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160331 Address after: American California Applicant after: Technology Holdings Co., Ltd of Google Address before: Illinois State Applicant before: Motorola Mobility, Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |