H.264中FMO模式的性能测试及应用研究*

2010-06-07 02:04杨晓秋
电视技术 2010年9期
关键词:宏块比特率码流

喻 欣,周 亮,杨晓秋,刘 蓓

(重庆有线电视网络有限公司 规划设计院,重庆 400051)

1 引言

H.264是ISO与ITU-T于2003年联合颁布的新一代低比特率视频压缩标准,其主要目的是提高压缩效率和增加网络友好性[1]。该标准虽获得了很好的编码效率,但也使得其抗误码能力更加脆弱,误码扩散会引起重构图像质量的急剧下降。因此在H.264中,引入了一些新的抗误码差错控制技术,如灵活宏块重排(Flexible Macroblock Ordering,FMO)技术。目前国内外对FMO技术进行了一定的研究,文献[2]研究了一种FMO模式下的优化技术;文献[3]测试了FMO技术对几个编码参数的影响,并提出了一种FMO模式下提高错误隐藏效果方法;文献[4]和文献[5]针对FMO提出了非等差错保护思想;文献[6]提出了一种通过模式切换的方法提高容错能力。这些文献尚未对各种FMO模式的编解码参数作出比较完整的分析,也没有对采用各种FMO模式编码后的码流进行抗误码能力的测试。

笔者在分析FMO原理的基础上,总结出FMO差错控制思想及各种模式宏块重排的特点。通过研究H.264官方测试代码JM86基线档次中FMO设置参数的含义,实现了一种合理的宏块分配映射方式用于后续测试。最后,选取4种标准视频测试序列和不同的模拟信道丢包模式,对各种FMO模式下的编解码效率及抗误码能力进行了测试,并总结出了各种模式的应用场所。

2 FMO原理及基本模式

FMO是通过宏块分配映射技术,按照一定的方式将一类宏块映射到1个片组中。如果只有2个片组,则对片组分开进行传送,如果片组中还分为不同的片,则相同片组中的片分开传送。由于整幅图像中一些相邻宏块分布在不同的片中,丢失块可充分利用周围相邻块的相关信息进行错误隐藏,因此可以较好地恢复出错误图像,提高抗误码能力[7-8]。H.264中定义了7种宏块到片组的映射方式:

1)交织(Interleaved)模式(FMO0),不同片组交替出现,图1a是三片组的交织模式。

2)分散(Dispersed)模式(FMO1),相邻宏块分散出现在不同的片组中,该模式下某个宏块与其周围的上下左右4个相邻块都不在同一片组中。两片组分散模式如图1b所示。

3)前后景(Fore-ground with left-over)模式(FMO2),将图像按照不同特点分为1个或几个矩形区域,把各区域的宏块分配到不同的片组,两片组前后景模式如图1c所示。

4)环形扫描(Box-out)模式(FMO3),将图像中心区域的宏块定义为片组中较小的宏块,以顺时针或逆时针方向旋转确定片组大小,中心区域以外的宏块则定义为第2个片组。旋转方向、宏块数目由参数设定。图1d是两片组顺时针方向扫描时的环形扫描模式。

5)光栅(Raster-scan)模式(FMO4),将图像分为上下2个片组,可从左到右、从上到下,也可从右到左、从下到上进行扫描。片组宏块数目由参数设置确定。图1e是两片组从左到右、从上到下扫描时的光栅模式。

6)擦拭扫描(Wipe)模式(FMO5),将图像分为左右2个片组。从上到下、从左到右扫描的擦拭模式如图1f所示。

7)显示控制(Explicit)模式(FMO6),由用户指明每个宏块属于哪个片组,可在配置文件为每个宏块设置其所属的片组,设置顺序为光栅扫描顺序。

FMO0,FMO2与 FMO6需要使用 sg0/2/6cong.cfg配置文件,把一幅图像中的宏块在其模式下按照一定的方式分配到片组中。其他模式有固定的片组分配方式,不需要进行配置。片组分配完成后,再做片设置,完成片组到片的分配过程。

3 FMO参数设置及文件配置

在JM86基线档次的配置文件enconder_baseline.cfg中,FMO配置参数含义如下:

SliceMode(参数1):对是否分片及分片方式进行设置。0为不分片;1为以固定宏块数分片;2为以固定比特数分片。

SliceArgument(参数2):对不同的分片方式下片的大小进行设置。0表示SliceArgument无效;1表示以宏块为单位进行分片,每个片有SliceArgument个宏块;2表示以字节为单位进行分片,每个片有SliceArgument个字节。

