毕业论文 视频压缩编码技术设计_第1页
毕业论文 视频压缩编码技术设计_第2页
毕业论文 视频压缩编码技术设计_第3页
毕业论文 视频压缩编码技术设计_第4页
毕业论文 视频压缩编码技术设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要h.264标准是由国际标准化组织和国际电工委员会(iso/iec)与国际电信联盟电信标准化部门(itu-t)组成的联合视频组(jvt)制定的新一代视频压缩编码标准。h.264和以前的标准一样,也是差分脉冲编码调制(differential pulse code modulation, dpcm)加离散余弦(discrete cosine transform, dct)变换编码的混合编码模式。在技术上,h.264集中了以往标准的优点,并吸收了它们的经验。h.264应用了帧内预测,整数变换,不同的预测块大小,多个参考帧,1/4象素预测精度,自适应算术编码,去块效应滤波器(de-blockin

2、g filter)以及基于率失真优化的模式选择算法等技术。h.264分为视频编码层(video coding layer, vcl)和网络提取层(network abstraction layer, nal)。因此,h.264可以达到极高的压缩比,在所有码率下都能持续提供较高的视频质量。本文详细介绍了h.264的主要技术,并用软件实现了h.264编码器。本论文包含以下内容,首先回顾了视频压缩技术的背景知识,评述了国内外视频编码的研究状况,对h.264 编码方案作了一个整体的说明;接着分析了整数变换,基于内容的自适应可变长度编码技术(cavlc)和结合宏块大小的自适应块变换(abt)技术;然后论

3、文对h.264的预测编码技术进行了详细的分析,对比了各种标准的帧内编码效率;最后介绍软件h.264编码器并对编码结果做出分析。关键词:视频编码,整数变换,运动补偿,帧内预测,去方块滤波abstract h.264 standard is a new generation of video compression coding standard which formulate by the joint video team (jvt) who composed by the iso/iec and itu-t. h.264 standard, just like the standards be

4、fore, also commix by differential pulse code modulation (dpcm) and discrete cosine transform (dct) transformation coding. technically, h.264 standard concentrated the merits of all the standards before and absorb their experience. h.264 applied technical such as forecast in frame, integer conversion

5、, the different size forecast pieces, multiple reference frames, 1/4 image forecast precision, adaptive arithmetic coding, deblocking filter, and based on the rate distortion algorithm optimization model selection algorithms. h.264 classified into video coding layer (vcl) and network abstraction lay

6、er (nal).therefore, h.264 can achieve extremely high compression ratio, provide higher quality video in all code rate. this paper detailed introduced the main technique of h.264 standard, and accomplish h.264 code device with software implementation. it include the below substance, first of all revi

7、ewed video compression technique backdrop information, the condition of video coding research at the home and abroad, do an entirety directions to the h.264 coding scheme; then analyze the whole number transformation, and context-adaptive variable length coding (cavlc) and unite the macro-block size

8、 self-adapt block transition( abt ) technique; afterwards the paper detailed analyze the intra-frame coding, and compare the different standards intra-frame coding effectiveness; finally introducing the code device and make an analysis to the coding result.keywords: video coding, whole number transf

9、ormation, motion estimate, intra-frame coding, de-blocking filter29目 录摘 要iabstractii1 绪 论11.1 课题背景11.2 视频压缩编码的理论基础11.3 视频压缩编码标准21.3.1 h.261视频编码标准21.3.2 h.263视频编码标准21.3.3 mpeg-x视频编码标准31.4 h.264视频编码标准32 h.264算法分析52.1 h.264的三个不同档次的应用52.2 帧内预测52.2.1 16 x16帧内预测62.2.2 4x4帧内预测模式72.2.3 色差分量的帧内预测82.3 帧间预测82.

10、3.1 树型构造的运动补偿82.3.2 1/4像素精度的运动估计92.3.3 多参考帧模式选择92.4 变换与量化92.4.1 整数dct 变换92.4.2 量化102.5 熵编码102.5.1 exp-golomb码112.5.2 cavlc112.5.3 cabac122.6 去方块滤波122.7 码率控制132.7.1 lagrangian优化算法132.8 h.264传输133 h.264标准中的帧预测技术143.1 帧内预测143.1.1 4 x 4帧内预测143.1.2 16 x16帧内预测173.1.3 色差分量的帧内预测183.2 帧间预测183.2.1 树结构的运动补偿193

