毕业设计(论文)图象边缘处理系统_第1页
毕业设计(论文)图象边缘处理系统_第2页
毕业设计(论文)图象边缘处理系统_第3页
毕业设计(论文)图象边缘处理系统_第4页
毕业设计(论文)图象边缘处理系统_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、对木材形状和缺陷进行识别提供了必要的理论前提和技术基础。 关键词 图像处理,边缘检测,轮廓提取,轮廓跟踪,VC+6.0 Abstract The 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, r

4、are species 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

5、of this issue 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 f

6、or turning 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 p

7、icture characteristic 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 wit

8、hdraws and follows. Offer the necessary theories for identify defect of the timber shape. Keywords image processing, edge detection, outline withdrawing, outline following 目 录 摘 要.I Abstract.II 第 1 章 绪 论.1 1.1 论文研究的目的和意义.1 1.2 论文主要研究内容.1 第 2 章 图像处理概述及开发工具简介.3 2.1 数字图像与数字图像处理.3 2.1.1 数字图像.3 2.1.2 数字图

9、像处理.3 2.2 数字图像处理的方法.4 2.2.1 图像处理的目的.4 2.2.2 图像处理的主要方法.4 2.3 VC+可视化编程概述.6 2.3.1 概述.6 2.3.2 用户界面的使用.6 2.3.3 编程的基本流程.7 2.4 用于图像处理的 ImageLoad.dll 动态链接库.8 2.4.1 ImageLoad.dll 库简介.8 2.4.2 使用 ImageLoad.dll 动态链接库.11 2.5 图像处理所用到 CDibObject 类的设计.11 2.5.1 公用方法的设计.11 2.5.2 设计类的属性.12 2.6 使用 CDibObject 类.13 2.6.1

10、 添加 CDibObject 类定义文件.13 2.6.2 设置工程选项.13 第 3 章 系统需求分析.14 3.1 系统的主要功能.14 3.2 需求分析.14 3.2.1 系统业务流程图.14 3.2.2 概念设计.14 第 4 章 系统总体设计.16 4.1 系统功能要求及说明和实现方法.16 4.2 系统的结构功能模块.17 第 5 章 系统详细设计与实现.19 5.1 图像边缘检测.19 5.1.1 边缘检测的基本概念.19 5.1.2 边缘检测算子介绍.19 5.1.3 边缘检测的示例.26 5.2 图像的轮廓提取与轮廓跟踪.26 5.2.1 图像的轮廓提取.26 5.2.2 图

11、像的轮廓跟踪.29 结 论.33 致 谢.34 参考文献.35 附 录.36 A1.1 程序主要代码 .36 A1.2 使用说明 .46 第 1 章 绪 论 1.1论文研究的目的和意义 图像处理技术起源于 20 世纪 20 年代,近 30 年来它随着计算机科学的蓬勃兴起而 迅速的发展。目前已成为计算机科学医学生物学工程学信息科学等学科研究 的对象,其应用遍及通信教育商务宣传文艺工业农业气象地质海 洋生物医学遥感等诸多领域。本文主要针对应用计算机视觉系统,对图像的边缘检 测与提取及轮廓跟踪技术进行研究。实现图像表面缺陷的自动检测,对灰质等级自动 分选提高图像价值有非常重要的作用。而影响检测整体水

12、平的重要方面之一是缺陷 图像的处理过程,而本文研究的重点图像的边缘检测与提取及轮廓跟踪技术是图像分 割,目标区域识别区域行状提取等图像分析处理领域十分重要的基础。 近年来,对图像表面问题及缺陷检测的研究有很大进展,但还没有达到实用化程 度。寻求非接触精度高具有综合分析能力的识别方法来代替人工目测,解决图像 表面的模式识别和测量问题,是图像加工行业面临的一大难题,也是值得我们长期探 讨的科研课题。这也正是本文研究的目的所在。 目前应用计算机技术检测缺陷已在国外某些领域得到应用,比如玻璃缺陷识别 钢丝绳表面缺陷及地板表面缺陷检测等。国内在木材表面木材解剖特征等方面应用 了这一技术。因此为了更好的对

