HEVC中 Truncated Rice binarization (标准文档的9.3.3.2节)

一言以蔽之就是:前缀是一元码,后缀是定长码,后缀长度为cRiceParam. 但是注意最后有截断的情况。

输入参数:cRiceParam, cMax, 以及要二值化的 val

1)      将val 分成prefix and suffix as follows:

Prefix = val >>cRiceParam

Suffix = val – prefix<<cRiceParam

 

即:Val =prefix << cRiceParam + suffix.

有两种情况无suffix:

a.      cRiceParam=0,

b.      val=cMax.

 

2)      Prefix 按一元码 (unarycode)来编 as follows:

prefixVal

bin string

0

0

1

10

2

110

3

1110

4

11110

 

cMax>>cRiceParam

cMax>>cRiceParam "1"

 

3)      Suffix 按定长码(fixed-length)binarization 位数为cRiceParam.

4)      举个例子:如下. HEVC中用到的cRiceParam!=0的情况下,cMax都等于 4<<cRiceParam.

   

cRiceParam=1, cMax=8

val

bin string

prefix

suffix

0

0

0

1

0

1

2

10

0

3

10

1

4

110

0

5

110

1

6

1110

0

7

1110

1

8

1111

 

9

1111

 

 

 

 

 

 

另外,标准文档的 9.3.3.2 节对此的描述感觉有问题:

1. 它没有说明cRiceParam=0的时候无suffix. (只是在note中注目了,但没有正式写出来)

2. 没有说明的suffix具体的binarization 方法,应该是定长码且长度为cRiceParam.


你可能感兴趣的:(HEVC中 Truncated Rice binarization (标准文档的9.3.3.2节))