11、.2.2 半象素搜索与象素填充203.2.1 sp帧(primary sp-frame)技术224 h.264的软件实现234.1 开发环境234.2 软件介绍234.3 软件设计结构234.4 结果分析24结束语25致 谢27参考文献281 绪 论 本章阐述目前网络和多媒体通讯的现状和由此带来的挑战,回顾了视频压缩技术的背景知识,扼要评述了国内外视频编码的研究状况和相关的国际标准与建议,针对这些问题指出了在h.264 中相应的解决办法,阐述h.264的研究背景、现状以及发展方向,明确指出了h.264所面临的问题。1.1 课题背景 随着半导体技术在处理能力及存储容量上的进步,internet的

12、不断发展,人们希望在网上传送更多的多媒体信息。视频信号的传输是多媒体信息传输的核心,视频信号在计算机终端播放已不成问题,关键问题在于信号的压缩及传输技术以及视频编码算法的发展,人们希望开发出一种性能更好的视频编码国际标准。在此需求下,itu-t的视频编码专家组(vceg)和iso/iec的活动图像专家组(mpeg)组成了一个联合视频小组(jvt),着手制订一个比现有任何标准压缩性能都要高出很多的崭新的标准11-31,这个标准在itu-t中称为h.264,在iso/iec中称为高级视频编码(am ,并且编入mpeg-4,成为其第10部分.本文中,该标准被称为h.264。1.2 视频压缩编码的理论

13、基础 视频压缩编码的理论基础是信息论。压缩就是从时域、空域两方面去除冗余信息,即将可推知的确定信息去掉。如图1.1为图像编码的一般原理:原始图像量化器反映射变换熵编码信道重建图像映射变换熵解码器反量化器图1.1 图像编码的一般框图 编码方法大致可分为三类:(1)考虑到图像信源的统计特性采用的预测编码方法、变换编码方法、矢量量化编码方法、子带小波编码方法及神经网络编码方法等;(2)考虑到视觉特性采用的基于方向滤波的图像编码方法、基于图像轮廓/纹理的编码方法;(3)考虑到图像传递的景物特征,采用的分形编码、基于模块的编码方法。针对不同的数据冗余,可使用不同的压缩编码方法。经典的图像压缩编码方法就是

14、利用统计冗余来达到减少图像数据量的目的,其一般框图如图1.1所示。由图可以看出,经典的图像编码采用的是混合编码的方法。1.3 视频压缩编码标准1.3.1 h.261视频编码标准h.261是itu-t为在综合业务数字网(isdn)上开展双向声像业务(可视电话、视频会议)而制定的,速率为64kb/s的整数倍。h.261只对cif和qcif两种图像格式进行处理,每帧图像分成图像层、宏块组(gob)层、宏块(mb)层、块(block)层来处理。h.261是最早的运动图像压缩标准,它详细制定了视频编码的各个部分,包括运动补偿的帧间预测、dct变换、量化、熵编码,以及与固定速率的信道相适配的速率控制等部分

15、。1.3.2 h.263视频编码标准 h.263是最早用于低码率视频编码的itu-t标准,随后出现的h.263+及h.263+增加了许多选项,使其具有更广泛的适用性。 h.263是itu-t为低于64kb/s的窄带通信信道制定的视频编码标准。它是在h.261基础上发展起来的,其标准输入图像格式可以是s-qcif、qcif、cif、4cif或者16cif的彩色420亚取样图像。h.263采用了半象素的运动补偿,并增加了4种有效的压缩编码模式。无限制的运动矢量模式允许运动矢量指向图像以外的区域。基于句法的算术编码模式使用算术编码代替霍夫曼编码,可在信噪比和重建图像质量相同的情况下降低码率。先进的预

16、测模式允许一个宏块中4个88亮度块各对应一个运动矢量,从而提高了预测精度;两个色度块的运动矢量则取这4个亮度块运动矢量的平均值。补偿时,使用重叠的块运动补偿,88亮度块的每个象素的补偿值由3个预测值加权平均得到。pb-帧模式规定一个pb-帧包含作为一个单元进行编码的两帧图像。pb-帧模式可在码率增加不多的情况下,使帧率加倍。 h.263+采用先进的帧内编码模式;增强的pb-帧模式改进了h.263的不足,增强了帧间预测的效果;去块效应滤波器不仅提高了压缩效率,而且提高重建图像的主观质量。h263+在h263+基础上增加了3个选项,主要是为了增强码流在恶劣信道上的抗误码性能,同时为了提高增强编码效

17、率。1.3.3 mpeg-x视频编码标准 mpeg-1标准的码率为1.2mbit/s左右,可提供30帧cif (352x288)质量的图像,是为cd-rom光盘的视频存储和播放所制定的。mpeg-1标准视频编码部分的基本算法与h.261/h.263相似,也采用运动补偿的帧间预测、二维dct,vlc游程编码等措施。此外还引入了帧内帧(i)、预测帧(p)、双向预测帧(b)和直流帧(d)等概念,进一步提高了编码效率。在mpeg-1的基础上,mpeg-2标准在提高图像分辨率、兼容数字电视等方面做了一些改进,例如它的运动矢量的精度为半像素;在编码运算中(如运动估计和dct)区分“帧”和“场,引入了编码的

18、可分级性技术,如空间可分级性、时间可分级性和信噪比可分级性等。近年推出的mpeg-4标准引入了基于视听对象( avo:audio-visual object)的编码,大大提高了视频通信的交互能力和编码效率。mpeg-4中还采用了一些新的技术,如形状编码、自适应dct、任意形状视频对象编码等。但是mpeg-4的基本视频编码器还是属于和h.263相似的一类混合编码器。1.4 h.264视频编码标准 2003年,iso/iec的运动图像专家组(mpeg)与itu-t的视频编码专家组(vceg)联手制定了最新的第三代视频编码标准h.264/avc。其主要目的就是为了提供更高的编码效率和更好的网络适应性

19、。h.264有多个技术改进,如:标准统一的vlc符号编码,高精度、多模式的位移估计,多参考帧,基于4x4块的整数变换、在相同重构图像质量下,与h.263+和mpeg-4 asp标准相比,能节约50%的码流;采用分层模式,定义了视频编码层(vcl)和网络提取层(nal),后者专为网络传输设计,能适应不同网络中的视频传输,进一步提高网络的亲和性。h.264引入了面向ip包的编码机制,有利于网络中的分组传输,支持网络中视频的流媒体传输;具有较强的抗误码特性,特别适应丢包率高、干扰严重的无线视频传输的要求。 h.264标准提供了许多种编码模式,例如仅帧内编码的luminance分量就有4种16x16预

20、测模式和9种4x4预测模式,再加上4种chrominance分量的预测模式,这样一个宏块可能的模式组合就有(16*9+4)*4=592种。而该软件在实现时为了找到r-d意义上最优的模式,采用了拉格朗日乘法,即最小的j=d+ x r所对应的模式被认为是最优的。这样对每一个宏块,程序要计算592次j=d+ x r,而d和r都要经过实际的编码和解码过程才能得到,因此每编码一个宏块相当于做了592次编码和解码。尽管这里的解码不需要熵解码过程,有些mb也不是所有的模式组合都可用,但这种穷举算法显然太耗时。如果在编码p帧时再和7种帧间预测模式组合一下,以判断采用帧间编码还是帧内编码,计算量就更大了。因此,

21、h.264算法复杂度极大,编码速度极慢,对硬件要求也很高。因此需要改进,开发快速算法。2 h.264算法分析 视频信号的数据量是很大的,为了达到高效的压缩,必须充分利用各种冗余,一般来讲,视频序列里的冗余包括两类。一类是统计冗余,它包含:(1)频谱冗余,指色彩分量之间的相关性;(2)空间冗余;(3)时间冗余,这是视频压缩区别于静止图像压缩的根本点,视频压缩主要利用时间冗余来实现大的压缩比。另一类是视觉生理冗余,这是由于人类的视觉系统(hvs)特性造成的,比如人眼对色彩分量没有对亮度分量敏感,对图像高频(即细节)处的噪声不敏感等。针对这些冗余,视频压缩算法采用了不同的方法加以利用,但主要的考虑集

22、中在空间冗余和时间冗余上。与以前的标准类似,h.264也采用了所谓的混合(hybrid)结构,即对空间冗余和时间冗余分别进行处理。对空间冗余,标准通过变换及量化达到消除的目的,这样编码的帧叫做i帧;而时间冗余则是通过帧间预测,即运动估计和补偿来去除的,这样编码的帧叫做p帧或b帧。2.1 h.264的三个不同档次的应用 (1)基本档次:主要用于视频会话,如会议电视,可视电话,远程教育,远程医疗等。 (2)扩展档次:主要用于网络视频流。 (3)主要档次:主要用于消费应用电子,如数字电视广播。2.2 帧内预测与以前的标准不同的是,h.264在编码i帧时,采用了帧内预测,然后对预测误差进行编码。这样就

23、充分利用了空间相关性,提高了编码效率。h.2 64 帧内预测以16x16的宏块为基本单位。首先,编码器将与当前宏块同一帧的邻近像素作为参考,产生对当前宏块的预测值,然后对预测残差进行变换与量化,再对变换与量化后的结果做熵编码。熵编码的结果就可以形成码流了。由于在解码器端能够得到的参考数据都是经过反变换与反量化后的重建图像,所以为了使编、解码一致,编码器端用于预测的参考数据就和解码器端一样,也是经过反变换与反量化后的重建图像。帧内预测的目的是生成对当前宏块的预测值。一个宏块由一个16x16的luminance分量和两个8x8的chrominance分量构成,luminance块有两类帧内预测方式

24、,按标准中的记号表示为:intra _16x 16和intra_4x4,而两个chrominance分量则采用相同的预测方式。intra _16x 16是对整个16x16大小的luminance进行预测,一般用于图像比较平坦的区域,共有4种预测方式.而intra 4x4方式是将16x16大小的luminance划分为16个4x4大小的亮度块,然后对每个4x4大小的块进行预测,共有9种预测方式。对于chrominance分量(cr和cb),预测是对整个8x8块进行的,共4种预测方式。h.264的帧内编码框图如图2.1所示:宏块帧内预测熵编码反变换反量化熵编码量化变换图2.1 帧内编码框图2.2.

25、1 16 x16帧内预测16 x 1 6 预测方式是基于在16x16块的基础上,用于对图像中的相对不变的部分进行编码。16x16帧内预测模式根据与当前宏块邻近的33个像素来生成luminance分量的预测数据,共有4种预测方式,如图2.2.1,垂直(vertical)、水平(horizontal), dc和平面(plane)。在进行预测之前,首先要判断这些邻近像素是否可用(available),如果这些像素不可用,例如邻近像素所在的宏块位于其它slice之中或当前宏块位于图像边缘时某些预测模式就用不起来。mean(h+v)图2.2.1 16 x16帧内预测2.2.2 4x4帧内预测模式 在此模

26、式下,编码器将当前宏块16x16的luminance分量划分为16个4x4的块,然后根据每个4x4块周围的邻近像素对该块做预测。按理说,对一块像素做预测,其上下左右的像素都应当作为参考,但由于编码顺序的原因,h.264只选择了13个像素作为参考。同 intra_16x16模式一样,在开始预测之前,首先需判断a-m这些参考像素是否可用,如果有些参考像素不可用,那么有些预测模式也就不能用了。编码器端用于预测的参考数据是经过反变换与反量化后的重建图像,所以判断的主要依据就是看这些像素是否在当前的4x4块之前已经完成编码,即已经是经过重建了的图像。如果4x4块e-h参考像素所在的4x4块尚未编码,那么

27、它们的e-h参考像素是不可用的。另外,如果e-h不可用而d是可用的,则用d来替代e-h并将e-h标记为可用。在决定了哪些参考像素可用后,就可以通过它们产生预测值了。h.264一共定义了9种intra _4x4预测方式,除了dc方式(模式2)之外,其它8种都是向某一个方向上进行预测,也就是做外插。这8个预测方向和预测的方式如图2.2.2所示:86145073图2.2.2 4x4块的8个预测方向由图中可以看出,如果某一块区域内的像素值呈现出一种方向性,那么选用与这个方向相近的某个预测方式,将会达到较好的预测效果。作为空间相关性的一种表现,在空间上相临的块其预测模式也是相近的,所以对于intra 4

28、x4预测,h.264并不直接编码各个块的预测模式,而是根据当前块左边和上边块的预测模式,对当前块的预测模式进行估计,只有当前块的预测模式和这个估计出来的预测模式不相同时才额外传送当前块的预测模式。2.2.3 色差分量的帧内预测 该预测针对的是当前宏块的两个8x8的色差分量cr和cb,共有4种模式,两个chrominance分量采用相同的预测模式,预测对两个分量分别进行,预测的范围是整个8x8的色差分量。预测的参考像素是同一个chrominance分量的周围17个像素。 预测的过程同16x16基本相似,首先判断这17个参考像素的可用性(availability),然后进行预测。2.3 帧间预测2

29、.3.1 树型构造的运动补偿 h.264编码支持从16x16到4x4范围尺寸的运动补偿块,在这个范围中亮度样本可有多个选择。每个图像宏模块亮度组件可以按4种方式分开(如图1所示):16x16、 16x8、8x16 和 8x8。每一个被分的子区是宏模块的一部分。如果选择了8x8的模式,每一个8x8模块被按4种模式分成多个子块(如图2所示):8x8、 8x4、4x8 和 4*4 (被称作宏模块子区)。这种模块区和模块子区在每个宏模块产生大量的组合。这种划分宏模块为各种尺寸的动态子模块的方法被称作树型运动补偿。每一个区和子区要求由各自的运动矢量描述。每一个运动矢量都要被编码和发送;除此之外,所选的区

30、需在压缩的比特流中编码。选择了大的区域意味着用少量的比特数据去描述运动矢量和区域类型。然而,经过补偿后的运动的画面还有大量的运动细节描写。选择小的区的划分会在使用运动补偿后产生少量的编码。因此,选择分区的尺寸大小具有显著的意义。总之,大的分区适合均匀的区域,小的分区适合描述细节。在宏模块中每一个显示组件的分辨率是亮度组件的一半,每一个显示被按同一方式分成亮度元素。2.3.2 1/4像素精度的运动估计 帧间编码宏块的每个分割或者子宏块都是对参考图像的某一相同尺寸区域进行预测而得到的。两者之间的差异(mv)对亮度成分采用1/4像素精度,色度1/8像素精度。亚像素位置的亮度和色度像素并不存在于参考图

31、像中,需利用邻近已编码点进行内插而得。如果mv的垂直和水平分量为整数,参考块相应像素就已实际存在。如果其中一个或两个为分数,预测像素则要通过参考帧中相应像素内插获得。2.3.3 多参考帧模式选择 h.264标准为帧间图像编码提供了多参考帧选择,可选择5个不同的参考帧, 进行帧间预测,这使得帧间编码更加有效,恢复视频的主观效果更好,而且,使用多参考帧将会有助于h.264比特流错误的恢复,这样比单独参考帧方法可以节省5 %10 %的传输码率。另外,图像编码顺序不是基于时间的图像显示顺序,而是基于图像之间的依赖关系。2.4 变换与量化 将图像的当前像素值与预测值相减,就形成了预测残差。残差内仍然含有

32、空间冗余,为了消除这种冗余,通常采用变换编码,即变换量化熵编码三步。变换并不压缩数据,它只是消除数据中的相关性,或者说将数据中的冗余(或相关性)以一种便于随后进行熵编码的方式表现出来。压缩是在熵编码步骤中完成的。此外为了进一步减少数据量,编码器还对变换后的系数进行量化,它的实质是减少数据的取值范围以减少每一个符号的熵。它会造成信息的损失,是有损编码的一个重要步骤,它也是控制图像率失真(r-d)特性的一个主要手段。在h.264中,变换与量化两个步骤紧密相连。2.4.1 整数dct 变换 图像编码中常用的变换是dct,因为它在某种条件下近似于理论上最优的k-l变换。但是如果直接采用dct的定义进行

33、变换,会带来两个问题:一个是需要进行浮点数操作,从而造成系统设计上的复杂性:第二,由于变换核都是无理数,而有限精度的浮点数不可能精确地表示无理数,再加上浮点数的运算可能会引入舍入误差,这就使得在具体实现时会导致编解码的不一致(mismatch),即反变换的输出结果和正变换的输入不一样。为了克服这些问题,h.264采用整数dct变换,使得变换操作仅用整数加减和移位操作就可以完成,这样既降低了设计复杂度,又避免了编解码的不一致,而由此带来的编码性能的减少微乎其微。需要注意的是,此时的变换已经不是真正的dct,仍然称其为dct变换只是为了说它是由dct推导而来,且为了和另一个哈达玛变换(hadama

34、rd变换)相区别罢了。 h.264 编码器的变换与量化过程如图2.3所示:hadamard变换44整数dct变换44hadamard变换22整数dct变换44整数dct变换44dc系数量化ac系数量化ac系数量化ac系数量化ac系数量化ac系数量化dc系数量化ac系数量化ac系数量化16*164*4其他dcdc图2.3 h.264编码器变换与量化过程 图中输入为预测残差,输出为准备进行熵编码的数据,一共有五类。为了更大程度地利用空间冗余,对于16x16帧内预测模式,h.264在对16x16的luminance分量的16个4x4块进行dct变换后,将每个4x4块的dc系数(还没有经过量化)提取出

35、来,组成一个4x4的luminance dc块,对其再进行4x4的哈达玛(hadamard)变换。同样,对8x8 chrominance分量的4个4x4块进行dct变换后,也将每个4x4块的dc系数提取出来,组成一个2x2的chrominance dc块,对其进行2x2的hadamard变换。2.4.2 量化 一般量化原理为:fq=round(y/qp) 其中:y为输入样本点编码,qp为量化步长,fq为y的量化值,round()为取整函数。2.5 熵编码 在完成变换与量化之后,这些数据就送往熵编码器,完成整个变换编码的最后一步。h.264一共有3种熵编码:(1)exp-golomb码(expo

36、nential golomb codes);(2)cavlc (context-based variable length coding):(3)cabac(context-based adaptive binary arithmetic coding). h.264对这三种码的使用范围做了规定:(1)不出现在残差数据中;(2)仅出现在残差数据中:(3)仅出现在slice层以下(从slice data开始)的数据中。(1)和(2)都是采用查表方式,但是(1)的表是固定的,而(2)在编码过程中会根据周围宏块以及在之前编码的数据信息,选择不同的表,从而具有上下文自适应功能。(3)属于自适应算术编码

37、,能够获得比(2)更好的压缩性能和自适应能力.。2.5.1 exp-golomb码 exp-golomb码的编码过程分为两步:第一步将待编码的数据转换为一个中间变量code-num。根据转换方式,可将exp-golomb码分为4种,按h.264的记号分别表示为uc, mc, sc和tc.其中uc和sc分别用于无符号整数和有符号整数的编码,mc用于对coded_block_pattern编码,这是表示当前宏块中哪些子块含有非零系数的一个参数,to用于编码ref_idx_10和ref_idx_l1,该参数表示使用缓存中的哪个参考帧做帧间预测,第二步是将code-num映射为二进制编码。2.5.2

38、cavlc cavlc是基于上下文的自适应变长码的英文简称,它用于编码预测残差。vlc的基本思想是对经常出现的符号赋予较短的码字,反之则较长。与一般的vlc码不同的是,cavlc能够根据以往编码的数据在若干码表中自适应地选择,找出与当前编码数据统计特性最相符的一个码表来进行编码.并且它将以前标准中所采用的(run, level)二元组拆开来,分别进行编码,从而能达到更好的自适应性,提高了编码性能。由于cavlc改进的编码性能以及实现简单,它被jvt所采纳,同上面的exp-golomb码一起代替了原先的uvlc.cavlc 的设计考虑了如下几个事实:1)经过变换与量化后的预测残差中含有较多的0,

