图像处理毕业论文 (3).doc

上传人:小小飞 文档编号:3918241 上传时间:2019-10-10 格式:DOC 页数:25 大小:5.35MB
返回 下载 相关 举报
图像处理毕业论文 (3).doc_第1页
第1页 / 共25页
图像处理毕业论文 (3).doc_第2页
第2页 / 共25页
图像处理毕业论文 (3).doc_第3页
第3页 / 共25页
图像处理毕业论文 (3).doc_第4页
第4页 / 共25页
图像处理毕业论文 (3).doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《图像处理毕业论文 (3).doc》由会员分享,可在线阅读,更多相关《图像处理毕业论文 (3).doc(25页珍藏版)》请在三一文库上搜索。

1、图像处理毕业论文摘 要:随着信息技术的蓬勃发展,尤其是计算机技术的日新月异,为数字图像处理的发展提供了广阔的空间。该数字图像处理系统是基于Windows平台的图像处理系统,实现了对灰度级图像的编辑,可以进行图像导入和导出,视图设置,可以调整图片尺寸,旋转和翻转图片,图片增强优化,图像边缘检测与分割,图像编码以及打印输出图片。本文主要介绍了数字图像处理系统的设计和实现过程,系统设计运用MFC的设计思想,通过VC+实现系统框架,简化了软件的开发,提高了软件系统的灵活性、可扩展性和重用性。同时系统所有的操作设计得十分简单方便,无需具备有专业的知识,也能对图片完成编辑操作。关 键 词 :VC+,MFC

2、,灰度级图像,图像编辑Abstract:With the rapid development of information technology, especially in the progress of computer technology, it provides wide space to the application of Digital Image Processing. Digital image processing system is an image processing system based on the Windows platform. To realize

3、the image editor of gray level, import and export images, view settings, you can adjust picture size, rotate and flip images Enhance the optimization and print output picture.The analysis and the implementation procedure of Digital Image Processing System were introduced in this paper. The design id

4、ea of MFC was used and the system structure was implemented by VC+. So the development of software can be predigested and flexibility, expansibility and reusability of software system can be improved. Keywords: VC+,MFC,Grayscale image,Image edit目 录1前言.21.1课题设计的背景和意义.22图像处理的方法概要与应用领域.22.1数字图像处理的方法概要.

5、 22.2数字图像处理的应用领域.22.3数字图像系统简介.43数字图像处理系统开发技术基础.43.1 C+语言优点.43.2 VC+平台简介.43.3 MFC技术简介.63.4 MDI应用程序的构成.64需求分析.74.1系统功能需求分析.74.2系统处理流程分析.85系统总体设计.85.1系统功能模块划分.85.2类的设计.95.3系统框架类.106系统的详细设计.106.1文件模块的设计.106.2图像编辑模块.126.3图像处理模块.136.4图像的增强和复原.187 系统调试 .20结 论. .21致 谢.22参考文献 .23261 前言随着科学技术的发展和人民生活水平的提高,数字摄

6、像机的出现和数字图像处理技术的发展,在日新月异的数字化时代中,越来越引起人们的广泛关注,数字图像处理已经成为必备的基础知识。近几十年来由于计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应用。目前,图像处理技术已经广泛应用于工业、军事、医学、交通、农业、天气预报、银行、超市、重要部门的监控报警系统、可视电话、网络传输等等领域,成为各个学科学习和研究对象。随着图像处理技术的广泛应用,学习和掌握这门科学显得格外重要,图像处理已经成为信息技术相关领域的核心课程。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机

7、断层摄影装置,也就是我们通常所说的CT(Computer Topography)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类做出了划时代的贡献。 与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。 随着图像处理技术的深入发展,从70年代中期开始,随

8、着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。1.1课题设计的背景和意义所谓图像处理,就是对图像信息进行加工以满足人的视觉心理或应用需求的行为。视觉是人类从大自然中获取信息的最主要的手段。据统计,在人类获取的信息中,视觉信息约占60,听觉信息约占20,其他的如味觉信息、触觉信息等加起来约占20。由此可见视觉信息对人类的重要性,而图像正是人类获取视觉信息的主要造径。所谓“图”,就是物体透射或者反射光的分布;“像”是人的视觉系统接收图的信息而在大脑中形成的印象或认识。前者是客观存在的,而后者是人的感觉,图像就是两者的结合。2 数字图像处理的方法概要与应用领域2.

