视频压缩编码标准

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Xminyang/article/details/81704175

一、总体介绍思维导图

思维导图

二、详细叙述

1、绪论

1.1 信息化与视频通信

信息就是客观世界的描述和分析,它无处不在,无时不在,具有通用性、抽象性、无限性三个特征。地球上的物质资源是有限的。石油、煤等在一定期限总会被开采尽,但信息资源是无限的。对客观规律性的探讨是无尽的。信息要通过不断研究、不断分析,通过科学研究、反复实践来加以利用。
信息化是指“在现代信息技术广为普及的基础上,通过开发和利用信息资源,各种社会和经济活动的功能和效益显著提高了,人类社会的物质和精神文明达到了一个新的水平。”
90年代Internet的迅猛发展,促进了IP技术应用普及到各个方面,例如网上教育、远程医疗、电子商务、电子政务、电子游戏等。通信业务已从电话、传真、电报发展为可视电话、会议电视、视频点播等,即由音频为主发展为以视频为主的多媒体通信。

1.2 视频信息和信号的特点

直观性、确切性、高效性、广泛性、高带宽性

1.3 视频压缩编码要求和可能性

1.3.1 视频压缩编码的两个目标
1)必须压缩在一定的带宽内,即视频编码器应具有足够的压缩比;
2)视频信号压缩之后,应保持一定的视频质量。可用两个标准来衡量:主观质量,由人从视觉上进行评定;客观质量,通常用信噪比(S/N)表示。

1.3.2 视频压缩的可能性
1)预测编码
利用帧内的相关性和帧间的相关性,即找到相应的参考像素或参考帧作为预测值,可以实现视频压缩编码。
2)变换编码
大量统计表明,视频信号中包含着能量上占大部分的直流和低频成分,即图像的平坦部分,也有少量的高频成分,即图像的细节。则可用变换编码将图像经过某种数学变换进行压缩。

1.4 视频压缩编码技术综述

1)视频编码系统的基本结构如下图所示:

视频编码系统

其中,视频编码方法与可采用的信源模型有关。如果采用“一幅图像由许多像素构成”的信源模型,这种信源模型的参数就是每个像素的亮度和色度的幅度值。对这些参数进行压缩编码技术称为基于波形的编码。如果采用一个分量有几个物体构成的信源模型,这种信源模型的参数就是各个物体的形状、纹理和运动。对这些参数进行压缩编码的技术称为基于内容的编码。

2)基于波形的编码
利用像素间(帧内)的空间相关性和帧间的时间相关性,采用预测编码和变换编码技术可大大减少视频信号的相关性,从而显著降低视频序列的码率,实现压缩编码的目标。
基于波形的编码采用了把预测编码和变换编码组合起来的基于块的混合编码方法。
自1989年ITU-T发布第一个数字视频编码标准----H.261以来,已陆续发布了H.263等视频编码标准及H.320、H.323等多媒体终端标准。ISO下属的运动图像专家组(MPEG)定义了MPEG-1、MPEG-2、MPEG-4等娱乐和数字电视压缩编码国际标准。
2003年3月,ITU-T颁布了H.264视频编码标准。它不仅使视频压缩比较以往标准有明显提高,而且具有良好的网络亲和力,特别是对IP互联网、无线移动网等易误码、易阻塞、QoS不易保证的网络视频传输性能有明显的改善
所有这些视频编码都采用了基于块的混合编码方法,都属于基于波形的编码。

3)基于内容的编码
虽然基于块的编码易于操作,但由于人为的把一幅图像划分为许多固定大小的块,当包含边界的块属于不同物体时,它们分别具有不同的运动,便不能用同一个运动矢量表示该边界的运动状态。如果强制划分为固定大小的块,这种边界块必然会产生高的预测误差和失真,严重影响了压缩编码信号的质量。
而基于内容的编码技术先把视频帧分成对应于不同物体的区域,然后对其编码;即对不同物体的形状、运动和纹理进行编码;在最简单情况下,利用二维轮廓描述物体的形状,利用运动矢量描述其运动状态,而纹理则用颜色的波形进行描述。

4) 三维视频编码
视频编码的发展方向之一,除平面信息外增加了深度信息,数据量非常庞大。
有两种类型:一、基于波形的,它组合运动补偿预测和位差补偿预测。位差估计是在两幅不同图像种寻找对应的点。二、基于物体的,它直接对成像物体的三维结构和运动进行编码。当物体结构简单时,可获得非常高的压缩比。
三维物体序列编码系统

2、数字视频

2.1 数字电视基本概念

1)数字电视的优越性
1.1)失真小、噪声低、质量高。
模拟电视信号在放大、处理、传输、存储过程中,难免会引入失真噪声,而且多种噪声与失真叠加到电视信号后,不易去除,且会随着处理次数和传输距离的增加不断积累,导致图像质量及信噪比的下降。
相反,数字电视信号没有上述的噪声累积效应。如下图所示,只要噪声电平不超过脉冲幅度的一半,就可用脉冲再生技术对其整形,并恢复成0或1两种电平,便不会引入噪声。但由于信号的数字化必须要经过取样、量化、编码三个基本步骤,故量化噪声不可避免,但可控制在相当低的电平以下。
数字电视信号抗噪声能力

1.2)易处理、易校正
1.3)容量大、节目多

2)数字电视的PCM原理
将输入的模拟电视信号变成输出的数字电视信号需经过取样、量化、编码,该过程由A/D变换器完成。
PCM原理

2.1)取样
就是在时间轴上把连续变化的模拟信号变为离散量的过程。
2.2)量化
取样后的脉冲信号在时间上是离散的,但在幅值空间上仍是连续的,即其可能取的值有无限多个,这就需要对它采取四舍五入的方法,将其可能的幅值由无限多个变为有限个值。这种将信号幅值由连续量变成离散量的过程称为量化。
2.3)PCM编码
对于量化后的信号,通常用“0”和“1”表示,即用二进制码表示。这时的编码称为脉冲编码调制----PCM编码。模拟电视信号经取样、量化、编码后得到的二进制序列,即是数字电视信号。
2.4)A/D与D/A变换
上述取样、量化、编码过程均由A/D变换器完成。反之,数字信号的解码、反量化、恢复成模拟信号的逆过程则由D/A变换器完成。