39、这样在zig-zag扫描之后,用run和level表示预测残差可以取得较好压缩效果。这一点在以前的标准中也用到了。这里level表示非零系数值run表示非零系数之前的0的数目.2)残差末尾的几个非零系数一般为+1或-1,cavlc对它们单独进行了编码。3)作为空间相关性的一种表现,当前块中的非零系数个数和周围块的中的非零系数个数应该差不多,cavlc利用这一点自适应地选择编码当前块中非零系数数的码表。4)位于低频处的系数值一般较大,而位于高频处的则相反,cavlc利用这一点自动地选择编码level的码表。5)位于低频处的非零系数一般是连着的,中间没有零,此时用(run,level)形式来表示它

40、们就显得效率不高,因此cavlc将run和level分开单独进行编码。2.5.3 cabac cabac只对二进制符号0和1进行编码,所以首先要对输入的syntax element (se)的值做二值化(binvariation),即映射成一串0,1序列,序列中的每一个二进制符号称为一个“bin, bin是cabac的编码单元。对每一个bin的编码包括两个步骤:选择context和进行算术编码。由于空间相关性,se的取值与邻近相同的se取值是相关的,这样,描述当前se的概率就应该用条件概率模型。context就是这样一个条件概率模型,每一个context描述了在邻近se的某一个取值或取值组合下

