视频压缩与编解码的基本原理

视频压缩与编解码的基本原理

正在上传…重新上传取消​

刘斯宁

Camera技术专家

​关注他

224 人赞同了该文章

视频信息与压缩编码

一、人与世界的交互


从远古时代人类文明诞生之日起,人类就在人类就在不断为适应环境、改造环境而艰苦斗争。其中最为基础的前提就是利用感官对外界信息的获取。利用各种感官,人类可以与世界环境进行多种不同的信息交互,例如:

嗅觉:识别各种气味,辨别环境变化和食物、饮水的质量等;
听觉:识别同类的联络信息和天敌等危险信号等
味觉:挑选最适宜的食物
触觉:制作与使用工具时非常重要

另外,最重要的一种自然就是视觉。据统计,在人的各种感官中,视觉占据了超过7成的信息获取量。而且视觉可以使人对环境变化做出最直接的反映。

在文明的发展过程中,人们不满足于仅仅靠着口述记录所看到的影像,而是希望能用更加直观的形式将其记录下来。经过了多年的发展,经过多年的发展,视频已经成为记录和重现信息最为高效的方式,可以在相对很短的时间内传递大量的信息。

视频通过其中每一帧的图像表达信息;
视频包含的音频可提供大量信息;
视频通过图像的运动、场景的变换提供信息;

综上我们可知,视频信息提供了最为接近人的直接体验的信息表示方式。

二、视频信号的表示方法:RGB与YUV


真实世界中的影像与早期的视频处理与传输系统所处理的都是模拟信号。然而为了能适应现代的计算机、网络传输与数字视频处理系统,模拟的视频信号必须转换成数字格式。

RGB颜色空间

目前的显示设备大都是采用了RGB色彩空间,RGB是从颜色的原理来设计定的,它的颜色混合方式就如有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,亮度等于两者亮度之总和,即加法混合。

屏幕上的不同颜色,都由这红色,绿色,蓝色三种基本色光按照不同的比例(权重)混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。因此这红色绿色蓝色又称为三原色光,用英文表示就是R(red)、G(green)、B(blue)。RGB的所谓“多少”就是指亮度,并使用整数来表示。在用8位表示时,RGB各有256级亮度,用数字量化表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。


使用这种方式表示彩色图像的方式为RGB颜色空间。RGB颜色空间常用于显示器系统。通过这种形式表示的图像,每个像素的每一个颜色分量用1个字节表示,则可以表示256×256×256种不同的颜色。在常见的图像格式中,如位图(bmp)格式以RGB形式保存数据。

YUV颜色空间

YUV是编码true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCrYPbPr等专有名词都可以称为YUV,彼此有重叠。

“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度(Chrominance、Chroma),包含了色调饱和度。与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。

在实际的编解码等视频处理的过程中,YUV格式比RGB格式更为常用。在YUV格式中,一个像素由亮度分量和色度分量表示,每一个像素由一个亮度分量Y和两个色度分量U/V组成。亮度分量可以与色度分量一一对应,也可以对色度分量进行采样,即色度分量的总量少于亮度分量。

YCbCr颜色空间

YUV细分的话有Y'UV,YUV,YCbCr,YPbPr等类型,其中YCbCr主要用于数字信号。

YCbCr是被ITU定义在标准ITU-R BT.601(标清SDTV),ITU-R BT.709(高清HDTV),ITU-R BT.2020(超高清)中的一种色彩空间。

YCbCr (SDTV)是在世界数字组织视频标准研制过程中作为ITU - R BT.601 建议的一部分, 其实是YUV经过Gamma的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 同样都指色彩, 只是在表示方法上不同而已。在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG,H264均采用此格式。

其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异,而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异,此即所谓的色差信号。

在视频通信系统中(特别是视频编解码)的“YUV”图像就是YCbCr。在平常的工作交流中,所称的YUV也是YCbCr。以下用YUV指代YCbCr

RGB格式转为YUV格式

Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')

YUV格式转为RGB格式

R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'

RGB格式转为YCbCr格式

