1、ftp:/upload:upload10.141.200.77:22,多媒体技术基础(第3版)第13章 MPEG-4 AVC/H.264视像,张奇复旦大学 计算机科学技术学院 2011年5月,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,3/73,第13章 MPEG-4 AVC/H.264视像目录,13.1 MPEG-4 AVC/H.264的由来13.2 提高编码效率的主要技术13.3 视像数据的编码结构13.3.1 分层处理的结构13.2.2 视像数据的组织13.3.3 三种类型的视像13.4 编译码器的结构13.5 帧内预测13.5.1 44亮度预测方式13.5.2
2、 1616亮度预测方式13.5.3 88色度预测方式13.6 帧间预测13.6.1 移动补偿块的大小13.6.2 子像素移动矢量13.6.3 移动矢量的预测,13.7 变换和量化13.7.1 变换类型13.7.2 DCT和IDTC变换简化13.7.3 正变换与量化13.7.4 逆变换与逆量化13.7.5 44亮度DC残差系数的变换和量化13.7.6 22色度DC系数的变换和量化13.7.7 变换与量化过程举例13.8 熵编码13.8.1 指数葛洛姆编码介绍13.8.2 CAVLC编码13.8.3 CABAC编码,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,4/73,第
3、13章 MPEG-4 AVC/H.264视像,前言MPEG-4 AVC / H.26412 34是ITU-T和ISO/IEC联合推荐的视像编码工业标准,在相同质量下,比先前的MPEG-Video的压缩效率提高23倍为降低H.264的计算复杂度和提高压缩效率,ITU的专家组正在酝酿开发H.265,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,5/73,13.1 MPEG-4 AVC/H.264的由来,MPEG-4视像标准从2003年开始,通常认为由两部分组成MPEG-4 Visual可视对象编码标准ISO/IEC 14496-2 Part 2。版本1(1999年),版本2
4、 (2001年)主要处理自然对象、合成对象和混合对象的编码MPEG-4 AVC/ H.264高级视像编码ISO/IEC 14496-10 Part 10:Advanced Video Coding (AVC), 2003年发布主要处理自然视像的编码,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,6/73,13.1 MPEG-4 AVC/H.264的由来(续1),MPEG-4 Visual的问题与传统视像编码的最大差别是引入了“对象编码”设计思想:将某一确定场景中的不同部分作为视像对象,采用不同的编码技术分别予以编码和传送,在接收端解码之后重新组合还原出原来的场景在理论上
5、说,MPEG-4 Visual的这种设计思想是先进的,功能是强大的,应用是广泛的。许多观察家也曾预言,MPEG-4 Visual将成为因特网上视听对象的主要编码方法,并取代目前正在使用的、享有专利的各种编解码器,但时至今日这种情况还未出现主要问题:技术上的困难。目前人工智能技术还不能轻而易举地识别场景中的各种对象。尽管自1999年发布以来已经开发了多个版本,但技术上还没有取得较大的突破,使用的视像压缩技术主要还是20世纪90年代开发的技术,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,7/73,13.1 MPEG-4 AVC/H.264的由来(续2),H.26L的出现V
6、CEG专家组Video Coding Experts Group的缩写, ITU专家组1995年完成H.263可视电话标准版本1的开发后开始两个新计划开发H.263版本2的短期(short-term)计划开发低位速率可视通信新标准的长期(long-term)计划H.26L的出现执行长期计划的结果是在1999年10月产生了H.26L标准草案,提供的视像压缩性能明显优于以往的ITU-T标准,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,8/73,13.1 MPEG-4 AVC/H.264的由来(续3),H.264的出现JVT联合视像组MPEG专家组认识到H.26L的潜力,在
7、2001年12月与VCEG成立了JVT(Joint Video Team) ,其主要任务就是将H.26L发展为国际标准H.264的出现JVT专家们努力的结果是在2003年3月产生了两个名称不同而内容一致的标准ISO MPEG-4 Part 10ITU-T H.264常写成:MPEG-4 AVC/H.264 或 H.264/ MPEG-4 AVC,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,9/73,13.2 提高编码效率的主要技术,MPEG-4 AVC/H.264是视像数据压缩技术取得重大进展的标志编码效率明显提高MPEG-4 AVC/H.264继承了先前开发的视像标
8、准的许多优点,在结构上没有明显改变,只在各个主要功能模块内部做了“小打小闹”和“精雕细刻”在视像质量相同的前提下,采用MPEG-4 AVC/H.264标准获得的视像数据压缩比是采用MPEG-2视像标准的23倍应用范围得到扩大可有效降低在有线网络、卫星网络和电信网络上传送高质量影视节目的成本,使应用范围得到进一步扩大。例如,原先使用MPEG-2视像技术的DVD影视和数字电视已经开始转向采用MPEG-4 AVC / H.264技术,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,10/73,13.2 提高编码效率的主要技术(续1),提高编码效率的主要改进技术56 采用可变图块
9、大小的帧间预测和移动补偿预测图块大小不再局限于1616像素,可小到44像素,于是提高了预测精度,如将移动矢量精度提高到1/4个像素采用空间的帧内预测定义了多种预测方式,目的是找到相关性最大的预测采用 “整数变换编码”从DCT演变来的变换编码,提高了编码的运算速度采用效率更高的熵编码前后文自适应可变长度编码(context-based adaptive variable length coding, CAVLC)前后文自适应二元算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)。采用多参考帧和消除“块状失真”的滤波等技术,201
10、8年6月19日,第13章 MPEG-4 AVC/H.264视像,11/73,13.2 提高编码效率的主要技术(续2),2018年6月19日,第13章 MPEG-4 AVC/H.264视像,12/73,13.3 视像数据的编码结构,13.3.1 分层处理结构AVC/ H.264标准分成两层,见图13-1视像编码层(Video Coding Layer, VCL),用于有效地表达视像内容网络抽象层(Network Abstraction Layer,NAL),用于组织VLC数据并提供标题(header)等信息,便于在各种不同的网络上传输,2018年6月19日,第13章 MPEG-4 AVC/H.2
11、64视像,13/73,13.3 视像数据的编码结构(续1),图13-1 MPEG-4 AVC/ H.264的分层结构,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,14/73,13.3 视像数据的编码结构(续2),13.2.2 视像数据的组织 1. 画面划分一帧画面当作一片像片或分割成若干像片,见图13-2(a)一片像片包含若干宏块(MB),见图13-2(b)每个宏块包含1个1616像素的亮度(luma)样本2个88像素的色度(chroma)样本一片或多片像片构成像片组(slice group),见图13-2(c)在隔行扫描视像中,每一场可单独编码,2场构成的帧也可单独
12、编码,偶数场和奇数场相应的宏块构成宏块对,见图13-2(d),2018年6月19日,第13章 MPEG-4 AVC/H.264视像,15/73,13.3 视像数据的编码结构(续3),图13-2 MPEG-4 AVC_H.264的画面分割,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,16/73,13.3 视像数据的编码结构(续4),2. 宏块与子宏块宏块可划分成宏块区(macroblock partition)和子宏块(sub-macroblock),见图13-3(a)子宏块(也称子块)可划分成子宏块区(sub-macroblock partition),见图13-3(
13、b),图13-3 宏块与子宏块的划分,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,17/73,13.3 视像数据的编码结构(续5),宏块的结构图13-4表示1616宏块的树状结构分割法在编码时有可能使用88、48、84或44像素块的组合,图13-4 树状结构分割法,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,18/73,13.3 视像数据的编码结构(续6),3. 像片的类型5种类型的像片。前3种与MPEG-1,-2的图像I、P和B类似I像片:由I宏块构成的像片。所有I宏块编码都是使用帧内方式(intra mode)的预测编码P像片:由P宏块构
14、成的像片。 宏块编码包含使用帧内方式(intra mode)的预测编码使用帧间方式(inter mode)的预测编码B像片:由B宏块构成的像片。所有宏块的编码都是使用帧间方式的预测编码,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,19/73,13.3 视像数据的编码结构(续7),SP像片(switching-P slice):由SP宏块构成的像片。SP宏块的编码是用帧间方式(inter mode)的预测编码SI像片(switching-I slice):由SI宏块构成的像片。SI宏块的编码是用帧内方式的预测编码 SP和SI的作用用于在同一视像源而位速率不同的视像流之间
15、进行切换、随机访问和快进或快退为简单起见,假设视像的一帧就是一片像片,使用SP和SI进行视像流切换的应用见图13-5图中的视像流A是高数据率的播放视像流,视像流B是低数据率的播放视像流,它们之间可通过 “切换流切换图像SP ”进行切换,或用SI图像进行切换,SP,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,20/73,13.3 视像数据的编码结构(续8),图13-5 使用SP和SI切换视像流的概念,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,21/73,13.3 视像数据的编码结构(续9),13.3.3 三种类型的视像基本型(Baseline
16、 Profile)支持使用I像片和P像片的帧内编码和帧间编码使用基于前后文自适应可变长度编码(CAVLC)具有基本的性能和抗错能力用于要求低延时的电视会议和可视电话等应用主流型(Main Profile)支持逐行扫描和隔行扫描视像支持帧内编码和帧间编码支持使用B像片的帧间编码和使用加权预测的帧间编码使用基于前后文自适应二元算术编码(CABAC)用于质量要求比较高的电视广播和DVD等,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,22/73,13.3 视像数据的编码结构(续10),(3) 扩展型(Extended Profile)不支持隔行扫描视像和CABAC附加SP像片
17、和SI像片的切换功能使用数据分割改进抗错能力用于各种网络上的流播(streaming),图13-6 MPEG-4 AVC/H.264的三种类型,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,23/73,13.4 编解码器的结构,MPEG-4 AVC/H.264编解码器概要与先前的视像压缩编码标准类似MPEG-4 AVC/H.264标准没有明确定义编译码器的结构,只定义编码视像位流的语句、语义和解码的方法编码器和解码器包含的功能块见图13-7除了用于消除重构图像的块状失真的“消块滤波器(Deblocking Filter)”、减少帧内空间冗余的“帧内移动估算(Intra-
18、frame Estimation)”与“帧内预测(Intra-frame Prediction)”外,大多数功能块在以前的标准中都存在,只是其中的细节有较大变化,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,24/73,13.4 编解码器的结构(续1),编码器的结构见图13-7(a),编码器有两个通道从左到右的编码通道当前帧(Fn)以宏块为处理单元,可用帧内编码或帧间编码,预测值用P表示帧内预测,预测值是由当前帧(Fn)中的输入样本与过去帧的重构但未经滤波(uFnunfiltered)的样本生成的帧间预测,预测值是由当前帧(Fn)中的输入样本与过去重构并经滤波的参考图像
19、(uFn-1) 的样本通过移动补偿预测生成的,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,25/73,13.4 编解码器的结构(续2),编码过程当前帧的输入值和预测值相减后生成预测误差DnDn经过变换(T)和量化(Q)产生量化变换系数X通过重新排序和熵编码得到的系数连同解码时需要的边信息(side information),包括预测方式、量化参数和移动矢量等一起形成压缩数据位流送到网络抽象层(NAL)用于传输或存储从右到左的图像重构通道量化变换系数X通过逆量化(Q-1)和逆变换(T-1)后产生预测误差Dn与预测值P相加后生成重构图像uFn,通过消块滤波器(Debloc
20、king Filter)后生成作为帧间预测时用的重构参考图像Fn,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,26/73,13.4 编解码器的结构(续3),图13-7 MPEG-4 AVC/H.264编解码器结构7,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,27/73,13.4 编解码器的结构(续4),解码器的结构见图13-7(b),与图13-7(a)中的图像重构过程类似,图13-7 MPEG-4 AVC/H.264编解码器结构7,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,28/73,13.5 帧内预测,帧内预测
21、在以前的视像标准中,I图像只利用宏块内部的空间相关性,而没有利用宏块之间的空间相关性。AVC/ H.264引入了帧内预测(intra prediction)技术帧内预测:在同一像片中从过去编码后重构的相邻图块对当前图块进行预测编码时用实际的样本值与预测值相减得到预测误差对预测误差进行变换和编码。预测块大小:亮度(luma)样本可在44(用于带细节的图像区域)、88或1616 (用于过渡较平缓的图像区域)之间选择预测方式亮度块:88和44有9种,1616有4种两个色度(chroma)块:88和44,有4种,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,29/73,13.5
22、 帧内预测(续1),44亮度预测方式44亮度样本的标记见图13-8。位于a,b,p上面和左边的样本是已编码和重构的样本,标记为AM(共13个)亮度块的预测块可根据AM样本计算。注意在当前像片中不一定都有AM样本可用,为保持像片解码的独立性,只使用当前像片中的样本进行预测如果E,F,G和H样本不存在,则可用D取代。使用帧内预测编码时有两个问题需要解决(1) 如何计算预测块(2) 如何选择预测块,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,30/73,13.5 帧内预测(续2),预测块的计算每个样本的预测值可按指定预测方式下的预测方法计算9种预测方式见图13-9,箭头表示
23、预测方向,图13-8 44亮度块预测样本的标记,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,31/73,13.5 帧内预测(续3),方式02:例如在预测方式0下,a,e,i和m的样本预测值用A样本值,d,h,l和p的样本预测值用D样本值在预测方式2下,ap的样本预测值都用的平均值:(A+B+C+D+I+J+K+L)/8 方式38:预测值为AM的加权平均。例如在预测方式4下,a的样本预测值可用round(I/4 + M/2 + A/4)计算,d的样本预测值可用round (B/4 + C/2 + D/4)计算在预测方式8下,a的样本预测值可用round(I/2 + J/
24、2)计算,d的样本预测值可用round(J/4 + K/2 + L/4)计算其中的round表示四舍五入,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,32/73,13.5 帧内预测(续4),图13-9 44亮度块帧内预测方式,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,33/73,13.5 帧内预测(续5),预测块的选择法全搜索法(full searching)是其中之一,过程如下步骤1:分别计算9种方式下的44样本预测块步骤2:分别计算9种方式下的44原始样本块与样本预测块之间的差值,然后计算绝对误差的和 通常用SAD (sum of ab
25、solute difference)或SAE (sum of absolute errors)表示,或计算均方误差MSE (mean square error)步骤3:比较9种方式下的SAD或MSE。通常认为误差最小的就是预测精度最高的样本预测块选择最佳样本预测块需要大量的计算,许多学者在减少计算量方面做了许多卓有成效的研究,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,34/73,13.5 帧内预测(续6),1616亮度预测方式 4种预测方式见图13-10Mode 0: 垂直外插预测,每列的所有样本预测值与顶部(H)的样本值相同Mode 1: 水平外插预测,每行的所有
26、样本预测值与左边(V)的样本值相同Mode 2: 平均插值预测,每个样本预测值均为相应的顶部和左边样本值之和的平均值Mode 3: “平面(plane)”预测,用顶部和左边的样本采用空间插值法得到样本预测值88色度预测方式88和44色度块都指定了相同的4种预测方式mode 0 (DC), mode 1 (水平), mode 2 (垂直)和mode 3 (平面)预测方式与1616亮度的含义相同,只是编号不同2个88或2个44的色度块要使用相同的预测方式,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,35/73,13.5 帧内预测(续7),图13-10 1616亮度块帧内预
27、测方式,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,36/73,13.6 帧间预测,帧间预测(inter prediction)帧间预测(inter prediction)概念从过去编码后重构的相邻帧的样本预测当前待编码帧的样本的过程编码以块为基础编码时用实际的样本值与预测值相减得到预测误差对预测误差进行变换和编码,以消除时间方向上的冗余性。比较MPEG-1和-2H.264可支持大小可变的移动补偿块移动矢量可精确到1/4像素支持多参考帧的预测,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,37/73,13.6 帧间预测(续1),13.6.1移动
28、补偿块的大小见如图13-31616的帧间编码宏块可以分割成168,816 或88个样本的宏块区88的子宏块可分分割成84,48或44个样本的子宏块区两个色度块(Cb和Cr)的大小都是亮度块的1/2,移动矢量也是亮度块的移动矢量的1/2 编码宏块的分区移动补偿方法称为树型结构移动补偿(tree-structured motion compensation)法,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,38/73,13.6 帧间预测(续2),13.6.2子像素移动矢量 子像素的概念在计算移动矢量和移动补偿量时需参考帧的样本,因采样的样本数有限,在无样本的位置可用该位置附
29、近的样本值通过插值得到插值样本,这个像素称为子像素(sub-pixel)图13-11(a)中的符号实际样本位置:用表示半像素位置:两个样本中间的插值位置,用表示1/4像素位置:两个样本之间1/4的插值位置,用表示子像素移动补偿是什么通过搜索插值样本为当前图块寻找比较准确的移动矢量和移动补偿量的方法,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,39/73,13.6 帧间预测(续3),图13-11 子像素移动估算概念,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,40/73,13.6 帧间预测(续4),子像素移动估算 在图13-11(b)中的符号实
30、心圆()表示整像素搜索得到的最佳匹配实心方块()表示半像素搜索得到的最佳匹配实心三角形()表示1/4搜索得到的最佳匹配像素移动估算举例开始用整像素搜索得到最佳匹配()然后用半像素搜索得到的最佳结果()与整像素搜索得到的最佳匹配相比,看看匹配是否有改善,如果需要还可用1/4像素搜索最后将当前图块的样本值减去最终匹配图块的样本值,就得到当前图块的移动补偿量,通常用绝对误差之和(SAE)表示。SAE值越低,表示移动补偿效果越好,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,41/73,13.6 帧间预测(续5),子像素移动矢量图13-12(a)表示在当前帧中要预测的44亮度块
31、图13-12(b)表示整像素移动矢量,当前块在过去编码后重构的参考帧中找到的最佳匹配块图13-12(c)表示1/2像素移动矢量,当前块在过去编码后重构的参考帧中找到的最佳匹配块,图13-12 整像素和子像素移动矢量举例,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,42/73,13.6 帧间预测(续6),13.6.3移动矢量预测必要性每个分量的移动矢量都要编码和传送,这将降低视像数据的压缩比,选择小的移动补偿块时将更严重预测方法通过已编码的相邻分区的移动矢量进行预测,然后对实际的移动矢量和预测的移动矢量之差进行编码和传送预测方法见13-13,该方法与移动补偿块的大小和相
32、邻块的移动矢量是否可用有关在图13-13(a)中,当前块E的预测矢量用块大小相同(如1616)的相邻块A、B和C进行预测在图13-13(b)中,当前块E的预测矢量用块大小不同的A、B和C进行预测,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,43/73,13.6 帧间预测(续7),当前块E的预测矢量基本上取左(A)、上(B)和右上(C)宏块的移动矢量的中值(median value),通常写成,图13-13 预测矢量的预测方法,其中,,是3个相邻的移动矢量,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,44/73,13.7 变换和量化,13.7.
33、1 变换类型预测误差块也称为残差块(residual block),每个残差块中的数据(称为残差数据)都要进行变换、量化和编码在MPEG-4 AVC/H.264中,根据残差数据的类型采用不同的变换。在1616预测方式下,使用3种类型的变换44亮度和色度阵列使用近似的DCT变换44亮度阵列的DC(直流分量)残差系数使用哈达玛变换(Hadamard transform)22色度阵列的DC残差系数使用哈达玛变换数据的编号宏块中的数据按照图13-14所示的扫描顺序进行编号“-1”包含44亮度阵列的DC残差系数,015包含44亮度阵列的残差系数;16和17包含22色度阵列的DC残差系数,1825包含44
34、色度阵列的残差系数,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,45/73,13.7 变换和量化(续1),图13-14 宏块中的残差块扫描顺序,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,46/73,13.7 变换和量化(续2),13.7.2 DCT和IDTC变换简化1. DCT变换若输入的44阵列为X,经过DCT变换后的输出Y可按下式计算,其中,A是正交变换矩阵,矩阵中的常数是,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,47/73,13.7 变换和量化(续3),矩阵A可用蝶形分解为两个矩阵相乘A=BC,因此DCT
35、变换可写成Y=BCXCTB 经过推导,44阵列X经DCT变换后的输出Y可按下式计算,其中,CXCT是二维变换“核”,E是由缩放因子组成的矩阵,符号 表示矩阵中的每个元素与矩阵中相同位置的元素相乘由于E矩阵中的元素是常数,因此可与编码器中的量化和解码器中的逆量化进行组合,这样可简化DCT变换的计算,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,48/73,13.7 变换和量化(续4),2. IDTC 变换DCT变换为Y=AXAT, IDTC变换为X=ATYA。由于矩阵A是正交变换矩阵,按照DCT变换的简化方法,可从DCT变换得到简化的IDCT变换,2018年6月19日,第
36、13章 MPEG-4 AVC/H.264视像,49/73,13.7 变换和量化(续5),13.7.3 正变换与量化 1. 正变换使用d=1/2时,经推导,正变换具有如下形式,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,50/73,13.7 变换和量化(续6),缩放和量化数据输入块X经过 变换后的每个系数Wij使用标量量化器进行量化。设计标量量化器和逆量化器的主要原则避免除法和浮点运算要与后缩放矩阵进行合并量化运算按下式进行,其中,Zij是量化后的系数 Yij是使用DCT正变换后的系数 Qstep是量化阶,2018年6月19日,第13章 MPEG-4 AVC/H.264
37、视像,51/73,13.7 变换和量化(续7),变换说明这个正变换是近似的DCT变换,因为对d和b的取值做了改动,因此变换的输出与44的DCT变换不一致输入块X的变换转化为计算 , 然后对每个系数Wij进行缩放和量化,其中的(i, j)表示系数的位置缩放运算( )可归并到量化计算过程中,因此Ef矩阵称为后缩放矩阵(post-scaling matrice)计算 不需要做实际的乘法,因为变换矩阵中的元素均为1或2 ,只要做加、减和左移运算即可,图13-15 正向DCT变换和量化框图,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,52/73,13.7 变换和量化(续8),1
38、3.7.4 逆变换与逆量化逆变换使用d=1/2时,逆变换(inverse transform)按下式计算,中的因子是+1/2或-1/2,因此可用右移操作实现除2运算。由于Y可预先通过前缩放矩阵(pre-scaling matrice)Ei和使用恰当的缩放因子进行缩放,因此除2运算引入的误差可得到补偿,运算结果无明显的精度丢失,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,53/73,13.7 变换和量化(续9),逆量化假设仍用Zij表示量化后的系数,Yij是经过逆量化后的系数,Qstep表示量化阶,逆量化可按下式计算,,在逆变换之前可用前缩放矩阵Ei (根据位置(i,
39、j)选取a2, ab或b2)对Yij进行缩放 为避免在计算过程中引入的舍入误差,在做逆变换之前的输入用一个常数因子64相乘(左移操作),在逆变换之后的输出通过右移操作去掉常数因子64,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,54/73,13.7 变换和量化(续10),44块的逆量化和IDCT变换过程可用图13-16表示,图13-16 逆量化和逆变换框图,将逆量化、前缩放和乘常数因子的运算归并在一起进行计算时,用于逆变换的系数Wij就可按下式计算,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,55/73,13.7 变换和量化(续11),13.
40、7.5 44亮度DC残差系数的变换和量化变换在1616亮度块的帧内预测方式下,每个44阵列的残差数据使用 变换,变换后的16个DC残差系数组成44阵列,然后用哈达玛变换,或称Walsh-Hadamard transform, Walsh transform,Walsh-Fourier transform,是傅立叶变换的一种类型 44亮度DC残差系数块使用如下形式的哈达玛变换,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,56/73,13.7 变换和量化(续12),逆变换44亮度DC残差系数块的逆哈达玛变换使用如下算式,量化和逆量化量化和逆量化也有一套具体的计算方法,相见
41、教材,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,57/73,13.7 变换和量化(续13),13.7.6 22色度DC系数的变换和量化变换22色度DC残差系数块使用如下形式的哈达玛变换,,逆变换22亮度DC系数块的逆哈达玛变换使用如下算式,量化和逆量化量化和逆量化也有一套具体的计算方法,相见教材,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,58/73,13.8 熵编码,MPEG-4 AVC/H.264的熵编码在以往的视像压缩标准中,熵编码(entropy coding)通常都采用霍夫曼编码。为充分利用视像数据的相关性,MPEG-4 AVC/
42、H.264采用了压缩效率更高的熵编码技术,推荐使用的3种熵编码技术是指数葛洛姆码(Exp-Golomb code)前后文自适应可变长度编码技术(CAVLC)前后文自适应二元算术编码技术(CABAC)CAVLC比CABACCAVLC比CABAC的计算复杂度较低,编码效率也较低CABAC比CAVLC的编码效率较高,计算复杂度也较高有些文献指出,在相同视像质量条件下,CABAC可比CAVLC减少914%的位速率,甚至更高CAVLC编码用于所有视像类型,而CABAC只用于主流型(main profile)视像,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,59/73,13.8
43、熵编码(续1),13.8.1 指数葛洛姆编码介绍指数葛洛姆码Exp-Golomb code或Exponential-Golomb code的译名霍夫曼(Huffman)变长码的一种类型结构规则、码字只与指数的阶有关以及不需用专门码表指数葛洛姆码的前11个码字见表13-6,其中的码号实际上就是行程长度编码(RLC)中的行程长度指数葛洛姆码的构造方法见表13-7,可用下面的形式表示 M zeros1INFO 或 Prefix(前缀)1Suffix(后缀) 其中,M zeros或Prefix是其值为“0”的M位前导域 INFO或Suffix是M位信息域。例如,在表13-6 中,在k=0时,码号(co
44、de_num)0的码字没有前导 “0”,也没有后缀,码号(code_num)1和2的码字的 前缀和后缀都只有1位,码号(code_num)36的码字 的前缀和后缀各有2位,依此类推,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,60/73,13.8 熵编码(续2),2018年6月19日,第13章 MPEG-4 AVC/H.264视像,61/73,13.8 熵编码(续3),2018年6月19日,第13章 MPEG-4 AVC/H.264视像,62/73,13.8 熵编码(续4),MPEG-4 AVC/H.264使用的编码0阶葛洛姆码,每个码字的长度为(2M+1)位,M的长
45、度和INFO的值可用下式分别计算,M=floor(log2(code_num+1), floor(x) 表示向下取整到xINFO= code_num+1-2M解码可按下面的步骤进行步骤1:读前导域M zeros步骤2:在信息域INFO中读M位步骤3:code_num=2M+INFO-1,(对码号0,INFO和M均为0)例如,0001001,code_num = +1-1 = 8编码参数的映射ue(v):无符号参数直接映射,code_num = v,用于宏块类型、参考帧索引等,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,63/73,13.8 熵编码(续5),me(V):
46、映射指数(Mapped Exponential),按标准规定的映射表将参数v映射到code_num,用于码块模式(coded_block_pattern)参数。码块模式表示宏块中哪块包含非零系数表13-9列出了用于帧间预测的一小部分宏块模式,se(v) :带符号参数映射,用于移动矢量差(MVD),量化器参数QP等。映射关系见表13-8,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,64/73,13.8 熵编码(续6),2018年6月19日,第13章 MPEG-4 AVC/H.264视像,65/73,13.8 熵编码(续7),13.8.2 CAVLC编码利用经量化和Z字形
47、排列后的变换系数的如下特性数据中包含很多0,可用行程长度编码技术表达0字符串在非零系数中出现最多的是+/-1序列,可用+/-1的拖曳1(“TrailingOnes”或“T1s”)数目表示在相邻块中的非零系数的数目是相关的,可用查找表(look-up table)对非零系数的数目进行编码在DC系数附近的非零系数值比较大,在高频端附近的非零系数值比较小,可用查找表对非零系数值进行编码CAVLC编码的核心技术是制定码表可变长度编码(VLC)码表是根据具体数据的特点制定的不仅码表的数目多而且编码也比较繁琐CAVLC的计算方法还在不断改进建议:对不需要具体设计编解码器的读者不一定要追究每个细节,只要求了
48、解编解码的思想就可以,教材中的例子也可跳过,2018年6月19日,第13章 MPEG-4 AVC/H.264视像,66/73,13.8 熵编码(续8),13.8.3 CABAC编码核心技术确定前后文模型在2005年发布的H.264标准中,为各种语句元素定义的前后文模型合计有459个之多CABAC的计算方法还在不断改进BAC编码binary arithmetic coding的缩写,二元算术编码只用“0”和“1”两个符号的算术编码技术 注意:算术编码(arithmetic coding)是对概率已知的数值 进行编码的技术编码效率都可获得接近于熵的平均码长缺点是其他符号必须转换成用0和1构成的位串,