视频图象压缩编码研究.doc

DZ289 图象压缩编码研究

收藏

压缩包内文档预览:(预览前20页/共48页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:511760    类型:共享资源    大小:630.39KB    格式:RAR    上传时间:2015-11-12 上传人:QQ28****1120 IP属地:辽宁
6
积分
关 键 词:
毕业设计
资源描述:
DZ289 图象压缩编码研究,毕业设计
内容简介:
毕业设计(论文)毕业设计(论文)题目名称:题目名称:视频图象压缩编码研究年年 级:级: 本科本科 专科专科学生学号:学生学号:学生姓名:学生姓名: 指导教师:指导教师: 学生单位:学生单位: 技术职称:技术职称:学生专业:学生专业: 教师单位:信息工程学院教师单位:信息工程学院 I 视频图像压缩编码研究摘要:多媒体文件数据量很大,如果不对其进行压缩,会给计算机的存储和传送带来很大困难,从而影响多媒体文件的使用和流通。在视频监视系统中,采用有效的压缩方法可以提高监控的实时性和有效性。本文讨论了当前视频编码关键技术的研究进展,并对以往的视频压缩方法进行了回顾和总结,在此基础上设计了一个视频图像压缩系统。该系统采用DirectShow技术实现对实时视频流的捕获和预览,而且能够自动保存为BMP图像;再利用JPEG编码标准对所捕获单帧图像进行批量压缩,得到高质量、高压缩比的视频图像,并实现视频流的存储和回放;最后用树形结构实现视频的再次合成。本设计采用的方法有效提高了视频图像的采集速度和质量,在安防系统、视频会议等领域有广阔的应用前景。关键词:视频图像;DirectShow;视频捕获;视频合成 II Research on Video Image Compression CodingAbstract:The data volume of the multimedia files is tremendous. The uncompressed data will bring much difficulty to computers in saving or delivering and influence the usage and circulation of multimedia. Effective compression method can improve real-time video quality in video monitoring systems. This paper discussed the current research progress of the key technologies in video coding, reviewed and summarized the past methods of video images compression, based on which a video images compression software was designed. This system can capture and preview the real-time video streaming using the DirectShow technology, save the BMP files automatically, compress batch of the captured single-frame image by JPEG coding standard to get higher compression ratio and quality, save and playback the video streaming, synthesize the video again with tree structure. The methods used in this design effectively enhanced the acquisition speed and video quality. It has broad application foreground in security and defense, video conference and so on. Key words:Video image , DirectShow , Video Capture , Video synthesis III 目 录第 1 章 绪论.11.1 选题的背景和意义.11.2 视频图像压缩技术及其发展现状.11.3 视频压缩编码的应用.31.4 本文研究内容.4第 2 章 系统总体描述.52.1 系统方案设计.52.1.1 系统的输入设计.62.1.2 系统的输出设计.72.1.3 系统功能结构.72.2 系统工作流程.82.3 界面设计.92.4 非功能性需求.102.5 术语表.112.6 系统约束.11第 3 章 各部分模块的设计.123.1 实时视频流的获取.123.1.1 DirectShow 概述 .123.1.2 DirectShow 工作的架构体系 .123.2 单帧图像批量压缩算法的实现.173.2.1 JPEG 算法概要 .183.2.2 JPEG 算法的主要步骤 .183.3 视频合成.24第 4 章 实验结果与讨论.274.1 测试过程.274.2 测试结果.32 IV 总结.33致谢.35参考文献.36附录 1(视频捕获).37附录 2(视频单帧捕获).38附录 3(批量压缩单帧图像).38附录 4(视频合成).46 1第 1 章 绪 论1.1 选题的背景和意义 人类传递信息的主要媒介是语音和图像。据统计,在人类接受的信息中,听觉信息占20%,视觉信息占60%,其他如味觉、触觉、嗅觉总的加起来不过占20%。所以,作为传递信息的重要媒体和手段的图像信息是十分重要的。由于视频信号含有极其丰富、直观的大量信息,又最符合人们的观习惯,因此,许多行业都利用视频信号进行监控,它不仅具有监测灵敏度高,而且便于记录和观察现场信息等优点。现已广泛应用于视频会议系统、机器视觉、工业生产线检测、人工智能等领域。图像压缩编码是指用尽可能少的数据表示信源发出的图像信号,以减少容纳给定消息集合的信号空间,信号空间通常有三方面的含义1:1物理空间,指内存、磁盘、磁带等数据存储介质;2时间空间,指传输给定消息集合所需的时间;3电磁频谱空间,指传输给定消息所需的频带等。那么图像压缩的目的,就是减少数据占用的存储空间、传输时间和频率带宽。视频处理技术是伴随着视频从模拟到数字化转变的过程中得到蓬勃发展的。随着人们对视频图像的清晰度、流畅度、实时度的要求越来越苛刻,使其成为了一项炙手可热的技术。同时由于当前周边行业比如Internet、显示设备等产业的兴盛,也推动了视频处理技术的发展。视频处理技术可以细化为视频压缩解压缩技术、数字视频广播技术等分支学科,应用于通信、家庭等各个行业。其中视频压缩技术尤其被专业人士看好。为了有效防止信号在传输和存储过程引入噪声和导致波形畸变,获得更好的品质,模拟信号一般都先进行采样和数字化,然后再进行存储、传输和接受重建。但这些数字化信号的数据量极大,尽管海量存储技术、处理器的速度以及数字通信系统的性能的迅猛发展,但对数据存储的能力和数据传输带宽的需求仍然超出了现有技术的能力所及。为了使通信成为可能并尽可能地降低通信费用,信号的压缩是必需的。1.2 视频图像压缩技术及其发展现状压缩算法是针对多媒体数据中存在的各种冗余而设计的, 即采用一定的编码方式, 消除其中的冗余信息, 实现不失真压缩, 或以人的视觉和听觉的生理特性为基 2础, 在容许失真限度内的有失真压缩以得到更高的压缩比。而压缩技术分为两类:有损压缩和无损压缩。无损压缩保证在数据压缩和还原过程中,多媒体信息没有任何的损耗或失真,其压缩效率通常较低。有损压缩则采用一些高效的有限失真数据压缩算法,大幅度减少多媒体中的冗余信息,其压缩效率远高于无损压缩。通常情况下,数据压缩率越高,信息的损耗或失真也越大,需要找出一个相对平衡点。 有损压缩应用于一般图像,如风景、人物照片、部分医疗图像等,如大家接触的JPEG图像格式一般都是有损压缩。有损压缩的压缩比很高,能达到10:1、20:1,甚至到40:1,主要原因就在于原始图像的像素值可以用一些近似值代替,因为人眼对这些差距并不十分敏感,这也体现了一种对图像数据的精确性,存储空间和带宽占用的折中处理。无损压缩应用于认证签名图像处理和档案图像领域,医疗图像也逐步采用无损压缩方法,但无损图像的压缩比并不是很高,一般只有2:1到4:1。未来多媒体数据压缩技术的发展趋势将是基于内容的压缩。但是一涉及到基于内容的目标,就会遇到很多的困难。最恰当的方法是从很小的一个领域做起。其次,我们还需要积极地参与到国际标准的制定过程中去,做大量的工作。新的标准和算法一出台,就需要配合大量的工具,其中包括预处理方面的工具,以及各种各样的编辑工具等等。在这方面,大家都是处于同一条起跑线上。如果谁提前开发出来并将之商用化,谁就可能抓住了市场先机2。视频压缩正在市场中催生数量日益增长的数字视频产品。另外,图像压缩技术、视频技术与网络技术相结合的应用前景十分可观。表表1-1各种视频压缩标准特性和应用各种视频压缩标准特性和应用Comprssion formatStill Image or VideoCharacteristicdescriptionapplicationJPEG or JPEG2000For Still ImageJPEG and JPEG2000 utilize different compression algorithmDBSM-JPEGFor VideoJust be consist of the continuousJPEG imagesPC-CAM,Security,etcMPEG1For VideoThe MPEG organization defineVCD,etc 3表表1-1MPEG2For VideoThe MPEG organization definethe standard for DVD,DVBapplicationDVD,DVB,and securityMPEG4For VideoThe MPEG organization definethe standard for InternetapplicationSecurity,VOD,IPTV,PMP,etcH.261For VideoITU define the standard for basicinternet multimedia applicationSecurity,videoConference,etcH.263For VideoITU define the standard forlow-bandwidth internetmultimedia applicationSecurity, videoconferenceH.264For VideoNext generation standard, morecompression efficiencyIPTV,Security,multimediaWMV9For VideoDefined by the Microsoft, nextgeneration standardIPTV, VODAVS1.0For VideoChina own patent standard随着视频压缩技术的不断发展,以前一些主流的压缩格式也逐渐淡出了市场的角逐,普遍限制在一些能够发挥标准本身特质的市场范围内。通过时间和市场实践的验证,这些压缩标准的优势逐渐显现,缺点也随之暴露出来。人们对于高性能的不断追求促使新的标准诞生。1.3 视频压缩编码的应用欧洲 1991 年就开始了常规的数字电视广播(DVB)的研究。DVB 亦采用MPEG2 的压缩编码技术,对应不同媒体的传输制定了相应的 DVB 标准。 4在 1995 年以前,我国主要用模拟技术通过卫星传送电视节目,91 年在“亚洲1 号”C 波段转发器上采用 MUSICAM 技术向位于全国各地的若干卫星收转站传送中央 30 路声音广播节目。1995 年 11 月,中央电视台率先开始进行数字卫星广播,比国外仅仅晚了一年左右的时间。中央电视台采用了美国 GI 公司的 DigicipherI技术,租用一个卫星转发器,向全国传送体育、电影等 5 套数字压缩的常规清晰度电视节目。1996 年 5 月,中央电视台改用 DigicipherII 方式,租用“亚卫”2 号上的一个 Ku 波段转发器,传送的节目已达 7 套,质量相当于 MPEG2 的水平。1997 年 1 月,河南、广东、广西等十个省(区)电视台开始采用 DVBS 方式进行数字卫星广播,采用单路载波方式,在传送电视节目的同时,还传送当地省广播电台的广播信号。到 1999 年初,全国已经有 29 个省级电视台采用了 DVBS 方式进行数字卫星广播3。同时,HDTV 已作为 95 国家重点开发项目而列入整体规划。常规数字电视的地面广播 DVBT 及有线电视传送 DVBC 将同样有着无限广阔的发展前景4。在电视普及的今天,每台电视机只要一个机顶盒就可以在原来一个电视频道的位置上同时接收五个频道的具有演播质量的常规清晰度电视节目。这就是异想天开、痴人说梦,而将很快变为现实。目前,在这些视频编码在逐渐完善的过程中,人们更加关注视频的人机交互性,也因此出现了图像放大和慢动作特写。1.4 本文研究内容 本设计主要实现对实时视频的无损压缩,系统在总体上应达到能实时获取视频单帧图像,能对单帧图像进行批量压缩,最终将压缩后的单帧图像合成为视频文件。具体要处理的问题如下: 1) 如何对实时视频进行采集和获取 2) 对视频的存储与回放 3) 如何对视频单帧进行批量压缩4) 如何实现视频文件的再次合成 5第章 系统总体描述2.1 系统方案设计本程序采用 DirectShow 技术进行设计。为了提高系统中各个子系统、功能模块之间的独立性,使系统具有良好的可扩展性。系统采用由显示层、应用层和存储层组成的三层体系架构。其中,显示层主要负责管理与用户界面有关的类;应用层负责维护系统状态和实现应用业务逻辑的类,主要是领域模型中的类;存储层的类主要是负责系统的持久数据,如 AVI、BMP 和日志文件的维护。系统的体系结构如图 2-1 所示:显示层(UI Package)应用层(Application Package)存储层(Database Package)图图 2-1系统的体系结构系统的体系结构和三层架构相对应的系统包或叫子系统如下: 显示层对应 User-Interface Package 包。该包中的类基于 Visual C+ MFC 的对话框类 CDialog,CDialog 可以用来书写用户界面应用程序。该包和 Application Package 包协作。Application 包包含那些图像处理的类。UI 包调用 Bmp 对象的操作,对它们进行阈值设置操作。 应用层对应 Application 包。该包包含的类(如 MediaPlayer、Bmp 等)来自于分析模型。设计阶段将完整地定义了这些类的操作。 6 存储层对应 Database Package。Database Package 向 Application 包中的类提供服务,以便它们能够持续地存储。2.1.1 系统的输入设计 细节设计描述了新的技术性的类,如 Application 和 Database 包中的类,并且丰富了分析阶段所形成的 Application 类。类图、状态图和动态图用的还是分析阶段所形成的图,但对他们定义的更加详细,具有了更高的技术水平。1) 视频源连接用户首先通过点击用户界面上的连接视频源,通过应用层向摄像头进行连接,再显示到用户界面。如图 2-2 所示:图图 2-2视频源连接输入设计视频源连接输入设计2) 视频采集用户首先通过点击界面上的视频监控相应的功能,通过用户接口层向应用层发送控制命令,应用层再将处理的结果返回给用户接口层进行显示。如图 2-3 所示:显示层(UI Package)应用层(Application Package)Submit(data)ControlCameraTransport显示层(UI Package)应用层(Application Package)ConsumerSubmit(data)Transport 7图图 2-3视频监控输入设计视频监控输入设计2.1.2 系统的输出设计整个系统的输出包括两个部分,对视频流在窗口上的显示;视频文件和日志文件的保存。系统输出的方法是:对视频流的预览显示是实时的,只需要开始的初始化;视频文件的存储,是根据操作者的需要,按需求来存储的。如图 2-4 所示:图图 2-4视频压缩输入设计视频压缩输入设计UI Package 中的 MotionDetectionDlg 类,提供了向应用层传输控制指令的方法。Application Package 中的 Video Monitor 类,接收来自 UI Package 的指令,并向存储层提供需要存储的数据源和相应的文件信息。Database Package 在接收到 Application Package 的存储指令后,执行相应文件的存储。2.1.3 系统功能结构整个系统划分为前台服务和后台处理两部分。前台服务主要是提供一些系统功显示层(UI Package)+updata()应用层(Application Package)Video Monitor+SaveAVI()+SaveBMP()+log()存储层(Database Package) 8能的交互,可以进行系统配置和部分参数的设置。后台处理主要是以实时视频流的获取,随后进行视频单帧捕获、单帧图像批量压缩以及视频合成的功能。如图 2-5所示:图图 2-5视频图像压缩编码系统结构视频图像压缩编码系统结构2.2 系统工作流程系统工作流程如图 2-6 所示说明: 1.连接视频源成功后,直接进行实时视频的预览。 2.视频监控功能包含了对实时视频的存储和回放。实时视频单帧图像获取后台处理前台服务实时视频查看视频录象回放与图片浏览系统功能参数配置系统管理视频图像压缩系统 9图图 2-6系统工作流程图系统工作流程图2.3 界面设计 根据设计及用户需求,该视频图像无损压缩系统的界面设计如下: 此界面总体可以分为七个区域,即:视频源的连接、实时视频查看、视频的回放窗口、单帧图像批量压缩、视频合成、视频显示窗口以及输出系统日志。 1. 视频源的连接:提供对视频源的连接或断开的操作。 2. 实时视频查看:提供视频监控的基本功能。3. 视频的回放窗口:查看已捕获的视频或已有视频文件。4. 单帧图像批量压缩:对所捕获单帧的批量压缩。开始结束实时视频预览(Preview)连接视频源系统初始化视频监控视频回放单帧捕获保存为 BMP位图浏览视频存为 AVI断开视频源更新日志视频合成单帧图像批量压缩 105. 视频合成:对压缩后的单帧图像重新合成为视频文件。6. 视频显示窗口:实时视频预览窗口、视频的回放窗口。7. 系统日志:系统日志的显示和更新。界面如图 2-7 所示:图图 2.7 界面设计界面设计2.4 非功能性需求 设计的非功能性需求如下: 1) 界面友好。除了美观、风格统一外,在控件布局、按钮组合上要体现操作的 11易用性。 2) 对位图和视频文件都按时间顺序存储,便于检索。 3) 尽量在内存中操作位图,以提高运行效率。 4) 软件采用 VC+编写。软件开发完成后,可将运行库打包进安装程序。2.5 术语表表表 2-1术语表术语表术语(中)术语(中)术语(英文)术语(英文)描述描述视频源Video source系统所连接的视频采集设备视频预览Video preview对采集的视频进行预览视频监控Video monitor视频监控功能视频回放Playback对储存的视频文件进行回放视频捕获Grab对当前连续视频帧拷贝到相应内存区域单帧捕获Capture single frame对当前帧单帧拷贝到相应内存区域单帧压缩Compress single frame对捕获的单帧进行批量压缩视频合成Video composition将单帧合成为视频文件系统日志System log记录系统运行时状态改变的文档2.6 系统约束表表 2-2开发要求表开发要求表需求名称需求名称详细要求详细要求硬件系统PC 机,CPU:PM 1500MHz,RAM:512MB, USB Camera软件系统Visual C+ 6.0,Microsoft DirectX 9.0,VFW 12第章 各部分模块的设计3.1 实时视频流的获取在视频应用领域中最首要的问题就是实时视频流的获取。使用硬件板卡采集和压缩的方法能够使用户快捷地进行开发,但是成本较高。Visual C+中,可使用VFW(video for window)技术或DirectShow技术来获取USB摄像头采集的视频流。VFW开发包连接视频采集设备很方便,用回调函数可进行单帧的捕获和视频流的存储。VFW开发包和DirectShow开发包都能够完成对视频图像的采集。使用VFW的优势在于简单直观,能够比较快捷地完成采集操作。但是需要手工操作原始数据,常常容易出错,而且由于出现比较早,对多媒体数据的操作有限。而DirectShow是基于COM技术的编程接口,使用面向对象的思想进行开发,能够保持整个软件体系结构5。针对现在非常普及的流媒体,DirectShow也提供了非常完善的解决方式。DirectShow 的核心是被称为过滤器(filter) 的插件式模块系统, 该系统配置在过滤器图表(filter graph) 中。过滤器图表管理器( filter graph manager ) 组件负责检查这些过滤器的连接和控制过滤器间的数据流动。Microsoft DirectX 9.0b SDK的Sample中有一个DirectShow的例程StillCap。该程序能对多种采集设备进行视频流捕获以及保存为流文件或位图文件。该程序的架构很清晰,特别适合在此基础上进行二次开发,添加一些图像处理的功能。因此,采用了DirectShow技术,以StillCap的框架为基础,这样就能把设计的主要精力放在图像处理上。3.1.1 DirectShow 概述DirectShow 主要提供播放本地文件或Internet 服务器上的多媒体数据, 以及从视音频采集卡等硬件设备中捕获多媒体流的功能。它能够播放多种压缩格式的视音频文件,包括MPEG、QuickTime、AVI、WAV以及基于Video for Windows 和WDM(Windows Driver Model)的视音频捕获流。DirectShow的核心是被称为过滤器(filter)的插件式模块系统, 该系统配置在过滤器图表(filter graph)中。过滤器图表管理器( filter graph manager ) 组件负责检查这些过滤器的连接和控制过滤器间的数据流动。3.1.2 DirectShow 工作的架构体系DirectShow是一个基于COM的系统,由许多模块化的组件组成。Microsoft为每 13一个进行处理的组件取了一个名称叫做过滤器(Filter),每一个过滤器完成一定的功能,如专门负责采集视频的过滤器,专门进行编码/解码的过滤器。应用程序的任务就是把完成系统功能的众多过滤器组合起来,一个过滤器的输出连接到另一个过滤器的输入,形成所谓的过滤器图表(Filter Graph)。由于DirectShow是基于COM组件的技术,极大的提高了过滤器的复用性,开发人员只需要将注意力集中在要实现的功能上即可;同时由于DirectShow只规定了过滤器之间的通信的借口,并没有规定具体实现,这就使得基于DirectShow开发软件具有良好的开放性和扩展性。DirectShow的核心是被称之为过滤器(Filter)的插件式模块系统,它被装配在过滤器图(filter graph)中,用于管理在过滤器内部和过滤器之间处理的音视频数据流6。过滤器图表管理器负责把这些过滤器连接起来进行管理。DirectShow系统结构图如图3-1所示:应用程序过滤器管理器源过滤器转换过滤器表现过滤器ACM/VCM 编解码器文件系统DirectDrawDirectSound内核流框架WDM 采集设备VFW 采集设备MPEG2 硬件解码器声卡显卡文件系统因特网 DirectShow命令事件图图3-1DirectShow系统的结构图系统的结构图图中央最大的一块即是DirectShow系统,DirectShow系统位于应用层中。它使用一种叫Filter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块叫做Filter;各个Filter在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。过滤器可分为3类,即源过滤器(Source Filters)、转换过滤器( Transform Filters)和表现过滤器(Rendering Filters)。源过滤器用来从数据源获取数据,并将数据传入过 14滤器图表;转换过滤器用来获取、处理和传递数据;表现过滤器用来表现数据,典型地表现到硬件设备,如将视频输出到视频卡中。DirectShow开发完全建立在COM组件技术基础上,COM组件是关于对象如何创建和消亡以及对象间相互通信的二进制标准。DirectShow与COM紧密相连,它所有的功能都由COM接口( Interface)来构造和实现,过滤器暴露为IbaseFilter接口;过滤器针脚暴露为Ipin接口;过滤器图管理器暴露为IGraphBuilder接口等。DirectShow 中,数据流(Data Flow)都是依次流过各个 Filter 的。它对数据的管理也有自己的方法,而且并没有向用户提供一个统一的接口,供用户操作数据流7。这里本文用到了 DirectShow 提供给的接口 ISampleGrabber,并定义了一个供它回调的 CSampleGrabberCB 对象(继承 ISampleGrabberCB 接口) 。因为 DirectShow 中的数据存储是通过其 Sample 完成的,所以提取数据也需要通过 SampleGrabber。典型的 DirectShow 应用程序开发遵循了几个步骤:1)创建一个 Filter Graph Manager 实例,它通常通过 CoCreateInstance API 函数实现;2)通过 Filter Graph Manager 创建一个 Filter Graph ;3)对 Filter Graph 进行控制及对事件做出响应处理。捕捉窗口必须与捕捉设备连接起来之后才可以通过捕获窗口向捕获设备发送各种消息。视频捕获流程框图如图 3-2 所示: 15创建视频捕获窗口注册系统回调窗口获取有关视频捕获窗口的缺省设置设置捕获窗口相关函数获取视频采集设备的能力及状态信息设置捕获窗口的显示模式捕获图像到缓存并进行响应处理终止视频捕获并断开与视频采集设备的连接图图 3-2视频捕获流程框图视频捕获流程框图本设计实现该部分功能的具体步骤如下: 1. 建立 CSampleGrabberCB 对象。 class CSampleGrabberCB : public ISampleGrabberCB STDMETHODIMP BufferCB( double dblSampleTime, BYTE * pBuffer, long lBufferSize ) /Callback method that receives a pointer to the sample buffer. STDMETHODIMP SampleCB( double SampleTime, IMediaSample * pSample ) /Callback method that receives a pointer to the media sample. 16 2. 定义 ISampleGrabber 接口并初始化。CComPtr m_pGrabber;HRESULT hr;hr = m_pGrabber.CoCreateInstance( CLSID_SampleGrabber );if(FAILED(hr) /error action; 3. 定义 Grabber Filter,设置它的媒体类型,并将它加入 Graph 中。 CComQIPtr pGrabBase( m_pGrabber ); CMediaType VideoType; VideoType.SetType(&MEDIATYPE_Video); VideoType.SetSubtype(&MEDIASUBTYPE_RGB24); hr = m_pGrabber-SetMediaType(&VideoType); hr = pGraph-AddFilter(pGrabBase,LGrabber); 4. 设置回调(CallBack),使 Grabber 能够通过 BufferCB 自动完成采集数据。/ dont buffer the samples as they pass through/hr = m_pGrabber-SetBufferSamples( FALSE );/ only grab one at a time, stop stream after/ grabbing one sample/hr = m_pGrabber-SetOneShot( FALSE );/ set the callback, so we can grab the one sample/hr = m_pGrabber-SetCallback( &mCB, 1 ); /mCB 为 CSampleGrabber 对象 这样,在DirectShow数据流动过程中,mCB.bufferCB会自动执行,提取Graph中的数据。这也就完成了从内存中获取视频单帧。DirectShow 采用WDM 方式进行视频捕捉,因此在实现视频回放功能时,它直接把捕捉到的视频流从采集设备送到显示设备,数据流在核心模式下传输,减少了到用户模式的切换时间,使视频的实时性得到 17保证。3.2 单帧图像批量压缩算法的实现从信息论观点来看,图像作为一个信源,描述信源的数据是信息量(信源熵)和信息冗余量之和8。图像存在着空域冗余、时域冗余、光谱冗余和心理冗余等多种冗余信息,数据压缩实质上是减少这些冗余量,可见消除冗余可以减少数据量而不减少信源的信息量。虽然表示图像需要需求量的数据,但图像数据是高度相关的。一幅图像内部及视频序列中相邻图像之间有大量的冗余信息,主要表现为以下几种形式:1) 信息熵冗余:也称为编码冗余,指图像编码的单位数据量大于信息熵。由信息论的有关原理可知,作为图像数据的一个像素点,只要按其信息熵的大小分配相应比特数即可,然而对于实际图像数据的每个像素,很难得到它的信息熵,采用 PCM 方式数字化一幅图像时,对每个像素点是用相同的比特数表示,这样必然存在冗余。也就是说这种冗余度寓于信源符号的非等概率分布,编码时设法改变信源的概率分布使其尽可能的不均匀达到数据压缩的目的。2) 空间冗余:在同一幅图像中,规则物体或规则背景的表面物理特性具有相关性。这些相关性在相应的数字图像数据中表现为数据冗余,例如一幅图像的某一区域中的所有点(像素)有着相同的光强度、色彩以及饱和度,该区域的图像数据具有很大的冗余。相邻像素之间、行与行之间、条带之间都存在空间冗余。3) 结构冗余:在有些图像的部分区域内存在着非常强的纹理结构,或是图像的各个部分之间存在着某种关系,如自相似性等。例如草席、纺织物的图案。4) 时间冗余:前后两帧之间的相似性较大,尤其对监控摄像所得的视频,各帧间的差别极小。5) 知识冗余:有些图像中包含的信息与某些先验的基础知识有关,例如对于人脸图像,头、眼和嘴的相互位置等信息就是一些常识。6) 视觉冗余:在多数情况下,重建图像的最终接收者是人的眼睛,虽然人类的视觉系统到目前为止是世界上最好的图像处理系统,但它却非完美。为了达到较高的压缩比,可以利用人类视觉系统的特点。上述各种形式的冗余,是图像压缩编码基础。图像编码方法都是基于各种冗余信息和人类的视觉特性,而以尽量少的比特数表示和重建原始图像的。 183.2.1 JPEG 算法概要JPEG(Joint Photogrphic Experts Group)是一个由ISO和IEC两个组织机构联合组成的一个专家组,负责制定静态的数字图像数据压缩编码标准,这个专业组开发的算法称为JPEG算法,并且成为国际上通用的标准,因此又称为JPEG标准。JPEG是个适用范围广泛的静态图像数据压缩标准,既可用于灰度图像又可以用于彩色图像。JPEG标准用于连续色调、多级灰度、彩色/ 单色静态图像压缩,具有较高的压缩比,在压缩过程中的失真程度很小。目前使用范围广泛(特别是在Internet 网页中)。JPEG 将压缩算法分为两大类,即基于差分脉冲码调制无损压缩的基本部分和基于离散余弦变换的有损压缩的扩展部分9。基于差分脉冲码调制无损压缩算法,其压缩率非常低,对于中等复杂程度的彩色图像,仅约2:1的压缩比;而另一种基于离散余弦变换的有损压缩算法,进一步应用行程编码和熵编码,可以获得较为满意的压缩率,而当压缩率在2040倍时,人眼基本看不出失真,多媒体应用中主要采用该方法。3.2.2 JPEG 算法的主要步骤JPEG使用的颜色是YUV格式,因此,首先将RGB格式的图像转化为YUV格式(Y为亮度分量,U、V为色度分量)。用对Y、U、V分量分别进行运动估计和运动补偿来消除时域冗余,最后用某种变换编码来消除空域冗余。我们都知道,原始的彩色图像,一般由红、绿、蓝三种基本的图像组成,然而人的视觉系统对彩色色度的感觉和亮度敏感性是不同的。图像的主要信息包含在Y分量中,因而,Y的量化级别比U、V的量化级别多一些,即对Y分量采用细量化,对U、V才用粗量化,进一步提高压缩比。RGB格式与YUV格式之间的转化方式是:Y=0.299 R+0.587 G+0.114 B U =-0.1687 R-0.3313 G+ 0.5 B+128 (3-1) V =0.5 R-0.4187 G- 0.0813 B+128在转化为 YUV 格式后,将图像分割成若干 88 的点阵,并对每一点阵进行 DCT变换。DCT 是 JPEG 压缩编码的基础。因此先来介绍 DCT 变换的相关知识。DCT 变换是通过将图像矩阵变换到频域上使某些特定区域内的能量集中或系数矩阵的分布具有某些规律,这样便于下一步的处理10。经过 DCT 到频率域变换后, 19大部分能量都集中于低频部分,高频部分系数很多为零,而且代表不同频率分量之间的相关性大为减弱,仅利用几个低频部分系数就可以有效地恢复原图像,对于高频低能量的系数,可以允许较大的失真,甚至为零,这就是 DCT 变换编码的原理。常用的变换编码是先将整体图像或差值图像分成 NN 象素块,然后对 NN 象素块逐一进行 DCT 变换。由于大多数图像的高频分量较小,相应于图像高频成分的系数多数为零,加上人眼对高频成分的失真不太敏感,所以可用更粗的量化,因此传送变换系数所用的码率要大大小于传送图像象素所用的码率。到达接收端再通过反离散余弦变换恢复样值,虽然有一定的失真,但人眼是可以接受的。分割后的 88 图像的低频分量都集中在左上角,高频分量都分布在右下角(DCT 变换实际上是空间域的低通滤波器) 。由于低频分量包含了图像的主要信息(如亮度) ,而高频分量与之相比,就不那么重要了,所以可以忽略高频分量,从而达到压缩的目的,如何将高频分量去掉,这就需要用到量化,它是产生信息损失的根源。这里的量化操作,就是将某一个值除以量化表中对应的值。由于量化表左上角的值较小,右下角的值较大,这样就达到了保持低频分量、抑制高频分量的目的。经过 DCT 变换后,低频分量集中在左上角,其中第一行第一列代表了直流(DC)系数,即 88 子块的平均值,再对它单独编码。由于两个相邻的 88 子块的 DC 系数相差很小,所以对它们 DC 系数的差值进行编码,以提高压缩比。88 的其它 63 个元素是交流(AC)系数采用行程编码。为了保证低频分量先出现,高频分量后出现,以增加行程中 0 的个数,对这 63 个元素采用 Z 字型排序方法。1)二维离散余弦变换函数的二维离散余弦变换为:( , )f x y,0,1,21;x yxy 其中,为空域变量,、 N()C 为变换后为频D域变量,C T系数 代表象素数,一般 N=8,88 的二维数据块经 DCT 后变成 88 个变换系数,(3-2)11002 +12 +1( , )cos()cos()22()( ) ( )1( ),( )2( ),( )21NNxyxyf x yNCEEENENEE N -1 , N当当 20这些系数都有明确的物理意义:代表水平象素号,代表垂直象素号。如当=0,=0 时,C(0,0)是原 64 个样值的平均,相当于直流分量,随着,值增加,相应系数分别代表逐步增加的水平空间频率分量和垂直空间频率分量的大小。经 DCT 变换之后,C(0,0)是直流系数,其他为交流系数。如图 3-3 所示:( , )f x y81 DCT 变换 81 DCT 变换图图 3-3二维二维 DCT 变换方法变换方法2)量化和反量化 严格地说,DCT 本身并不能进行码率压缩,因为 64 个值仍然得到 64 个系数,为了达到压缩数据的目的,对 DCT 系数需作量化处理11。量化的作用是在保持一定质量前提下丢弃图像中对视觉效果影响不大的信息,量化是多对一映射,是造成DCT 编码信息损失的根源。可以按人眼的生理特征对低频分量和高频分量设置不同的量化步长,使大多数高频分量的系数变为零。一般来说,人眼对低频分量比较敏感,而对高频分俩功能不大敏感。因此对低频分量采用较细的量化,而对高频分量采用较粗的量化,即自适应量化。图像在经过 DCT 变换后,变换系数很多上一浮点数,将浮点型数表示的变换系数经过量化后变成整形数表示,有利于图形编码和计算机处理,而引入的量化误差是人眼很难察觉的,所以量化过程不仅仅是必要的,也是可行的。所谓自适应量化,即根据不同的要求,设置不同的量化等级,从而降低数码率12。一种常用的自适应量化方法是对于变换系数矩阵中的每个变换系数,分别乘以一个视觉加权系数,这一加权系数随着空间频率的增长而逐渐减少,其中直流系数的加权为 1。这样,对应于 88 的系数矩阵,有个 88 的加权矩阵,在对每个系数加权以后,再采用一个通用的量化器进行量化,这种量化的结果就是低频部分的量化步长较小,而高频部分的量化步长较大,实现了自适应量化的功能。对 64 个系数除以各自的量化步长并取整,得到量化系数,这个过程称为量化过程。垂直方向水平方向 21这里取整采用四舍五入。反量化则是在解码器中由量化系数恢复 DCT 系数的过程:通过对量化步长的设计,将人类的视觉特性结合进压缩的过程中,对于低频分量量化步长小一点,对于高频分量量化步长大一点,对于亮度分量和色度分量人眼的敏感程度不同,可以采用不同的量化步长。量化表是控制压缩比的关键,这个步骤除掉了一些高频量,损失了很多细节。但事实上人眼对高空间频率远没有低频敏感,所以处理后的视觉损失很小。另一个重要原因是所有的图片的点与点之间会有一个色彩过度的过程,大量的图像信息被包含在低空间频率中,经过量化处理后,在高空间频率段,将出现大量连续的零。3)量化系数的编码 量化后系数中将会出现很多的零,在行程编码中连续的零越多编码效率越高。为此,对量化系数进行如图 3-4 所示的 Z 型扫描示意图,以使大多出现在右下脚的零值能够连续起来。 图图 3-4Z 字扫描示意图字扫描示意图这样就把一个 88 的矩阵变成一个 164 的矢量,频率较低的系数放在矢量的顶部。图像块的第一个 DCT 变化系数是图像的直流系数(DC),其余的 63 个系数成为交流系数(AC)。对于 DC、AC 分量分别进行编码。相邻两个图像块的直流系数一般非常接近,而且对直流分量并不直接编码,而是利用差分编码的思想,对本块与前一块的直流分量之差,进行差值编码: (3-5)1(0,0)(0,0)(0,0)iiFFF(3-3)(3-4)()() ()FFS ( , )( , )0.5( , )FFINTS 22原直流分量 DC 的范围为-1024 到+1023,则 Diff 的动态范围是-2047 到+2047,由于动态范围大,相邻值的概率分布接近相同,根据 Huffman 码的原理,对出现概率大的值用短码,并使用修正 Huffman 编码方法,将 DC 值表示成(符号 1,符号2)的形式。其中符号 1 指示自然二进制码表示差值的有效位数,可以从下表 3-1 查得,符号 2 是实际的差值。表表 3-1DC 系数差值的熵编码结构系数差值的熵编码结构位数实际保存的值001-1,12-3,-2,2,33-7,-6,-5,-4,4,5,6,74-15,-8,8,155-31,-16,16,316-63,-32,32,637-127,-64,64,1278-255,-128,128,2559-511,-256,256,51110-1023,-512,512,102311-2047,-1024,1024,2047对 DC 进行 Huffman 编码时,符号 1 查表得到 Huffman 码。由于亮度和色度的DC 差值统计特性差别叫较大,所以采用两个 Huffman 码表。符号 2 直接存储其自然二进制码的有效位,负数用整数的反码表示,例如,3 存储“11” 。-3 存储“00” 。对 AC 系数的编码中,采用 对 0 系数的游程长度编码。63 个 AC 系数将以000X,000X,000X形式出现,其中 X 为非 0 值,若干个 0 和一个非 0 值 X 组成了一个编码基本单位,而其中的若干个 0,可以用游程即个数表示。于是将 AC 的一个编码基本单位表示位(游程,类别,非 0 值),进一步同样可以写成(符号 1,符号 2) 的形式。其中游程和类别各占 4 位,它们组合成符号 1,因此 0 游程的范围被限制在 0 15,若此后 23还有非 0 值并且己经出现了 16 个连 0,则应写成(15, 0)。类似于 DC 编码,类别表示了非 0 值的自然二进制码的有效位数,可以从表 3-2 查得,符号 2 是实际的非 0值的自然二进制码。表表 3-2AC 系数非系数非 0 0 值的嫡编码结构值的嫡编码结构位数实际保存的值001-1,12-3,-2,2,33-7,-6,-5,-4,4,5,6,74-15,-8,8,155-31,-16,16,316-63,-32,32,637-127,-64,64,1278-255,-128,128,2559-511,-256,256,51110-1023,-512,512,1023类似于 DC,对 AC 进行 Huffman 编码时,符号 1(一个字节)可以通过查表得到Huffman 码。仍然采用了两个 Huffman 码表分别对应了亮度和色度的编码。符号 2直接存储其自然二进制码的有效位,负数用整数的反码表示。在 JPEG 的标准中,Huffman 码表可以通过对图像的概率统计而创建,但也推荐了四个码表,分别是 DC 亮度、色度和 AC 亮度、色度,这四个表是对很多图像统计的结果,具有一定的普遍性。4)JPEG 算法流程JPEG 算法框图如图所示,压缩编码大致分成三个步骤:1) 正向离散余弦变换(forward discrete cosine transform,FDCT)把空间域表示的图像变换成频率表示的图像。2) 使用加权函数对 DCT 系数进行量化,这个加权函数对于人的视觉系统是最佳的。3) 使用霍夫曼可变字长编码器对量化系数进行编码。 24译码(如图 3-5)或者解压缩(如图 3-6)的过程与压缩编码过程正好相反。图图 3-5 DCT 基压缩编码步骤基压缩编码步骤图图 3-6 DCT 基压缩解码步骤基压缩解码步骤该部分程序核心代码见附录 3。3.3 视频合成视频合成技术离不开传统的独特的单帧存储技术,也就是说,对硬盘中视频素材的管理不是基于连续画面,而是针对每一帧画面。当然,这种存储方式对硬件有很高的要求13。随着高清电视(HDTV)和数字电视(DTV)技术的发展,对合成技术的质量提出了更高的要求,已经出现10bit量化比的采集。FDCT量化器熵编码器量化表熵编码表88 图像块源图像数据压缩图像数据DCT 基编码器基编码器量化表熵编码器逆量化器IDCT熵编码表压缩图像数据 25合成视频对象是构成视频图像序列的最小单位。一个视频序列可由多帧图像构成,每一帧图像可看成是一个合成视频对象14。由此可见,软件特技是以视频帧为单位,通过对每一帧即每一合成视频对象中的所有视频对象进行各种操作,实际上是对其包含的所有象素进行操作,对这些操作编程可实现各种特技效果15。视频序列合成过程如图3-7所示。多视频对象操作原始视频对象视频图像序列为多视频对象合成的合成视频对象为单视频对象合成的合成视频对象图图3-7视频序列合成过程视频序列合成过程视频对象的结构化特点使视频合成容易编程,它与目前广泛使用的面向对象编程语言中的对象概念非常相似。编程语言中的对象既包括数据又包括方法(操作),数据对应视频对象中的一些属性(如位置、大小、不透明度等),而方法对应视频对象中的各种操作,即各种合成函数。对象对外界的接口是合成函数,即通过调用合成函数完成对数据的修改。具有相同操作的视频对象可用一类函数描述,在面向对象编程语言中,类是对一组性质相同的对象的程序描述,在程序运行时类被用做样板建立对象,所以具有相同性质的对象可共用一组代码,只是它们各有自己的数据区,这样可提高代码的利用率。 在编辑软件中,不同的合成函数可看成不同的类,每一类中还包含数据和成员函数。合成函数有四种,即与时间有关的合成描述、表达式法、树形结构和顺序列表等4种合成函数表示方法。与时间有关的合成函数通用性最高。表达式法和树形结构具有相同的通用性,合成函数的表达式根据视频对象的不同其合成规律具有联合性、交换性和分配性, 根据这些过程我们可以重新构建合成过程树形结构是描述具有继承关系的合成函数的最佳方法, 而顺序列表是在多层叠加情况下,树形结构的简化 26形式,所以其通用性最低。在此,本设计采用的是树形结构。树形结构可用下图表示。图中每一终端节点代表一视频对象,每一内部节点代表一合成函数,该合成函数负责对其子节点上的视频对象合成。树形结构对单视频对象合成函数、多视频对象合成函数一样适用。树形结构的表达式为: (3-6)112245( , 3),(,)compVF G V V VG V V如图3-8所示,树形结构较直观、清楚地表示了视频对象的处理顺序,即不同顺序的执行过程,并与计算机数据结构中的树结构一致,便于计算机实现。F()G2()G3()V1V22V3V4V5图图3-8树形结构树形结构详细代码见附录下面的函数演示了如何将一个文件夹下面的所有bmp文件都合成为一个avi文件,函数的第一个参数是要生成的AVI的文件名,第二个参数是存放bmp文件的文件夹名,这个函数会枚举该文件夹下的所有bmp文件,合成一个AVI文件。 27第章 实验结果与讨论4.1 测试过程测试环境:硬件:PC 机,CPU:PM 1500MHz,RAM:512MB,USB 摄像头软件:Visual C+ 6.0,Microsoft DirectX 9.0,VFW测试时间:14:00p.m.-16:00 p.m.自然光照条件下测试:1) 视频捕获实验连接视频源,将所捕获的视频保存到系统所自动设置的路径:C:20075-28界面如下图所示: 图图 4-1视频捕获界面视频捕获界面 282) 批量压缩实验图像压缩一般是通过改变图像的表示方式来达到的,因此压缩和编码是分不开的,压缩编码的方法很多,本设计采用的是 JPEG 压缩编码标准,对所捕获的单帧位图图像.bmp 进行压缩。被测试的原始数据为被捕获的单帧图像,这幅图像一场的原始数据是 225KB,压缩后的文件大小是 7KB 左右,压缩比约为 30。如图 4-2图 4-2 是单帧捕获及压缩结果,保存路径为:C:20075-28,文件名从14-45-16.bmp 到 15-13-20.bmp 结束。第一组:原图 14-45-16.bmp(大小:225KB) 压缩后 14-45-16.jpg(大小:7.50KB)位置: C:20075-28 位置: C:20075-28大小: 225KB(230,454 字节) 大小: 7.50KB(7,684 字节)占用空间:225KB(233,472 字节)占用空间:8.00KB(8,192 字节)图图 4-2 第一组压缩结果第一组压缩结果 29第二组: 原图 14-45-17.bmp(大小:225KB) 压缩后 14-45-17.bmp(大小:6.82KB) 位置: C:20075-28 位置: C:20075-28大小: 225KB(230,454 字节) 大小: 6.82KB(6,988 字节)占用空间:225KB(233,472 字节)占用空间:8.00KB(8,192 字节)图图 4-3 第一组压缩结果第一组压缩结果第三组: 原图 14-45-18.bmp(大小:225KB) 压缩后 14-45-18.jpg(大小:6.08KB) 位置: C:20075-28 位置: C:20075-28大小: 225KB(230,454 字节) 大小: 6.08KB(6,231 字节)占用空间:225KB(233,472 字节)占用空间:8.00KB(8,192 字节)图图 4-4 第三组压缩结果第三组压缩结果 30实验分析:限于篇幅限制,在此仅给出三组压缩结果:从上面压缩前后的结果可以看出,压缩后的图片在质量上与原图基本上没有太大的差别,但是容量却大大减小了:第一组的压缩比为:30第二组的压缩比为:33第三组的压缩比为:37可见图像压缩的重要性。JPEG压缩既采用了有损压缩的方法,又采用了很多无损压缩的技术,博采各家之长,和相同画质的其他常用文件相比,JPEG是目前静态图像中压缩比最高的,正因为JPEG的高压缩比,使得它广泛应用于多媒体和网络程序中。JPEG基本系统的压缩比可以根据需要,通过线性地改变量化表使压缩率在8:1至100:1内进行选择,20:1是常用的压缩率。一般而言,对中等复杂程度的彩色图像,当原始图像采用每像素8bit编码压缩到每像素0.752bit时,恢复后的图像质量很好,可以满足绝大多数场合的应用,此时的压缩率为4:1至11:1。如果对图像质量要求不高,可压缩到每像素0.250.5bit,压缩率则变为16:1至32:1。由上面的实验结果可以看出,本次设计达到了实验的目标。但是,在 JPEG 中,离散余弦变换将图像压缩为 88 的小块,然后依次放入文件中,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息丢弃得越多。在极端情况下,JPEG 情况下,JPEG 图像只保留反映图像外貌的基本信息,精细的图像细节都损失了。3) 视频合成实验为了对 AVI 进行读写,微软提供了一套 API,总共 50 个函数,用途主要有两类,一个是 AVI 文件的操作,一类是数据流 streams 的操作。(1) 打开和关闭文件AVIFileOpen,AVIFileAddRef,AVIFileRelease(2) 从文件中读取文件信息 通过 AVIFileInfo 可以获取 AVI 文件的一些信息,这个函数返回一个AVIFILEINFO 结构,通过 AVIFileReadData 可以用来获取 AVIFileInfo 函数得不到的信息。 31(3) 写入文件信息 可以通过 AVIFileWriteData 函数来写入文件的一些额外信息。(4) 打开和关闭一个流 打开一个数据流就跟打开文件一样,你以通过 AVIFileGetStream 函数来打开一个数据流,这个函数创建了一个流的接口,然后在该接口中保存了一个句柄。 如果想操作文件的某一个单独的流,可以采用 AVIStreamOpenFromFile 函数,这个函数综合了 AVIFileOpen 和 AVIFileGetStream 函数。 如果想操作文件中的多个数据流,就要首先 AVIFileOpen,然后AVIFileGetStream。(5) 从流中读取数据和信息 AVIStreamInfo 函数可以获取数据的一些信息,该函数返回 AVISTREAMINFO结构,该结构包含了数据的类型压缩方法,建议的 buffersize,回放的 rate,以及一些 description。(6) 操作压缩的视频数据 如果要演示一祯或者几祯压缩视频图像时,可以调用 AVIStreamRead 函数,将获取的数据传递给 DrawDib 函数来显示图像。这些函数可以显示压缩和未压缩的图像。 AVIFile 也提供了一个函数 AVIStreamGetFrameOpen,来获取未压缩的视频祯,这个函数创建了内存来获取未压缩的数据。也可以通过 AVIStreamGetFrame函数来解压缩一个单独的视频祯。这个函数可以解压缩某一祯图像,然后将数据以一个 BIMAPINFOHEADER 结构返回。当你调用完 AVIStreamGetFrame 函数后,要调用 AVIStreamGetFrameClose 函数释放上一个函数申请的资源。(7) 根据已存在的数据流创建文件 可以用 AVISave 这个函数来 build 一个文件。这个函数可以创建一个文件,并且将指定的多个数据流按照指定的顺序写入文件,也可以通过 AVISaveV 函数来创建一个新的文件,调用 GetSaveFileNamePreview 函数来显示保存的对话框让用户选择保存的文件名。 通过 AVIMakeFileFromStreams 函数我们可以创建一个虚拟的文件句柄,其他的 AVI 函数可以通过这个虚拟的文件句柄来操作文件中的数据流,操作完毕要 32记得调用 AVIFileRelease 释放。4.2 测试结果软件的测试中,主要出现以下问题:1) 保存 BMP 位图时,写入文件的延迟较长。2) 播放视频文件,全屏播放时,分辨率较低,效果不太好。本系统所提供的功能,在测试中都能提供正确的执行结果。因为本系统实时性很强,所以单从几幅截图来看,效果不是很明显。 33总总 结结 作为多媒体技术的重要组成部分,图像压缩技术被广泛应用于图像存储和图像通信中。经过数十年的发展完善,形成了较为成熟理论,新的理论、新的算法不断被提出。然而,随着计算机网络、高清晰电视、无线上网等相关领域的飞速发展,压缩比更高、保真性更好以及满足一些特殊要求的图像压缩技术成为了极为紧迫的要求。本设计的基本目的是实现视频图像的压缩。在实现过程中也遇到了很多挑战,如从内存中获取实时视频帧,这就需要对视频采集和位图结构有足够的了解。视频数据的采集是整个应用的关键,根据应用的不同可以将视频帧采集到文件或采集的缓存直接加以处理。在远程监控的应用中需要实时地处理采集下来的帧数据,因此本设计采用了将视频数据采集到缓存的方式。它的优势是速度快,实时性强。在该课题中采用 JPEG 标准算法压缩主要是考虑了该算法己经很成熟,适合本系统。通过近三个月的努力,终于完成本设计,结论是可以满足课题的要求。1) 成功捕获视频单帧。 2) 实现了视频单帧的批量压缩。 3) 完成了视频监控的录放功能。4) 实现 JPG 到 AVI 的视频合成。其中视频采集、压缩、解压回放以及存储都取得了满意的效果。在查阅资料的时候,发现 real 公司有个实时传输系统-realserver 系统,该系统用来实时传输视频流和音频流,画面和声音流畅,效果好。它提供相关接口,如果能够通过调用这些接口,把 realserver 运翔到本系统里,则实时传输的问题将得到完美的解决。但是还有很多功能没有进行开发,但对于系统实现所涉及的主要关键技术都进行了研究和尝试,为剩余的工作奠定了基础。 另外,本主要存在以下的问题:1) 对 DirectShow 不熟悉,没有能实现 USB 摄像头或者视频采集设备的参数调节,例如,视频捕获窗口的大小、捕获的帧率。2) 单帧图像压缩时,有时候会出现“方块”效应。在高压缩比场合,JPEG 的 34重建图像在水平和垂自方向可能有晕圈、幻影,产生“方块”效应。让我们考察一下在 JPEG 标准中图像的压缩过程就可以找到答案,也有助于理解为什么小波变换方法没有这种缺陷。在 JPEG 基本系统中,首先把原始图像分成大小相等的像素块,然后对图像块进行离散余弦变换 DCT(像块的能量集中到少量的系数) ,再用基于人类视觉系统特性的矩阵对变换后得到的系数矩阵进行量化,从而大幅度地压缩了矩阵系数,同时也造成了损失。最后对量化后得到的矩阵系数进行无损熵编码。图像的重建过程是编码过程的逆过程。如果不分块或分块很大而进行 DCT 变换与量化,那么图像块中像素能量集中到少量的系数效果将变得不明显,即不利于对数据进行量化压缩,同时还使得计算复杂度增加。这样一种现象实际上是离散余弦变换 DCT 本身的特性所造成的。而小波变换是时间和频率的局域变换,能更加有效地提取信号和分析局部信号。具体就图像压缩而言,小波变换能在尽可能少的变换系数中既见树木又见森林:既能够抓住图像的长期低频趋势,又能够把握图像的瞬态高频现象。同时利用小波变换可以一次变换整幅图像而不必分块,在达到较高的压缩比时,也不会出现 JPEG 重建图像中的“方块“效应。本课题的设计能够满足课题的基本要求,但仍然有许多地方值得改进以提高性能,主要体现在以下几个方面:1) 文件存储路径可自由设置,方便用户。2) 可将目前的单路视频处理升级到多路视频,以扩大监控范围。因为使用单一摄像机的三维目标的跟踪研究还很缺乏,人体姿势和运动在单一视角下由于遮挡或深度影响而容易产生歧义现象,因此使用多摄像机进行三维姿势跟踪和恢复的优点是很明显的。同时,多摄像机的使用不仅可以扩大监视的有效范围,而且可以提供多个不同的方向视角以用于解决遮挡问题。3) 提供网络的支持,实现远程监控。 4) 音频与视觉相结合的多模态接口。目前音频和视频的信号处理相对独立,如何更好地集成音频和视频信息用于多模态用户接口是一个严峻的挑战。越来越多的视频压缩标准可以针对具体最终应用提供越来越高的压缩效率和越来越丰富的工具。每个视频编码算法都提供丰富的工具与功能选择,以平衡压缩效率的复杂性。工具和功能的选择是与特定应用和用例息息相关的重复过程。由于必须支持的编解码器数量的增多以及针对具体解决方案和应用而对编解码器进行优化 35的选择范围更为广泛,因此在数字视频系统中采用灵活的媒体处理器是大势所趋。致致 谢谢大学四年的学习生活即将结束,在本文撰写行将完成之际,首先请让我对给予我悉心指导和帮助的老师表示最衷心的感谢和最诚挚的敬意!她循循善诱的教导和不拘一格的思路给予我无尽的启迪。在学习上,她对我严格要求,同时又不遗余力教导我,使我真正学习到了知识,尤其是解决实际问题的能力得到了很大提高。同时李老师渊博的知识、敏锐的学术眼光、严谨的治学态度又使我由衷的敬佩。我要感谢学姐在百忙之中抽出宝贵时间来帮我修改这篇论文,还要感谢 6A313实验室的成员给我的关爱及建议。 当然在学习期间及撰写论文的时候同时也得到了很多同学及其他老师的热情帮助和关心,在此我向所有帮助过我的人致以衷心的感谢! 36参考文献参考文献1 黄贤武.数字图像处理与压缩编码技术J.电子科技大学出版社.2000: 7-9.2 Ralf Steinmetz, Klara Nahrstedt.多媒体技术:计算、通信和应用M.北京:清华大学出版社,2000.3 精英科技.视频压缩于音频编码技术M.北京:中国电力出版社,2002: 252-380.4 孟冰.主要视频压缩技术在中国内地市场发展分析J.中国集成电路.2006.10(89):62-72.5 郑鸿,陈青山,张文渊.DirectShow 的原理及其应用J.微型电脑开发应用.2001,17(8):41-62.6 张弛.一种基于Direct show 的实时运动监测系统的实现J.核电子学探测技术.2006,5(26): 679-682.7 胡涛,刘睿.利用DirectShow 技术实时捕捉视频流中的图像帧J.计算机应用.2003,23:211-213.8 王汇源.数字图像通信原理与技术M.北京:国防工业出版社.2000,9: 74-78.9 Kuo-Liang Chung and Wen-Ming Yan. Fast 2D discrete cosine transform on compressed image in restricted quadtree and shading format J. Information Processing Letters, 2002, 81(1)16: 13-21.10 B. G. Sherlock and Y. P. Kakad. Transform domain technique for windowing the DCT and DSTJ,Journal of the Franklin Institute.2002, 339(1): 111-120.11 Richard Romano,New ISO Standard Aims to Improve JPEG Format for the New MillenniumN,Micro Publishing 2000.12 成海.JPEG、MPEG标准简介J.太原师范学院学报(自然科学版).2006,5: 33-36.13 杨冰,李梦君,张茂军,李云浩,吴玲达. 虚拟空间会议系统中视频合成技术的研究与实现J.小型微型计算机系统.2001,22(6): 683-686.14 Jiangjian,Xiao.Cen Rao.Mubarak Shah.View Interpolation for Dynamic Scenes C. EUROGRAPH ICS 2002,Saarbrcken,Germany,2002.15 赵蔚,郭树旭.视频合成函数的表示方法J.吉林大学自然科学学报. 2000, 1(1): 71-74. 37附录附录 1 1(视频捕获):void CMotionDetectionDlg:OnButtonSavetoAVI() / TODO: Add your control notification handler code here GetDlgItem( IDC_BUTTON_SAVETOAVI )-EnableWindow( FALSE );GetDlgItem( IDC_BUTTON_STOPSAVE )-EnableWindow( TRUE );ClearGraphs( ); SYSTEMTIME st; /Get SystemTimeCString CapDir; CString strTime;GetLocalTime(&st);strTime.Format(%d-%d-%d,st.wHour,st.wMinute,st.wSecond); GetDlgItemText( IDC_CAPDIR, CapDir ); / Determine AVI filename TCHAR szFilenameMAX_PATH, szFileMAX_PATH; wsprintf( szFilename, TEXT(%s%s.avi0), (LPCTSTR) CapDir, strTime ); wsprintf( szFile, TEXT(%s.avi0), strTime );SetDlgItemText( IDC_SNAPNAME, szFile ); / start capturing, show playing button / ClearGraphs( ); InitCaptureGraph( szFilename );SysLog(3); 38附录附录 2 2(视频单帧捕获):void CMotionDetectionDlg:OnButtonSavetoBMP() / TODO: Add your control notification handler code hereCString CapDir; GetDlgItemText( IDC_CAPDIR, CapDir ); _tcsncpy( mCB.m_szCapDir, CapDir, NUMELMS(mCB.m_szCapDir) );/ g_bOneShot = TRUE;g_bEnableSave = TRUE;SysLog(5);附录附录 3 3(批量压缩单帧图像)typedef bool(_stdcall CHANGE)(char *,char *);void CCompessDlg:OnButton1() /打开要压缩的文件/ TODO: Add your control notification handler code hereCFileDialog dlg(TRUE,bmp,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,Bmp File(*.bmp)|*.bmp|);if(dlg.DoModal()=IDOK)m_strBmp = dlg.GetPathName();UpdateData(FALSE);void CCompessDlg:OnButton2()/设置压缩后的文件路径 39/ TODO: Add your control notification handler code hereCFileDialog dlg(FALSE,jpg,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,Jpg File(*.jpg)|*.jpg|);if(dlg.DoModal()=IDOK)m_
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:DZ289 图象压缩编码研究
链接地址:https://www.renrendoc.com/p-511760.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!