1.3 H.261 简要介绍
H.261 协议又被称为p64,是第一个视频压缩标准,主要应用于视频会议行业。从压缩技术上来说,与后来的压缩技术相比,它的算法最简单,自然,压缩的效果也比较差。对于研究视频压缩技术的工程师而言,从H.261开始研究,有种事半功倍的感觉,因为后来的压缩算法基本思想都和H.261差不多,只是在细节上更加高效了。
前面介绍过了,视频压缩的关键就是运动估计、DCT变换、量化和反量化。H.261除了这些,还有一个环路滤波器,用来消除块效应。下面,我们一一介绍。
运动估计(ME)
我们经常可以碰到这样的情况,两个不同的产商,他们都支持H.261,设置的码率也一样,可是实际跑起来的时候,两个产商的编码效果差别却很大,这里面,主要的原因就是运动估计算法不同。
最简单的运动估计算法是所谓的全搜索,可是实际的产品中,几乎没有采用这种算法的,为什么?因为全搜索太慢了,对视频编码的算法选择而言,永远是在编码效率和算法性能上找平衡点。事实上,有很多算法在性能上可能是全搜索的10%左右,但是,编码效率可能只比全搜索稍差,对于实时应用的编码器而言,选择一个适合CPU运算特点的优化算法是关键。这里插一句,如果是非实时应用的话,采用全搜索是个非常好的注意。
H.261协议里面其实并没有定义如何运动估计,因为,协议一般只定义解码器,它不管你如何编码,只要你最后得到的码流符合它的协议就够了。与运动估计对应的解码过程叫运动补偿(MC),H.261运动补偿主要特点有:1 它的搜索范围是 -16到15;2 只支持整像素搜索;3 每个宏块只有一个运动向量,并不支持到块级运动估计;4 只支持P帧,并不支持双向预测帧(B帧)。
与后来的协议相比较,个人的看法,运动估计的范围-16到15基本上是够用了,再大的话,一方面性能可能做不到,另一方面,实际应用中,运动超过这个范围的宏块还是很少的。与整像素搜索对应的是半像素、四分之一像素等搜索精度,这个算法应该说非常有效,个人感觉H.263比H.261算法好的最关键因素就是这里。运动向量只到宏块一级其实差不多,不过支持4mv的话,有些场合码率可能可以节省5%到15%,这是我以前mpeg-4编码器测试的结论,当然,为了追求这10%左右的效率,性能上运动估计大约要增加30%以上的运算量(看选择的算法)。B帧也是很重要的算法,以前的测试结论大约是可以节省15%左右,不过H.261也不支持。
在H.261的编码帧中,分为I帧和P帧。I帧也被称为关键帧,而P帧则被称为预测帧。I帧里的宏块全部由帧内编码宏块组成,并没有运动估计。实际上I帧的编码算法和jpeg压缩算法很类似,可以说就是使用了jpeg压缩技术。I帧的压缩效果比P帧差很多,同等图像质量的话,I帧的码率可能是P帧的十倍,从这里可以看出来运动估计对于视频压缩的巨大作用。也正是因为I帧压缩效果差,因此,很多编码器算法都有一个叫做关键帧间隔的参数,这个值比较流行设置为100,也就是大概4秒钟出现一次I帧。很多实时编码的算法,经常会过几秒,画面给人的感觉是刷了一下,这就是关键帧在刷新。
转自
http://tb.blog.csdn.net/TrackBack.aspx?PostId=1651598