毕业设计论文图象边缘处理系统

上传人:沈*** 文档编号:149253286 上传时间:2022-09-06 格式:DOC 页数:53 大小:1.13MB
收藏 版权申诉 举报 下载
毕业设计论文图象边缘处理系统_第1页
第1页 / 共53页
毕业设计论文图象边缘处理系统_第2页
第2页 / 共53页
毕业设计论文图象边缘处理系统_第3页
第3页 / 共53页
资源描述:

《毕业设计论文图象边缘处理系统》由会员分享,可在线阅读,更多相关《毕业设计论文图象边缘处理系统(53页珍藏版)》请在装配图网上搜索。

1、毕 业 设 计 论 文 专业班级:计算机科学与技术计本061学生姓名: 指导教师: 密级:图象边缘处理系统Image edge Processing System系别名称: 信息工程系专业班级:计算机科学与技术计本061学生姓名: 学 号: 2006403118指导教师: 沈阳工程学院毕业论文 摘 要摘 要本文对图像处理理论进行了深入的分析和研究。图像处理有很多的领域,比如通过对大径原木的分等、高档集成材和地板块的缺陷剔除、珍贵树种原木的最优下锯、大径优质原木旋切的最优定心等传统技术无法解决的高技术问题的研究。本课题利用图像边缘检测与提取及轮廓跟踪技术来识别图像边缘的缺陷。本课题通过各种算子来

2、实现对图像的灰质进行分析、调节,对某些边缘过于平滑的图像需要进行升燥处理,对某些边缘比较特殊的图像进行边缘的提取以及跟踪。本论文采用Visual C+6.0程序设计语言,以模块化软件设计技术,运用数字图像处理技术,在Windows平台上设计了图像边缘监测与提取及轮廓跟踪的图像处理系统。本设计针对图像处理进行研究,使用了一系列的可行性算法,获取图像特征参数。构造CDib类(其中封装了多个图像处理函数)以方便的处理位图操作。用Cdib Process View类调用CDib类中的图像处理函数,实现对原始图像的边缘检测,轮廓提取及跟踪。为对木材形状和缺陷进行识别提供了必要的理论前提和技术基础。关键词

3、 图像处理,边缘检测,轮廓提取,轮廓跟踪,VC+6.0- IV -沈阳工程学院毕业论文 AbstractAbstractThe thesis of the theory of image processing conducted in-depth analysis and research. Image processing involve a number of areas. For example, by grading of large diameter logs, high-grade laminated plates and to remove defects, rare speci

4、es under the optimal sawing logs, large-diameter high-quality wood veneer of the best-centering and other traditional techniques can not solve the problem of high-tech study. The issue of image edge detection and contour extraction and edge tracking techniques to identify defects.Operator of this is

5、sue to achieve through a variety of image analysis of gray matter, regulate, to some edges are too smooth, dry rose image processing needs, some more specific image edge extraction and edge tracking.This thesis adoption Visual C+6.0 procedure design language, handles with mold a picture for turning

6、software design technique, application digital image processing technique, on the terrace of Windows designing image edge detection with withdrawing and outline following system. This design aims at the image proceeding studies, using a series of possibility calculate way, obtaining the picture char

7、acteristic parameter. Structure CDib (among them sealed to pack several pictures handles function) to handles conveniently a diagram operation. Adjust to handle with the picture in CDib with CDib Process View function, realizes to detect to the edge of the primitive image, the outline withdraws and

8、follows. Offer the necessary theories for identify defect of the timber shape.Keywords image processing, edge detection, outline withdrawing, outline following目 录摘 要IAbstractII第1章 绪 论11.1 论文研究的目的和意义11.2 论文主要研究内容1第2章 图像处理概述及开发工具简介32.1 数字图像与数字图像处理32.1.1 数字图像32.1.2 数字图像处理32.2 数字图像处理的方法42.2.1 图像处理的目的42.

9、2.2 图像处理的主要方法42.3 VC+可视化编程概述62.3.1 概述62.3.2 用户界面的使用62.3.3 编程的基本流程72.4 用于图像处理的ImageLoad.dll动态链接库82.4.1 ImageLoad.dll库简介82.4.2 使用ImageLoad.dll动态链接库112.5 图像处理所用到CDibObject类的设计112.5.1 公用方法的设计112.5.2 设计类的属性122.6 使用CDibObject类132.6.1 添加CDibObject类定义文件132.6.2 设置工程选项13第3章 系统需求分析143.1 系统的主要功能143.2 需求分析143.2.

