H.264和以前的标准一样,还是采用的混合编码的框架,AVS视频标准采用了与H.264类似的技术框架,包括变换、量化、熵编码、帧内预测、帧间预测、环路滤波等模块。他们核心技术的不同包括以下几点:
一、变换和量化
H.264对残差数据采用基于块的变换编码,去除原始图像的空间冗余,使图像能力集中在小部分系数上,直流系数值一般来说是最大的,这样可以提高压缩比、增强抗干扰能力。先前标准一般采用DCT变换,这种变换的缺点是会出现失配现象,原始数据经过变换和反变换恢复后会有一个差值,由于是实数运算计算量也比较大。H.264采用的是基于4×4块的整数变换。
AVS采用8×8的整数变换,可以在16位处理器上无失配地实现。对高分辨率的视频图像去相关性要比4×4变换有效,采用了64级量化,可以适应不同的应用和业务对码流和质量的要求。
二、帧内预测
H.264和AVS技术都采用帧内预测的方式,用相邻的像素预测当前块,采用代表空间域纹理的多种预测模式。H.264的亮度预测有4×4块和16×16块2种预测方式,对于4×4的块:从-135度到+22.5度方向加上一个直流预测一共是9种预测方向;对于16×16块:有4种预测方向。色度预测是8×8块,有4种预测模式,类似于帧内16×16预测的4种模式,其中DC为模式0、水平为模式1、垂直为模式2、平面为模式3。
三、帧间预测
H.264帧间预测是利用以编码视频帧和基于块的运动补偿的预测模式,与以往标准帧间预测的区别在于块尺寸范围更广、亚像素运动矢量的使用和多参考帧的运用。
H.264有16×16、16×8、8×16、8×8、8×4、4×8和4×4一共8种宏块及子宏块划分,而AVS只有16×16、16×8、8×16和8×8一共4种宏块划分方式。
H.264支持使用多个不同的参考帧对帧间宏块和片进行预测,AVS中P帧可以利用至多2帧的前向参考帧,B帧采用前后各一个参考帧。
四、熵编码
H.264制定了基于信息量的熵编码效率,一种是对所有的待编码的符号采用统一的可变长编码(UVLC),另一种是采用基于内容的自适应二进制算术编码(CABAC, Context-Adaptive Binary Arithmetic Coding),大大减少了块编码相关性冗余,提高了编码效率。UVLC计算复杂度较低,主要针对对编码时间很严格的应用,缺点就是效率低,码率较高。CABAC是一种效率很高的熵编码方法,其编码效率比UVLC编码高50%。
AVS熵编码采用自适应变长编码技术。在AVS熵编码过程中,所有的语法元素和残差数据都是以指数哥伦布码的形式映射成二进制比特流。
采用指数哥伦布码的优势在于:一方面,它的硬件复杂度比较低,可以根据闭合公式解析码子,无需查表;另一方面,它可以根据编码元素的概率分布灵活地确定以K阶指数哥伦布码编码,如果K选得恰当,则编码效率可以逼近信息熵。
对预测残差的块变换系数,经扫描形成(level、run)对串,level、run不是独立事件,而存在着很强的相关性,在AVS中level、run采用二维联合编码,并根据当前level、run的不同概率分布趋势,自适应改变指数哥伦布码的阶数。
另外,在AVS中没有SI、SP帧。可以这样说,AVS是在H.264的基础上发展起来的,吸收了H.264的精华,但为了绕过专利的困扰,又不得不放弃H.264的一些核心算法。换来的代价就是,编码效率稍微降低一点的情况下,复杂度极大得降低了。 |