最近在做RDOQ算法优化和硬件系统结构设计,建立其时序模型,估算算法的硬件复杂度。在做这部分工作的同时,博主学习了HEVC算法所有的算法原理,为了便于形成完整的知识体系结构,将相关的知识点框架总结如下:
一、HEVC中熵编码采用的技术
- 零阶(或者k阶)哥伦布指数编码(变长编码,类似于哈夫曼编码那样),主要用于VPS、SPS、PPS、slice头部信息的编码
- CABAC(算数编码),主要用于数据和参数的编码
二、哥伦布指数编码(假设对数字4进行编码,n=4,k=0阶)
-
将数字N以二进制形式写出,去掉最低的k个比特位,之后加一。
-
计算留下的比特数,将此数减一,就是需要增加的前缀零的个数。
-
将步骤1中去掉的最低k个比特位补回比特串尾部。
1、把n转换成二进制,即100
2、对二进制加上一,即101
3、计算二进制的比特数,假设为x,101的比特数是3
4、在二进制比特的前面加上(x-1)个比特的0,即00 101 -
零阶哥伦布指数编码的前缀长度为A和后缀长度为B有:A-1=B;前缀长度和后缀长度都可以由公式求出
-
零阶哥伦布指数编码分有符号编码和无符号编码:对于一个数字,先把它转换成索引index(书上把它叫做cod