发明名称 视频压缩中变换系数的上下文建模方法
摘要 视频压缩中变换系数的上下文建模方法,本发明涉及变换系数的上下文建模技术。本发明是为了解决HEVC中所采用的上下文建模技术不能准确地预测变换系数的统计特性的问题。本发明在当前变换系数为bin0、bin1或bin2的上下文建模过程,使用了当前变换系数的位置信息和当前变换系数的局部模板中非零变换系数信息,同时还利用变换系数在编码组内的位置对亮度分量的变换系数块的编码组进行划分,利用变换系数在变换系数块内的位置对色度分量的变换系数块进行划分,最终实现上下文建模。本发明更加准确地预测变换系数的统计特性,提高了变换系数的压缩效率。本发明应用于视频编码领域。
申请公布号 CN105141966A 申请公布日期 2015.12.09
申请号 CN201510547323.7 申请日期 2015.08.31
申请人 哈尔滨工业大学 发明人 范晓鹏;高敏;赵德斌;刘绍辉
分类号 H04N19/625(2014.01)I 主分类号 H04N19/625(2014.01)I
代理机构 哈尔滨市松花江专利商标事务所 23109 代理人 杨立超
主权项 视频压缩中变换系数的上下文建模方法,其特征在于,所述上下文建模方法包括以下步骤:步骤一:对bin0的上下文建模,其中所述bin0为一个用于指示当前变换系数是否大于0的二进制符号;对于处在(x,y)处的变换系数的bin0的上下文包含当前变换系数的编码组的位置(x<sub>CG</sub>,y<sub>CG</sub>)、当前变换系数在当前编码组内的位置(x<sub>InCG</sub>,y<sub>InCG</sub>)、以及当前变换系数的局部模板LT<sub>(x,y)</sub>所覆盖的变换系数中非零变换系数的个数NumSigs,(x,y)为当前待编码的变换系数在当前变换系数块的位置,LT<sub>(x,y)</sub>为位于变换系数块(x,y)处的变换系数的局部模板,根据(x,y)求得包含当前变换系数的编码组的位置(x<sub>CG</sub>,y<sub>CG</sub>)和当前变换系数在当前编码组内的位置(x<sub>InCG</sub>,y<sub>InCG</sub>);若当前编码的是亮度分量:如果x<sub>CG</sub>+y<sub>CG</sub>等于0,则<maths num="0001" id="cmaths0001"><math><![CDATA[<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>&lt;</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><mtable><mtr><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></mrow></mtd><mtd><mrow><mi>a</mi><mi>n</mi><mi>d</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>&lt;</mo><mn>5</mn></mrow></mtd></mtr></mtable></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>]]></math><img file="FDA0000793167840000011.GIF" wi="1508" he="233" /></maths>Ctx<sub>bin0</sub>=RegIdx*6+NumSigs   (2)如果x<sub>CG</sub>+y<sub>CG</sub>大于0,则<maths num="0002" id="cmaths0002"><math><![CDATA[<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>&lt;</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>]]></math><img file="FDA0000793167840000012.GIF" wi="1548" he="159" /></maths>Ctx<sub>bin0</sub>=RegIdx*6+NumSigs   (4)RegIdx为当前变换系数所在的区域,Ctx<sub>bin0</sub>为待编码的变换系数的bin0的上下文索引;若当前编码的是色度分量:则<maths num="0003" id="cmaths0003"><math><![CDATA[<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>&lt;</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>]]></math><img file="FDA0000793167840000013.GIF" wi="1332" he="157" /></maths>Ctx<sub>bin0</sub>=RegIdx*6+NumSigs   (6)步骤二:对bin1的上下文建模,其中所述bin1为一个用于指示当前变换系数的绝对值是否大于1的二进制符号;对于处在(x,y)处的变换系数的bin1的上下文包括当前待编码的变换系数在当前变换系数块的位置(x,y)以及当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值等于1的变换系数的个数NumEqu1;若当前编码的是亮度分量:如果x+y小于3,则<maths num="0004" id="cmaths0004"><math><![CDATA[<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><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>1</mn><mo>,</mo><mn>2</mn></mrow><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>&gt;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>min</mi><mrow><mo>(</mo><mrow><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></mrow><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>]]></math><img file="FDA0000793167840000021.GIF" wi="1700" he="156" /></maths>否则,如果x+y小于10,则<maths num="0005" id="cmaths0005"><math><![CDATA[<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><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>1</mn><mo>,</mo><mn>2</mn></mrow><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>&gt;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>min</mi><mrow><mo>(</mo><mrow><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></mrow><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>]]></math><img file="FDA0000793167840000022.GIF" wi="1728" he="156" /></maths>否则,x+y大于或等于10,则<maths num="0006" id="cmaths0006"><math><![CDATA[<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><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>1</mn><mo>,</mo><mn>2</mn></mrow><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>&gt;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>min</mi><mrow><mo>(</mo><mrow><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></mrow><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>]]></math><img file="FDA0000793167840000023.GIF" wi="1783" he="156" /></maths>所述Ctx<sub>bin1</sub>为当前待编码的变换系数的bin1的上下文索引;若当前编码的是色度分量:<maths num="0007" id="cmaths0007"><math><![CDATA[<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><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>1</mn><mo>,</mo><mn>2</mn></mrow><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>&gt;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>min</mi><mrow><mo>(</mo><mrow><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></mrow><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>]]></math><img file="FDA0000793167840000024.GIF" wi="1700" he="157" /></maths>步骤三:对bin2的上下文建模,其中所述bin2为一个用于指示当前变换系数的绝对值是否大于2的二进制符号;对于处在(x,y)处的变换系数的bin2的上下文包括当前编码组中已经编码过的绝对值大于1的变换系数个数NumGre1和绝对值大于2的变换系数的个数NumGre2;若当前编码的是亮度分量,则如果NumGre2大于0,则Ctx<sub>bin2</sub>=0   (11)否则,如果NumGre1大于0,则Ctx<sub>bin2</sub>=1   (12)否则,Ctx<sub>bin2</sub>=2   (13)定义Ctx<sub>bin2</sub>为当前待编码的变换系数的bin2的上下文索引;若当前编码的是色度分量:如果NumGre2大于0,则Ctx<sub>bin2</sub>=0   (14)否则,如果NumGre1大于0,则Ctx<sub>bin2</sub>=1   (15)否则,Ctx<sub>bin2</sub>=2   (16)。
地址 150001 黑龙江省哈尔滨市南岗区西大直街92号