13、图像处理,提高计算机视觉技术应用的可行性,本论 文的研究在实际上和理论上都具有先进性和可行性。 1.2论文主要研究内容 边缘检测与提取及轮廓跟踪技术是数字图像处理的重要内容这也正是本文所要研 究的。因为在实际图像中(不包括有计算机图形学制作的图像),即使用眼睛可以清 楚地确定边缘,但在灰度变化模型中也有一些会变钝灰度变化量会变小,从而使得 提取清晰的边缘十分困难,因此我们需要应用各种各样的算法来实现使边缘清晰的处 理。而我们理想的边缘检测应当正确解决边缘的有无、真假、和定向定位,长期以来, 人们一直关心这一问题的研究,除了常用的局部算子及以后在此基础上发展起来的种 种改进方法外,目前国内外又提

14、出了许多新的技术,其中,突出的有 LOG,用 Facet 模型检测边缘,Canny 的最佳边缘检测器,统计滤波检测以及随断层扫描技术兴起的 三维边缘检测等。 目前我们是常的用经典的边缘检测方法是构造对像素灰度级阶跃变化敏感的微分 算子,如 robert 梯度算子、Sobel 梯度算子等,其边缘检测速度快,但得到的往往是断 续的、不完整的结构信息,这类方法对噪声较为敏感,为了有效抑制噪声,一般都首 先对原图像进行平滑,再进行边缘检测就能成功地检测到真正的边缘。边缘检测技术 中较为成熟的方法是线性滤波器,其中尤其是以拉普拉斯 LOG(Laplace of Gauss)算 子最为有名,LOG 算子较

15、好地解决了频域最优化和空域最优化之间的矛盾,计算方法 也比较简单方便,另外,该算子在过零点检测中具有各向同性特点,保证了边缘的封 闭性,符合人眼对自然界中大多数物体的视觉效果;不过 LOG 算子的边缘定位精度较 差,而边缘定位精度和边缘的封闭性两者之间无法客观地达到最优化折衷。 本文主要就是研究边缘处理技术的一些算法,并力求在 VC 的环境下来实现它们, 以求达到对图像处理的最佳效果。因此本文解决问题的方法就是通过研究可行的算法 来达到预期的效果。 第 2 章 图像处理概述及开发工具简介 2.1 数字图像与数字图像处理 2.1.1 数字图像 用计算机进行图像处理的前提是图像必须以数字格式存储,

16、我们把以数字格式存 放的图像称之为数字图像。数字图像是连续图像的一种近似表示,通常用由样点的值 所组成的矩阵来表示。每一个采样点叫做一个像素(pixel)。在计算机内通常采用二 维数组来表示数字图像矩阵。把像素按不同的方式进行组织或存储,就得到不同的图 像格式。把图像数据存成文件就得到图像文件。图像文件按其数字图像格式的不同一 般具有不同的扩展名,常见图像文件格式有位图文件(*.BMP)、TGA 文件(*.TGA)、 PCX 文件(*.PCX)、GIF 文件(*.GIF)、TIFF 文件(*.TIFF)等。在 Windows 系统中,最常 用的图像格式是位图格式,其文件名以 BMP 为扩展名。

17、我们通常见的各种照片、图片、 海报、广告画等均属模拟图像,要将模拟图像数字化后生成数字图像,需要利用数字 化设备。目前,将模拟图像数字化的主要设备是扫描仪,将视频画面数字化的设备有 图像采集卡。当然,也可以利用数码照相机直接拍摄以数字格式存放的数字图像。模 拟图像经扫描仪进行数字化或由数码照相机拍摄的自然景物图像,在计算机中均是以 数字格式存储的。既然是数字,计算机当然可以方便地进行各种处理,以达到视觉效 果和特殊效果。本论文就是针对数字图像的一种灰度图像来进行研究。 2.1.2 数字图像处理 现在说到数字图像处理,就意味着基于计算机的图像处理。我们把利用计算机对 图像进行去除噪声、增强、复原