2.2 数字电视信号

1)电视信号的时间和空间取样
2)彩色空间
黑白图像的每个像素只需一个幅值表示其亮度即可;彩色图像的每个色素则至少需要3个值表示其亮度和色度。所谓色度空间即表示彩色图像的亮度与色度的方法。
2.1)RGB
总所周知,任何彩色图像可由不同比例的红色、绿色和蓝色组合而成,即三基色原理。这种表示彩色图像的方法即RGB彩色空间。
彩色显像管(CRT)和液晶显示器件(LCD)可显示彩色图像,彩色摄像机中的电荷耦合器件(CCD)等传感器可产生彩色电视图像,都是根据RGB原理获得的。
2.2)YUV
人类视觉系统(HDV)对亮度比彩色更敏感,因此可以把亮度信息从彩色信息分离出来,并使之具有更高的清晰度,彩色信息的清晰度较低些,可显著压缩带宽,实现视频压缩的一部分,人的感觉却没有不同。

3)彩色电视取样格式
有三种不同的彩色电视取样格式,如下图:
彩色电视取样格式
其中,4:4:4,Y、Cb和Cr具有同样的水平和垂直清晰度,在每一像素位置,都有Y、Cb和Cr分量,即不论水平方向还是垂直方向,每4个亮度像素相应的有4个Cb和4个Cr色度像素。
4:2:2,这时彩色分量和亮度分量具有相同的垂直清晰度,但水平清晰度彩色分量是亮度分量的一半。水平方向上,每4个亮度像素具有2个Cb和2个Cr。在CCIR601标准中,这是分量彩色电视的标准格式。
4:2:0,在水平和垂直清晰度方面,Cb和Cr都是Y的一半。这个名词在历史上一直称呼,但似乎不合乎逻辑。该格式广泛应用于数字电视、会议电视、DVD等。

2.3 视频信号的预处理

一个基本的视频处理和通信系统大致如下图所示,主要包括采集、预处理、视频编码、通信、图像处理及显示等。
视频处理和通信系统
图像采集的功能由图像传感器实现,目前图像传感器主要有电荷耦合器件(CCD,charge coupled devices)和CMOS传感器,前者技术发展成熟,具有高解析度、低噪声、动态范围大等优点,在高端产品中得到广泛应用,后者随着半导体技术的发展,以其低成本、高的集成度、低功耗等占领了低端市场,且随着技术的不断发展,CMOS图像传感器的一些参数性能指标已达到或超过CCD。但无论是CCD还是CMOS传感器在将实际景物转换为图像信号时总会引入各种噪声和畸变失真,因此需要对图像传感器的图像进行预处理,包括伽马校正、图像插值、图像校正、白平衡、图像增强以及增益控制等技术,一方面改善图像的质量,另一方面,可使图像有利于视频编码的处理。
其中,图像增强(Image Enhancement)作为一种重要的图像处理技术,目的是为了更适合人眼的感觉,有利于后续的分析处理。它主要包括直方图均衡、平滑滤波、中值滤波、锐化等内容。图像增强后,有利于视觉的效果和后续的处理,消除了相关性和高频噪声,有利于图像的压缩和处理,节省带宽。

2.4 视频质量

1)主观质量的评定
由于个人的视觉系统(HVS)不尽相同,对视频内容的熟悉程度也不一样。为了减少主观随意性,在对视频图像主观评定前,选若干名专家和非专家作为评分委员,共同利用五项或七项评分法对同一种视频图像进行压缩编码图像评定,最好按加权平均法则对该压缩后的图像质量进行主观评定。
主观评价分数标准
测试方法可用随机次序请评委观察比较原始图像和压缩编码的图像,国际上称为DSCOS的测试系统如下图所示:
测试系统

2)客观质量的测量
客观质量的测定方法速度快、易实行,但往往不会太符合人眼的视觉感受,只能说大体上的质量。最常用的测试标准是峰值信号与噪声之比(PSNR):
PSNR(dB)=10 lg (2^n - 1)^2 / MSE
其中,MSE为原始和编解码后图像之间的均方误差,(2^n - 1)^2 为图像种最大可能的信号值平方,n表示每个像素的比特数。
一般情况下,PSNR越高视频质量越好;反之亦然。

3、视频压缩编码的基本原理

3.1 预测编码

预测法是最简单和实用的视频压缩编码方法,这时压缩编码后传输的并不是像素本身的取样幅值,而是该取样的预测值和实际值之差。

3.2 变换编码

绝大多数图像都有一个共同的特征:平坦区域和内容缓慢变化区域占据一幅图像的大部分,而细节区域和内容突变区域则占小部分。也可以说,图像中直流和低频区占大部分,高频区占小部分。这样,空间域的图像变换到频域或所谓的变换域,会产生相关性很小的一些变换系数,并可对其进行压缩编码,即所谓的变换编码。
变换中有一类叫做正交变换,可用于图像编码。自1968年利用快速傅里叶变换(FFT)进行图像编码以来,出现了多种正交变换编码方法,如K-L变换、离散余弦变换(DCT)等等。其中,编码性能以K-L变换最理想,但缺乏快速算法,且变换矩阵随图像而异,不同图像需计算不同的变换矩阵,因而只用来参考比较。DCT编码性能最接近于K-L变换,略次而已,具有快速算法,广泛应用于图像编码。
K-L变换、离散余弦变换(DCT)、锯齿形扫描和游程编码。

3.3 变换编码与预测编码的比较

