前言
在编码的时候,为了选择最优的预测方式,需要计算原始像素和重建像素的失真。重建像素需要经过残差计算、变换、扫描、量化以及反量化、反扫描、反变换等一些列复杂的操作才能得到。对于需要大量的预测编码这种方式开销太大了。因此在编码过程中会有多种计算代码的方法对预测进行预筛选。
几种失真计算方法定义
- SSE/SSD —— 平方和误差
- SAD —— 绝对值误差
SAD放映的是时域上的误差,并不能反映编码后码流的大小 - SATD —— 哈达玛变换绝对值误差
SATD可以简单的看做变换后的频域的关系,一定程度上反映了码流的大小,但是计算相对SAD复杂
编码不同阶段的使用
帧内预测
- 首先会用sad或satd计算出预测像素和原始像素的代价,选出最优的几个
- 然后对选择出来的几个预测角度,分辨经过变换量化等操作后算出重建像素,用SSE计算重建像素和原始像素的失真
帧间预测
- 首先在运动估计的时候,会使用sad或satd计算出预测像素和原始像素的代价。在实际中,经常会使用sad来计算代价,因为一方面sad不容易试运动估计陷入局部最优,另一方面,运动搜索的范围比较大,计算量大,使用sad可以降低计算量
- 选出最合适的帧间预测模式后,经过运动补偿、变换、量化一些列操作后,算出重建像素,用SSE计算重建像素和原始像素的失真