目 录
第二章 概述 6
第一节 引言 6
第二节 在工程图的识别中常用的方法 6
第三章 论文的工作基础和工作环境 8
第一节 数字图像处理技术 8
1. 图像处理的基本内容 8
2. 主要的图像处理技术 8
第二节 图像格式-BMP格式 9
第三节 算法及数学基础 10
1. 霍夫变换(Hough Transform) 10
2. 基于单义域的直线及圆识别算法 13
3. 主要技术 16
第四章 直线和圆的识别和编辑的实现 17
第一节 系统的层次结构的图示 17
第二节 系统数据结构及类的设计 18
1. 主要类的层次结构 18
2. 图形基类(CShape) 19
3. 图形类(CLine、CCircle) 20
4. 图形容器类(CShapes) 22
5. 点类(CPoint) 23
6. 单义域类(CSegment) 23
7. 基于单义域识别类(CSegments) 24
8. 霍夫变换识别直线类(CHTLine) 25
9. 霍夫变换识别圆类(CHTCircle) 25
第三节 主程序实现 26
第四节 系统功能介绍 26
第五节 总结及展望 31
第五章 结束语 32
参考文献 34
单义域是指对待识别的图形进行分割得到的具有单一的几何意义(线段或圆弧)点的集合。对图片进行从上往下、从左往右的扫描,根据交点进行分割得到多义域,多义域中的点构成一个连通区域。对多义域进行识别并分割得到单义域。
多义域由链表实现。
算法描述如下:
1. 对图形进行从上往下、从左往右的扫描;
2. 对每一个前景点,判断其是否为交点;
3. 将该点与现有的多义域的头(如果其头节点不是交点)、尾(如果其尾节点不是交点)节点进行比较,如果与头节点相邻,将其插入到该多义域的头节点之前;如果与尾节点相邻,将其插入到该多义域的尾节点之后。
4. 如果该前景点不属于任何现有多义域,则以该点为头节点生成新的多义域。
5. 直到图形扫描完毕。
注:交点的判断。
由此得到的多义域将是一个线段、一个圆弧或者线段和圆弧的组合。在后续的识别过程中将把不是单义域的进行分裂。
2.2 最小二乘法拟合直线和圆
最小二乘法首先由Karl Gauss为进行行星轨道预测的研究而提出的。现在最小二乘法已经变成从实验数据来进行参数估计的主要手段。由最小二乘法获得的估计在一定条件下有最佳的统计特性:一致、无偏、有效。它提供给我们一个数学程式,通过它能获得一个在最小方差意义上与实验数据最好拟合助模型。
图形基类,提供所有图形的标准属性和方法。其他图形类(直线、圆)等都是该类的子类,继承其所有的public属性和方法,对其中的虚方法(virtual)进行重定义和实现。
该类为虚类,其成员函数主要为虚函数,为其所有子类提供统一的接口,但是没有实现。其他模块对图形进行操作时,除非生成新的实例(Instance),都无须知道所操作的是哪个具体的图形,而统一使用Cshape类型,为程序的实现、扩充和维护提供很大方便。
形类有共同的父类CShape,对父类中定义的虚方法根据本几何图形的特征进行实现。
根据要求,本系统中实现了直线(CLine)和圆(CCircle)两个图形类。其他简单的几何图形如椭圆、矩形等也可以类似的方法实现,作为本系统的一个扩充。
本系统中,直线类采用直观的 的形式来描述直线(既避免点斜式不能描述竖直直线,也避免极坐标方程转换的问题)。因为成比例的两组 和 表示同一条直线,所以规定,如果B参数不为0,则 ,否则A必定不为0,则 。由于要识别图像中的线段,所以增加两个端点进行限制。
直线类有三个点可以编辑:1)两个端点,选中一个端点并移动,是以另一端点为轴进行旋转;2)线段的中点,选中中点并移动,是平移整个直线。
圆类采用 的形式描述(其中 为圆心,R为半径),直观方便。圆上有两个点支持编辑操作:1)圆心,选中圆心并移动,是平移整个圆;2)圆上的一个点,选中该点并移动,是改变圆的半径,圆心不变。