10、1 系统业务流程图143.2.2 概念设计14第4章 系统总体设计164.1 系统功能要求及说明和实现方法164.2 系统的结构功能模块17第5章 系统详细设计与实现195.1 图像边缘检测195.1.1 边缘检测的基本概念195.1.2 边缘检测算子介绍195.1.3 边缘检测的示例265.2 图像的轮廓提取与轮廓跟踪265.2.1 图像的轮廓提取265.2.2 图像的轮廓跟踪29结 论33致 谢34参考文献35附 录36A1.1 程序主要代码36A1.2使用说明46沈阳工程学院毕业论文 第1章 绪论第1章 绪 论1.1 论文研究的目的和意义图像处理技术起源于20世纪20年代,近30年来它随

11、着计算机科学的蓬勃兴起而迅速的发展。目前已成为计算机科学医学生物学工程学信息科学等学科研究的对象,其应用遍及通信教育商务宣传文艺工业农业气象地质海洋生物医学遥感等诸多领域。本文主要针对应用计算机视觉系统,对图像的边缘检测与提取及轮廓跟踪技术进行研究。实现图像表面缺陷的自动检测,对灰质等级自动分选提高图像价值有非常重要的作用。而影响检测整体水平的重要方面之一是缺陷图像的处理过程,而本文研究的重点图像的边缘检测与提取及轮廓跟踪技术是图像分割,目标区域识别区域行状提取等图像分析处理领域十分重要的基础。近年来,对图像表面问题及缺陷检测的研究有很大进展,但还没有达到实用化程度。寻求非接触精度高具有综合分

12、析能力的识别方法来代替人工目测,解决图像表面的模式识别和测量问题,是图像加工行业面临的一大难题,也是值得我们长期探讨的科研课题。这也正是本文研究的目的所在。目前应用计算机技术检测缺陷已在国外某些领域得到应用,比如玻璃缺陷识别钢丝绳表面缺陷及地板表面缺陷检测等。国内在木材表面木材解剖特征等方面应用了这一技术。因此为了更好的对图像处理,提高计算机视觉技术应用的可行性,本论文的研究在实际上和理论上都具有先进性和可行性。1.2 论文主要研究内容边缘检测与提取及轮廓跟踪技术是数字图像处理的重要内容这也正是本文所要研究的。因为在实际图像中(不包括有计算机图形学制作的图像),即使用眼睛可以清楚地确定边缘,但

13、在灰度变化模型中也有一些会变钝灰度变化量会变小,从而使得提取清晰的边缘十分困难,因此我们需要应用各种各样的算法来实现使边缘清晰的处理。而我们理想的边缘检测应当正确解决边缘的有无、真假、和定向定位,长期以来,人们一直关心这一问题的研究,除了常用的局部算子及以后在此基础上发展起来的种种改进方法外,目前国内外又提出了许多新的技术,其中,突出的有LOG,用Facet模型检测边缘,Canny的最佳边缘检测器,统计滤波检测以及随断层扫描技术兴起的三维边缘检测等。目前我们是常的用经典的边缘检测方法是构造对像素灰度级阶跃变化敏感的微分算子,如robert梯度算子、Sobel梯度算子等,其边缘检测速度快,但得到

14、的往往是断续的、不完整的结构信息,这类方法对噪声较为敏感,为了有效抑制噪声,一般都首先对原图像进行平滑,再进行边缘检测就能成功地检测到真正的边缘。边缘检测技术中较为成熟的方法是线性滤波器,其中尤其是以拉普拉斯LOG(Laplace of Gauss)算子最为有名,LOG算子较好地解决了频域最优化和空域最优化之间的矛盾,计算方法也比较简单方便,另外,该算子在过零点检测中具有各向同性特点,保证了边缘的封闭性,符合人眼对自然界中大多数物体的视觉效果;不过LOG算子的边缘定位精度较差,而边缘定位精度和边缘的封闭性两者之间无法客观地达到最优化折衷。本文主要就是研究边缘处理技术的一些算法,并力求在VC的环

15、境下来实现它们,以求达到对图像处理的最佳效果。因此本文解决问题的方法就是通过研究可行的算法来达到预期的效果。- 2 -沈阳工程学院毕业论文 第2章 图像处理概述及开发工具简介第2章 图像处理概述及开发工具简介2.1 数字图像与数字图像处理2.1.1 数字图像用计算机进行图像处理的前提是图像必须以数字格式存储,我们把以数字格式存放的图像称之为数字图像。数字图像是连续图像的一种近似表示,通常用由样点的值所组成的矩阵来表示。每一个采样点叫做一个像素(pixel)。在计算机内通常采用二维数组来表示数字图像矩阵。把像素按不同的方式进行组织或存储,就得到不同的图像格式。把图像数据存成文件就得到图像文件。图

