gpt4 book ai didi

MPEG1运动估计/补偿

转载 作者:行者123 更新时间:2023-12-02 05:12:26 33 4
gpt4 key购买 nike

我看到以下关于 MPEG 1 运动估计/补偿的解释,只是想知道它是否正确:

为什么我们不直接编码当前 block 和引用 block 之间的原始差异?因为残差的数字通常会小很多。例如,假设一个物体在图像上加速。 11帧中的x位置是以下数字。12 16 20 25 31 38 48 59 72 84 96原始差异是× 4 4 5 6 7 10 11 13 12 12所以预测值是× × 20 24 30 37 45 58 70 85 96所以残差是x x 0 1 1 1 3 1 2 -1 0

是帧[i+1] = (frame[i] - 帧[i-1]) + 帧[i]的预测,即将前两个引用帧的运动向量添加到最新的引用系?然后我们对预测残差进行编码,即帧[i+1]的实际捕获镜头 - 预测帧[i+1]并将其发送到解码器?

最佳答案

MPEG1 解码(运动补偿)的工作原理如下:

预测和运动矢量将引用帧转变为下一个(当前)帧。以下是计算新帧的每个像素的方法:

对于每个宏 block ,您都有一组预测值(与引用帧的差异)。运动矢量是相对于引用帧的值。

// Each luma and chroma block are 8x8 pixels
for(y=0; y<8; y++)
{
for (x=0; x<8; x++)
{
NewPixel(x,y) = Prediction(x,y) + RefPixel(x+motion_vector_x, y+motion_vector_y)
}
}

对于 MPEG1,您有 I、P 和 B 帧。 I 帧完全进行帧内编码(例如,类似于 JPEG),不引用其他帧。 P 帧使用前一帧(I 或 P)的预测进行编码。 B 帧使用来自两个方向(前一帧和下一帧)的预测进行编码。 B帧的处理使视频播放器变得稍微复杂一些,因为它可能会引用下一帧,因此每个帧都有一个序列号,B帧会导致序列是非线性的。换句话说,您的视频解码器在解码流(上一个、当前和下一个)时需要保留可能的 3 帧。

关于MPEG1运动估计/补偿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953743/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com