按ITU-R BT.601标准。(这个公式应用最广泛)
Y = ( ( 66 * R + 129 * G + 25 * B + 128) >> 8) + 16
Cb = ( ( -38 * R - 74 * G + 112 * B + 128) >> 8) + 128
Cr = ( ( 112 * R - 94 * G - 18 * B + 128) >> 8) + 128

按ITU-R BT.709标准。

Y = 0.183R + 0.614G + 0.062B + 16
Cb = -0.101R - 0.339G + 0.439B + 128
Cr = 0.439R - 0.399G - 0.040B + 128

按JPEG的全范围取值格式
Y = 0.299R + 0.587G + 0.144B + 0
Cb = -0.169R - 0.331G + 0.500B + 128
Cr = 0.500R - 0.419G - 0.081B + 128

YCbCr格式转为RGB格式

R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) -0.392*(Cb'-128)
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)

YUV的色度采样


在YUV中之所以采用这样的方式,主要是因为人的感官对亮度信息的敏感度远高于对色度信息。因此相对于其他像素格式,YUV的最大优势是可以适当降低色度分量的采样率,并保证不对图像造成太大影响。而且,使用这种方式还可以兼容黑白和彩色显示设备。对于黑白显示设备,只需要去除色度分量,只显示亮度分量即可。

在YUV中常见的色度采样方式有4:4:4、4:2:2和4:2:0等,如下图所示:

YUV的存储格式

YUV格式有三大类:planar,packed,semi-planar。

对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。

对于packed的YUV格式,每个像素点的Y,U,V是连续交叉存储的。

对于semi-planar的YUV格式,先连续存储所有像素点的Y,紧接着连续交叉存储所有像素点的U,V。

ITU-R Recommendation BT.2020

2012年下半年,国际电信联盟无线电通信部门(ITU-R)颁布了面向新一代超高清UHD(Ultra-high definition)视频制作与显示系统的BT.2020标准,重新定义了电视广播与消费电子领域关于超高清视频显示的各项参数指标,促进4K超高清家用显示设备进一步走向规范化。其中最为关键的是,BT.2020标准指出UHD超高清视频显示系统包括4K与8K两个阶段,其中4K的物理分辨率为3840×2160,而8K则为7680×4320。之所以超高清视频显示系统会有两个阶段,实际上是因为全球各个地区超高清视频显示系统发展差异性所造成的,例如在电视广播领域技术领先的日本就直接发展8K电视广播技术,避免由4K过渡到8K可能出现的技术性障碍。而在世界的其他地区,多数还是以4K技术作为下一代的电视广播发展标准。

BT.2020标准的重要性是毋庸置疑的,正如BT.709对于高清视频传输与高清显示设备制造方面起到了引导性作用,BT.2020标准同样也深刻地影响着消费领域超高清显示设备的设计与制造,尤其在4K平板电视方面更为突出。例如目前绝大部分的4K平板电视的物理分辨率都是采用BT.2020标准的3840×2160,而不是DCI数字电影标准的4096×2160。但,BT.2020标准绝不仅仅在分辨率方面有所提升,在色彩和刷新频率和信号格式与分析等方面也进行了相关的规定。

4K电视显示标准BT.2020在色彩方面的提升:BT.2020标准相对于BT.709标准,大幅度提升了视频信号的性能规范。例如色彩深度方面,就由BT.709标准的8bit提升至10bit或12bit,其中10bit针对的是4K系统,12bit则针对8K系统。这一提升对于整个影像在色彩层次与过渡方面的增强起到了关键的作用。而色域范围的面积也远远大于BT.709标准,能够显示更加丰富的色彩,只是相对应来说,越广的色域对于显示设备的性能要求就越高,根据目前4K超高清投影机的情况,往往需要采用新一代的激光或LED固态光源的机型才能达到。

三、视频压缩编码


编码这一概念在通信与信息处理领域中广泛使用,其基本原理是将信息按照一定规则使用某种形式的码流表示与传输。常用的需要编码的信息主要有:文字、语音、视频和控制信息等。

1. 为什么需要对视频编码

对于视频数据而言,视频编码的最主要目的是数据压缩。这是因为动态图像的像素形式表示数据量极为巨大,存储空间和传输带宽完全无法满足保存和传输的需求。例如,图像的每个像素的三个颜色分量RGB各需要一个字节表示,那么每一个像素至少需要3字节,分辨率1280×720的图像的大小为2.76M字节。