num_slice_groups_minus1(参数 3):是否使用 FMO 及片组数目设置。0表示不使用FMO;1表示设置两个片组,2表示设置3个片组。

slice_group_map_type (参数 4):0~6 分别表示设置FMO0~FMO6模式。

slice_group_change_direction_flag(参数 5):设置值为0或1,对环形扫描,光栅扫描,擦式扫描模式中的扫描方向进行设置。

slice_group_change_rate_minus1(参数 6):对环形扫描,光栅扫描,擦式扫描模式每个片组的宏块个数进行设置。

SliceGroupConfigFileName(参数 7):设置值为“sg0conf.cfg”/“sg2conf.cfg”/“sg6conf.cfg”, 对 FMO0,FMO2,FMO6模式下片组区域进行设置。

第7种模式为自定义模式,笔者对H.264的前6种FMO模式及无FMO模式进行测试,对基线档次的FMO参数设置如表1所示,表中的“/”表示在该模式下此参数无效。

这里对前6种FMO模式和无FMO模式进行测试和比较。由于前6种FMO模式中有的模式只能分为2个片组,所以本文将所有模式都分为2个片组。此外为使得各模式下片分配方式有较大差异,片大小设置为30。图2a~2g为各种设置参数下的片组及片分配示例。

表1 不同FMO模式参数设置

4 FMO性能测试及应用分析

测试所用的计算机配置为:AMD Turion 64×2 Mobile Technology TL-602.00 GHz,1.87 Gbyte;采用 H.264官方测试平台JM86;基本参数设置为基线档次,编码100帧,IPPPP 格式,帧率为 30 f/s(帧/秒),CAVLC 熵编码方式,RTP输出格式,量化步长为28,率失真(rd-optimized mode)设置为 1。

采用 news,foreman,silent和 carphone 4 种不同特点的QCIF格式的标准视频测试序列。

4.1 FMO编解码效率测试

图3a~3e分别为对100帧4种不同特点、IPPPP格式的视频序列进行测试后,得到P帧的运动估计时间、编码时间、编码输出比特率、解码图像的亮度峰值信噪比(PSNRY)、解码时间的测试结果。

通过对测试结果的分析,可得到如下结论:

1)运动估计时间:运动估计时间不会因为FMO模式的不同而有较大的变化。因为对P帧的每个宏块做运动估计是通过重构帧来进行的,与P帧中宏块本身的排列顺序无关。

2)编码时间:FMO1模式的编码时间最少,FMO0模式次之,其他模式编码时间相差不大。这是因为在I帧中,对某一个片中的宏块作帧内预测时,FMO1没有可用预测的相邻块,因此不作帧内预测。FMO0模式只使用上侧的宏块进行预测,而其他模式下可用于预测的相邻块较多,预测的范围越大,预测时间越多。

3)编码输出比特率:FMO1模式的输出比特率最高,原因是该模式不作帧内预测,直接进行帧内编码。FMO0模式只使用上侧相邻块进行预测,预测精度不高,残差值较大,输出码流较大。其他模式下片内相邻宏块较多,预测较准确,残差值较小,输出比特率也相对较小。

4)PSNRY:不同FMO模式下解码图像的PSNRY变化不大。图像的重构质量主要取决于量化精度,量化精度一样,则重构质量几乎相同。

目前,我国大部分中小型企业都以成本精细化管理来提高自身的综合发展实力。医院实行成本精细化管理不仅可以提高医院的综合实力,还能更好地处理与患者之间微妙的关系。

5)解码时间:在不同FMO模式下解码时间变化不大。FMO只是对宏块顺序进行重排,解码端只需对顺序进行恢复,因此没有增加解码端的复杂度。

4.2 FMO抗误码能力测试

模拟信道丢包程序Mobile IP有3类错误模式,即18681.3、18681.4和wcdma。经过18681.3丢包后的码流丢失率约为30%~40%,18681.4约为10%~20%,而wcdma有多个文件分别模拟不同信道的特点,这里选取的是wcdma_64kb_3kph_5e-04.bin文件,这种错误模式下I帧不作丢失,码流的丢失率大约在5%以下。对不同FMO模式编码后的码流在不同错误模式下进行丢包后解码,得到其解码帧数如图4a~4c所示。

由图4a~4c可看出,丢失率越小,解码成功的机会越大。但在wcdma文件下,即使I帧不丢失,码流仍然可能不解码。这是因为码流中的一些头信息丢失,导致不能正常解码。

