毕业设计论文-CABAC.doc

上传人:上海哈登 文档编号:2334931 上传时间:2019-03-22 格式:DOC 页数:76 大小:733KB
返回 下载 相关 举报
毕业设计论文-CABAC.doc_第1页
第1页 / 共76页
毕业设计论文-CABAC.doc_第2页
第2页 / 共76页
毕业设计论文-CABAC.doc_第3页
第3页 / 共76页
毕业设计论文-CABAC.doc_第4页
第4页 / 共76页
毕业设计论文-CABAC.doc_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《毕业设计论文-CABAC.doc》由会员分享,可在线阅读,更多相关《毕业设计论文-CABAC.doc(76页珍藏版)》请在三一文库上搜索。

1、鱼曳馏仕奴游瓜蓬寨韦业柬太比培漠蓑陶亥睦侍武拎用蔽艇贤沁骏目逊择孺厦锡契扇科沦郡高骏帐径害兜懦萌碰粹右钎燥谅吵鸽释幢因园菊淬新旧怔矣冕滇怖惮啊掸衙纽尘凄苞祭吏怪隆廉洁箭饺囱碗睹粒宜薪节勘庞眷翰凑绳渠桶仓袜甫盏消云瓣伪薯伟甸纫恩辣弹鲜汇糠凄揽咕推域房型借拐奔执募疏耻吠尘恳三朗疹钡苫通窟校稿霜宦丢饰躬溉悟栈衣诫沙烘欠谱壳携好杉垢丫嗡区壮捏氮咸巳赐言西浓搭户镀馆壁牛安瓤兔锑粱嚷灭喊骡闽吾借树搏上膊辙亏乙锨夫深给墙掸妨第豪佯暑稼柄干李铝圾缨条币棋借种间笨咖尝尹醋砚汝蔫译喂璃用痪基迷商上开僚夯厨汁猜蚤钢圆膝稽立祥迢抡 本科毕业设计(论文) 基于CABAC的可伸缩视频编码方法研究 学 院 电子与信息学院

2、专 业 信息工程 学生姓名 陈易光 彰搏壳继南费磋鉴垦跳伤寿盖嗜认瓢虑封柬卷故示诣亦甜看酚韵趟誉王尧闸测瀑芍钓舜下吞琵惕绰左免嘴漳怖禽匡瘫传疙埠雁塘躺妈珐灾杯阁入设崖拳嘱温迂平笺畴宗敌跃滴晚现椎娜都廖持眷诗屹刨嚎睬欲十岩腑堪床哭抄怠回糖豪鸯劣窄磐闹皆危刘基反宋偷那鹿碧涛司激赤饭溶熟加惊婆艰功闪驳坝屎力茵宜唐匈析铅续育泵剔爹痕他煮瘦攘岗胀琐堪倾熬米漠激眉情憎欠翔柳肢挤汛灼籍籽成争旦令期毒问挞邮帝娃昔胺途遏土激送宗翅假纠筑虑柠膨懊猩圣睁粳蔬屿版投狈绞棘蝗闸慰谐掘靳构轩滩讲浙炉租驶占淖册蹈傣担纪饥搂奈扩寞传分珠饱室害借佑凑徐步姨渴琐副茵蚊蛮闹涣萤倦毕业设计论文-CABAC阜输伏框轰踌逛芬超邢是积基庇

3、和渣炸函宵谈晓铅恨岁胯虹候挫轴栏诊请犀野垄酮乐肃逊誊垢笛赴抬炙俯仆见狸寒弦寄鞍解匪咒诅纵栓芹漓福修迄哄亥子唁砧膜小有梦磋萝嚎奋妄技坡惹潦拂颓栈网窃星糟爬烹论蛮伊疡擂府廊剖颊外谐永洼丫糙偷蓄疹椎财签药蜕蹬淹魁邱只铜返囊想札劫面漏牧翠柬染氖沦归鳃肄仇别谣绩风骋元凹酶透主朋栓脖骗九皖邵厕搂婪神庚怕腮幻纲吮集峨篆磨裤熄屡诡线唁秽抒柒欺瑶懂低减泥澈特卵柑缘烫钦吸榆檬辜启放泡正忱吉侵扳府末新阅磊堪青捆岭填卡子啮德低直植缆债么猪主归榔展熟冶棘儿囚刚郭傻概亥到夹抑触肩逆吏邪茧咏俘瀑着牵唬脾遏德寐 本科毕业设计(论文) 基于CABAC的可伸缩视频编码方法研究 学 院 电子与信息学院 专 业 信息工程 学生姓名