16、像文件按其数字图像格式的不同一般具有不同的扩展名,常见图像文件格式有位图文件(*.BMP)、TGA文件(*.TGA)、PCX文件(*.PCX)、GIF文件(*.GIF)、TIFF文件(*.TIFF)等。在Windows系统中,最常用的图像格式是位图格式,其文件名以BMP为扩展名。我们通常见的各种照片、图片、海报、广告画等均属模拟图像,要将模拟图像数字化后生成数字图像,需要利用数字化设备。目前,将模拟图像数字化的主要设备是扫描仪,将视频画面数字化的设备有图像采集卡。当然,也可以利用数码照相机直接拍摄以数字格式存放的数字图像。模拟图像经扫描仪进行数字化或由数码照相机拍摄的自然景物图像,在计算机中均

17、是以数字格式存储的。既然是数字,计算机当然可以方便地进行各种处理,以达到视觉效果和特殊效果。本论文就是针对数字图像的一种灰度图像来进行研究。2.1.2 数字图像处理现在说到数字图像处理,就意味着基于计算机的图像处理。我们把利用计算机对图像进行去除噪声、增强、复原、分割、提取特征,以及本论文所要研究的边缘检测和轮廓跟踪等的理论、方法和技术称为数字图像处理(Digital Image Processing)。一般,图像处理是用计算机和实时硬件实现的,因此也称之为计算机图像处理(Computer Image Processing)。随着近几十年来计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和

18、应用。目前,图像处理技术已经广泛应用于工业军事医学交通农业等各个领域。例如,电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。在医学领域,很早以前就采用X射线透视、显微镜照片等来诊断疾病。现在,计算机图像处理已成为疾病诊断的重要手段,用一般摄影方法不能获取的身体内部的状况,也能由特殊的图像处理装置获取,最具有代表性的就是X射线CT(Computed Tomograph,计算机断层摄像)。正是由于各种实际应用的需求,计算机图像处理技术必将更加迅速地向广度和深度发展。这也给我们对图像处理的研究提出了新的课题。2.2 数字图像处理的方法

19、2.2.1 图像处理的目的一般而言,利用计算机进行图像处理主要地目的就是产生更适合人观察和识别的像 或者由计算机自动识别和理解图像。如去除图像中的噪声,改变图像的灰度、颜色,增强图像中的某些成份、抑制某些成份,对图像进行几何变换等,从而改善图像的质量像的质量,以达到或真实的、或清晰的、或色彩丰富的、或意想不到的艺术效果。提取图像中所包含的某些特征或特殊信息,以便于计算机分析,例如,常用作模式识别计算机视觉的预处理等。这些特征包括很多方面,如频域特性、灰度颜色特性、边界区域特性、纹理特性、形状拓扑特性以及关系结构等。而本论文所研究的边缘检测及提取与轮廓跟踪技术是实现上述目的的重要技术基础。2.2

20、.2 图像处理的主要方法计算机图像处理是以计算机为主要工具,应用相关软件来实现。主要包括以下几方面的内容:1图像的获取、表示和表现该过程主要是把模拟图像信号转化为计算机所能接受的数字形式,以及把数字图像显示和表现出来(如打印)。这一过程主要包括摄取图像、光电转换及数字化等几个步骤。2图像复原(Image Restoration) 当造成图像退化(图像品质下降)的原因已知时,复原技术可以对图像进行校正。图像复原最关键的是对每种退化都需要有一个合理的模型。例如,掌握了聚焦不良成像系统的物理特性,便可建立复原模型,而且对获取图像的特定光学系统的直接测量也是可能的。退化模型和特定数据一起描述了图像的退

21、化,因此,复原技术是基于模型和数据的图像恢复,其目的是消除退化的影响,从而产生一个等价于理想成像系统所获得的图像。3图像增强(Image Enhancement)图像增强是对图像质量在一般意义上的改善。当无法知道图像退化有关的定量信息时,可以使用图像增强技术较为主观地改善图像的质量。所以,图像增强技术是用于改善图像视感质量所采取的一种方法。因为增强技术并非是针对某种退化所采取的方法,所以很难预测哪一种特定技术是最好的,只能通过试验和分析误差来选择一种合适的方法。有时可能需要彻底改变图像的视觉效果,以便突出重要特征的可观察性,使人或计算机更易观察或检测。在这种情况下,可以把增强理解为增强感兴趣特

22、征的可检测性,而非改善视感质量。电视节目片头或片尾处的颜色、轮廓等的变换,其目的是得到一种特殊的艺术效果,增强动感和力度。4图像分割(Image Segmentation)把图像分成区域的过程就是图像分割。图像中通常包含多个对象,例如,一幅医学图像中显示出正常的或有病变的各种器官和组织。图像处理为达到识别和理解的目的,几乎都必须按照一定的规则将图像分割成区域,每个区域代表被成像的一个物体(或部分)。图像自动分割是图像处理中最困难的问题之一。人类视觉系统的优越性,使得人类能够将所观察的复杂场景中的对象分开,并识别出每个物体。但对计算机来说,这却是一个难题。目前,大部分图像的自动分割还需要人工提供

