新闻中心

EEPW首页 > 消费电子 > 设计应用 > 视频编码标准H.264的核心技术分析

视频编码标准H.264的核心技术分析

作者:时间:2012-07-24来源:网络收藏

3.1 帧内预测模式

中,通常的方法是把整幅图像分为若干宏块,然后对每一个宏块进行。在编码时采用Intra或Inter两种模式。在Intra模式中通常直接对宏块进行DCT变换,对变换系数进行熵编码。这样做在一定程度上消除了帧内的空间冗余度,但是由于DCT只是利用了宏块内部像素之间的相关性,而没有考虑相邻宏块间的相关性。引入了Intra预测的方法,利用相邻宏块的相关性对待编码的宏块进行预测,对预测残差进行变换编码,以消除空间冗余。值得注意的是,以前的是在变换域中进行预测,而是直接在空间域中进行预测。

3.2 帧间预测编码模式

在运动估计中采了许多新,主要包括可变块大小、多帧运动估计、亚像素精度的运动估计以及去块效应滤波等。

⑴ 去块效应滤波

它的作用就是用来消除解码图像中的块效应。块效应产生的原因是各个宏块分别进行量化,这样在相邻宏块的交界处,因量化步长不同而导致原本很接近的像素值重构后产生了较大的差异,形成明显的块边界。去块效应滤波是在4×4的块边界上滤波,使块边界趋于平滑。

⑵ 可变块大小块大小对运动估计的效果是有影响的。将宏块分割成不同尺寸的运动补偿子块称作树状结构运动补偿。宏块的分割和子宏块的分割各包括四种类型,如图3所示。较小的块可以使运动估计更精确,产生较小的运动残差,降低码率。在H.264建议的不同大小的块选择中,可以看出,一个宏块最多可以携带16个不同的运动矢量。配合多帧运动估计,同一宏块中的不同块还可以使用不同的参考帧来进行预测。

运动补偿的宏块分割

图3 运动补偿的宏块分割

顶端:宏块的分割

底端:宏块的子分割

⑶ 多帧运动估计

与以前压缩中使用的单帧运动估计相比,H.264使用的多帧运动估计具有更高的效率,更强的差错稳健性。所谓多帧运动估计是指使用一个或多个参考帧来估计运动矢量,可以防止因某个帧出现错误而影响到后面的帧。但是,这种估计需要更大的内存,更高的运算复杂度。

⑷亚像素精度的运动估计

在H.264中,运动估计的精度由H.263中的半像素提高到像素,并且把像素作为可选项。与半像素精度的运动估计一样, 像素精度的运动估计使用内插得到半像素和像素位置的点。

在H.264的帧间预测编码中,仍可以继续采用三步搜索算法找出与当前宏块最匹配的块。在块匹配中,块的位移与块的中心或块中任何一点的位移是等价的。因此,块的位移可以理解为中心点的位移。在三步算法中,搜索范围为 7,即在上一帧以当前子块为原点,将当前子块在其上下左右距离为7的范围内按一定规则移动,每移动到一个位置,取出同样大小的子块与当前子块进行匹配计算。具体分为以下三步:

①以当前子块为中心,以4为步幅,将图4中标出的9个位置为中心的子块与当前子块进行匹配,求出最佳匹配的子块中心位置。

②以①中求出的最佳子块为中心,例如,x=4,y=0,以2为步幅,将图中的9个位置为中心的子块与当前子块进行匹配,求出最佳匹配的子块中心位置。

③以②中求出的最佳子块为中心,例如,x=4,y=0,以1为步幅,将图中的9个位置为中心的子块与当前子块进行匹配,求出最佳匹配的子块中心位置,它与当前子块中心的位置偏移量即为估计的位移量。

视频编码标准H.264的核心技术分析

3.3 整数DCT变换

H.264中使用4×4的整数DCT变换作为残差宏块的基本变换,这种变换的对象是经过运动补偿预测或者帧内预测后的包含残差数据的4×4块。这类变换是基于DCT变换,但又不同于DCT。

由于DCT变换是实数,量化时需对系数进行四舍五入,从而影响了运算的精度。同时,传统的DCT存在不匹配问题,产生参考帧的偏移,直接影响到重建图像的质量。

H.264建议的整数DCT变换的所有操作都使用整数算法,变换的部分主要是加法和移位。在整个变换和量化的过程中,只执行16bit的整数算法和一次乘法操作。只要在H.264建议基础上正确使用相应的反变化,编码器和解码器就不会出现不匹配现象。它的正反变换矩阵分别为

其中的系数基本上都是整数,1/2可以用移位代替。在变换中由于乘法均可由移位运算代替,因此,复杂度降低的同时,也解决了精度问题。

H.264中的宏块大小为16×16,对其中每个4×4大小的块进行上述4×4的DCT变换后,得到16个4×4的变换矩阵。为了进一步提高压缩效率,该建议还允许把每个4×4的变换矩阵中的直流分量DC,单独取出组成一新的4×4矩阵,对此矩阵进行Hardamard变换。宏块的数据传送顺序如图5所示。

视频编码标准H.264的核心技术分析

3.4 熵编码

H.264建议同时采用了两种熵编码模式:基于上下文的二进制算术编码CABAC,以及可变长编码VLC。VLC编码又包括基于上下文的自适应可变长编码CAVLC。

CABAC方式利用了算术编码的方法,一个符号可以用少于1bit来表示。根据无误码的假设条件下的试验所得的数据可知,在所有码率下,CABAC的表现都强于CAVLC。但是CAVLC的抗误码性要强于CABAC,且运算的复杂度也远远低于CABAC。因此,H.264规定在Baseline Profile 中采用CAVLC,而在Main Profile 中采用CABAC进行熵编码。

4 小结

与以往的编码标准相比,H.264建议在其系统结构、运动估计和运动补偿、宏块的变换和量化以及熵编码等各方面都有明显的提高,具有更高的编码效率和更强的网络适应性。在相同的图象质量下,H.264/AVC的算法比以前的标准如H.263或MPEG-4节约了50%左右的码率。H.264的不同Profile既可以应用于实时通信,也可应用于对时延要求不高的其他应用中。此外,该建议增加了NAL层,负责将编码器的输出码流适配到各种类型的网络中,从而对网络传输具有更好的支持功能。同时,它具有较强的抗误码特性,可适应丢包率高、干扰严重的无线信道中的视频传输。因此,H.264支持不同网络资源下的分级编码传输,从而获得平稳的图像质量,能适应于不同网络中的视频传输,网络亲和性好。



评论


相关推荐

技术专区

关闭