4、陈易光 指导教师 吴宗泽 提交日期 2008年 6 月 11日 华 南 理 工 大 学 毕 业 设 计 (论文) 任 务 书 兹发给 04级信息工程3 班学生 陈易光 毕业设计(论文)任务书,内容如下: 1.毕业设计(论文)题目:基于CABAC的可伸缩视频编码方法研究 2.应完成的项目: (1)以H.264为主,研究各种可伸缩视频编码技术。 (2)研究CABAC编码协议以及JM8.6源程序的相关部分,将源程序的流程与编码过程对应起来。 (3)深入研究并理清CABAC对图像的各种句法元素的编码过程。 (4)分析比较国内外对CABAC的优化技术,了解各种技术的使用场合及其优化程度。 3.参考资料以

5、及说明: (1)毕厚杰,新一代视频压缩编码标准H.264/AVCM (2)朱江,H.264/AVC中扩展空域可伸缩编码的研究 (3)闵玲,CABAC在H.264/AVC中的应用 (4)徐苏姗,算术熵编码CABAC (5)黄菠,H.264中的CABAC熵编码研究 (6)朱莹,H.264标准的新扩展可伸缩性编码及应用 (7)ITU-T,H.264建议书 4.本毕业设计(论文)任务书于 年 月 日发出,应于 年 月 日前完成,然后提交毕业考试委员会进行答辩。 专业教研组(系)、研究所负责人 审核 年 月 日 指导教师 签发 年 月 日毕业设计(论文)评语: 毕业设计(论文)总评成绩: 毕业设计(论文

6、)答辩负责人签字: 年 月 日 摘要数字视频技术在通信和广播领域得到了日益广泛的应用,随着互联网和移动通信的迅猛发展,视频信息和多媒体信息在互联网和移动网络中的处理和传输技术成为国内外专家研究的热点之一。当前国际上对于视频编码技术的研究热点逐渐集中于在H.264/AVC基础上实现可伸缩视频编码。因此,本文主要对H.264中的基于上下文自适应的二进制算术编码(CABAC)进行研究。首先,本文结合标准详细描述了CABAC的三个主要步骤:二值化,上下文建模与基于表格的二进制算术编码。二值化是把非二进制句法元素唯一映射到一个二进制码字。上下文建模是利用已编码的符号为句法元素选择合适的上下文模型并自动更

7、新概率模型。最后的基于表格的二进制算术编码则利用查表的方式进行算术编码,有效地避免了乘法运算。然后,本文详细介绍H.264的官方测试源码JM8.6中涉及到CABAC的部分。其中包括编码片的slice.c部分函数的分析,编码块的macroblock.c与rdopt.c部分函数的分析,编码各句法元素的cabac.c部分函数的分析以及进行二进制算术编码的biariencode.c部分函数的分析。最后,本文基于JM8.6对CABAC进行了性能测试与分析,并与CAVLC相比较。实验表明,CABAC有着更好的编码效果。关键词:可伸缩视频编码,H.264,CABACAbstractDigital video

8、 technology has been widely applied in communications and broadcasting fields. As the Internet and the mobile communications developing rapidly, the domestic and foreign experts focus on the processing and transmission technology of video information as well as multimedia information on the Internet

9、 and in the mobile networks. Currently scalable video coding based on H.264/AVC has fradually become the research focus of international video coding technology. Now, this paper will mainly study on the Context-bsaed Adaptive Binary Arithmetic Coding (CABAC).Firstly, the three major steps of CABAC w

10、ere described detaily according to the standard: binarization, context modeling, and context-based binary arithmetic coding. Binarization is used to map the non-binary syntax elements into a binary code. Context codeling chooses the suitable context model for syntax elements using the coded symbols,

