视讯压缩方法是用于去除空间轴与时间轴上的多余资讯,以达成资料量缩减之目的。不同的压缩规格,使用不同的技术以去除多余资讯,而MPEG-2、WMV-9与H.264等规格之差异在于使用不同之基本压缩技术。兹就不同压缩规格所使用之基本压缩技术比较如(表一)所示。
| 基本技术 规格 |
运动估测技术 |
编码方法 |
空间轴编码方法 |
| MPEG-2 |
(1) Fixed block size (2) 1/2 Pixel motion vector |
2D-VLC |
8x8 DCT Transform |
| WMV -9 |
(1) Variable block size (2) 1/4 pixel motion vector |
a)3D-VLC b)Two layer Huffman Coding |
8x8 、 4x8 、 8x4 、 4x4 Integer Tansform |
| H.264 |
(1) Variable block size (2) 1/8 pixel motion vector |
a) UVLC b) CABAC |
4x4 Integer Transform |
表一 各种压缩规格所使用之基本压缩技术比较
■运动估测技术之比较
运动估测技术上之主要差异有下列两点:
(1)运算方块大小之不同;
(2)运动向量之精度差异。
在MPEG-2之视频压缩规格中,运动估测所用之运算方块大小是固定的16×16像素,而运动向量之最大精度达1/2像素。在WMV-9之视频压缩规格中,其运动向量之最大精度由1/2像素提升至1/4像素,其运动估测所用之运算方块大小之选择可为16×16像素或8×8像素。H.264规格再将运动向量之最大精度提升至1/8像素,且运动估测所用之运算方块大小可为16×16、8×16、16×8、8×8、8×4、4×8与4×4等七种模式。高精度之运动向量与多选择性之运动估测运算方块尺寸可使压缩效能提高,但也增加了编码过程之运算量。WMV-9与H.264规格之压缩效能可达MPEG-2之三倍,但其解码运算量也达MPEG-2之三至五倍。主要的差异皆来自运动估测方法之不同。
■编码方法的比较
视频压缩规格皆使用可变长度编码(Variable length Coding)方法对各种数值做编码,所谓可变长度编码就是将不同的符号(symbol)以不同长度之Binary code作代表。如(图二)所示之DCT系数,在一个数之后跟随几个零,构成一组(Run,Level),即以不同的VLC码对应之,称为2D-VLC。而其中的Run是指在每一个非零系数之前的连续0的个数,Level指的是该非零系数的位阶值(及大小值),最后还会跟着一个位元用以编码该非零系数的符号,最后再以查表的方式将符号(symbol)转换成二元码(Binary Codes)。
MPEG-2规格即使用图二之2D-VLC编码技巧。在WMV-9的VLC编码规格中捨去图二中间之「End of Block」编码,增设Last Flag将2D-VLC扩大成如图二最右边所示之3D-VLC。3D-VLC对每一个符号(symbol)编码出一组(Last,Run,Level),与2D-VLC最主要的差异就是多出了Last栏位,该栏位用一个位元来标示在该非零系数之后是否还有其他的非零系数(0代表后头还有非零系数,1代表之后没有其他的非零系数)。在H.264的编码方法上有两种编码方法供编码器做选择:可变长度编码(UVLC)及前文参考之适应性二元算术编码(CABAC),其中UVLC对于发生机率比较高的符号以较短的码加以编码,这些码都是以查表的方式运作,所以在编码端及解码端的编码表要一致。
而CABAC与UVLC最大的不同点,在于其编码方法是具有适应性(adaptive),所谓的适应性是指对于编码过程中各个符号(symbol)出现的机率会一直动态地去统计并更新,以(图三)来说明CABAC的运作流程:输入讯号经过Context Modeling后会先产生内文(Context),之后将其二元化,接下来就是整个算术编码的核心,Probability Estimation负责动态地去估算机率,此机率值将会是算术编码最重要的输入参数,有此机率值Coding Engine就会将所有的符号(symbol)加以编码。分析两者的优缺点,CABAC由于一直动态地计算更新符号出现的机率,可以将资讯作适应性的调整并达到最佳的资料压缩率,然而如此也付出了运算量增加的代价,及执行效率上不如UVLC来得快速的缺点。
(图二) 可变长度编码示意图
■空间轴编码方法的比较
在空间轴编码方面,MPEG-2、WMV-9与H.264皆使用频域之DCT系数编码,所不同者在于MPEG-2使用浮点运算之DCT转换,H.264与WMV-9使用整数点运算之DCT转换,MPEG-2之转换运算方块为8×8,而H.264/AVC则使用4×4的转换,用来消除区块边缘的ringing artifact以及discontinuity,但是影像中的趋势(trend)和结构(texture),尤其是週期性的结构(periodic texture)使用较大的Block size会有较好的保存效果,因此在WMV-9允许多种的Block size可供选择(包含8×8、4×8、8×4以及4×4的尺寸),其中针对Intra picture的frame level是固定使用8×8的尺寸,而Inter picture则可以选择4×8、8×4或4×4的尺寸。另外,WMV-9可选择在不同的level(frame、macroblock、block)做标记,例如在frame-level中标记使用8×8的尺寸做转换后,在同一frame中就都使用同样的尺寸来做转换,而在macroblock及block level中也是一样的规则。此特点使在同样压缩比之下,WMV-9之解压缩视频画质优于H.264。
(图三) H.264 CABAC编码架构示意图