运动补偿与运动估计

主要内容:

  1. 帧内预测、帧间预测

  2. 运动补偿

  3. 运动估计

一、H.264的块、帧内预测、帧间预测

H.264/
AVC标准中的基本预测技术是基于块,像素块预测编码包括帧内(intra)块预测和帧间(inter)块预测,在图像信号压缩编码中,由于亮度信号和色差信号是分别进行处理的,因此,预测又可分亮度信号预测和色差信号预测。

帧内块预测是利用相邻像素的相关性,通过当前像素块的左边和上边的像素进行预测,只需对实际值和预测值的差值进行编码。

帧间预测是利用先前已编码帧的图像作为参考图像对当前图像进行预测的一种方式。它把参考图像的抽样点通过运动矢量的补偿作为当前图像抽样值的参考值。

二、运动补偿与运动估计

帧间预测中所需要的两个主要技术就是运动估计和运动补偿。

  1. 运动补偿

    1.1 基本概念:

运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。包括全局运动补偿和分块运动补偿两类。

运动补偿是一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)
差别的方法,具体来说是描述前面一帧(相邻在这里表示在编码关系上的前面,在播放顺序上未必在当前帧前面)的每个小块怎样移动到当前帧中的某个位置去。这种方法经常被视频压缩/视频编解码器用来减少视频序列中的空域冗余。它也可以用来进行去交织(deinterlacing)的操作。

最早的运动补偿的设计只是简单的从当前帧中减去参考帧,从而得到通常含有较少能量(或者成为信息)的"残差",从而可以用较低的码率进行编码。

稍微复杂一点的设计是估计一下整帧场景的移动和场景中物体的移动,并将这些运动通过一定的参数编码到码流中去。这样预测帧上的像素值就是由参考帧上具有一定位移的相应像素值而生成的。这样的方法比简单的相减可以获得能量更小的残差,从而获得更好的压缩比。

1.2
I帧、P帧、B帧的运动补偿:

通常,图像帧是一组一组进行处理的。每组的第一帧(通常是第一帧)在编码的时候不使用运动估计的办法,这种帧称为帧内编码帧(Intra
frame)或者I帧。该组中的其它帧使用帧间编码帧(Inter
frame),通常是P帧。这种编码方式通常被称为IPPPP,表示编码的时候第一帧是I帧,其它帧是P帧。

在进行预测的时候,不仅仅可以从过去的帧来预测当前帧,还可以使用未来的帧来预测当前帧。当然在编码的时候,未来的帧必须比当前帧更早的编码,也就是说,编码的顺序和播放的顺序是不同的。通常这样的当前帧是使用过去和未来的I帧或者P帧同时进行预测,被称为双向预测帧,即B帧。这种编码方式的编码顺序的一个例子为
IBBPBBPBBPBB。

1.3
全局运动补偿

在全局运动补偿中,运动模型基本上就是反映摄像机的各种运动,包括平移,旋转,变焦等等。这种模型特别适合对没有运动物体的静止场景的编码。全局运动补偿有下面的一些优点:
1)该模型仅仅使用少数的参数对全局的运行进行描述,参数所占用的码率基本上可以忽略不计。 2)该方法不对帧进行分区编码,这避免了分区造成的块效应。
3)在时间方向的一条直线的点如果在空间方向具有相等的间隔,就对应了在实际空间中连续移动的点。其它的运动估计算法通常会在时间方向引入非连续性。

但缺点是,如果场景中有运动物体的话,全局运动补偿就不足以表示了。这时候应该选用其它的方法。

1.4
分块运动补偿

在分块运动补偿中,每帧被分为若干像素块
(在大多数视频编码标准,如MPEG中,是分为16x16的像素块)。从参考帧的某个位置的等大小的块对当前块进行预测,预测的过程中只有平移,平移的大小被称为运动矢量。

对分块运动补偿来说,运动矢量是模型的必要参数,必须一起编码加入码流中。由于运动矢量之间并不是独立的(例如属于同一个运动物体的相邻两块通常运动的相关性很大),通常使用差分编码来降低码率。这意味着在相邻的运动矢量编码之前对它们作差,只对差分的部分进行编码。使用熵编码对运动矢量的成分进行编码可以进一步消除运动矢量的统计冗余(通常运动矢量的差分集中于0矢量附近)。

运动矢量的值可以是非整数的,此时的运动补偿被称为亚像素精度的运动补偿。这是通过对参考帧像素值进行亚像素级插值,而后进行运动补偿做到的。最简单的亚像素精度运动补偿使用半像素精度,也有使用1/4像素和1/8像素精度的运动补偿算法。更高的亚像素精度可以提高运动补偿的精确度,但是大量的插值操作大大增加了计算复杂度。