23、必需的信息来帮助,只有一部分领域(如印刷字符自动识别(OCR)、指纹识别等)开始使用。由于解决和分割有关的基本问题是特定领域中图像分析实用化的关键一步,因此,将各种方法融合在一起并使用知识来提高处理的可靠性和有效性是图像分割的研究热点。5图像分析图像处理应用的目标几乎均涉及到图像分析,即对图像中的不同对象进行分割、特征提取和表示,从而有利于计算机对图像进行分类、识别和理解。在工业产品零件无缺陷且正确装配检测中,图像分析是对图像中的像素转化成一个“合格”或“不合格的判定。在有的应用中,如医学图像处理,不仅要检测出物体(如肿瘤)的存在,而且还要检查物体的大小。6图像重建图像重建与上述的图像增强、图

24、像复原等不同。图像增强、图像复原的输入是图像,处理后输出的结果也是图像,而图像重建是指从数据到图像的处理,即输入的是某种数据,而经过处理后得到的结果是图像,CT就是图像重建处理的典型应用实例。目前,图像重建与计算机图形学相结合,把多个二维图像合成三维图像,并加以光照模型和各种渲染技术,能生成各种具有强烈真实感的高质量图像。7图像压缩编码数字图像的特点之一是数据量庞大。尽管现在有大容量的存贮器,但仍不能满足对图像数据(尤其是动态图像、高分辨率图像)处理的需要,因此在实际应用中图像压缩是必需的。如果数据不压缩,则在存储和传输中就需要占很大的容量和带宽,因而增加了成本。图像压缩的目的就是压缩数据量。

25、图像编码主要是利用图像信号的统计特性及人类视觉的生理学及心理学特性,对图像信号进行高效编码,即研究数据压缩技术,目的是在保证图像质量的前提下压缩数据,便于存储和传输,以解决数据量大的矛盾。数字图像的边缘检测与轮廓跟踪是图像分割,目标区域识别,区域形状提取等图像分析领域十分重要的基础,图像理解和分析的第一步往往就是边缘检测,目前它已成为机器是视觉研究领域最活跃的课题之一,在应用中占十分重要的地位。这也正是本文所要探讨的问题,将在下面作详细的论述。2.3 VC+可视化编程概述2.3.1 概述VC+是Microsoft公司推出的开发Win32应用程序(Windows95/98/2000/XP/NT)

26、的面向对象的可视化集成工具。随着VC+所提供的Microsoft基础类库(MFC),对Windows 95/NT所用的Win32应用程序接口(Win32 Application Programming InterfaceAPI)进行了彻底的封装,从而可以使用完全的面向对象的方法来进行Win32应用程序的开发,这样大大缩短了应用程序开发周期,降低了开发成本,也将程序员从大量的复杂劳动中解放出来。VC+ Developer Studio包含有编写程序源代码的文本编辑器、设计用户界面(菜单、对话框、图标等)的资源编辑器、建立项目配置的项目管理器、检查程序错误的集成调试器等工具,同时它还提供了功能强大

27、的应用程序向导工具AppWizard和类向导工具Class Wizard。AppWizard用于生成各种不同类型的具有Windows界面风格的应用程序的基本框架,在生成应用程序框架后,使用ClassWizard便可轻松完成创建新类、定义消息处理函数、重载虚拟函数等操作。2.3.2用户界面的使用VC+6.0提供有多种不同用途的菜单命令和工具按钮,多数菜单和工具按钮是人们熟悉的标准Windows菜单和工具铵钮。用VC+6.0开发应用程序主要涉及三大类型的文件:文件(Files)、项目(Projects)和工作区(Workspaces)。在VC+ 6.0中,通常意义下开发一个Windows应用程序是

28、指生成一个项目,该项目包含着一组相关的文件,如各种头文件(.h)、实现文件(.cpp)、资源文件(.rc)、图标文件(.ico)、位图文件(.bmp)等,而该项目必须在一个工作区打开。所以,当第一次建立一个应用程序时,应选择新建一个项目,此时VC+6.0自动建立一个工作区,并把新建的项目在该工作区中打开,以后要对该项目进行修改、补充、增加等工作,只要打开对应的工作区即可。VC+6.0以项目工作区(Project Workspace)的方式来组织文件、项目和项目配置,通过项目工作区窗口可以查看和访问项目中的所有元素。首次创建项目工作区时, 要创建一个项目工作区目录、一个项目工作区文件、一个项目文

