H .264/AVC是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准,于2003年5月完成制订。相对于先前的标准,H.264/AVC无论在压缩效率、还是在网络适应性方面都有明显的提高,因此,业界普遍预测其将在未来的视频应用中替代现有的视频压缩标准。
但是,H.264/AVC标准由于对视频源的限制,仅支持娱乐级视频质量。为了进一步扩大其应用范围,使其适应高保真视频压缩的应用,JVT于2004年7月对H.264/AVC做了重要的补充扩展,称为FRExt(Fidelity Range Extensions)。
FRExt概述
H.264/AVC标准第一版支持的源图像为每象素8b,且采样方式仅限于4∶2∶0;而新近扩展的FRExt部分则扩大了标准的应用范围,如专业级的视频应用、高分辨率/高保真的视频压缩等。FRExt对H.264/AVC的改善主要在:(1)进一步引入一些先进的编码工具,提高了压缩效率;(2)视频源的每个样值均可超过8b,最高可达12b;(3)增加了4∶2∶2与4∶4∶4的采样格式;(4)更高的比特率,更高的图像分辨率;(5)可达到图像高保真的要求,支持无损压缩;(6)支持RGB格式的压缩,同时避免了色度空间转换的舍入误差。
高保真编码
在高类中,H.264/AVC对FRExt定义了特别的编码方案——支持无损编码和多种颜色格式。
(1)无损编码
为满足视频信号高保真的要求,H.264/AVC只在H444P类中引入了无损压缩编码方案。第一个是PCM方案,它没有预测、变换和量化,直接传送取样点的值以达到无损编码的目的;第二个是无变换的无损编码方案,运用预测与熵编码技术来表示图像高效无损,相对于第一个方案提高了编码效率。
(2)支持多种颜色格式
RGB与YCbCr相互之间的颜色转换使用的都是浮点运算,这必将引入舍入误差。为了消除在浮点运算中引入的舍入误差,H.264/AVC在支持RGB的同时引入了新的彩色空间YCgCo:
Y=1/2(G+(R+B)/2), Cg=1/2(G-(R+B)/2),Co=(R-B)/2
上面的公式减小了色彩空间转换的复杂度;但是,为了避免舍入误差,要求增加额外的比特以保持精确性。为了把这个额外比特降到1b,使用下面的公式:
Co=R-B,Cg=G-(B+(Co>>1)),Y=(B+(Co>>1))+Cg>>1)
压缩效率
从压缩效率上讲,H.264/AVC已经大大超过了以往的视频压缩标准,加入了FRExt之后,其在大尺寸、高保真等视频压缩方面更具优势。图5示出H.264/AVC FRExt与MPEG-2在HDTV图像主观评价方面的一个比较,H.264/AVC在不同的码率下压缩,而MPEG-2的压缩码率是24Mb/s,由此图可见8Mb/s的H.264/AVC FRExt与MPEG-2相当。
图5 H.264/AVC FRExt 与MPEG-2的性能比较
由于引入了基于空域的帧内预测技术,并且经过FRExt的改善,H.264/AVC的I帧与JPEG2000的编码效率相当,非常适合高质量的视频压缩应用。
小结
新一代视频压缩编码标准H.264/AVC的新进展——FRExt,相对于第一版标准扩展了视频源的采样格式与比特深度,加入了一些提高编码效率的工具。从而H.264/AVC进一步提高了编码效率,扩大了应用范围。
目前,高类已经代替主类而成为广播和其他娱乐应用的首选。主要原因是,它比起先前的主类只增加了极小的算法复杂度,却大大提高了压缩性能且编码器控制的灵活性。其中,H422P类可望在演播室环境中得以应用。在补充了FRExt之后,H.264/AVC被迅速推广到各种应用中,主要包括:欧洲数字视频广播标准DVB;美国先进电视系统委员会ATSC;DVD论坛的HD-DVD规范;蓝光光碟协会(BDA)的BD-ROM规范。
图1 FRExt 编码工具
FRExt增加了4个新的类:(1)High Profile(HP),支持8b、4∶2∶0采样;(2)High 10 Profile(Hi10P),支持10b、4∶2∶0采样;(3)High 4∶2∶2 Profile(H422P),支持10b、4∶2∶2采样;(4)High 4∶4∶4 Profile (H444P),支持12b、4∶4∶4采样、无损编码与多种色彩空间的编码。
H.264/AVC FRExt详细说明了一组4个新的类,它们如同性能的嵌套子集一样被创立。这4个类全都继承了主类的工具集,就像它们的公共交集;而高类(HP)还额外地包含了所有能够提高编码效率的主要的新工具。相对于主类(MP),这些工具在算法复杂度上只是稍有提高。因此,在数字视频应用中,在4∶2∶0色度采样格式中使用8b视频的高类有可能代替主类。
增加了高类之后,H.264/AVC各类的关系如图2所示,具体所包含的编码工具如下:
图2 H.264 各个类的关系
1.所有类的共同部分:I片、P片、CAVLC;
2.基本类(Baseline):FMO、ASO、冗余片;
3.主类(Main):B片、加权预测、CABAC、隔行编码;
4.扩展类(Extended):包含基本类的所有部分(FMO、ASO、冗余片)、SP片、SI片、数据分割、B片、加权预测;
5.高类(High):包含主类的所有部分(B片、加权预测、CABAC、隔行编码)、自适应变换块尺寸(4×4或8×8整数变换)、量化矩阵。
FRExt增加的关键算法
FRExt之所以能进一步提高编码效率及保真度,是因为加入了一些有效的编码工具。其中大部分是在取样点比特深度和色度格式方面;而在提高编码效率方面,主要是利用8×8的亮度帧内预测、4×4变换及8×8变换、量化矩阵等技术。
9种8×8的亮度帧内预测
H.264/AVC第一版的帧内预测包括9种4×4亮度块、4种16×16亮度块和4种色度块的预测。
图3 帧内预测方向
在FRExt中增加了9种8×8亮度块的预测,其预测方向(如图3)、预测块的计算与4×4块的基本一样,如图4所示。在一个给定的8×8亮度块中,每个象素值可从相邻的参考象素值(A~X、Z)中预测得到,编码器可选择8种不同的预测方向和直流预测。
还有一点与4×4块的不同,就是要对预测值进行低通滤波,以提高预测的精确度。新的8×8帧内预测中,给出了一个简单的二阶低通滤波器,它在预测之前被用来重建亮度的参考象素值。经过滤波的参考象素按照9种模式的预测方法进行预测。
8×8的整数变换
H.264/AVC第一版中,对所有的残差块采用了4×4整数变换;对16×16亮度块进行帧内预测;整数变换后的16个DC系数采用4×4哈达玛变换,色度块的DC系数采用2×2哈达码变换。
4×4整数变换除了算法复杂度低外,还可以有效地降低块效应。但是,对于大尺寸、高保真的视频,须要很好地保存图像的细节和纹理,这就需要更大尺寸的变换。为了达到各方面的平衡,FRExt引入了8×8整数变换,且编码器可以在宏块级自适应地选择4×4或8×8变换。在制定H.264/AVC标准之前,曾提出可变块尺寸的变换,其算法复杂度要低一些。
图4 用于8×8空间亮度预测的样本
8×8正变换和逆变换都可以通过快速蝶形算法实现,对于n比特的输入视频,只需要(8+n)比特的运算动态范围。8×8变换蝶形算法的复杂度只略高于4×4变换。
新的变换同时要求相应的量化方法。FRExt在第一版的基础上做了扩展,与MPEG-2一样可以选择量化矩阵进行量化,而量化矩阵可以提高图像的主观质量。同时,CABAC也做了改进,增加了3个内容模型,而CAVLC把8×8的系数分为4组4×4的系数。
表1 FRExt中的二维8×8变换矩阵
须要指出的是,编码器可以对每一个宏块选择4×4或8×8变换,但变换尺寸的选择过程受到两种约束:(1)对于帧内预测,只有在采用8×8亮度块的预测时,选择8×8整数变换;(2)对于帧间预测,宏块中包含一个或多个小于8×8的块(4×8、8×4、4×4),必须采用4×4整数变换。
本文作者郭晓强先生,国家广播电影电视总局广播科学研究院博士;解伟先生,北京邮电大学博士研究生。