索纳塔9二手车价格:帧间预测编码原理(转) - wpf的日志 - 网易博客

来源:百度文库 编辑:偶看新闻 时间:2024/05/09 03:37:56

帧间预测编码原理(转)

h.264和AVS的学习 2009-07-28 14:52:37 阅读874 评论0   字号: 订阅

帧间预测编码是利用视频图像帧间的相关性,即时间相关性,来达到图像压缩的目的,广泛用于普通电视、会议电视、视频电话、高清晰度电视的压缩编码。

在图像传输技术中,活动图像特别是电视图像是关注的主要对象。活动图像是由时间上以帧周期为间隔的连续图像帧组成的时间图像序列,它在时间上比在空间上具有更大的相关性。大多数电视图像相邻帧间细节变化是很小的,即视频图像帧间具有很强的相关性,利用帧所具有的相关性的特点进行帧间编码,可获得比帧内编码高得多的压缩比。对于静止图像或活动很慢的图像,可以少传一些帧,如隔帧传输,未传输的帧,利用接收端的帧存储器中前一帧的数据作为该帧数据,对视觉没有什么影响。因为人眼对图像中静止或活动慢的部分,要求有较高的空间分辨率,而对时间分辨率的要求可低些。这种方法叫帧重复方法,广泛应用于视频电话、视频会议系统中,其图像帧速率一般为1~15帧/秒。

采用预测编码的方法消除序列图像在时间上的相关性,即不直接传送当前帧的像素值,而是传送x和其前一帧或后一帧的对应像素x'' 之间的差值,这称为帧间预测。当图像中存在着运动物体时,简单的预测不能收到好的效果,例如在图04-01-6中当前帧与前一帧的背景完全一样,只是小球平移了一个位置,如果简单地以第k-1帧像素值作为k帧的预测值,则在实线和虚线所示的圆内的预测误差都不为零。如果已经知道了小球运动的方向和速度,可以从小球在k-1帧的位置推算出它在k帧中的位置来,而背景图像(不考虑被遮挡的部分)仍以前一帧的背景代替,将这种考虑了小球位移的k-1帧图像作为k帧的预测值,就比简单的预测准确得多,从而可以达到更高的数据压缩比。这种预测方法称为具有运动补偿的帧间预测。

图 04-01-6 帧间预测与具有运动补偿的帧间预测

具有运动补偿的帧间预测编码是视频压缩的关键技术之一,它包括以下几个步骤:首先,将图像分解成相对静止的背景和若干运动的物体,各个物体可能有不同的位移,但构成每个物体的所有像素的位移相同,通过运动估值得到每个物体的位移矢量;然后,利用位移矢量计算经运动补偿后的预测值;最后对预测误差进行量化、编码、传输,同时将位移矢量和图像分解方式等信息送到接收端。图04-01-7示出了具有运动补偿的帧间预测器的原理框图。

图04-01-7 具有运动补偿的帧间预测器功能框图

在具有运动补偿的帧间预测编码系统中,对图像静止区和不同运动区的实时完善分解和运动矢量计算是较为复杂和困难的。在实际实现时经常采用的是像素递归法和块匹配法两种简化的办法。

像素递归法的具体作法是,仍需通过某种较为简单的方法首先将图像分割成运动区和静止区。在静止区内像素的位移为零,不进行递归运算;对运动区内的像素,利用该像素左边或正上方像素的位移矢量D作为本像素的位移矢量,然后用前一帧对应位置上经位移D后的像素值作为当前帧中该像素的预测值。如果预测误差小于某一阈值,则认为该像素可预测,无需传送信息;如果预测误差大于该阈值,编码器则需传送量化后的预测误差、以及该像素的地址,收、发双方各自根据量化后的预测误差更新位移矢量。由此可见,像素递归法是对每一个像素根据预测误差递归地给出一个估计的位移矢量,因而不需要单独传送位移矢量给接收端。

块匹配法是另一种更为简单的运动估值方法。它将图像划分为许多子块,并认为子块内所有像素的位移量是相同的,这意味着将每个子块视为一个“运动物体”。对于某一时间t,图像帧中的某一子块如果在另一时间t-t1的帧中可以找到若干与其十分相似的子块,则称其中最为相似的子块为匹配块,并认为该匹配块是时间t-t1的帧中相应子块位移的结果。位移矢量由两帧中相应子块的坐标决定。

考虑到一定时间间隔内物体可能的运动速度、运动范围和匹配搜索所需的计算量,在匹配搜索时一般仅在一个有限范围内进行。假设在给定时间间隔内最大可能的水平和垂直位移为d hd v个像素,则搜索范围SR为

  

其中M、N为子块的水平和垂直像素数。

在块匹配方法中需要解决两个问题:一是确定判别两个子块匹配的准则;二是寻找计算量最少的匹配搜索算法。判断两个子块相似程度的准则可以利用两个块间归一化的二维互相关函数、两子块间亮度的均方差MSE或两子块间亮度差绝对值的均值MAD等。通过对不同判别准则的比较研究表明,各种判别准则对位移矢量的估值精度影响差别不是很大。由于MAD准则的计算不含有乘法和除法运算而成为最常使用的匹配判别准则。MAD准则定义如下:

其中Xk和Xk-1分别表示图像在第k帧和第k-1帧的像素值。当MAD最小时,表示两个子块匹配。

对于匹配搜索算法,最简单和直接的方法就是全搜索方式,即将第k-1帧中的子块在整个搜索区内逐个像素移动,每移动一次计算一次判决函数。总的移动次数为 (2d h + 1)(2d v + 1)。当d h = d v = 6时,总的计算次数为169。显然,全搜索的运算量是相当大的。为了加快搜索过程,人们提出了许多不同的搜索方法,其中应用较广的有二维对数法、三步法、共轭方向法和正交搜索法。这几种方法都基于如下的假设:当偏离最小误差方向时,判决函数是单调上升的,搜索总沿着判决函数值减小的方向进行。上述几种方案所需的搜索步骤和计算点数略有差异,但基本思路是一致的。

通过上面介绍的两种运动矢量估值方法可以看出,像素递归法对每一个像素给出一个估计的位移矢量,因而对较小面积物体的运动估值较为精确。但像素递归法在估值时需要进行叠代运算,从而存在着收敛速度和稳定性问题。块匹配法对同一子块内位移量不同的像素只能给出同一个位移估值,限制了对每一像素的估值精度。但对于面积较大的运动物体而言,采用块匹配法的预测要比采用像素递归法的预测效果好。另外,从软硬件实现角度看,块匹配算法相对简单,在实际活动图像压缩编码系统中得到较为普遍的应用。