变换编码实现比较复杂,预测编码的实现相对容易,但预测编码的误差会扩散。以一行为例,由于后面像素以前面像素作为参考,前面像素的预测误差会逐步向后面像素扩散。而在二维预测时,误差会扩散至后面几行,形成区域误码。这样一来,信道误码率要求提高。相比之下,变换编码则不会误码扩散,其影响只限制在一个块内,而且反变换后误码会均匀分散到块内各个像素上,对视觉几乎没有影响。
两者各有优缺,特别是变换编码随着VLSI技术的飞跃发展,实现起来也容易。现实中,往往采用混合编码方法,即对图像先进行带有运动补偿的帧间预测编码,再对预测后残差信号进行DCT变换。这种混合编码方法已经成为许多视频压缩编码国际标准的基本框架。

3.4 熵变换

利用信源的统计特性进行码率压缩的编码就称为熵编码,也称为统计编码。视频编码常用有两种:变长编码(哈夫曼编码)和算术编码。
1)变长编码
1952年,哈夫曼提出变长编码方法:对出现概率大的符号分配短字长的二进制,对出现概率小的符号分配长字长二进制码,得到符号平均码长最短的码。举例如下:
哈夫曼编码

2)算术编码
算术编码采用一个浮点数来代替一串输入符号,经算术编码后输出一个小于1,大于或等于0的浮点数,在解码端被正确地唯一解码,恢复原符号序列。举例如下:

设:输入序列为abac,p(a)=1/2,p(b)=1/4,p©=1/4,求算术编码输出序列?
解:
编码:
(1)列出各符号出现概率值;在(0,1)区间内,每个字符根据其概率选定范围;如下表所示:
符号出现概率

(2)开始时,先读入信号”a“,因为其在最初始区间是[0.00,0.50),所以读入”a“后编码区间就变成[0.00,0.50);
(3)然后读入”b“,由于其在初始区间内是占据整个区间的1/23/4,因此对应其也要占这个编码区间的1/23/4,因此编码区间变为[0.25,0.375);
(4)之后读入“a”,由于其在初始区间内是占据整个区间的01/2,因此对应其也要占这个编码区间的01/2,因此编码区间变为[0.25,0.3125);
(5)最后读入“c”,由于其在初始区间内是占据整个区间的3/41,因此对应其也要占这个编码区间的3/41,因此编码区间变为[0.046875,0.3125);并制作如下表:
这里写图片描述
这里,我们取输出为0.046875.

解码:
(1)待解码数据0.046875在[0.00,0.50)内,因此第一个码值为“a”;
(2)待解码数据0.046875在区间[0.00,0.50)的1/2~3/4内,故第二个码值为“b”;
(3)同理可得,后续码值依次为“a”、“c”;也即解码结果为abac。

4、视频编码标准简介

1986年,ISO和CCITT成立了联合图像专家组(JPEG, Joint Photographic Exports Group),研究连续色调静止图像压缩算法国际标准,1992年7月通过了JPEG标准。
1988年,ISO/IEC信息 技术联合委员会成立了活动图像专家组(MPEG, Moving Picture Export Group)。1991年公布了MPEG-1视频编码标准,码率为1.5Mbps,主要应用于家用VCD的视频压缩;1994年11月,公布了MPEG-2标准,用于数字视频广播DVB、家用DVD的视频压缩及高清晰度电视(HDTV)。码率从4Mbps、15Mbps直至100Mbps分别用于不同档次和不同级别的视频压缩中。
1995年,ITU-T推出H.263标准,用于低于64Kbps的低码率视频传输,如PSTN信道中可视会议、多媒体通信等。后续又分别公布了H.263+、H.263++等标准。
1999年12月份,ISO/IEC通过了“视听对象的编码标准”----MPEG-4,它除了定义视频压缩编码标准外。还强调了多媒体通信的交互性和灵活性。
2003年3月,ITU-T和ISO/IEC正式公布了H.264视频压缩标准,不仅显著提高了压缩比,而且具有良好的网络亲和力,加强了对IP网、移动网的误码和丢包处理。

4.1 H.263标准

H.263共有五种图像格式,如下图所示:
H.263标准图像格式

H.263输入有多种格式,输出为H.263码流。传输码率最初定为低于64Kbps,但实际上其应用范围已远远超出低码率图像编码范围,如16QCIF已是高清晰度电视水平。为了适应低码率传输要求,并进一步提高图像质量,H,263+、H.263++做了不少改进,增加了若干选项,主要技术为运动矢量、半像素预测、二维预测、非限制的运行矢量模式、基于句法的算术编码、高级预测模式、PB帧模式。

4.2 JPEG-2标准

1991年3月ISO/IEC正式通过了静止图像压缩编码标准,称为JPEG建议。JPEG标准分为基本系统、扩展系统和信息系统三个部分。
JPEG基本系统编解码器结构如下:
JPEG基本系统

5、MPEG-4压缩编码标准

多媒体技术获得使用的关键技术之一就是解决视频、音频数字化后数据量大与数字存储媒体和通信网带宽小的矛盾,为此国际标准化组织先后于1993年和1995年制定了视音频压缩编码标准MPEG-1和MPEG-2,使数字视频和数字电视成为现实。
MPEG-4于1999年正式成为国际标准,与前面两个标准相比,MPEG-4更加注重多媒体系统的交互性和灵活性,主要应用于可视电话、视频会议等。MPEG-4标准主要包括视音频对象编码工具集和编码对象句法语言两个部分。

5.1 MPEG-4标准概述

