第四章 视频编码基础
1. 压缩码流
语法:码流中各个元素的位置关系
- 01001001…
- 图像编码类型(01),宏块类型(00),编码系数1001等
语义:每个语法元素所表达的意义。
2. 编码层次
- 序列(Sequence)
- 图像组(Group of Pictures,GOP)
- 图像(Picture)
- 条带(Slice)
- 宏块(Macroblock,MB)
- 块(Block)
3. 码流结构
3. PB帧编码
4. 序列编码对象
(1)IBBP序列
5. 图像组编码对象
6. 图像编码结构
7. 图像分块编码
8. 条带编码结构
9. 条带编码对象
10. 宏块编码结构
- 宏块:16x16的像素块(对亮度而言)。
- 宏块内容:宏块编码类型,编码模式,参考帧索引,运动矢量信息,宏块编码系数等。
11. 宏块编码对象
12. 块编码结构
13. 视频编解码关键技术
- 预测:通过帧内预测和帧间预测降低视频图像的空间冗余和时间冗余。
- 变换:通过从时域到频域的变换,去除相邻数据之间的相关性,即去除空间冗余。
- 量化:通过用更粗糙的数据表示精细的数据来降低编码的数据量,或者通过去除人眼不敏感的信息来降低编码数据量。
- 扫描:将二维变换量化数据重新组织成一维的数据序列。
- 熵编码:根据待编码数据的概率特性减少编码冗余。
14. 预测
15. 帧内预测
- I帧图像的每个宏块都采用帧内(Intra)预测编码模式。
- 宏块分成8x8或者4x4块,对每个块采用帧内预测编码,称作Intra8x8或者Intra4x4。
- 帧内预测有多个预测方向:水平,垂直,左下,右上。
- 帧内预测还有直流(DC)预测。
色度块预测还有平面预测。
16. 帧间预测
17. 预测残差
18. 变换编码
- 变换编码:通过变换将空域信号转换为频域信号来去除空间信号的冗余信息,减少编码数据。
二维离散余弦变换
例:
19. 量化
- 量化原理:将含有大量的数据集合映射到含有少量的数据集合中。
20. 扫描
21. 熵编码
- 熵编码:根据符号出现的概率,对经常出现的符号分配较短的码字,对不常出现的符号分配较长的码字。
- Level-Run编码:用数据中非零值和其前面非零值之间出现零值的个数重新描述量化系数序列为(Level,Run)二元组序列
变长编码
- 将Level-Run编码后的(level,run)变长编码成最终的比特串。
22. 码率控制
- 受到缓冲区,带宽的限制,编码码率不能无限制的增长,因此需要通过码率控制来将编码码流控制在目标码率范围内。
一般通过调整量化参数的手段控制码率
码率控制考虑的问题
- 防止码流有较大的波动,导致缓冲区发生溢出,
- 同时保持缓冲区尽可能的充满,让图像质量尽可能的好而且稳定
CBR(Constant Bit Rate)
VBR(Variable Bit Rate)
码率控制算法
码率控制属于非标准技术
第5章 预测
1. 预测技术
- 目的:去除空间冗余和时间冗余。
视频存在大量的空间冗余和时间冗余
空间冗余:用帧内预测编码去除
时间冗余:用帧间预测编码去除
- 基于块匹配(Block Matching)的帧间预测
- 预测后得到去除大部分空间或时间冗余的残差
2. 空间冗余
- 图像空间相邻像素具有很强的相关性。
- 帧内预测技术去除空间冗余
3. 亮度预测模式
4. 色度预测模式
5. 时间冗余
- 视频图像在时间上有较强的相关性,即存在时间冗余
去除时间冗余的编码技术
6. 运动模型
(1)平移
7. 匹配准则
8. 匹配准则简化
简化技术方法
- 分别计算当前块和预测块的象素值和
- 根据简化形式,比较当前块和预测块
- 如果用简化准则对预测块和当前块比较的结果比以前最好的结果差,可以确定预测效果不好,不必对预测块再进行比较。
9. 运动估计
- 去除视频图像的时间冗余
- 运动估计在搜索范围内为当前块寻找匹配最好的预测块
- 全搜索方式的运动估计计算复杂度高
10. 全搜索复杂度分析
11. 快速运动估计
在保持预测精度的同时减少运动估计的搜索次数。
- 三步搜索(Three Step Search,TSS)
- 二维Log搜索(2D Logarithmic Search,2DLOG)
- 正交搜索(Orthogonal Search Algorithm,OSA)
- 十字搜索(Cross Search Algorithm,CSA)
- 新三步搜索(New Three Step Search,NTSS)
- 四步搜索(Four Step Search,FSS)
- 共轭方向搜索(Conjugate Direction Search,CDS)
- 梯度下降搜索(Gradient Descent Search,GDS)
- 层次块搜索(Hierarchical Block Matching Algorithm,HBMA)
12. 三步搜索
- 由粗到精搜索最优点,初始步长为R/2.
- 第一步:检查起始点和其周围步长为R/2的8个点,将最优点作为第二步的起始点;
- 第二步:以新的起始点为中心检查其周围步长为R/4的8个点,找到最优点作为第三步的起始点;
- 第三步:以新的起始点为中心检查其周围步长为R/8的8个点,找到最优点,如果R/8=1则搜索终止,最优点位置的预测块作为最优的预测块,否则重复该过程直到R/n2=1;
- 三步搜索方法检查点的个数为1+8log2(d+1),当d=8时,检查点个数为9+8+8=25
13. 二维Log搜索
- 每一步采用十字搜索模式
- 如果每一步的最优点为中心点或者搜索窗的边界点,搜索步长减半,否则搜索步长不变
- 当搜索步长为1时,中心点周围的8个点都要检查
- 两个搜索路径一个需要5+3+3+8=19,另外一个需要5+3+2+3+2+8=23
14. 正交搜索
- 起始搜索步长R/2,从起始点开始水平搜索三个点,得到最优点并沿着最优点垂直方向搜索相邻的两个点,得到最优点,以搜索步长为R/4再以同样的方式先水平再垂直搜索,当步长为1时停止搜索
- 搜索方法检查点的个数为1+4log2(d+1),当d=8时,检查点个数为3+2+2+2+2+2=13。
15. 十字搜索
- 起始搜索步长R/2,从起始点开始以"X"形十字搜索,当搜索步长降为1时,如果上一步的最优点为中心点,左上点或右下点,则这一步搜索以"+"形状十字搜索,然后结束搜索,否则还是以"X"形十字搜索,然后结束搜索。
- 十字搜索方法检查点的个数为1+4log22d,当d=8时,检查点个数为5+4+4+4=17
16. 新三步搜索
- 与三步搜索方法不同的是,考虑到运动矢量高的中心分布特点,新三步搜索方法,除了围绕起始点为中心搜索步长为R/2的8个点之外,在起始点周围增加了步长为1的8个搜索点,如果最优点为步长为1的8个搜索点之一,则在最优点邻近的三个点中搜索最优点,然后结束搜索,否则,和三步搜索方法过程一样
- 其中一个搜索路径需要检查点个数为17+3=20,另一个需要17+8+8=33。
17. 块梯度下降搜索
- 该方法以起始点为中心搜索8个步长为1的相邻点,确定最优点,再以最优点为中心搜索8个步长为1的相邻点,如此循环下去,不限制搜索步骤,但当搜索得到的最优点为中心点或者到搜索窗的边界,搜索终止。
18. 层次块搜索
- 对编码图像和参考图像下采样,分别得到编码图像和参考图像的下采样图像,未经采样处理的编码图像和参考图像属于第0层,一次下采样的编码图像和参考图像属于第1层,对第1层图像再进行下采样得到的编码图像和参考图像属于第2层,依次重复上述过程,得到第n层下采样的编码图像和参考图像。
- 然后在n层下采样参考图像的搜索范围中找到与下采样编码图像块最佳匹配块的MV,该MV作为n-1层的运动估计搜索范围的中心点,依次重复上述过程,直到n=0为止,此时得到的最佳匹配块就是编码图像的预测块,其对应的MV为最终的最优MV。
19. 搜索算法复杂度比较
20 . 分像素运动估计与运动补偿
- 时域运动位置更可能在整象素之间,即分像素上。
利用相邻的整象素可以估计出分象素的值
分象素运动估计有更高的预测精度,但复杂度也更高,
- 1/2分象素运动估计,图像存储空间增加4倍,运动矢量需要放大2倍,1/4分象素运动估计,图像存储空间增加16倍,运动矢量需要放大4倍,计算复杂度也成倍增加。
21. 分像素插值
22. 多参考帧预测
- 有更多的候选图像,搜索更精确的预测块
- 需要更多的参考图像存储空间
- 码流需要标识参考帧索引的语法元素
23. 图像分块编码
- 视频内容的运动非常复杂,图像分块编码可以更好的提高运动预测精度,提高压缩效率。
- 要在编码块大小和附信息(MV,Mode)编码比特数之间权衡,小的编码块大小会有更好的预测但有更多的附信息比特数。
23. 双向预测编码
24. B帧有更好的编码效率
B帧有更好的编码效率
- 新出现的对象参考将来的帧有更好的预测效果
- 前后两个预测的平均值可以减少预测方差
25. 全局运动估计
- 基于全局仿射运动模型
- 预测精度不如基于块的运动估计
- MV数目少,适合简单运动场景的运动估计
视频编解码学习之二:编解码框架,布布扣,bubuko.com
视频编解码学习之二:编解码框架
原文:http://www.cnblogs.com/nsnow/p/3808611.html