29、件和一个工作区选项文件。项目工作区文件用于描述工作区及其内容,扩展名为.dsw。项目文件用于记录项目中各种文件的名字和位置,扩展名为.dsp。工作区选项文件用于存储项目工作区设置,扩展名为.opt。创建或者打开项目工作区时,VC+6.0将在项目工作区窗口中显示与项目有关的信息。项目工作区窗口主要由三个面板构成,即FileView、ResouceView和ClassView,分别用于显示项目中定义的C+类、资源文件和包含在项目工作区中的文件。每个面板用于指定项目工作区中所有项目的不同视图,视图中每个文件夹可以包含其他文件夹或各种元素(如,子项目、文件、资源、类和标题等)。通过项目工作区窗口可以定

30、位到项目中的任一位置,以对其进行相应的编辑(源程序、资源等)。编辑区窗口打开文本编辑器和资源编辑器。文本编辑器的使用与Word非常类似,通过它可方便的进行程序源代码的输入、编辑和修改工作。在资源编辑器中可进行各种资源的编辑工作,如对话框、图标、菜单、位图等,从而直观地设计程序的用户界面。输出窗口用于显示项目建立过程中所产生的错误信息、调试过程中的输出信息等,用它可以方便地定位到工程中的错误位置,观察到程序调试过程中的输出结果。2.3.3 编程的基本流程VC+的资源编辑器能以所见即所得(What you see is what you get)的形式直接编辑应用程序用户界面,为所有资源分配ID标

31、识号。ClassWizard能把对话框模板与自动生成的类定义或与已有的类代码连接起来,为菜单项、控件等资源生成空的处理函数模板,创建消息映射函数模板,并将资源ID与处理函数联接起来。通过使用AppWizard,程序员的编程工作便简化为用资源编辑器直观地设计界面,完善对话框类代码。在空的处理函数模板处填写响应用户操作的代码,是一种完善的可视化编程方法。用VC+进行Win32可视化编程的基本流程如下:1生成框架:运行AppWizard,并按需要指定生成应用程序的选项,指定框架中视类的基类(CView、CEditView、CFormView、CScrollView、CTreeView等)。AppWi

32、zard将按指定的选项生成应用程序框架和相关的文件,包括项目(project)的工作空间(workspace)文件和源文件,主要是应用程序(application)、文档(document)、视(view)和主框窗口(main frame)的C+代码文件(*.cpp, *.h文件),以及缺省包含标准界面接口的资源文件(*.rc)。2设计用户界面:利用VC+资源编辑器编辑资源文件,设计菜单、对话框、工具条、字符串、加速键、位图、图标、光标等项目资源。同时联接界面和代码时利用ClassWizard把资源文件中定义的界面资源标识ID(如菜单项、工具条和对话框中的控件等)在指定的源文件中映射成相应的函

33、数模板。而编写、修改函数代码时利用ClassWizard可以方便地在源代码编辑器(source code editor)中跳转到指定的函数代码处。3根据需要创建新类和编写代码:用ClassWizard创建新类,并生成相应的源文件。如新类是对话框类,可先用资源编辑器生成对话框模板,然后用ClassWizard创建对话框类代码,并与模板联接,编写新类相关的源代码。4实现文档类:在AppWizard生成的框架基础上设计文档数据的数据结构,在文档类中增加相应的成员变量和成员函数,实现对数据的操作和文档与数据的接口。5实现框架中标准的文件操作命令,即Open、Save和Save As命令:框架已完成标准

34、的文件操作命令的所有接口,程序员要做的仅仅是编写文档类的串行化(Serialize())成员函数。6实现视类:框架已构造好了文档与视的关系,视能方便地访问文档中的public数据成员,可根据文档的需要构造一个或多个视类。通过ClassWizard把视的用户接口资源映射成函数模板,并编写函数代码。7如需要,增加分割窗口(splitter window):在SDI的主框窗口类或MDI的子窗口类中添加一个CSplitterWnd对象,并在窗口类的OnCreateClient成员函数中对CSplitterWnd对象进行创建和初始化。如果用户分割了一个窗口,框架将给文档创建并增加附加的视对象。8建立、调

35、试、修改应用程序。如有问题,可根据需要重复上述步骤。9测试应用程序。如有问题,可根据需要重复上述步骤。2.4 用于图像处理的ImageLoad.dll动态链接库2.4.1 ImageLoad.dll库简介本文研究的重点是图像处理,因此我们要重点了解ImageLoad.dll的导出函数与处理图像文件相关的函数。该动态链接库共有22个函数,其中18个函数与图像文件的读写操作有关,这些函数分为三类:Load函数用于读入图像文件;Save函数用于保存图像文件;Get函数用于获取图像文件的相关信息。对于ImageLoad.dll动态链接库,查看其定义头文件ImageLoad.h便可对其属性(成员变量)和

