HEVC算法和体系结构:预测编码之帧间预测

预测编码之帧间预测(Inter-Picture Prediction)

 

        帧间预测是指利用视频时间域相关性,使用临近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。由于视频序列通常包括较强的时域相关性,因此预测残差值接近于0,将残差信号作为后续模块的输入进行变换、量化、扫描及熵编码,可实现对视频信号的高效压缩。

 

一、帧间预测编码原理

 

        目前主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术,如下图所示,其基本原理为:当前图像的每个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计ME(Motion Estimation)。其中用于预测的图像称为参考图像,参考块到当前像素块的位移称为运动向量MV(Motion Vector),当前像素块与参考块的差值称为预测残差(Prediction Residual)。将残差信号作为后续模块的输入进行变换、量化、扫描及熵编码,可实现对视频信号的高效压缩。根据运动矢量MV,将前一帧(或前几帧、后几帧)的运动位移块图像做相应的位移得到当前帧当前块的运动预测估计值,这样就可以得到当前帧的帧间预测帧,这一过程称为运动补偿MC(Motion Compensation)。

 

        需要注意的是:运动估计得到的运动矢量不只用于运动补偿,而且还被传送至解码器中,解码器根据运动矢量经过运动补偿可以得到和编码端完全相同的预测图像,从而实现正确图像解码。

        其实,帧内预测和帧间预测有很多类似的地方,只不过帧内预测所采用的参考像素来源于当前帧已编码的像素值,而帧间预测的参考像素来源于已编码的前一帧(或前几帧、后几帧)。类似于帧间预测中编码器需要将运动矢量MV传给解码端,解码端根据运动矢量可以获取和编码端完全相同的预测块;在帧内编码模式下,编码器需要把实际采用的帧内预测模式信息传给解码器,解码端可以根据这个预测模式信息获得与编码器完全相同的帧内预测块。由此可见,运动矢量和帧内预测模式有着完全相同的重要性,它们都在宏块头中用特定的语法元素表示。

 

二、帧间预测编码的关键技术

 

        在帧间预测编码过程中,最重要的操作就是运动估计、MV预测以及多参考帧和加权预测,下面对它们一一进行分析。

 

1、运动估计

 

        所谓运动估计ME就是指提取当前图像运动信息的过程。在运动估计中,常见的运动表示法主要包括:基于像素的运动表示法、基于区域的运动表示法和基于块的运动表示法。

(1)、基于像素的运动表示法:直接为每个像素指定一个运动向量。此法普遍适用,但是需要估计出大量的未知量,而且其解通常不能反映场景中物体真实的运动情况,此外,该方法需要为每一个像素附加传送一个MV,数据量很高。

(2)、基于区域的运动表示法:把一幅图像分为多个区域,使得每个区域恰好表征了一个完整的运动物体。此法默认每个区域中的像素具有相同的运动形式,适用于包含多个运动物体的场景,然而,运动物体的形状往往是不规则的,因此区域划分需要大量的信息来表征,而且准确的划分方式需要大量的计算才能确定,因而基于区域的表示法在实际中较少使用。

(3)、基于块的运动表示法:将图像分成不同大小的像素块,只要块大小合适,则各个块的运动形式可以看成是统一的,同时每个块的运动参数可以独立地进行估计。此法兼顾了运动估计精度和复杂度,在二者之间进行了一个折中,因此该方法是视频编码国际标准中的核心技术。

 

        基于块的运动估计方法有三个核心问题需要特别注意。一是运动估计的准则;二是搜索算法;三是亚像素精度运动估计。

 

1.1、运动估计准则

 

        运动估计的目的是为当前块在参考图像中寻找一个最佳匹配块,因此需要一个准则来判定两个块的匹配程度。常用的匹配准则主要有最小均方误差MSE(Mean Square Error)、最小平均绝对误差MAD(Mean Absolute Difference)和最大匹配像素数MPC(Matching-Pixel Count)等。

 

        为了简化计算,一般用绝对误差和SAD(Sum of Absolute Difference)来代替MAD。此外,最小变换域绝对误差和SATD(Sum of Absolute Transformed Difference)也是一种性能优异的匹配准则。

 

1.2、搜索算法

 

        在某些应用环境下,视频编码传输对实时性要求较高,而运动估计的运算复杂度通常较高,因此高性能、低复杂度的运动搜索算法显得尤为重要。

 

        常用的搜索算法有:全搜索算法、二维对数搜索算法、三步搜索算法等。全搜索算法是指对搜索窗内所有可能的位置计算两个块的匹配误差,所得的最小匹配误差对应的MV一定是全局最优的MV。

 

        然而,全搜索算法复杂度极高,无法满足实时编码。除全搜索算法外,其余算法统称为快速搜索算法,快速搜索算法具有速度快的优点,但是其搜索过程容易落入局部最优点,从而无法找到全局最优点。为了避免这一现象的发生,需要在搜索算法中的每一个步骤尽量搜索更多的点,相关的算法有JM中的UMHexagonS算法以及HM中的TZSearch算法。

 

