说明文档.docx
- 文档编号:17523484
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:20
- 大小:1.91MB
说明文档.docx
《说明文档.docx》由会员分享,可在线阅读,更多相关《说明文档.docx(20页珍藏版)》请在冰点文库上搜索。
说明文档
ImgStore图像处理软件说明文档
学院:
计算机学院
专业:
软件工程
姓名:
吴盛潮(20092100098)
黄禅宗(20072102413)
班级:
09级软工09班
最后修改时间:
2011年5月17日星期二
《目录》
一、项目背景及意义2
二、可行性研究2
三、项目开发计划2
四、开发运行平台分析2
五、概要设计与分析2
六、详细设计2
1、功能框架2
2、主要界面2
3、核心算法、代码2
4、用户手册
5、文件说明
七、测试与维护2
八、项目的不足2
九、小结2
一、项目背景及意义
视觉是人类从大自然获取信息的最主要手段。
据统计,在人类获取的信息中,视觉信息约占60%,听觉约占20%,其它手段约占20%。
“百闻不如一见”说的就是这个道理。
然而直接获取的图像通常不能令人满意。
由此,开发一个图像处理软件,在当今信息时代里将有助于人们对图像进行加工,以满足人们视觉或者心理上的需求。
二、可行性研究
1、经济可行性
本项目是《多媒体技术及应用》的期末大作业,目的是通过该作业了解多媒体的开发平台和环境,所以不存在什么经费可言。
2、技术可行性
通过借阅学习图书馆里相关的图像处理书籍,和在网上查找需要的问题答案,而且还有小组之间的交流讨论,所以在技术上应该没太大的问题。
3、法律可行性
本软件仅供小组学习、交流以及作为作业提交之用,不提供商业用途,所以不会涉及侵权问题。
三、项目开发计划
考虑到第13周就需要提交软件发布版和源代码,以及实验报告和软件说明文档,而且是小组合作,现初定开发计划如下:
(1)设计分析阶段
明确该软件的功能需求,要完成和达到的程度。
并且学习掌握相关的图像处理所需要的知识(如数字图像处理基础、数字图像文件格式)。
(2)开发编码阶段
根据小组成员的分工,完成各自负责的功能模块的代码编写与调试。
(3)测试完善阶段
将所有功能模块进行整合,并对各模块间进行黑盒和白盒测试,确保系统运行稳定无错。
同时根据测试的结果对系统进行优化完善。
四、开发运行平台分析
开发系统:
Windows7操作系统
编译环境:
VisualStudio2008
编程语言:
C++
运行平台:
Windows系列操作系统
五、概要设计与分析
一般说来,图像处理包括的方面有:
点运算、几何运算、图像增强、正交变换、图像复原、图像重建、图像编码等。
本软件主要是模仿PhotoshopCS4,实现一些常用的基本操作,如平移、旋转、添加文字、绘画图形等,以及在此基础上争取实现一些高级的应用,如滤镜、傅立叶变换等。
此外,在图像处理前需要完成打开并显示各种格式的图片,在图像处理后要实现格式转换保存。
工程文件格式:
boolm_bIsImage;//是否为图片
CStringm_strPicName;//打开的图片文件文件名(m_bIsImage为true时,有此数据)
CStringm_strPicPath;//打开的图片文件绝对路径(m_bIsImage为true时,有此数据)
CStringm_strExtName;//打开的图片文件的扩展名(m_bIsImage为true时,有此数据)
CStringm_strProjectName;//创建的工程名字(m_bIsImage为false时,有此数据)
CStringm_strProjectPath;//创建的工程绝对路径(m_bIsImage为false时,有此数据)
intm_iImageWidth;//当前图像宽度
intm_iImageHeight;//当前图像高度
CStringm_strSavePath;//保存路径
COLORREFm_sBKColor;//背景颜色
六、详细设计
1、功能模块
根据上述的设计与分析,本系统为一个多媒体应用系统,可由以下几个模块组成:
1.辅助模块:
打开图片、保存图片(该颜色表明负责人为吴盛潮,否则为黄禅宗)。
2.基本操作模块:
几何变换:
平移、旋转、缩放。
绘画:
画几何图形,如直线、矩形、圆、三角形。
其它:
添加文字、吸管工具、像皮擦。
实现步骤(以“添加文字”为例):
1.在菜单资源为“添加文字”添加响应函数CImgStoreView:
:
OnAddCharcter()。
2.在ImgStoreView.h文件里的“操作枚举”enumOPERACTION里添加枚举类型ADD_CHACTER=1,//添加文字
3.在OnAddCharcter()添加处理代码,如设置操作类型为添加文字。
4.添加该操作所需的资源(也可以没有,比如是绘画时可省略此步)。
并为对话框绑定对话框类CAddCharacterDlg,然后实现该对话框所需要完成的功能。
最后在ImgStoreView.cpp添加操作所需要的对话框#include"AddCharacterDlg.h"
5.在鼠标相应的响应函数里(如单击、双击、拖动),根据不同的操作类型进行相对应的处理。
这里的是在CImgStoreView:
:
OnLButtonDown(UINTnFlags,CPointpoint)里添加如下的代码:
if(m_eOperaction==ADD_CHACTER)
{
//添加文字
CAddCharacterDlgdlg;
if(dlg.DoModal()==IDOK)
{
CDC*cdc=GetDC();
cdc->SelectObject(&dlg.c_cEditFont);
cdc->SetTextColor(dlg.c_sColor);
cdc->TextOut(point.x,point.y,dlg.c_strChar);
}
//重新设置
m_eOperaction=NOTHING;
//在任何地方调用下面的代码来修改光标形状:
SetClassLong(this->GetSafeHwnd(),GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_ARROW));
}
3.高级应用模块:
正交变换:
离散余弦变换,傅立叶变换。
图像增强:
空域滤波增强(图像的空域平滑和锐化)、彩色增强(伪、真彩色增强)。
图像的数学形态学运算:
图像的腐蚀、图像的膨胀。
滤镜:
如高斯模糊。
2、主要界面
3、核心算法、代码
A)主要功能:
一)、文件
1)新建:
分两种情况,一是打开图片来编辑的情况,二是新建一个空白工程。
2)打开:
将所支持的图片格式全部转化为BMP格式的,这样比较方便来处理图片。
3)打开工程:
打开自定义的.ist的格式文件。
4)保存:
将文件保存为自定义的.ist的格式文件。
5)另存为:
二)、基本操作
1)添加文字:
2)吸管工具:
3)橡皮檫:
4)几何变换
a)旋转:
b)缩放:
5)绘画
a)直线:
当鼠标左键按下去变为十字,按住左键不放移动,可以动态显示直线。
b)矩形:
c)圆:
d)三角形:
三)、高级应用
1)滤镜
a)高斯模糊:
2)正交变换
a)离散余弦变换:
b)傅立叶变换:
3)图像增强
a)空间滤波增强
i)图像的空域平滑:
ii)图像的空域锐化:
b)彩色增强
i)真彩色增强:
ii)伪彩色增强:
4)图像的数学形态学运算
i)图像的腐蚀:
ii)图像的膨胀:
B)主要代码:
//操作枚举
enumOPERACTION{
ADD_CHACTER=1,//添加文字
DRAW_LINE=2,//画直线
DRAW_RECT=3,//画矩形
DRAW_ELLIPSE=4,//画圆
DRAW_CIRCLE=5,//画圆
TRANSLATION=6,//平移
SPIN=7,//图像旋转
ROOM=8,//图像缩放
TRAN_BLACK=9,//转灰度图
DIM=10,//高斯模糊
DCT=11,//离散余弦变换
FOURIER_TRAN=12,//傅立叶变换
AIR_SPACE_SKIN=13,//图像的空域平滑
AIR_SPACE_SHARPEN=14,//图像的空域锐化
REAL_COL_ENTH=15,//真彩色增强
PSEDUO_COL_ENTH=16,//伪彩色增强
PIC_CORRODE=17,//图像的腐蚀
PIC_SWELL=18,//图像的膨胀
NOTHING=100//共用:
表示没任何操作
};
//通用操作数据结构体
structRecordData{
//操作枚举
OPERACTIONope;
//添加文字的操作数据结构体
intiX,iY;
CStringstrText;
CStringstrFace;//字体名称
intiSize;//字体大小
COLORREFcolor;
//画直线
intx1,y1,x2,y2;
COLORREFLineColor_line;
//画矩形
intiLeft,iRight,iTop,iButtom;
COLORREFLineColor_Rect;
COLORREFDrawColor_Rect;
};
//双向链表结点结构体
structLinkNode{
RecordDatarecordData;
LinkNode*pre;
LinkNode*next;
LinkNode(){pre=next=NULL;};
};
//纪录历史操作的双向链表
classCRecordLink
{
public:
CRecordLink(void);
~CRecordLink(void);
public:
//boolInitialize();//初始化函数
boolInsert(RecordDatadata);//插入函数
boolTailInseert(RecordDatadata);//用于载入时的尾插入
boolDeleteHeader();//删除函数
intGetLength();//输出链表长度函数
RecordDataGetRecordDataByIndex(intindex);//通过编号获取操作数据
voidMySerialize(CArchive&ar);//序列化函数
voidClear();//清空函数
boolIsHead();//判断是否为头部
voidMoveToTail();//将遍历指针移置尾部
RecordDataGetPreRecordData();//通过内置获取结点数据
private:
LinkNode*c_pHead;//头结点
LinkNode*c_pTail;
intc_iLength;//链表长度
LinkNode*c_pIndex;//用于遍历的结点指针,以提高效率
};
4、文件说明
5、用户手册
下面以分别以创建工程和打开图片这两种类型进行简明操作说明.
1.创建工程
点击“文件”==”新建“,在弹出对话设置相应的参数。
对创建的工程,利用提供的功能进行操作。
期间可以用“编辑“==”撤消“恢复基本操作。
当鼠标出现异常时,可通过“编辑“==”鼠标工具“恢复”。
操作完成后,可以加工的工程进行保存成工程以便下一次继续编辑,也可以直接生成图片。
2.打开图片
通过菜单“文件”==“打开”,选择需要打开的图片。
当图片过大时,可以通过拖动滚动条进行观看。
进行相应操作。
保存类似“创建工程”的操作。
七、测试与维护
经过模拟用户使用以及黑盒、白盒的测试方法,目前发现系统运行正常。
可以正确打开图片和工程、创建工程、进行基本应用以及高级应用。
八、系统的不足
部分功能以及高级应用里面的功能很多都没有实现,只是暂时出现提示的对话框。
而且对保存的图片有时会出现质量比较差的情况,高级应用有时对工程创建的图片无效。
九、小结
参考文献:
《VisualC++.NET数字图像处理技术与应用》
欧珊瑚王倩丽朱哲瑜编著
《VisualC/C++图形图像怀游戏编程典型实例解析》
《电脑编程技巧与维护》杂志社编著
《VisualC++数字图像处理(第二版)》
何斌马天予王运坚朱红莲编著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 说明 文档