36、方法(成员函数)有一全面的了解。/ImageLoad.h/ Generic /Image Type#define IMAGETYPE_NONE 0#define IMAGETYPE_BMP1#define IMAGETYPE_GIF2#define IMAGETYPE_PCX3#define IMAGETYPE_TGA4#define IMAGETYPE_JPG5#define IMAGETYPE_TIF6#ifdef - -cplusplusextern C#endif/ Errorint - -declspec (dllexport) GetLastPicLibError( void );

37、/ Type filenameint- -declspec (dllexport) FileType( const char * );/ BMP / / hDib filenameHGLOBAL- -declspec (dllexport) LoadBMP( const char * );/ Success filename w h planes bits colorsBOOL- -declspec(dllexport)GetBMPInfo(const char *,int *,int *,int *,int *,int * ); / Success filename hDibBOOL- -d

38、eclspec (dllexport) SaveBMP( const char *, HGLOBAL ); / GIF / hDib filenameHGLOBAL- -declspec (dllexport) LoadGIF( const char * );/ Success filename w h planes bits colorsBOOL- -declspec (dllexport) GetGIFInfo(const char *,int *,int *,int*,int *,int * );/ Success filename hDibBOOL- -declspec (dllexp

39、ort) SaveGIF( const char *, HGLOBAL ); / PCX / hDib filenameHGLOBAL- -declspec (dllexport) LoadPCX( const char * );/ Success filename w h planes bits colorsBOOL- -declspec (dllexport) GetPCXInfo(const char *,int *,int *,int *,int *,int * ); / Success filename hDibBOOL- -declspec (dllexport) SavePCX(

40、 const char *, HGLOBAL );/ TGA / hDib filenameHGLOBAL- -declspec (dllexport) LoadTGA( const char * );/ Success filename w h planes bits colorsBOOL- -declspec (dllexport) GetTGAInfo(const char *,int *,int *,int *,int *, int * );/ Success filename hDibBOOL- -declspec (dllexport) SaveTGA( const char *,

41、 HGLOBAL ); / TIF / hDib filenameHGLOBAL- -declspec (dllexport) LoadTIF( const char * );/ Success filename w h planes bits colorsBOOL- -declspec (dllexport) GetTIFInfo(const char *,int *,int *,int *,int *,int * ); / Success filename hDibBOOL- -declspec (dllexport) SaveTIF( const char *, HGLOBAL ); /

42、 JPG / hDib filenameHGLOBAL- -declspec (dllexport) LoadJPG( const char * );/ Success filename w h planes bits colorsBOOL- -declspec (dllexport) GetJPGInfo( const char *,int *,int *,int *, int *, int * );/ Success filename hDibBOOL- -declspec (dllexport) SaveJPG( const char *, HGLOBAL, int ); / PALET

43、TE / Count RGB History Colormap MaxColorsWORD- -declspec (dllexport) MedianCut( WORD Hist, BYTE ColMap3, int );WORD- -declspec (dllexport) Popularity(ZK() unsigned char *pBits, int nBits, int nWidth, int nHeight, BYTE ColorMap3 );ZK。#ifdef - - cplusplus#endif 另外,为处理出错信息,还定义了一个ImageErros.h文件来声明读写图像文件

44、时的错误代码,其内容如下:/ ImageErros.h#ifndef- -ERRORS_H- -#define- -ERRORS_H- -。#define IMAGELIB_SUCCESS 0/ File errors#define IMAGELIB_FILE_OPEN_ERROR 1#define IMAGELIB_FILE_CREATION_ERROR-2#define IMAGELIB_FILE_WRITE_ERROR-3#define IMAGELIB_FILE_READ_ERROR-4/ Memory erros#define IMAGELIB_MEMORY_ALLOCATION_E

45、RROR-50#define IMAGELIB_MEMORY_LOCK_ERROR-51/ Argument errors#define IMAGELIB_NODIB -100。/ Operate errors#define IMAGELIB_UNSUPPORTED_FILETYPE -200#define IMAGELIB_HDIB_NULL -201#define IMAGELIB_LOGICAL_PALETTE_CREATION_ERROR -202#define IMAGELIB_NO_PALETTE_FOR_HIGH_COLOR-203#define IMAGELIB_STRETCH

46、DIBITS_ERROR -204#define IMAGELIB_PALETTE_QUANTIZE_ERROR -205#define IMAGELIB_ATTEMPT_CHANGE_TO_SAME -206#define IMAGELIB_ROTATION_VALUE_ERROR -207#define IMAGELIB_ROTATE_ERROR -208。#endif2.4.2使用ImageLoad.dll动态链接库要使用ImageLoad.dll动态链接库,需如下四个步骤:1 .mageLoad.dll拷贝到应用程序所在的目录、Windows目录、WindowsSystem目录或Win

47、dowsSystem32目录。2将ImageErros.h、ImageLoad.h两个头文件及ImageLoad.lib库文件拷贝到当前工程目录或是在VC+集成开发环境中设置其所在的路径。3用VC+的ProjectAdd to projectFiles.菜单将ImageLoad.lib添加到程中。4在要用到ImageLoad.dll的C+头文件(.h)或实现文件(.cpp)中用#include ImageErros.h和#includeImageLoad.h两个语句将两个头文件包含到应用程序的设计中。这样就可以利用ImageLoad.dll动态链接库提供的相应函数,来完成六种格式图像文件的读写

48、操作。2.5 图像处理所用到CDibObject类的设计由于MFC没有封装处理与DIB位图相关的Windows API函数的类2,所以本着面向对象的思想,有必要设计一个CDibObject类来完成如下功能:(1)读取某种类型的图像文件;(2)获取图像的相关信息;(3)显示图像;(4)以相同或不同类型格式的图像文件保存该图像。这样在以后的数字图像处理中,可方便地将CDibObject类添加进设计的工程中以完成相应的处理。2.5.1 公用方法的设计根据对CDibObject类的基本要求,它至少应该具有下述方法(成员函数):1构造函数:该类应提供三个不同版本的构造函数,一个是无参构造函数,用于动态创

49、建对象;一个是接受文件名作为参数的构造函数,用于创建一个与由文件名指定的图像文件相对应的有意义的对象;另外,还应提供一个复制构造函数,以便将一个CDibObject类对象的属性直接复制到另一个CDibObject类对象中。2Load()函数:该函数将一个图像文件装入CDibObject类对象,它以接受的文件名作为参数。3Save()函数:该函数用指定的文件名将保存在CDibObject类对象中的当前图像保存为一个图像文件,该文件名同时也应指定保存图像的文件类型。4Draw()函数:该函数在指定的设备描述表上绘制图像,它应接受指向该设备环境的指针作为参数。调用此绘图函数时,也应该指定绘制图像的位

50、置坐标。5与图像信息有关的函数:即一系列用于获取和设置类属性的Get/Set函数。这些函数用来获取和设置图像的各种信息,如图像的类型、高度、宽度、位平面数、单个像素的位数、图像使用的颜色数等。与调色板操作有关的函数:即用于创建、获取、设置逻辑或系统调色板的颜色数和调色板数据等信息的函数。2.5.2 设计类的属性CDibObject类主要应设计如下属性(成员变量)(1)char*m_pszFilename:此变量用来保存图像文件名。(2)int m_nImageType:此变量用来保存图像类型,图像类型由文件“ImageLoad.h”定义。值得注意的是,图像的类型必须使用“ImageLoad.h

51、”定义的原始顺序,它与“ImageLoad.dll”中的函数FileType返回的int类型的值相对应,对此不能进行改变。(3)HGLOBAL m_hDib:当图像载入后,使用此变量获取该图像的Dib(DeviceIndependentBitmap设备无关位图)句柄。实际上无论什么类型的图像文件,如果要在Windows操作系统中显示,都应该使用DIB位图格式。(4)int m_nWidth,m_nHeight,m_nPlanes,m_nBits,m_nColors:这些变量分别描述图像的宽度、高度、位平面数、每像素的位数(1、4、8、16、24或32位)和颜色数。(5)int m_nX,m_n

52、Y:用这两个变量确定绘制图像的左上角位置。(6)CPalette m_Palette:此变量指定图像中使用的调色板对象。(7)int m_nPaletteCreationType:当需要通过颜色还原一幅具有调色板的图像时使用此变量确定调色板类型。其中,0表示JGPT_POPULARITY_PALETTE,1表示JGPT_MEDIAN_CUT_PALETTE,2表示JGPT_FIXED_PALETTE。(8)LOGPALETTE *m_pLogPal:该指针型变量用来指向图像所使用的逻辑调色板。(9)int m_nQuality:使用此变量描述JPEG图像的压缩质量。该值为0到100之间的整数,

53、其值越大,图像质量越好,但文件尺寸也将越大。(10)int m_nLastError:该变量用来保存最后一次图像处理中的错误号,错误号由“ImageErros.h”头文件定义。2.6 使用CDibObject类2.6.1 添加CDibObject类定义文件由于本文所研究的课题是对图像的边缘及轮廓的处理这样就需要在工程中添加CdibObject类。过程如下:将“DibObject.h”和“DibObject.cpp”两个文件复制到当前工程目录。选择VC+集成开发环境的ProjectAdd to projectFiles.菜单项,系统打开如“Insert Files into Project”对话