41、,当前se中某一个bin的条件概率。由于一般邻近se有多种可能取值,所以当前bin也对应有多种不同的context(以ctxidx索引),这就需要编码器根据邻近se的取值选取不同的context(也就是ctxidx )对当前bin进行编码,这里邻近的含义不仅包括空间上相邻,而且也包括先前编码的bin,即时间上相邻。在选择了合适的context之后,编码器就开始算术编码,在编码完成后编码器更新bin的概率(实际上是fsm的状态),记录在所用的context中。如前所述,编码过程中计算子区间长度和概率估计均采用查表操作,避免了乘除法运算,而其它的一些运算和操作也是针对整数进行的。当前 bin 的编

42、码完成后,编码器对下一个bin重复上述两个步骤直至当前se的所有bin都编码完毕。2.6 去方块滤波 在h.264/mpeg-4 avc视频编码标准中,编解码器反变换量化后图像会出现方块效应。其产生的原因有两个:1)在基于块的帧内和帧间预测残差的dct变换中,其变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数带有误差,会造成在图像块边界上的视觉不连续。2)来自于运动补偿预测,运动补偿块可能是从非同一帧的不同位置上的内插样点数据中复制而来的,因为运动补偿块的匹配不可能是绝对准确的,所以就会在复制块的边界上产生数据不连续。而参考帧中存在的边界的不连续也被复制到需要补偿的图像块内。h.264

