H.264视频编码学习•第一章视频编码基本知识•第二章视频编码发展概况•第三章H.264分析第一章视频编码基本知识•视频编码的原因:视频未经编码(压缩)时具有极大数据量,不利于存储,传输,实时应用。•视频编码的原理:—空间冗余:同一幅图像的相邻像素点具有连贯性。—时间冗余:一组连续的画面之间存在着关联性。—结构冗余:某些场景中存在着明显的图像分布模式,有规律可循。比如:方格地板,蜂窝。—视觉冗余:人眼对图像细节的分辨率有限,对亮度比对色度更敏感。—知识冗余:许多图像的理解和某些知识有关联。比如人类面部的固定结构。•视频编码的原则:在保证视觉效果的前提下尽可能减少视频的数据量。•视频编码(压缩)方式有损压缩与无损压缩—有损:解压后与压缩前相比数据有丢失,丢失不可恢复,压缩比高。—无损:解压后与压缩前数据完全一致,压缩比低。注:高效压缩算法往往使用有损压缩来减少数据量。帧内压缩与帧间压缩—帧内:一幅帧的相邻像素点具有空间连续性。不考虑相邻帧,减少本帧冗余信息,也称空间压缩。—帧间:视频具有时间连续性,只记录相邻帧之间的差异来减少数据量,也称时间压缩。对称编/解码和不对称编/解码—对称:编码和解码占用相同的计算处理能力和时间,实时性好。—不对称:与上相反,一般压缩慢,解压快。第二章视频编码发展概况ITU-T与MPEG•ITU-T与ISO/IEC是制定视频编码标准的两大组织,ITU-T的标准包括H.261、H.263、H.264,主要应用于实时视频通信领域,如会议电视;MPEG系列标准是由ISO/IEC制定的,主要应用于视频存储(DVD)、广播电视、因特网或无线网上的流媒体等。•值得注意的是两个组织也共同制定了一些标准,H.262标准等同于MPEG-2的视频编码标准,而最新的H.264标准则被纳入MPEG-4的第10部分。•注:本幻灯片以ITU-T视频编码标准概述发展过程。H.261•H.261是ITU-T为综合业务数字网(ISDN)上开展双向声像业务(可视电话、视频会议)而制定的,速率为64kb/s的整数倍。H.261只对CIF和QCIF两种图像格式进行处理,每帧图像分成图像层、宏块组(GOB)层、宏块(MB)层、块(Block)层来处理。•H.261是最早的运动图像压缩标准,它详细制定了视频编码的各个部分,包括运动补偿的帧间预测、DCT变换、量化、熵编码,以及与固定速率的信道相适配的速率控制等部分。H.263•H.263是ITU-T为低于64kb/s的窄带通信信道制定的视频编码标准。•H.263与H.261的主要区别:(1)数据流层次结构的某些部分在H.263中是可选的,使得编解码可以配置成更低的数据率。(2)H.263的运动补偿使用半像素精度,而H.261则用全像素精度和环路滤波。(3)H.263采用无限制的运动向量以及基于语法的算术编码。(4)H.263除支持QCIF和CIF外,还支持SQCIF、4CIF和16CIF,SQCIF相当于QCIF一半的分辨率,而4CIF和16CIF分别为CIF的4倍和16倍。(5)采用事先预测和与MPEG中的P-B帧一样的帧预测方法。H263+•H.263+与H.263的主要区别:•(1)支持更多图像源格式。•(2)可扩展性,允许多显示率、多速率及多分辨率,增强了视频信息在易误码、易丢包异构网络环境下的传输能力。•(3)采用先进的帧内编码模式,增强的PB-帧模式改进了H.263的不足,增强了帧间预测的效果。H.236++•H263++在H263+基础上增加了3个选项,增强码流在恶劣信道上的抗误码性和编码效率。•选项U—增强型参考帧选择,提供增强的编码效率和信道错误再生能力。•选项V—数据分片选择,提供增强型的抗误码能力(特别是在传输过程中本地数据被破坏的情况下),通过分离视频码流中DCT的系数头和运动矢量数据,采用可逆编码方式保护运动矢量。•选项W—在H263+的码流中补充信息,保证增强型的反向兼容性。H.264•H.264是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准。•H.264的特点:(1)在同等视觉条件下,压缩比更高。(2)对网络传输具有更好的支持功能,支持交互式应用所需的低延迟模式,支持随机帧索取,支持可变码率,支持多种分辨率。(3)对信道时延的适应性较强,既能用于低时延的实时业务(如会议电视),又可用于无时延限制的场合(如视频存储)。(4)具有较强的抗误码能力,可适应不同网络中的视频传输,网络亲和性好。(5)在编码器和解码器中的复杂度可分级设计,使图像质量和编码处理之间可分级,以适应不同复杂度的应用。第三章H.264分析•Profiles&Levels•许多标准包含不同的配置能力,通常是基于Profiles&Levels.•Aprofileisusuallyasetofalgorithmicfeatures.•Alevelisusuallyadegreeofcapability.•H.264hasthreeprofiles•Baseline:支持帧内和帧间编码(I片和P片),CAVLC。用于可视电话,视频会议和无线通讯。•Main:支持隔行视频,帧间编码用可B片和加权预测,CABAC。用于电视广播和视频存储。•Extended:不支持隔行视频和CABAC,但是支持码流切换(SP和SI片)和高容错能力,Extended包括了Baseline的所有功能,而不能包括Baseline的。用于流媒体应用。Profiles片组和ASO(任意的片次序)冗余片技术:通过在码流中添加冗余信息来保障系统鲁棒性。使用RS会使系统码流变大,应权衡。•基本概念•H.264中帧以宏块为单元进行处理,宏块包含一个16X16亮度块和两个8X8色度块。•运动向/矢量(MV):编码图像中的当前块相对于参考图像的块所移动的距离和方向就是运动向量。•运动估计(ME):寻找最佳匹配块(有一定标准)的过程。•运动补偿(MC):是一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,具体来说是描述前面一帧的每个块怎样移动到当前帧中的某个位置去。•预测块P—Inter-Prediction:参考帧(已编码,解码,重建且经过了滤波)中的块经运动补偿得到。—Intra-Prediction:根据当前片(slice)中已编码的块(未经滤波)对当前块预测。•残差(剩余)块:当前块减去预测块就得残差块,表示预测的误差。H.264编码器图1.变换&量化去除空间冗余2.预测(运动补偿)去除时间冗余3.熵编码去除变换系数的冗余数据流分析•编码器有两条数据通道:前向通道和重建通道。在前向通道中,编码器的输入是帧Fn,每帧是以16×16像素大小的宏块为单元组成的,每个宏块进行帧内或帧间预测编码。在图中,帧间预测的参考帧被限定为前一帧Fn’,但是实际上,参考帧的数量可以多达五帧。•当前块减去其预测块P得到残差块Dn,Dn经过块变换和量化得到量化系数X,对量化变换系数进行重排序和熵编码,得到的系数以及一些用于解码的附加信息(例如宏块预测模式、量化步长、运动矢量信息等)经由网络抽象层NAL(networkabstractionlayer)进行传输和存储。•在重建通道中,块量化系数X经反量化和反变换后产生残差块Dn’(由于量化过程引入误差,Dn’与先前的Dn并不一致)。预测块P与Dn’相加构成重建块uFn’,再引入滤波器减小块效应得到Fn’,Fn’可被用作帧间参考图像。在编码器中引入重建通道的目的是为了使编码器和解码器使用相同的参考帧来构成预测块P,否则,预测块P在编码器和解码器中将不一致,这将造成误差积累或编解码器间的“漂移(drifting)”。H.264解码器H.264采用的新技术•H.264标准中诸如帧间预测、变换、量化、熵编码等基本功能模块与前几个标准(MPEG-1,MPEG-2,MPEG-4,H.261,H.263)并无太大区别,变化主要体现在功能模块的具体细节上。•分层设计•帧间预测编码•帧内预测编码•整数变换•量化处理•熵编码•环路滤波分层设计•在网络传输环境中,视频编码主要由视频编码层VCL和支持视频在不同网络之间传输的网络抽象层NAL,提高了对不同网络的适应能力。帧间预测编码•H.264的帧间预测与以往的区别:•运动搜索时选择不同大小和形状的块进行搜索。•1/4亮度像素和1/8色度像素的运动向量精度。•可用多个参考帧进行帧间预测。•引入SP帧和SI帧用于码流间的切换。•运动补偿•宏块分割•运动向量•块搜索与匹配H.264运动补偿•宏块分割:•每个宏块(16×16像素)可以4种分割方式:一个16×16,两个16×8或8×16,四个8×8,其运动补偿也相应有四种。而8×8分割还可以有四种分割方式:一个8×8,两个4×8或8×4及4个4×4。这种分割下的运动补偿则称为树状结构运动补偿。•每个分割或子块都有一个独立的运动补偿,每个MV和分割的方式需编码至比特流中。•宏块的色度成分(Cr和Cb)则为相应亮度的一半(水平和垂直各一半)。色度块采用和亮度块同样的分割模式,只是尺寸变小(水平和垂直方向都减半)。例如,8×16的亮度块相应色度块尺寸为4×8,8×4亮度块相应色度块尺寸为4×2,等等。色度块的MV也是通过相应亮度MV水平和垂直分量减半而得。•运动矢量•帧间编码宏块的每个分割或子块都是从参考图像某一相同尺寸区域预测而得。两者之间的差异(MV)对亮度成分采用1/4像素精度,色度成分1/8像素精度。•亚像素位置的亮度和色度像素并不存在于参考图像中,需利用邻近已编码点进行内插而得。•如果MV的垂直和水平分量都为整数,参考块相应像素实际存在。否则,预测像素通过参考帧中相应像素内插获得。块的搜索与匹配•搜索起点的选择很重要。•块搜索算法:①全搜索法FS②三步搜索法TTS③菱形搜索法DS④六边形搜索法注:有不少对上述方法的改进及新方法。•块匹配准则:①最小绝对差MAD②最小均方误差MSE③归一化互相关函数NCCF④求和绝对误差SADFS–对整个搜索窗口的每一个点进行块匹配计算,根据SAD(求和绝对误差)最小的原则搜索最后得出最佳匹配点。–具有步长固定、易于设计成并行流水线处理的ASIC等优点。–计算量很庞大,能够获取最好的匹配结果。–作为其它快速算法比较性能的参考算法。•MxM宏块采用全搜索方法在(M+2d)x(M+2d)的搜索窗口范围内寻找最佳匹配块,将当前块在搜索窗口沿水平和垂自方向逐个像素移动,每移动一次需计算一次SAD,然后进行比较。•搜索次数以搜索半径的平方增加,计算量较大,难于软件实时处理。FS图解TTS•计算量只有FS的10%左右。•搜索时逐步减小搜索步长,每次搜索都以上一步的搜索结果为中心,搜索步长为上一步的一半,搜索精度为1个像素。•对运动平缓的视频序列容易陷入局部最优,从而引起误导,影响搜索精确度。•为了克服三步搜索算法的缺点,R.Li、B.Zeng和M.L.Liou提出了新三步算法NTTS:NTTS采用具有中心倾向的搜索点模式以减少误导,同时采用中止判别技术减少搜索次数。•三步搜索算法衍生出的许多其它改进的算法。TTS图解•如图所示,搜索步骤如下:–第一步:从搜索起点开始,以最大搜索长度的一半为步长,在周围距离步长的8个点处进行块匹配计算并比较,图中用正方形表示,1号为该次搜索最优点。–第二步:将步长减半,中心点移到上一步的最小匹配点,重新在周围距离步长的8个点处进行块匹配计算并比较,图中用圆形表示,2号为该次搜索最优点。–第三步:在上一步得到的最小匹配点的中心及周围8个点处找出最匹配点,该点即为所求,图中用菱形表示,3号为该次搜索最优点DS•DS分析了视频图像中运动矢量的基本规律,选用了大小两种形状的搜索模板,先用LDSP进行大范围搜索,再用SDSP来准确定位,DS减少了计算搜索点的个数,因此,它的性能比较优越。DS图解•DS算法–搜索时采用大菱形搜索模式LDSP和小菱形搜索模式SDSP。•LDSP有9个搜索点。•SDSP有5个搜索点。–先以预测到