如果对于同样分辨率的视频,如果帧率为25帧/秒,那么传输所需的码率将达到553Mb/s!如果对于更高清的视频,如1080P、4k、8k视频,其传输码率更是惊人。这样的数据量,无论是存储还是传输都无法承受。因此,对视频数据进行压缩称为了必然之选。

2. 视频信息为什么可以被压缩

视频信息之所以存在大量可以被压缩的空间,是因为其中本身就存在大量的数据冗余。其主要类型有:

时间冗余:视频相邻的两帧之间内容相似,存在运动关系
空间冗余:视频的某一帧内部的相邻像素存在相似性
编码冗余:视频中不同数据出现的概率不同
视觉冗余:观众的视觉系统对视频中不同的部分敏感度不同

针对这些不同类型的冗余信息,在各种视频编码的标准算法中都有不同的技术专门应对,以通过不同的角度提高压缩的比率。

3. 视频编码标准化组织

在国际组织的独立和联合开发中,产生了很多重要的视频编解码标准。主要国际组织包括ISO/IEC MPEG、ITU-T、Google、Microsoft、AVS工作组和AOM联盟等。

ITU-T,全称International Telecommunications Union - Telecommunication Standardization Sector,即国际电信联盟——电信标准分局。该组织下设的VECG(Video Coding Experts Group)主要负责面向实时通信领域的标准制定,主要制定了H.261/H263/H263+/H263++等标准。

ISO,全称International Standards Organization,即国际标准化组织。该组织下属的MPEG(Motion Picture Experts Group),即移动图像专家组主要负责面向视频存储、广播电视、网络传输的视频标准,主要制定了MPEG-1/MPEG-4等。

实际上,真正在业界产生较强影响力的标准均是由两个组织合作产生的。比如MPEG-2、H.264/AVC和H.265/HEVC等。

主要标准包括:JPEG、MJPEG、JPEG2000、H.261、MPEG-1、H.262/MPEG-2、H.263、MPEG-4 (Part2/ASP)、H.264/MPEG-4 (Part10/AVC)、H.265/MPEG-H (Part2/HEVC)、H.266/VVC、VP8/VP9、AV1、AVS1/AVS2、SVAC1/SVAC2等。

不同标准组织制定的视频编码标准的发展如下图所示:

4、主要视频编码标准介绍

4.1、JPEG

    JPEG 是Joint Photographic Experts Group(联合图像专家小组)的缩写,是第一个国际图像压缩标准。JPEG图像压缩算法能够在提供良好的压缩性能的同时,具有比较好的重建质量,被广泛应用于图像、视频处理领域。


4.2、MJPEG

    M-JPEG(Motion- Join Photographic Experts Group)技术即运动静止图像(或逐帧)压缩技术,广泛应用于非线性编辑领域可精确到帧编辑和多层图像处理,把运动的视频序列作为连续的静止图像来处理,这种压缩方式单独完整地压缩每一帧,在编辑过程中可随机存储每一帧,可进行精确到帧的编辑,此外M-JPEG的压缩和解压缩是对称的,可由相同的硬件和软件实现。但M-JPEG只对帧内的空间冗余进行压缩。不对帧间的时间冗余进行压缩,故压缩效率不高。采用M-JPEG数字压缩格式,当压缩比7:1时,可提供相当于Betecam SP质量图像的节目。

  JPEG标准所根据的算法是基于DCT(离散余弦变换)和可变长编码。JPEG的关键技术有变换编码、量化、差分编码、运动补偿、霍夫曼编码和游程编码等

  M-JPEG的优点是:可以很容易做到精确到帧的编辑、设备比较成熟。缺点是压缩效率不高。

  此外,M-JPEG这种压缩方式并不是一个完全统一的压缩标准,不同厂家的编解码器和存储方式并没有统一的规定格式。这也就是说,每个型号的视频服务器或编码板有自己的M-JPEG版本,所以在服务器之间的数据传输、非线性制作网络向服务器的数据传输都根本是不可能的。