MPEG-4初衷是针对视频会议、可视电话的超低比特率编码的。而在实际中,高能通用芯片性价比提高使得基于软件平台的压缩编码具有实用可能,且人们在对视频信息的应用需求从播放型逐渐转到基于内容的访问和操作型。为此,MPEG-4制定了新的目标:支持多种多媒体应用,侧重于多多媒体信息内容的访问,可根据应用要求配置解码器。
MPEG-4标准的编码基于对象,便于操作和控制对象。在比特率控制时,即使在低带宽条件下,MPEG-4也可利用码率分配方法,对用户感兴趣的对象多分配比特率,对其他则少分配比特率,保证主观质量。MPEG-4的对象操作使用户可在终端直接将不同对象进行拼接,得到用户合成图像。
MPEG-4具有很好的扩展性,可进行时域和空域的扩展。时域扩展是指在带宽允许时增加帧率,在带宽窄时减少帧率,以达到充分利用带宽;空域扩展是指对图像进行采样插值,增加或减少空间分辨率。
MPEG-4为了支持高效压缩、基于内容交互和基于内容分级扩展,以基于内容的方式表示视频数据,引入AVO(Audio/Video Object)的概念实现基于内容的表示。

5.2 MPEG-4标准构成

MPEG-4提供自然和合成的音频、视频以及图像的基于对象的编码工具,主要部分为系统、视频和音频。MPEG-4码流主要包括基本码流和系统流。基本码流包括音视频和场景描述的编码流表示,每个基本码流只包含一种数据类型,并通过各自的解码器解码;系统流则指定根据编码视听信息和相关场景描述信息产生交互方式的方法,并描述其交互通信系统。

1)系统
MPEG-4系统将音视频对象及其组合复用成一个场景,提供与场景互相作用的工具,使用户具有交互能力,其系统终端模型如下图:
MPEG-4终端模型
其中,压缩层是执行媒体解码的系统组件;同步层负责各个压缩媒体的同步和缓冲;传输层是对已经存在的各种传输协议描述。

2)音频
MPEG-4不仅支持自然声音,还支持合成声音。MPEG-4音频部分将音频的合成编码和自然声音的编码相结合,并支持音频的对象特征。

3)视频
MPEG-4支持对自然和合成视觉对象的编码。合成的视觉对象包括2D、3D动画和人面部表情动画等,MPEG-4的视频编码框架如下:
视频编码框架

5.3 MPEG-4编码技术

1)形状编码
2)可扩展性编码
视频的可扩展性意味着能够同时得到该视频的多个分辨率或者不同质量,即通过特殊方法产生一个编码表示,使编码器得到这个视频的多个分辨率或者不同质量的码流。码流的可扩展性则指,解码器可用码流的一部分产生某个分辨率或质量的图像。若一个码流是可扩展的,那么不同复杂度的解码器可以同时存在,低性能解码器产生基本质量的一小部分码流,高性能解码器解码更多码流产生更好质量。
两种主要的扩展类型为空域扩展和时域扩展。空域扩展用来扩展空间分辨率,时域扩展则提供时间分辨率的扩展功能。

3)sprite编码
基于静态sprite的编码技术是使用指定的运动参数直接将sprite变形得到重构的VOP,原始VOP和重构的VOP之间残差并不编码;在静态sprite编码中有一种低延迟编码技术,主要是针对有延迟限制的应用。
减少传输sprite延迟有多种办法,其中一种是先传输sprite中用于重构前几帧的部分,剩余部分根据解码要求和可用带宽来传输。另一种办法是先传输一个低分辨率和质量较差的完整sprite重构视频序列,然后在带宽允许条件下传输剩余部分,以提高sprite质量。

5.4 MPEG-4档次和级

档次和视觉对象类型
上表列出了MPEG-4 Visual档次和视觉对象类型,显示了每个档次包含的对象类型。例如,支持Simple档次的编解码器必须能编解码Simple对象,而支持Core档次的编解码器必须能编辑码Simple和Core对象。
档次是不同制造商编辑码器件之间能够交互的重要机制。档次定义了编码工具的集合,级则定义了比特流参数的限制。

Simple档次级
上表列出了常用的基于Simple档次(Simple、Advanced Simple及Advanced Real Time Simple)的级,每个级都给出了能够解码MPEG-4编码序列所需的最大性能。

6、H.264/AVC编解码原理

MPEG(Moving Picture Experts Group)和VCEG(Video Coding Experts Group)联合开发了一个比早期研发的MPEG和H.263性能更好的视频压缩编码标准,这就是被命名为AVC(Advanced Video Coding),也被称为ITU-T H.264建议和MPEG-4的第10部分的标准,在这里,简称为H.264/AVC或H.264。该国际标准已于2003.3正式被ITU-T所通过并在国际上正式颁布。
H.264不仅具有优异的压缩性能,而且具有良好的网络亲和力。它和MPEG-4的重点是灵活性不同,H.264着重在压缩的高效率和传输的高可靠性,因而其应用面十分广泛,具体来说,H.264支持三个不同档次:1、基本档次:主要用于视频会话,如会议电视,可视电话,远程医疗,远程教学等;2、扩展档次:主要用于网络的视频流,如视频点播;3、主要档次:主要用于消费电子应用,如数字电视广播,数字视频存储等。

6.1 H.264/AVC编解码器

H.264并不明确地规定一个编解码器如何实现,而是规定 了一个编码的视频比特流是句法和该比特流的解码方法,各个厂商的编码器和解码器在此框架下应能够互通,在实现上具有较大灵活性,有利于相互竞争,进而促进进步。
H.264编码器和解码器的功能组成见下图:
H.264编解码器

1)H.264编码器
编码器采用的是变换和预测的混合编码法。
如上图,输入的帧或场Fn以宏块为单位被编码器处理。
首先,按帧内或帧间预测编码的方法进行处理。如果采用帧内预测编码,其预测值PRED(图中用P表示)是由当前片中前面已编码的参考图像经运动补偿(MC)后得出,其中参考图像用F’n-1表示。为了提高预测精度,从而提高压缩比,实际的参考图像可在过去或未来已编码解码重建和滤波的帧中进行选择。
预测值PRED和当前块相减后,产生一个残差块Dn,经块变换、量化后产生一组量化后的变换系数X,再经熵变换,与解码所需的一些边信息(如预测模式量化参数、运动矢量等)一起组成一个压缩后的码流,经NAL(网络自适应层)供传输和存储。
如上述,为了提供进一步预测用的参考图像,编码器必须有重建图像的功能。因此必须使残差图像经反量化、反变换后得到的Dn‘与预测值P相加,得到uFn’(未经滤波的帧)。为了去除编码解码环路中产生的噪声,提高参考帧的图像质量,从而提高压缩图像性能,设置了一个环路滤波器,滤波后的输出Fn‘即重建图像可用作参考图像。

