关于H.264概述

来源:互联网 发布:淘宝怎么不让别人看 编辑:程序博客网 时间:2024/05/20 01:38

有一个问题,在场景变得复杂,出现水波纹现象;

       或者亮度降低之后,图像出现卡死的现象;

分析,场景变得复杂之后或者亮度降低,都会导致数据量增大,USB带宽不够,则就会出现卡死现象;

   

H.264压缩模式

CVBR:帧率固定,比特率可调,比特率达到极限时Q值可调;

   设置bitrate为3840000时几乎没有波纹,1080P60都比较流畅;

CQCB:比特率固定,Q值可调,Q值达到极限时,帧率可调;

CQCB:Q值固定,比特率可调,比特率达到上限,帧率可调;

NONE:Q值固定,比特率可调;



7、编码视频序列

 

一个编码视频序列由一串连续的存储单元组成,使用同一序列参数集。每个视频序列可独立解码。编码序列的开始是即时刷新存储单元(IDR)。IDR是一个I帧图像,表示后面的图像不用参考以前的图像。一个NAL单元流可包含一个或更多的编码视频序列。

三、视频编码层

视频编码层在原理上与MPEG2是一致的,采用变换编码,使用空间和时间预测的混合编码。图1是一个宏块的视频编码层的框图。总之图像划分成块,一个序列的第一个图像,即随机存取点,典型是帧内编码,帧内每个采样的预测只利用帧内已编码的空间相邻的采样,选择哪些相邻采样进行预测,以及如何预测,这些附加信息必须同时被传送到解码器同步处理。随机存取点之间的图像使用帧间编码。

为了实现下一块或下一个图像的预测,编码器包含一个解码器,对量化变换系数进行与解码器解码相同的反量化和反变换过程,导出解码预测残余,解码残余与预测相加,结果送到去块效应滤波器,产生解码视频输出。

1、图像、帧和场

一个编码视频序列由连续的编码图像组成,编码图像可以是整个一帧图像,也可以是一场图像。H.264/AVC编码是基于几何概念的表示方法,而不是基于定时的概念。

 

2YcbCr色度空间和4:2:0采样

人的视觉特性按照亮度和色度信息分别感知世界。视频的传输可以利用该特性减少色度信息传送。H.264/AVC目前采用与MPEG-2主类相同的4:2:0采样结构、8比特精度,高精度颜色和高比特精度的建议正在讨论中。

 

3、宏块划分

每个视频图像帧或场都可以划分为固定大小的宏块,宏块是解码的基本模块单元,通常是一个16×16亮度像素和两个8×8彩色分量像素的长方型区域。所有宏块的亮度和色度采样在空间或时间上进行预测,对预测残余进行变换编码。

 

4、像条和像条组

像条由宏块组成,像条是图像的子集,包含图像参数集,语法元素可以被分析,图像可以被独立解码。按照宏块映射表规定的顺序,在位流中安排宏块的传输顺序,而不是按光栅扫描顺序。

利用像条组的概念,H.264/AVC支持灵活宏块排序特性(FMO)。FMO改变了图像划分为像条和宏块的方式。每个像条组是多个宏块集合,通过宏块到像条组的影射表定义,该影射表在图像参数集中指定。每个宏块有一个像条组标识号,所有像条组标识号构成宏块到像条组影射表。每个像条组由一个或多个像条组成,因此像条是一个宏块序列,同一像条组中的宏块,按光栅顺序处理。

利用FMO,图像可以划分为许多宏块扫描图样,例如交织图样、点缀图样,一个或多个前景像条组、剩余像条组,或棋盘型图样影射等。每个像条组分别传送,后两种如图2所示,左边宏块到像条组的影射证明在关注局部型的编码应用中非常有用。右边宏块到像条组的影射证明适合保密型会议系统等应用。

无论是否使用FMOH.264/AVC支持5种像条编码类型:

I像条:最简单的编码类型,所有的宏块不参考视频序列中其他的图像。

P像条:除了I像条编码类型外,P像条的部分宏块可以利用帧间预测,每个预测块至多可使用一个运动补偿预测信号。

B像条:除了P像条编码类型外,B像条的部分宏块可以利用帧间预测,每个预测块可使用两个运动补偿预测信号。

