欢迎来到通信人在线![用户登录] [免费注册]

H.263视频图像编码技术

浏览:3493  来源:通信人在线  日期:2007-06-14
 

1995年,ITU-T总结了当时国际上视频图像编码的新进展,针对低比特率视频应用制定了H.263标准,该标准被公认为是以像素为基础的第一代混合编码技术方案所能达到的最佳结果。

首先,H.263标准是一个开放的标准,只规定了编码后的码流格式,对编码过程中所采用的算法(如运动矢量的估计、码流控制、差错控制、图像的后处理等)没有进行限制,因此可以让标准使用者有更多的余地进一步从理论上对算法、编码效果等进行分析,从而出现了许多运动估计新算法、码率控制策略、传输差错控制策略、编码新技术(如小波压缩技术和模型基编码等),这些新的研究成果对视频质量的提高有着重要的意义。

其次,H.263标准的实现,使得在DDNISDNPSTN等通信网络进行视频通信实际应用成为可能,其图像质量比H.261有许多改善。因此,视频编码标准H.263被广泛应用在会议电视、可视电话、远程视频监控等众多领域。设备制造厂商、运营商纷纷投入人力、财力进行与视频编码有关产品的设计与生产。

第三,带动了很多芯片制造厂商设计基于多媒体通信、存储的通用或专用芯片,以便应用者更加方便对视频信号进行处理。

第四,视频编码国际标准H.263仍然采用类似于H.261的混合编码器,尤其是在信源编码器中,DCT、量化以及对量化系数的“Zig-Zag”字形扫描和二维VLC等处理与H.261建议一致的,但为了适应极低码率的传输要求,去掉了信道编码部分,并在许多方面作了改进,增加了非限制的运动矢量模式、基于语法的算术编码、高级预测模式、PB-帧模式这四个高级选项。这些改进的措施和高级选项的使用进一步提高了编码效率,在低码率下获得了较好的图像质量。

H.263标准不采用任何高级选项时,称为H.263的基本编码模式(Baseline),或称为H.263的缺省编码模式。其信源编码器仍然采用可减少时间冗余的帧间预测和可减少空间冗余的DCT变换编码相结合的混合编码方法。H.263解码器具有半像素精度的运动补偿能力,并允许编码器采用这种运动补偿方法构造重建帧,而不是H.261标准中采用的全像素精度和环路滤波器。H.263信源编码器结构除了去掉环路滤波器模块之外,其他与H.261基本相同。但在以下几个方面作了改进,以便适应极低码率的传输要求。

1、更加丰富的图像格式

H.263编码器除了支持H.261中的图像格式CIFQCIF之外,还增加了另外三种图像格式sub-QCIF4CIF16CIF,从而使H.263具有更广的应用范围,如表1所示。对每种图像,采用YUV 420的图像格式。色差采样点的位置与H.261相同,除了sub-QCIF格式之外,取样像素的纵横比和图像格式的纵横比一致,均为43

1H.263图像格式 

H.263解码器要求能对sub-QCIFQCIF格式的图像码流进行解码,但是不强求能对CIF4CIF16CIF格式的图像码流进行解码。同样H. 263编码器应该能够对sub-QCIFQCIF中任一种格式的图像进行编码,也不要求同时支持这两种格式,一些编码器也能对CIF4CIF16CIF格式的图像进行编码。在视频通信中,编解码器以何种格式图像进行通信,是通过外部手段如H.245标准中的编码器、解码器的能力协商来决定的。如果希望能对所有格式的图像进行编解码,需要通过H.245标准的终端描述通知H.263编解码器要具有这种能力。

2、半像素精度的运动估计

H.261中,宏块运动的估值精度为整数像素,范围为[-16+15],而在H.263中采用半像素精度,运动矢量的水平分量和垂直分量都有整型和半整型值。在H.263基本编码模式中,这些运动矢量的水平和垂直分量被限制在[-16.0+15.5]之间。在采用无限制运动矢量这一高级预测模式下,则被限制在[-31.5+31.5]之间。

更高精度的运动矢量,使得在P帧和PB帧图像中对宏块或块的预测更加准确,因而编码宏块和预测宏块的预测误差更小,编码所需的码字也更少,在视频码流中节省更多的比特数,或者说在相同的传输带宽下,采用半像素精度预测可以得到更好的图像质量。

3、双线性内插得到半像素预测

