视频图象压缩编码研究.doc_第1页
视频图象压缩编码研究.doc_第2页
视频图象压缩编码研究.doc_第3页
视频图象压缩编码研究.doc_第4页
视频图象压缩编码研究.doc_第5页
免费预览已结束,剩余43页可下载查看

下载本文档

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

文档简介

毕业设计 论文 毕业设计 论文 题目名称 题目名称 视频图象压缩编码研究 年年 级 级 本科本科 专科专科 学生学号 学生学号 学生姓名 学生姓名 指导教师 指导教师 学生单位 学生单位 技术职称 技术职称 学生专业 学生专业 教师单位 信息工程学院教师单位 信息工程学院 I 视频图像压缩编码研究 摘要 多媒体文件数据量很大 如果不对其进行压缩 会给计算机的存储和传送带 来很大困难 从而影响多媒体文件的使用和流通 在视频监视系统中 采用有效的 压缩方法可以提高监控的实时性和有效性 本文讨论了当前视频编码关键技术的研 究进展 并对以往的视频压缩方法进行了回顾和总结 在此基础上设计了一个视频 图像压缩系统 该系统采用DirectShow技术实现对实时视频流的捕获和预览 而且 能够自动保存为BMP图像 再利用JPEG编码标准对所捕获单帧图像进行批量压缩 得到高质量 高压缩比的视频图像 并实现视频流的存储和回放 最后用树形结构 实现视频的再次合成 本设计采用的方法有效提高了视频图像的采集速度和质量 在安防系统 视频会议等领域有广阔的应用前景 关键词 视频图像 DirectShow 视频捕获 视频合成 II Research on Video Image Compression Coding Abstract 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 章 绪论 1 1 1 选题的背景和意义 1 1 2 视频图像压缩技术及其发展现状 1 1 3 视频压缩编码的应用 3 1 4 本文研究内容 4 第 2 章 系统总体描述 5 2 1 系统方案设计 5 2 1 1 系统的输入设计 6 2 1 2 系统的输出设计 7 2 1 3 系统功能结构 7 2 2 系统工作流程 8 2 3 界面设计 9 2 4 非功能性需求 10 2 5 术语表 11 2 6 系统约束 11 第 3 章 各部分模块的设计 12 3 1 实时视频流的获取 12 3 1 1 DirectShow 概述 12 3 1 2 DirectShow 工作的架构体系 12 3 2 单帧图像批量压缩算法的实现 17 3 2 1 JPEG 算法概要 18 3 2 2 JPEG 算法的主要步骤 18 3 3 视频合成 24 第 4 章 实验结果与讨论 27 4 1 测试过程 27 4 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 Video Characteristic description application JPEG or JPEG2000For Still Image JPEG and JPEG2000 utilize different compression algorithm DBS M JPEGFor Video Just be consist of the continuous JPEG images PC CAM Security etc MPEG1For VideoThe MPEG organization defineVCD etc 3 表表1 1 MPEG2For Video The MPEG organization define the standard for DVD DVB application DVD DVB and security MPEG4For Video The MPEG organization define the standard for Internet application Security VOD IPTV PMP etc H 261For Video ITU define the standard for basic internet multimedia application Security vi deo Conference etc H 263For Video ITU define the standard for low bandwidth internet multimedia application Security video conference H 264For Video Next generation standard more compression efficiency IPTV Security multimedia WMV9For Video Defined by the Microsoft next generation standard IPTV VOD AVS1 0For VideoChina own patent standard 随着视频压缩技术的不断发展 以前一些主流的压缩格式也逐渐淡出了市场的 角逐 普遍限制在一些能够发挥标准本身特质的市场范围内 通过时间和市场实践 的验证 这些压缩标准的优势逐渐显现 缺点也随之暴露出来 人们对于高性能的 不断追求促使新的标准诞生 1 3 视频压缩编码的应用 欧洲 1991 年就开始了常规的数字电视广播 DVB 的研究 DVB 亦采用 MPEG 2 的压缩编码技术 对应不同媒体的传输制定了相应的 DVB 标准 4 在 1995 年以前 我国主要用模拟技术通过卫星传送电视节目 91 年在 亚洲 1 号 C 波段转发器上采用 MUSICAM 技术向位于全国各地的若干卫星收转站传送 中央 30 路声音广播节目 1995 年 11 月 中央电视台率先开始进行数字卫星广播 比国外仅仅晚了一年左右的时间 中央电视台采用了美国 GI 公司的 Digicipher I 技术 租用一个卫星转发器 向全国传送体育 电影等 5 套数字压缩的常规清晰度 电视节目 1996 年 5 月 中央电视台改用 Digicipher II 方式 租用 亚卫 2 号 上的一个 Ku 波段转发器 传送的节目已达 7 套 质量相当于 MPEG 2 的水平 1997 年 1 月 河南 广东 广西等十个省 区 电视台开始采用 DVB S 方式进行数 字卫星广播 采用单路载波方式 在传送电视节目的同时 还传送当地省广播电台 的广播信号 到 1999 年初 全国已经有 29 个省级电视台采用了 DVB S 方式进行 数字卫星广播 3 同时 HDTV 已作为 95 国家重点开发项目而列入整体规划 常规数字电视的地面广播 DVB T 及有线电视传送 DVB C 将同样有着无限广 阔的发展前景 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 Control Camera Transport 显示层 UI Package 应用层 Application Package Consumer Submit 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 断开视频源 更新日志 视频合成 单帧图像批量压缩 10 5 视频合成 对压缩后的单帧图像重新合成为视频文件 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 VC M 编解码 器 文件系统 DirectDra w DirectSound内核流框架 WDM 采集 设备 VFW 采集设 备 MPEG2 硬 件解码器 声卡显卡 文件系统 因特网 DirectShow 命令事件 图图3 1 DirectShow系统的结构图系统的结构图 图中央最大的一块即是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 VideoType SetSubtype hr m pGrabber SetMediaType hr pGraph AddFilter pGrabBase L Grabber 4 设置回调 CallBack 使 Grabber 能够通过 BufferCB 自动完成采集数据 don t 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 为 CSampleGrabber 对象 这样 在DirectShow数据流动过程中 mCB bufferCB会自动执行 提取Graph中 的数据 这也就完成了从内存中获取视频单帧 DirectShow 采用WDM 方式进行视 频捕捉 因此在实现视频回放功能时 它直接把捕捉到的视频流从采集设备送到显示 设备 数据流在核心模式下传输 减少了到用户模式的切换时间 使视频的实时性得到 17 保证 3 2 单帧图像批量压缩算法的实现 从信息论观点来看 图像作为一个信源 描述信源的数据是信息量 信源熵 和信息冗余量之和 8 图像存在着空域冗余 时域冗余 光谱冗余和心理冗余等多 种冗余信息 数据压缩实质上是减少这些冗余量 可见消除冗余可以减少数据量而 不减少信源的信息量 虽然表示图像需要需求量的数据 但图像数据是高度相关的 一幅图像内部及视 频序列中相邻图像之间有大量的冗余信息 主要表现为以下几种形式 1 信息熵冗余 也称为编码冗余 指图像编码的单位数据量大于信息熵 由 信息论的有关原理可知 作为图像数据的一个像素点 只要按其信息熵的大小分配 相应比特数即可 然而对于实际图像数据的每个像素 很难得到它的信息熵 采用 PCM 方式数字化一幅图像时 对每个像素点是用相同的比特数表示 这样必然存在 冗余 也就是说这种冗余度寓于信源符号的非等概率分布 编码时设法改变信源的 概率分布使其尽可能的不均匀达到数据压缩的目的 2 空间冗余 在同一幅图像中 规则物体或规则背景的表面物理特性具有相 关性 这些相关性在相应的数字图像数据中表现为数据冗余 例如一幅图像的某一 区域中的所有点 像素 有着相同的光强度 色彩以及饱和度 该区域的图像数据 具有很大的冗余 相邻像素之间 行与行之间 条带之间都存在空间冗余 3 结构冗余 在有些图像的部分区域内存在着非常强的纹理结构 或是图像 的各个部分之间存在着某种关系 如自相似性等 例如草席 纺织物的图案 4 时间冗余 前后两帧之间的相似性较大 尤其对监控摄像所得的视频 各 帧间的差别极小 5 知识冗余 有些图像中包含的信息与某些先验的基础知识有关 例如对于 人脸图像 头 眼和嘴的相互位置等信息就是一些常识 6 视觉冗余 在多数情况下 重建图像的最终接收者是人的眼睛 虽然人类 的视觉系统到目前为止是世界上最好的图像处理系统 但它却非完美 为了达到较 高的压缩比 可以利用人类视觉系统的特点 上述各种形式的冗余 是图像压缩编码基础 图像编码方法都是基于各种冗余 信息和人类的视觉特性 而以尽量少的比特数表示和重建原始图像的 18 3 2 1 JPEG 算法概要 JPEG Joint Photogrphic Experts Group 是一个由ISO和IEC两个组织机构联合组成 的一个专家组 负责制定静态的数字图像数据压缩编码标准 这个专业组开发的算 法称为JPEG算法 并且成为国际上通用的标准 因此又称为JPEG标准 JPEG是个 适用范围广泛的静态图像数据压缩标准 既可用于灰度图像又可以用于彩色图像 JPEG标准用于连续色调 多级灰度 彩色 单色静态图像压缩 具有较高的压缩比 在压缩过程中的失真程度很小 目前使用范围广泛 特别是在Internet 网页中 JPEG 将压缩算法分为两大类 即基于差分脉冲码调制无损压缩的基本部分和 基于离散余弦变换的有损压缩的扩展部分 9 基于差分脉冲码调制无损压缩算法 其压缩率非常低 对于中等复杂程度的彩色图像 仅约2 1的压缩比 而另一种基 于离散余弦变换的有损压缩算法 进一步应用行程编码和熵编码 可以获得较为满 意的压缩率 而当压缩率在20 40倍时 人眼基本看不出失真 多媒体应用中主要 采用该方法 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 格式后 将图像分割成若干 8 8 的点阵 并对每一点阵进行 DCT 变换 DCT 是 JPEG 压缩编码的基础 因此先来介绍 DCT 变换的相关知识 DCT 变换是通过将图像矩阵变换到频域上使某些特定区域内的能量集中或系数 矩阵的分布具有某些规律 这样便于下一步的处理 10 经过 DCT 到频率域变换后 19 大部分能量都集中于低频部分 高频部分系数很多为零 而且代表不同频率分量之 间的相关性大为减弱 仅利用几个低频部分系数就可以有效地恢复原图像 对于高 频低能量的系数 可以允许较大的失真 甚至为零 这就是 DCT 变换编码的原理 常用的变换编码是先将整体图像或差值图像分成 N N 象素块 然后对 N N 象 素块逐一进行 DCT 变换 由于大多数图像的高频分量较小 相应于图像高频成分的 系数多数为零 加上人眼对高频成分的失真不太敏感 所以可用更粗的量化 因此 传送变换系数所用的码率要大大小于传送图像象素所用的码率 到达接收端再通过 反离散余弦变换恢复样值 虽然有一定的失真 但人眼是可以接受的 分割后的 8 8 图像的低频分量都集中在左上角 高频分量都分布在右下角 DCT 变换实际上是空间域的低通滤波器 由于低频分量包含了图像的主要信息 如亮度 而高频分量与之相比 就不那么重要了 所以可以忽略高频分量 从而 达到压缩的目的 如何将高频分量去掉 这就需要用到量化 它是产生信息损失的 根源 这里的量化操作 就是将某一个值除以量化表中对应的值 由于量化表左上 角的值较小 右下角的值较大 这样就达到了保持低频分量 抑制高频分量的目的 经过 DCT 变换后 低频分量集中在左上角 其中第一行第一列代表了直流 DC 系数 即 8 8 子块的平均值 再对它单独编码 由于两个相邻的 8 8 子块的 DC 系数相差 很小 所以对它们 DC 系数的差值进行编码 以提高压缩比 8 8 的其它 63 个元素 是交流 AC 系数采用行程编码 为了保证低频分量先出现 高频分量后出现 以增 加行程中 0 的个数 对这 63 个元素采用 Z 字型排序方法 1 二维离散余弦变换 函数的二维离散余弦变换为 f x y 0 1 21 x yxy 其中 为空域变量 N C 为变换后为频D域变量 C T系数 代表象素数 一般 N 8 8 8 的二维数据块经 DCT 后变成 8 8 个变换系数 3 2 11 00 2 12 1 cos cos 2 2 1 2 2 1 NN xy xy f x y N CE E E N E N E E N 1 N 当 当 20 这些系数都有明确的物理意义 代表水平象素号 代表垂直象素号 如当 0 0 时 C 0 0 是原 64 个样值的平均 相当于直流分量 随着 值增加 相应 系数分别代表逐步增加的水平空间频率分量和垂直空间频率分量的大小 经 DCT 变换之后 C 0 0 是直流系数 其他为交流系数 如图 3 3 所示 f x y 8 1 DCT 变换 8 1 DCT 变换 图图 3 3 二维二维 DCT 变换方法变换方法 2 量化和反量化 严格地说 DCT 本身并不能进行码率压缩 因为 64 个值仍然得到 64 个系数 为了达到压缩数据的目的 对 DCT 系数需作量化处理 11 量化的作用是在保持一定 质量前提下丢弃图像中对视觉效果影响不大的信息 量化是多对一映射 是造成 DCT 编码信息损失的根源 可以按人眼的生理特征对低频分量和高频分量设置不同 的量化步长 使大多数高频分量的系数变为零 一般来说 人眼对低频分量比较敏 感 而对高频分俩功能不大敏感 因此对低频分量采用较细的量化 而对高频分量 采用较粗的量化 即自适应量化 图像在经过 DCT 变换后 变换系数很多上一浮点数 将浮点型数表示的变换系 数经过量化后变成整形数表示 有利于图形编码和计算机处理 而引入的量化误差 是人眼很难察觉的 所以量化过程不仅仅是必要的 也是可行的 所谓自适应量化 即根据不同的要求 设置不同的量化等级 从而降低数码率 12 一种常用的自适应量化方法是对于变换系数矩阵中的每个变换系数 分别乘以 一个视觉加权系数 这一加权系数随着空间频率的增长而逐渐减少 其中直流系数 的加权为 1 这样 对应于 8 8 的系数矩阵 有个 8 8 的加权矩阵 在对每个系数 加权以后 再采用一个通用的量化器进行量化 这种量化的结果就是低频部分的量 化步长较小 而高频部分的量化步长较大 实现了自适应量化的功能 对 64 个系数除以各自的量化步长并取整 得到量化系数 这个过程称为量化过 程 垂直方向水平方向 21 这里取整采用四舍五入 反量化则是在解码器中由量化系数恢复 DCT 系数的过程 通过对量化步长的设计 将人类的视觉特性结合进压缩的过程中 对于低频分量量 化步长小一点 对于高频分量量化步长大一点 对于亮度分量和色度分量人眼的敏 感程度不同 可以采用不同的量化步长 量化表是控制压缩比的关键 这个步骤除 掉了一些高频量 损失了很多细节 但事实上人眼对高空间频率远没有低频敏感 所以处理后的视觉损失很小 另一个重要原因是所有的图片的点与点之间会有一个 色彩过度的过程 大量的图像信息被包含在低空间频率中 经过量化处理后 在高 空间频率段 将出现大量连续的零 3 量化系数的编码 量化后系数中将会出现很多的零 在行程编码中连续的零越多编码效率越高 为此 对量化系数进行如图 3 4 所示的 Z 型扫描示意图 以使大多出现在右下脚的 零值能够连续起来 图图 3 4 Z 字扫描示意图字扫描示意图 这样就把一个 8 8 的矩阵变成一个 1 64 的矢量 频率较低的系数放在矢量的 顶部 图像块的第一个 DCT 变化系数是图像的直流系数 DC 其余的 63 个系数成为 交流系数 AC 对于 DC AC 分量分别进行编码 相邻两个图像块的直流系数一般 非常接近 而且对直流分量并不直接编码 而是利用差分编码的思想 对本块与前 一块的直流分量之差 进行差值编码 3 5 1 0 0 0 0 0 0 ii F FF 3 3 3 4 FFS 0 5 F FINT S 22 原直流分量 DC 的范围为 1024 到 1023 则 Diff 的动态范围是 2047 到 2047 由于动态范围大 相邻值的概率分布接近相同 根据 Huffman 码的原理 对出现概 率大的值用短码 并使用修正 Huffman 编码方法 将 DC 值表示成 符号 1 符号 2 的形式 其中符号 1 指示自然二进制码表示差值的有效位数 可以从下表 3 1 查 得 符号 2 是实际的差值 表表 3 1 DC 系数差值的熵编码结构系数差值的熵编码结构 位数实际保存的值 00 1 1 1 2 3 2 2 3 3 7 6 5 4 4 5 6 7 4 15 8 8 15 5 31 16 16 31 6 63 32 32 63 7 127 64 64 127 8 255 128 128 255 9 511 256 256 511 10 1023 512 512 1023 11 2047 1024 1024 2047 对 DC 进行 Huffman 编码时 符号 1 查表得到 Huffman 码 由于亮度和色度的 DC 差值统计特性差别叫较大 所以采用两个 Huffman 码表 符号 2 直接存储其自 然二进制码的有效位 负数用整数的反码表示 例如 3 存储 11 3 存储 00 对 AC 系数的编码中 采用 对 0 系数的游程长度编码 63 个 AC 系数将以 00 0X 00 0X 00 0X 形式出现 其中 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 2 AC 系数非系数非 0 0 值的嫡编码结构值的嫡编码结构 位数实际保存的值 00 1 1 1 2 3 2 2 3 3 7 6 5 4 4 5 6 7 4 15 8 8 15 5 31 16 16 31 6 63 32 32 63 7 127 64 64 127 8 255 128 128 255 9 511 256 256 511 10 1023 512 512 1023 类似于 DC 对 AC 进行 Huffman 编码时 符号 1 一个字节 可以通过查表得到 Huffman 码 仍然采用了两个 Huffman 码表分别对应了亮度和色度的

温馨提示

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

评论

0/150

提交评论