以上三种与以前的标准相似,主要是参考图像不同,其余两种像条类型是SP(切换PSI(切换I),是新的类型,用于在不同位率编码码流之间进行有效切换。

SP像条: 称作切换P像条,能在不同编码图像之间有效地切换。

SI像条:称作切换I像条,允许SP像条的宏块完全匹配,达到随机读取数据进行解码和恢复错误的目的。

 

5. 宏块的编解码过程

所有宏块的亮度和色度采样要进行空间或时间的预测,对预测的残余进行变换编码,为了实现变换编码,每个颜色分量的预测残余要再划分为更小的4×4块,每块利用整数变换,变换系数被量化,最后是熵编码。

如图1所示,一个宏块视频编码层的方框图,输入的视频信号划分为宏块,映射宏块和像条组的关系,逐个选择像条,处理像条中每个宏块。

 

6、自适应帧/场编码操作

在隔行扫描帧中,当有移动的对象或摄像机移动时,与逐行相比,两个相邻行倾向减少统计的相关性,这种情况应比每场分别压缩更为有效。为了达到高效率,H.264/AVC在编码帧时,有以下可选方案:

● 结合两场成一个完整帧,作为帧编码,称为帧模式。

● 两场分别编码,称为场模式。

● 结合两场成一个完整帧,作为帧压缩。在编码时,划分垂直相邻的两个宏块对成两个场宏块对或帧宏块,再进行编码。

每帧图像可自适应选择3种模式之一进行编码。在前两种之间进行选择称为图像自适应帧/场编码(PAFF),当一帧作为两场编码时,每场划分为宏块,编码方式与帧编码方式很相似,主要有下面的例外:

● 运动补偿用参考场,而不是参考帧。

● 变换系数的之字型扫描方式不同。

● 宏块水平边沿去块滤波器的强度不选用,因为场行在空间上是两倍帧行的距离。

在研制H.264/AVC标准时,据报道,采用ITU-601分辨率,PAFF编码技术与帧编码相比可减少码率16%20%

如果图像由运动区和非运动区混合组成,非运动区用帧模式、运动区用场模式是最有效的编码方法。因此每个垂直宏块对(16×32)可独立选择编码(帧/场)模式。这种编码选择称为宏块自适应帧/场编码(MBAFF)。对于帧模式宏块对,每个宏块包含帧行,对于场模式宏块对,顶部宏块包含顶场行,底部宏块包含底场行。

处理场宏块对的每个宏块与帧PAFF模式相似,然而,因为在MBAFF帧中发生场/帧宏块对混合,需要修改用作下列用途的方法:

● 之字型扫描。

● 运动矢量预测。

● 帧内预测模式的预测。

● 帧内预测帧采样精度。

● 去块效应滤波器。

● 上下文模型的熵编码。

主要思想是尽可能保留多的空间一致性,MBAFF帧的空间相邻的规范相当复杂,下面讲到的空间相邻都是指非MBAFF帧。

MBAFF PAFF的另一个重要区别是:使用MBAFF方法,一个场不能使用同一帧的另一个场中的宏块作为运动补偿参考。这样,有时PAFFMBAFF编码更有效,特别是在快速全局运动、变换场景、图像刷新等情况下。

在开发MBAFF标准期间,据报道,采用ITU-601分辨率,MBAFF编码技术比PAFF相比可减少码率14%16%

 

7、帧内预测

根据像条编码类型,每个宏块可以选择几种编码类型之一。所有像条类型支持两级帧内编码,称为INTRA-4×4 INTRA-16×16

INTRA-4×4模式基于分别预测每个4×4亮度块,适合表现图像细节部分。而INTRA-16×16模式将整个16×16亮度块进行预测,适合平滑图像区。此外对这两种亮度预测类型,色度单独进行预测。作为INTRA-4×4INTRA-16×16的另一种选择,I_PCM编码类型允许编码器简单跳过预测和变换编码过程,直接发送采样值。I_PCM允许编码器精确地表示采样,通常表示一些反常图像,而没有明显增加数据量。

 

8、帧间预测

● p像条帧间预测

除了帧内宏块编码类型外,P像条宏块使用多种预测类型,即运动补偿编码类型。为了方便运动描述,每个P型宏块对应于指定的固定大小的宏块划分。亮度块的划分大小为:16×1616×88×168×8

语法允许运动矢量跨越图像边界,这种情况参考帧需用外插法推算出图像外的采样值。利用邻近块的平均或方向预测,用差分编码计算运动矢量。

语法支持多图像运动补偿预测,以前编码的多个图像都可用作运动补偿参考,每个运动补偿需要指示参考图像的索引。一个8×8块划分成的小于8×8块的运动补偿使用同一参考图像索引,该功能要求编码和解码器具有多帧图像缓冲器,解码器通过位流中的管理控制操作信息与编码器同步。

除了运动补偿宏块模式外,P宏块可使用P_Skip模式,这种模式没有量化预测误差、不用传送运动矢量和参考索引参数。信号重建与P_16×16宏块类型预测信号类似,采用多帧缓冲区索引0的图像作为参考图像。重建P_Skip宏块的运动矢量与16×16块运动矢量预测类似。P_Skip编码类型适合没有变化或固定运动的区域,如摇镜头等,有极高的压缩率。

● B像条的帧间预测

B像条相对P像条的概念与以前的标准类似,但有些不同,B像条可以作为运动补偿预测的参考图像,B像条可以对两个补偿预测值进行加权运算。

 

9、变换和量化

与以前的视频编码标准类似,H.264/AVC利用预测残余变换编码。然而,H.264/AVC变换施加4×4块上,不用离散余弦变换(DCT),采用与离散余弦变换相似特性的整数变换。因为使用整数运算,所以反变换没有误差。

 

10、熵编码

H.264/AVC支持两种熵编码方法,最简单的熵编码方法是:对所有的语法元素,除了量化系数外,使用单一无限可扩展的码字表。这样不必为每个语法元素设计一个专用的VLC表,只需要按照数据的统计特性,客户化影射到单一码字表。使用exp-Golomb码建立单一码表,具有很简单、有规则的解码特性。

为了有效传送量化的变换系数,CAVLC(上下文自适应的可变长编码)是很有效的方法。在该方案中,对于各种语法元素的VLC码表按照已传送的语法元素可以进行切换。因为VLC表设计匹配相应的条件统计,改善了熵编码的性能。

H.264/AVC中的算术编码引擎,与概率相关的估计等都不使用乘法操作,而是使用简单的移位和查找操作,与CAVLC操作相比,CABAC典型减少码率5%15%。在隔行扫描视频,效果更明显。

0 0