视频编解码的一些概念

一、运动估计、运动矢量、运动补偿、运动预测、预测误差(差值)

运动估计、运动矢量、运动补偿、运动预测、预测误差(差值)这五个概念及其关系

运动估计->运动矢量->运动预测(参考帧中提取预测值,编码时 原始值-预测值=差值)-> 运动补偿(解码时 差值+预测值=原始值

PS:基础术语概念:音视频基础知识

概念解释

  • 运动估计:看足球比赛视频时,你发现画面里的足球从左边移到了右边。运动估计就是你去观察和判断足球是怎么从左边的位置跑到右边位置的过程,即分析视频里的物体(比如足球、球员)从这一帧到下一帧是怎么移动的。

  • 运动矢量:想象足球从球场的A点移动到了B点,有一个箭头从A指向B,这个箭头的方向和长度就代表了足球的运动矢量。在视频编码中,运动矢量就是用来表示图像里的某个小块(比如足球所在的那一块画面)从这一帧到上一帧或者下一帧移动的方向和距离的数据。

  • 运动补偿:还是以足球比赛视频为例,当知道足球上一帧在左边,也知道它移动的情况后,就可以根据这些信息把足球应该出现在右边的画面给“补充”完整,让足球的运动看起来是连贯的,不会突然消失或出现。在视频编码里,就是根据相关信息把当前帧的画面内容给补充好,使视频播放流畅。

  • 运动预测:在看足球比赛时,你根据足球当前的运动方向、速度,以及球员的传球习惯等,猜测足球下一时刻可能会到哪个位置,这就是运动预测。在视频编码中,就是根据前面的视频帧信息,去猜测当前帧里的物体大概会在什么位置。

  • 预测误差:你预测足球会到C点,但实际上它到了D点,C点和D点之间的差距就是预测误差。在视频编码里,就是运动预测出来的结果和实际的当前帧画面之间的差异。

相互关系

  • 运动估计和运动矢量:运动估计是为了找出运动矢量,就像你观察足球的运动是为了确定那个从A点到B点的箭头(运动矢量)。运动矢量是运动估计的结果,它明确地表示了足球是怎么运动的。

  • 运动估计和运动预测:运动估计是基于已经出现的画面来判断物体运动情况,运动预测是根据已有的信息去猜测未来的画面中物体的情况。运动估计是运动预测的基础,只有先知道足球现在是怎么运动的,才能更好地预测它接下来会怎么运动。

  • 运动预测和预测误差:运动预测得出的是对画面的一个预估结果,而预测误差是用来衡量这个预估结果和实际画面之间差了多少。预测误差可以帮助我们判断运动预测的准确性,如果误差大,说明预测得不太准,可能需要调整预测的方法或参数。

  • 运动补偿和运动矢量:运动补偿需要依靠运动矢量来完成。就像知道了足球的运动矢量,知道它从哪里来、要到哪里去,才能把它出现在新位置的画面给补出来,让足球的运动看起来是连续的。

  • 运动补偿和预测误差:运动补偿要根据运动预测的结果来补画面,如果预测误差大,补出来的画面可能就和实际应该有的画面差别大,会影响视频的质量。所以预测误差也能反映运动补偿的效果好不好,如果误差小,运动补偿补出来的画面就更接近真实画面,视频看起来就更流畅、更准确。

二、运动估计和运动预测的区别

运动估计和运动预测确实有相似之处,所以容易让人感觉差不多,但实际上它们在概念、侧重点、方法等方面是有区别的,以下是具体说明:

概念不同

  • 运动估计:是对视频中物体或图像块已经发生的运动进行检测和量化的过程,简单来说,就是去分析和确定视频里的东西刚刚是怎么动的,是基于当前已经呈现出来的画面帧来进行的操作。

  • 运动预测:是根据已有的信息和模型,对视频中物体或图像块在未来的运动状态或位置进行推测的过程,更偏向于去猜测接下来物体或图像块会怎么动,是面向还没有出现的画面帧做的预估。

侧重点不同

  • 运动估计:重点在于准确地找出当前帧与参考帧之间物体的实际运动情况,强调对已经存在的运动状态的精确描述和测量,关注的是当下运动的具体细节,比如物体移动的距离、方向等具体数据。

  • 运动预测:更侧重于对未来可能出现的运动趋势进行判断,它不一定需要非常精确地知道具体的运动细节,而是给出一个大概的运动方向和可能性范围,更关注宏观的趋势和可能性。

方法不同

  • 运动估计:常采用基于块的匹配算法,将当前帧划分为多个小块,然后在参考帧中搜索与当前帧小块最匹配的块,通过计算块之间的相似度等方法来确定运动矢量,以此表示物体的运动情况。

  • 运动预测:常使用基于模型的方法,比如根据物体之前的运动轨迹建立一个运动模型,或者利用机器学习算法,根据大量的历史数据和当前的一些特征来预测未来的运动状态。

举个例子,在一段篮球比赛视频中,运动估计就是分析篮球从这一帧到上一帧是如何从球员A的手中传到球员B的手中的,具体移动了多远、方向如何等。而运动预测则是根据球员B拿到球后的动作、场上局势以及球员的习惯等,推测篮球接下来可能会被投向篮筐的哪个位置,是一种对未来情况的预判。

三、运动估计和运动预测的先后顺序

在视频编码中,运动估计在前,运动预测在后,下面为你详细解释它们的先后顺序及原因:

运动估计

  • 定义:运动估计是在参考帧中寻找与当前帧中某一图像块最匹配位置的过程。在视频序列里,由于相邻帧之间物体通常会发生运动,为了确定这种运动,编码器会对当前帧进行分块处理,然后在参考帧(对于P帧一般是前面的I帧或P帧,对于B帧是前后的I帧或P帧)中搜索与每个图像块最相似的区域。

  • 作用:通过运动估计,编码器能够得到描述图像块从参考帧位置移动到当前帧位置的运动矢量。例如,在一个拍摄行人行走的视频中,对于当前帧中行人腿部的一个图像块,编码器会在参考帧中找到最匹配的腿部图像块位置,从而确定该图像块的运动矢量。这个运动矢量记录了图像块在两帧之间的位移信息,是后续进行运动预测的基础。

运动预测

  • 定义:运动预测是利用运动估计得到的运动矢量,从参考帧中提取对应位置的像素数据,以此来预测当前帧中图像块的内容。简单来说,就是根据运动矢量所指示的位置,从参考帧中“复制”相应的像素,作为当前帧图像块的预测值。

  • 作用:有了预测值后,将当前帧图像块的实际像素值与预测值相减,就能得到残差。由于预测值通常与实际值较为接近,残差的数据量相对较小,这样在编码时只需要对残差和运动矢量进行编码,而不用对整个图像块的像素进行编码,大大减少了数据量,提高了编码效率。

先后顺序的原因

运动估计是获取运动矢量的过程,只有先通过运动估计确定了图像块的运动矢量,才能利用这些运动矢量进行运动预测,从参考帧中提取预测数据。如果没有运动估计得到的运动矢量,运动预测就无法知道应该从参考帧的哪个位置提取像素数据,也就无法进行有效的预测。所以,运动估计是运动预测的前提,必须先完成运动估计,才能进行运动预测。

四、运动补偿与编解码的关系

运动补偿既可以在编码端进行,也可以在解码端进行,但两个阶段的目的和具体操作有所不同。下面为你详细介绍:

编码端的运动补偿

  • 操作过程:在编码P帧或B帧时,首先通过运动估计得到运动矢量。然后,基于这些运动矢量,从参考帧中提取对应位置的像素数据,这一提取过程就是编码端的运动补偿。得到预测像素数据后,将当前帧的原始像素值与预测值相减,从而得到残差。

  • 目的:编码端运动补偿的主要目的是生成残差数据。由于预测值往往和原始像素值较为接近,残差的数据量通常远小于原始像素数据量。编码器只需对残差和运动矢量进行编码,而不是对整帧的所有像素进行编码,这样能有效减少数据冗余,提高编码效率和压缩比。例如在一个包含动态物体的视频中,通过运动补偿得到的残差数据量大幅减少,便于后续存储和传输。

解码端的运动补偿

  • 操作过程:解码器接收到编码后的运动矢量和残差数据后,首先根据运动矢量从已解码的参考帧中提取预测像素数据,这一步和编码端的运动补偿原理相同。接着,将提取的预测像素数据与接收到的残差数据相加,从而重建出当前帧的像素值。

  • 目的:解码端运动补偿的目的是恢复出原始的视频帧。通过运动补偿和残差相加的操作,解码器可以准确地重构出P帧或B帧的完整画面,让观众能够观看到流畅、连贯的视频内容。

综上所述,运动补偿在编码端和解码端都发挥着重要作用,编码端用于生成可高效编码的残差数据,解码端用于重建原始视频帧。

五、与视频帧的关系(主要是P帧和B帧)

运动估计、运动矢量、运动补偿、运动预测、预测误差这些概念主要是针对P帧和B帧的帧间编码而言的,但严格来说与I帧有一定的关联,不过关联非常小。

与I帧无关的方面

1. 核心概念本质上不适用
  • 运动估计、运动矢量和运动预测:这些概念是基于视频序列中相邻帧之间物体的运动变化。运动估计是在参考帧中寻找与当前帧中某一区域最匹配的位置,运动矢量用于描述该区域从参考帧到当前帧的位移,运动预测则是利用运动矢量根据参考帧来预测当前帧。而I帧是独立编码的帧,不依赖其他帧进行编码,不存在帧间物体运动的情况,所以不需要进行运动估计、确定运动矢量以及基于运动的预测。

  • 运动补偿:运动补偿是根据运动矢量从参考帧中提取像素数据来重建当前帧的过程。由于I帧没有参考其他帧,也就不存在从其他帧获取像素数据进行补偿的操作。

2. 编码过程不涉及

在I帧的编码过程中,主要采用帧内预测,即利用当前帧内已编码的相邻像素信息来预测待编码像素的值,整个过程围绕当前帧内部的空间相关性展开,不会运用到上述基于帧间运动的概念。

与I帧有微弱关联的方面

预测误差
  • 概念广义相似:虽然I帧不涉及帧间的运动预测误差,但在I帧的帧内预测过程中,同样存在预测误差的概念。在I帧进行帧内预测时,编码器会尝试多种预测模式,用每种模式得到预测值,再将预测值与原始像素值相比较,差值就是预测误差。编码器会选择使预测误差最小的模式作为最终的预测模式。从这个角度看,预测误差在I帧和P、B帧中都有体现,只是应用场景不同,一个是帧内,一个是帧间。

  • 作为参考帧的间接影响:当I帧作为后续P帧和B帧的参考帧时,虽然I帧本身编码不涉及运动相关概念,但它的质量会间接影响P帧和B帧运动补偿后的预测误差。如果I帧编码质量高,在后续P帧和B帧以其为参考进行运动补偿时,可能会使预测误差相对较小;反之,若I帧质量差,可能会导致后续帧运动补偿后的预测误差增大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值