zoukankan      html  css  js  c++  java
  • H.264---CABAC---第二步---待编码语法元素二值化

    转自:https://www.cnblogs.com/TaigaCon/p/5304563.html

    CABAC编码的是slice data中的语法元素,在进行算术编码前,需要把这些语法元素按照一定的方法转换成适合进行二进制算术编码的二进制串,这个转换的过程被称为二值化(binarization)。

    二值化的方案共有7种

    1. 一元码(Unary)

    对于一个非二进制的无符号整数值符号x⩾0,在CABAC中的一元码码字由xx个“1”位外加一个结尾的“0”组成,见下表。例如,输入的语法元素值为3,其二值化结果为1110

    value of syntax element Unary
    0 0          
    1 1 0        
    2 1 1 0      
    3 1 1 1 0    
    4 1 1 1 1 0  
    5 1 1 1 1 1 0
               
    binIdx 0 1 2 3 4 5
    2. 截断一元码(TU,Truncated Unary)

    一元码的变体,用在已知语法元素的最大值cMax的情况。对于0x<cMax的范围内的取值,使用一元码进行二值化。对于x=cMaxx=cMax,其二值化的二进制串全部由“1”组成,长度为cMax。例如,当cMax=5时,语法元素值为4的二进制串为11110,语法元素值为5的二进制串为11111

    3. k阶指数哥伦布编码(kth order Exp-Golomb,EGk)

    指数哥伦布编码由前缀和后缀组成。其中前缀部分由l(x)=log2(x/2k+1)l(x)=⌈log2(x/2k+1)⌉的值所对应的一元码组成;后缀部分可通过使用长度为k+l(x)k+l(x)位的x+2k(12l(x))x+2k(1−2l(x))的二进制值来计算。详细的计算过程请参考指数哥伦布编码,请注意两者前缀区别。

    4. 定长编码(FL,Fixed-Length)

    用定长编码二进制的无符号语法元素, 语法元素的最大值cMax已知,那么定长编码的长度为fixlength=log2(cMax+1)fixlength=⌈log2(cMax+1)⌉,其中值就是语法元素的值的二进制。定长编码用于近似均匀分布的语法元素的二值化

    5. mb_type与sub_mb_type特有的查表方式

    详情请查看h.264标准中9.3.2.5小节

    6. 4位FL与截断值为2的TU联合二值化方案

    这种方案只用于对语法元素CBP的二值化。4位的FL(cMax=15)的前缀用于编码亮度CBP,2位的TU用于编码色度CBP(当色彩格式为4:2:0或4:2:2时才会存在这个后缀)

    7. TU与EGk的联合二值化方案(UEGk,Unary/kth order Exp-Golomb)

    这种方案的前缀使用一元截断码,后缀使用k阶哥伦布编码。但是在取值较小的范围内,只用一元码表示(即只有前缀部分)。对于不同的语法元素,有不同的截断值与阶数。如下表为abs_level_minus1的二值化表(cMax=14的TU、0阶哥伦布编码)

    * Suffix (EG0)
    0 0                                    
    1 1 0                                  
    2 1 1 0                                
    3 1 1 1 0                              
    4 1 1 1 1 0                            
                             
                 
    12 1 1 1 1 1 1 1 1 1 1 1 1 0            
    13 1 1 1 1 1 1 1 1 1 1 1 1 1 0          
    14 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0        
    15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0    
    16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1    
    17 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
    18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
                                         
    binIdx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

    *:abs_level_minus1Prefix (TU)

    具体哪个语法元素选择哪种二值化方案,请查看标准9.3.2中d第一个表格。

  • 相关阅读:
    OpenCV4学习笔记(1.0)换一种方式从源码编译、安装 | OpenCV4.3.0以及Contrib | Win10 | CMakeGUI | VS2019 | HTTP代理
    Dapr初体验之服务调用
    Dapr初体验之Hello World
    adb shell input text 中文输入方法
    记一次Mongodb数据库查询之包含所有指定元素的数组或者都在指定元素的数组中 du
    CentOS 7.2 内核3升级到4或者5
    pv
    静态 pv 和动态 pv
    k8s 编写 yaml 文件格式
    把刚升级完成的内核设置成默认启动
  • 原文地址:https://www.cnblogs.com/qing1991/p/10106273.html
Copyright © 2011-2022 走看看