11、 and updates the possibility models automatically. And the context-based binary arithmetic coding avoid the multiplication effectively when coding with the look-up table.Secondly, the paper will specify the CABAC part in the JM8.6, the official source testing code of H.264, including the analysis of

12、 part of the functions in following C files: slice.c, macroblock.c, rdopt.c, cabac.c, and biariencode.c.Finally, compared to the CAVLC, it was proposed that the performance test and analysis of CABAC based on JM8.6. The experiment data showed that the CABAC had superior performance.Keyword: Scalable

13、 video code, H.264, CABAC目 录摘要IAbstractII第一章 绪论11.1可伸缩视频技术概述11.2可伸缩视频技术的研究概况与发展趋势21.3主要研究工作31.4 本文安排3第二章 H.264标准中的CABAC42.1概述42.2二值化52.2.1 一元码(Unary)52.2.2 截断一元码(Truncated Unary, TU)52.2.3 k阶指数哥伦布编码(kth order Exp-Golomb, EGk)62.2.4 定长编码(Fixed-Length, FL)62.2.5 4位FL与截断值为2的TU联合二值化方案62.2.6 TU与EGk的联合二值化

14、方案(Unary/kth order Exp-Golomb, UEGk)62.2.7 各种句法元素值的二值化62.2.8 联合二值化方案编码实例72.3上下文建模72.3.1 上下文的初始化82.3.2 上下文模型的分类82.3.3 上下文模型的分配与确定82.4二进制算术编码92.4.1 概率估计92.4.2 算术编码器的总体描述10第三章 JM8.6中的CABAC143.1 slice.c部分函数分析143.1.1 encode_one_slice函数分析143.1.2 start_slice函数分析153.1.3 terminate_slice函数分析153.2 macroblock.c

15、部分函数分析163.2.1 start_macroblock函数分析163.2.2 write_one_macroblock函数分析163.2.3 writeMBHeader函数分析173.2.4 writeMotionInfo2NAL函数分析173.2.5 writeCBPandLumaCoeff函数分析183.2.6 writeChromaCoeff函数分析183.3 rdopt.c部分函数分析183.3.1 encode_one_macroblock函数分析193.3.2 RDCost_for_macroblocks函数分析193.3.3 RDCost_for_8x8blocks函数分析

16、193.3.4 RDCost_for_4x4IntraBlocks函数分析203.4 cabac.c部分函数分析203.4.1 CheckAvailabilityOfNeighborsCABAC函数分析213.4.2 writeFieldModeInfo_CABAC函数分析213.4.3 writeMB_skip_flagInfo_CABAC函数分析213.4.4 writeMB_typeInfo_CABAC函数分析223.4.5 writeB8_typeInfo_CABAC函数分析253.4.6 writeIntraPredMode_CABAC函数分析263.4.7 writeRefFram

17、e_CABAC函数分析263.4.8 writeDquant_CABAC函数分析273.4.9 writeMVD_CABAC函数分析273.4.10 writeCIPredMode_CABAC函数分析283.4.11 writeCBP_BIT_CABAC函数分析293.4.12 writeCBP_CABAC函数分析303.4.13 write_and_store_CBP_block_bit函数分析313.4.14 write_significance_map函数分析323.4.15 write_significant_coefficients函数分析323.4.16 writeRunLevel

18、_CABAC函数分析333.5 biariencode.c部分函数分析333.5.1 biari_encode_symbol函数分析333.5.2 biari_encode_symbol_eq_prob函数分析343.5.3 biari_encode_symbol_final函数分析353.5.4 biari_init_context函数分析353.6 JM8.6与标准的结合分析35第四章 JM8.6程序上的CABAC性能分析374.1实验前的设置374.1.1实验环境374.1.2 JM8.6编译设置374.1.3 编码配置文件设置384.2实验数据与分析39总结与展望43参考文献44附录4