54、框。选择文件“DibObject.h”和“DibObject.cpp”,单击“OK”将这两个文件添加到当前工程中。这样便将上一节所设计的CDibObject类添加到当前的工程中,从而可以使用类中提供的方法和属性。2.6.2 设置工程选项同时还需要使用ImageLoad.dll动态链接库,添加方法如前所述,先将其拷贝至Windows系统目录下(Windows 95/98为“System”目录,Windows 2000/XP/NT为“System32”目录)或将其复制到编译后的应用程序当前目录(“Debug”或“Release”目录)。再将ImageLoad.dll动态链接库相关的“ImageLo

55、ad.h”、“ImageLoad.lib”和“ImageErros.h”复制到当前工程目录。选择VC+集成开发环境的ProjectSettings.菜单项,系统打开“ProjectSettings”对话框,在“Object/Library modules”编辑框中输“ImageLoad.lib”,单击“OK”。这样便可在所建应用程序中使用ImageLoad.dll动态链接库提供的多格式图像文件的打开和保存函数,轻松完成图像文件的读写工作。- 47 -沈阳工程学院毕业论文 第3章 系统需求分析第3章 系统需求分析3.1系统的主要功能本文主要就是研究边缘处理技术的一些算法。我们是常的用经典的边缘检

56、测方法是构造对像素灰度级阶跃变化敏感的微分算子,如robert梯度算子、Sobel梯度算子等,其边缘检测速度快,但得到的往往是断续的、不完整的结构信息,这类方法对噪声较为敏感,为了有效抑制噪声,一般都首先对原图像进行平滑,再进行边缘检测就能成功地检测到真正的边缘。边缘检测技术中较为成熟的方法是线性滤波器,其中尤其是以拉普拉斯LOG(Laplace of Gauss)算子最为有名,LOG算子较好地解决了频域最优化和空域最优化之间的矛盾,计算方法也比较简单方便,另外,该算子在过零点检测中具有各向同性特点,保证了边缘的封闭性,符合人眼对自然界中大多数物体的视觉效果;不过LOG算子的边缘定位精度较差,

57、而边缘定位精度和边缘的封闭性两者之间无法客观地达到最优化折衷19。并力求在VC的环境下来实现它们,以求达到对图像处理的最佳效果。因此本文解决问题的方法就是通过研究可行的算法来达到预期的效果。3.2需求分析需求分析工作是软件开发周期中重要的一步,通过需求分析可以把软件的功能和性能需求完整、准确的表达给开发人员,从而避免在以后的开发过程中出现一些不必要的问题。对用户需求的分析应该全面、深入、发展。3.2.1系统业务流程图打开文件选取图象 处理图象 保存图象 多次处理3.2.2 概念设计概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关

58、的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁,是设计数据库结构的基础。沈阳工程学院毕业论文 第4章 系统总体设计第4章 系统总体设计4.1 系统功能要求及说明和实现方法本部分主要介绍系统要实现的功能,搭好设计的总体框架,使我们对要开发的系统有一个系统、全面、确切的

59、认识。1功能要求(1)整体结构合理,风格一致,模块化结构,界面清晰,接口灵活,操作简便。(2)开发方法,文档规范化,便于管理,可扩充。(3)完善的数据输入,维护,输出。(4)自检性能高,用户误输、错输均有提示。(5)容错性能高,某个用户的操作错误不会引起整个系统的瘫痪,每一功能的操作都有信息提示以免重复操作,错误操作有警告,以便用户及时改正。2实现方法(1)用AppWisard生成项目框架,该项目支持多文档界面。(2)创建菜单,主框架。(3)设计Cdib类。由于MFC中已有DDB操作的Cbitmap类,因此,很直观的想法是以Cbitmap类为父类派生出CDib类。但是,从长远考虑,这样做并没有

60、什么好处。因为首先,Cbitmap类是为DDB的操作而设计的,其中没有处理Dib类的功能,因此CDib类不能从中继承任何可用功能。其次,CBitmap类是从CGdiObject中派生来的,Cbitmap类以及它从CgdiObject类继承来的数据成员和功能函数对CDib来说都是不合适的,也是多余的。此外,Cbitmap类没有提供有效的文件操作机制,DIB主要是一种“外部”位图,即主要以文件形式进行存储和交换,所以CDib类应该能很好的处理文件操作。MFC中的Cobject类是MFC中其他大多数类的根类和基类。它提供了许多有用的特性,包括对文件串行化的支持,运行时的类信息和对象诊断输出等。如果从Cobj

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!