18、、分割、提取特征,以及本论文所要研究的边缘检测 和轮廓跟踪等的理论、方法和技术称为数字图像处理(Digital Image Processing)。一 般,图像处理是用计算机和实时硬件实现的,因此也称之为计算机图像处理 (Computer Image Processing)。 随着近几十年来计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应 用。目前,图像处理技术已经广泛应用于工业军事医学交通农业等各个领域。 例如,电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动 识别和利用指纹、虹膜、面部等特征的身份识别等。在医学领域,很早以前就采用 X 射线透视、显微镜照片等来诊

19、断疾病。现在,计算机图像处理已成为疾病诊断的重要 手段,用一般摄影方法不能获取的身体内部的状况,也能由特殊的图像处理装置获取, 最具有代表性的就是 X 射线 CT(Computed Tomograph,计算机断层摄像)。正是 由于各种实际应用的需求,计算机图像处理技术必将更加迅速地向广度和深度发展。 这也给我们对图像处理的研究提出了新的课题。 2.2 数字图像处理的方法 2.2.1 图像处理的目的 一般而言,利用计算机进行图像处理主要地目的就是产生更适合人观察和识别的 像 或者由计算机自动识别和理解图像。如去除图像中的噪声,改变图像的 灰度、颜色,增强图像中的某些成份、抑制某些成份,对图像进行

20、几何变换等,从而 改善图像的质量像的质量,以达到或真实的、或清晰的、或色彩丰富的、或意想不到 的艺术效果。提取图像中所包含的某些特征或特殊信息,以便于计算机分析,例如, 常用作模式识别计算机视觉的预处理等。这些特征包括很多方面,如频域特性、灰度 颜色特性、边界区域特性、纹理特性、形状拓扑特性以及关系结构等。而本论 文所研究的边缘检测及提取与轮廓跟踪技术是实现上述目的的重要技术基础。 2.2.2 图像处理的主要方法 计算机图像处理是以计算机为主要工具,应用相关软件来实现。主要包括以下几 方面的内容: 1图像的获取、表示和表现 该过程主要是把模拟图像信号转化为计算机所能接受的数字形式,以及把数字图

21、 像显示和表现出来(如打印)。这一过程主要包括摄取图像、光电转换及数字化等几 个步骤。 2图像复原(Image Restoration) 当造成图像退化(图像品质下降)的原因已知时,复原技术可以对图像进行校正。 图像复原最关键的是对每种退化都需要有一个合理的模型。例如,掌握了聚焦不良成 像系统的物理特性,便可建立复原模型,而且对获取图像的特定光学系统的直接测量 也是可能的。退化模型和特定数据一起描述了图像的退化,因此,复原技术是基于模 型和数据的图像恢复,其目的是消除退化的影响,从而产生一个等价于理想成像系统 所获得的图像。 3图像增强(Image Enhancement) 图像增强是对图像质

22、量在一般意义上的改善。当无法知道图像退化有关的定量信 息时,可以使用图像增强技术较为主观地改善图像的质量。所以,图像增强技术是用 于改善图像视感质量所采取的一种方法。因为增强技术并非是针对某种退化所采取的 方法,所以很难预测哪一种特定技术是最好的,只能通过试验和分析误差来选择一种 合适的方法。有时可能需要彻底改变图像的视觉效果,以便突出重要特征的可观察性, 使人或计算机更易观察或检测。在这种情况下,可以把增强理解为增强感兴趣特征的 可检测性,而非改善视感质量。电视节目片头或片尾处的颜色、轮廓等的变换,其目 的是得到一种特殊的艺术效果,增强动感和力度。 4图像分割(Image Segmentat

23、ion) 把图像分成区域的过程就是图像分割。图像中通常包含多个对象,例如,一幅医 学图像中显示出正常的或有病变的各种器官和组织。图像处理为达到识别和理解的目 的,几乎都必须按照一定的规则将图像分割成区域,每个区域代表被成像的一个物体 (或部分)。图像自动分割是图像处理中最困难的问题之一。人类视觉系统的优越性, 使得人类能够将所观察的复杂场景中的对象分开,并识别出每个物体。但对计算机来 说,这却是一个难题。目前,大部分图像的自动分割还需要人工提供必需的信息来帮 助,只有一部分领域(如印刷字符自动识别(OCR)、指纹识别等)开始使用。由于 解决和分割有关的基本问题是特定领域中图像分析实用化的关键一

