CN105141966B - 视频压缩中变换系数的上下文建模方法 - Google Patents
视频压缩中变换系数的上下文建模方法 Download PDFInfo
- Publication number
- CN105141966B CN105141966B CN201510547323.7A CN201510547323A CN105141966B CN 105141966 B CN105141966 B CN 105141966B CN 201510547323 A CN201510547323 A CN 201510547323A CN 105141966 B CN105141966 B CN 105141966B
- Authority
- CN
- China
- Prior art keywords
- mrow
- mtd
- msub
- mtr
- transform 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
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
视频压缩中变换系数的上下文建模方法,本发明涉及变换系数的上下文建模技术。本发明是为了解决HEVC中所采用的上下文建模技术不能准确地预测变换系数的统计特性的问题。本发明在当前变换系数为bin0、bin1或bin2的上下文建模过程,使用了当前变换系数的位置信息和当前变换系数的局部模板中非零变换系数信息,同时还利用变换系数在编码组内的位置对亮度分量的变换系数块的编码组进行划分,利用变换系数在变换系数块内的位置对色度分量的变换系数块进行划分,最终实现上下文建模。本发明更加准确地预测变换系数的统计特性,提高了变换系数的压缩效率。本发明应用于视频编码领域。
Description
技术领域
本发明涉及视频压缩过程中变换系数的上下文建模技术。
背景技术
为了提高视频压缩系统中熵编码的压缩效率,上下文建模技术被广泛地用来预测信源的统计特性。具体来讲,信源符号的上下文建模过程包括:对待编码的信源符号的统计特性进行分析,利用其独特性,为熵编码设计多个上下文状态;在编码过程中,熵编码器利用已编码信源符号的取值,即上下文信息,选择其中一个状态,并在此状态下对当前待编码的信源符号进行编码。其中,一个上下文状态对应着信源在某一种情况下的统计特性(即条件概率分布)。也就是说,通过上下文建模技术,在编码当前信源符号之前,我们对该信源符号的统计特性会有一个准确的预期,从而在熵编码的时候提高编码效率。
在目前最新的视频压缩标准HEVC中,变换系数块的大小可以取值为4x4,8x8,16x16和32x32。为了有效地编码一个变换系数块中的所有变换系数,变换系数块被分割为互不重叠的编码组。每一个编码组对应着变换系数块中的一个4x4大小的子块。即,4x4的变换系数块只有一个编码组,8x8的变换系数块有4个编码组,16x16的变换系数块有16个编码组,32x32的变换系数块有64个编码组。当按照这种方式对变换系数块进行分割后,一个变换系数块中所有的编码组和一个编码组中所有的变换系数按照一个给定的扫描顺序进行编码。具体来讲就是,首先编码一个二进制符号CSBF(对应着HEVC中的语法元素coded_sub_block_flag)用来指示当前编码组是否包含非零变换系数,如果当前编码组的CSBF为1,即当前编码组包含非零变换系数,则编码当前编码组中的所有变换系数,否则处理下一个编码组。
每个编码组中的每个变换系数的编码是通过多次扫描来实现的。具体来讲就是,在第一次扫描中,对于当前编码组中的每个变换系数,一个用于指示当前变换系数是否大于0的二进制符号(我们用bin0来表示,它对应着HEVC中语法元素significant_flag)被编码进码流中;在第二次扫描中,对于当前编码组中的每个绝对值大于0的变换系数,一个用于指示当前变换系数的绝对值是否大于1的二进制符号(我们用bin1来表示,它对应着HEVC中语法元素coeff_abs_greater1_flag)被编码进码流中;在第三次扫描中,对于当前编码组中的每个绝对值大于1的变换系数,一个用于指示当前变换系数的绝对值是否大于2的二进制符号(我们用bin2来表示,它对应着HEVC中的语法元素coeff_abs_greater2_flag)被编码进码流中;在最后的两次扫描中,分别编码当前编码组中变换系数的符号和剩余没有编码的取值(对应着HEVC中语法元素coeff_abs_level_remaining)。
在HEVC中,bin0的上下文包括当前待编码的变换系数在变换系数块中的位置(x,y),当前变换系数块的扫描方式scanIdx和位于当前编码组下侧和右侧的编码组的CSBF的取值(我们用CSBFL和CSBFR来分别表示下侧编码组和右侧编码组的CSBF的取值)。根据当前待编码的变换系数在变换系数块中的位置(x,y),可以求得包含当前变换系数的编码组的位置(xCG,yCG)和当前变换系数在当前编码组内的位置(xInCG,yInCG)。因此,对于每个变换系数,其bin0的上下文建模过程描述如下:
如果当前待编码的是亮度分量:
如果x+y等于0,则
Ctxbin0=0
如果Size等于4x4,则
Ctxbin0=ctxIndMap[4*xInCG+yInCG]
如果Size等于8x8且scanIdx等于SCAN_DIAG,则
如果Size等于8x8且scanIdx不等于SCAN_DIAG,则
如果Size大于8x8,则
如果当前待编码的是色度分量:
如果x+y等于0,则
Ctxbin0=0
如果Size等于4x4,则
Ctxbin0=ctxIndMap[4*xInCG+yInCG]
如果Size等于8x8,则
Ctxbin0=9+ctxInc[4*xInCG+yInCG]
如果Size大于8x8,则
Ctxbin0=12+ctxInc[4*xInCG+yInCG]
其中根据CSBFL和CSBFR的取值CtxInc可以取ctxInc0,ctxInc1,ctxInc2和ctxInc3。
在HEVC中,bin1的上下文包括当前待编码的变换系数在变换系数块中的位置(x,y),前一个编码组中是否包含绝对值大于1的变换系数(我们用c1来表示该上下文,即c1=1表示前一个编码组包含绝对值大于1的变换系数,c1=0表示前一个编码组不包含绝对值大于1的变换系数),和当前编码组中已经编码过的绝对值等于1和绝对值大于1的变换系数的个数(我们用NumEqu1和NumGre1分别表示当前编码组中已经编码过的绝对值等于1和绝对值大于1的变换系数的个数)。根据当前待编码的变换系数在变换系数块中的位置(x,y),可以求得包含当前变换系数的编码组的位置(xCG,yCG),因此对于当前编码组的每个变换系数,其bin1的上下文建模过程描述如下:
如果当前编码的是亮度分量:
如果当前编码的是色度分量:
在HEVC中,bin2的上下文包括当前待编码的变换系数在变换系数块中的位置(x,y)以及前一个编码组中是否包含绝对值大于1的变换系数。根据当前待编码的变换系数在变换系数块中的位置(x,y),可以求得包含当前变换系数的编码组的位置(xCG,yCG),因此对于当前编码组的每个变换系数,其bin2的上下文建模过程可以描述如下:
如果当前编码的是亮度分量:
如果当前编码的是色度分量:
在HEVC中,bin1的上下文包括前一个编码组是否有绝对值大于1变换系数c1和当前编码组内已经编码过的绝对值等于1的变换系数的个数NumEqu1和绝对值大于1的变换系数的个数NumGre1。使用这种上下文建模方法,随着编码的进行,提供上下文信息的变换系数与当前变换系数的距离会变大,因此他们之间的相关性会相应地变小,降低上下文的准确性。此外,在编码bin1时,变换系数块被分割为两个区域,即变换系数块中左上角的编码组是一个区域,其余编码组是另外一个区域。对于bin1来说,这种变换系数块的区域划分方法不能准确地反应bin1的取值分布。
在HEVC中,bin2的上下文包括前一个编码组中是否包含绝对值大于1的变换系数。与HEVC中bin1的情况类似,随着编码的进行,提供这些上下文信息的变换系数与当前变换系数的距离会变大,因此他们之间的相关性会相应地变小,降低上下文的准确性。
发明内容
本发明是为了解决HEVC中所采用的上下文建模技术不能准确地预测变换系数的统计特性,而提出的视频压缩中变换系数的上下文建模方法。
视频压缩中变换系数的上下文建模方法按以下步骤实现:
步骤一:对bin0的上下文建模,其中所述bin0为一个用于指示当前变换系数是否大于0的二进制符号;
对于处在(x,y)处的变换系数的bin0的上下文包含当前变换系数的编码组的位置(xCG,yCG)、当前变换系数在当前编码组内的位置(xInCG,yInCG)、以及当前变换系数的局部模板LT(x,y)所覆盖的变换系数中非零变换系数的个数NumSigs,(x,y)为当前待编码的变换系数在当前变换系数块的位置,LT(x,y)为位于变换系数块(x,y)处的变换系数的局部模板,根据(x,y)求得包含当前变换系数的编码组的位置(xCG,yCG)和当前变换系数在当前编码组内的位置(xInCG,yInCG);
若当前编码的是亮度分量:
如果xCG+yCG等于0,则
Ctxbin0=RegIdx*6+NumSigs (2)
如果xCG+yCG大于0,则
Ctxbin0=RegIdx*6+NumSigs (4)
RegIdx为当前变换系数所在的区域,Ctxbin0为待编码的变换系数的bin0的上下文索引;
若当前编码的是色度分量:则
Ctxbin0=RegIdx*6+NumSigs (6)
步骤二:对bin1的上下文建模,其中所述bin1为一个用于指示当前变换系数的绝对值是否大于1的二进制符号;
对于处在(x,y)处的变换系数的bin1的上下文包括当前待编码的变换系数在当前变换系数块的位置(x,y)以及当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值等于1的变换系数的个数NumEqu1;
若当前编码的是亮度分量:
如果x+y小于3,则
否则,如果x+y小于10,则
否则,x+y大于或等于10,则
所述Ctxbin1为当前待编码的变换系数的bin1的上下文索引;
若当前编码的是色度分量:
步骤三:对bin2的上下文建模,其中所述bin2为一个用于指示当前变换系数的绝对值是否大于2的二进制符号;
对于处在(x,y)处的变换系数的bin2的上下文包括当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值大于2的变换系数的个数NumGre2;
若当前编码的是亮度分量,则
如果NumGre2大于0,则
Ctxbin2=0 (11)
否则,如果NumGre1大于0,则
Ctxbin2=1 (12)
否则,
Ctxbin2=2 (13)
定义Ctxbin2为当前待编码的变换系数的bin2的上下文索引;
若当前编码的是色度分量:
如果NumGre2大于0,则
Ctxbin2=0 (14)
否则,如果NumGre1大于0,则
Ctxbin2=1 (15)
否则,
Ctxbin2=2 (16)。
在HEVC中,bin0的上下文仅仅包含当前变换系数的位置信息。但是通过对变换系数的统计特性进行分析,可以发现处在当前变换系数周围的那些变换系数的已知信息也能够很好地预测当前变换系数的bin0的取值分布。本发明对当前变换系数bin0的上下文建模过程同时采用了当前变换系数的位置信息和当前变换系数的局部模板中非零变换系数的个数作为上下文,并且利用变换系数在编码组内的位置对亮度分量的变换系数块的编码组进行划分(左上角的编码组分割为3个区域,其余编码组分割为两个区域),利用变换系数在变换系数块内的位置对色度分量的变换系数块进行划分;对当前变换系数bin1的上下文建模过程同时采用当前变换系数的局部模板内的绝对值大于1和绝对值等于1的变换系数的个数以及当前变换系数的位置信息作为上下文,并且利用当前变换系数在变换系数块内的位置来划分变换系数块;对当前变换系数bin2的上下文建模过程采用当前变换系数的局部模板内绝对值大于1和绝对值大于2的变换系数的个数作为上下文,本发明使用了更多的信息作为bin0、bin1、bin2的上下文,更加准确地预测变换系数的统计特性,提高了变换系数的压缩效率。实验结果表明本发明在帧内编码配置下可以节省0.82%的码率、低延迟编码配置下可以节省0.17%的码率、在随机访问编码配置下可以节省0.44%的码率。本发明适用于H.264/AVC,AVS,AVS2,HEVC,VC-1等视频压缩系统。
附图说明
图1为本发明的流程图;
图2为大小为8x8的变换系数块中变换系数x的局部模板示意图。
具体实施方式
具体实施方式一:如图1所示,视频压缩中变换系数的上下文建模方法包括以下步骤:
步骤一:对bin0的上下文建模,其中所述bin0为一个用于指示当前变换系数是否大于0的二进制符号;
定义当前变换系数块的宽度和高度分别为W和H,定义当前待编码的变换系数在当前变换系数块中的位置为(x,y),定义位于变换系数块(x,y)处的变换系数的局部模板为LT(x,y),该局部模板所覆盖的变换系数由位于(x+1,y),(x+2,y),(x+1,y+1),(x,y+1)和(x,y+2)处的变换系数组成,8x8大小的变换系数块中位置为(x,y)的变换系数的局部模板示意图如图2所示,定义局部模板LT(x,y)中非零变换系数的个数为NumSigs,根据(x,y)可以求得包含当前变换系数的编码组的位置(xCG,yCG)和当前变换系数在当前编码组内的位置(xInCG,yInCG),对于处在(x,y)处的变换系数的bin0的上下文包含当前变换系数的编码组的位置(xCG,yCG),当前变换系数在当前编码组内的位置(xInCG,yInCG),以及当前变换系数的局部模板所覆盖的变换系数中非零变换系数的个数NumSigs;
若当前编码的是亮度分量:
如果xCG+yCG等于0,则
Ctxbin0=RegIdx*6+NumSigs (2)
如果xCG+yCG大于0,则
Ctxbin0=RegIdx*6+NumSigs (4)
RegIdx为当前变换系数所在的区域,Ctxbin0为待编码的变换系数的bin0的上下文索引;
若当前编码的是色度分量:则
Ctxbin0=RegIdx*6+NumSigs (6)
当计算得到Ctxbin0后,从对应的上下文集合中取出对应的上下文信息,亮度分量和色度分量使用不同的上下文集合;
步骤二:对bin1的上下文建模,其中所述bin1为一个用于指示当前变换系数的绝对值是否大于1的二进制符号;
对于处在(x,y)处的变换系数的bin1的上下文包括当前待编码的变换系数在当前变换系数块的位置(x,y)以及当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值等于1的变换系数的个数NumEqu1;
若当前编码的是亮度分量:
如果x+y小于3,则
否则,如果x+y小于10,则
否则,x+y大于或等于10,则
所述Ctxbin1为当前待编码的变换系数的bin1的上下文索引;
若当前编码的是色度分量:
当计算得到Ctxbin1后,从对应的上下文集合中取出对应的上下文信息,亮度分量和色度分量使用不同的上下文集合;
步骤三:对bin2的上下文建模,其中所述bin2为一个用于指示当前变换系数的绝对值是否大于2的二进制符号;
对于处在(x,y)处的变换系数的bin2的上下文包括当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值大于2的变换系数的个数NumGre2;
若当前编码的是亮度分量,则
如果NumGre2大于0,则
Ctxbin2=0 (11)
否则,如果NumGre1大于0,则
Ctxbin2=1 (12)
否则,
Ctxbin2=2 (13)
定义Ctxbin2为当前待编码的变换系数的bin2的上下文索引;
若当前编码的是色度分量:
如果NumGre2大于0,则
Ctxbin2=0 (14)
否则,如果NumGre1大于0,则
Ctxbin2=1 (15)
否则,
Ctxbin2=2 (16)
当计算得到Ctxbin2后,从对应的上下文集合中取出对应的上下文信息,亮度分量和色度分量使用不同的上下文集合。利用建模方法得到的变换系数来进行视频压缩。
具体实施方式二:本实施方式与具体实施方式一不同的是:利用得到的上下文索引Ctxbin0,Ctxbin1和Ctxbin2从对应的上下文集合中选出对应的上下文,即可得到该上下文所对应变换系数的概率分布,或者该变换系数的bin0,bin1和bin2的概率分布,共有6个上下文集合,分别对应着亮度分量的bin0,bin1和bin2和色度分量的bin0,bin1和bin2。本实施方式是对具体实施方式一中得到的Ctxbin0,Ctxbin1和Ctxbin2进行应用。
具体实施方式三:本实施方式与具体实施方式一或二不同的是:利用得到的变换系数概率分布,对变换系数进行熵编码,或者利用得到的变换系数的bin0,bin1和bin2的概率分布对变换系数的bin0,bin1和bin2进行熵编码。本实施方式是对具体实施方式二中得到的变换系数概率分布,或者得到的变换系数的bin0,bin1和bin2的概率分布进行应用。
具体实施方式四:本实施方式所述的一种视频压缩中变换系数的上下文建模方法所对应的视频信息中,当前待编码的变换系数在当前变换系数块的位置为(x,y);位于变换系数块(x,y)处的变换系数的局部模板为LT(x,y),该局部模板所覆盖的变换系数由位于(x+1,y),(x+2,y),(x+1,y+1),(x,y+1)和(x,y+2)处的变换系数组成,局部模板LT(x,y)中非零变换系数的个数为NumSigs;定义当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值等于1的变换系数的个数NumEqu1;定义当前编码组中已经编码过的绝对值大于2的变换系数的个数为NumGre2。针对上述视频信息的视频压缩中变换系数的上下文建模方法为:
步骤一:计算变换系数的bin0的上下文索引Ctxbin0,该过程可以按照如下方法实施:如果当前编码的是亮度分量的变换系数块,则根据当前待编码的变换系数在变换系数块中的位置(x,y),计算该变换系数的局部模板LT(x,y)内非零变换系数的个数NumSigs,同时计算包含当前变换系数的编码组的位置(xCG,yCG)和当前变换系数在当前编码组内的位置(xInCG,yInCG);然后利用(xCG,yCG)和(xInCG,yInCG)计算当前变换系数所在的区域,该过程可以利用公式(1)和公式(3)来实现;最后,利用RegIdx和NumSigs计算当前变换系数的上下文索引,该过程可以通过公式(2)或公式(4)来实现。如果当前编码的是色度分量的变换系数块,则根据当前待编码的变换系数在变换系数块中的位置(x,y)计算该变换系数的局部模板LT(x,y)内非零变换系数的个数NumSigs,然后利用当前待编码的变换系数在变换系数块中的位置(x,y)计算当前变换系数所在的区域RegIdx,该过程可以利用公式(5)来实现;最后,利用RegIdx和NumSigs计算当前变换系数的上下文索引,该过程可以通过公式(6)来实现。
步骤二:计算变换系数的bin1的上下文索引Ctxbin1,该过程可以按照如下方法实施:如果当前编码的是亮度分量的变换系数块,利用当前变换系数在当前变换系数块的位置(x,y)计算当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值等于1的变换系数的个数NumEqu1;然后利用当前变换系数在当前变换系数块的位置(x,y)和NumEqu1以及NumGre1来计算当前变换系数的上下文索引,该过程可以通过公式(7),公式(8)和公式(9)来实现。如果当前编码的是色度分量的变换系数,利用当前变换系数在当前变换系数块的位置(x,y)计算当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值等于1的变换系数的个数NumEqu1;然后利用NumEqu1以及NumGre1来计算当前变换系数的上下文索引,该过程可以通过公式(10)实现。
步骤三:计算变换系数的bin2的上下文索引Ctxbin2,该过程可以按照如下方法实施:利用当前变换系数在当前变换系数块的位置(x,y)计算当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值大于2的变换系数的个数NumGre2;然后利用NumGre1和NumGre2计算当前变换系数的上下文索引,对于亮度分量,该过程可以利用公式(11),公式(12),公式(13)来实现,对于色度分量,该过程可以利用公式(14),公式(15)和公式(16)来实现。
步骤四:利用得到的上下文索引Ctxbin0,Ctxbin1和Ctxbin2从对应的上下文集合中选出对应的上下文,即可得到该上下文所对应变换系数的概率分布或者该变换系数的bin0,bin1和bin2的概率分布。共有6个上下文集合,分别对应着亮度分量的bin0,bin1和bin2和色度分量的bin0,bin1和bin2。
步骤五:利用得到的变换系数的概率分布,对变换系数进行熵编码或者利用得到的变换系数的bin0,bin1和bin2的概率分布,对bin0,bin1和bin2进行熵编码。
表1~表3用BD-Rate给出了该上下文建模方法和HEVC中使用的上下文建模方法在不同的配置条件下对不同测试序列的压缩性能比较。
表1
| 测试序列 | BD-Bit Rate[%] |
| BasketballDrill@832x480 | -0.3 |
| BQMall@832x480 | -0.9 |
| PartyScene@832x480 | -0.6 |
| FourPeople@1280x720 | -1.2 |
| Johnny@1280x720 | -1.3 |
| KristenAndSara@1280x720 | -0.8 |
| Kimono@1920x1080 | -1.0 |
| ParkScene@1920x1080 | -0.6 |
| Cactus@1920x1080 | -0.7 |
| Average | -0.82 |
表1给出了帧内编码配置下,本发明提出的上下文建模方法与HEVC中的上下文建模方法的性能比较。从中可以看出,相比HEVC中的上下文建模方法,本发明提出的上下文建模方法的BD-Rate是-0.82%,也就是说,在相同的视频质量下,本发明提出的上下文建模方法可以节省0.82%的码率。
表2
| 测试序列 | BD-Bit Rate[%] |
| BasketballDrill@832x480 | -0.1 |
| BQMall@832x480 | -0.6 |
| PartyScene@832x480 | -0.1 |
| FourPeople@1280x720 | -0.3 |
| Johnny@1280x720 | -0.3 |
| KristenAndSara@1280x720 | -0.1 |
| Kimono@1920x1080 | -0.1 |
| ParkScene@1920x1080 | 0.0 |
| Cactus@1920x1080 | 0.1 |
| Average | -0.17 |
表2给出了低延迟编码配置下,本发明提出的上下文建模方法与HEVC中的上下文建模方法的性能比较。从中可以看出,相比HEVC中的上下文建模方法,本发明提出的上下文建模方法的BD-Rate是-0.17%,也就是说,在相同的视频质量下,本发明提出的上下文建模方法可以节省0.17%的码率。
表3
| 测试序列 | BD-Bit Rate[%] |
| BasketballDrill@832x480 | -0.3 |
| BQMall@832x480 | -0.9 |
| PartyScene@832x480 | -0.4 |
| FourPeople@1280x720 | -0.7 |
| Johnny@1280x720 | -0.3 |
| KristenAndSara@1280x720 | -0.2 |
| Kimono@1920x1080 | -0.7 |
| ParkScene@1920x1080 | -0.3 |
| Cactus@1920x1080 | -0.2 |
| Average | -0.44 |
表3给出了随机访问编码配置下,本发明提出的上下文建模方法与HEVC中的上下文建模方法的性能比较。从中可以看出,相比HEVC中的上下文建模方法,本发明提出的上下文建模方法的BD-Rate是-0.44%,也就是说,在相同的视频质量下,本发明提出的上下文建模方法可以节省0.44%的码率。
Claims (3)
1.视频压缩中变换系数的上下文建模方法,其特征在于,所述上下文建模方法包括以下步骤:
步骤一:对bin0的上下文建模,其中所述bin0为一个用于指示当前变换系数是否大于0的二进制符号;
对于处在(x,y)处的变换系数的bin0的上下文包含当前变换系数的编码组的位置(xCG,yCG)、当前变换系数在当前编码组内的位置(xInCG,yInCG)、以及当前变换系数的局部模板LT(x,y)所覆盖的变换系数中非零变换系数的个数NumSigs,(x,y)为当前待编码的变换系数在当前变换系数块的位置,LT(x,y)为位于变换系数块(x,y)处的变换系数的局部模板,根据(x,y)求得包含当前变换系数的编码组的位置(xCG,yCG)和当前变换系数在当前编码组内的位置(xInCG,yInCG);
若当前编码的是亮度分量:
如果xCG+yCG等于0,则
<mrow>
<mi>Re</mi>
<mi>g</mi>
<mi>I</mi>
<mi>d</mi>
<mi>x</mi>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>x</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo><</mo>
<mn>2</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>x</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>&GreaterEqual;</mo>
<mn>2</mn>
<mi>a</mi>
<mi>n</mi>
<mi>d</mi>
<mi> </mi>
<msub>
<mi>x</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo><</mo>
<mn>5</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>2</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>x</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>&GreaterEqual;</mo>
<mn>5</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
Ctxbin0=RegIdx*6+NumSigs (2)
如果xCG+yCG大于0,则
<mrow>
<mi>Re</mi>
<mi>g</mi>
<mi>I</mi>
<mi>d</mi>
<mi>x</mi>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mn>3</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>x</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo><</mo>
<mn>4</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>4</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mi>x</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>y</mi>
<mrow>
<mi>I</mi>
<mi>n</mi>
<mi>C</mi>
<mi>G</mi>
</mrow>
</msub>
<mo>&GreaterEqual;</mo>
<mn>4</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
</mrow>
Ctxbin0=RegIdx*6+NumSigs (4)
RegIdx为当前变换系数所在的区域,Ctxbin0为待编码的变换系数的bin0的上下文索引;若当前编码的是色度分量:则
<mrow>
<mi>Re</mi>
<mi>g</mi>
<mi>I</mi>
<mi>d</mi>
<mi>x</mi>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mn>0</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
<mo><</mo>
<mn>4</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
<mo>&GreaterEqual;</mo>
<mn>4</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
Ctxbin0=RegIdx*6+NumSigs (6)
步骤二:对bin1的上下文建模,其中所述bin1为一个用于指示当前变换系数的绝对值是否大于1的二进制符号;
对于处在(x,y)处的变换系数的bin1的上下文包括当前待编码的变换系数在当前变换系数块的位置(x,y)以及当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值等于1的变换系数的个数NumEqu1;
若当前编码的是亮度分量:
如果x+y小于3,则
<mrow>
<msub>
<mi>Ctx</mi>
<mrow>
<mi>b</mi>
<mi>i</mi>
<mi>n</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>></mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>m</mi>
<mi>i</mi>
<mi>n</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>E</mi>
<mi>q</mi>
<mi>u</mi>
<mn>1</mn>
<mo>,</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mn>3</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>&le;</mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
否则,如果x+y小于10,则
<mrow>
<msub>
<mi>Ctx</mi>
<mrow>
<mi>b</mi>
<mi>i</mi>
<mi>n</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mn>7</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>></mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>H</mi>
<mi>q</mi>
<mi>u</mi>
<mn>1</mn>
<mo>,</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mn>10</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>&le;</mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
否则,x+y大于或等于10,则
<mrow>
<msub>
<mi>Ctx</mi>
<mrow>
<mi>b</mi>
<mi>i</mi>
<mi>n</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mn>14</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>></mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>H</mi>
<mi>q</mi>
<mi>u</mi>
<mn>1</mn>
<mo>,</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mn>17</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>&le;</mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
所述Ctxbin1为当前待编码的变换系数的bin1的上下文索引;
若当前编码的是色度分量:
<mrow>
<msub>
<mi>Ctx</mi>
<mrow>
<mi>b</mi>
<mi>i</mi>
<mi>n</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>></mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>min</mi>
<mrow>
<mo>(</mo>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>H</mi>
<mi>q</mi>
<mi>u</mi>
<mn>1</mn>
<mo>,</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
<mo>+</mo>
<mn>3</mn>
<mo>,</mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>i</mi>
<mi>f</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>N</mi>
<mi>u</mi>
<mi>m</mi>
<mi>G</mi>
<mi>r</mi>
<mi>e</mi>
<mn>1</mn>
<mo>&le;</mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
步骤三:对bin2的上下文建模,其中所述bin2为一个用于指示当前变换系数的绝对值是否大于2的二进制符号;
对于处在(x,y)处的变换系数的bin2的上下文包括当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值大于2的变换系数的个数NumGre2;
若当前编码的是亮度分量,则
如果NumGre2大于0,则
Ctxbin2=0 (11)
否则,如果NumGre1大于0,则
Ctxbin2=1 (12)
否则,
Ctxbin2=2 (13)
定义Ctxbin2为当前待编码的变换系数的bin2的上下文索引;
若当前编码的是色度分量:
如果NumGre2大于0,则
Ctxbin2=0 (14)
否则,如果NumGre1大于0,则
Ctxbin2=1 (15)
否则,
Ctxbin2=2 (16)。
2.根据权利要求1所述的视频压缩中变换系数的上下文建模方法,其特征在于,利用得到的上下文索引Ctxbin0,Ctxbin1和Ctxbin2从对应的上下文集合中选出对应的上下文,即可得到该上下文所对应变换系数的概率分布,或者该变换系数的bin0,bin1和bin2的概率分布,共有6个上下文集合,分别对应着亮度分量的bin0,bin1和bin2和色度分量的bin0,bin1和bin2。
3.根据权利要求2所述的视频压缩中变换系数的上下文建模方法,其特征在于,当得到上下文所对应变换系数的概率分布时,利用得到的变换系数概率分布,对变换系数进行熵编码;当得到上下文所对应变换系数的bin0,bin1和bin2的概率分布时,利用得到的变换系数的bin0,bin1和bin2的概率分布对变换系数的bin0,bin1和bin2进行熵编码。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201510547323.7A CN105141966B (zh) | 2015-08-31 | 2015-08-31 | 视频压缩中变换系数的上下文建模方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201510547323.7A CN105141966B (zh) | 2015-08-31 | 2015-08-31 | 视频压缩中变换系数的上下文建模方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN105141966A CN105141966A (zh) | 2015-12-09 |
| CN105141966B true CN105141966B (zh) | 2018-04-24 |
Family
ID=54727152
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201510547323.7A Active CN105141966B (zh) | 2015-08-31 | 2015-08-31 | 视频压缩中变换系数的上下文建模方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN105141966B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12355996B2 (en) | 2017-11-23 | 2025-07-08 | Interdigital Vc Holdings, Inc. | Encoding and decoding methods and corresponding devices |
| EP3490253A1 (en) * | 2017-11-23 | 2019-05-29 | Thomson Licensing | Encoding and decoding methods and corresponding devices |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1741616A (zh) * | 2005-09-23 | 2006-03-01 | 联合信源数字音视频技术(北京)有限公司 | 一种基于上下文的自适应熵编/解码方法 |
| EP2006839A2 (en) * | 2004-07-14 | 2008-12-24 | Agency for Science, Technology and Research | Context-based encoding and decoding of signals |
| CN102186087A (zh) * | 2011-06-24 | 2011-09-14 | 哈尔滨工业大学 | 用于二进制算术编码可并行的非零系数上下文建模方法 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103650510B (zh) * | 2011-07-15 | 2018-05-22 | 谷歌技术控股有限责任公司 | 用于变换系数级编码的上下文建模技术 |
-
2015
- 2015-08-31 CN CN201510547323.7A patent/CN105141966B/zh active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2006839A2 (en) * | 2004-07-14 | 2008-12-24 | Agency for Science, Technology and Research | Context-based encoding and decoding of signals |
| CN1741616A (zh) * | 2005-09-23 | 2006-03-01 | 联合信源数字音视频技术(北京)有限公司 | 一种基于上下文的自适应熵编/解码方法 |
| CN102186087A (zh) * | 2011-06-24 | 2011-09-14 | 哈尔滨工业大学 | 用于二进制算术编码可并行的非零系数上下文建模方法 |
Non-Patent Citations (1)
| Title |
|---|
| 《A parallel context model for level information in CABAC》;Min Gao et;《2011 Visual Communications and Image Processing(VCIP)》;20111231;全文 * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN105141966A (zh) | 2015-12-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10893273B2 (en) | Data encoding and decoding | |
| US9338478B2 (en) | Video compression using multiple variable length coding methods for multiple types of transform coefficient blocks | |
| TW202005376A (zh) | 相依量化技術 | |
| US10298956B2 (en) | Method and apparatus for block-based significance map and significance group flag context selection | |
| US9992497B2 (en) | High throughput significance map processing for CABAC in HEVC | |
| JP2017118549A (ja) | データ符号化及び復号化 | |
| WO2020118212A1 (en) | Regular coded bin reduction for coefficient decoding using threshold and rice parameter | |
| JP2005530375A (ja) | 画像および/またはビデオ符号器と復号器における変換係数を符号化するための方法と装置および対応するコンピュータプログラムと対応するコンピュータによる読み出し可能な記憶媒体 | |
| TW201811038A (zh) | 熵編碼視訊的方法與裝置、以及熵解碼視訊的方法與裝置 | |
| KR20150060624A (ko) | 변환 계수 레벨의 엔트로피 부호화 및 복호화를 위한 컨텍스트 모델 결정 방법 및 장치 | |
| CN110868594A (zh) | 分割方法的冗余移除 | |
| CN114731446B (zh) | 用于信息值序列的编码概念 | |
| CN103888763B (zh) | 一种基于hevc的帧内编码方法 | |
| CN105141966B (zh) | 视频压缩中变换系数的上下文建模方法 | |
| CN107018426B (zh) | 用于图像和视频编码的二进制化器选择 | |
| CN108737819A (zh) | 一种基于四叉树二叉树结构的灵活编码单元划分方法 | |
| TW202325020A (zh) | 視訊編碼方法、裝置以及視訊解碼方法、裝置 | |
| CN100542293C (zh) | 变长编解码方法及其编解码器 | |
| CN102595108B (zh) | 一种语法元素的编码方法及装置 | |
| US11785219B2 (en) | Coefficient coding for support of different color formats in video coding | |
| CN100551064C (zh) | 变长编码方法及装置 | |
| Li et al. | High-speed rate estimation based on parallel processing for H. 264/AVC CABAC encoder | |
| Puri et al. | Improved coefficient coding for adaptive transforms in HEVC | |
| CN104519356B (zh) | 一种cabac编/解码方法 | |
| HK1240438B (zh) | 用於图像和视频编码的自适应二进制化器选择 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |