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

定义:

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

全局运动补偿:

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

分块与运动补偿:

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

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

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

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

运动补偿的基本原理:

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

定义:

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

运动补偿和运动估计:

  运动估计ME所表达的运动矢量MV,其研究的内容就是如何快速、有效的获得足够精确的mv,并且把前一帧所得的运动信息通过运动补偿MC来进行变换,量化编码,最后输出。

缩写含义:ME得到的是mV  运动矢量,参考帧中相对于当前帧的偏移

预测得到的是MVP  参考运动向量

差值是MVD 两个向量间的差别

提高运动估计算法的效率的主要技术有:初始搜索点的选择,匹配准则,和运动搜索策略。

时间: 2024-11-08 17:45:22

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

运动补偿与运动估计

主要内容: 帧内预测.帧间预测 运动补偿 运动估计 一.H.264的块.帧内预测.帧间预测 H.264/ AVC标准中的基本预测技术是基于块,像素块预测编码包括帧内(intra)块预测和帧间(inter)块预测,在图像信号压缩编码中,由于亮度信号和色差信号是分别进行处理的,因此,预测又可分亮度信号预测和色差信号预测. 帧内块预测是利用相邻像素的相关性,通过当前像素块的左边和上边的像素进行预测,只需对实际值和预测值的差值进行编码. 帧间预测是利用先前已编码帧的图像作为参考图像对当前图像进行预测的一

视频编解码

所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式.视频流传输中最为重要的编解码标准有国际电联的H.261.H.263.H.264,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo.微软公司的WMV以及Apple公司的QuickTime等. 中文名 视频编码 外文名 Video Encoding 分    类 H.26x系列,MPEG系列,AVS

x264源代码简单分析:滤波(Filter)

本文记录x264的x264_slice_write()函数中调用的x264_fdec_filter_row()的源代码.x264_fdec_filter_row()对应着x264中的滤波模块.滤波模块主要完成了下面3个方面的功能: (1)环路滤波(去块效应滤波)(2)半像素内插(3)视频质量指标PSNR和SSIM的计算 本文分别记录上述3个方面的源代码. 函数调用关系图 滤波(Filter)部分的源代码在整个x264中的位置如下图所示. 单击查看更清晰的图片 滤波(Filter)部分的函数调用关

利用FFmpeg玩转Android视频录制与压缩(二)<转>

转载出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个月,身边很多人的女票已经分了又合,合了又分,本屌依旧骄傲单身.上一次啊我们大致说了一些简单的FFmpeg命令以及Java层简单的调用方式,然后有很多朋友在github或者csdn上给我留言,很多时候我都选择避而不答,原因是本库以前用的so包是不开源的,我根本改不了里面东西.但是这一次啊我们玩点大的,我重新编译了FFm

x264源代码简单分析:宏块分析(Analysis)部分-帧间宏块(Inter)

本文记录x264的 x264_slice_write()函数中调用的x264_macroblock_analyse()的源代码.x264_macroblock_analyse()对应着x264中的分析模块.分析模块主要完成了下面2个方面的功能: (1)对于帧内宏块,分析帧内预测模式(2)对于帧间宏块,进行运动估计,分析帧间预测模式 上一篇文章记录了帧内宏块预测模式的分析,本文继续记录帧间宏块预测模式的分析. 函数调用关系图 宏块分析(Analysis)部分的源代码在整个x264中的位置如下图所示

rtmp和rtsp的区别和适用范围

http://www.cnblogs.com/jiayayao/p/6536140.html 1.视频传输 从网络上接收视频时首先要解协议(RTSP/RTMP/HTTP),然后是解格式(MKV,RMVB),之后才是将视频(H264)和音频(AAC)格式数据分别解码为图像(RGB/YUV)和声音(PCM),再根据时间戳同步播放. RTSP+RTP主要用于IPTV,原因是传输数据使用的是UDP,在网络环境比较稳定的情况下,传输效率是比较高的: RTMP主要用于互联网音视频传输,它使用的是TCP传输,

MPEG1的码流层次与各层次的作用

1. 序列层(Sequence layer) 序列层主要用于为随机播放提供全局参数支持,这些参数包括图像宽高.像素高宽比.帧率.码率.VBV大小.帧内量化矩阵.帧间量化矩阵. 2. 图像组层(Group of pictures layer) 图像组层也是主要用于为随机播放.视频编辑.分数帧率提供支持,像直播类应用用户随时可能加入视频会话就要求尽可能短的时间内就可以将收到的码流用于解码渲染显示,这时就会有两个选择,要么选择比较短的序列(包括的图像组层要少,极端情况一下一个序列只 包括一个图像组),

视频编码的基本原理

视频图像数据有极强的相关性,也就是说有大量的冗余信息.其中冗余信息可分为空域冗余信息和时域冗余信息.压缩技术就是将数据中的冗余信息去掉(去除数据之间的相关性),压缩技术包含帧内图像数据压缩技术.帧间图像数据压缩技术和熵编码压缩技术. 一.去时域冗余信息     使用帧间编码技术可去除时域冗余信息,它包括以下三部分: 1. 运动补偿     运动补偿是通过先前的局部图像来预测.补偿当前的局部图像,它是减少帧序列冗余信息的有效方法. 2. 运动表示     不同区域的图像需要使用不同的运动矢量来描述

转:x264源代码简单分析:编码器主干部分-1

本文来自:http://blog.csdn.net/leixiaohua1020/article/details/45644367 本文分析x264编码器主干部分的源代码."主干部分"指的就是 libx264中最核心的接口函数--x264_encoder_encode(),以及相关的几个接口函数 x264_encoder_open(),x264_encoder_headers(),和x264_encoder_close().这一部分源代码 比较复杂,现在看了半天依然感觉很多地方不太清晰