CABAC中的二值化方法

CABAC中的二值化方法

1.二值化的一般性要求

  1. 在对片进行编码的过程中,相应的二值化方案要满足快速精确的条件误差估计原则
  2. 二值化的结果要方便进行条件概率的计算以及后续的算术编码

2.为什么要进行二值化

对于传统的算术编码过程,如果不考虑上下文的影响,假设一共有m个元素,则在一开始需要计算m个元素的概率,这种情形对于0阶上下文自适应还勉强能使用,如果使用n阶的上下文自适应条件概率,则需要计算m^n个概率值,那么这个计算量就非常大了,不适合用来直接计算和编码。

3.二值化的一般方法

  • unary code 最简单的一种二值化实现方式,对于无符号整数x,且x>=0,那么unary code为”x”个1和一个0组成。
  • Truncated Unary Binarization Scheme 这种方法实际上是unary code的一种优化,同样对于无符号整数x,且0<=x<=S,当x小于S时,使用unary code,对于x=S,只使用”x”个1,不需要最后的0.
  • k阶指数哥伦布二值化方案EGK,这种方法对于每一个待二值化的x,首选需要计算lx=log2(x/2^k +1),并对lx向下取整,然后将lx按unarycode进行二值化;接下来计算x+2^k(1-2^lx)以及k+lx,使用k+lx位的定长对x+2^k(1-2^lx)进行二值化。举例说明如下,假设x=5,k=0,那么lx=2,k+lx=2,则二值化为11010.
  • 定长二值化方法,即使用固定的位数对整数值进行二值化

4.CABAC中使用的二值化方法

在CABCA中,将上面的两种或多种方法串联起来使用,第一种是使用4-bit的定长前缀来描述块的亮度编码方式加上S=2的TU对色度块的编码方式进行二值化。运动向量残差使用的是TU做前缀加EGK做后缀的二值化方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值