H.264或视频编码器通常是如何计算两帧的残差图像的



我一直在努力了解视频编码如何适用于现代编码器,尤其是H264。文献中经常提到,残差帧是根据当前p帧和最后i帧之间的差异创建的(假设在预测中不使用以下帧(。我知道使用了YUV颜色空间(可能是YV12(,并且一个图像从另一个图像"减去",然后形成残差。我不明白的是这个子动作到底是怎么工作的。我不认为这是差异的绝对值,因为这是模糊的。获得这种差异的每像素公式是什么?

减法只是视频编码中的一小步;大多数现代视频编码的核心原理是运动估计,其次是运动补偿。基本上,运动估计过程生成矢量,该矢量显示连续帧中宏块之间的偏移。然而,在这些向量中总是有一些错误。

因此,编码器将同时输出矢量偏移,剩下的就是"残差"。残差不仅仅是两个帧之间的差;这是在考虑运动估计之后的两个帧之间的差异。请参阅维基百科上关于补偿的文章中的"运动补偿差"图像,以清楚地说明这一点——请注意,运动补偿差远小于"哑"残差。

这里有一个不错的PDF,介绍了一些基本知识。

其他一些注意事项:

  • 是的,总是使用YUV,并且通常大多数编码器以YV12或其他色度子采样格式工作
  • 减法必须分别在Y、U和V帧上进行(将它们视为三个单独的通道,所有通道都需要编码——然后减法必须如何进行就变得非常清楚了(。运动估计可以发生也可以不发生在Y、U和V平面上;有时编码器只对Y(亮度(值进行编码,以牺牲质量来节省一点CPU

最新更新