24、步,因此,将各种 方法融合在一起并使用知识来提高处理的可靠性和有效性是图像分割的研究热点。 5图像分析 图像处理应用的目标几乎均涉及到图像分析,即对图像中的不同对象进行分割、 特征提取和表示,从而有利于计算机对图像进行分类、识别和理解。在工业产品零件 无缺陷且正确装配检测中,图像分析是对图像中的像素转化成一个“合格”或“不合格的 判定。在有的应用中,如医学图像处理,不仅要检测出物体(如肿瘤)的存在,而且 还要检查物体的大小。 6图像重建 图像重建与上述的图像增强、图像复原等不同。图像增强、图像复原的输入是图 像,处理后输出的结果也是图像,而图像重建是指从数据到图像的处理,即输入的是 某种数据,

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

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

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

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

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

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

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

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

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

34、利用 ClassWizard 把资源文件中定义的界面资源标识 ID(如菜单项、工具条和对话框中的控 件等)在指定的源文件中映射成相应的函数模板。而编写、修改函数代码时利用 ClassWizard 可以方便地在源代码编辑器(source code editor)中跳转到指定的函数代码 处。 3根据需要创建新类和编写代码:用 ClassWizard 创建新类,并生成相应的源文 件。如新类是对话框类,可先用资源编辑器生成对话框模板,然后用 ClassWizard 创建 对话框类代码,并与模板联接,编写新类相关的源代码。 4实现文档类:在 AppWizard 生成的框架基础上设计文档数据的数据结构,在

35、 文档类中增加相应的成员变量和成员函数,实现对数据的操作和文档与数据的接口。 5实现框架中标准的文件操作命令,即 Open、Save 和 Save As 命令:框架已完 成标准的文件操作命令的所有接口,程序员要做的仅仅是编写文档类的串行化 (Serialize())成员函数。 6实现视类:框架已构造好了文档与视的关系,视能方便地访问文档中的 public 数据成员,可根据文档的需要构造一个或多个视类。通过 ClassWizard 把视的用户接口 资源映射成函数模板,并编写函数代码。 7如需要,增加分割窗口(splitter window):在 SDI 的主框窗口类或 MDI 的子 窗口类中添加

36、一个 CSplitterWnd 对象,并在窗口类的 OnCreateClient 成员函数中对 CSplitterWnd 对象进行创建和初始化。如果用户分割了一个窗口,框架将给文档创建 并增加附加的视对象。 8建立、调试、修改应用程序。如有问题,可根据需要重复上述步骤。 9测试应用程序。如有问题,可根据需要重复上述步骤。 2.4 用于图像处理的 ImageLoad.dll 动态链接库 2.4.1 ImageLoad.dll 库简介 本文研究的重点是图像处理,因此我们要重点了解 ImageLoad.dll 的导出函数与处 理图像文件相关的函数。该动态链接库共有 22 个函数,其中 18 个函数与

37、图像文件的 读写操作有关,这些函数分为三类:Load 函数用于读入图像文件;Save 函数用于保存 图像文件;Get 函数用于获取图像文件的相关信息。对于 ImageLoad.dll 动态链接库, 查看其定义头文件 ImageLoad.h 便可对其属性(成员变量)和方法(成员函数)有一 全面的了解。 /ImageLoad.h / Generic / /Image Type#define IMAGETYPE_NONE 0 #define IMAGETYPE_BMP 1 #define IMAGETYPE_GIF2 #define IMAGETYPE_PCX 3 #define IMAGETYPE