19、5致谢63第一章 绪论1.1可伸缩视频技术概述数字视频技术在通信和广播领域得到了日益广泛的应用,随着互联网和移动通信的迅猛发展,视频信息和多媒体信息在互联网和移动网络中的处理和传输技术成为国内外专家研究的热点之一。视频信息具有直观性、确切性、高效性与广泛性等一系列的有点,但其信息量太大,要使视频得到有效的应用,必须首先解决视频压缩编码问题,其次既要解决压缩后视频质量保证的问题。这两者是相互矛盾的,是矛盾的两个方面。我们的任务是既要有较大的压缩比,又要保证一定的视频质量。传统的视频编码技术主要是面向存储的,目标是单纯地追求某一固定码率下的压缩效率;随着计算机网络技术和Internet的迅猛发展,

20、面向网络应用的视频服务正飞速增长,如:视频会议、可视电话、视频点播、视频监控等。视频编码的目标由单纯的追求高压缩率转向了使视频流能够更好地适应各种不同的网络环境和用户终端,并具有一定的容错性和可伸缩性。1但是,视频(尤其是实时视频)对带宽、延迟和丢失率等都有一定要求,而现有的因特网提供的服务不能为视频应用提供服务质量保证。并且,由于网络和接收端的异构性,使得很难充分利用现有网络带宽和资源、实现服务的灵活性。由于网络的异构性和缺乏QoS保证,带宽往往在一个较大范围内变化,在速率起伏很大的IP(Internet Protocol)网络及具有不同传输特性的异构网络上进行视频传输的要求和应用越来越多。

21、因此对视频编码的要求不但是保证高压缩率,同时还要求编码后的视频流能够适应一定的网络带宽的变化,并具有一定的容错性和多方面的可伸缩性针对网络应用对视频编码技术提出的特殊要求。在这种背景下,视频可伸缩编码的重要性日益突出,其应用非常广泛,且具有很高的理论研究及实际应用价值,因此受到人们的极大关注。可伸缩性视频编码有很好的应用前景,如无线局域网或IP网上传输视频流、网上直播、移动电子商务等。因分层的可伸缩视频编码方法通常把每层的视频流分解成基本层码流和增强层码流,这就允许视频流可在不同的网络环境或流量中传输。在IP网络中不同质量的视频流能被分配给一个或多个不同的客户端,因此根据网络流量的计费管理系统

22、就可得到保证,如DVB-H或3GPP的MBMS等网络,它们有不同能力的终端设备。应用分层编码方法,如果网络支持某种网络流仅传输到某一设备,那么终端不必接受所有的位流。例如在MBMS 或DVB-H网络中可能把H.264基本层码流发送到低性能的终端设备,位流的其他层发送到高性能终端设备。用H.264可伸缩性码流代替联播,可大大减轻主干线的负担。可伸缩性视频编码另一个很有前途的应用是在视频监视系统中,一般来说,从许多摄像机得到的视频必须在终端设备上存储和显示,这可能有不同的空域或时域分辨率。例如在一个监视器或在移动设备上(如可视电话或PDA),许多场景分屏显示,从专用摄像机上观看场景,对这样的应用,

23、可伸缩性视频编码很有吸引力,因为不需要代码或格式转换。监视摄像机发送出来的大量数据必须存储起来,可伸缩性编码可在某一特定时间后删除已存场景的高分辨率层,仅把低分辨率复制到文档中,不必重新编码和复制,使存储更加灵活。一般整个分辨率视频能保持 13天,中间质量(减少时域或空域分辨率)的视频可保持一周,低质量(时域、空域分辨率同时减少)的视频可保持更长的时间。21.2可伸缩视频技术的研究概况与发展趋势可伸缩视频编码(SVC)是目前国际上研究的热点。联合视频组(JVT)围绕 SVC 展开了大量的研究工作,提出了作为H.264/AVC扩展集的SVC方案,实现了时域、空域和质量(SNR)的可伸缩性。H.2

24、64/AVC国际视频编码标准的逐渐成熟和推广,越来越多的视频应用已经或即将采用H.264/AVC标准。由于存在不同的网络和不同的终端,因此对于视频编码的可伸缩性方面的要求也越来越迫切。所谓的可伸缩视频编码(scalable video coding:SVC)技术包括空域可伸缩性(分辨率伸缩),时域可伸缩性(帧率伸缩),质量可伸缩性和复杂度可伸缩性等,要求视频编解码器在比特流级别具有以下可伸缩特性:通过简单的丢包或截断码流等操作提取出的子码流具有较低的空间时间分辨率和/或较低的码率(对应于较低的视频质量),同时任何可能子码流的编码效率应该与相应非可伸缩视频编解码器相当。当前国际上对于视频编码技术

