H.264或视频编码器一般如何计算两帧的残差图像?

clo*_*ven 5 compression video-encoding h.264

我一直试图理解视频编码如何适用于现代编码器,特别是H264.在文档中经常提到残差帧是根据当前p帧和最后一个i帧之间的差异创建的(假设在预测中未使用以下帧).我知道使用YUV颜色空间(可能是YV12),并且一个图像从另一个图像"减去"然后形成残差.我不明白的是这种减法究竟是如何运作的.我不认为这是差异的绝对值,因为这将是模棱两可的.获得这种差异的每像素公式是什么?

kid*_*jan 6

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

那么会发生什么呢?编码器会输出两个矢量偏移量,而"残差"就是剩下的.将残余的只是两个帧之间的差值; 它是考虑运动估计两帧之间的差异.请参阅维基百科关于补偿的文章中的"运动补偿差异"图像,以清楚地说明这一点 - 请注意,运动补偿差异远小于"哑"残差.

这是一个体面的PDF,它涵盖了一些基础知识.

其他几点说明:

  • 是的,始终使用YUV,通常大多数编码器工作在YV12或其他一些色度二次采样格式
  • 减法必须分别在Y,U和V帧上进行(将它们视为三个独立的通道,所有这些都需要进行编码 - 然后很明显减法必须如何发生).在Y,U和V平面上可能会或可能不会发生运动估计; 有时编码器只在Y(亮度)值上进行,以牺牲质量为代价来节省一点CPU.

  • PDF已经失踪了404. (4认同)