笔者将同一模式下的解码成功次数进行了统计,数据比较如图5所示。FMO0与FMO1具有较好的抗误码能力,即使在丢包率较高的情况下也可能正确解码。无FMO与FMO4模式的抗误码性能也不错,在保证I帧正确接收的情况下也能正确解码。FMO5模式比剩余其他模式的抗误码性能要好,最差的是FMO3。

宏块分配映射方式不同,片与片之间的相关性不同,丢失块与其相邻块所属的片组不同,这些都会导致解码时对差错处理的能力不同。例如在解码当前宏块时找不到运动矢量时,可选择相邻宏块中的运动矢量,如果相邻块全部丢失,则不做解码。在FMO0与FMO1模式下,丢失块的相邻块更可能正确接收,因而可以很好地处理误码的情况。无FMO与FMO4的宏块映射方式类似,因此抗误码性能相同。其他模式下相邻块丢失的可能性更大,处理差错的性能下降,因此抗误码能力较弱。

4.3 FMO的应用研究

通过对不同FMO模式下的编解码效率及抗误码性能进行分析,可确定各种FMO模式的适用范围及应用场合。

FMO0与FMO1模式下编码后码流总比特率较高,需更大带宽,但其编码时间短,抗误码能力相对较强。因此,在带宽允许的情况下可选择这两种模式用于实时视频通信。此外,两种模式片与片之间的宏块具有更好的相关性,可提高错误隐藏性能,恢复出更好的视频质量。因此,这两种模式可应用于视频通信和高清广播电视中。

FMO2与FMO3两种模式下编码后码流的抗误码能力下降,比特率略低于无FMO模式。但是从这两种模式下片组的映射过程可知,可以通过对图像内容划分后进行片组映射,进一步提高图像压缩效率,从而降低总比特率。此外,通过对重要内容进行保护后,也可提高其码流的容错能力。因此这两种模式可以应用于带宽较低,实时性要求较低的流媒体服务中。

FMO4与FMO5两种模式下编码后的码流无论是在抗误码能力还是编码时间与比特率上均劣于无FMO模式下的码流,并且片组分配映射方式不够灵活,因此,笔者认为,FMO4与FMO5并没有更多的实际应用价值。

5 小结

合理利用H.264中的FMO抗误码技术可以有效提高其码流的容错能力。笔者对其编解码效率、抗误码能力进行了测试,通过对测试结果的比较可见,片内宏块的相关性导致了不同FMO模式预测范围的变化、预测残差值的变化,因此编码时间和输出比特率也不同。片与片之间的相关性不同也导致了抗误码能力的不同。通过分析,总结了各FMO模式下的性能特点及适用范围。

[1]WIEGAND T,SULIVAN G J,BJONTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits Systems for Video Technology,2003,13(7):560-576.

[2]谢治平,郑更生,贺贵明.一种基于FMO的H.264容错编码[J].计算机工程与应用,2006,42(31):200-202.

[3]万里晴,李学明.H.264的差错控制与错误隐藏技术研究[J].计算机工程与应用,2007,43(16):53-57.

[4]HANNUKSELA M M,WANG Y K,GABBOUJ M.Isolated regions in video coding[J].IEEE Trans.Multimedia, 2004,6(2):259-267.

[5]IM S K,PEARMAIN A J.Unequal error protection with the H.264 flexible macroblock ordering[C]//Proc.SPIE VCIP 2005.Beijing:[s.n.],2005:1033-1040.

[6]毛朴澄,何小海,滕奇志.基于H.264的一种新型自适应FMO选择策略[J].电视技术,2009,33(12):14-17.

[7]王俊生.视频编码新标准H.264中抗误码技术的研究[J].中国有线电视,2004,19(20):15-18.

[8]杨华,杨松岸,余松煌.H.264的几种抗误码方法的分析与比较[J].通信技术,2003(10):1-3.

猜你喜欢
宏块比特率码流
数字电视TS码流协议简要分析
基于多个网络接口的DASH系统设计与实现
相同比特率的MPEG视频双压缩检测*
基于选择特征宏块的快速视频稳像
一种比较ASN.1码流差异的方法
基于梯度的CCSDS压缩码流控制算法研究
IRD对TS流的处理
基于能量分配提高纠错码误比特率性能的研究
基于宏块合并的H.264模式选择算法
基于无线网络的H.264误码掩盖算法的改进