1.3、亚像素精度运动估计

 

        由于自然界物体运动具有连续性,因此相邻两幅图像之间的运动不一定以整像素为基本单位,而有可能以半像素、1/4像素甚至是1/8像素为单位。此时若仅仅使用整像素精度运动估计会出现匹配不准确的问题,导致运动补偿残差幅度较大,影响编码效率。

 

        为了解决上述问题,应将运动估计的精度提升到亚像素级别,这可以通过对参考图像像素点进行插值来实现。1/4像素精度相比于1/2像素精度时的编码效率有明显地提高,但是1/8像素精度相比于1/4像素精度时的编码效率除了高码率情况以外并没有明显地提升且1/8像素精度运动估计更为复杂。因此现有标准H.264以及HEVC都使用了1/4像素精度进行运动估计。

 

2、MV预测技术

 

        在大多数图像和视频中,一个运动物体可能会覆盖多个运动补偿块,因此空间域相邻块的运动向量具有较强的相关性。若使用相邻已编码块对当前块MV进行预测,将二者差值进行编码,则会大幅度节省编码MV所需的比特数。同时,由于物体运动具有连续性,因此相邻图像同一位置的MV也具有一定的相关性。在H.264中就使用了空域和时域两种MV预测方式。

 

       在HEVC中,为了充分利用空域和时域相邻块的MV对当前块的MV进行预测以便节省MV的编码比特数,HEVC在MV的预测方面提出了两种新技术:Merge技术和AMVP(Advanced Motion Vector Prediction)技术。

 

       Merge技术和AMVP技术都使用了空域和时域MV预测的思想,通过建立候选MV列表,选取性能最优的一个作为当前PU的预测MV,二者的区别主要表现在以下两个方面。

(1)、Merge可以看出是一种编码模式,在该模式下,当前PU的MV直接由空域或时域上临近的PU预测得到,不存在MVD;而AMVP可以看成一种MV预测技术,编码器只需要对实际MV与预测MV的差值进行编码,因此是存在MVD的;

(2)、二者候选MV列表长度不同,构建候选MV列表的方式也有区别。

 

2.1、Merge技术

 

        Merge模式会为当前PU建立一个MV候选列表,列表中存在5个候选MV及其对应的参考图像。通过遍历这5个候选MV,并进行率失真代价的计算,最终选取率失真代价最小的一个作为该Merge模式的最优MV。若边解码端依照相同的方式建立该候选列表,则编码器只需要传输最优MV在候选列表中的索引即可,这样大幅度节省了运动信息的编码比特数。Merge模式建立的MV候选列表中包含了空域和时域两种情形,而对于B Slice则包含组合列表的方式。

 

2.2、AMVP(Advanced Motion Vector Prediction)技术

 

        AMVP利用空域、时域上运动矢量的相关性,为当前PU建立了候选预测MV列表。编码器从中选出最优的预测MV,并对MV进行差分编码;解码端通过建立相同的列表,仅需要运动矢量残差(MVD)与预测MV在该列表中的序号即可算出当前PU的MV。

 

        类似于Merge模式,AMVP候选MV列表也包含空域和时域两种情形,不同的是AMVP列表长度仅为2。

 

3、多参考图像及加权预测

 

        对于某些场景,如物体周期性变化等,多参考帧可以大幅提高预测精度。早期的视频编码标准只支持单个参考图像,H.263+开始支持多参考图像预测技术,而H.264最多支持15个参考图像,随着参考数目的增加,编码性能也随之提高,但是提高的速度日益缓慢,因此为了权衡编码效率和编码时间,一般采用4~6个参考图像。

 

       此外,H.264还使用了加权预测技术。加权预测表示预测像素可以用一个(适用于P Slice情形)或两个(适用于B Slice)参考图像中的像素通过与加权系数相乘得出。HEVC沿用了H.264中的加权预测技术并做了进一步的发展。

时间: 2024-10-28 18:48:53

HEVC算法和体系结构:预测编码之帧间预测的相关文章

HEVC算法和体系结构:预测编码之帧内预测

预测编码之帧内预测(Intra-Picture Prediction)         预测编码(Prediction Coding)是视频编码的核心技术之一,指利用已编码的一个或几个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码.视频编码器对预测后的残差而不是原始像素值进行变换.量化.熵编码,由此大幅度提高编码效率.         对于视频信号来说,一帧图像内临近像素之间有着较强的空间相关性,即空域冗余:相邻图像之间也有很强的相关性,即时域冗余.