2)H.264解码器
有上图可知,由编码器的NAL输出一个压缩后的H.264压缩比特流。经熵解码得到量化后的一组变换系数X,再经反量化、反变换,得到残差Dn’。利用从该比特流中解码出的头信息,解码器就产生一个预测值PRED,它和编码器中的原始PRED是相同的。当该解码器产生的PRED与残差Dn‘相加后,就产生uFu’,再经滤波后,最后就得到滤波后的Fn‘,这个Fn’就是最好的解码输出图像。

6.2 帧内预测

在帧内预测模式中,预测块P是基于已编码重建块和当前块形成的。对亮度像素而言,P块用于4x4子块或者16x16宏块的相关操作。4x4亮度子块有9种可选预测模式,独立预测每一个4x4亮度子块,适用于带有大量细节的图像编码;16x16亮度块有4种预测模式,预测整个16x16亮度块,适用于平坦区域图像编码;色度块也有4种预测模式,类似于16x16亮度块预测模式。编码器通常选择使P块和编码块之间差异最小的预测模式。

6.3 帧间预测

H.264帧间预测是利用已编码视频帧/场和基于块的运动补偿的预测模式。与以往标准帧间预测的区别在于块尺寸范围更广(从16x16到4x4)、亚像素运动矢量的使用(亮度采用1/4像素精度MV)及多参考帧的运用等。

6.4 整数变换与量化

为了进一步节省图像传输码率,需要对图像信号进行压缩,一般方法为去除图像信号中的相关性及减少图像编码的动态范围,通常采用变换编码及量化。变换编码将图像时域信号变换成频域信号,在频域中图像信号能量大部分集中在低频区域,相对时域信号,码率有较大的下降。量化过程根据图像的动态范围大小确定量化参数,既保留图像必要的细节,又减少码流。

1)整数变换
一维N点离散余弦变换(DCT)可以表示为:
这里写图片描述

2)量化
量化过程在不降低视觉效果的前提下减少图像编码长度,减少视觉恢复中不必要的信息。H.264采用标量量化技术,它将每个图像样点编码映射成较小的数值。一般标量量化器的原理为:
FQ = round(y/QP)
其中,y为输入样本点编码,QP为量化步长,FQ为y的量化值,round()为取整函数。
其反量化为:
y‘ = FQ*QP
在量化和反量化过程中,量化步长QP决定量化器的编码压缩率及图像精准度。如果QP比较大,则量化值FQ动态范围较小,其相应的编码长度较小,但反量化时损失较多的图像细节信息;如果QP比较小,则FQ动态范围大,相应的编码长度也较大,但图像细节信息损失较少。编码器根据图像值实际动态范围自动改变QP值,在编码长度和图像精度之间折衷,达到整体最佳效果。
在H.264中,量化步长Qstep共有52个值。其中QP是量化参数,是量化步长的序号。当QP取最小值0时代表最精细的量化,当QP取最大值51时代表最粗糙的量化。
这里写图片描述

6.5 码率控制

在H.264视频编码标准中仅仅规定了编码后比特流的句法结构和解码器的结构,而对于编码器的结构和实现模式没有具体的规定。然而无论编码器的结构如何,视频编码的控制都是编码器的核心问题。
在对数字视频信号进行压缩编码时,编码器通过相应的编码控制算法以确定各种编码模式,如宏块的划分类型、运动矢量以及量化参数等,这样就确定了编码器输出比特流的比特率和失真度。
H.264编码器采用了基于Lagrangian优化算法的编程控制模型,其编码性能比以往的所有编码标准有了重大提升。
由于视频序列中的图像内容随着空间与时间的不同而变化很大,需要为图像的不同部分选择不同的编码参数进行压缩编码,而编码控制的目的就是确定一组编码参数。

6.6 去方块滤波

在H.264/MPEG-4 AVC视频编解码标准中,编解码器反变换量化后图像会出现方块效应。其产生的原因有两个。最重要的一个原因是基于块的帧内和帧间预测残差的DCT变换。变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数带有误差,会造成在图像块边界上的视觉不连续。第二个原因来自于运动补偿预测。运动补偿块可能是从不是同一帧的不同位置上的内插样点数据复制而来。因为运动补偿块的匹配不可能是绝对准确的,所以就会在复制块的边界上产生数据不连续。同时,参考帧中存在的边界不连续也被复制到需要补偿的图像块内。

在视频编解码器中加入去方块滤波器的方法有两种:后置滤波器和环路滤波器。后置滤波器只处理编码环路外的显示缓冲器中的数据,所以它不是标准化过程中的规范内容,在标准中只是可选项。相反,环路滤波器处理编码环路中的数据。在编码器中,被滤波的图像帧作为后续编码帧运动补偿的参考帧;在解码器中,滤波后的图像输出显示。

在编码环路中使用滤波器比后置滤波器有以下几个优点。首先,环路滤波器可以保证不同水平的图像质量。其次,在解码器端没有必要再为滤波器准备额外帧缓存。第三,环路滤波比后置滤波更能增加视频流的主客观质量,同时有效降低解码器的复杂度。

7、H.264/AVC解码器的原理和实现

7.1 H.264句法和语义