分块运动补偿的一个大缺点在于在块之间引入的非连续性,通常称为块效应。当块效应严重时,解码图像看起来会有像马赛克一样的效果,严重影响视觉质量。另外一个缺点是,当高频分量较大时,会引起振铃效应。关于高频分量,请参见对运动补偿后的残差进行变换的方法:
变换编码。http://www.51cto.com/art/200804/70266.htm

1.5
运动补偿的原理与步骤

运动补偿的基本原理是,当编码器对图像序列中地第N帧进行处理时,利用运动补偿中地核心技术-运动估值ME(Motion
Estimation),得到第N帧得预测帧N′。在实际编码传输时,并不总时传输第N帧,而是第N帧和其预测帧N′得差值△。如果运动估计十分有效,△中得概率基本上分布在零附近,从而导致△比原始图像第N帧得能量小得多,编码传输△所需得比特数也就少得多。

运动补偿的步骤如下:

(1)图像分割为静止得和运动的两部分,估计物体得位移向量(位移值)。

(2)按照估计得到的位移向量取得前一帧的图像数据。

(3)通过使用预测滤波器,得到前一帧图像数据的预测像素。

2、运动估计

2.1
基本思想

运动估计的基本思想是将图像序列的每一帧分成许多互不重叠的宏块,并认为宏块内所有象素的位移量都相同,然后对每个宏块到参考帧某一给定特定搜索范围内根据一定的匹配准则找出与当前块最相似的块,即匹配块,匹配块与当前块的相对位移即为运动矢量。视频压缩的时候,只需保存运动矢量和残差数据就可以完全恢复出当前块。得到运动矢量的过程被称为运动估计。

运动矢量和经过运动匹配后得到的预测误差共同发送到解码端,在解码端按照运动矢量指明的位置,从已经解码的邻近参考帧图像中找到相应的块或宏块,和预测误差相加后就得到了块或宏块在当前帧中的位置。

实际应用时,只将运动矢量及最佳匹配块与当前块之间的差值块一起编码传输。在接收端,通过运动矢量在已经恢复的相邻帧中找到当前块的最佳匹配块,并与接收到的差值块相加恢复出当前块,这就是运动补偿基本过程。

2.2
运动估计算法

运动估计算法是视频压缩编码的核心算法之一。高质量的运动估计算法是高效视频编码的前提和基础。其中块匹配法(BMA, Block Match
Algorithm)由于算法简单和易于硬件实现,被广泛应用于各视频编码标准中。块匹配法的基本思想是先将图像划分为许多子块,然后对当前帧中的每一块根据一定的匹配准则在相邻帧中找出当前块的匹配块,由此得到两者的相对位移,即当前块的运动矢量。在H.264标准的搜索算法中,图像序列的当前帧被划分成互不重叠16×16大小的子块,而每个子块又可划分成更小的子块,当前子块按一定的块匹配准则在参考帧中对应位置的一定搜索范围内寻找最佳匹配块,由此得到运动矢量和匹配误差。运动估计的估计精度和运算复杂度取决于搜索策略和块匹配准则。这里使用H.264推荐算法UMHexagonS(Unsymmetrical-cross
Multi-Hexagon-grid
Search)作为DSP实现的算法参考,与FS算法比较,它在保证可靠搜索精度的前提下大幅降低搜索复杂度。同时使用绝对差和(SAD, the Sum
of Absolute Difference)标准作为匹配准则,它具有便于硬件实现的优点。

三、参考文献:

http://blog.csdn.net/vblittleboy/article/details/8264003

http://hi.baidu.com/luckdst/item/4dbe5462f9cefb2668105b34

运动补偿与运动估计,布布扣,bubuko.com

时间: 2024-10-12 15:36:17

运动补偿与运动估计的相关文章

转:运动估计与运动补偿 一

定义: MC 运动补偿是通过先前的局部图像来预测.补偿当前的局部图像,它是减少帧序列冗余信息的有效方法.包括 全局运动补偿 和 分块运动补偿 两类. 全局运动补偿: 运动模型基本上就是反映摄像机的各种运动,包括平移,旋转,变焦等等.这种模型特别适合对没有运动物体的静止场景的编码.全局运动补偿有下面的一些优点: 该模型仅仅使用少数的参数对全局的运行进行描述,参数所占用的码率基本上可以忽略不计. 该方法不对帧进行分区编码,这避免了分区造成的块效应. 在时间方向的一条直线的点如果在空间方向具有相等的间

学习编解码和流媒体的正确方法

