基于多参考帧的平行立体视频视间编码的实现

2012-06-25 03:31王凌杰
电视技术 2012年5期
关键词:宏块左图右图

王凌杰,周 军

(上海交通大学图像通信与信息处理研究所,上海 200240)

1 Side-by-Side 立体视频格式

立体视频正在世界范围流行,其格式也多种多样。Side-by-Side(SbS)是常见的立体视频格式[1],它将适于左眼观看和适于右眼观看的两幅图像分别进行水平亚采样,使两幅图像的水平分辨力降为原来的一半,然后拼成一幅图像,如图1所示。3D电视机接收到SbS格式的视频后,将每幅图像从中间一分为二,并对分割后的两幅图像分别进行上采样,恢复其水平方向尺寸。经过恢复的图像其质量理论上会有所降低,但并不影响实际观看效果。由于传输SbS格式的视频所需的带宽与普通的高清传输带宽相同,也与 HDMI 1.4标准兼容[2],因此大部分有线电视供应商采用SbS格式来传输立体视频。

图1 SbS合成原理图【1】

H.264是国际电信联盟ITU-T和国际标准化组织ISO联合开发的视频编码标准,因其优异的压缩性能和良好的网络亲和性,已经成为国际上广泛使用的新一代视频压缩编码标准。H.264将视频预测编码分为帧内预测和帧间预测两种方式,按不同的预测编码方式将图像分为I,P,B 3 种类型[3]。相对普通视频而言,SbS 立体视频图像的左视角和右视角有很强的相关性。针对这一相关性,笔者提出了加入视间预测的预测编码结构,以进一步在H.264标准基础上提高SbS立体视频的压缩率。

2 视间预测原理

H.264标准的附录H多视视频编码(Annex H-Multiview video coding)规定了多视视频编码的视间预测方式[4]。在多视视频中,每个视角都是一个独立的视频序列,视间预测是在两个独立的视频序列之间进行的。而SbS视频只包含一个序列,左视角和右视角合成在一幅图像中,因此视间预测是在每一幅图像之内进行的。

SbS视间预测指的是一幅图像中的右图以左图为参考图像进行预测编码,是两个视角间的预测关系。以IBPBP结构为例,加入视间预测后SbS视频序列的编码预测结构如图2所示。

图2 加入视间预测后IBPBP预测结构

在编码一幅SbS图像时,先按H.264标准预测模式(帧内预测或帧间预测)编码左图,而编码右图时,在采用标准预测模式的同时利用左图进行视间预测编码。视间预测使用与帧间预测相同的宏块分割模式(Inter_16x16,Inter_16x8,Inter_8x16,Inter_8x8,Inter_8x4,Inter_4x8,Inter_4x4以及Pskip等[2])。由于视间预测充分利用了左图和右图之间的相关性,编码的压缩效率可以得到进一步提高。

3 视间预测的实现

3.1 左右图像划分

为了实现视间预测,需要把SbS图像的左图和右图划分开来,划分的方法是使用H.264的灵活宏块次序(Flexible Macroblock Ordering,FMO)功能[3]。利用 FMO可以将左图的宏块和右图的宏块分别划分到不同的片组(slice group)当中,编码时左图和右图被当作两个独立的区域。在实际操作时令每个片组只包含一个片(slice),即左图宏块划分到slice0,右图宏块划分到slice1,slice0作为slice1的视间预测参考图像,从而在slice层实现视间预测。

3.2 视间预测实现方法

笔者采用多参考帧编码方式来实现视间预测。多参考帧编码方式指的是在现有的若干参考图像基础上,将重建的slice0作为额外的参考图像加入其中。编码slice1时参考slice0重建值的过程即为视间预测。

加入视间预测的方法是:编码slice0;将slice0的重建值放入参考帧列表;将重建的slice0作为参考图像,结合帧内、帧间预测来编码slice1。由于参考帧列表中存放的是完整的图像,不能将slice0的重建值直接放入其中,需要通过一幅临时图像temp间接完成操作,其过程如图3所示。将重建后的slice0按像素赋值给temp的slice1而不是slice0,是为了防止编码slice1时进行运动搜索的运动矢量过大,导致编码代价过大,使得视间预测模式不会被选中。

图3 视间预测实现方法

3.3 基于JM的编码流程

JM[5](joint-model)作为 H.264 官方测试代码,实现了H.264的所有特性。本文在JM基础上实现了SbS视频的视间预测。加入视间预测后每幅图像的预测编码流程如图4所示。