9、1数字图像处理的方法概要图像处理的方法多种多样,般可分为图像变换、图像增强和复原、图像分割、图像压缩编码、图像描述和图像识别等几类:1)图像变换由于图像阵列很大,直接在空间域中进行处理,涉及的计算量很大。利用正交变换(如傅里叶变换、余弦变换等)的性质和特点,将图像变换到频率域中进行处理,不仅可减少计算量,而且可获得更有效的处理,如博里叶变换可在领域中进行数字滤波处理。目前新兴研究的小波交换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。该部分主要研究各种变换模型和处理方法。2)图像增强和复原图像增强和复原的目的都是为了提高图像的质量。图像增强。利用各种数学方法和变换

10、手段提高图像中目标与非目标(如背景)的对比度与清晰度,达到突出目标,有效地表示和提示图像,以利于人或机器进行分析处理的目的。该部分主要研究各种增强模型和处理方法。图像复原。在景物成像过程中,由于成像设备与物体的相对运动、介质散射、系统畸变(如成像系统的变焦、成像器材的固有缺陷)、噪声干扰等因素会造成图像质量降低,称之为“退化”,典型现象是图像模糊。使退化的图像恢复本来面目,真实反映原景物图像的处理,称为图像复原。该部分主要研究各种校正模型和处理方法。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;强化低频分量,可减少图像中噪声影响。

11、图像复原要求对图像降质的原因有一定的了解,一般而言,应根据降质过程建立“降质模型”再采用某种滤波方法,恢复或重建原来的图像。3)图像压缩编码把数字化的图像数据按一定规则进行排列或运算的过程称为图像编码。内于图像的数据量很大,存储要占很大的空间,传输也要花费不少时间,为此利用图像本身的内在特性(如像素灰度值之间的相关性),按某种特殊方式编码,以压缩总的信息量,称之为图像压缩编码。该部分主要研究各种高效压缩编码方法。压缩可以在不失真的前提下获得,也可以在允许的失真条件进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。4)图像分割图像分割是数字图像处理中的关键技术之。

12、图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。5)图像描述图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法

13、。2.2数字图像处理的应用领域图像信息是人类主要的信息来源之一,图像处理的应用领域也涉及到人们工作生活中的方方面面。主要应用可归纳为以下几个方面:(1)医用图像处理。医学上不论是基础研究还是临床应用,都是图像处理种类极多的领域。例如生物医学的显微图像的处理分析,如红白细胞和细菌,染色体分析;临床诊断中X光图像的鉴别、超声波图像(B超)的分析、眼底照片的分析等都是医疗辅助诊断的重要手段,尤其是计算机层析成像技术(CT),可以获得人体剖面图,使肌体病变特别是肿瘤的诊断起到了革命性的变化,近年来出现的核磁共振CT,使人体免受各种硬射线的伤害,而且图像更为清晰。(2)遥感图像的处理。飞机或人造卫星传送

14、来的遥感图像,由于各种原因图像质量不是很好,必须在成像、存储、传输、判读过程中进行各种数字处理与分析(如辐射校正、几何畸变校正、多光谱统计信息分类等),并将其变为可视的资源信息或气象信息,如大气预报中的卫星云图。目前遥感技术已在资源调查、灾害监测、农业规划、城市规划、环境保护等方面得到了广泛的应用。(3)文字的识别与图纸的判读。文字与图纸是科技信息的主要传输手段。文字与图纸在图像处理中都是以最简单的二值图像形式出现的。文字识别的应用包括手写体文字的识别、图文混合中文字的识别等,如邮政编码的自动识别,计算机光笔输入,经扫描仪扫描的文字材料是以图像文件的形式保存,如何将其转变成文本文件等等。目前此

15、类应用技术已比较成熟,如OCR软件等。图纸的判读则涉及到各种逻辑图和机械设计图的自动读取问题,其中也包括图纸上的文字识别问题(即图文混合下的文字识别)。(4)工业领域的应用。产品外观检测与筛选,表面缺陷的自动检测,组装与流水线上的自动化,工业材料的质量检验。(5)农业上的应用。包括农产品色度的检测(如鉴别水果成熟度),农牧产品,作物的表血形状和特征参数的测定。(6)其他。指纹识别、影视中的特效等。2.3数字图像系统简介数字图像处理系统是一款简单而又实用的灰度级图像处理软件,是基于Windows平台的应用程序,利用Visual C+6.0的编译环境提高了系统的开发速度,实现数字图像的查看与编辑操

