目录
H.261 视频编码标准
H.261的编码与解码
1) 帧内/帧间编码
2)运动补偿
3)量化
4)环路滤波器
5)缓存器
压缩数据的分层
数据复用结构
H.264的编码与解码
H.261 视频编码标准
实际应用时,要求有强实时性、同步性以及最小的延迟时间。
编解码原理框图:
H.261的编码与解码
H.261 标准的编解码器原理框图如上图4-7所示。由于视频解码过程是其编码的逆过程,不同之处仅在于不需要做运动估计,运动矢量和其他所需信息直接从 VLC解码器得到,因此这里主要介绍 H.261 编码过程。
H.261 编码器的核心是采用运动补偿的帧间预测、二维 DCT、量化和可变长编码 VLC 的混合编码算法,其中,二维 DCT 以一个块(B)为基本单元。
1) 帧内/帧间编码
在H.261 编码过程中,不仅采用帧内编码模式,同时还采用帧间编码模式。
帧内和帧间模式的选择由编码控制电路自动控制。为了自动决定输入宏块MB 应采用帧内还是帧间编码,需要先找到判据,将前帧图像存储在存储器内,后一帧图像来到时,比较前后两帧图像的相关性,若相关性强则采用帧间编码,相关性弱,则采用帧内编码。这里的判据是以宏块为单位进行的。
第一帧要进行帧内编码,这一帧称为帧内帧(Intraframe),用表示,之后可传送帧、帧。帧是用它前面的帧作为参考帧经过前向预测编码得到的,它也可以作为下一个帧的参考帧。 帧是用邻近的帧(或帧)、帧为参考帧经双向预测所得。通常情况下,每12 帧或15帧图像中传送一帧帧,每3帧或4帧图像中传送一帧帧。每次场景更换时,第一帧为I 帧。
由于相邻帧具有很强的相关性,H.261允许每两个参考帧之间传送3个B帧。若参考帧为帧、帧,则:计算第一个B帧时,可用公式B=3xI/4 + 1xP/4;计算第二个B帧时,用公式 B=(I+P)/2;计算第三个B帧时,用公式 B=1×1/4+3xP/4。
输入图像信号为CIF 或QCIF 格式,8x8像素一块(B)。进行帧间编码时,当前图像块与预测图像块相减,得到预测差值,同时要产生预测帧。差值信号进行 DCT 变换,变换前每个B为8×8=64个8比特像素值,变换后得到64个 DCT 系数值,代表不同空间频率分量的幅度。在对 DCT 系数进行量化(Q)并取整后,采用 zigzag字形扫描将块内数据排列成一维数据串,进行游程长度编码,得到符号组序列,再对符号组进行可变长编码(VLC)。
量化后的 DCT 系数须经过反量化IQ 和IDCT 处理,形成重建帧并存入帧存储器,再经过运动补偿和滤波后产生预测帧.
2)运动补偿
运动补偿可使预测误差达到最小。
运动估计是以宏块为单位的,通过块匹配搜索得到运动矢量。运动矢量在用于构建预测帧的同时被送到 VLC编码输出,供解码用。
通常,运动估计只针对亮度信号进行,所得的运动矢量既用于亮度信号也用于色度信号,只是在用于色度信号时需要将运动矢量减半。
3)量化
在H.261 标准中,量化采用了32个线性量化器。其中,1个专门用于DC 系数,其量化步长为8;其余31个用于 AC 系数,量化步长分别为2,4,,62,具体选择哪一个由码率控制器决定。除DC 系数外,一个宏块(MB)中使用同一个量化器。
和JPEG标准一样,量化后的 DCT 系数也将经 Zigzag 扫描后送入可变长编码器 VLC进行二维游程长度编码。
4)环路滤波器
环路滤波器是一个二维空间低通滤波器,用于消除高频杂波,即消除边缘赝像。这是因为在帧间编码时,运动补偿过程仅仅是一个逼近过程,对高频分量匹配比较差,容易产生高频杂波。环路滤波器只有在检测到非零运动矢量时才切入,且以宏块为单位进行切入、切出。
5)缓存器
数据编码过程产生的码率不是恒定的,而是随着每帧图像的编码类型和图像内容的统计特性变化的。但传输网络中数据的码率必须恒定,因此在编码器的输出端必须用缓存器来平滑输出的数据率。
为避免发生缓存器溢出的情况,需要一个缓存器码率控制器来控制其输入码率。实际工作时,码率控制器根据缓存器的数据占有率控制量化器的量化步长,即当缓存器占有率高(即将被占满)时增大量化步长,缓存器占有率低(即将为空)时减小量化步长,从而调节输入到缓存器的码率。
压缩数据的分层
为了有秩序地传输每帧图像的数据,并有利于图像数据交换和设备兼容,把一帧图像数据分成4层:帧、块组(Group Of Block,GOB)、宏块 MB 和数据块B。
最小处理单元为8x8 像素块(B),然后按4:2:0的比例对亮度和色度块进行抽样,组成一个宏块(MB macro block);一定数量的 MB 构成块组GOB,片?:若干个 GOB构成一帧图像。
1)数据块 B
数据块是最小的块,由8x8个像素组成。亮度和色度均采用8x8的数据块作为基本编码单元。
2)宏块 MB
一个 MB 由6个数据块B组成,其中包括4个亮度块、2个覆盖同样面积但分辨率为其 1/4的色度块块和块,数据块的排列顺序如图4-8(a)所示。----4:2:0的比例-
3)块组 GOB
一个 GOB 包含33个宏块 MB,其中,横向11个,纵向3个。排列次序如图4-8(b)所示。
4)CIF 帧
1帧 CIF 图像由12个GOB 构成,排列次序如图4-8(c)所示。显然:
1GOB=12×33MB=396x[4(Y)+1(Cb)+1(Cr)] B =2376B
1GOB=2376×8x8=152064 像素
对于 QCIF 格式图像,由于它的像素数只有 CIF 格式的1/4,所以每帧 QCIF 图像只含有3个GOB,如图 4-8(d)所示。
(CIF:即视频会议中通用的影像传输格式。分辨率为352x288像素,图像传输速率可达每秒30帧,符合ITUH.261视频会议数据传输协议。)
数据复用结构
------------待补充
H.264的编码与解码
与H.261一样,H.264 编码器采用的仍是 变换+ 预测的混合编码法。如图所示,编码器有两条主要的数据流路径,一条是从左——> 右,完成编码;一条从右——> 左,完成重建。
编码器以宏块为单位处理输入的帧或场,具体又分为帧内预测编码和帧间预测编码:
(1)在帧内编码模式中,其预测值 PRED(图中用P表示)由当前帧中的已编码宏块经解码、重构预测获得;
(2) 在帧间编码模式下,P由当前片中前面已编码的参考图像经运动补偿(MC)后得到,其中参考图像用表示。
将预测值 PRED 和当前块相减,即可得到一个残差块, 经DCT 变换、量化后产生一组量化后的变换系数 ,再经熵编码,与解码所需的一些信息(如预测模式、量化参数、运动矢量等)一起组成一个压缩后的码流,进入网络提取层 NAL,供传输和存储用。
正如前面述,为了提供进一步预测用的参考图像,编码器必须有重建图像的功能。因此,先对残差图像进行反量化、DCT 逆变换以得到,然后将与预测值 P 相加,得到。为了去除编码解码环路中产生的噪声,提高参考帧的质量,进而提高压缩性能,这里设置了一个环路滤波器,滤波后的输出,即为重建图像,可用作参考图像(如用于对的编码)。
下图给出了H.264的解码过程。首先,解码器从网络提取层 NAL 接收压缩比特流。经过熵解码和重排序,得到量化后的系数,然后进行反量化、DCT 逆变换生成残差宏块。
另一方面,解码器从码流中解析出头信息,利用这些头信息得到该残差宏块的预测宏块P。
考虑到该预测宏块 P与编码器的原始预测宏块P相同,这样,P与残差宏块相加即可得到重建块,再进行滤波即可得到最终的解码帧(重建帧)。