图4 加入视间预测后的编码流程

实现视间预测的过程中有以下4个关键点:

1)将空图像temp存入解码图像缓存(Decoded Picture Buffer,DPB)的目的是用于参考帧列表初始化[3],参考帧列表初始化后DPB中的图像(包括temp)被加入到参考帧列表中,使得temp可以作为视间预测参考图像。还有一点需要注意,H.264标准规定不为I图像分配参考帧列表,因此需要修改JM代码,为I图像分配参考帧列表,以便temp能够被用作视间预测。

2)将slice0的重建像素值赋给temp的slice1后,在编码slice1时就可以利用其进行视间预测。slice1的宏块(块)是否使用视间预测方式进行编码取决于编码器率失真优化[3]的结果。temp的slice0一直为空,不需对其赋值。

3)如果当前图像是I图像,要将I图像slice1的片头语义(slice_type)改为 P_SLICE[3],否则只能使用帧内预测对其进行编码。改为P_SLICE后,I图像的slice1可以像P,B图像的slice1一样利用参考帧列表中的temp进行视间预测。

4)整个图像编码完成后,后续待编码图像不需要当前的temp作为参考图像,要将temp从DPB中删除,否则会造成参考帧列表管理的混乱。

3.4 解码

解码加入视间预测后的编码视频序列,需要对标准解码器做相应的修改。解码过程与编码过程对应:解码slice0;将slice0的解码值放入参考帧列表;JM根据slice1的编码模式(帧内预测、帧间预测或基于多参考帧的视间预测)选择相应的解码模式,解码slice1。具体操作时与编码过程一样,需要使用空图像完成参考帧列表初始化以及临时存储slice0的像素值。

4 实验结果及分析

实验使用了4个SbS格式的YUV序列:samsung.yuv,gforce.yuv,wedding.yuv,football.yuv,其图像尺寸均为1280 ×720,采样格式为4∶2∶0,GoP 大小为8,编码结构为IBPBP,量化参数(QP)取值为28,32,36和40。表1为实验结果的数据及比较,表2为各序列slice1采用多参考帧进行视间预测的宏块(块)数百分比统计。

4个序列中包含最多运动区域的wedding.yuv序列压缩率提高最大,包含最少运动区域的samsung.yuv序列压缩率提高最小,其原因是运动区域较多时序列的前后帧相关性较少,此时使用视间预测就可以充分利用左图和右图之间的相关性,使压缩率明显提高;而运动区域较少时序列的前后帧相关性较大,此时使用帧间预测就可以获得较大的压缩率,视间预测对压缩率影响相对较小。

表2的统计结果与表1的数据基本一致:随着QP值增大,采用多参考帧进行视间预测的宏块(块)数增多;相同的QP值下,wedding.yuv序列的视间预测宏块(块)数较多,samsung.yuv序列的视间预测宏块(块)数较少。

5 结论

本文基于H.264标准,针对SbS格式的立体视频提出了视间预测编码结构,并在JM测试代码的基础上实现了视间预测。实验结果表明,加入视间预测后,在PSNR损失很小的情况下,能够使SbS格式的立体视频得到更好的压缩率。

表1 加入视间预测前后压缩效率比较

表2 slice1采用多参考帧进行视间预测的宏块(块)数百分比

[1]黎之乐,王兴东,周军,等.双视立体视频同步合成系统设计与实现[J].电视技术,2011,35(12):84-86.

[2]EBU/ETSI JTC Broadcast.Digital video broadcasting(DVB);frame compatible plano-stereoscopic 3DTV(DVB-3DTV):A154[S].2011.

[3]毕厚杰,王健.新一代视频压缩编码标准——H.264/AVC[M].2版.北京:人民邮电出版社,2009.

[4]ITU.Advanced video coding for generic audiovisual services:H.264[S].2009.

[5]H.264/AVC Reference Software[EB/OL].[2010-06-01].http://iphome.hhi.de/suehring/html.

猜你喜欢
宏块左图右图
图画捉迷藏
基于运动估计与补偿的雷达拼图预测分析*
找图形
基于选择特征宏块的快速视频稳像
我会猜
找一找
快速记忆比赛
IP网络丢包条件下的H.264高清视频实时解码问题分析
基于宏块合并的H.264模式选择算法
你答的出来吗