HEVC算法和体系结构:编码框架

编码框架 2013年4月13日HEVC/H.265被ITU-T正式接受为国际标准.类似以往的国际标准,HEVC仍旧采用"预测+变换"的混合编码框架,如下图所示,包括变换.量化.熵编码.帧内预测.帧间预测以及环路滤波等模块.在HEVC中,几乎每个模块都引入了新的编码技术. 本博文主要介绍HEVC编码框架,从整体结构出发介绍HEVC各个模块的大致功能以及相应的特色编码技术. HEVC的编码框架主要包括变换.量化.熵编码.帧内预测.帧间预测以及环路滤波等模块.下面依次对各个模块做简单介绍.

HEVC算法和体系结构:编码结构之编码时的分层处理架构

编码结构之编码时的分层处理架构         本博文主要介绍HEVC编码结构中的"编码时的分层处理架构".HEVC编码结构的主要目的就是为了各种应用下操作的灵活性以及数据损失的鲁棒性(所谓"鲁棒性",是指控制系统在一定的参数摄动下,维持其它某些性能的特性).从GOP(Group of Pictures)至Slice,从Slice至SS(Slice Segment),从SS至CTU(Coding Tree Unit),从CTU至CU(Coding Unit)的过程就

HEVC算法和体系结构:环路滤波技术

环路滤波(In-Loop Filtering)技术 类似于以往的视频编码标准,HEVC仍采用基于块的混合编码框架,一些失真效应仍然存在,如方块效应.振铃效应.颜色偏差以及图像模糊等等.为了解决这些问题,HEVC中采用了环路滤波技术,它其实是一种用于解码端的后处理滤波技术,主要包括去块滤波(Deblocking Filter,DBF)和样点自适应补偿(Sample Adaptive Offset,SAO).其中,DBF的作用与H.264类似,主要是去除块效应,但是相比于H.264,其决策与滤波过程

x264代码剖析(十三):核心算法之帧间预测函数x264_mb_analyse_inter_*()

x264代码剖析(十三):核心算法之帧间预测函数x264_mb_analyse_inter_*()           帧间预测是指利用视频时间域相关性,使用临近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的.由于视频序列通常包括较强的时域相关性,因此预测残差值接近于0,将残差信号作为后续模块的输入进行变换.量化.扫描及熵编码,可实现对视频信号的高效压缩.           本文将重点讨论基本档次支持的P片帧间预测工具以及主要和扩展档次支持的B片和加权预测等帧间预测工具,最

HEVC算法和体系结构:HEVC概括性介绍

1.HEVC高级语法:提供了一个稳健.灵活和可扩展的框架,用于携带编码的视频及其相关信息,确保在不同的应用环境中,视频内容都能够以最有效的方式传输. 2.HEVC块结构和并行特性:确保了HEVC编码设计的基本结构. 3.HEVC帧内预测:在之前的编码标准中已经取得实质性的技术进步,即使是静态场景. 4.HEVC帧间预测:视频编码的核心问题,高效的帧间预测对HEVC的强大性和灵活性起着决定性的作用. 5.HEVC变换和量化:HEVC拥有更加灵活和自适应地变换和量化设计. 6.HEVC环内滤波器:包

HEVC算法和体系结构:资源获取和章节安排

从今天开始,将陆续更新自己学习总结的最新版HEVC著作<High Efficiency Video Coding (Hevc): Algorithms and Architectures>中的相关知识点,原书英文电子版需要的可在下面评论留言. 本书封面如下: 章节安排如下:1~9章主要讲述HEVC的算法和工具,10和11两章主要主要讲述构建HEVC硬件的体系结构.

HEVC算法和体系结构:编码结构之编码完后码流的语法架构

编码结构之编码完后码流的语法架构         本博文主要介绍HEVC编码结构,从编码完后码流的语法架构这一方面进行描述.         在码流结构方面,HEVC采用了类似于H.264的分层结构,将属于GOP层.Slice层中共用的大部分语法游离出来,组成序列参数集SPS(Sequence Parameter Set)和图像参数集PPS(Picture Parameter Set).此外,为了兼容标准在其他应用上的扩展,例如可分级视频编码器.多视点视频编码器,HEVC的语法架构中增加了视频参

如何把视频编码中的帧间预测编码用于静止图像编码中?

问题描述 如何把视频编码中的帧间预测编码用于静止图像编码中? 在对静止图像进行压缩时,能够像对视频编码中的帧间预测编码一样,输入两幅相似图像进行编码,以提高其压缩率. 这个如何实现呢? 解决方案 静止图像不存在帧间预测,因此不用这个技术