43、采用了去除块效应滤波器,应用于所有的宏块之中。通过对宏块边缘的平滑滤波,减轻视频编码中的块效应。当块边界上两边差较小则使用滤波器使差别“平滑”掉, 若边界上图像特征明显则不使用滤波。这样既减弱“块效应”的影响又避免滤掉图像的客观特征, 同时在相同主观质量下使比特率减少5% 10%。h.264根据内容来选择滤波器强度,按照所处理的当前边缘附近像素值的不同, 选取不同强度的滤波器。2.7 码率控制 基于lagrangian优化算法的编码控制模型。2.7.1 lagrangian优化算法 若有集合s=(s1,s2sk),对每一个sk选取编码模式q(q1,q2.qk)中的ik(ikqk)进行编码,在给

44、定码率rc下,使编码后的失真度最小。即:d(s,i)r(s,i)=rc。在实际中,若:j(s,i/x)=d(s,i)+xr(s,i),最小则最优。其中,d(s,i) 为输出流的失真度,r(s,i)为码率, x为lagrang参数。因此,对每一样本选择最优编码模式,可以得到j(s,i/x)的最小值,实现码率控制。2.8 h.264传输h.264的视频编码序列包括一系列nal的单元,每个nal单元包含一个rbsp。编码片和序列rbsp结束符被定义为vcl nal单元,其余的为nal单元。典型的rbsp单元序列如图2.8.1所示。每个单元都按独立的nal单元传送。nal单元的头信息定义了rbsp单元

