些黑盒子里的具体内容将在以后的设计中。总体
设计阶段的另一项重要任务是设计软件的结构,也就是确定系统中每个程序是有哪些模块组成的,以及这些模块的相互关系。总体设计过程首先寻找实现目标系统的不同方案,需求分析阶段得到的数据流图是设想各种方案的基础。然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的
方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本、效益分析,并且制定实现这个方案的进度计划。分析员应该综合分析比较这些合理的方案,从中选择一个最佳的方案向用户和使用部门负责人推荐。如果用户的使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计的软件结构,通常,设计出的初步软件结构后还要有很多改进,确定测试要求并且指定测试计划。
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块中相应的地方去。做完第一行后再做第二行,一直
相关热词:VC 基于 JPG 标准 图像 压缩 算法 代码 论文