38、_TGA 4 #define IMAGETYPE_JPG5 #define IMAGETYPE_TIF6 #ifdef - -cplusplus extern C #endif / Error int - -declspec (dllexport) GetLastPicLibError( void ); / Type filename int- -declspec (dllexport) FileType( const char * ); / BMP / / hDib filename HGLOBAL- -declspec (dllexport) LoadBMP( const char * )

39、; / Success filename w h planes bits colors BOOL- -declspec(dllexport)GetBMPInfo(const char *,int *,int *,int *,int *,int * ); / Success filename hDib BOOL- -declspec (dllexport) SaveBMP( const char *, HGLOBAL ); / GIF / / hDib filename HGLOBAL- -declspec (dllexport) LoadGIF( const char * ); / Succe

40、ss filename w h planes bits colors BOOL- -declspec (dllexport) GetGIFInfo(const char *,int *,int *,int*,int *,int * );/ Success filename hDib BOOL- -declspec (dllexport) SaveGIF( const char *, HGLOBAL ); / PCX / / hDib filename HGLOBAL- -declspec (dllexport) LoadPCX( const char * ); / Success filena

41、me w h planes bits colors BOOL- -declspec (dllexport) GetPCXInfo(const char *,int *,int *, int *,int *,int * ); / Success filename hDib BOOL- -declspec (dllexport) SavePCX( const char *, HGLOBAL );/ TGA / / hDib filename HGLOBAL- -declspec (dllexport) LoadTGA( const char * ); / Success filename w h

42、planes bits colors BOOL- -declspec (dllexport) GetTGAInfo(const char *,int *,int *, int *,int *, int * );/ Success filename hDib BOOL- -declspec (dllexport) SaveTGA( const char *, HGLOBAL ); / TIF / / hDib filename HGLOBAL- -declspec (dllexport) LoadTIF( const char * ); / Success filename w h planes

43、 bits colors BOOL- -declspec (dllexport) GetTIFInfo(const char *,int *,int *, int *,int *,int * ); / Success filename hDib BOOL- -declspec (dllexport) SaveTIF( const char *, HGLOBAL ); / JPG / / hDib filename HGLOBAL- -declspec (dllexport) LoadJPG( const char * ); / Success filename w h planes bits

44、colors BOOL- -declspec (dllexport) GetJPGInfo( const char *,int *,int *,int *, int *, int * ); / Success filename hDib BOOL- -declspec (dllexport) SaveJPG( const char *, HGLOBAL, int ); / PALETTE / / Count RGB History Colormap MaxColors WORD- -declspec (dllexport) MedianCut( WORD Hist, BYTE ColMap 3

45、, int ); WORD- -declspec (dllexport) Popularity(ZK() unsigned char *pBits, int nBits, int nWidth, int nHeight, BYTE ColorMap3 );ZK。#ifdef - - cplusplus #endif 另外,为处理出错信息,还定义了一个 ImageErros.h 文件来声明读写图像文件时 的错误代码,其内容如下: / ImageErros.h #ifndef- -ERRORS_H- - #define- -ERRORS_H- -。#define IMAGELIB_SUCCESS

46、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_ERROR -50 #define IMAGELIB_MEMORY_LOCK_ERROR-51/ Argument errors #define IMAGELIB_NODIB

47、-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_STRETCHDIBITS_ERROR -204 #define IMAGELIB_PALETTE_QUANTIZE_ERROR -205 #define IMAGELIB

48、_ATTEMPT_CHANGE_TO_SAME -206 #define IMAGELIB_ROTATION_VALUE_ERROR -207 #define IMAGELIB_ROTATE_ERROR -208。#endif 2.4.2 使用 ImageLoad.dll 动态链接库 要使用 ImageLoad.dll 动态链接库,需如下四个步骤: 1 .mageLoad.dll 拷贝到应用程序所在的目录、Windows 目录、WindowsSystem 目录或 WindowsSystem32 目录。 2将 ImageErros.h、ImageLoad.h 两个头文件及 ImageLoad.l

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

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

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

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

53、必须使用“ImageLoad.h”定义的原始顺序,它与 “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、