45、的类型,nal单元的其余部分则为rbsp数据。spsseippsi片图像定界符p片p片图2.8.1 rbsp序列3 h.264标准中的帧预测技术h.264标准中的基本预测技术是基于块,而不是基于对象的。它的编码器是利用混合的编码方案来提高编码效率,这些方案包括高级的预测技术和有效熵编码技术。在运动预测中它使用不同的块的大小进行预测,以树结构的方式来组织预测模式。其主要的特点也包含在多参考帧预测方式和通用b帧的概念上。下面我们就从运用在标准中两种不同预测方式分别加以讨论。3.1 帧内预测 在 h.2 64标准中,帧内预测是在变换编码之前进行的,并且运用了多种不同的帧内预测方法,最大程度地减少图像

46、的空间冗余信息。就亮度信号而言,帧内预测可分为4x4和16x16两种预测方式,其中4x4方式有9种可选的预测模式,16x16方式有4种可选方式,而i_ pcm编码方式是作为这两种方式的替代方式,允许编码器不经过预测和变换编码过程,而是直接把编码的抽样值传送过去。对色差信号则采用8x8预测方式,只有1种预测模式。在 h. 264标准的帧内预测中,当前块的抽样值总是利用邻块的抽样值来获取。这样也许会因为在相邻的帧间编码的宏块的运动补偿误差而引起图像误差的扩散。因此,在图像编码过程中还有一种限制帧内编码模式,此时只允许相邻的帧内预测宏块才可以作为其他当前宏块的参考宏块。3.1.1 4 x 4帧内预测