16、作。主要内容有:图像文件的打开和保存,实现了对灰度级图像的操作。图像的几何变换,实现对图像文件的旋转、缩放、以及镜像处理。图像增强和复原,实现对降质的图像进行改善处理和提高图像质量的逼真度。图像的边缘检测和分割,产生更适合人观察和识别的图像。图像编码,对图像采用不同的表达方法以减小表示图像所需的数据量。3 数字图像处理系统开发技术基础3.1 C+语言优点C语言是一个面向对象的语言,使用C编写的代码更加简捷、高效,更具可维护性和可重用性。C+语言的优点主要有以下几点: 1、使用new和delete进行动态内存分配和释放 运算符new和delete是C新增的运算符,提供了存储的动态分配和释放功能。

17、它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new比使用malloc()有以下的几个优点: (1)、new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。 (2)、它自动地返回正确的指针类型,不用进行强制指针类型转换。 (3)、可以用new对分配的对象进行初始化。 2、使用inline内连函数替代宏调用 对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏: define abs(a) (a)0?(a):(a), 当使用abs(I)时,这个宏就会出

18、错。 所以在C中应该使用inline内连函数替代宏调用,这样即可达到宏调用的功能,又避免了宏调用的弊端。使用内连函数只需把inline关键字放在函数返回类型的前面。例如: inline int Add(int a,int b);声明Add()为内连函数 这样编译器在遇到Add()函数时,不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。 3、使用函数重载 在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C中,函数名相同而参数不同的两个函数被解释为重载。例如: void PutHz(char *str); /在当前位置输出汉字 void PutHz(int x,int y,ch

19、ar *str); 在x,y处输出汉字 使用函数重载可以帮助程序员应付更多的复杂;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。 4、使用引用(reference)代替指针进行参数传递 在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。例如: void Add(int *a) (*a)+; 但是对于复杂的程序,使用指针容易出错,程序也难以读懂。在C中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,就相当于对原有变量进行操作。例如使用引用的函数定义为:void Add(int &a)

20、 (a+;); /a为一个整数的引用 5、使用“类”对数据进行封装 C语言是模块化的程序语言,通过函数的使用和文件的单独编译实现了一定的数据封装功能。但C通过使用“类”的强大功能,在数据封装、继承等很多的方面比C做得更好。通过使用“类”把数据和对数据的所有操作集合封装在一起,建立了一个定义良好的接口,使程序员在使用一个类的时候可以只关心它的使用,而不必关心它的实现。 6、类模版 类模版使得程序员在设计一个类时,可以将数据类型作为类的参数,从而定义一个类属类。作为参数的类型既可以是c+语言提供的基本类型与复合数据类型,也可以是程序员自定义的类类型。类属类的主要用途是定义包容数据结构。利用类模版,

21、以此就可以定义出具有共性(除类型参数除外、其余全相同)的一组类。即通过使用类模版,可使得所定义类中的某些数据成员、某些成员函数的参数、某些成员参数的返回值都可以使任意类型的(包括系统预定义类型以及用户自定义类型),从而使得一段程序可用于处理多种不同类型的对象。3.2 VC+平台简介VC+是在Windows平台下构建32位应用程序的强大而又复杂的开发工具,是目前世界上使用非常广泛的工具之一。VC+的应用非常广泛,从桌面应用程序到服务器端软件,从系统软件到应用软件,从单机程序到分布式应用程序,从图形图像处理到游戏开发,VC+无所不在 6。VC+是Windows平台上的C+编程环境,学习VC要了解很