1)H.264句法
在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特组成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表征句法元素的组织结构,语义阐述句法元素的具体含义。所有的视频编码标准都是通过定义句法和语义来规范解码器的工作流程。
编码器输出的比特流中,每个比特都隶属某个句法元素,也就是说,码流是由一个个句法元素依次衔接组成的,码流中除了句法元素并不存在专门用于控制或同步的信息。在H.264定义的码流中,句法元素被组织成有层次的结构,分别描述各个层次的信息,其句法元素共被组织成序列、图像、片、宏块、子宏块五个层次,如下图所示:
句法元素的分层结构

句法元素的分层结构有利于更有效地节省码流。例如,在一个图像中,经常会在各个片之间有相同的数据,如果每个片都同时携带这些数据,势必会造成码流的浪费。更为有效的做法是将改图的公共信息抽取出来,形成图像一级的句法元素,而在片级只携带该片自身独有的句法元素。

在H.264中,分层结构最大的不同是取消了序列层和图像层,并将原本属于序列和图像头部的大部分句法元素游离出来形成序列和图像两级参数集,其余的部分则放入片层。参数集是一个独立的数据单位。不依赖于参数集外的其他句法元素。下图描述了参数集与参数集外句法元素的关系:
H.264句法元素的分层结构

从上图可以看出,参数集只是在片层句法元素需要的时候被引用,而且,一个参数集并不对应某个特定的图像或序列,同一个序列参数集可以被多个序列中的图像参数集引用,同理,同一个图像参数集也可以被多个图像引用。只在编码器认为需要更新参数集的内容时,才会发送新的参数集。在这种机制下,由于参数集的独立性,可以被多次重发或者采用特殊技术加以保护。
H.264建议参数集与参数集外部的句法元素处于不同信道中,这样可以使用更安全但成本更昂贵的通道来传输参数集,而使用成本低但不够可靠的信道传输其他句法元素,只需保证参数集优先被传送即可。在参数集和片使用同一个物理信道的情况下,上图中的信道1和信道2应该被理解为逻辑上的信道,因为从逻辑上看,参数集与其他句法元素还是处于各自彼此独立的信道中。
在复杂的通信环境中,除了片和参数集外还需要其他的数据单位来提供额外的信息。下图描述了在复杂通信中的码流中可能出现的数据单位:
H.264码流中的数据单位
如上图所示,一个序列的第一个图像叫做IDR图像(立即刷新图像),IDR图像都是I帧图像。H.264引入IDR图像是为了解码的重同步,当解码器解码到IDR图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果在前一个序列的传输中发生重大错误,如严重的丢包,或其他原因引起数据错位,在这里可以获得重新同步。IDR图像之后的图像永远不会引用IDR图像之前的图像的数据来解码。

2)语义
在网络传输的环境下,编码器将每个NAL各自独立、完整地放入一个分组,由于分组都有头部信息,编码器可以很方便地检测出NAL的分界。但若编码数据是存储在介质(硬盘等)上,由于NAL是依次紧密排列,解码器将无法在数据流中分辨每个NAL的起始和终止。
针对该问题,H.264草案的附录B中指明了一种简单又高效的方案。当数据流是存储在介质上时,在每个NAL前添加起始码:0x000001 。在这种机制下,解码器在码流中检测起始码,作为一个NAL的起始标志,当检测到下一个起始码时当前NAL结束。H.264规定当检测到0x000000时也可以表征当前NAL的结束,这是因为连着的三个字节的0中任何一个字节的0要么属于起始码要么是起始码前面添加的0(因为二进制的一位是0或1)。
添加起始码是一个解决问题的很好的方法,但上面关于起始码的介绍还不完整,因为忽略了一个重要的问题:若在NAL内部出现了0x000001或0x000000的序列,就会产生疑义。于是H.264提出了另外一种机制,叫做“预防竞争”,在编码器编码完一个NAL时,应该检测是否出现下图左侧中的四个字节序列,以防止它们和起始码竞争。如果检测到这些序列存在,编码器将在最后一个字节前插入一个新的字节:0x03,从而使它们变成下图右侧的样子。当解码器在NAL内部检测到有0x000003的序列时,将把0x03抛弃,恢复原始数据。
NAL内部为防止与起始码竞争插入0x03

总之,H.264的句法是经过精心设计的,构成句法的各句法元素既相互依赖而又相互独立。依赖是为了减少冗余信息,提高编码效率;而独立是为了使通信更加鲁棒,在错误发生时限制错误的扩散。但是,依赖和独立又是相互矛盾的,往往要在它们之间作取舍。在实现H.264的编解码器时,同样有速度和健壮性的相互矛盾的关系,既要在现有硬件平台上提高编解码的速度,又要作充分的安全检查、建立异常处理机制,如果能详细考察句法元素间的依赖与独立关系,充分利用H.264各句法元素间本身的内在联系与安全机制,便能够设计出即快速又安全、健壮的编解码算法。

7.2 编解码原理

H.264包含VCL(视频编码层)和NAL(网络提取层)。VCL包括核心压缩引擎和块、宏块和片的语法级别定义,它的设计目标是尽可能地独立于网络的进行高效地编解码;而NAL则负责将VCL产生的比特字符串适配到各种各样的网络和多元环境中,覆盖了所有片级别以上的语法级别,同时支持以下功能:支持独立片解码;起始码唯一保证;支持SEI;支持流格式编码数据传输。
解码器功能框图
如上图所示,NAL解码器负责将符合H.264码流规范的压缩视频流解码,并进行图像重建。解码器从NAL中接收压缩的比特流,经过对码流进行熵解码获得一系列量化系数X;这些系数经过反量化和反变换得到残差数据D;解码器使用从码流中解码得到的头信息创建一个预测块PRED,PRED与残差数据D求和得到图像块数据Uf;最后每个Uf通过去方块滤波得到重建图像的解码块F。

7.3 帧内预测和帧间预测

