分层B帧预测结构

分层B帧预测结构由德国HHI实验室提出,具有良好的编码性能,相比H.264/AVC标准的传统编码结构IBBP,分层B帧预测结构能够进一步提高编码效率,因而被JVT选作多视点视频测试软件JMVC的参考预测结构。

分层B帧预测结构

结构

一个视频序列由多个图像组(GOP)组成,一个GOP可以包括I帧、P帧和B帧三种类型的帧,分别采用帧内预测、帧内/单向帧间预测、帧内/双向帧间预测方式进行编码。 
一个GOP由一个关键帧(通常为I帧或P帧,显示顺序位于非关键图像之后)和一组非关键帧(B帧)构成。关键帧采用帧内编码方式有利于随机访问,使用预测编码可以得到较高的编码效率。非关键帧预测关系如下图所示,一般情况下一个GOP包含8帧,前7帧为非关键帧B帧,最后一帧为关键帧I/P帧。注意序列的第一帧不属于任一GOP。 
这里写图片描述 
图像按照当前帧与其时间参考帧的时间间隔长短分成不同的时间层(Temporal Layer,TL),不同颜色的B帧处于不同的时间层。下图更清楚的展示了这种时间分层关系。 
这里写图片描述 
第1-8帧属于一个GOP,第0帧不属于任何GOP。可见第0帧和第8帧为关键帧,其时间层最低,设为TL=0。非关键帧分为了3层,第4帧位于TL=1层,第2帧和第6帧位于TL=2层,第1、3、5、7帧位于TL=3层。

编码顺序

在分层的预测结构中图像编码顺序和显示顺序是独立的。处于高时间层的B帧可以使用低于其时间层的已编码帧作参考。关键帧的编码顺序和显示顺序相同。非关键帧在H.264中按照其所处时间层顺序从低至高进行编码,在3D-HEVC中则再此基础上增加了二叉树深度遍历进行编码。显示则按照实际的图像顺序进行显示。 
以图中为例,H.264中的编码顺序为(数字表示第几帧)0-8-4-2-6-1-3-5-7,即按照时间层由低到高依次编码。而HEVC中的编码顺序为0-8-4-2-1-3-6-5-7,非关键层的编码以二叉树深度遍历顺序进行。 
使用分层B帧预测结构具有良好的时域可伸缩性。所有关键帧组成的序列时域分辨率最低,随着时域层数的增加,序列的时域分辨率逐渐提高。

在另一篇论文ANALYSIS OF HIERARCHICAL B PICTURES AND MCTF 中,提到过如下的编码顺序,保证了多视角子图编码后具有最小的解码延迟。这是根据拉格朗日乘子法求解得到。

基于分层B帧的视点间预测和时域预测相结合的预测编码结构

MVC中使用了基于分层B帧的视点间预测和时域预测相结合的预测编码结构,如下图,在分层B帧的基础上增加了视点间的预测。 
这里写图片描述 
每个视点中GOP的长度均为8,对每个视点在时间方向上采用分层B帧结构进行预测,在视点方向上,使用IBPBPBPP视点间预测结构。V0为基础视点(Base View)仅使用时间预测,不使用视点间预测;其它视点为非基础视点(Non-base View),使用时间预测+视点间预测。V2、V4、V6仅对关键帧使用视点间预测,V1、V3、V5、V7的关键帧和非关键帧都可以使用视点间预测。

B帧:双向预测内插编码帧。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况,但我这样说简单些),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。
 
B帧的预测与重构
B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。
B帧特点
1.B帧是由前面的I或P帧和后面的P帧来进行预测的;
2.B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
3.B帧是双向预测编码帧;
4.B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
5.B帧不是参考帧,不会造成解码错误的扩散。


注:I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧。一般来说,I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可以达到50。可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

猜你喜欢

转载自blog.csdn.net/liangjiubujiu/article/details/81233923