22、多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。VC+ Developer Studio 包含有编写程序源代码的编辑器,设计用户界面(菜单、对话框、图标等)的资源编辑器,建立项目配置的项目管理器,检查程序错误的集成调式等工具,同时,它还提供了功能强大的应用程序向导AppWizard和类向导ClassWizard工具。AppWizard用于生成各种不同类型的具有Windows界面风格的应用程序的基本框架,在生成应用程序框架后,使用ClassWizard便可轻松完成创建新类,映射消息、定义消息处理函数、重载虚函数等操作1。3.3 MFC技术简介MFC (Micro

23、soft Foundation Class Library,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C+类的集合,是一套面向对象的函数库,以类的方式提供给客户使用。利用这些类可以有效的帮助程序员完成Windows应用程序的开发。MFC中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+提供了相应的工具来完

24、成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。3.4 MDI应用程序的构成用AppWizard产生一个MDI工程Jia(无OLE等支持),AppWizard创建了一系列文件,构成了一个应用程序框架。这些文件分四类:头文件(.h),实现文件(.cpp),资源文件(.rc),模块定义文件(.def),等。从CWinApp、CDocument、CView、CMDIFrameWnd、CMDIChildWnd类对应地派生出CJiaApp、CJ

25、iaDoc、CJiaView、CMainFrame、CChildFrame五个类,这五个类的实例分别是应用程序对象、文档对象、视对象、主框架窗口对象和文档边框窗口对象。主框架窗口包含了视窗口、工具条和状态栏。对这些类或者对象解释如下。(1)应用程序应用程序类派生于CWinApp。基于框架的应用程序必须有且只有一个应用程序对象,它负责应用程序的初始化、运行和结束。(2)边框窗口如果是SDI应用程序,从CFrameWnd类派生边框窗口类,边框窗口的客户子窗口(MDIClient)直接包含视窗口;如果是MDI应用程序,从CMDIFrameWnd类派生边框窗口类,边框窗口的客户子窗口(MDIClien

26、t)直接包含文档边框窗口。如果要支持工具条、状态栏,则派生的边框窗口类还要添加CToolBar和CStatusBar类型的成员变量,以及在一个OnCreate消息处理函数中初始化这两个控制窗口。边框窗口用来管理文档边框窗口、视窗口、工具条、菜单、加速键等,协调模式状态(如上下文的帮助(SHIFT+F1模式)和打印预览)。(3)文档边框窗口文档边框窗口类从CMDIChildWnd类派生,MDI应用程序使用文档边框窗口来包含视窗口。(4)文档文档类从CDocument类派生,用来管理数据,数据的变化、存取都是通过文档实现的。视窗口通过文档对象来访问和更新数据。(5)视视类从CView或它的派生类派

27、生。视和文档联系在一起,在文档和用户之间起中介作用,即视在屏幕上显示文档的内容,并把用户输入转换成对文档的操作。(6)文档模板文档模板类一般不需要派生。MDI应用程序使用多文档模板类CMultiDocTemplate;SDI应用程序使用单文档模板类CSingleDocTemplate。应用程序通过文档模板类对象来管理上述对象(应用程序对象、文档对象、主边框窗口对象、文档边框窗口对象、视对象)的创建。4 需求分析4.1系统功能需求分析需求分析简单地说就是分析用户的需求。需求分析是设计系统的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理

28、和实用。需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。调查的重点是“数据”和“处理”,通过调查、收集与分析,获得用户对数据的要求如下:(1)图像的打开、关闭及保存:打开并显示图像,并在处理过图像后关闭或保存图像的修改。(2)处理要求。指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是其他处理方式,能够完成图像一般的编辑处理。(3)处理效果与效率。图像处理中一个很重要的问题就是如何表示有关的知识并以恰当的方式引入图像处理。由于图像处理任务的复杂性,

29、目前要找出一个通用的方法适应各种情况是几乎不可能的。另一方面,在建立普适的图像处理方法时,往往会忽略某类图像具有的特定属性。相反,针对某类特定问题,则可能找到有效的方法。为此,有研究者提出基于对象图像处理的概念:限定图像处理的对象为几类特殊的图像(JPG,GIF,BMP),考察对象的共有属性(称为先验),并将其结合到图像处理的任务中以提供更多的信息,从而提升图像处理的性能、提高处理效果。由于图像的处理是通过对一个个像素点进行处理,要想提高处理速度就需要寻找一个快速的处理方法。 本系统是Windows应用程序,可以进行图像的导入和导出,视图设置,附带和ACD SEE类似功能的图片编辑器编辑完成以

30、后可以对修改进行保存,可以调整图片尺寸,旋转和翻转图片,图片增强优化,图像的特效处理以及打印输出图片。4.2系统处理流程分析在对系统的组织结构和功能进行分析时,需从一个实际业务流程的角度将系统调查中有关该业务流程的资料都串起来作进一步的分析。业务流程分析可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。业务流程图(transaction flow diagram,简称TFD),就是用一些规定的符号及连接来表示某个具体的业务处理过程,它是用尽可能少、尽可能简单的方法来描述业务处理过程的方法,由于它的符号简单

31、明了,所以非常易于阅读和理解业务流程。通过对系统的需求分析,系统的基本功能已经确定。整个系统各个模块的业务流程,如图4-1所示: 图4-1 业务流程图5 系统总体设计5.1系统功能模块划分数字图像处理系统的总体功能模块如图4-1所示:图 5-1 数字图像处理功能模块划分模块设计是对处理流程图的注释性书面文件,以帮助程序设计人员进一步了解模块的功能和设计要求,本系统采用C+语言开发,由于计算机的硬件和软件发展日新月异,所以对这种语言利用的过程,也是不断学习的过程。数字图像处理系统主要分为三个子模块,即文件操作模块、图像编辑模块、图像处理模块模块。系统的具体的模块设计如下:1.文件操作:该模块主要

32、实现图像的文件操作,包括打开图像文件、保存图像文件、图像文件的打印等操作。2.图像编辑:该模块主要实现图像的编辑操作,包括图像的复制、图像的粘贴、在图像中添加文字信息等操作。3.图像操作:该模块主要实现图像的特殊处理与缩放处理,包括图像的点运算、图像的几何变换、图像的增强和复原处理、图像的边缘检测和分割、图像编码图像的特效处理等操作。5.2类的设计对话框类类名类的作用CAboutDlg关于对话框类版权信息显示CAddTextDlg添加文字对话框类打开对话框添加文字CDlgArith算术编码对话类设置算术编码参数设置CDlgBitPlane位平面编码对话框类输入位平面编码参数CDlgHistog

33、灰度直方图对话框类描述图像灰度级内容CDlgHuffman霍夫曼编码对话框类显示霍夫曼码表CDlgShannon香农-费诺编码对话框类显示香农-费诺编码表CGeoRotaDlg图像旋转对话框类对图像旋转度数设置CGlgImageThre阀值变换对话框类输入阀值参数CImagePro灰度拉伸对话框类控制灰度拉伸参数CMidFilterDlg中值滤波对话框类选择中值滤波模版CSharpThreDlg阀值设定对话框类输入阀值分割参数CGeoZoom图像缩放对话框类实现缩放大小参数设置CSmoothDlg图像平滑对话框类选择图像平滑模版图5-2 对话框类表MFC类库中实现了对GDI位图操作的CBitm

34、ap类,但是没有封装处理DIB(Device-Independent Bitmap 设备无关位图)位图操作的相关Windows API类,CMyDIB类就是采用面向对象的思想实现了对该类函数以及数字图像处理算法的封装。实现的功能主要有以下几个方面:(1)读取BMP图像文件;(2)获取图像的相关信息;(3)显示图像;(4)保存图像;(5)图像处理的各种算法实现。CBmpShow、CRectTrackerEx类主要是实现了图像文本的插入处理。5.3系统框架类CJiaApp、CJiaDoc、CJiaView、CMainFrame、CChildFrame五个类主要实现了应用程序的框架及框架内部的各种逻

35、辑、消息响应机制。6 系统的详细设计根据前面对系统所需实现功能的分析和系统结构设计,现将对系统进行详细设计,逐步实现系统的各个功能模块。6.1文件模块的设计(1)文件操作模块文件操作模块是整个系统中最基本的组成成分。文件操作模块主要实现图像文件的打开、打印、修改后的保存以及图像文件的另存为操作。通过对用户的需求分析得出文件操作模块的功能结构图,文件操作模块的功能结构图如图6-1所示:文件操作模块图像打开图像保存图像打印图6-1 文件操作模块功能结构图应用程序的的启动界面如图6-2所示:图6-2 图像启动界面程序的启动界面由CSplashWnd类实现,在CSplashWnd类中的OnCreate

36、函数中的定时器SetTimer(1, 2750, NULL)设置的定时间隔就是启动画面的显示的时间,该系统设置的显示时间是2750ms,然后发送WM_TIMER消息,隐藏启动画面;如果系统收到键盘或者鼠标单击消息时也会自动隐藏启动画面。(2)文件打开功能的实现,其文件打开界面如图6-3所示:图6-3文件打开界面通过文档视图结构简化了数据操作和数据显示,文档只负责数据管理,不涉及用户界面;视只负责数据输出和用户界面的交互,可以不考虑应用程序的数据是如何组织的。通过文档JDoc类中的OnOpenDocument(LPCTSTR lpszPathName)函数实现对文件的打开,而在视图JiaView

37、类中实现图像的显示。(3)图像的保存 图像的保存也是在文档类实现,首先声明了CMyDIB类的指针变量m_pDibImage,经过保存对话框后,程序接下来调用成员函数m_pDibImage-SaveDIB(m_hDIB, file)将图像存为指定文件。另外,一旦将文件更名保存,就需要将该图像所属的子窗口标题栏中的标题更名为新的文件名,此项任务由成员函数pChildFrame-SetWindowText()负责。(4)图像的打印图像的打印实现,通过IsPrinting()函数判断CDC对象是否是指向设备上向下文环境的对象,如果是,则执行如下代码实现打印:/ 获取打印页面的水平宽度(象素)int c

38、xPage = pDC-GetDeviceCaps(HORZRES);/ 获取打印页面的垂直高度(象素)int cyPage = pDC-GetDeviceCaps(VERTRES);/ 获取打印机每英寸象素数int cxInch = pDC-GetDeviceCaps(LOGPIXELSX);int cyInch = pDC-GetDeviceCaps(LOGPIXELSY);/ 计算打印图像大小(缩放,根据页面宽度调整图像大小)rcDest.top = rcDest.left = 0;rcDest.bottom = (int)(double)cyDIB * cxPage * cyInch)

