视频压缩中变换系数的上下文建模方法

文档序号:9420682阅读:363来源:国知局
视频压缩中变换系数的上下文建模方法
【技术领域】
[0001] 本发明设及视频压缩过程中变换系数的上下文建模技术。
【背景技术】
[0002] 为了提高视频压缩系统中赌编码的压缩效率,上下文建模技术被广泛地用来预测 信源的统计特性。具体来讲,信源符号的上下文建模过程包括:对待编码的信源符号的统计 特性进行分析,利用其独特性,为赌编码设计多个上下文状态;在编码过程中,赌编码器利 用已编码信源符号的取值,即上下文信息,选择其中一个状态,并在此状态下对当前待编码 的信源符号进行编码。其中,一个上下文状态对应着信源在某一种情况下的统计特性(即 条件概率分布)。也就是说,通过上下文建模技术,在编码当前信源符号之前,我们对该信源 符号的统计特性会有一个准确的预期,从而在赌编码的时候提高编码效率。
[0003] 在目前最新的视频压缩标准肥VC中,变换系数块的大小可W取值为 4x4, 8x8, 16x16和32x32。为了有效地编码一个变换系数块中的所有变换系数,变换系数块 被分割为互不重叠的编码组。每一个编码组对应着变换系数块中的一个4x4大小的子块。 即,4x4的变换系数块只有一个编码组,8x8的变换系数块有4个编码组,16x16的变换系数 块有16个编码组,32x32的变换系数块有64个编码组。当按照运种方式对变换系数块进行 分割后,一个变换系数块中所有的编码组和一个编码组中所有的变换系数按照一个给定的 扫描顺序进行编码。具体来讲就是,首先编码一个二进制符号CSBF(对应着肥VC中的语法 元素codetsub_block_flag)用来指示当前编码组是否包含非零变换系数,如果当前编码 组的CSBF为1,即当前编码组包含非零变换系数,则编码当前编码组中的所有变换系数,否 则处理下一个编码组。
[0004] 每个编码组中的每个变换系数的编码是通过多次扫描来实现的。具体来讲就是, 在第一次扫描中,对于当前编码组中的每个变换系数,一个用于指示当前变换系数是否大 于0的二进制符号(我们用binO来表示,它对应着肥VC中语法元素significant_flag)被 编码进码流中;在第二次扫描中,对于当前编码组中的每个绝对值大于0的变换系数,一个 用于指示当前变换系数的绝对值是否大于1的二进制符号(我们用Mnl来表示,它对应着 肥VC中语法元素。06''_油3_旨'6曰161'1_'1曰旨)被编码进码流中;在第S次扫描中,对于当前 编码组中的每个绝对值大于1的变换系数,一个用于指示当前变换系数的绝对值是否大于 2的二进制符号(我们用bin2来表示,它对应着肥VC中的语法元素。〇6''_油3_旨'6曰16'2_ flag)被编码进码流中;在最后的两次扫描中,分别编码当前编码组中变换系数的符号和 剩余没有编码的取值(对应着肥VC中语法元素coeff_abs_level_remaining)。
[0005] 在肥VC中,MnO的上下文包括当前待编码的变换系数在变换系数块中的位置 (X,y),当前变换系数块的扫描方式scanidx和位于当前编码组下侧和右侧的编码组的 CSBF的取值(我们用CSBF式日CSBFK来分别表示下侧编码组和右侧编码组的CSBF的取值)。 根据当前待编码的变换系数在变换系数块中的位置(x,y),可W求得包含当前变换系数的 编码组的位置和当前变换系数在当前编码组内的位置(Xhc(;,yhJ。因此,对于每 个变换系数,其binO的上下文建模过程描述如下:
[0006] 如果当前待编码的是亮度分量:
[0007] 如果x+y等于0,则
[0008] CtXbinO=0
[0009] 如果Size等于4x4,则
[0010] CtXbinO= CtxIndMap[4村inCG+yinCG]
[0011]如果 Size等于 SxS且 scanidx等于 SCAN_DIAG,贝!j 9 +t7;\-/"C[4r,.//'.X-,., +IV- --0
[0012] ^"0=1 L扣…九江。J …少
[0013]如果 Size等于8x8且 scanidx不等于 SCAN_DIAG,贝[J _ Jl5 + 放/??c[4 * 而,('6 + 记:W],矿相 + 托'G== 0 阳014] -I+y,"a.lotherwise
[0015]如果Size大于8x8,则 P I.p. - 21 + C打执C .4 *X扣。G +把忙G.,梦而。+托择=='〇 本脚0 - 124 + (化/化'[4 * r,.OfAmmc
[0017] 如果当前待编码的是色度分量:
[001引如果x+y等于0,则
[001 引CtXbino=O
[0020] 如果Size等于4x4,则
[002"CtXbinO= CtxIndMap[4村inCG+yinCG]
[0022] 如果Size等于8x8,则[002引CtXbinO=9+CtxInC[4*XinCG+yinCG]
[0024]如果Size大于8x8,则
[002引CtXbinO=l^ctxlnc[4*xinCG+yinCG]
[0026]其中根据CSBFl和 CSBFK的取值 CtxInc可W取 ctxinc。,ctxlnci,ctxincz和 ctxincj。
[0027] 〇I 4 Si 「2110] 「2 2 2 2 t 3 4 5 II 贷贷 1 1 1 1 CtxItnlMap[\6] - £'化/化,.[16]二 ',::地-//?(',[16]=' ' ' ', '6688 化 1QQQ'QQQQ 7 7 8 8」 [0 0 0 0」 L:0 0 0 0 -2 10 0] 「2::2::2::2:-2 1 0 0. ...2 2 2 2
[0028] ('化/化'2[16]二:2 1 0 Q,2 2 2 2 _2 1 0 oj 2: .2: .2-
[0029] 在肥VC中,binl的上下文包括当前待编码的变换系数在变换系数块中的位置 (X,y),前一个编码组中是否包含绝对值大于I的变换系数(我们用Cl来表示该上下文,即Cl= 1表示前一个编码组包含绝对值大于1的变换系数,Cl=O表示前一个编码组不包含 绝对值大于1的变换系数),和当前编码组中已经编码过的绝对值等于1和绝对值大于1的 变换系数的个数(我们用NumEqul和NumGrel分别表示当前编码组中已经编码过的绝对值 等于1和绝对值大于1的变换系数的个数)。根据当前待编码的变换系数在变换系数块中 的位置(x,y),可W求得包含当前变换系数的编码组的位置,因此对于当前编码组 的每个变换系数,其Mnl的上下文建模过程描述如下:
[0030] 如果当前编码的是亮度分量: 0,矿相+托G =0口"^ci = O 1,// AV/ +V/V二 0。巧 ( 3 二 1
[0031] 炼器紐二 \化- 2, //.V.+VV0andc\= 0 //'.v(,,+.v('(,.吉0w?c/d=l 「In、\n(NimI£qiA\,2)-\- 4*'C[xSd,ifNumGre\ 二0.
[0032] I3-f4 *CtxSet,otherwise
[0033] 如果当前编码的是色度分量: fo,矿过二Q
[0034] a、-姑=] .1,矿c'l = l min(Ai'""!&/"IJ) + 4*C/xSW,/Z'./V""!(7/Tl=0 [00巧]份W=、 - " *袖|3 + 4*化'似,。巧园如
[0036] 在肥VC中,bin2的上下文包括当前待编码的变换系数在变换系数块中的位置 (x,y)W及前一个编码组中是否包含绝对值大于1的变换系数。根据当前待编码的变换系 数在变换系数块中的位置(x,y),可W求得包含当前变换系数的编码组的位置(Xc^yJ,因 此对于当前编码组的每个变换系数,其bin2的上下文建模过程可W描述如下:
[0037] 如果当前编码的是亮度分量: 化(/' -V。,. +r。,二 0。巧Jd二 0 1,//- AV/ . + V,./二0。巧c l二1
[0038] 扮%,。=,-」一。,,。 2, // 又-[6 + 并 0 口巧"c,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1