内容摘要:本文是对 ELECARD Video Compression Book 第二章的翻译。本章节介绍了 HEVC 中帧间编码所用技术。
标题:Inter-frame prediction (Inter) in HEVC
链接:https://www.elecard.com/page/inter_frame_prediction_inter_in_hevc
整理人:何冰 原标题:《[强基固本-视频压缩] 第二章:HEVC 中的帧间预测》
概述
混合块视频编码系统中数字视频数据处理的一个关键步骤是消除空间或时间冗余。为消除时间冗余,编码系统会在先前编码的视频图像中搜索与当前正在编码的图像块最相似的图像区域(块)。一旦找到,该区块的样本(像素)将被用作当前区块像素值的估计值或预测值。预测的样本与当前区块的样本相减,得到一个差值信号(残差)。显然,这个残差只包含当前区块中的图像与预测区块之间的差异信息。在 “良好 “预测的情况下,残差信号所包含的信息量要明显少于正在编码的区块,这在很大程度上决定了编码过程中的视频数据压缩比。经过一些额外处理后,残留信号信息被放入编码流中;基本上,它构成了编码的结果。
其他信息也被添加到数据流中,以便解码系统进行预测。是什么样的信息呢?首先,需要为先前编码的视频图像(称为参考图像)提供一些标识符,以便在其中找到预测块。该标识符应附带参考图像中预测块的坐标信息。这些坐标通常是相对于当前正在编码的块的位置指定的,换句话说,就是当前块与预测块的偏移量。因此,一组水平和垂直偏移被称为运动矢量。从本质上讲,运动矢量显示了当前区块与预测区块的偏移程度。
基本的解码过程是利用其标识符在先前编码的图像中找到一个参考图像,根据已知坐标从该图像中获取预测块样本,并将编码流中的残余信号值添加到这些样本中。结果就是解码图像。简单 这个简单的想法早在 1988 年制定 H.261 标准时就已实现。在过去的 25 年中,这个想法又得到了其他一些扩展,从而大大减少了描述残余信号和识别用于预测的参考图像上的区块所需的信息量。以下是这些扩展功能的简要介绍。
非整数运动矢量
很明显,在真实世界的视频序列中,经常会出现一帧图像与另一帧(参考帧)图像偏移非整数样本的情况。在这种情况下,引入非整数运动矢量可以大大提高预测的 “质量”。在非整数偏移的情况下,预测会使用内插(相对于整数位置移动)的参考块样本。这种偏移的幅度和方向由水平和垂直运动矢量分量的分数部分确定。
双向预测
双向数据块预测使用两个参考数据块,每个参考数据块可以位于自己的参考帧中。当前正在编码的数据块的预测值是两个数据块采样值的半和。最常见的情况是,其中一个参考帧来自视频序列中包含当前区块的帧之前的部分,另一个参考帧来自当前帧之后的部分。由于只有之前编码的帧才能用作参考帧,因此引入双向预测后,视频帧的编码顺序就必须与它们在视频中出现的顺序不同(见图 1)。但这里的实际想法是什么?这种双向预测或双预测(以这种方式编码的块被称为 B 块,包含这些块的编码帧被称为 B 帧)如何提高视频数据压缩比,从而提高预测 “质量”?请考虑几种情况,这种改进是显而易见的。
情景 1. 假设编码系统中的非整数运动矢量可以以四分之一像素的精度指定。一个参考帧在视频序列中当前正在编码的帧之前,另一个在当前帧之后(见图 1)。相对于第一个参考帧中的参考块,当前块在水平方向上偏移 -1/6 像素。如果它相对于第二个参考区块沿同一轴线偏移 1/6 像素,那么两个区块采样的算术平均值将等同于计算偏移 1/6 像素采样的线性插值。因此,这种情况下的双向预测相当于提高了指定运动矢量的精度。当然,上述例子有些理想化。不过,即使运动矢量的分数部分在绝对值上不相等,对两个区块的样本进行平均也能提高预测的 “质量”。(为什么示例中使用的是对号偏移?原因很简单,因为其中一个参考帧在当前帧之前,而另一个参考帧在当前帧之后。当帧中的物体连续运动时,当前块中的图像极有可能相对于第一和第二个参考图像向相反的方向偏移)。
情景 2. 假设摄像机拍摄的某个物体随着时间在与视频帧平面平行的平面内旋转。同样,我们在这里有两个参考帧,其中一个比当前正在编码的帧记录得早,另一个记录在较晚的时间点上。很明显,当前区块中的图像将相对于参考图像旋转相反符号的角度。如果角度很小,参考图像的平均值将补偿(可能不完全补偿)这种旋转,从而提高预测 “质量”。
情况 3. 编码块中的图像相对于前面或后面的参考图像没有移动。但是,画面中这一区域的照度会随着时间的推移而变化,例如,图像会变暗。显然,在这种情况下,也可以使用双向预测来实现对图像的近似。
在真实世界的视频序列中,上述情况的任何组合都有可能发生。显然,我们还可以提出更多双向预测可以带来明显改善的例子。
在预测过程中自适应选择图像块的形状、大小和位置
在进行运动补偿时,该选项还可以根据运动物体的形状、大小和位置调整编码块的形状、大小和位置,从而帮助大幅提高预测 “质量”。图 2 显示了这种调整的一个示例。
用作运动补偿参考块源的帧列表
对当前区块进行最佳预测的图像区域并不总是位于编码图像之前或之后的视频序列中最接近的视频帧内。在这种情况下,可以通过在运动补偿处理过程中分析所有先前编码的帧来实现最佳预测。这种方法显然是不切实际的,因为它需要几乎无限的内存容量来存储解码后的图像,并需要几乎无限的时间来搜索图像中的最佳参考块。现代视频编码系统通常采用一种折衷方法。对于每个要编码的视频帧,系统会创建一个有限的视频帧列表,作为参考。然后,编码系统会将该列表内容的相关信息添加到已编码的视频流中。
运动矢量预测
使用相互预测编码的每个块都应附有一个或两个(在双向预测的情况下)运动矢量的信息。有时,这种信息量与描述残留信号所需的信息量相当,甚至超过。为了减少编码流中的运动矢量信息量,现代视频编码系统广泛使用了运动矢量预测方法。使用这些方法时,解码系统会根据已知算法计算预测矢量 mvp(取自运动矢量预测)。然后,只有定义为运动矢量与其预测值之间差值的差值矢量信息才会被添加到编码流中。这些差值矢量被称为 mvd(取自运动矢量差值)。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。