1)帧内预测
视频压缩中所采用的帧内预测技术用于去除当前图像中的空间冗余度,新的编码标准H.264/AVC采用了比以往编码标准更为精确和复杂的帧内预测方式。在当前图像编码过程中,当无法提供足够的图像之间的时间相关信息时,往往对当前图像采用了帧内预测。H.264/AVC中的帧内预测用于计算编码宏块与相邻宏块之间的空间相关性,以提高编码效率。在帧内预测中当前编码的宏块上方及左方的宏块用于计算出当前宏块的预测值。当前宏块与其预测值的差值将进一步编码并传输到解码器。解码器利用该比特流中用于表示预测方式相关比特与解码出的残差信号的比特,计算出当前宏块的预测值,恢复图像宏块的原始像素值。H.264/AVC提供了四种帧内预测方式:4x4亮度块的帧内预测(Intra_4x4)、16x16亮度块的帧内预测(Intra_16x16)、8x8色度块的帧间预测(Intra_chroma),以及PCM的预测方式(I_PCM)。

2)帧间预测
H.264采用树状结构的运动补偿技术,提高了预测能力。小块预测提高了模型处理更好的运动描述的能力,产生更好的图像质量。H.264运动向量的精度提高到1/4像素(亮度),运动补偿算法的预测能力得到进一步提高。H.264还提供多参考帧可选模式,产生更好的视频质量和效率更高的视频编码;例如,相对于1帧参考,5帧参考可以节约5%~10%的比特率,且有助于比特流的恢复。

7.4 变换系数解码

在H.264中,变换系数解码包括逆整数DCT及反量化。
解码器中变换系数解码及图像重建过程

8、H.264视频编码传输QoS

8.1 互联网视频传输QoS

基于IP的多媒体应用分为三类:交互应用,如可视电话和视频会议;预编码的视频流下载;基于IP的视频流。为满足这些应用的需求,必须解决四个QoS问题:吞吐量、传输时延、时延抖动和误码率。同时,由于视频应用中大多采用的高压缩率的编码技术,其对传输误码的要求尤其苛刻,但因为Internet的本质是尽力而为的网络,不提供传输的QoS保证,因此在视频应用中提高对传输误码的抗干扰和恢复能力是很有必要的,同时这也是多媒体通信领域研究的热点。

视频通信系统通常由五部分组成:视频源编码、复用/包封装/信道编码、信道传输、解复用/解包/信道解码和视频解码。视频首先在编码器中进行压缩以减少码率,压缩的比特流然后被分割成固定的或变长的包,并与数据、音频等复合,然后打包,最后需要经过一个信道编码阶段,通常使用前向纠错编码(FEC),用来防止传输的错误。在接收端,收到的包按照FEC解码并解包,输出的比特流被放入视频解码器用于重构原始的视频。
导致视频通信错误控制的几种原因:
1)压缩的视频流由于在源编码器中采用了预测编码和可变长编码(VLC),对传输的错误特别敏感。由于使用了空间和时间预测,一个带有错误的采样点将会导致同一帧或后续帧相关采样点的错误,同时由于VLC的使用,一个比特错误会导致解码器失去同步,从而使后续比特的正确接收失去意义。
2)视频源和网络环境通常是时变的。
3)视频源有着很高的码率,因此编码器不可能过于复杂,尤其是对于某些实时应用。

为了使压缩的比特流对传输错误具有抗干扰性,必须在流中加入冗余数据,利用这些冗余数据和有效数据之间的关系,才有可能检测并修正错误。这些冗余可以加入到源端编码或信道编码中,通常采用源和信道联合编码实现,用以限制错误扩散的范围。
即使一个图像采样或一块采样在传输中由于错误而丢失,解码器仍能基于周围的已经收到的采样点,利用空间和时间相邻的采样点的内在相关性,进行估计,从而达到错误恢复,该技术称为“错误隐藏”技术。为了保证解码器的错误隐藏,相邻采样点或块的压缩数据在包封装时必须按照interleaved交织方式,用以提高损坏区域被未损坏区域包围的概率。错误隐藏相对于错误恢复源端编码,优点是不需要增加额外的比特率,仅仅增加了解码器上的运算复杂度。
总体来说,抗传输误码的设计机制分为三类:在源端编码和信道编码中引入冗余数据的方法,使比特流对可能的错误具有更强的恢复能力;在解码器中基于错误检测来对错误的影响进行隐藏;通过源端编码器和解码器之间的交互,来使编码器根据解码器检测到的丢包情况调整操作。

8.2 无线网视频传输QoS

无线视频通信系统框图

上图描述了无线视频通信系统的框图。发送端,视频信源的输入视频经视频编码器压缩到特定的码率的码流,经过传输层和网络层的封装打包后,进行信道编码,信道编码过程引入信道错误控制措施(前向纠错编码FEC、自动请求重发ARQ和数据交织Interleaving),增强码流在无线信道的传输性能,信道编码输出后经调制在无线信道上传输;接收端,进行解调和信道解码后,再进行解包处理,得出编码视频流,进行视频解码,输出的重建视频信号,可根据应用进行视频图像后的处理。
无线视频通信相对于有线视频通信,在于其包含一个无线的链路。无线信道的有效传输带宽是非常宝贵的,而且各种噪声干扰也会影响无线信道的数据传输质量。无线传输中面临的衰落和突发性错误必须采用多种错误控制技术进行处理,其中典型的有前向纠错编码FEC和ARQ。FEC和数据交织结合明显消减了无线信道突发性错误的影响,而基于反馈信道的ARQ则可以正确的恢复错误的数据,避免了错误的传播。
无线通信是以传输环境中的电磁波传播为基础,发送的电磁波有散射、折射和衰落。各种散射成分的干扰,形成分布不规则的场强,因而接收信号衰落且失真。无线信道传输主要有以下问题:
1)有限的带宽。当前的移动通信网络为用户提供的传输带宽仍是非常有限的。
2)带宽波动。无线信道的吞吐量会因为多径衰落、同频干扰和噪声扰动会造成无线信道的吞吐量降低,而且基站和移动终端之间距离的变化以及不同网络之间的移动等情况均会造成信道带宽发生剧烈波动,严重影响无线网络上的实时视频传输。
3)高误码率。与有线信道相比,无线信道一般具有大得多的噪声,而且多径和阴影衰落,使得误码率非常高,进而严重影响视频传输的质量。因此,视频编码标准是否具有很强的抗误码能力就成为了确保无线视频传输QoS的关键之一。

