【精品】VC++几何图形的识别和编辑设计(论文+源代码)
收藏
资源目录
压缩包内文档预览:(预览前20页/共33页)
编号:1639470
类型:共享资源
大小:1.19MB
格式:RAR
上传时间:2017-08-30
上传人:机****料
认证信息
个人认证
高**(实名认证)
河南
IP属地:河南
50
积分
- 关 键 词:
-
精品
vc
几何图形
识别
辨认
以及
编辑
编纂
设计
论文
源代码
- 资源描述:
-
【精品】VC++几何图形的识别和编辑设计(论文+源代码),精品,vc,几何图形,识别,辨认,以及,编辑,编纂,设计,论文,源代码
- 内容简介:
-
毕业论文 第一章 引言 本论文实现的是基础的图形识别 , 识别基本的图元直线和圆 。 直线和圆是二值图像中最基本的组成元素 , 也是最常见的图形元素 。 在工程图的数字化识别中有很大的应用 。 关于理想情况的几点说明: 没有 “ 噪音 ”等 , 在本论文中直接采用的是用 即线宽是一个象素的情况 。 第二章工作基础和环境 主要的图象处理技术 图像格式 算法和数学基础 处理内容 对图像进行增强或修改 描述图像的特征并进行特征抽取和分析 图像的重建 ( 主要技术 图像的增强和恢复 图像的压缩编码 图像重建 图像的分割和描述 位图文件头 位图信息头 彩色表 图象数据阵列字节 第三章 图形识别中常用的方法 图形的识别最主要的是图形特征的提取 , 在这个阶段 ,常用的方法 在二值图像的处理中常用的方法 本论文中对交点的处理 。 目前对交点的处理有下面几类算法 1. 基于网格算法 , 该算法是通过网格加大搜索步长来跳过交点 。 2. 基于图段合并的算法 , 是根据交点处行程段的连通性 , 以交点为界将图线分割成图段 , 记录各段之间的连接及从属关系 , 然后连接或延长各分支图段 , 然后得到整条图线 。 在本论文中采用了第二种方法,基于图段合并的算法 算法及数学基础 霍夫变换 1. 霍夫变换识别直线 2. 霍夫变换识别圆 基于单义域的直线及圆的识别 霍夫变换的基本思想 把图像平面上的点对应到参数平面上的曲线,最后通过统计特性来解决问题 霍夫变换识别直线 1. 初始化一块缓冲区,对应于参数平面,将其所有数据置为 0 2. 对于图像上每一前景点,求出参数平面对应的直线,把这直线上的所有点的值都加 3. 找到参数平面上峰值点的位置,这些位置的坐标就是原图像上直线的参数,每个位置对应于原图像上的一条直线 霍夫变换识别圆 半径已知的圆的识别 未知半径的圆的识别 多义域的获得 对图形进行从上往下、从左往右的扫描 对每一个前景点,判断其是否为交点 将该点与现有的多义域的头(如果其头节点不是交点)、尾(如果其尾节点不是交点)节点进行比较,如果与头节点相邻,将其插入到该多义域的头节点之前;如果与尾节点相邻,将其插入到该多义域的尾节点之后 如果该前景点不属于任何现有多义域,则以该点为头节点生成新的多义域 直到图形扫描完毕 最小二乘法拟合直线和圆 运用最小二乘法进行圆的拟合公式 多义域分裂和单义域的识别 1. 从13得到的多义域列表里取第一个多义域 2. 对选中的多义域运用最小二乘法进行圆的拟合;如果得到的平均径向误差和最大径向误差小于指定阈值,则认为拟合成功,该多义域为一圆弧的单义域;记录拟合的结果,作为总体识别的种子圆,转向5执行,否则执行3 3. 对选中的多义域运用最小二乘法进行直线拟合;如果得到的平均距离误差和最大距离误差小于指定阈值,则认为拟合成功,该多义域为一线段的单义域;记录拟合结果,作为总体识别的种子直线,转向5执行,否则执行4 4. 该多义域为多个线段或圆弧的组合。将该多义域的头尾节点连接,计算该多义域中各点与头尾节点连线的距离,取距离最大的点,对该多义域进行分裂,得到两个新的多义域,取代原先的多义域;转向2执行 5. 取多义域列表中的下一个,转向2执行 总体整合,识别直线和圆 选取单义域列表中的第一个单义域,将其拟合的图形(直线或圆)作为种子图形 将列表中其他单义域的识别结果与种子图形进行比较,如果误差小于指定阈值,则属于同一直线或同一圆,将其与选定单一域进行合并,从列表中删除该单义域 计算选定单义域的几何数据,得到图形 选取列表中的下一个单义域,转动 2执行 直线和圆的识别和编辑的实现 系统的层次结构的图示 系统数据结构及类的设计 系统功能介绍 总结及展望 系统的层次结构的图示 系统数据结构及类的设计 图形处理类 系统数据结构及类的设计 识别用类 图形基类( 图形类( 图形容器类( 点类( 单义域类( 基于单义域识别类( 霍夫变换识别直线类( 霍夫变换识别圆类( 系统功能介绍 主界面 系统功能介绍 统功能介绍 参数 系统功能介绍 霍夫变换识别圆 致谢 感谢各位领导和老师牺牲宝贵的时间来参加我的论文答辩,在这里真心的说一声:辛苦了,谢谢! 程序的使用情况请参见论文及简单几何图形的识别和编辑 - 1 - 简单几何图形的识别和编辑 - 2 - 内容摘要 本论文主要讲述了图像文件( 件格式下中简单图形的识别,主要是直线和圆的识别,这在工程图的识别和其他领域中都有很多的应用。 第一章到第三章主要介绍了在本论文中涉及到的知识及算法。 第四章是程序的实现方法和过程及结果等。 第五章是结束语 关键词: 图形识别 、图像处理、霍夫变换、单义域、多义域、 is on is of to is on my is of is 简单几何图形的识别和编辑 - 3 - 形识别 (图像处理 (霍夫变换 (单义域 (多义域 (简单几何图形的识别和编辑 - 4 - 目 录 第二章 概述 . 6 第一节 引言 . 6 第二节 在工程图的识别中常用的方法 . 6 第三章 论文的工作基础和工作环境 . 8 第一节 数字图像处理技术 . 8 1. 图像处理的基本内容 . 8 2. 主要的图像处理技术 . 8 第二节 图像格式 式 . 9 第三节 算法及数学基础 . 10 1. 霍夫变换( . 10 2. 基于单义域的直线及圆识别算法 . 13 3. 主要技术 . 16 第四章 直线和圆的识别和编辑的实现 . 17 第一节 系统的层次结构的图示 . 17 第二节 系统数据结构及类的设计 . 18 1. 主要类的层次结构 . 18 2. 图形基类( . 19 3. 图形类( . 20 4. 图形容器类( . 22 5. 点类( . 23 6. 单义域类( . 23 7. 基于单义域识别类( . 24 8. 霍夫变换识别直线类( . 25 9. 霍夫变换识别圆类( . 25 简单几何图形的识别和编辑 - 5 - 第三节 主程序实现 . 26 第四 节 系统功能介绍 . 26 第五节 总结及展望 . 30 第五章 结束语 . 31 参考文献 . 33 简单几何图形的识别和编辑 - 6 - 第一章 概述 第一节 引言 计算机技术的发展,使人类社会进入了信息化和自动化,计算机智能识别也随着计算机的发展得到了迅速的发展。特别是图形图像的计算机处理技术更是有了前所未有的进步和应用。计算机识别也逐渐的从图形图像处理的大环境下分离出来作为一门新的高科技研究领域出现。图形图像的识别涉及到的学科很多,包括数字信号处理、工程数学、信息论、运筹学、等,它与计算机、自动化、生物学、关学、视觉心里和生理学、人工智能、智能信息处理等众多领域交叉、综合集成,有广泛的应用。 本论文实现的是基础的图形识别, 像文件格式 中对图形的矢量化。识别基本的图元直线和圆。直线和圆是二值图像中最基本的组成元素,也是最常见的图形元素。在工程图的数字化识别中有很大的应用。 关于理想情况的几点说明: 1. 所识别的 像文件是经过处理的,没有“噪音”等,在本论文中直接采用的是用 的画图软件画出的图像。 2. 本论文中图像中的图元都是单一的线性,即线宽是一个象素的情况。 第二节 在工程图的识别中常用的方法 图形的识别最主要的是图形特征的提取,在这个阶段,常用的方法是全局特征方法(包括:不变距,自回归模型、傅立叶描述符、霍夫变换等),全局特征的 特征提取方法是理论比较完善的,计算过程比较清楚。针对不同的特征提取处理,采用相对应的模式匹配方法来将图形分类,模式识别迄今已有很多方法,有模板匹配、统计模式识别、句法模式识别、模糊识别和神经网络识别等。 在二值图像的处理中,人们常用的数据结果有游程编码考虑了扫描行上相邻象素间的相关性;行相邻图法( 是由 简单几何图形的识别和编辑 - 7 - 出的一种二值图的数据结构, 考虑了相邻行黑游程之间的相邻关系,遍历时很方便; 由余斌提出 的,它是相邻图 本论文中就是利用了 数据结构思想与 c+ 数据结构相结合的方法即:用下一个象素点是与链表头相邻还是和尾相邻来描述其相邻的关系。 本论文中对交点的处理。目前对交点的处理有下面几类算法: 1. 基于网格算法,该算法是通过网格加大搜索步长来跳过交点。 2. 基于图段合并的算法,是根据交点处行程段的连通性,以交点为界将图线分割成图段,记录各段之间的连接及从属关系,然后连接或延长各分支图段,然后得到整条图线。 在本论文中采用了第二种方法,基于图段合并的算法。 当然 现下有很多更好的算法和数据结构,但是大部分是针对具体的结构或者研究方向不具有一般性,所以本论文的实现用了上述的数据结构和方法。 简单几何图形的识别和编辑 - 8 - 第二章 论文的工作基础和工作环境 第一节 数字图像处理技术 将客观世界实体或图片等通过不同的量化 (数字化 )手段送入计算机,由计算机按使用要求进行图像的平滑、增强、复原、分割、重建、编码、存储、传输等种种不同的处理,需要时把加工处理后的图像重新输出,这个过程称为图像处理。因此,图像处理的含义是用计算机对图像进行加工处理以得到某种预期的效果,它本质上是一种二维数字信号处理技术。 1. 图像处理的基本内容 图像处理的基本内容可以归结为: 1. 对图像进行增强或修改。 以改变或强调图像信息的某些特点 (增强有用信息,无用信息 ),改善图像的视觉质量; 2. 描述图像的特征并进行特征抽取和分析。 例如提取图像的纹理特征、频谱特征、边界特征和颜色特征等;对像素用某个标准衡量并进行分类比较,将抽取的特征归结为一定的模式,这属于模式识别的范围; 3. 图像的重建 ( 对图像的某些部分合并或进行重新组织,这种技术是从 N 1 维的信息用某种算法得到 N 维的图像,例如计算机视觉就是这样的一种技术。 2. 主要的图像处理技术 图像的增强和恢复 图像增强所追求的目标是改善图像的视觉质量,符合人们的主观要求,它不追究图像客观质量的降低原因。图像的视觉质量是因人而异的,其质量简单几何图形的识别和编辑 - 9 - 的高低和好坏受观看者的心理、爱好和文化素质等因素的影响。图像的恢复则致力于探索图像质量降低的原因,并尽可能消除图像质量的降低,恢复图像的本来面目。 图像的压缩编码 彩色数字图像通常是由三个二维数组组成的,其信息量相当大,这给图像的传输、处理、存储和显示等带来很大的负担。但问题的另一方面是图像中又往往存在很多冗余信息,在传输和存储时可以对数字图像进行一定方式的编码, 删除图像中的冗余信息,以提高图像传输和存储的效率。 图像重建 在医学和工程应用中,利用超声波、 x 射线等技术取得物体的多幅来自不同角度的投影图,通过计算可得到物钵内部的图像,这种技术称为投影重建,例如 是图像重建的一个应用。 图像的分割和描述 计算机按照一定的客观测度 (例如灰度、颜色和几何性质等 )将图像中包含的物体和区域从图像中区分出来,称为图像的分割。用适当的数学语言来表示被分割出来的物体或区域的结构和统计特性,或用数学语言表示区域问的关系,称为描述。图像经分别和描述后,可较为容易地分类和识别。 第二节 图像格 式 式 形文件是 用的图形文件格式,在 像 文件格式。 统内部各图像绘制操作都是以 基础的。 前的 文件格式与显示设备有关,因此把这种 像 文件格式称为设备相关位图件格式。 后的 像文件与显示设备无关,因此把这种 像文件格式称为设备无关位图式,目的是为了让 够在任何类型的显示设备上显示所存储的图像。 图文件默认的文件扩展名是 者 时它也会以 扩展名)。 简单几何图形的识别和编辑 - 10 - 文件结构 位图文件可看成由 4 个部分组成:位图文件头 (位图信息头 (彩色表 (定义位图的字节阵列,它具有如下所示的形式。 位图文件的组成 结构名称 符号 位图文件头 (图信息头 (色表 ( 图象数据阵列字节 第三节 算法及数学基础 1. 霍夫变换( 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一。其基本思想就是把图像平面上的点对应到参数平面上的曲线,最后通过统计特性 来解决问题。自 1962 年 布了该算法以来,由于其良好的抗噪声性能和对部分遮盖的不敏感等特性,霍夫变换在模式识别领域得到广泛的应用,如直线、圆、椭圆、矩形等几何图形检测,任意形状区域的边界提取,二维或三维运动的参数估计等。 下面就于本论文相关的直线和圆的识别进行简单的介绍。 简单几何图形的识别和编辑 - 11 - 霍夫变换识别直线 霍夫变换识别直线,是将图像空间中的一点变换为参数空间中的一条直线。图像空间中同一直线上的点,经霍夫变换所形成的直线相交于参数空间中的一点,该点坐标代表图像空间中直线的斜率及截距。利用累加数组累计参数空间中通过该 点的直线条数,即代表图像空间中直线上的点数。 图 夫变换识别直线( 1) 设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。我们知道,直线的方程可以用 y k x b 来表示,其中 k 和 b 是参数,分别是斜率和截距。过某一点00( , )k x b 。即图像空间中的一点00( , )。方程00y k x b 在参数 面上是一条直线。这样,图像 面上的一个前景像素点就对应到参数平面上的一条直线。 霍夫变换识别直线的算法描述如下: 初始化一块缓冲区,对应于参数平面,将其所有数据置为 0。 对于图像上每一前景点,求出参数平面对应的直线,把这直线上的所有点的值都加。 找到参数平面上峰值点的位置,这些位置的坐标就是原图像上直线的参数,每个位置对应于原图像上的一条直线。 上面是霍夫变换识别直线的基本思想。 在实际应用中, y k x b 形式的直线方程没有办法表示 x=c 形式的直线(这时候,直线的斜率为无穷大)。所以实际应用中,是采用参数方程: c o s s i 这样,图像平面 (x, y)空间 上的一个点就对应到参数 空间中的一条正弦曲线上 。 在变换后的空间中这条正弦曲线上的任意一点对应于原始 图像平面 (x, y)空简单几何图形的识别和编辑 - 12 - 间的一条直线,这条直线必通过 ( , ) (x, y)空间中所有共线的点经过变换后所对应的各正弦曲线都相交于一点。 图 夫变换识别直线( 2) 霍夫变换识别圆 1) 半径已知的圆的识别 利用霍夫变换检测出半径已知的圆形,是将图像平面上的每一点对应到参数平面上的一个以已知半径为半径的圆。经过霍夫变换,在参数平面上得到圆相交于一点,这个点的坐标即为原图形坐标平面上待识别的圆心坐标。 算法可以简单描述为:取和图像平面一样的参数平面,以图像上每一个前景点为圆心,以已知的半径在参 数平面上画圆,并把结果进行累加。最后找出参数平面上的峰值点,这个位置就对应了图像上的圆心。 2) 未知半径的圆的识别 在第一个问题基础上,把参数平面扩大称为三维空间,即 维,对应圆的圆心和半径。图像平面上的每一点就对应于参数空间中每个半径下的一个圆,在参数的三维空间中得到一个圆锥。最后找出参数空间中的峰值点,即得到待识别的圆的圆心和半径。 由于霍夫变换具有良好的抗噪声性能和对部分遮盖的不敏感等特性,又不受图像旋转的影响,在很多领域都有广泛的应用,有关霍夫变换的研究和改进也很多。例如广义霍夫变 换、随机霍夫变换、快速霍夫变换等等,就是针对直线的霍夫变换也有很多改进算法。由于时间的原因,在本软件中,只是使用了标准的霍夫变换算法。 简单几何图形的识别和编辑 - 13 - 2. 基于单义域的 直线 及圆识别算法 霍夫变换为几何图形的识别的一个重要算法,但是由于该标准算法的时间复杂度和空间复杂度都是 ()其中 m 是参数坐标的维数,虽然有不少针对具体问题(例如直线识别)的改进算法,其在实际使用中也存在计算量大的问题。针对本论文的工作的实际情况,参考文献【 1】,并进行了适当的简化,完成了论文的识别部分。下面就对 这个基于单义域的识别算法进行简单的介绍。 多义域的获得 单义域是指对待识别的图形进行分割得到的具有单一的几何意义(线段或圆弧)点的集合。对图片进行从上往下、从左往右的扫描,根据交点进行分割得到多义域,多义域中的点构成一个连通区域。对多义域进行识别并分割得到单义域。 多义域由链表实现。 算法描述如下: 1 对图形进行从上往下、从左往右的扫描; 2 对每一个前景点,判断其是否为交点; 3 将该点与现有的多义域的头(如果其头节点不是交点)、尾(如果其尾节点不是交点)节点进行比较,如果与头节点相邻,将其插入到该多义域的头节点之 前;如果与尾节点相邻,将其插入到该多义域的尾节点之后。 4 如果该前景点不属于任何现有多义域,则以该点为头节点生成新的多义域。 5 直到图形扫描完毕。 注:交点的判断。 由此得到的多义域将是一个线段、一个圆弧或者线段和圆弧的组合。在后续的识别过程中将把不是单义域的进行分裂。 简单几何图形的识别和编辑 - 14 - 最小二乘法拟合直线和圆 最小二乘法首先由 进行行星轨道预测的研究而提出的。现在最小二乘法已经变成从实验数据来进行参数估计的主要手段。由最小二乘法获得的估计在一定条件下有最佳的统计特性:一致、无偏、有效。它提供给我们一个数学程 式,通过它能获得一个在最小方差意义上与实验数据最好拟合助模型。 运用最小二乘法进行圆的拟合公式如下: 其中, ( , )0( , )为半径 , 为平均径向误差, 为最大径向误差 。 运用最小二乘法进行直线拟合的公式如下: (待填充) 简单几何图形的识别和编辑 - 15 - 多义域分裂和单义域的识别 对 得到的多义域,运用最小二乘法进行拟合,对于拟合不成功的多义域运用 首尾相连最大距离法 进行 分裂 ,得到单义域,并记录下各单义域的拟合结果,供全局考虑,识别直线和圆用。 算法描述如下: 1 从 到的多义域列表里取第一个多义域; 2 对选中的多义域 运用最小二乘法进行圆的拟合;如果得到的平均径向误差和最大径向误差小于指定阈值,则认为拟合成功,该多义域为一圆弧的单义域;记录拟合的结果,作为总体识别的种子圆,转向 5 执行,否则执行 3。 3 对选中的多义域运用最小二乘法进行直线拟合;如果得到的平均距离误差和最大距离误差小于指定阈值,则认为拟合成功,该多义域为一线段的单义域;记录拟合结果,作为总体识别的种子直线,转向 5 执行,否则执行 4。 4 该多义域为多个线段或圆弧的组合。将该多义域的头尾节点连接,计算该多义域中各点与头尾节点连线的距离,取距离最大的点,对该多义域进行分 裂,得到两个新的多义域,取代原先的多义域;转向 2 执行。 5 取多义域列表中的下一个,转向 2 执行。 由此,所有的多义域都分裂为单义域,并对各单义域进行了拟合。 总体整合,识别直线和圆 对 到的单义域列表进行总体的整合,得到直线和圆。 1 选取单义域列表中的第一个单义域,将其拟合的图形(直线或圆)作为种子图形; 2 将列表中其他单义域的识别结果与种子图形进行比较,如果误差小于指定阈值,则属于同一直线或同一圆,将其与选定单一域进行合并,从列表中删除该单义域; 3 计算选定单义域的几何数据,得到图形; 4 选取列表中的下一个单义 域,转动 2 执行。 简单几何图形的识别和编辑 - 16 - 3. 主要技术 + 论文的编程环境之所以选用 c+ 因为他有以下的优点: 输出入接口设计简单 提供一流的开发环境 提供最标准的 C C鲁开发工具 提供丰富的组件与最强劲的调试工具 库中封装了 图形设备接口 (使得用户很方便地在应用程序添加图像或处理图像。 图像类主要有 。 虚类及虚方法的使用 虚类和虚方法的使用在本论文中主要是 类及虚方法的实现。 简单几何图形的识别和编辑 - 17 - 第三章 直线和圆的识别和编辑的实现 第一节 系统的层次结构的图示 简单几何图形的识别和编辑 - 18 - 第二节 系统数据结构及类的设计 1. 主要类的层次结构 图形处理类: 识别用类: 简单几何图形的识别和编辑 - 19 - 2. 图形基类( 描述 图形基类,提供所有图形的标准属性和方法。其他图形类(直线、圆)等都是该类的子类,继承其所有的 性和方法,对其中的虚方法( 行重定义和实现。 该类为虚类,其成员 函数主要为虚函数,为其所有子类提供统一的接口,但是没有实现。其他模块对图形进行操作时,除非生成新的实例( 都无须知道所操作的是哪个具体的图形,而统一使用 型,为程序的实现、扩充和维护提供很大方便。 实现 * 属性定义 */ /前景色(由于时间等的限制,本系统暂时只定义该图形的属性,其 / 他如:填充色,线条型,填充型等可扩充) * 编辑用属性 */ /编 辑时标志该图形是否被选择 * * 识别用属性 */ / 识别的效果描述,值越小说明识别效果越好 / 最小二乘法的平均误差; / 霍夫变换: 1 - 参数空间中该图形的值 /最大值 ; /* 成员函数定义 */ /* 显示和描述用方法 */ / 显示图形:在指定的位图上显示图形 / 描述图形:作为 窗体使用) / 描述图形:返回描述图形的字符串 ; /* 识别用 */ / 比较两个图形,如果是同一个图形 ,返回 则 / 直线上的两个线段;圆上面的两个圆弧 / 合并两个图形 / 经过判断为相同的图形进行合并,返回 则返回 简单几何图形的识别和编辑 - 20 - / 判断图形存在的可能性(利用具体图形的几何规则) ; /* 编辑用 */ / 判断是否点击该图形,若选中则当前编辑的图形改为当前图形 x, y); / 取得鼠标形状:鼠标移动到选中图形的可操作点上时,显示为编辑形状 x, y); / 更新图形:将编辑点移动到 (x, y)点。更新成功返回 则 x, y); ; 3. 图形类( 描述 图形类是几何图形的具体实现,实现对应几何图形的描述和相关操作。图形类有共同的父类 父类中定义的虚方法根据本几何图形的特征进行实现。 根据要求,本系统中实现了直线( 圆( 个图形类。其他简单的几何图形如椭圆、矩形等也可以类似的方法实现,作为本系统的一个扩充。 本系统中,直线类采用直观的 0A x B y C 的形式来描述直线(既避免点斜式不能描述竖直直 线,也避免极坐标方程转换的问题)。因为成比例的两组1 1 1( , , )A B C 和 2 2 2( , , )A B C 表示同一条直线,所以规定,如果 B 参数不为 0,则 1B ,否则 A 必定不为 0,则 1A 。由于要识别图像中的线段,所以增加两个端点进行限制。 直线类有三个点可以编辑: 1)两个端点,选中一个端点并移动,是以另一端点为轴进行旋转; 2)线段的中点,选中中点并移动,是平移 整个直线。 圆类采用 2 2 2( ) ( )x y y R 的形式描述(其中 ( , )R 为半径),直观方便。圆上有两个点支持编辑操作: 1)圆心,选中圆心并移动,是平移整个圆; 2)圆上的一个点,选中该点并移动,是改变圆的半径,圆心不变。 实现 直线类( 简单几何图形的识别和编辑 - 21 - * 初始化 */ /* 直线的属性 */ / 线段的两个端点 *: A,B,C , B, C; /* 对父类虚方法的实现 */ / 在目标位图上画出直线(本系统中的实现为画线段) / 在 / 返回描述用字符串 ; / 判断该直线是否与指定图形相同 / 将指定图形强制转化为 较其参数 A, B, C, / 若小于指定阈值,则返回 则返回 / 合并同一直线上的两个线段 / 若目标图形与该图形属同一直线,进行合并,返回 / 否则返回 / 判断是否选择该直线进行编辑。 / 判断指定点 (x, y)到该直线的距离, / 如果小于指定阈值则返回 则 x, y); / 取得鼠标形状。 / 端点时返回 45度, 135度的双向箭头形状表示旋转; / 中点时返回垂直的四个方向箭头的形状表示移 动 x, y); / 更新直线 x, y); ; 圆类( * 初始化 */ /* 圆的属性 */ / 圆心 ; /* 对父类虚方法的实现 */ / 在目标位图上画出圆 / 在 / 返回描述用字符串 ; 简单几何图形的识别和编辑 - 22 - / 判断该圆是否与指定图形相同 / 将指定图形强制转化为 较其参数圆心坐标和半径, / 若小于指定阈值,则返回 则返回 / 合并同一圆上的两个圆弧 / 若目标图形与该图形属同一圆,进行合并,返回 / 否则返回 / 判断是否选择该圆进行编辑。 / 计算指定点 (x, y)到圆心的距离,并与半径比较, / 如 果小于指定阈值则返回 则 x, y); / 取得鼠标形状。 / 圆上点时返回水平的双向箭头形状表示改变半径; / 圆心时返回垂直的四个方向箭头的形状表示移动 x, y); / 更新圆 x, y); ; 4. 图形容器类( 描述 图形容器类是图形类的集合类,由 C+ 承得到。用来组织对图像的识别结果、组织当前编辑工作的图形对象集。提供添加图形、删除图形、图形编辑等接口。 实现 * 初始化 */ ; / 从 /在目标位图上画出所有的图形 /描述图形 ; 简单几何图形的识别和编辑 - 23 - 5. 点类( 描述 点类对于与图像上的前景点。由于识别时需要判断是否为交点,在一般的点的基础上增加是否为交点的属性。由 C+ 承得到。 实现 * 初始化 */ ; /* 属性:是否为交点 */ ; 6. 单义域类( 描述 在“基于单义域的图形识别算法”中,单义域和多义域的唯一区别就是多义域不是单一的几何元素,其在存储结构上是一样的,在本系统中,都由实现,姑且命名为单义域类。 单义域类为点的 集合类,由 C+ 继承得到。提供添加点、删除点、判断该单义域是否有识别价值、识别该单义域等接口和方法。 实现 * 初始化 */ p); /* 识别该单义域:实现算法中对单义域的识别部分 */ / 如果识别成功(得到圆或线段)返回 则返回 ; /* 尝试添加新 的点到该单义域 */ / 判断该点是否属于该单义域并确定是在头部还是在尾部,并将其插入到适当位置;如果该点为交点,则将相应的方向关闭增长;若加入成功返回 则返回 ; 简单几何图形的识别和编辑 - 24 - /* 判断该单义域是否有识别价值 */ / 如果该单义域含有的点数太少,则没有价值返回 则返回 ; /* 属性:识别出的图形 */ ; 7. 基于单义域识别类( 描述 基于单义域识别类是实现“基于单义域的直线和圆识别算法”的主要类。它实现了对目标图像的分割、对分割结果的显示、对识别得到的多义域进行分割、对单义域识别结果的总体考虑,最终得到识别结果集。 基于单义域识别类同时是单义域的集合类,由 C+ 继承得到。用来组织对图像的单义域分割后的结果。 实现 * 构造和析构函数 */ ; ; /* 扫描图像,得到多义域 */ / 从上往下,从左往右扫描图像,对于每一个前景点 / 1。生成新的 。对于本类中的所有单义域,将该点尝试加入 / 3。如果加入失败,以该点为头生成新的单义域并加入。 /* 在指定的位图上显示分割得到的多义域、单义域 */ /* 识别该集合中的元素 */ / 1。调用单义域的 ,如果得到 除该单义域; / 2。调用单义域的 ,如果返回 该单义域进行分割; / 将新得到的 2个单义域取代当前的单义域,并进行识别 / 3。所有的单义域识别完毕后,对各个单义域的识别结果进行合并 / 4。返回得到的图形容器类。 ; /* 删除集合中的指定位置的元素 */ ; 简单几何图形的识别和编辑 - 25 - 8. 霍夫变换识别直线类( 描述 实现霍夫变换识别直线算法。 实现 * 构造和析构函数 */ ); ); /* 对源位图按 照直线识别算法进行霍夫变换 */ / 和 的分割的份数。 /* 在目标位图上显示参数坐标的信息 */ / 以参数坐标的最大值为灰度最大值,按比例灰度在位图上显示。 /* 按照 */ ; 9. 霍夫变换识别圆类( 描述 实现霍夫变换识别圆算法。 实现 * 构造和析构函数 */ ); ); /* 对源位图按照圆的识别算法进行霍夫变换 */ /*
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。