最近在做RDOQ算法优化和硬件系统结构设计,建立其时序模型,估算算法的硬件复杂度。在做这部分工作的同时,博主学习了HEVC算法所有的算法原理,为了便于形成完整的知识体系结构,将相关的知识点框架总结如下:
一、帧间预测
- 利用相邻图像中已经编码的像素生成预测值,生成预测值之后,和原始的值相减,得到残差,后续的变换量化等操作就是基于残差进行处理的。
- 主要原理:为当前的PU在参考帧上寻找一个最佳的匹配块,这个找到的匹配块就可以当作预测值,这个过程就是运动估计。但是注意,运动估计不是一步就位的,它需要在整像素的基础上进行运动补偿(即进行插值),然后进行1/2、1/4像素精度的运动估计,最后得到最优的匹配块
二、相关概念
- ME是运动估计
- MC是运动补偿
- MV是预测块到当前块的向量
- MVD是MV的残差,很多时候,当前块的MV可以从相邻块的MV中预测出来称为MVp,因此为了更加有效的压缩,我们让MVD=MVc-MVp,其中MVc是实际计算出来的MV
- 有两类的帧间预测:
(1)前向参考,P帧只使用前向参考
(2)后向参考,B帧使用前向参考和后向参考 - 运动估计的判定准则:MSE、MAD、MPC、SAD、SATD等
- 插值操作是针对参考像素块进行的
- 加权预测,加权预测表示预测像素来自多个参考帧而不是单一参考帧,通过某一个权值分配公式计算加权像素值