毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

VC++基于JPG标准的图像压缩算法+代码+论文 第8页

更新时间:2009-3-28:  来源:毕业论文
基于JPG标准的图像压缩算法+代码+论文
需求分析
3.1 需求分析的任务
通过需求分析要确立软件设计的任务,即系统要实现的功能,进而划分出实现特定功能的模块。然后将其有机的结合起来,即构成了可以实现特定功能的目标系统。
3.2 系统功能分析
1)从BMP格式图像的文件中(未压缩)读出图像,并能显示。
2)将BMP图像数据以JPEG标准压缩,保存为*.JPG文件。
3)要求能读出jpg文件,并显示在界面上。
3.3 系统需求分析的步骤
1)需求获取:由于社会的发展对时间和空间的追求,需要对在信息交流中扮演重要角色的图像进行压缩。
2)需求提炼, 分析建模:即建立常用的控制流图、状态转换图、类对象关系及行为图。
3)需求描述:编写SRS-软件需求规格说明书。
4)需求验证。
3.4 系统功能模块设计
根据系统功能的要求,可将系统分解成几个功能模块来分别设计,功能流程图如下。JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也正是JPEG有高压缩比的原因。其编码器的流程如下。
 
图3-1    JPEG编码器流程

第四章  总体设计
经过需求分析的工作系统必须“做什么”已经清楚了,现在是解决“怎样做”的问题的时候了。总体设计的基本目标是回答“概括的说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后的设计中。总体设计阶段的另一项重要任务是设计软件的结构,也就是确定系统中每个程序是有哪些模块组成的,以及这些模块的相互关系。总体设计过程首先寻找实现目标系统的不同方案,需求分析阶段得到的数据流图是设想各种方案的基础。然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本、效益分析,并且制定实现这个方案的进度计划。分析员应该综合分析比较这些合理的方案,从中选择一个最佳的方案向用户和使用部门负责人推荐。如果用户的使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计的软件结构,通常,设计出的初步软件结构后还要有很多改进,确定测试要求并且指定测试计划。
4.1  系统设计的原则
随着系统规模的扩大,模块化的开发方法得到了越来越广泛的应用。系统设计模块化的程度可以由下面的几个特性来描述:
1)可扩展性: 也就是系统的文护性,在系统产生新的需求时,不用修改程序直接利用系统的扩展性就可解决。
2)分解性: 将一个大型系统分解为若干的子系统模块。 
3)组装性: 子系统模块实现后,可以方便地用于构建新的大型系统。
4)可移植性: 为了适应今后的发展,要求系统具有可移植性强的特性。
5)保护性: 在模块发生错误时减少副作用的发生。
4.2  设计目标
基于对图像编,解码的研究,对图像重新编码后,达到对数据的压缩。
4.3  系统开发平台
4.3.1 软件配置
操作系统:Windows 2000 Sever或更高;
开发平台:Visual studio 2005。
4.3.2 硬件配置
CPU:PⅡ266或更高;
内存:64MB以上
硬盘:2G以上
显示器:VGA或更高;
4.4 系统开发方法及技术路线
本设计拟采用VC++来实现。程序实现的各个步骤如下。
1)读取BMP图像信息,获取图像行像素和列像素数值,在BMP图像中,图像数据是以倒序存放的。亦即实际图像第一行资料存放在BMP图像数据矩阵的最后一行,依次类推,所以取资料的时候要从BMP图像数据矩阵的最后一行开始读起,把数据存放在新建数组(或称矩阵)的第一行,一直取完。BMP图像行像素和列像素的数值分别存于文件头信息的第18和22字节。从Cimage类中可得到Width(图像宽度)和hight(图像高度)的数值。
2)得到Pwidth*Phight后便得知BMP图像的像素点大小,而数据矩阵(三基色,RGB矩阵)的大小是Pwidth*Phight*3,因为每一个像素点都含有RGB三个数据,我们要处理的是数据矩阵而不是像素点矩阵。所以,新建数组的大小是(Pwidth*3)*Phight。
3)接下来,把这一个矩阵(包含BGR)拆分成三个独立的B、G、R矩阵,得到三个新的矩阵(只包含B的矩阵,只包含G的矩阵,只包含R的矩阵),简称为B矩阵、G矩阵、R矩阵(大小为Pwidth*Phight),用程序实现拆分,只要依次取原矩阵的第1、4、7、10、13......个资料即得到B矩阵,依次读取第2、5、8、11......个数据即得到G矩阵,依次读第3、6、9、12......个资料即得到R矩阵。得到B、G、R矩阵后再利用颜色转换公式很容易就可得到YCbCr矩阵。
Y(n)=0.114B(n)+0.587G(n)+0.299R(n)
Cb(n)=0.5B(n)-0.3313G(n)-0.1687R(n)
Cr(n)=0.0813B(n)-0.14187G(n)+0.5R(n)
(For n=1 To PW*PH),其中PW为Pwidth的简写,PH为Phight的简写。
4)二文DCT变换
由于VC中无法实现二文DCT计算公式,所以只有把二文的变换变成先做一文,再做另一文的变换,俗称快速DCT变换。快速DCT变换方法如下:设一个大小为8的数组SL(8),先读取一个8*8块的第一行资料值,赋给SL(8),对SL(8)进行一文DCT变换后得到一个新的SL(8)数组,再把SL(8)数组覆盖到原来的8*8块中相应的地方去。做完第一行后再做第二行,一直做完8行,一个8*8块的一文DC即告完成,然后再做列方向的第二文DCT变换,变换公式一样,只是由SL(8)取8*8块的行资料变成取列数值。做完后覆盖回原值,即得到一个8*8块的DFT系数块,再重复这两个过程做第二个8*8块......一直到做完全部8*8块(Y,Cb,Cr)。这样就得到Y、Cb、Cr的DFT系数矩阵。
5)量化
读取Y矩阵中第一个8*8块,与量化系数矩阵中对应的相乘,得到的值覆盖回原矩阵,然后做第二个8*8块,一直到做完全部8*8块,然后做CbCr矩阵的量化,用另外一个系数矩阵。
6) “之”字形扫描
7)哈夫曼编码
哈夫曼编码时必须判断一个个DC(AC)的值,以及转换成二进制代码后的码长,再去对照哈夫曼编码表进行编码,比如对一个DC值编码,首先得先判断该DC的值在哪段范围内,在某一段范围内的数值,其二进制代码长相等。并要让程序知道该DC的值到底为多少,然后才能进行编码。
8)压缩过程完成以后,接下去要做的工作便是码串存贮,存贮时需要注意的—点是在抽样过程中得到1个Y块对应1个Cb块合一个Cr块的对应关系,在存贮时也要按这种对应关系存贮,即1个Y块的码串后面紧接着存放与其对应的一个Cb块的码串及一个Cr块的码串,循环往复,存完所有串。这样的1个Y8*8块+1个Cb块+1个Cr简称为MCU,是JPEG格式的最小存贮处理单元。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

VC++基于JPG标准的图像压缩算法+代码+论文 第8页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。