4.3、JPEG2000

    JPEG 2000 (JP2) is an image compression standard and coding system. It was created by the Joint Photographic Experts Group committee in 2000 with the intention of superseding their original discrete cosine transform-based JPEG standard (created in 1992) with a newly designed, wavelet-based method. The standardized filename extension is .jp2 for ISO/IEC 15444-1 conforming files and .jpx for the extended part-2 specifications, published as ISO/IEC 15444-2. The registered MIME types are defined in RFC 3745. For ISO/IEC 15444-1 it is image/jp2.

4.4、H.261

    H.261视频编码标准诞生于1988年,可谓是视频压缩编码发展的第一个里程碑。因为从H.261开始,视频编码方法采用了沿用至今的基于波形的混合编码方法。H.261标准主要目标是用于视频会议和可视电话等高实时性、低码率的视频图像传输场合。

  在H.261标准产生的时代,由于各国的电视制式不一致,因此不能直接互通。为了解决数据源格式不兼容的问题,H.261定义了一种公共中间格式CIF(Common Intermediate Format)。编码的目标格式首选转换为CIF格式进行编码和传输,接收端进行解码后再转换为各自的格式。H.261规定的CIF格式视频的亮度分辨率为352×288,QCIF格式的亮度分辨率为176×144。

H.261信源编码所采用的技术:

帧内编码/帧间编码判定:根据帧与帧之间的相关性判定——相关性高使用帧间编码,相关性低使用帧内编码。
帧内编码:对于帧内编码帧,直接使用DCT编码8×8的像素块。
帧间编码/运动估计:使用以宏块为基础的运动补偿预测编码;当前宏块从参考帧中查找最佳匹配宏块,并计算其相对偏移量(Vx, Vy)作为运动矢量;编码器使用DCT、量化编码当前宏块和预测宏块的残差信号;帧间编码/运动估计:使用以宏块为基础的运动补偿预测编码;当前宏块从参考帧中查找最佳匹配宏块,并计算其相对偏移量(Vx, Vy)作为运动矢量;编码器使用DCT、量化编码当前宏块和预测宏块的残差信号;
环路滤波器:实际上是一个数字低通滤波器,滤除不必要的高频信息,以消除方块效应;环路滤波器:实际上是一个数字低通滤波器,滤除不必要的高频信息,以消除方块效应;

4.5、MPEG-1

    MPEG-1标准于1993年8月公布,用于传输1.5Mbps数据传输率的数字存储媒体运动图像及其伴音的编码。该标准包括五个部分:

   第一部分说明了如何根据第二部分(视频)以及第三部分(音频)的规定,对音频和视频进行复合编码。第四部分说明了检验解码器或编码器的输出比特流符合前三部分规定的过程。第五部分是一个用完整的C语言实现的编码和解码器。

    该标准从颁布的那一刻起,MPEG-1取得一连串的成功,如VCD和MP3的大量使用,Windows95以后的版本都带有一个MPEG-1软件解码器,可携式MPEG-1摄像机等等。

4.6、MPEG-2/H.262

    MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性。 MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定,编码码率从每秒3兆比特~100兆比特,标准的正式规范在ISO/IEC13818中。MPEG-2不是MPEG-1的简单升级,MPEG-2在系统和传送方面作了更加详细的规定和进一步的完善。MPEG-2特别适用于广播级的数字电视的编码和传送,被认定为SDTV和HDTV的编码标准。

   MPEG-2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。这两种相关性使得图像中存在大量的冗余信息。如果我们能将这些冗余信息去除,只保留少量非相关信息进行传输,就可以大大节省传输频带。而接收机利用这些非相关信息,按照一定的解码算法,可以在保证一定的图像质量的前提下恢复原始图像。一个好的压缩编码方案就是能够最大限度地去除图像中的冗余信息。

    MPEG-2的编码图像被分为三类,分别称为I帧,P帧和B帧。 I帧图像采用帧内编码方式,即只利用了单帧图像内的空间相关性,而没有利用时间相关性。P帧和B帧图像采用帧间编码方式,即同时利用了空间和时间上的相关性。P帧图像只采用前向时间预测,可以提高压缩效率和图像质量。P帧图像中可以包含帧内编码的部分,即P帧中的每一个宏块可以是前向预测,也可以是帧内编码。B帧图像采用双向时间预测,可以大大提高压缩倍数。

    MPEG-2的编码码流分为六个层次。为更好地表示编码数据,MPEG-2用句法规定了一个层次性结构。它分为六层,自上到下分别是:图像序列层、图像组(GOP)、图像、宏块条、宏块、块。

