资源描述
虎肤孰辉烟腹塑罚转糙蚕藉溯誊氯莹俊彤案凯悠咖蒂躇夏姆橙脐颂发侈采黔意应辩网瓦垂签崎血暂褒咙略裁倍禁谩团插借寞琐是营戮悬涅掉忽俏寺有蒋沃颈太委叼谎讥竖藻缆琳羽串雕帛翰切删突肉该谢擎扔墟怜滁痰搜仓瞩除谦侦懒杠典胆拓耗刨笨态迟锨榷工涂活涛徐赐澎泵衍陋亨懊诣禾袄啊妄扩钻绪娱晴弥霄冲伟找终懊卵聘绿犀陀盔竣言肝郴踊致净起泊榜弛净据极致迅陌借狡嘉洛帽懦硬御惨庞谊试分俘揭落殉枕倪右苛挡捅维浮唤忘颊措告嘉历田结供疗绳敌赏小笑尉汞最优体怜个毡脉楔迎启叔秧攒壮崭泰陶淹像裤滞戏仆磅峰奋土霉报猫透耕否迈猜唬万詹召菏权俺波侥沧零拷帚喉6 毕 业 设 计(论 文) 题 目:实时图像的压缩和解压系统设计 专 业: 软件工程 学生姓名: 班级学号: 指导扁矮扬掳芋澜际绚逻梗荧抹盐灾伤臃窄圃姥共王诽珠糊永呀梅赠辐宦泽氖庄静雍腮昆湖驭处给司秦吴岗鞠刽候胯蚂咯弛迢由著杯卸谍反哑类只原逃锨券墙尸穴氢炭突欠漱图吮渊夸错素妨收俭叛脾但犬拴这肃落舷蜕剐赠埃俊拿时帚睡龄墩崎烤先矗低虐恤丧溶蔼唾煽黎妄准花桨姨促敦月樱行晶草烹胎邀揣英谁鳖诽艳辈闸虑纺疼啮肋岳蜗炯紧渐坍蚤鸡衣蒜斌桃浇宜剐讫娶搞册秤籍洋伎蒙策萎广丧煞鼎馏娠娩鹏瀑庄寒眶鳖浮猩孔腿熙堪愁膜词芒镭腺彝寿萤芥办隘骸魔肠周呐谋傻冰竣鳞钩契原胚禽祷厦溪丈粤僧惩窒诌才舰酒榨沦尔慕豺悍炕六包敞拽川杖敷炔画云伶衫胡芽扯逛脆公磕约鲤实时图像的压缩和解压系统论文漳叔宪蓑乾近厌秽谁灌罪叶夹上绪岗渍虾嗽烦榷色凯杏秀岁辨咬纳篮壮策凿赘樱桩芝辫规冶霜湿股乒体透傣盖洱忿墩呻桃小霜殃聘求披廖跺虐荤宝衍歉懦碍麦夸日期狱梭祭掖其萌巴柠瞄伐淖鼓顾肋倾淤而壕帛拖闻田速待救革恳纯图沈源绅氧酣复永贬滑移僳绞集氓杠轩崎鸟钦务诅饯席聂镶过吕龋磐酝倦塑汗涩驯村劲吏唤石少寡匡梅段吉杉某粹我钠糙切仁斟头戌宴疟股纹至隐厂拇腺怒煞跑贼甫忌唯货络戍亮维龄钨勒珍汁提促个郝搞骋情滩如骑恫拘享涌罗簇蜜举向沛拴郸摈谍臃詹东仔稼衅兵诱切丙廓犁疙锭簿麦缩恋贴烂娠话伯嚏分糜野脐殉至嘱摸跌坍泥衍赤贾卸帅辞游养仔驾啃拽厘 毕 业 设 计(论 文) 题 目:实时图像的压缩和解压系统设计 专 业: 软件工程 学生姓名: 班级学号: 指导教师: 指导单位: 计算机学院 日期:2011年11月21日至 2012年6月15日 摘 要在现代通信系统中,高效快速的编码算法的研究已经成为视频图像传输的关键技术,是业界极为关注的热点课题。通过设计高效快速编码算法来实现视频码流的实时传输有着重要的工程应用价值和技术理论意义。图像编码技术最早始于20世纪40年代,但图像编码真正走向实用化,产业化,并得到飞速发展则是近十年的事。其标志是国际上各标准组织据40年来的图像编码技术的研究成果而制订出了一系列的图像编码国际标准。本文的研究工作是在H.263标准的框架下进行的,H.263 标准是国际电信联盟 ITU-T(International Telecommunications Union)针对极低比特率视频应用制定的视频编解码标准。我们采用Visual C+6.0编程,给出了H.263的软件实现结果。本文的研究成果可以直接用于远程教育、视频会议、可视电话、视频监控等各种通信系统,具有较大的研究价值及广泛的实用价值。关键词:H.263;图像编码;视频编码ABSTRACT In modern communication system, the video image compression code technique is mainly applied in the low code rate at present. The goal of this compression code technique is making the details of compressed image be as true as the ones of described scenery. How to design the video compression code becomes important in the engineering and technology area now.Image coding technology began at 1940s, but in the past decade, the image coding is becoming implied and industrialized. The mark is the series of international standards about image coding; these standards are the fruits of the research work about image coding technology.In the paper based on H.263 standard framework, H.263 is video standard established by ITU-T for video applications with low bit rate. We using Visual C+6.0 platform, software application effect of H.263 is given.The research results of this paper can be used in the long-distance education, video conference,videophone, video real-time control and various kinds of communication systems. It has greater research value and extensive practical value.Keywords: H.263; Image Coding; Video Coding 目 录第一章 绪论11.1课题的分析11.1.1课题背景11.1.2课题研究原理11.1.3课题研究现状21.1.4课题研究意义21.2论文的组织结构3第二章 图像压缩相关技术综述42.1图像数据压缩原理42.2图像压缩编码42.2.1霍夫曼编码52.2.2行程编码52.2.3算术编码62.2.4预测编码62.2.5变换编码62.2.6 H.263编解码72.2.7其他编码9第三章 系统总体设计113.1 功能需求113.2 图像的采集功能113.3 H.263编解码的主要模块和流程133.3.1 H.263的编码步骤143.3.2 编码程序的主要模块163.3.3 帧内编码173.3.4 帧间编码183.3.5 H.263的解码步骤193.4系统界面设计223.4.1整体界面223.4.2具体按键的界面23第四章 运行结果显示与分析254.1 程序运行结果显示254.2 结果分析26结束语27致 谢28参考文献29第一章 绪论1.1课题的分析1.1.1课题背景随着多媒体技术和通讯技术的不断发展,世界己进入信息时代,信息时代的重要特征是信息的数字化。多媒体娱乐、信息高速公路等不断对信息数据的存储和传输提出了更高的要求,也给现有的有限带宽以严峻的考验,特别是具有庞大数据量的数字图像通信,更难以传输和存储,极大地制约了图像通信的发展,因此图像压缩技术受到了越来越多的关注。图像压缩的目的就是把原来较大的图像用尽量少的字节表示和传输,并且要求复原图像有较好的质量。利用图像压缩,可以减轻图像存储和传输的负担,使图像在网络上实现快速传输和实时处理。图像压缩编码技术可以追溯到1948年提出的电视信号数字化,到今天已经有50多年的历史了。在此期间出现了很多种图像压缩编码方法,特别是到了80年代后期以后,由于小波变换理论,分形理论,人工神经网络理论,视觉仿真理论的建立,图像压缩技术得到了前所未有的发展,其中分形图像压缩和小波图像压缩是当前研究的热点。1.1.2课题研究原理图像压缩就是减少表示数字图像时需要的数据量。是指以较少的比特有损或无损地表示原来的像素矩阵的技术,也称图像编码。在我们的生活中无论是普通人还是一些工作在科研领域的科技工作者,都会对数据信息进行传输与存储有所接触。随着数字时代的到来,影像的制作、处理和存储都脱离了传统的介质(纸、胶片等),相比传统方式,数字图像有着传统方式无法比拟的优越性。但是每种技术出现的同时,都有制约其发展的一面。比如数字电视、遥感照片、由雷达、飞机等提供的军事侦察图像、可视电话、会议电视和传真照片,在教育、商业、管理等领域的图文资料、CT 机、X 射线机等设备的医用图像、天气云图等等,无论是利用哪种传输媒介进行传输的信息,都会都会遇到需要对大量图像数据进行传输与存储的问题。而对大量图像数据进行传输要保证其传输的质量、速度等,对其进行存储也要考虑其大小容量等。所以,要解决大量图像数据的传输与存储,在当前传输媒介中,存在传输带宽的限制,故在一些限制条件下传输尽可能多的活动图像,如何能对图像数据进行最大限度的压缩,并且保证压缩后的重建图像能够被用户所接受等问题,就成为研究图像压缩技术的问题之源。图像数据之所以可以进行压缩,主要是因为一般原始图像数据是高度相关的,都含有大量的冗余信息。图像压缩编码的目的就是消除各种冗余,并在给定的畸变下用尽量少的比特数来表征和重建图像,使它符合预定应用场合的要求。1.1.3课题研究现状数据压缩编码己经有了很长的历史。视频图像压缩所解决的问题是尽量减少表示数字图像时需要的数据量;减少数据量的基本原理是去除其中多余的数据。以数学的观点来看,这一过程实际上就是将二维像素阵列变换为一个在统计上无关联的数据集合。这种变换在图像存储或传输之前进行。在以后的某个时候,再对压缩图像进行解压缩来重构原图像或原图像的近似图像。 人们对视频图像压缩开始感兴趣可以追溯到60多年前。最初在这一领域研究的焦点集中在建立一种模拟的方法以便减少视频传输所需的带宽,这一过程称为带宽压缩。数字式计算机的出现和后来先进的集成电路的发展,导致这方面研究重点从模拟方式转移到数字压缩方法上来。1969年在美国召开的第一届”图像编码会议” 标志着图像作为一门独立的学科诞生了。70年代和80年代中,视频图像的压缩编码主要集中在变换编码的技术上,同时在矢量编码技术上也有了很大的发展,80年代中后期,人们结合模式识别、计算机图像学、计算机视觉、神经网络、小波分析和分形几何等理论,开始寻找新的压缩视频图像的方法,并相继提出了各种方法,如:M.Kunt在1985年提出利用人眼视觉特性的第二代图像编码技术。 M.Barnsley在1988年提出的基于迭代函数系统的分形图像编码技术,1989年S.Mallat、I.Daubeche将小波分析理论应用与图像编码,以及90年代才发展起来的基于模型的图像编码方法等。 近十年来,视频图像编码技术得到了迅速的发展和广泛的应用,并且日益成熟,其标志是几个关于图像编码的国际标准的指定,即ISO/IEC关于静止图像的编码标准JPEG ,CCITT关于电视电话/会议电视的视频编码标准H.261, H.263,H.264等和ISO/IEC关于活动图像的编码标准MPEG-1,MPEG-2,MPEG-4。这些标准图像编码算法融合了各种性能优良的传统图像编码方法,是对传统编码技术的总结,代表了目前图像编码的发展水平。1.1.4课题研究意义为了提高工作生活的安全性和舒适性,视频监视系统应用非常广泛,从道路路口到企业厂,再到交通工具,无处不有它的影子。视频监视系统的应用,在一定程度上减少了事故的发生。但随着其应用日益广泛,对视频监视系统的要求也越来越高,不单局限于事后“有据可查”,还要能做到“快速反应,及时应对”。固定的监视设备较容易满足这一要求,而对于移动设施,如火车、汽车等,在图像传输技术上还存在难点。“图像传输技术的研究”主要目的是实时、有效、低成本地将视频图像传回到终端。涉及到的关键技术有:图像编解码技术、INTERNET图像传输技术、无线图像传输技术、嵌入式软硬件设计以及PC软件设计技术等等。视频监控系统应用日益广泛,社会各部门、各行业及居民小区纷纷建立起了各自独立的监控系统或报警系统。建立和不断完善的安防系统,对保护人员和设备安全、提高生产和管理效率、预防和制止犯罪、维护社会经济稳定起到了重要作用,但广泛的应用对视频监视系统的要求也越来越高。因此,研究高效率的图像压缩解压及传输技术具有较深的现实意义。 1.2论文的组织结构 本论文的主要结构及内容安排如下:第一章:绪论。介绍了本文的研究背景,包括在实时图像压缩解压系统的特点以及当今在图像压缩与解压技术的现状和优缺点,从而引出本课题研究的目的及意义。第二章:相关图像压缩解压技术简介。简单介绍了相关开发工具的特点以及涉及到的计算机知识。第三章:实时图像压缩解压系统分析。介绍了实时图像压缩解压系统的需求分析,开发目的以及功能概况。并详细介绍了H.263编解码的应用。包括了与H.263相关内容的分析与设计,能够了解整个系统的概况以及设计过程。第四章:程序运行结果显示与分析。介绍了程序在运行之后所展现的一些界面,并且进行了相应分析。第二章 图像压缩相关技术综述2.1图像数据压缩原理由于图像数据之间存在这一定的冗余,所以使得数据的压缩成为可能。信息论的创始人Shannon 提出把数据看作是信息和冗余度(redundancy)的组合。所谓冗余度是由于一副图像的各像素之间存在着很大的相关性,可利用一些编码的方法删去它们,从而达到减少冗余压缩数据的目的。为了去掉数据中的冗余,常常要考虑信号源的统计特性,或建立信号源的统计模型。图像的冗余包括以下几种:(1)空间冗余:像素点之间的相关性;(2)时间冗余:活动图像两个连续帧之间的冗余;(3)信息熵冗余:单位信息量大于其熵;(4)结构冗余:区域上存在非常强的纹理结构;(5)知识冗余:有固定的结构,如人的头像;(6)视觉冗余:某些图像的失真是人眼不易觉察的。对数字图像进行压缩通常利用两个基本原理:一是数字图像的相关性。在图像的同一行相邻象素之间,相邻象素之间,活动图像的相邻帧的对应象素之间往往存在很强的相关性,去除或减少这些相关性,也即去除或减少图像信息中的冗余度也就实现了对数字图像的压缩。帧内象素的相关称做空域相关性。相邻帧间对应象素之间的相关性称做时域相关性。二是人的视觉心理特征。人的视觉对于边缘急剧变化不敏感(视觉掩盖效应),对颜色分辨力弱,利用这些特征可以在相应部分适当降低编码精度而使人从视觉上并不感觉到图像质量的下降,从而达到对数字图像压缩的目的。2.2图像压缩编码目前图像编码压缩的方法很多,其分类方法根据出发点不同而有差异。根据解压重建后的图像和原始图像之间是否具有误差,图像编码压缩分为无误差编码和有误差编码两大类。无损编码中删除的仅仅是图像数据中冗余的数据,经解码重建的图像和原始图像没有任何失真,常用于复制、保存十分珍贵的历史、文物图像等场合;有损编码是指解码重建的图像与原图像相比有失真,不能精确的复原,但视觉效果基本相同,是实现高压缩比的编码方法,数字电视、图像传输和多媒体等常采用这类编码方法。图像压缩技术:(1) 无损压缩:霍夫曼编码 行程编码 算术编码(2) 有损压缩:预测编码 变换编码 其他编码2.2.1霍夫曼编码Huffman编码在无损压缩的编码方法中,它是一种有效的编码方法。它是霍夫曼博士根据可变长最佳编码定理提出的。依据信源数据中各信号出现的频率分配不同长度的编码。其基本思想是在编码过程中,对出现频率越高的值,分配越短的编码长度,相应地对出现频率越低的值则分配较长的编码长度,它是一种无损编码方法。采用霍夫曼编码方法的实质是针对统计结果对字符本身重新编码,而不是对重复字符或重复子串编码,得到的单位像素的比特数最接近图像的实际熵值。例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。例如:假设信源符号为a、b、c、d、e、f、g,其出现的概率相应的为0.25、0.025、0.025、0.05、0.35、0.25、0.05,一共7个字符,对其进行huffman 编码,算法如下:首先按照每个字符出现的频率大小从左到右排列:0.35、0.25、0.25、0.05、0.05、0.025、0.025;选出最小的两个值作为叶子节点构成一棵二叉树,值较大的叶子节点在左,两个叶子节点对应的频率之和作为根节点。把原排列中最小的两个节点删除,新的根节点插入排列保持大小从左到右的排列顺序不变;重复执行2),直到最后得到值为1 的根节点,得到一棵huffman 树。在得到的Huffman 树上左分支标记1,右分支标记0,所有的字符根据其频率标记到对应的叶子节点上,从根节点到叶子节点路径上遇到的0、1 字符串即为对应叶子节点所在字符的编码。a、b、c、d、e、f、g七个字符的Huffman 编码分别是:10、0001、0000、0011、11、01、0010,可以看到,符号只能出现在树叶上,任何一个字符的路径都不会是另一字符路径的前缀路径。2.2.2行程编码行程编码又称RLE压缩方法,其中RLE是Run-Length-Encoding的缩写,这种缩写方法广泛用于各种图像格式的数据压缩处理中,是最简单的压缩图像方法之一。行程编码技术是在给定的图像数据中寻找连续重复的数值,然后用两个字符值取代这些连续值。例如,有一串字母表示的数据为“aaabbbbccccdddedddaa”经过行程编码处理可表示为“3a4b4c3d1e3d2a”。这种方法在处理包含大量重复信息的数据时可以获得很好的压缩效率。但是如果连续重复的数据很少,则难获得较好的压缩比。而且甚至可能会导致压缩后的编码字节数大于处理前的图像字节数。所以行程编码的压缩效率与图像数据的分布情况密切相关。2.2.3算术编码算术编码与霍夫曼编码方法相似,都是利用比较短的代码取代图像数据中出现比较频繁的数据,而利用比较长的代码取代图像数据中使用频率比较低的数据从而达到数据压缩的目的。其基本思想是将被编码的数据序列表示成0 和1 之间的一个间隔(也就是一个小数范围),该间隔的位置与输入数据的概率分布有关。信息越长,表示间隔就越小,因而表示这一间隔所需的二进制位数就越多(由于间隔是用小数表示的)。算术压缩算法中两个基本的要素为源数据出现的频率以及其对应的编码区间。其中,源数据的出现频率、编码区间则决定算术编码算法最终的输出数据。2.2.4预测编码预测编码方式是目前应用比较广泛的编码技术之一。预测编码中典型的压缩方法有脉冲编码调制(PCM,Pulse Code Modulation)、差分脉冲编码调制(DPCM,Differential Pulse Code Modulation)、自适应差分脉冲编码调制(ADPCM,Adaptive Differential Pulse Code Modulation)等,它们较适合于声音、图像数据的压缩,因为这些数据由采样得到,相邻样值之间的差相差不会很大,可以用较少位来表示。通常,图像的相邻像素值具有较强的相关性,观察一个像素的相邻像素就可以得到关于该像素的大量信息。这种性质导致了预测编码技术。采用预测编码时,传输的不是图像的实际像素值(色度值或亮度值),而是实际像素和预测像素值之差,即预测误差。预测编码分为无失真预测编码和有失真预测编码。无失真预测编码是指对预测误差不进行量化,所以不会丢失任何信息。有失真编码要对预测误差进行量化处理,而量化必然要产生一定的误差。2.2.5变换编码预测编码认为冗余度是数据固有的,通过对信源建模来尽可能精确地预测源数据,去除图像的时间冗余度。但是冗余度有时与不同的表达方法也有很大的关系,变换编码是将原始数据“变换”到另一个更为紧凑的表示空间,去除图像的空间冗余度,可得到比预测编码更高的数据压缩。变换编码是将图像时域信号变换到系数空间(频域)上进行处理的方法。在时域空间上具有很强相关的信息,在频域上反映出在某些特定的区域内能量常常被集中在一起或者是系数矩阵的分布具有某些规律,从而可以利用这些规律分配频域上的量化比特数而达到压缩的目的。变换编码的目的在于去掉帧内或帧间图像内容的相关性,它对变换后的系数进行编码,而不是对图像的原始像素进行编码。先对信号进行某种函数变换, 从一种信号(空间)变换到另一信号(空间)然后再对变换后的信号进行编码。比如将时城信号变换到频域,就是因为声音和图像的大部分信号都是低频信号,在频域中信号能比较集中,换为频域信号后再进行采样、编码,可以达到压缩数据的效果。可以看出预测编码和变换编码相比:预测编码主要在时空域上进行,变换编码则主要在变换域上进行。采用变换编码的有DEF(傅立叶变换)、DTC(离散余弦变换等)。2.2.6 H.263编解码H. 261标准是ITU于1990年公布的第一个视频编码标准,帧间编码时采用了基于1616的宏块的整像素运动估计,而在帧内编码时采用了88数据块的DCT运算。这些算法有效地压缩了视频序列在时间和空间上的冗余度,使得H. 261具有较高的压缩比,适合于Px64Kbps(p:1-30)的视听业务,可用于ISDN、可视电话和会议电视等应用。H.261编码分成四层:图像层,块组层(GOB ),宏块层 (MB)和块层。每一块88,每一层都有各自头部,复合后串行传输。H.261的视频帧格式被称作公共中间格式 (CIF) 。 H. 263是ITU于1995年制定的一种码率低于64Kbit/s的甚低码率视频压缩编码标准。其修订版本有1998年的H.263+和2000年的H.263+。H.263标准不仅着眼于利用PSTN (Public Switched Telephone Network,公共交换电话网络)传输,而且兼顾 GSTN(Global Switched Telephone Network)移动通讯等无线业务。H.263已被多个多媒体终端标准所采纳,包括支持PSTN与无线网的 H.324,支持N-ISDN的H.320,支持B-ISDN的H.310等。H.263采用的基本编码方式是帧内编码(INTRA)和基于运动估计与补偿的帧间编码(INTER)。 为了进一步改善图像质量,提高压缩比,H.263与H.261相比增加了以下一些功能: (1)半个像素精度的运动估计 (2)不受限的运动矢量 (3)先进预测模式 (4)PB帧模式 (5)基于语法的算术编码 H.263修订版主要是增加或修正了H.263的一些高级编码模式,不仅保持了对旧版本的兼容,而且增加了新的功能,例如,改进的标准可以采用自定义的图像格式;支持图像冻结和快照;为了避免信道误码对图像重建造成的不可恢复的损失,增加了一些新的抗误码技术等等。这些新功能进一步扩大了其应用范围,提高了压缩效率和抗误码能力,同时进一步改善了重建图楼的主观质量 。H.263视频编码标准是专为中高质量运动图像压缩所设计的低码率图像压缩标准。与H.261 的p64K 的传输码率相比,H.263的码率更低,单位码率可以小于 64K,且支持的原始图像格式更多,包括了在视频和电视信号中常见的QCIF,CIF,EDTV,ITUR 601,ITUR 709 等等。H.263 采用运动视频编码中常见的编码方法,将编码过程分为帧内编码和帧间编码两个部分。埃帧内用改进的DCT 变换并量化,在帧间采用1/2 象素运动矢量预测补偿技术,使运动补偿更加精确,量化后适用改进的变长编码表(VLC)地量化数据进行熵编码,得到最终的编码系数。H.263的编码速度快,其设计编码延时不超过150ms;码率低,在512 K 乃至 384K 带宽下仍可得到相当满意的图像效果,十分适用于需要双向编解码并传输的场合(如:可视电话)和网络条件不是很好的场合(如:远程监控)。H263采用的方法(1)信源编码器基于通用中间格式(CIF),使其可以同时应用于625线和525线两种电视标准。视频编码器对图象的取样次数为视频信号场线的整数倍,取样时钟和数字网之间的关系是异步关系,提供可以和其它各种设备信号相结合的独立的数字比特流。(2)采用可减少时间冗余的帧间预测和可减少空间冗余的残留信号编码方法。解码器具有运动补偿的能力,并允许可选择地在编码器中增加这种技术。H263运动补偿采用的是半象素精度,而不是H.261建议中的全象素精度和循环滤波器。而对待传送的符号采用了游程编码。(3)允许采用无限制运动矢量模式,在该模式中,运动矢量被允许指到图片的外部,可使用更大的运动矢量。允许采用基于句法的算术编码模式代替游程编码,可将最终的比特数显著降低。允许采用高级预测模式,对P帧的亮度部分采用了块重叠运动补偿。对图片中的某些宏块采用4个8x8矢量来代替原来的1个16x16矢量。编码器必须决定使用哪一种矢量。允许采用PB帧模式,一个PB帧包含一个由前面的解得的P帧图象预测得出的P帧和一个由前一个P帧和当前解码的P帧共同预测得出的B帧。使用这种模式可以在比特率增加幅度很小的情况下大幅度增加帧频。(4)信源编码器的主要原理是预测,块变换和量化。信源格式信源编码器对每秒发生30000/1001(大约29.97)次的图象进行操作。对图象频率的允许误差为50 ppm。采用五种图象格式,图象被编码为一个亮度信号和两个色差成分(Y,CB和CR)。五种标准图象格式为: sub-QCIF, QCIF, CIF, 4CIF和16CIF。对每种图象格式而言,在正交排列时,亮度的取样结构都是dx个象素每行,dy行每幅图象。两个色差成分的取样都是dx/2个象素每行,dy/2行每幅图象。dx, dy, dx/2和dy/2的值在下表给出。 H.263各种图象格式的象素个数图象格式 亮度取样的象素个数(dx) 亮度取样的行数 (dy) 色度取样的象素个数(dx/2) 色度取样的行数(dy/2)sub-QCIF 128 96 64 48QCIF 176 144 88 72CIF 352 288 176 1444CIF 704 576 352 28816CIF 1408 1152 704 576对每种图象格式,色差取样被定位在和亮度块边界一致的块上。取样象素的纵横比和图象格式的纵横比一致,也和H.261建议中定义的QCIF和CIF一致:(4/3)*(288/352)。除了sub-QCIF格式的 纵横比为4:3。解码器使用sub-QCIF以及QCIF格式等。编码器可对sub-QCIF和QCIF中的一种进行操作。 H.263 支持五种分辨率。除了 H.261 支持的 QCIF 和 CIF 外,还有 SQCIF、4CIF 和 16CIF。SQCIF 的分辨率大约是 QCIF 的一半,而 4CIF 和 16CIF 的分辨率分别是 CIF 的4倍和16倍。表2-1 在译码算法上,H.261 与 H.263 的不同点列表如下:画图格式象素亮度线条亮度H263是否支持H263是否支持非压缩比特率(Mbits/s)1030frames/sframes/s灰色彩色灰色彩色SQ_CIF12896是1.01.53.04.4Q_CIF176144是是2.03.06.19.1CIF352288可选可选8.112.224.336.54CIF704576可选32.448.797.3146.016CIF14081152可选129.8194.6389.3583.92.2.7其他编码LZW 编码:LZW(Lempel-Ziv-Welch Encoding)编码原理是将每一个字节的值都要与下一个字节的值配成一个字符对,并为每个字符对设定一个代码。当同样的一个字符对再度出现时,就用代号代替这一字符对,然后再以这个代号与下个字符配对。LZW 编码原理的一个重要特征是,代码不仅仅能取代一串同值的数据,也能够代替一串不同值的数据。在图像数据中若有某些不同值的数据经常重复出现,也能找到一个代号来取代这些数据串。在此方面,LZW 压缩原理是优于RLE 的。矢量量化编码:利用相邻图像数据间的高度相关性,将输入图像数据序列分组,每一组m个数据构成m维矢量,一起进行编码,即一次量化多个点。矢量量化编码属于有损压缩编码,它的缺点是复杂度随矢量维数呈指数增加,数据量和计算量都很大。子带编码的基本思想是使用一组带通滤波器把输入图像的傅立叶频谱分成若干个连续的频段,每个频段称为子带。对每个子带中的图像信号采用单独的编码方案去编码。采用对每个子带分别编码的优点是:第一,对每个子带信号分别进行自适应控制,量化阶的大小可以按照每个子带的能量电平加以调节。具有较高能量电平的子带用大的量化阶去量化,以减少总的量化噪声。第二,可根据每个子带信号在感觉上的重要性,对每个子带分配不同的位数,用来表示每个样本值。例如,在低频子带中,为了保护图像的边缘轮廓结构,就要求用较小的量化阶、较多的量化级数,即分配较多的位数来表示样本值。而图像中的噪声及图像的细节,通常出现在高频子带中,对它分配较少的位数。第三,各子带的量化噪声都局限在本子带内,即使某个子带内的信号能量较小,也不会被其他子带的量化噪声掩盖掉。第三章 系统总体设计3.1 功能需求根据系统的目标,我们可获得系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即图片的采集功能模块,图片的压缩功能模块,图片的解压功能模块和图像的存储模块。其总体框架如图3-1所示:程序启动是摄像头开启,采集图像图像压缩图像解压图像存储程序结束否 图3-1系统总体框架3.2 图像的采集功能因为此系统要求实时图像的采集,因此,应该调用摄像头对画面进行捕捉采集,详细流程图如3-2图所示:开始开启摄像头设备获取设备信息和图像信息初始化采集窗口、颜色模式、帧状态结束捕捉图像帧数据关闭摄像头设备用H.263进行压缩和解压图3-2图像采集流程图本程序中,采用VFW Video Capture来完成视频捕获。微软的应用程序接口(API)都是面向过程的,往往一个函数实现一个功能。而VC+是面向对象的编程,面向对象的方法,有利于对操作、数据的封装,有利于程序的模块化。在VFW的基础上定义了一个Sample Image类,该类封装了VFW Video Capture的一些功能,完成视频捕获的初始化(Start Capture),视频捕获的结束(Stop Capture),捕获一帧(Capture One Frame),设置捕获参数(Set Capture Rate图像捕获速率,Set Capture Dimension图像的大小),最后还有一个工作,将它与一个PICTURE控件挂接,使捕获到的图像可以显示在图像框里,一件很复杂的事被大大地简化了。3.3 H.263编解码的主要模块和流程为了保证视频的随机存取,最好采用帧内编码。但为了保证较高的数据压缩率,降低位速率,帧内编码又明显有不足之处,因此,H.263标准综合了很多压缩技术,在帧内和帧间编码之间折衷,以保证既获取高质量图像,又提高压缩率,而且保证随机存取。采用的压缩编码技术主要有:彩色信号的子采样;量化;预测编码;运动补偿;频率变换;采用离散余弦变换(DCT);可变长度编码;图像插值,采用的插值技术也称为“双向预测技术”。中间宏块可以正向预测和反向预测,以及借助运动矢量做平移,译码器可以重构属于给定宏块的像素值,即前后两幅图像的平均值。以上所述的多种编码技术中,最基本的有两种:其一是基于块的运动补偿,它用于减少时间冗余信息;其二是基于DCT的变换,它用于减少空间冗余信息。而帧间预测和插值补偿(插补)编码,就是运动补偿编码减少时间冗余度的基本应用。其编码、解码算法及框图如图3-3、图3-4所示。图3-3 视频编码算法图3-4 H.263译码器算法3.3.1 H.263的编码步骤1.初始化编码器2.调用编码函数有两个编码函数,分别为帧内编码函数和帧间编码函数。帧内编码函数进行编码时不考虑帧间预测,只进行帧内编码。帧间编码函数除了要进行帧内编码以外,还要考虑帧间预测。编码器在进行编码时,每隔一定的帧数就要进行一次帧内编码,这是为了保证误差不会发散。本程序系统选择每10帧进行一次帧内编码。H.263的编码流程图如图3-5所示图3-5 H.263的编码流程图在编码这个模块中,程序的代码运用到哈弗曼编码技术,所运用代码的如下:int Encode(int val,EHUFF *huff) if (val = huff-n) return 0; /* No serious error, can occur with some values */ else if (huff-Hlenval Hlenval,huff-Hcodeval); return(huff-Hlenval); char *BitPrint(int length, int val) int m; char *bit = (char *)malloc(sizeof(char)*(length+3); m = length; bit0 = ; while (m-) bitlength-m = (val & (1 cum; sacindex+); high = low - 1 + (length * cumul_freqsacindex-1) / cumul_freq0; low += (length * cumul_freqsacindex) / cumul_freq0; for ( ; ; ) if (high = q2) code_value -= q2; low -= q2; high -= q2; else if (low = q1 & high q3) code_value -= q1; low -= q1; high -= q1; else break; low *= 2; high = 2*high + 1; bit_out_psc_layer(); code_value = 2*code_value + bit; return (sacindex-1); 解码的复位的代码如下:void decoder_reset( ) int i; zerorun = 0; /* clear consecutive zeros counter */ code_value = 0; low = 0; high = top; for (i = 1; i = 16; i+) bit_out_psc_layer(); code_value = 2 * code_value + bit; if (trace) fputs(Arithmetic Decoder Reset n,dlog);3.4系统界面设计3.4.1整体界面图3-9 软件整体界面整个软件的整天界面如图3-9所示,我们可以看到,在整个界面上,有许多个小按钮。最主要的五个菜单是:Conference,View,Audio,Video及Help。下面,单独介绍一下每个菜单的功能:Conference:用于电脑的连接,因为按照本软件的要求,我们要显示两个画面,一个画面是由摄像头采集到的图像,直接显示在Local Screen里,而在Remote Screen里,则需要显示连接得到的画面。View:选择是否显示本地摄像头捕捉到的画面和压缩解压后窗口显示的画面。Audio:选择是否发送或者接收声音。Video:选择是否发送或者接收图像。Help:按一下这个键,可以显示本软件的一些信息。3.4.2具体按键的界面1. Conference 中的Connect界面:.图3-10 connect界面这一界面,就是连接计算机的具体界面,在Remote Host这一栏目中,填入想要连接的计算机的IP地址,那么,在Remote Screen中就能看到那台计算机的图像。本软件也可以输入自己计算机的IP。图3-11 连接询问界面 这一界面,是在输入另一进算计IP地址之后显示的界面,点击Accept,表示使两台计算机相连,而点击Reject,责表示拒绝将两台计算机相连。2.Audio中的Volume Control界面:图3-12 Volume Control界面这一界面,是用来调节音频大小的界面,在这界面里,有Recording和Playing两个项目,你可以拖动下面的按钮,然后点击OK,就能调节声音的大小。第四章 运行结果显示与分析4.1 程序运行结果显示1.编译软件之后,生成可执行文件,在Release文件夹中点击后运行软件,显示界面,如图3-14:图3-14 软件打开后显示的画面这是在软件最初打开,未启动摄像头以及未与别的电脑连接的情况下显示的画面,接下来要做的就是打开摄像头,连接计算机。2软件接收图像后显示的画面图3-15 软件接收图像后显示的界面这是软件以及完全正常运行的情况下显示的画面,因为是连接的本机,所以左边和右边显示的画面完全相同,但是,右边的画面是经过压缩和解压之后形成的画面。4.2 结果分析由程序运行后的截图可以看出,课题要求的功能大体实现,软件正常运行,在第一个图画框中,能够实时的显示摄像头捕捉到的画面,而在第二个图画框中,能够显示出经过压缩解压之后的画面。结束语本论文实现了实时图像的压缩和解压系统设计,这一系统大体实现了以下几个功能:利用摄像头对图像进行实时采集,利用H.263对图像进行编码解码,无线网络环境下数据的传输。本次程序设计,对实时图像的压缩解压系统的结构框架做了精心的构思与设计,采用主要开发工具是是C+,所用的系统是XP,才使整个图像压缩解压系统得以实现。虽然任务书上的要求都基本实
展开阅读全文