C++简单几何图形的识别和编辑系统设计+PPT演示 第4页
2.2 最小二乘法拟合直线和圆
最小二乘法首先由Karl Gauss为进行行星轨道预测的研究而提出的。现在最小二乘法已经变成从实验数据来进行参数估计的主要手段。由最小二乘法获得的估计在一定条件下有最佳的统计特性:一致、无偏、有效。它提供给我们一个数学程式,通过它能获得一个在最小方差意义上与实验数据最好拟合助模型。
运用最小二乘法进行圆的拟合公式如下:
其中, 为样点, 为所求圆心, 为半径, 为平均径向误差, 为最大径向误差。
运用最小二乘法进行直线拟合的公式如下:
(待填充)
2.3 多义域分裂和单义域的识别
对2.1中得到的多义域,运用最小二乘法进行拟合,对于拟合不成功的多义域运用首尾相连最大距离法进行分裂,得到单义域,并记录下各单义域的拟合结果,供全局考虑,识别直线和圆用。
算法描述如下:
1. 从2.1得到的多义域列表里取第一个多义域;
2. 对选中的多义域运用最小二乘法进行圆的拟合;如果得到的平均径向误差和最大径向误差小于指定阈值,则认为拟合成功,该多义域为一圆弧的单义域;记录拟合的结果,作为总体识别的种子圆,转向5执行,否则执行3。
3. 对选中的多义域运用最小二乘法进行直线拟合;如果得到的平均距离误差和最大距离误差小于指定阈值,则认为拟合成功,该多义域为一线段的单义域;记录拟合结果,作为总体识别的种子直线,转向5执行,否则执行4。
4. 该多义域为多个线段或圆弧的组合。将该多义域的头尾节点连接,计算该多义域中各点与头尾节点连线的距离,取距离最大的点,对该多义域进行分裂,得到两个新的多义域,取代原先的多义域;转向2执行。
5. 取多义域列表中的下一个,转向2执行。
由此,所有的多义域都分裂为单义域,并对各单义域进行了拟合。
2.4 总体整合,识别直线和圆
对2.3得到的单义域列表进行总体的整合,得到直线和圆。
1. 选取单义域列表中的第一个单义域,将其拟合的图形(直线或圆)作为种子图形;
2. 将列表中其他单义域的识别结果与种子图形进行比较,如果误差小于指定阈值,则属于同一直线或同一圆,将其与选定单一域进行合并,从列表中删除该单义域;
3. 计算选定单义域的几何数据,得到图形;
4. 选取列表中的下一个单义域,转动2执行。
3. 主要技术
3.1 Borland C++ Builder
本论文的编程环境之所以选用c++ builder 是因为他有以下的优点:
⑴.输出入接口设计简单
⑵.提供一流的开发环境
⑶.提供最标准的C/C++鲁开发工具
⑷.提供丰富的组件与最强劲的调试工具VCL类库中封装了Windows的图形设备接口(GDI),使得用户很方便地在应用程序添加图像或处理图像。
图像类主要有Tbitmap、TBrush、TCanves、TFont、TgraphakControl、Tgraphic、Ticon、TJPEGImage、TPen和Tpictur以Tmatifile类。
3.2 虚类及虚方法的使用
虚类和虚方法的使用在本论文中主要是Cshapes基类及虚方法的实现。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
C++简单几何图形的识别和编辑系统设计+PPT演示 第4页下载如图片无法显示或论文不完整,请联系qq752018766