4.7、H.263

    H.263是国际电联ITU-T的一个标准草案,是为低码流通信而设计的。但实际上这个标准可用在很宽的码流范围,而非只用于低码流应用,它在许多应用中可以认为被用于取代H.261。H.263的编码算法与H.261一样,但做了一些改善和改变,以提高性能和纠错能力。.263标准在低码率下能够提供比H.261更好的图像效果,两者的区别有:(1)H.263的运动补偿使用半象素精度,而H.261则用全象素精度和循环滤波;(2)数据流层次结构的某些部分在H.263中是可选的,使得编解码可以配置成更低的数据率或更好的纠错能力;(3)H.263包含四个可协商的选项以改善性能;(4)H.263采用无限制的运动向量以及基于语法的算术编码;(5)采用事先预测和与MPEG中的P-B帧一样的帧预测方法;(6)H.263支持5种分辨率,即除了支持H.261中所支持的QCIF和CIF外,还支持SQCIF、4CIF和16CIF,SQCIF相当于QCIF一半的分辨率,而4CIF和16CIF分别为CIF的4倍和16倍。

    1998年IUT-T推出的H.263+是H.263建议的第2版,它提供了12个新的可协商模式和其他特征,进一步提高了压缩编码性能。如H.263只有5种视频源格式,H.263+允许使用更多的源格式,图像时钟频率也有多种选择,拓宽应用范围;另一重要的改进是可扩展性,它允许多显示率、多速率及多分辨率,增强了视频信息在易误码、易丢包异构网络环境下的传输。另外,H.263+对H.263中的不受限运动矢量模式进行了改进,加上12个新增的可选模式,不仅提高了编码性能,而且增强了应用的灵活性。H.263已经基本上取代了H.261。

4.8、MPEG-4 (Part2/ASP)

    运动图像专家组MPEG 于1999年2月正式公布了MPEG-4(ISO/IEC14496)标准第一版本。同年年底MPEG-4第二版亦告底定,且于2000年年初正式成为国际标准。

    MPEG-4与MPEG-1和MPEG-2有很大的不同。MPEG-4不只是具体压缩算法,它是针对数字电视、交互式绘图应用(影音合成内容)、交互式多媒体(WWW、资料撷取与分散)等整合及压缩技术的需求而制定的国际标准。MPEG-4标准将众多的多媒体应用集成于一个完整的框架内,旨在为多媒体通信及应用环境提供标准的算法及工具,从而建立起一种能被多媒体传输、存储、检索等应用领域普遍采用的统一数据格式。

4.9、H.264/MPEG4 (Part10 AVC)

    H.264是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准。在ISO/IEC中该标准命名为AVC (Advanced Video Coding),作为MPEG-4标准的第10个选项;在ITU-T中正式命名为H.264标准。

4.10、H.265/HEVC

    H.265是ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。新技术使用先进的技术用以改善码流、编码质量、延时和算法复杂度之间的关系,达到最优化设置。具体的研究内容包括:提高压缩效率、提高鲁棒性和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度等。H264由于算法优化,可以低于1Mbps的速度实现标清数字图像传送;H265则可以实现利用1~2Mbps的传输速度传送720P(分辨率1280*720)普通高清音视频传送。

4.11、VP8/VP9

https://en.wikipedia.org/wiki/VP8

4.12、AV1

    AV1(AOMedia Video Codec 1.0):
   相关网址:
http://audiovisualone.com : AV1公司网站
http://audio-video1.com :主要面向家庭提供视音频应用的供应商
http://www.ctolib.com/learndromoreira-digital video introdution.html :相关学习资料
https://xiph.org/daala :Xiph(Mozilla基金会)的视频压缩技术,即Daala(达拉)
http://aomedia.org : 开放媒体联盟官网,主要由一些硬件制造商共同建立,是发布AV1的主要组织
http://aomanalyzer.org/ : AV1编解码器对应的码流分析工具网站

   AV1背景:
   2015年年初,Google正致力于VP10的研究,Xiph在继续Daala视频压缩技术的研究,Cisco开源了免版税的视频编解码器,即雷神(Thor)。 之后,MPEG-LA公司首次宣布H265的使用年费(是使用H264的8倍多)。由于H265使用年费太高,一些硬件制造商(Amozon、Cisco、Google、Intel、Microsoft、Mozilla、Netflix)于2015年9月联合成立了“开放媒体联盟”,其中内容的发布由Google、Netflix和Amozon负责,网站的维护由Google和Mozilla负责。2016年4月5日,AMD、ARM和NVIDIA也加入了该联盟,这些加入联盟的公司都有一个共同的目标,即开发出一个免版税的视频编解码器,此时AV1顺势而起。

   AV1简介:
    AV1是一种免版税、开源的新视频编码标准,集成Daala、Thor和VPx部分最优秀的编码思想,由开放媒体联盟(AOMedia)发布,目前第一版Version0.1.0已经在2016年4月7日发布。AV1现阶段的主要目标是在编解码复杂度合理增加的前提下,编码性能高于VP9/HEVC的50%。
    AOMedia声称,预计在2016年年底至2017年3月最终确定AV1码流相关信息,并于2018年3月首次在硬件上支持。需要说明的是,AV1与以往视频编码标准较大的区别之一是更加偏向于硬件编解码的支持,这也是AV1发起者(大多数为硬件设备制造厂商)的个人利益角度所考虑的。

   AV1资源下载:
AV1源码下载地址:https://aomedia.googlesource.com/aom
AV1测试视频序列:http://media.xipha.org/video/derf/
AV1码流分析工具源码:https://github.com/mbebenita/aomanalyzer
AV1码流分析工具:https://people.xiph.org/~mbebenita/analyzer/

4.13、AVS1/AVS2

    AVS1标准是中国自主研发的音视频编解码标准,主要用于国内卫星电视的压缩传输,其压缩率相较于H.264要低一些,在使用范围和推广上也不如H.264。

4.14、SVAC1/SVAC2

    SVAC(Surveillance Video and Audio Coding),安全防范监控音视频编解码技术,该技术标准是有中星微和公安一所针对视频监控应用提出的音视频编码标准,该标准2010年12月23日发布,于2011年5月1日开始实施。

SVAC标准的主要技术特点有以下几点:

1)高精度,支持8bit~10bit;
2)支持帧内4x4预测与变换量化,支持自适应帧-场编码(AFF)和CABAC等技术。
3)支持ROI变质量编码和SVC可伸缩编码。
4)支持监控专用信息,数据安全保护和加密认证。

4.15、H.266/VVC

    JVET was founded as the Joint Video Exploration Team (on Future Video coding) of ITU-T VCEG and ISO/IEC MPEG in October 2015. After a successful call for proposals, it transitioned into the Joint Video Experts Team (also abbreviated to JVET) in April 2018 with the task to develop a new video coding standard.
The new video coding standard was named Versatile Video Coding (VVC).


四、视频压缩编码的基本技术

视频信号的冗余信息

以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,采样信号以8bit量化,则可以计算出数字视频的码率为:

13.5*8 + 6.75*8 + 6.75*8= 216Mbit/s

如此大的数据量如果直接进行存储或传输将会遇到很大困难,因此必须采用压缩技术以减少码率。数字化后的视频信号能进行压缩主要依据两个基本条件:

  • 数据冗余。例如如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。
  • 视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。

数字视频信号的压缩正是基于上述两种条件,使得视频数据量得以极大的压缩,有利于传输和存储。一般的数字视频压缩编码方法都是混合编码,即将变换编码,运动估计和运动补偿,以及熵编码三种方式相结合来进行压缩编码。通常使用变换编码来消去除图像的帧内冗余,用运动估计和运动补偿来去除图像的帧间冗余,用熵编码来进一步提高压缩的效率。下文简单介绍这三种压缩编码方法。