39、/ (double)cxDIB * cxInch);rcDest.right = cxPage;/ 计算打印图像位置(垂直居中)int temp = cyPage - (rcDest.bottom - rcDest.top);rcDest.bottom += temp/2;rcDest.top += temp/2;6.2图像编辑模块图像编辑模块是图像处理系统中重要模块,主要实现图像文件的编辑操作。包括图像的复制、粘贴以及在图像中插入文本操作。图像编辑模块的功能结构如图6-4所示:图像编辑模块图像复制图像粘贴文本插入图6-4功能结构图图像编辑主要实现对图像的编辑,用户在打开图像之后可以选择复制图

40、像或者剪切图像,如果想要把复制的图像保存下来就需要先将图片保存到剪贴板后进行图像粘贴,保存操作,这样就可以把原来图像中的一部分保存下来。如果需要添加一些说明性文字可以进行文本的插入,单击编辑/添加字体调出文本插入对话框,进行文本插入说明,这样可以把图像的描述信息添加到图像中。插入文本实现了在图像中任意位置插入文字,没有实现字体和颜色的设置。插入文本的代码如下所示:void CBmpShow:PaintBmpAndText()/绘制图像和文字SetDIBits(m_pMemDC-GetSafeHdc(), (HBITMAP)m_pMemBmp-m_hObject, 0,m_lpBMPHdr-bi

41、Height,(LPVOID)m_lpDIBits,(BITMAPINFO*)m_lpBMPHdr, DIB_RGB_COLORS);if (m_strBmpText.GetLength() 0)CRect rcText = m_textTracker.m_rect - m_rcDraw.TopLeft();m_pMemDC-SetBkMode(TRANSPARENT);/设置字体m_pMemDC-SetTextColor(RGB(250, 0,0);rcText.OffsetRect(1, 1);/根据矩形的宽度,插入换行符CString strText = NewLineString(m_

42、strBmpText, rcText);/ Call this member function to format text in the given rectanglem_pMemDC-DrawText(strText, rcText, DT_LEFT|DT_WORDBREAK);图像文本插入界面如图6-5所示:图6-5文本插入界面6.3图像处理模块图像处理模块主要是实现灰度图像的处理,因为灰度图像的每个像素的位数正好是8位,即一个字节,这样,在进行图像处理时可以不用考虑拼凑字节的问题。而且由于灰度图调色板的特殊性,进行灰度图像处理时不必考虑调色板的问题。这部分的主要功能是图像的点运算、图像的几何运算、图像的正交变换、图像的增强、图像边缘检测和分割、图像编码。经过分析图像处理的功能,得出图像处理的功能模块图如图6-6所示:图像处理模块图像点运算几何运算图像编码检测分割增强复原正交变换图6-6功能模块图点运算(Point Operation)是一种及简单有重要的技术,它能让用户改变图像数据占据的灰度范围。点运算可以按照预定的方式改变一副图像的灰度直方图。灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的的灰度级内容。任何一幅图像的直方图都包括了可观的信息,某些类型的图像还可由其

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1