基于JPG标准的图像压缩的设计与实现
无需注册登录,支付后按照提示操作即可获取该资料.
摘要
本论文主要介绍了JPEG的编码和解码过程。该程序的编码部分能把一张BMP格式的图象进行JEPG编码,压缩成以二进制形式保存的文件;通过相应的解码程序又可以把图象解压缩出来。在图象传送过程中,我们经常采用JPEG格式对静态图象进行编码。JPEG基本系统是一种有损编码,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。JPEG编码先把图象色彩RBG变成亮度Y和色度Cr、Cb,它利用人的视觉对色度不敏感的特点,减少一部分色度数据,以达到压缩。
JPEG采取多种编码方式,包含有行程编码(Run Length Coding)和哈夫曼(Huffman)编码,有很高的压缩比。在编码前,先对数据进行分块,离散余弦变换(DCT)及量化,保留能量大的低频信号,丢弃高频信号以达到压缩。解码时,进行熵解码,反量化,反离散余弦变换(IDCT)。(论文所有权:爱毕业设计网www.2bysj.cn)
关键字:JPEG;有损压缩;行程编码;哈夫曼编码
Abstract
This paper introduces the encoding and decoding of JPEG and the specific realization of program on VC++ platform. The encoding part of this program can encode a picture whose format is BMP and save relevant data as binary system. The decoding program can decode the compression data and reconstruct the origin image. While conveying pictures we often encode still pictures into the style of JPEG. JPEG is of lossy compression which can not recover all the image data, some data are losed. Although we refer to non-lossy compression, however, the compression ratio of lossy compression( the times that data bytes before compression to that after compression )is bigger than that of non-lossy compression. JPEG encoding translate image color from RBG to luminance Y and chroma Cr、Cb. Because people’ eyes are less sensitive to chroma comparing with luminance , some of chroma data are abandoned to reduce data size.
JPEG envolves some kinds of ways of encoding including Run Length Coding and Huffman Coding, so it has high compression ratio. Before Coding ,we divide data into blocks , DCT and quantify each block. The low-frequency signals that have more energy are maintained and others are rejected . While decoding , data stream are readed , decoded , inverse-quantified and then IDCT .
Keywords: JPEG;lossy compression;Run Length Coding;Huffman Code
研究的动机和目的
信息时代,人们对使用计算机获取信息、处理信息的依赖性越来越高。计算机系统面临的是数值、文字、语言、音乐、图形、动画、静图像、电视视频图像等多种媒体。数字化的视频和音频信号的数量之大是惊人的,对于电视画面的分辨率640×480的彩色图像,30帧/s,则一秒钟的数据量为:640×480×24×30=221.12M,所以播放时,需要221Mbps的通信回路。存储时,1张CD可存640M,则仅可以存放 2.89s的数据。(论文所有权:爱毕业设计网www.2bysj.cn)
大数据量的图像信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。
图像压缩
压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。这个本质的东西就是信息量(即不确定因素)。
压缩可分为两大类:第一类压缩过程是可逆的,也就是说,从压缩后的图象能够完全恢复出原来的图象,信息没有任何丢失,称为无损压缩;第二类压缩过程是不可逆的,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。选择哪一类压缩,要折中考虑,尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。
图象压缩一般通过改变图象的表示方式来达到,因此压缩和编码是分不开的。图象压缩的主要应用是图象信息的传输和存储,可广泛地应用于广播电视、电视会议、计算机通讯、传真、多媒体系统、医学图象、卫星图象等领域。
压缩编码的方法有很多,主要分成以下四大类:(1)象素编码;(2)预测编码;(3)变换编码;(4)其它方法。
所谓象素编码是指,编码时对每个象素单独处理,不考虑象素之间的相关性。在象素编码中常用的几种方法有:(1)脉冲编码调制(Pulse Code Modulation,简称PCM);(2)熵编码(Entropy Coding);(3)行程编码(Run Length Coding);(4)位平面编码(Bit Plane Coding)。其中我们要介绍的是熵编码中的哈夫曼(Huffman)编码和行程编码(以读取.PCX文件为例)。
在图像压缩系统设计过程中,系统的各项功能是分为一个一个的模块来实现的,多个模块都要用到的公共程序段,我们用公共函数的形式来做,这样,在整个系统中,模块之间看起来是相互独立的,有利于以后对系统的扩展,而彼此之间又有联系,尽可能使程序简洁又能够符合结构化程序设计的标准。(论文所有权:爱毕业设计网www.2bysj.cn)
代码设计
代码设计问题是一个科学管理的问题。设计出一个好的代码方案对于系统的开发工作是一件极为有利的事情。它可以使很多机器处理(如某些统计、查询等)变得十分方便,另外还把一些现阶段计算机很难处理的工作变成简单的处理。
代码就是以数或字符来代表各种客观实体。在系统开发过程中设计代码的目的是:
1) 唯一化
在现实世界中,有很多东西如果不加标识是无法区分的,这时机器处理就十分困难。所以能否将原来不确定的东西,唯一地加以标识是编制代码的首要任务。最简单,最常见的例子就是编号,在管理中不难发现,人的姓名不管在一个多么小的单位里都很难避免重名。为了避免二义性,唯一地标识每一个人,因此编制了代码。
2) 规范化
唯一化虽是代码设计的首要任务。但如果仅仅为了唯一化来编制代码,那么代码编出来后可能是杂乱无章、无法辨认,而且使用起来也不方便。所以在唯一化的前提下还要强调编码的规范化。例如,纺织系统关于纺织工业产品标准编码的规定,以“2”打头表示纯毛类产品,其中“21”表示纯毛哔叽产品,“22”表示纯毛华达呢类产品,“24”表示纯毛花呢类产品等。这样在查找或统计某一类产品时就十分方便了。
3) 系统化
系统所用代码应尽量标准化。在实际工作中,一般企业所用大部分编码都有国家或行业标准。例如,在会计领域中,一级会计科目由国家财政部进行标准分类,二级科目由各部委或行业协会统一进行标准分类,而企业则只能对其会计业务中的明细账目,即对三,四级科目进行分类,并且这个分类还必须参照一、二级科目的规律进行。又如在产成品和商品中各行业都有其标准分类方法,所有企业必须执行。另外一些需要企业自行编码的内容,例如生产任务码、生产工艺码、零部件码等,都应该参照其它标准化分类和编码的形式来进行。
目录
摘要 I
Abstract II
第一章 绪论 1
1.1 研究的动机和目的 1
1.2 研究的背景 1
1.3 研究内容 2
1.4 系统原理 2
1.4.1 色彩模型 2
1.4.2 DCT (离散余弦变换) 3
1.4.3排列 DCT 结果 4
1.4.4 量化 4
1.4.5 huffman 编码 5
1.5 可行性研究 7
1.5.1经济可行性 7
1.5.2 技术可行性 7
1.5.3 运行可行性 7
第二章 图像压缩理论基础及开发流程 8
2.1 图像压缩 8
2.2 JPEG 9
2.3 离散余弦变换 9
2.4 图像的量化 10
2.5 游程编码 12
2.6 哈夫曼编码 12
2.7 系统开发理论流程 14
2.7.1 颜色转换及采样 14
2.7.2 二维DCT变换 14
2.7.3 量化 14
2.7.4 游程编码,ZIGZAG扫描 15
2.7.5 哈夫曼编码 15
第三章 需求分析 16
3.1 需求分析的任务 16
3.2 系统功能分析 16
3.3 系统需求分析的步骤 16
3.4 系统功能模块设计 16
第四章 总体设计 17
4.1 系统设计的原则 17
4.2 设计目标 17
4.3 系统开发平台 17
4.3.1 软件配置 17
4.3.2 硬件配置 18
4.4 系统开发方法及技术路线 18
(论文所有权:爱毕业设计网www.2bysj.cn)
第五章 详细设计 20
5.1 代码设计 20
5.1.1 程序列表 21
5.2 公共模块(Module)设计 25
5.3 各模块的功能介绍 25
5.3.1各菜单功能 25
5.4 软件演示 25
第六章 测试与维护 30
6.1 测试 30
6.2 维护 30
总结 31
参考文献 32
致谢 33
附录 用户手册 34
1.1 系统概述 34
1.2 运行环境 34
1.3 使用说明 34
1.4 系统的遗留问题 34