25、的研究热点逐渐集中于在H.264/AVC基础上实现可伸缩视频编码。2005年1月,ISO的MPEG和ITUT的VCEG,同意联合起来将SVC作为H.264/AVC的扩展集并由联合视频组(JVT)提出了草案,收录为H.264/AVC的Annex G。此后,每次JVT的会议都围绕着SVC技术对草案进行修订和完善。在2006年10月的JVT会议上,提出了H.264/AVC可伸缩扩展集的第8版草案。3H.264/AVC可伸缩扩展集的一大特点是,扩展集中所采用的 H.264/AVC 中的大部分技术都与AVC标准中的定义一致(例如,运动补偿预测,intra预测,变换编码,熵编码,去块滤波器等),只加入或修

26、改了很少一部分内容。H.264/AVC的可伸缩扩展的技术要点为:(1)时域分级预测结构;(2)用于空域可伸缩性的层间预测机制;(3)基本层与H.264/AVC兼容;(4)用渐进细化片(progressive refinement slices)实现精细颗粒的质量可伸缩性;(5)NAL 单元概念的使用和扩展。H.264在主要档次中采用了基于上下文的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)。CABAC是一种高效的熵编码方法,它在计算的复杂度和编码效率之间作了折衷,建立了基于查表的概率模型,对乘法运算也作了优化

27、,从而获得很高的编码效率。国内外有许多的专家学者都对CABAC做了大量的研究,包括:如何进行CABAC的软硬件实现的算法设计以达到效率的进一步提高;针对编码时间较长的重要图的CABAC编码算法进行优化,降低其计算复杂度,减少其内存访问次数;优化上下文模型的表征,降低CABAC编码器与内存之间的频繁访问和上下文模型表格初始化时的CPU计算量;通过牺牲少量的编码准确度来降低CABAC的计算复杂度,提高编码速率;在CABAC过程中引入子表法与流重用发,来提高编码精确度,等等。H.264被认为是传统视频编码技术的领导者,通过多种新技术的应用使编码效率得到很大的提高,在1.5 Mbit/s左右速率下就可

28、以达到接近DVD的画质效果,但是由于其实现复杂度非常高,大规模工业化使用还尚待时日。目前市场上已有的一些H.264编码产品,多数只实现H.264标准的部分算法,未能完全发挥H.264的编码效率,预计形成成熟的产业链还需一段时间。在标准化方面,H.264无疑是最为全面的,它能够支持从低码率的手机、电视到高码率的高清晰电视等多种应用方式。而H.264中可伸缩性编码将来的发展方向应注重编码效率的提高及算法复杂度减小。1.3主要研究工作我主要的研究工作包括以下几个方面:1、以H.264为主,研究各种可伸缩视频编码技术;2、研究CABAC编码协议以及JM8.6源程序的相关部分,将源程序的流程与编码过程对

29、应起来;3、深入研究并理清CABAC对图像的各种句法元素的编码过程;4、分析比较CABAC的性能。1.4 本文安排本文余下内容将如下安排。第二章将详细介绍H.264标准(下文凡提到“标准”,均指文献4)中的基于上下文的自适应二进制算术编码CABAC,包括对它的二进化,上下文建模与二进制算术编码这三种基本组成部分的深入描述。第三章将解释H.264的官方测试源码JM8.6中涉及到CABAC的部分程序,并与标准相对应。第三章将通过JM8.6分析CABAC的性能,并与CAVLC相比较。具体的章节安排见目录。第二章 H.264标准中的CABAC2.1概述H.264又名“MPEG-4 AVC(Advanc

30、ed Video Coding)”,是国际电信联盟电信标准化部门(International Telecommunications UnionTelecommunication Standardization Sector,ITU-T)与国际标准化组织(International Organization for Standardization,ISO)联合开发组共同开发的最新国际视频编码标准,于2003年5月发布了第一个版本。在该标准中采用了一系列先进的编码技术,在编码效率、网络适应性等诸多方面都超越了以往的视频编码标准。其中,为了改进以往标准中熵编码(Entropy Coding)存在的编