H.263中采用双线性内插来得到运动估计用的半精度像素的预测值,如图1所示。图1中是为了求得半像素精度的运动矢量而采用双线性内插得到的图像,黑方块点所在位置ABCD为整像素的位置,也表示所在点的亮度值。小圆圈的位置是内插出来的半像素位置,半像素位置abcd四点的亮度值分别为

aA

b=(A+B+1/2

c=(A+C+1/2

d=(A+B+C+D+2/4

按照这种方法,可以推理到其他半像素点位置的亮度值。

1双线性内插得到半像素点预测

用计算机处理时,用来表示图像阵列所用的坐标最小单位是1,因而表示坐标的指针变量或数组变量的下标其最小间隔为1。所以内插半像素精度的图像实际上是把原来图像扩大成2倍,坐标值是2的整数倍的位置点其亮度值与原来图像相同,而不在2整数倍位置处的点其亮度值采用上述双线性内插求得,但最后一行和最后一列的像素点不能直接用上式求得。在要求不严格的情况下,可以采用前一行或前一列的值来代替,如图2所示。如要求更加精确的半像素位置亮度值的图像,可以在原图像扩边的基础上,放大内插位于边缘的半像素位置处的亮度值。

2在计算机中处理半像素精度示意图 

4、基于块的运动估计

H.261建议中只对16×16像素的宏块进行运动估计,一个宏块对应一个运动矢量。而H.263标准中不仅可以用16×16像素的宏块为单位进行运动估计,还可以根据需要对8×8像素的子块进行运动估计,即每个宏块可使用4个运动矢量。运动估计需要两帧图像,一帧是当前正在编码的图像,另一帧是在此时刻前的输入图像(如求后向运动矢量,则是此时刻后的原始输入图像),被用来搜索最匹配宏块位置的。为了方便说明,分别用第k帧和第k-1帧来表示。在第k-1帧图像中,如果与第k帧编码宏块A最匹配的宏块位置B位于其右方或下方,则运动矢量的水平分量和垂直分量为正值,否则为负值。如图3所示是运动矢量的水平和垂直分量都为正值的情况所示。 

从解码端运动补偿预测的角度来看,当接收到的运动矢量水平分量和垂直分量为正时,就表明应该从重建参考帧图像中在空间上更右或更下方的点来补偿。

3运动矢量为正值时最匹配宏块的位置

5、更加有效的运动矢且编码

H.261中,对运动矢量采用一维前值预测与VLC相结合的方法编码,在H.263中则采用更为复杂的二维预测与VLC相结合的编码。

对运动矢量进行编码时,不是直接对矢量的水平分量和垂直分量值进行编码,而是对当前宏块的差分运动矢量即当前宏块的运动矢量与预测运动矢量的差值编码。当宏块只有一个运动矢量时(H.263基本模式),预测运动矢量采用编码宏块周围的三个宏块运动矢量的中值,如图4所示。从图4可以看出,当前编码宏块位于图4(a)情况下,其预测运动矢量就是左边宏块运动矢量MV1、正上方宏块运动矢量MV2和右上方宏块运动矢量MV3的中值。其余图4(b)、(c)、(d)三种情况,预测运动矢量也同样是MV1MV2MV3的中值。

PMVMedianMV1MV2MV3

这里MV1MV2MV3代表运动矢量的水平或竖直分量。如果当前编码宏块在GOB或图像的边界时,其周围三个宏块的运动矢量分别按以下方法处理。

上面宏块在GOB或图像的外部,则设MV2MV3MV1,如图4(b)所示;

左边宏块在图像的外部,则设MV1=0,如图4c)所示;

右上宏块在图像的外部,则设MV3=0,如图4(d)所示。

4宏块的预测运动矢量

求得预测运动矢量之后,就需要对当前编码宏块运动矢量与预测运动矢量求差值,即对差分运动矢量进行编码。对于每个宏块有多个运动矢量的情况下,也同样需要对差分运动矢量编码。

6、三维VLC编码

为了提高编码效率,H.263标准对宏块数据、宏块类型、运动矢量预测差值、子块编码模式以及DCT变换系数都使用VLC编码,并且规定了编码码字。编码事件用三个符号(LAST、RUN、LEVEL)的组合构成。LAST= 0,表示该块中还有更多的非零系数要编码,LAST=1表示这是块中的最后一个要编码的非零系数。RUN表示要编码的系数之前连续0的个数,LEVEL表示编码系数的非零值。对应于这样一个三维组合的事件就用一个给定的码字来表示,如表2所示。

23D VLC编码码字

© 2004-2024 通信人在线 版权所有 备案号:粤ICP备06113876号 网站技术:做网站