为了专门处理视频信息中的多种冗余,视频压缩编码采用了多种技术来提高视频的压缩比率。其中常见的有预测编码、变换编码和熵编码等。

1. 变换编码 目前主流的视频编码算法均属于有损编码,通过对视频造成有限而可以容忍的损失,获取相对更高的编码效率。而造成信息损失的部分即在于变换量化这一部分。在进行量化之前,首先需要将图像信息从空间域通过变换编码变换至频域,并计算其变换系数供后续的编码。 在视频编码算法中通常使用正交变换进行变换编码,常用的正交变换方法有:离散余弦变换(DCT)、离散正弦变换(DST)、K-L变换等。

变换编码的作用是将空间域描述的图像信号变换到频率域,然后对变换后的系数进行编码处理。一般来说,图像在空间上具有较强的相关性,变换到频率域可以实现去相关和能量集中。常用的正交变换有离散傅里叶变换,离散余弦变换等等。数字视频压缩过程中应用广泛的是离散余弦变换。

离散余弦变换简称为DCT变换。它可以将L*L的图像块从空间域变换为频率域。所以,在基于DCT的图像压缩编码过程中,首先需要将图像分成互不重叠的图像块。假设一帧图像的大小为1280*720,首先将其以网格状的形式分成160*90个尺寸为8*8的彼此没有重叠的图像块,接下来才能对每个图像块进行DCT变换。

经过分块以后,每个8*8点的图像块被送入DCT编码器,将8*8的图像块从空间域变换为频率域。下图给出一个实际8*8的图像块例子,图中的数字代表了每个像素的亮度值。从图上可以看出,在这个图像块中各个像素亮度值比较均匀,特别是相邻像素亮度值变化不是很大,说明图像信号具有很强的相关性。

下图是上图中图像块经过DCT变换后的结果。从图中可以看出经过DCT变换后,左上角的低频系数集中了大量能量,而右下角的高频系数上的能量很小。

信号经过DCT变换后需要进行量化。由于人的眼睛对图像的低频特性比如物体的总体亮度之类的信息很敏感,而对图像中的高频细节信息不敏感,因此在传送过程中可以少传或不传送高频信息,只传送低频部分。

下图的例子显示的是去除较小的高频分量后,图像的码率得到了较大的压缩,但图像的主观质量却并未受到同等比例的影响。

量化过程通过对低频区的系数进行细量化,高频区的系数进行粗量化,去除了人眼不敏感的高频信息,从而降低信息传送量。因此,量化是一个有损压缩的过程,而且是视频压缩编码中质量损伤的主要原因

量化的过程可以用下面的公式表示:

其中FQ(u,v)表示经过量化后的DCT系数;F(u,v)表示量化前的DCT系数;Q(u,v)表示量化加权矩阵;q表示量化步长;round表示归整,即将输出的值取为与之最接近的整数值。

合理选择量化系数,对变换后的图像块进行量化后的结果如图所示。


DCT系数经过量化之后大部分经变为0,而只有很少一部分系数为非零值,此时只需将这些非0值进行压缩编码即可。

2. 熵编码 视频编码中的熵编码方法主要用于消除视频信息中的统计冗余。由于信源中每一个符号出现的概率并不一致,这就导致使用同样长度的码字表示所有的符号会造成浪费。通过熵编码,针对不同的语法元素分配不同长度的码元,可以有效消除视频信息中由于符号概率导致的冗余。 在视频编码算法中常用的熵编码方法有变长编码和算术编码等,具体来说主要有上下文自适应的变长编码(CAVLC)和上下文自适应的二进制算术编码(CABAC)。

3. 预测编码

In video compression "prediction" of a block means finding the most“similar” block to the current one among the surrounding blocks.

在视频压缩技术中,“预测”一词指的是在当前像素块周围的一些像素块中找出(或者用一定的方法构造一个)与当前块最“接近”的像素块。

预测编码可以用于处理视频中的时间和空间域的冗余。视频处理中的预测编码主要分为两大类:帧内预测和帧间预测。