47、 4x4 帧内预测方法是独立地基于在4x4块上,用于对图像细节部分进行编码。它的基本思路是从不同的方向计算、比较块中各个像素之间的亮度差值,即梯度值。通过选择具有最小预测误差的方向作为最佳的预测方向。下面对其中的预测模式举例说明。见下图3.1.1,其中4x4块中16个抽样值(a-p)是由先前解码邻近宏块抽样值(a-q)利用各种预测模式预测得来。各预测模式(见图2.2.2)的实现:(1)模式2:d c预测如果所有的参考样点均在图像内,那么:dc= (a+b+c+d+i+j+k+l+4) /8如果a, b, c, d在图像外,而i, j, k和l在图像中,dc(i+j+k+l+2) 14如果i,

48、j, k和l在图像外,而a,日,c, d在图像中,dc= (a+b+c+d+2) /4如果所有的参考样点均在图像外,那么:dc =128相关程序如下:s0=0;if(block_available_up&block_available_left)s0=(p_a+p_b+pc+pd+p_i+p_j+p_k+p_l+4)/(2+block_size);else if (block_available_up&!block_available_left)s0 =(p_i+p_j+p_k+p_l+2)/block_size; else if (block_available_ up & !block_a

49、vailable_left)s0=(p_a+p_ b+p_c +p_d+2)/block_size; else /if (!block_available_up & !block_available_left)s0 = 128;for(j =0;j block_size;j+ +)for (i =0;impri+ioffj+joff=s0;其中p _a-p_ l分别代表着图3.1.1中a-l的值,block size的值为4。(2)模式0:垂直预测如果a, b, c, d存在,那么:a, e, i, m由a预测得到;b, f , j , n 由b预测得到:c, g ,k ,o 由c预测得到;d

50、, h ,!.p由d预测得到。相关程序如下:for(j=0;jblock_size;j+)for (i= 0;i mpri+ioffj+joff= imgypixb.pos.ypix.b.pos.x;其中 imgypixb.pos.ypix.b.pos.x存放着上面邻近块的抽样值,相当于a-d的值。(3)模式1::水平预测如果 !, j, k 和 l 存在,那么:a, b , c ,d 由i预测得到;e, f , g ,h 由j预测得到:i, j , k , ! 由k预测得到;m, n ,o ,p由l预测得到。相关程序如下:for(j=0;jblock_size;j+)for (i= 0;i

51、mpri+ioffj+joff=imgypix_aj.pos_ypix_aj.pos_x;其中imgypix_aj.pos_ypix_aj.pos_x存放着左边邻近块的抽样值,相当于i一l的值。(4)模 式 3::对角方向下/左方向预测如果 a, b ,c ,d ,e ,f ,g ,h 存在,那么:a= (a + 2 b+ c +2 ) / 4e, b = (b + 2c + d +2 ) 1 4i,f, c= (c+2d+e+2) /4;m,j,g,d=(d+2e+f+2) /4n, k, h = (e+2 f+g+2) /4o,l=(f+2g+h+2) /4p= (g+3h+2) /4相关

52、程序如下:img-mpro+ioffo+joff=(p_a +p_c+2*(p_b)+2)/4;img-mpr1+ioffo+joff=img-mpro+ioffo+joff=(p_b+p_d+2*(p_c)+2)/4;img-mpr2+ioffo+joff=img-mpr1+ioff1+joff=img-mpro+ioff2+joff=(p_c+p_e+2*(p_d)+2)/4;img-mpr3+ioffo+joff=img-mpr2+ioff1+joff=img-mpr1+ioff2+joff=img-mpro+ioff3+joff=(p_d+p_f+2*(p_e)+2)/4;img-mp

53、r3+ioff1+joff=img-mpr2+ioff2+joff=img-mpr1+ioff3+joff=(p_e+p_g+2*(p_f)+2)/4;img-mpr3+ioff2+joff=img-mpr2+ioff3+joff=(p_f+p_h +2*(p_g)+2)/4;img-mpr3+ioff3+joff=(p_g+3*(p_h)+2)/4;当相对于本块的右上角的邻块不存在时,那么p_e=p_f=p_g=p_h=p_d。a b c de f g hi j k lm n o pa b c d e f g hijkl图3.1.1 4x4子快中及其参考样点分布3.1.2 16 x16帧内预

54、测 16 x 16预测方式是基于在16x16块的基础上,用于对图像中的相对不变的部分进行编码。intra_16x16帧内预测模式根据与当前宏块邻近的33个像素来生成luminance分量的预测数据,共有4种预测方式,垂直(vertical)、水平(horizontal), dc和平面(plane)。在进行预测之前,首先要判断这些邻近像素是否可用(available),如果这些像素不可用,例如邻近像素所在的宏块位于其它slice之中或当前宏块位于图像边缘时某些预测模式就用不起来。对于垂直模式,如果h可用的话,预测值即为h,否则不能使用此模式,对于水平模式,如果v可用的话,预测值即为v,否则不能使

55、用此模式,对于 dc 模式,如果h和v都可用,就用这32个像素的均值作为预测值,如果只有h或v可用,就用这16个像素的均值作为预测值,如果h和v都不可用,例如当前宏块位于一个slice的开头,则预测值为128.,对于plane模式,要求必须所有的33个邻近像素都可用,这种方式实质上就是利用h和v做外插(extrapolation),为便于叙述,引入一个坐标系,其中横向为x轴,纵向为y轴,定义当前宏块左上角像素的坐标为(0,0)。用p(x,y)表示位于坐标(x,y)处的33个邻近像素值,其中h对应p(x, -1),x= 015, v 对应p(-1,y ),y= 015,而左上角处的邻近像素值为p(-1,1) 。预测值用pred(x,y),x,y= 015表示。其中如果参考样点不在编码图像内则以128代替。模式0: 垂直预测pred (i,j)=p(i,-1) i,j =0.15模式1: 水平预测pred(i,j)=p(-1,j) i, j= 0.15模式2: 直流预测pred(i,j)=(p(-1,j)+p(i,-1)+16)5 i,j=1.15模式3: 平面预测predc(x,y)clipl( a+ b * (x 一7)+c*(y一7)+16)5)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论