54、16、24 或 32 位)和颜色数。 (5)int m_nX,m_nY:用这两个变量确定绘制图像的左上角位置。 (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

55、 m_nQuality:使用此变量描述 JPEG 图像的压缩质量。该值为 0 到 100 之间 的整数,其值越大,图像质量越好,但文件尺寸也将越大。 (10)int m_nLastError:该变量用来保存最后一次图像处理中的错误号,错误号由 “ImageErros.h”头文件定义。 2.6 使用 CDibObject 类 2.6.1 添加 CDibObject 类定义文件 由于本文所研究的课题是对图像的边缘及轮廓的处理这样就需要在工程中添加 CdibObject 类。过程如下: 将“DibObject.h”和“DibObject.cpp”两个文件复制到当前工程目录。选择 VC+集成 开发环境

56、的 ProjectAdd to projectFiles.菜单项,系统打开如“Insert Files into Project”对话框。 选择文件“DibObject.h”和“DibObject.cpp”,单击“OK”将这两个文件添加到当前工 程中。这样便将上一节所设计的 CDibObject 类添加到当前的工程中,从而可以使用类 中提供的方法和属性。 2.6.2 设置工程选项 同时还需要使用 ImageLoad.dll 动态链接库,添加方法如前所述,先将其拷贝至 Windows 系统目录下(Windows 95/98 为“System”目录,Windows 2000/XP/NT 为 “Sy

57、stem32”目录)或将其复制到编译后的应用程序当前目录(“Debug”或“Release”目录) 。再将 ImageLoad.dll 动态链接库相关的“ImageLoad.h”、“ImageLoad.lib”和 “ImageErros.h”复制到当前工程目录。选择 VC+集成开发环境的 ProjectSettings.菜 单项,系统打开“ProjectSettings”对话框,在“Object/Library modules”编辑框中输 “ImageLoad.lib”,单击“OK”。这样便可在所建应用程序中使用 ImageLoad.dll 动态链接 库提供的多格式图像文件的打开和保存函数,轻

58、松完成图像文件的读写工作。 第 3 章 系统需求分析 3.1 系统的主要功能 本文主要就是研究边缘处理技术的一些算法。我们是常的用经典的边缘检测方法 是构造对像素灰度级阶跃变化敏感的微分算子,如 robert 梯度算子、Sobel 梯度算子等, 其边缘检测速度快,但得到的往往是断续的、不完整的结构信息,这类方法对噪声较 为敏感,为了有效抑制噪声,一般都首先对原图像进行平滑,再进行边缘检测就能成 功地检测到真正的边缘。边缘检测技术中较为成熟的方法是线性滤波器,其中尤其是 以拉普拉斯 LOG(Laplace of Gauss)算子最为有名,LOG 算子较好地解决了频域最优 化和空域最优化之间的矛盾

59、,计算方法也比较简单方便,另外,该算子在过零点检测 中具有各向同性特点,保证了边缘的封闭性,符合人眼对自然界中大多数物体的视觉 效果;不过 LOG 算子的边缘定位精度较差,而边缘定位精度和边缘的封闭性两者之间 无法客观地达到最优化折衷19。并力求在 VC 的环境下来实现它们,以求达到对图像 处理的最佳效果。因此本文解决问题的方法就是通过研究可行的算法来达到预期的效 果。 3.2 需求分析 需求分析工作是软件开发周期中重要的一步,通过需求分析可以把软件的功能和性 能需求完整、准确的表达给开发人员,从而避免在以后的开发过程中出现一些不必要 的问题。对用户需求的分析应该全面、深入、发展。 3.2.1

60、 系统业务流程图 打开文件选取图象 处理图象 保存图象 多次处理 3.2.2 概念设计 概要设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及 其相互间的关系,这种数据模型是与 DBMS 无关的、面向现实世界的、易如理解的数 据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流 十分方便。 概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库 中如何实现。这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理 解的 直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很 少变动。 概念性数据在用户和设计者之间建立了

温馨提示

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

评论

0/150

提交评论