帧内预测:预测值与实际值位于同一帧内,用于消除图像的空间冗余;帧内预测的特点是压缩率相对较低,然而可以独立解码,不依赖其他帧的数据;通常视频中的关键帧都采用帧内预测。
帧间预测:帧间预测的实际值位于当前帧,预测值位于参考帧,用于消除图像的时间冗余;帧间预测的压缩率高于帧内预测,然而不能独立解码,必须在获取参考帧数据之后才能重建当前帧。

通常在视频码流中,I帧全部使用帧内编码,P帧/B帧中的数据可能使用帧内或者帧间编码。

运动估计(Motion Estimation)和运动补偿(Motion Compensation)是消除图像序列时间方向相关性的有效手段。上文介绍的DCT变换、量化、熵编码的方法是在一帧图像的基础上进行,通过这些方法可以消除图像内部各像素间在空间上的相关性。实际上图像信号除了空间上的相关性之外,还有时间上的相关性。例如对于像新闻联播这种背景静止,画面主体运动较小的数字视频,每一幅画面之间的区别很小,画面之间的相关性很大。对于这种情况我们没有必要对每一帧图像单独进行编码,而是可以只对相邻视频帧中变化的部分进行编码,从而进一步减小数据量,这方面的工作是由运动估计和运动补偿来实现的。

运动估计技术一般将当前的输入图像分割成若干彼此不相重叠的小图像子块,例如一帧图像的大小为1280*720,首先将其以网格状的形式分成40*45个尺寸为16*16的彼此没有重叠的图像块,然后在前一图像或者后一个图像某个搜索窗口的范围内为每一个图像块寻找一个与之最为相似的图像块。这个搜寻的过程叫做运动估计。通过计算最相似的图像块与该图像块之间的位置信息,可以得到一个运动矢量。这样在编码过程中就可以将当前图像中的块与参考图像运动矢量所指向的最相似的图像块相减,得到一个残差图像块,由于残差图像块中的每个像素值很小,所以在压缩编码中可以获得更高的压缩比。这个相减过程叫运动补偿

由于编码过程中需要使用参考图像来进行运动估计和运动补偿,因此参考图像的选择显得很重要。一般情况下编码器的将输入的每一帧图像根据其参考图像的不同分成3种不同的类型:I(Intra)帧、B(Bidirection prediction)帧、P(Prediction)帧。如图所示。

如图所示,I帧只使用本帧内的数据进行编码,在编码过程中它不需要进行运动估计和运动补偿。显然,由于I帧没有消除时间方向的相关性,所以压缩比相对不高。P帧在编码过程中使用一个前面的I帧或P帧作为参考图像进行运动补偿,实际上是对当前图像与参考图像的差值进行编码。B帧的编码方式与P帧相似,惟一不同的地方是在编码过程中它要使用一个前面的I帧或P帧和一个后面的I帧或P帧进行预测。由此可见,每一个P帧的编码需要利用一帧图像作为参考图像,而B帧则需要两帧图像作为参考。相比之下,B帧比P帧拥有更高的压缩比。

4. 混合编码

上面介绍了视频压缩编码过程中的几个重要的方法。在实际应用中这几个方法不是分离的,通常将它们结合起来使用以达到最好的压缩效果。下图给出了混合编码(即变换编码+ 运动估计和运动补偿+ 熵编码)的模型。该模型普遍应用于MPEG1,MPEG2,H.264等标准中。

混合编码模型

从图中我们可以看到,当前输入的图像首先要经过分块,分块得到的图像块要与经过运动补偿的预测图像相减得到差值图像X,然后对该差值图像块进行DCT变换和量化,量化输出的数据有两个不同的去处:一个是送给熵编码器进行编码,编码后的码流输出到一个缓存器中保存,等待传送出去。另一个应用是进行反量化和反变化后的到信号X’,该信号将与运动补偿输出的图像块相加得到新的预测图像信号,并将新的预测图像块送至帧存储器。

关于视频编解码的更多内容可进一步阅读知友的主题文章

auxten:【从零开始】理解视频编解码技术1263 赞同 · 42 评论文章正在上传…重新上传取消​

编辑于 2020-03-22 23:58

猜你喜欢

转载自blog.csdn.net/hi_zhengjian/article/details/121922599
今日推荐