n维点集的增量式k近邻查询方法与流程

文档序号:11864727阅读:490来源:国知局
n维点集的增量式k近邻查询方法与流程

本发明提供一种n维点集的增量式k近邻查询方法,属于产品逆向工程领域。



背景技术:

在逆向工程中,k近邻查询方法能够有效获取机械零件表面局部型面特征的参考数据,也广泛应用于地理信息系统、医学图像分析及古建筑与古物修复等领域。

对于目前k近邻查询方法文献检索发现,Les等在学术期刊《Computer-Aided Design》2002,34(2),167-172上发表的学术论文“Algorithm for finding all k nearest neighbor”、卫炜等在学术期刊《航空学报》2006,27(5),944-948上发表的学术论文“一种快速搜索海量数据集k-近邻空间球算法”、Zhao等在学术期刊《Tsinghua Science & Technolgoy》2009,14,77-81上发表的学术论文“An improved algorithm for k-nearest-neighbor finding and surface normals estimation”中,基于栅格空间索引结构,以目标点为球心、特定距离为半径构造搜索空间(搜索球或搜索立方体) ,通过判断结点包围盒是否与搜索空间相交对结点进行剪枝,明显减少了结点查询个数,提高了查询效率,但该类算法中特定距离或扩展距离选取过大或过小,都将导致查询效率下降,且由于栅格结构为静态空间索引,构建时需预知点云数据的规模,当点云数据规模趋于海量甚至超出主存容限时,此类算法难以实现。刘宇等在学术期刊《上海交通大学学报》2001,35(9),1298-1302上发表的学术论文“空间k近邻查询的新策略”中以R树为空间索引结构,基于目标点与结点包围盒的最小距离、最小最大距离制定了各种剪枝策略,减少了查询时所要访问的结点个数,提高了查询效率,但在查询过程中需进行多次排序操作,对查询效率具有不良影响。

综上所述,现在技术存在的缺陷是:查询所需的索引受点云的影响,每次查询时多次排序操作降低了查询效率。



技术实现要素:

本发明的目的在于提供一种n维点集的增量式k近邻查询方法,该方法以R树为索引结构并预先查询以目标点为中心、特定搜索球内的数据点集,再渐增查询搜索球之外距离目标点最近的数据点,其技术方案为:

一种n维点集的增量式k近邻查询方法,其特征在于步骤依次为:一、为n维点集X构建R树索引结构;二、对于要进行k近邻查询的目标点p,通过R树的点查询方法获得p所在的叶索引层结点L;三、以p为中心、为半径,构建球形空间S,其中m为结点L所包含的数据点个数,r为结点L包围盒的外接包围球半径;四、通过R树的范围查询方法获取落入S内的点集Q,;五、若Q内的点数k*>k,则只保留距离p最近的k个点作为k近邻查询结果并终止k近邻查询过程,否则执行以下过程:a) 以球形空间S为查询目标,获取距离S最近的数据点,将其加入Q,并使得k*增1;b) 扩展球形空间S,使其恰好包含Q;c) 若k*>k,则目标点p的k近邻查询过程结束,返回点集Q,否则,执行步骤a)。

为实现发明目的,所述的一种n维点集的增量式k近邻查询方法,其特征在于步骤三中,利用R树的k近邻查询方法实现球形空间S半径的设定,其步骤具体为:(1) 从n维海量点云中选取t个数据点;(2) 利用R树的k近邻查询方法分别为这t个数据点查询k近邻点集;(3) 计算每个数据点到其k近邻点集中最远点的距离ri,得到集合{ri|i=1,2,…,t};(4) 选取{ri}中的最大值rmax作为球形空间S半径。

为实现发明目的,所述的n维点集的增量式k近邻查询方法,其特征在于步骤五中的步骤a)中的,获取距离S最近的数据点,其步骤具体为:(1) 从根结点开始深度优先遍历n维点云X的R树索引结构,在的叶索引结点层搜索距离S最近的结点包围盒B;(2) 获取B所包含的数据点集{pi};(3) 将{pi}中距离搜索球S中心最近且位于搜索球S之外的数据点pi作为距离S最近的数据点。

本发明与现有技术相比,具有以下优点:

(1) 利用随机数据点的k近邻点集设置初始搜索半径,使得初始搜索半径更加逼近点云中点的k近邻半径,且避免了人为设置半径所造成的误差;

(2) 预先利用范围查询使得k近邻查询效率明显提高;

(3) 增量式k近邻查询避免了多次排序,从而有效提高了k近邻查询效率。

附图说明

图1是利用本发明方法为三维点集查询k近邻点集的程序流程图;

图2是实施k近邻查询试验所采用的实物表面样点——维纳斯头部点云及局部样点PQ

图3是实施k近邻查询试验所采用的实物表面样点——佛像点云;

图4与图5分别是采用R树的k近邻查询方法与本发明方法为P查询k近邻点集的结果图;

图6与图7分别是采用R树的k近邻查询方法与本发明方法为Q查询k近邻点集的结果图;

图8是采用本发明方法为佛像点云所有点查询k近邻点集时随机数据点个数分别为20、30、40的查询时间对比结果图;

图9是分别采用R树的k近邻查询方法与本发明方法为佛像点云查询所有点的k近邻点集的时间对比结果图。

具体实施方式

下面结合附图及实施例对本发明作进一步说明。

利用本发明方法为三维点集查询k近邻点集的程序流程图如附图1所示,程序用c语言实现。该程序主要流程为:为点集构建R树索引;从点集中随机获取s个数据点,并利用R树的k近邻查询算法为这s个点查询k近邻点集;获取这s个k近邻半径的最大值r;获取以目标点p为中心、r为半径包围球内的点集T,并将T中的点按其与p的距离升序排序;获取T中的点数n;若n>k,则查询结束,否则,查询p的第n+1个近邻点,令n增1,如此循环往复,直至n=k为止。

使用光栅投影式三维测量仪获取实施结点分裂试验所采用的实物表面样点——维纳斯头部点云及佛像点云,分别如图2、图3所示,其中佛像点云点数为1,029,324,并从佛像点云中提取局部样点PQ

分别是采用R树的k近邻查询方法与本发明方法为PQ查询k近邻点集,其中k取15,P的两种k近邻点集的结果图如图4、图5所示,Q的两种k近邻点集的结果图如图6、图7所示。由图4-图7可知,两种方法得到的k近邻点集相同,说明本发明方法能够准确获取k近邻点集。

对佛像点云进行不同程度的精简,精简因子分别为0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1.0,获取10个点集ABCDEFGHIJ,设S={A,B,C,D,E,F,G,H,I,J},采用本发明方法查询佛像点云中所有点的k近邻点集,利用C语言中的时间统计函数统计随机数据点个数s分别为20、30、40时的查询时间,时间对比结果图如图8所示,其中k取15。由图8可知,当随机数据点个数s为30时,本发明方法为佛像点云中所有点查询k近邻点集所消耗的时间最少。

设定随机数据点个数s为30,分别采用R树的k近邻查询方法与本发明方法为佛像点云所有点查询k近邻点集,其中k取15,时间消耗对比结果图如图9所示。由图9可知,相对于R树的k近邻查询方法,本发明方法时间消耗明显减少。

以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1