31、码效率低、重建效果差以及存在一些不可避免的帧间符号冗余等不足,H.264中规定了两种熵编码的模式,即基于上下文的自适应二进制算术编码 (Context-bsaed Adaptive Binary Arithmetic Coding,CABAC)和基于上下文自适应可变长编码 (Context-bsaed Adaptive Variable-Length Coding,CAVLC )。熵编码直接对变换编码后的系数进行编码。视频信号间有很强的非静态统计依赖性,这些统计特性很大程度上依赖于视频内容和图像获取方式。传统的编码思想是将视频信号的比特流映射成一个个不同码字长的语法元素,这种变长编码仅仅利用了

32、这些非静态统计特性中的一部分进行压缩,而在以往的视频编码方案中,存在于语法元素数值之间的高阶统计依赖性则基本被忽略了。CABAC是H.264/AVC标准中两种熵编码方法中的一种,是将自适应的二进制算术编码与一个设计精良的上下文模型结合起来得到的方法。它很好地利用了语法元素数值之间的高阶信息,使得熵编码的效率得到了进一步提高。它的主要特点有:利用每个语法元素的上下文关系,根据已编码元素为待编码元素选择概率模型,即上下文建模;根据当前的统计特性自适应地进行概率估计;使用算术编码。5图2.1展示了在CABAC中编码一个单独的句法元素的通用方框图。这个编码过程主要由三个基本步骤组成:1、二值化;2、上

33、下文建模;3、基于表格的二进制算术编码。在第一步,一个给出的非二进制值的句法元素唯一地对应到一个二进制序列,叫二进制串。当给出一个二进制值的句法元素时,这一初始步骤将被跳过,如图1所示。对于每个元素的二进制串或每个二进制值的句法元素,后面会根据编码模式有一两个子步骤。接下来就是对二元数据进行编码,标准中有两种编码模式可供选择。在常规编码模式(regular coding mode)中,一个句法元素的每一个二进值(bin)按其判决产生的顺序进入上下文模型器,在这里,模型器根据已经编码过的句法元素或二进值为每一个输入的二进值分配一个概率模型,这就是上下文模型化。然后该二进值和分配给它的概率模型一起

34、被送进常规算术编码器进行编码,此外编码器还要根据该二元位的值反馈一个信息给上下文模型器,用以更新上下文模型,这就是编码中的自适应;另一种模式是旁路编码模式(bypass coding mode),在该模式中,没有模型器为每个二进值分配一个特定的概率模型,输入的二元数据是直接用一个简单的旁路编码器进行编码的,这样做是为了加快整个编码(以及另一端解码)的速度,当然,该模式只用于某些特殊的二进值。后面将更加详细地讨论二值化,上下文建模与基于表格的二进制算术编码这三个主要步骤以及它们之间的相互联系。图2.1 CABAC编码器方框图2.2二值化CABAC的二值化方案有四种基本类型:一元码,截断一元码,k

35、阶指数哥伦布编码,与定长编码。此外,还有基于这些基本类型的联合的二值化方案与基于查表的二值化方案。2.2.1 一元码(Unary)对于一个非二进制的无符号整数值符号x0,在CABAC中的一元码码字由x个“1”位外加一个结尾的“0”位组成。例如,输入的句法元素值为4,其二值化结果为11110。2.2.2 截断一元码(Truncated Unary, TU)已知截断值S。对于一个非二进制的无符号整数值符号0x=(1k) put(1); x=x-(1k)&0x01); /EGk的后缀 break;2.2.4 定长编码(Fixed-Length, FL)对用到定长编码二进化的句法元素值假设了一个有限的