1.因为音视频编解码涉及知识点很多,图像处理的基础知识要有,如BMP位图,颜色表示模式YUV等,傅立叶变换,余弦变换,JEPG图像编码.然后要认真地看明白音视频编码的基本原理,包括编码预测,运动补偿,运动估计...最好要能复述整个过程. 然后可以看源码,先架构,再一个功能块一个功能块,一个函数一个函,一句一句地理解.最后也很关键,那就是做一些习题. 2.流媒体的学习跟上边的步骤一样.先看明白RTP/RTCP/RTSP协议文档,理解各个字段具体含义.如果你很明白的话,尝试写一个流媒体服务也就不难.

AVS-P2中的8x8二维整数余弦变换(Integer Cosine Transform, ICT)

为何采用ICT? 基于块的DCT能很大程度上去除图像元素在变换域中的相关性,在图像和视频编码领域得到广泛的应用.但由于DCT存在计算量大以及存在反变换失配,因此AVS Part 2采用的是ICT,其性能接近8x8 DCT,但精确定义到每一位的运算避免了不同反变换之间的失配.ICT具有复杂度低.完全匹配等优点.ICT可用加法和移位直接实现. 何为ICT? 整数余弦变换(Integer Cosine Transform, ICT)源自离散余弦变换,是定点余弦变换的扩展.设一个二维数据块X大小为nxm

帧间预测--运动补偿

运动补偿 原理 百科上说"运动补偿是通过先前的局部图像来预测.补偿当前的局部图像,它是减少帧序列冗余信息的有效方法",通过前面的运动估计我们得到了MV(运动向量),大部分情况下MV是亚像素精度的,MV的作用就是定位参考块在参考帧中的位置,但是亚像素的MV定位出来的位置是没有像素点的(亚像素就是指该位置在两个像素之间),换句话说非整像素精度的MV定位出来的地方没有像素点(即没有像素块),那么我们需要使用现有的像素点去构造亚像素点,这样通过MV找到位置才有参考块.运动补偿实际干的就是这么回

h.264 fast,1/2,1/4像素运动估计与插值处理

Hadamard Transform 在1/2,1/4像素运动估计这一阶段中,对于像素残差,可以选择采用哈达玛变换来代替离散余弦变换进行高低频的分离. 优点:哈达玛矩阵全是+1,-1,因此只需要进行加减法就可以得到变换结果,比离散余弦变换更高效 缺点:高低频分离效果没有离散余弦变换好,原始数据越是均匀分布,经转换后的数据越集中于边角,反之集中力越差 在采用了哈达玛变换的情况,为了达到更精确的估计效果,计算像素残差的SAD需要更变为SATD,即对像素残差进行哈达玛矩阵变换后得到的矩阵元素的绝对值之

Robotics Lab3 ——图像特征匹配、跟踪与相机运动估计

Robotics Lab3 --图像特征匹配.跟踪与相机运动估计 图像特征匹配 图像特征点 携带摄像头的机器人在运动过程中,会连续性地获取多帧图像,辅助其感知周围环境和自身运动.时间序列上相连的两幅或多幅图像,通常存在相同的景物,只是它们在图像中的位置不同.而位置的变换恰恰暗含了相机的运动,这时就需要相邻图像间的相似性匹配. 选取一大块图像区域进行运动估计是不可取的.已知图像在计算机内部是以数字矩阵的形式存储的,[如灰度图的每个元素代表了单个像素的灰度值].而对于点的提取和匹配较为方便,且和数字

多媒体开发之---h264快速运动估计算法

#include "stdio.h"#include "stdlib.h"#include "malloc.h"#include "string.h"#include "sys/timeb.h"#include "math.h"#include "inf.h"#define MIN(a,b) ((a)<(b))?(a):(b);#define MAX(a,b)

【 论文学习记录】A flexible and scalable slam system with full 3d motion estimation 一种灵活可扩展带有3D运动估计的slam系统

A flexible and scalable slam system with full 3d motion estimation   论文学习记录 这篇论文系统框架,栅格多阈值,更新同步与伪数据,扫描匹配起始点,协方差交叉融合的思想还是值得借鉴的. 摘要 关注于搜救机器人建图定位与导航的框架性文章. 低计算资源的在线快速获取栅格地图: 结合鲁棒的激光扫描匹配方法和惯性传感器姿态估计系统. 快速地图梯度近似与多分辨率(类似图像金字塔)栅格地图,精确而不需要闭环检测. 介绍 2D slam 子系

各种音视频编解码学习详解

各种音视频编解码学习详解 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范 标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很少采用了.所以豆丁上看不出所以然,从 wiki上查.中文的wiki信息量有限,很短,而wiki的英文内容内多,删减版