2017-09-21

猎数博客

数据挖掘,机器学习

时间模型和预测

作者:江航 / 2011-05-31 / (阅读 1,663 次) /



时间模型的目标是减少不同帧之间的重复数据。也就是说尽可能的利用已经传输或者已经解码的数据。

最简单的方法是利用前一帧的数据作为当前帧的参考,然后计算当前帧与前一帧的差值,如果这个差值很小,那么压缩的目的就达到了。
然而,画面通常是运动的,经常的情况是,保存这个差值并没有为我们省下很多数据。有人想到如果把图像的运动信息记录下来,那么用参考帧的图像加上这个运动向量就可以恢复当前帧,在这种情况下,只要记录一个运动向量,而不需要记录每个像素的颜色值。但画面作为一个整体来运动的情况实在太少以至于根本不可行。另一个极端的情况是,对每个像素来计算一个运动向量,这样数据是精确了,但是每个点记录一个运动向量的数据里还是太大。于是有人想到,对每一个块来记录一个运动向量。这样似乎比较可行,事实上,想在流行的各种视频编码都是基于块来记录运动向量的。

这里的块在英文文章里面叫宏块(Macroblock),每个宏块对应于屏幕上一个16×16的区域。象MPEG-1,MPEG-2,MPEG-4, H.261,H.264都是采用这个大小的宏块。
运动估计
对于当前帧的每个宏块,在前一帧、前几帧或者后几帧中寻找跟这个宏块最匹配的宏块,记录下这个相对位置,这个相对位置就是当前宏块的运动向量。记录下运动向量,同时将当前宏块和这个宏块相减得到一个差值(叫残差)。残差会被送到空间模块中,进行进一步处理。运动向量则被送到熵编码模块进行编码。

运动估计中宏块的大小
整个图像和每个像素估计运动向量是运动估计的两个极端情形,对于一般的情况,宏块大小为16×16。宏块越小,那么计算出的运动向量越精确,那么残差也就越小,压缩效率也就越高。但是如果宏块过小,需要传输的运动向量也会增多。因此,这个宏块的大小决定需要在这两个方面做一个权衡。如果图像比较平滑,可以选用大的宏块,图像变化剧烈,那么就用比较小的宏块。比如H.264就是使用了这种自适应的方式来决定宏块的大小。

子像素运动估计
以上在运动估计中,都是采用整点像素来估计运动向量,实际情况是,有可能物体只是移动了半个像素或者1个半像素。在这种情况下,把运动估计向量设为0.5或者1.5要比1和2要来的精确,残差也就更小。为了实现这种半像素估计,一般需要先找到最好的整像素匹配的宏块,然后对该宏块周围的每个半像素点做比较,找到最好的半像素匹配块。同样可以在最好的半像素宏块周围找最佳1/4像素匹配的宏块。

基于一般区域的运动估计
有时候,一个宏块中同时包含了运动物体和静态物体,这时候要找到一个匹配的宏块是很困难的,这时候需要在宏块里面找到边界,在边界两侧同时最匹配。这里存在一些技术上的困难(我还不知道该怎么做)。不过在MPEG-4中包含一些工具来支持任意区域的运动补偿和编码。这个到后面应该会涉及到。



本文地址: http://www.bagualu.net/wordpress/archives/681 转载请注明






相关文章

  • 视频编解码的基本概念( 2,242 )
  • 视频编码之熵编码( 1,905 )
  • MPEG-4和H.264简介( 1,902 )
  • deinterlace 简单介绍( 1,896 )
  • interlace 隔行扫描 逐行扫描( 1,733 )
  • 视频格式 NTSC PAL SECAM 1080i 1080p 电影( 1,686 )
  • 视频处理器带宽简单分析( 1,668 )
  • 时间模型和预测( 1,663 )
  • 视频编码之空间模型( 1,654 )
  • Leave a Reply

    您必须登录以发表评论,

    沪ICP备11036560号
    联系我: jianghang at bagualu.net