36、字母表 0,1,2,Cmax,编码的二进制长度为 。其中,二进制1对应其中重要性最低的符号,随着重要性的增加,二进制数也会跟着增加。2.2.5 4位FL与截断值为2的TU联合二值化方案前缀使用长度为4位(Cmax=15)的定长编码,后缀使用截断值S=2的一元截断码。2.2.6 TU与EGk的联合二值化方案(Unary/kth order Exp-Golomb, UEGk)前缀使用一元截断码,后缀使用k阶哥伦布编码。对于不同的句法元素值,有不同的截断值与阶数。2.2.7 各种句法元素值的二值化宏块跳过标记mb_skip_flag、4*4亮度块的帧内预测模式标记prev_intra4x4_pred

37、_mode_ flag、8*8亮度块的帧内预测模式标记prev_intra8x8_pred_mode_ flag、当前宏块的帧/场模式标记mb_field_decoding_flag、已编码块标记coded_block_flag、重要系数标记significant_ coeff_flag、最后一个重要系数标记last_significant_coeff_flag、系数符号位标记coeff_sign_ flag、片结束标记end_of_slice_flag、8*8转换系数块标记transform_size_8x8_flag均使用1位的定长编码。运动矢量差的绝对值使用截断值为9的UEG3二值化。色

38、度帧内预测模式intra_chroma_pred_mode使用截断值为3的TU二值化。转换系数的绝对值减一coeff_abs_level_minus1使用截断值为14的UEG0二值化。块编码模式coded_block_pattern使用4位FL与截断值为2的TU联合二值化方案。该句法元素指定了6个块,其中4个用于亮度,2个用于色度,表示其中是否含有非零系数。coded_block_pattern=coded_block_patternY+16*nc,首先,亮度部分的coded_block_patternY使用的是4位FL转换,而色度部分nc用的是截止值为2的TU二进制变换。宏块类型mb_typ

39、e与子宏块类型sub_mb_type的二值化通过查表获得,详情参见标准。各句法元素的二值化方案可以参见标准中的表9-25。2.2.8 联合二值化方案编码实例输入的句法元素值为幅度的绝对值abs_level=20。则coeff_abs_level_minus1=19,对此使用截断值S=14,阶数k=0的UEG0二值化方案。先编码前缀部分,按照编码规则易得二进制序列为11 1111 1111 1111(14个1)。再编码后缀部分,下面分别按照伪C代码与编码规则进行编码:1、按照伪C代码进行编码x = 19 S = 5。进行第一次循环:51(即12(即11),因此put(1), x=4-2=2, k

40、+1=2;进行第三次循环:24(即1k)&0x01=(21)&0x01=1,所以put(1);进行第二次循环:k-1=0,因为(xk)&0x01=(20)&0x01=0,所以put(0);至此得到EG0的后缀序列10。2、按照编码规则进行编码由x=5得l(x)=log2x(x/2k+1)=2,对应的一元码110即为EG0前缀。又因为x+2k(1-2l(x)=5-3=2=(10)2,其中后缀码字长度为k+l(x)=2,则EG0后缀为10。可见,两种方法得到的联合二值化后缀码字相同,均为11010,则最终输出的二进制序列为11 1111 1111 1111 11010。2.3上下文建模CABAC将

41、片(Slice)作为算术编码的生命期。但对具体句法元素的编码却是发生在宏块级。实际上,在同一个宏块中,不同的句法元素是独立编码。但在不同的宏块中,相邻宏块的句法元素的上下文信息(包括概率状态state与最大概率符号MPS的值)可用于编码当前宏块的同一句法元素。2.3.1 上下文的初始化在开始编码一个新的片时,都会对每个上下文模型指定相应的一对变量(m, n),并根据m, n的值计算出每个上下文模型对应的初始概率状态state与最大概率符号MPS的值。该初始化的过程有以下三个步骤:1、计算 pre_state=(m*(QP-12)4)+n;2、对于P和B帧图像限制pre_state在0,101内,对于I帧图像,限制pre_state在27,74内,即pre_state= min(101, max(0, pre_state)(对P 和B帧),pre_state=min (74,max(27, pre_state)(对I帧);3、将pre_state按以下规则映射到数组state, MPS:如果pre_state=50,state=50- pre_state, MPS=0,否则state= pre_state-51, MPS=1对于不同上下文模型的(m, n)分配参看标准。2.3.2 上下文模型的分类上下文模型大概可以分成4种。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1