8.3 H.264视频编解码标准的错误恢复

常见的信道编码和错误控制方式。
1)前向纠错编码(FEC,Forward Error Correction)
前向纠错技术是一种重要的纠错编码方式,在视频传输容错技术中得到了广泛的应用,常用的有BCH码和RS码。但FEC的适用范围也是有限的,它只对平均分布的随机性位错比较有效,对于较高的误码率或者突发性错误效果较差。而在无线传输系统中,突发性的错误是常见的,因此为了使FEC在无线视频传输中能发挥容错效力,其实际应用中FEC编码、数据随机化和数据交织相互结合,共同作用。
为了实现良好的容错性能和较高的编码效率,需要根据信道的传输特点如位出错率、报文出错率、传输速率、出错类型等对FEC编码策略进行调整。视频比特流中不同部分的重要性不同,报头(视频图像的尺寸、与解码有关的时间戳以及编码的格式)和MV信息比DCT系数对视频质量的影响要大,低频的DCT系数要比高频的DCT系数对视频质量的影响大。在H.264中,可以采用数据分割(Data Partition)的编码模式,将片的编码信息分为运动向量和DCT系数两部分,这样可以优先对运动向量进行FEC编码,充分发挥FEC的纠错能力,提高编码效率。此外,FEC还可以和自动重传(ARQ)或分层编码模式相结合,发挥更大的作用。
2)数据交织(Interleaving)
许多容错算法能够很好的解决平均分布的随机性位错误,但对于突发性错误和某一段时间内的连续错误,效果很差。而数据交织就是一种把码流中突发性错误转变成随机错误的方法。
数据交织实质上就是一个置换器,目的就是要最大程度的置乱原数据排列顺序,避免置换前两个相邻数据在置换后再次相邻。
无交织和有交织处理突发错误的比较

上图描述了数据交织的基本原理。其中,假设输入的码流是P0={1,2,3,…,15},经过图(a)的交织器,读出的码流位P1={1,6,11,…,15},按照图(b)的解交织后,正好可以输出码流P2={1,2,3,…,15}。图©给出了在传输过程中发生了突发性错误的情况,显而易见,没有经过交织的比特流的错误是连续的,对于这种错误情况,诸如FEC、错误隐藏等容错算法的效率很低;而经过交织处理的比特流中,突发性错误的位已经分别开,这有利于其他容错的算法的实现。同时,交织的效果与交织器的设计M*N紧密相关,最佳的交织器的设计能够实现相邻位置交织后再次相邻,这样可以充分利用错误位周围正确接收位的相关性,从而纠正恢复错误位。

3)ARQ
自动请求重发ARQ是依靠反馈信息重传出错误报文的差错控制方法。其实现过程如下:首先发送端发送数据报文,经信道传输后,接收端计算接收报文中的校验,如果校验正确,则要求发送端发送后续报文,否则要求发送端重发错误的报文。接收端的反馈信息分为两种ACK和NACK,根据实现过程的不同,ARQ大致可分为三种基本模型:停等型(SW,Stop and Wait)、选择重复型(SP,Selective Repeat)和返回N型(GBN,Go Back N)。
停等型(SW,Stop and Wait):
发送端发送数据报文后,等待接收端的反馈信息ACK,如果ACK正确接收到,则继续发送后续报文;否则,若超过了限定时间,发送端重发数据报文。因此,停等型ARQ只能逐个报文地发送,实现简单,但效率低。
选择重复型(SP,Selective Repeat):
发送端连续发送数据报文,接收端也逐一发送正确接收报文的ACK,若在限定时间内没有接收到某个报文的ACK,发送端则只发出错报文,而后继续前面连续发送的报文的工作。例如,当前发送端刚发送完报文n,同时确定n-2报文错误,则只再重发报文n-2,然后继续发送报文n+1。这需要接收端有接收缓存,方法实现复杂,但效率高。
返回N型(GBN,Go Back N):
此类型和选择重复型一样,采用连续发送报文,一旦确定前面发送的某个报文出错,则发送端从出错报文的位置开始重新发送。返回N型的实现较为简单,效率介于停等型和选择重复型之间。

H.264/AVC标准从系统层面定义了视频编码层(VCL,Video Coding Layer)和网络提取层(NAL, Network Abstraction Layer)。其中,视频编码层独立于网络,主要包括核心压缩引擎和块、宏块和片的语法定义。通过引入一系列新特性,不但使H.264的编码压缩效率提升了近1倍,而且多种错误恢复工具又增强了视频流的鲁棒性。网络提取层主要功能是定义数据的封装格式,把VCL产生的比特字符串适配到各种各样的网络和多元环境中。其涉及片级别以上的语法定义,包括独立于解码所要求的数据表示,防止竞争的编码,附加的增强信息以及编码片的比特字符串。

H.264从框架结构上将NAL和VCL的分离,主要的两个目的是:一、可以定义VCL视频压缩处理与NAL网络传输机制的接口,这样允许视频编码层VCL的设计可以在不同的处理器平台进行移植,而与NAL层的数据封装格式无关;二、VCL和NAL都被设计成工作于不同的传输环境,异构的网络环境并不需要对VCL比特流进行重构和重编码。
H.264的错误恢复工具:参数集;灵活的宏块排序;冗余片等。

FROM:《新一代视频压缩编码标准H.264》

猜你喜欢

转载自blog.csdn.net/Xminyang/article/details/81704175
今日推荐