Motion Vectors和DCT残差,它们是相关的还是独立的?

Motion Vectors and DCT residuals, are they related or independent?

我正在研究一种新技术,该技术使用来自预编码视频的已编码 H264 运动向量。

我需要知道运动向量和残差之间的关系。我需要一些在其他地方找不到答案的非常具体的答案:

  1. 运动矢量是向前还是向后?我的意思是,向量是否指示当前 4x4 或 8x8、8x4 .... 块将在下一帧中的位置 (向前)。或者恰恰相反? (在块中指示该块来自哪里),(向后)

  2. 如果一个块有多个引用(我不知道这是否可能)。这些引用是如何加在一起的?意思是?加权?

  3. 如何补偿每个块(4x8、8x4 等)的残差?忽略子块,只将图像分成 8x8 块?

我的最终目标是从视频中了解每个运动矢量的 "accuracy"。如果 DCT 残差是每个块,我只能通过向后预测来做到这一点。在那种情况下,我可以通过测量该块的残余误差量来测量运动矢量估计的准确性。

提前致谢!! PD:读完800页的H264可不是件容易的事....

H264 标准是您的朋友。还可以得到 Ian Richardson 的书,比标准书更具可读性(但只有一点点:)

"Are the motion vectors forward, or backward?" - 他们落后了。一个区块的 MV 指向该区块的来源。

"In the case a block has multiple references (I don't know if that is even possible). How are those references added together?" - 有可能,检查 x264 的 weightb 和 weightp 选项。最多可以有两个引用,显式权重在流中编码(我 认为 作为邻居权重的增量,所以通常为零 - 但不要引用我的话;我也是认为是否使用权重是某处的标志,如果不使用权重默认相等)

"How is the residual error being compensated" - 取决于宏块分割模式和变换大小。 MV 用于每个分区,残差用于平铺到分区中的变换大小(因此,如果将 16x16 分成两个 16x8 并且变换为 8x8,则每个分区获得两个变换;如果变换为 4x4,则每个分区获得(16 /4)x(8/4)=8 变换).

对于实验,您可以更改编码器设置以关闭 B 帧和加权 P 帧,并将分区模式限制为不分区(即仅限 16x16)。这允许更简单的方法来尝试不同的运动矢量:)