产品逆向工程多维数据动态存取机制的制作方法

文档序号:6556397阅读:187来源:国知局
专利名称:产品逆向工程多维数据动态存取机制的制作方法
技术领域
本发明提供一种产品逆向工程多维数据动态存取机制,属于产品逆向工程技术领域。
背景技术
在产品逆向工程中,采用光学测量设备对产品原型进行数字化采样,所获取数据表现为多维散乱数据点集。由于这类数据具有数据量大、空间复杂度高且数据之间缺乏拓扑关系等特点,采用传统的一维数据存储结构无法为其建立稳定、高效的存取机制,导致逆向工程数据处理效率偏低。多维数据存取机制的研究已成为逆向工程技术领域关键技术之一。
目前,在产品逆向工程中所使用的多维数据存取机制主要有两种1)采用降维处理方法,将多维数据沿三个维向分解,以传统的一维线性或非线性数据结构作为散乱数据的存取机制;2)基于静态多维数据结构,如散列表、空间八叉剖分树等,按预定空间剖分规则分割点云空间,对生成的空间子域进行编码处理,建立静态的多维数据存取机制,在对多维数据进行各种操作时,可直接计算多维数据点在多维数据结构中所对应的空间子域编码信息,根据编码信息,可大幅度缩减数据在点云静态多维数据结构中的搜索范围,可以实现快速目标点定位及其邻近点查询。
上述方法存在的缺陷是1)对多维数据进行降维处理虽然简单易行,但对于复杂型面测量数据,由于难以构造从高维到低维的映射关系,易出现数据投影重叠问题,导致无法建立正确的数据拓扑关系。另外,在对多维数据进行各种操作时,无法利用某一维的高选择性去缩小剩余维向数据的搜索空间,需进行分维处理,效率较低;2)基于静态多维数据结构的处理方法,所采用的数据结构不支持数据动态插入、删除、调整等操作,且过于依赖数据的空间分布状况,当数据沿某一维度过度偏斜,甚至退化为二维或一维状态时,会导致数据结构急剧恶化,严重影响数据查询效率。另外,该方法无法建立多级存储体系,难以解决数据内存储溢出问题。
综上所述,现有的多维数据存取技术应用于产品逆向工程数据处理中,仅适合处理分布较为均匀的产品数据点云的存取,对于不同数据规模、拓扑类型及型面复杂程度的点云数据缺乏通用性,导致后续数据处理结果的稳定性与准确性无法满足工程需求。

发明内容
为克服现有多维数据存取技术在产品逆向工程数据处理中的不足,本发明的目的在于提供一种多维数据动态存取机制,使之对于各类多维数据操作能及时响应更新,可实现多级存取体系,具有数据适应性强、存储设备利用率高、易扩展为其他空间对象的存取机制等特点。其技术方案如下一种用于产品逆向工程中的多维数据动态存取机制,依次包含以下步骤一、多维数据输入;二、建立多维数据动态存取模型;三、实现基于多维数据动态存取模型数据结构的空间查询机制;四、定义外部程序应用开发接口。
为实现发明目的,所述的多维数据动态存取机制,在步骤一中将产品数字化设备输出的数据点云文件读入到存储设备中,并为其建立线性表存储结构,以满足对数据结点基本存储及数据顺序遍历的需求。
为实现发明目的,所述的多维数据动态存取机制,在步骤二中,将多维数据动态存取模型数据结构定义为平衡树结构,其结点层自上而下分为根索引结点层、内部索引结点层、叶索引结点层和数据结点层,其中任意上层结点可包含多个下层结点。索引结点分层处理可满足存储器分级处理的需要。在根索引结点层、内部索引结点层和叶索引结点层中,各结点对应产品原型数据点云包围空间中的相互嵌套的子域空间,点云包围空间及其子域空间在本发明中皆以空间最小包围矩形(Spatial Minimum Box Rectangle SMBR)近似表示。数据结点层为线性表结构,存储海量多维散乱数据点集信息,每个数据点信息存储于不同的线性表结点中。在多维数据动态存取模型数据结构的定义中还规定所有结点的子结点数不得大于M(M为大于0的整数)个,且除根结点外,所有结点的子结点数不得小于m个(m<(M/2+1))。
为实现发明目的,所述的多维数据动态存取机制,在步骤二中,多维数据动态存取模型的实现程序包括多维散乱数据读入程序、新结点动态插入程序与数据结点动态删除程序。
为实现发明目的,所述的多维数据动态存取模型数据结构新结点动态插入程序由选择子树、溢出结点处理、插入路径中各层结点SMBR调整三个程序组合而成,在其实现中首先调用选择子树程序确定新结点在多维数据动态存取模型数据结构中的最佳父结点。当选择子树程序所确定的最佳父结点中插入新结点时,若最佳父结点包含新结点后,其子结点数未超出步骤二中所定义的子结点数目上限M,则直接执行新结点插入操作;否则,产生结点溢出事件,从而引发调用溢出结点处理程序对溢出的结点进行强制重新插入或分裂处理。多维数据动态存取模型数据结构在插入新结点后会导致插入路径中各层结点的SMBR信息发生变化,插入路径各层结点SMBR调整程序可以自插入路径的最底层结点逐层向上,完成对各层结点SMBR的修正处理。
为实现发明目的,所述的选择子树程序,首先接受传入的新结点SMBR信息及该结点欲插入至多维数据动态存取模型数据结构中目标结点层的层号,而后自根索引结点开始,逐层向下在每一层结点中根据特定的优化准则筛选出最佳结点作为新结点的父系结点,直至到达所指定结点层为止。最终所筛选的各层结点顺次形成了新结点最佳插入路径,其中在目的结点层中所选择的结点即为新结点的父结点。在筛选各层结点的过程中,所采用的优化准则依次为1)包含新结点后,最佳结点的SMBR外接球体积增量应为其兄弟结点中最小的;2)包含新结点后,最佳结点的SMBR外接球重叠度增量应为其兄弟结点中最小的;3)包含新结点后,最佳结点的SMBR外接球半径应为其兄弟结点中最小的。
为实现发明目的,所述的溢出结点处理程序由结点强制重新插入处理程序与结点分裂处理程序组成。当多维数据动态存取模型数据结构的结点因插入新结点而导致溢出时,溢出结点处理程序会首先判断溢出结点所在的索引层是否为非根结点层,且在插入新结点的过程中第一次进行溢出结点处理。若满足该条件,则进行强制重新插入处理;否则进行结点分裂处理。其中,在结点分裂处理中,溢出结点被一对新结点取代,这可能会导致溢出结点的父结点发生溢出,溢出处理将会沿插入路径自下向上传播,直至未能形成溢出的结点层为止。
为实现发明目的,所述的强制重新插入处理程序,其调用条件是首先在溢出结点中有选择地取出一部分子结点;然后,由于溢出结点在提取部分子结点后,其SMBR发生变化,调用所述的插入路径各层结点SMBR调整程序对新结点插入路径各层结点的SMBR进行调整;最后,将其依次插入到多维数据动态存取模型数据结构中。溢出结点子结点的提取准则是提取SMBR距溢出结点SMBR中心最远的一些子结点,其个数需由用户指定。
为实现发明目的,所述的结点分裂处理程序将溢出结点的子结点集分裂为两组,并为每组子结点新建一个新结点。溢出结点的子结点集的分裂是沿某个维向进行的,其选择准则是将溢出结点各子结点SMBR在各维向上形成的序列划分为子序列对集合,以相应子序列对集合中所有的子序列对的SMBR外接球半径之和最小的维向为分裂维向。沿分裂维向,在各子序列对中采用结点SMBR外接球最小重叠度和最小体积准则选取最优子序列对,并将其封装为一对新结点,即为溢出结点的分裂结果。
为实现发明目的,设N为SMBR发生变化的源结点,所述的插入路径各层结点SMBR调整程序按以下步骤进行1)调整N的SMBR;2)如果N为根结点,程序返回;3)调整N的父结点P的SMBR,使之恰好包含P的所有子结点;4)令N=P,返回至步骤2)。
为实现发明目的,所述的多维数据动态存取机制,在步骤二中,数据结点动态删除程序的实现步骤如下1)首先对多维数据动态存取模型数据结构进行深度优先遍历确定欲删除数据结点的父结点(叶索引结点),在遍历过程中,采用判断各层结点SMBR是否包含欲删除多维数据点的方法降低搜索范围;2)释放数据结点存储空间,并在其父结点删除其相关记录信息;3)判断该数据结点的父结点现存子结点个数,若小于步骤二中定义的子结点数下限值m,那么就提取其子结点重新插入到多维数据动态存取模型数据结构中;4)最后删除该结点,并将其父结点作为当前结点考察其子结点数是否小于步骤二中定义的子结点数下限值m,对于符合该条件的结点,则采取步骤3)中的处理方法进行处理;否则,程序返回。
为实现发明目的,所述的多维数据动态存取机制,在步骤三中包含点查询、范围查询,以及空间k近邻查询程序。
为实现发明目的,所述的点查询程序是基于多维数据动态存取模型数据结构的深度优先遍历程序实现的。在遍历过程中采用当前结点的SMBR是否包含查询目标所对应的多维数据点为向下遍历剪枝准则,若包含,则以当前结点作为查询目标的父系结点继续对其进行向下查询,否则,查询其兄弟结点。点查询程序最终可返回包含查询目标的叶索引结点或空值。
为实现发明目的,所述的范围查询程序对多维数据动态存取模型数据结构进行深度优先遍历,在遍历过程中,对用户指定的空间查询域与各层结点SMBR进行求交运算,以与空间查询域求交结果非空的SMBR所对应结点列为查询目标的父系结点,继续对其进行递归查询,最终返回落入空间查询域的索引结点集。
为实现发明目的,所述的空间k近邻查询程序,结合点查询程序与范围查询程序实现,首先采用点查询程序确定查询目标所在的叶索引结点,然后根据该结点的外接球半径初始化一个空心球查询区域,结合范围查询程序在空心球区域查与多维数据动态存取模型数据结构叶索引结点层SMBR的交集区域内查找查询目标的近邻点。通过向外扩散调整空心球区域获取包含k个邻近点的交集区域,将每一次调整空心球区域前所查询到的近邻点存储在线性表中,直至交集区域中的数据点满k个为止。
为实现发明目的,所述的多维数据动态存取机制,在步骤四中将步骤一、二、三中的通用的功能函数封装为对外开放的应用程序接口,供产品逆向工程数据处理中其它数据处理操作调用。另外,在其它科学领域中,譬如地理信息系统、医学成像系统、空间数据库系统等领域的研究中,可以通过调用多维数据动态存取机制所提供的应用程序接口完成对各类多维数据的处理操作。
本发明与现有技术相比,具有以下优点1)多维数据动态存取模型数据结构为高度平衡树结构,易于建立多级存储体系。
2)在多维数据动态存取模型数据结构实现中,数据结点插入操作是动态执行的,不依赖于结点插入顺序。
3)在多维数据动态存取模型数据结构实现中,采用了索引结点SMBR的外接球半径、体积增量和重叠度作为优化指标,降低了多维数据动态存取模型数据结构结点SMBR重叠率。
4)各层结点的SMBR皆接近于正多维矩形,兼容各维类型数据,避免了因数据维向退化而导致的多维数据动态存取模型数据结构恶化问题。
5)多维数据动态存取模型数据结构结点删除操作,是动态执行的。结点删除后,只在局部对多维数据动态存取模型数据结构进行调整,不需要重新建立索引。
6)基于多维数据动态存取模型数据结构的空间查询机制提供了完善的空间查询操作,且允许用户自定义查询区域。


图1是本发明产品逆向工程多维数据动态存取机制程序结构图。
图2是本发明步骤二多维数据动态存取模型示意图。
图3是本发明步骤二多维数据动态存取模型数据结构新结点动态插入程序流程图。
图4是本发明溢出结点处理程序流程5是本发明多维数据动态存取模型数据结构的数据结点删除程序的实现流程图。
图6是本发明实施案例中所采用的产品型面数据点云图。
图7是本发明实施案例点云的动态存取模型数据结构构建效率分析图。
图8是点云数据空间查询效率分析图。
具体实施例方式
下面结合附图和实施案例对本发明作进一步说明。
如图1所示,是本发明产品逆向工程多维数据动态存取机制程序结构图。多维数据动态存取机制的实现程序包含数据输入程序1、多维数据动态存取模型构建程序2、多维数据空间查询程序3以及外部应用程序接口4。其中,数据输入程序1负责读入产品数字化采集设备输出的三维数据点云,井为之创建双向线性表存储结构,以满足对数据结点顺序或逆序遍历的需求,且当数据存储空间超出内存储器容量时,线性表存储结构易于采用数据文件的方式在辅助存储器中实现。多维数据动态存取模型2在数据输入程序1所创建的线性表存储结构的基础之上,采用嵌套的SMBR对三维点云数据进行空间划分,以组建数据点之间的拓扑关系。多维数据空间查询程序3定义了多种访问多维动态索引结构2的方法。应用程序接口4向其他应用程序提供了多维数据存取功能调用接口。
如图2所示,是本发明多维数据动态存取模型数据结构示意图。多维数据动态存取模型数据结构的建立是多维数据动态存取机制实现中的重要组成部分,本发明采用C++程序设计语言实现。多维数据动态存取模型数据结构的结点分为根索引结点、内部索引结点和叶索引结点,其中内部索引结点中存储了其父结点地址、子结点(可能是内部索引结点,也可能是叶索引结点)地址表和该结点的SMBR信息(SMBR两对角顶点信息)。叶索引结点中存储了其父结点地址、数据结点地址表和该结点的SMBR信息。多维数据动态存取模型数据结构的根结点结构可能是内部结点相同,也可能是叶索引结点相同,区别是根结点的父结点地址为空。多维数据动态存取模型数据结构中的数据结点存储空间对象信息项的地址。在各类索引结点的实现中,本发明利用C++纯虚函数技术,在程序运行中,根据虚函数的返回值判别结点类型。对于多维数据动态存取模型数据结构各层结点的子结点数的上限值M、下限值m,由用户根据点云数据规模自行设置,一般情况下可取m=40M%。
多维数据动态存取模型构建程序2包含新结点动态插入程序与数据结点动态删除程序。
如图3所示,是本发明新结点动态插入程序流程图。新结点动态插入程序包含选择子树程序1、溢出结点处理程序2和插入路径中各层结点SMBR调整程序3。新结点动态插入程序应用于数据点云双向线性表存储结构的顺序遍历中,将当前遍历结点插入至多维数据动态存取模型数据结构中。该程序首先调用选择子树程序1确定新结点在多维数据动态存取模型数据结构中的最佳父结点。当向选择子树程序1所确定的最佳结点中插入新结点时,若最佳结点包含新结点后,其子结点数未超出多维数据动态存取模型数据结构子结点数目上限M,则直接执行新结点插入程序;否则就会产生结点溢出事件,引发调用溢出结点处理程序2,对溢出结点进行强制重新插入或分裂处理。多维数据动态存取模型数据结构在插入新结点后会导致插入路径各层结点的SMBR信息发生变化,插入路径各层结点SMBR调整程序可以自插入路径的最底层结点逐层向上,完成各层结点SMBR的校正处理。
设选择子树程序1接受传入的新结点为P及欲插入层的层号为Lev,则该程序具体实现步骤如下1)设置指针pCurNode指向多维数据动态存取模型数据结构的根结点及当前所在索引层的层号l_num为1;2)若pCurNode为空,则程序返回空值;3)计算pCurNode所指结点的子结点SMBR包含结点P的SMBR信息后,其外接球的增量,从中选择增量最小的子结点,存入局部线性表S1中;4)由于可能存在多个相同SMBR外接球最小增量的子结点,若S1中的子结点数等于1,则程序返回pCurNode;5)在S1中选择SMBR包含结点P的SMBR后,选取具有最小SMBR重叠度的子节点,存入线性表S2中;6)若S2中子结点数等于1,则程序返回pCurNode;7)在S2中选择具有最小SMBR外接球体积的子结点,修改pCurNode,指向该子结点;8)修改当前所在索引层的层号,进入下一层,即l_num=lnum+1;9)若l_num>=Lev,则程序返回pCurNode;若l_num<Lev,则跳转至步骤3)。
如图4所示,是本发明溢出结点处理程序流程图。设溢出结点处理程序2接受传入的溢出结点N、导致N发生溢出的结点P,以及N所在索引层的层号L1,则在该程序实现中,首先若L1层为动态索引结构的非根结点层且在插入数据结点P的过程中第一次调用溢出结点处理程序,则调用强制重新插入程序5进行处理;否则,调用结点分裂处理程序6进行处理。对于溢出结点采用结点分裂程序进行处理后,若下层结点的分裂导致其上层结点溢出,则需要将结点溢出处理沿新结点插入路径向上传播,直至某层结点未发生溢出为止。若溢出处理传播到根结点层且对根结点进行分裂处理后,多维数据动态存取模型数据结构的层数要增1。
强制重新插入程序5接受传入的溢出结点N、导致N发生溢出的结点P,以及N所在索引层的层号L1,则具体实现步骤如下1)对结点N的子结点与结点P所构成的子结点集C,计算C中各结点SMBR的中心到结点N的SMBR中心的距离;2)以1)中计算的距离值为关键字的降序,对C中结点排序处理;3)移除C中前R个结点(R=30M%),并调整pCurNode所指结点的SMBR大小;4)按照2)中子结点集C中的子结点序列,对3)中所移除的p个子结点依次调用多维数据动态存取模型数据结构新结点动态插入程序插入动态索引结构第L1层中。
结点分裂程序6接受传入的溢出结点N、导致N发生溢出的结点P,以及N所在索引层的层号L1,则程序具体实现步骤如下1)设(a1,a2,…,ad)为d维笛卡尔空间基,将结点P并入pCurNode所指结点的子结点集,并初始化整型变量i为1;2)将pCurNode所指结点的子结点按照SMBR的最小顶点坐标在ai方向上的分量增序进行排序,得到子结点序列Li(1);3)对Li(1)进行子序列对划分,要求划分后子序列中的结点数不小于m。若设划分后的子序列对为(LL(1),RL(1)),且LL(1)URL(1)=Li(1),]]>LL(1)∩RL(1)=,这样的划分共有(M-2M+2)种情况,即Qi(1)={(LLk(1),RLk(1))|k=1,2,···,M-2m+1};]]>4)将pCurNode所指结点的子结点按照SMBR的最大顶点坐标在ai方向上的分量增序进行排序,得到子结点序列Li(2);5)对Li(2)进行子序列对划分,要求每个子序列中的结点数皆不小于m。若设划分后的子序列对为(LL(2),RL(2)),则LL(2)URL(2)=Li(2),]]>LL(2)∩RL(2))=,这样的划分共有(M-2M+2)种情况,Qi(2)={(LLk(2),RLk(2))|k=1,2,···,M-2m+2};]]>6)计算Qi(1)和Qi(2)中各子序列的SMBR外接球半径之和Gi;7)令i自增1;8)如果i<3,返回步骤2);9)从G1,G2,…,Gd中选出最小值Gj(j=1,2,…,d);10)以轴aj为分裂轴,沿轴aj,对结点序列Lj(1),当n=1,2时,对子序列对集合Qj(1)和Qi(2)中的子序列对(LLab,RLab)(a=1,2,…,M-2m+2;b=1,2),依次以条件min{S((LLa(n))∩S((RLb(n))}与min{S(LLa(n))+S(RLb(n))}进行筛选,所得的子序列对(LLab,RLab)为Lj(1)的最优划分。最后将LLab封装为结点N1,RLab封装为结点N2,则N1和N2即为pCurNode所指结点的近似最优分裂。11)在结点N的父结点中删除N,并将结点N1和N2作为其子结点。
插入路径中各层结点SMBR调整程序3以存储新的子结点而导致SMBR发生变化的当前索引结点curNode为传入参数,调用索引结构SMBR调整程序,对插入结点后的多维数据动态存取模型数据结构的各层结点SMBR进行调整,具体步骤如下1)若curNode为空,程序退出;2)判断curNode是否为叶索引结点,若为非叶索引结点,则跳转步骤4);3)根据curNode的子结点SMBR信息,调整curNode的SMBR。由于在本例中,叶索引结点存储点数据,可以直接利用点数据SMBR大小为0的性质,简化计算;4)根据curNode的子结点SMBR信息,调整curNode的SMBR;5)令curNode指向其当前所指结点的父结点,跳转至步骤1)。
如图5所示,是数据结点动态删除程序的实现流程图。设欲删除数据结点为P,数据结点删除具体程序实施步骤如下1)首先对多维数据动态存取模型数据结构进行深度优先遍历确定欲删除数据结点的父结点(叶索引结点),在遍历过程中,采用判断各层结点SMBR是否包含欲删除多维数据点的方法降低搜索范围,最终确定删除目标P所在的叶索引结点L;2)自L中删除P;3)若L中剩余子结点数不小于多维数据动态存取模型数据结构结点的子结点数下限值m,则调用插入路径中各层结点SMBR调整程序3进行处理;4)若L为根结点,且其子结点数为1,则令其子结点为根结点,并将多维数据动态存取模型数据结构层数减1后返回;5)若L中剩余子结点数小于动态数据结构的参数值m,则将调用新结点插入程序将L的子结点重新插入多维数据动态存取模型数据结构中,然后释放L所占据的存储空间,程序返回;6)以L为源结点,调用插入路径中各层结点SMBR调整,对SMBR大小发生变化的各层结点进行调整;7)令L为其父结点,程序回至步骤4)。
基于多维数据动态空间索引结构的空间查询包括点查询、范围查询和空间k近邻查询,主要基于树状索引结构的深度优先遍历程序,通过有效的向下剪枝处理实现的。
点查询的目的是快速确定查询目标点所在的叶索引结点,该程序具体实现步骤如下1)设指针pCurrent指向多维数据动态存取模型数据结构根结点;2)若pCurrent所指结点类型为叶索引结点,且查询目标点落入该结点SMBR中,则程序返回pCurrent;若查询目标点未落入该结点SMBR中,则程序返回空值;3)顺序遍历pCurNode所指结点的子结点,在遍历中,递归调用点查询操作,新建指针类型retPtr,接受点查询操作的返回值;4)返回retPtr。
在逆向工程数据处理中,范围查询用于在给定目标点及空间查询域的条件下,在数据点集中搜索落入空间查询域的数据点。该程序具体实现步骤如下1)设pCurNode指向多维数据动态存取模型数据结构根结点;2)若pCurNode所指结点为叶结点类型,若该结点SMBR与空间查询域相交,则将pCurNode所指结点内落入空间查询域的子结点依次添加到全局线性表中,然后程序返回;3)顺序遍历pCurNode所指结点的子结点,在遍历中,以当前子结点作为查询子树递归调用范围查询操作。
空间k近邻查询的目的使建立数据点云中数据点之间的邻近拓扑关系,该查询操作在各类数据处理以及后续曲面重建中普遍得到应用。空间k近邻查询程序结合点查询与范围查询程序实现,具体实现步骤如下1)初始化数据点集合KNN为空,叶索引结点线性表L为空;2)定义指针pCurObj指向数据结点P,调用点查询程序,返回指向P所在的叶结点的指针pLeafNode;3)计算的pLeafNode所指结点的SMBR外接球半径r定义空心球区域S(c,r1,r2),初始化r1为0,r2=rkM,]]>球心位于数据结点P中包含的三维数据点处;4)调用范围查询程序,获取SMBR与S(c,r1,r2)相交的叶结点,添加到集合L中;5)如果步骤3)中向L中添加结点了,则对L中的所有数据结点按到目标o的距离值增序排序,得数据结点序列L′;否则跳转至步骤6;6)如果L′中的数据结点数n大于k,则从其中第min{k,n}个数据结点开始对L′逆序搜索,判断所有落入S(c,r1,r2)的数据结点,存入KNN中;7)如果KNN中的数据结点数等于k个,则程序结束,返回KNN;8)更新S(c,r1,r2),使r1=r2,r2=r2·k-nn+1,]]>返回步骤4)。
如图6所示,是本实施案例中所采用的产品型面点云a~f,这些点云在数据规模或数据-分布上存在差异,其中点云a为扫描线数据,点数为666;点云b和c的数据点均匀分布,其点数分别为5,070和10,073;点云d的数据点呈不均匀分布状态,点数为2,6218;点云e为封闭型面的扫描线数据,点数为34,834;点云f带有内孔、数据呈均匀分布状态,点数为45,075。对这些数据分别建立动态存取机制,其动态存取模型数据结构的参数统一取为M=20,m=8,R=6。如图7所示,是图6所示点云数据动态存取模型数据结构的构建效率图,由图可见动态存取模型数据结构的构建效率仅随点云数据规模的增长呈线性关系增长,而与点云数据分布状况无关。如图8所示,是图6所示点云数据空间查询效率图,由于空间k近邻查询包含了点查询与范围查询,因此通过观察k近邻查询即可对空间查询效率作出正确评估,实验表明,点云的空间k-近邻查询(k=30)效率仅随点云数据量的增长呈线性关系增长,与点云数据分布状况无关。
权利要求
1.一种产品逆向工程多维数据动态存取机制,其特征在于依次包含以下步骤一、将产品数字化设备输出的数据点云文件读入到存储设备中,并为其建立线性表存储结构;二、建立多维数据动态存取模型;三、实现基于多维数据动态存取模型数据结构的空间查询机制。
2.如权利要求1所述的产品逆向工程多维数据动态存取机制,其特征在于步骤二中,将多维数据动态存取模型数据结构定义为平衡树结构,由新结点动态插入程序和数据结点动态删除程序实现。
3.如权利要求2所述的产品逆向工程多维数据动态存取机制,其特征在于多维数据动态存取模型数据结构的根索引结点层、内部索引结点层和叶索引结点层中各结点对应产品原型数据点云包围空间中的相互嵌套的空间最小包围矩形(Spatial Minimum Box RectangleSMBR),且所有结点的子结点数不得大于M(M为大于0的整数)个,除根结点外,所有结点的子结点数不得小于m个(m<(M/2+1))。
4.如权利要求2所述的产品逆向工程多维数据动态存取机制,其特征在于新结点动态插入程序由选择子树、溢出结点处理、插入路径中各层结点SMBR调整三个程序组合而成,在其实现中首先调用选择子树程序确定新结点在多维数据动态存取模型数据结构中的最佳父结点;当选择子树程序所确定的最佳父结点中插入新结点时,若最佳父结点包含新结点后,其子结点数未超出步骤二中所定义的子结点数目上限M,则直接执行新结点插入操作,否则,产生结点溢出事件,引发调用溢出结点处理程序对溢出的结点进行强制重新插入或分裂处理。
5.如权利要求4所述的产品逆向工程多维数据动态存取机制,其特征在于选择子树程序,首先将新结点的SMBR信息以及该结点欲插入至多维数据动态存取模型数据结构中目标结点层的层号,而后自根索引结点开始,逐层向下在每一层结点中根据特定的优化准则筛选出最佳结点作为新结点的父系结点,直至到达所指定结点层为止,最终所筛选的各层结点顺次形成了新结点最佳插入路径,其中在目的结点层中所选择的结点即为新结点的父结点。
6.如权利要求5所述的产品逆向工程多维数据动态存取机制,其特征在于在选择子树程序的筛选各层结点过程中,所采用的优化准则依次为1)包含新结点后,最佳结点的SMBR外接球体积增量应为其兄弟结点中最小的;2)包含新结点后,最佳结点的SMBR外接球重叠度增量应为其兄弟结点中最小的;3)包含新结点后,最佳结点的SMBR外接球半径应为其兄弟结点中最小的。
7.如权利要求4所述的产品逆向工程多维数据动态存取机制,其特征在于溢出结点处理程序由结点强制重新插入处理程序与结点分裂处理程序组成,当多维数据动态存取模型数据结构的结点因插入新结点而导致溢出时,溢出结点处理程序会首先判断溢出结点所在的索引层是否为非根结点层,且在插入新结点的过程中第一次进行溢出结点处理,若满足该条件,则进行强制重新插入处理,否则进行结点分裂处理。
8.如权利要求4所述的产品逆向工程多维数据动态存取机制,其特征在于插入路径中各层结点SMBR调整程序设N为SMBR发生变化的源结点,按以下步骤进行1)调整N的SMBR;2)如果N为根结点,程序返回;3)调整N的父结点P的SMBR,使之恰好包含P的所有子结点;4)令N=P,返回至步骤2)。
9.如权利要求2所述的产品逆向工程多维数据动态存取机制,其特征在于数据结点动态删除程序的实现步骤如下1)首先对多维数据动态存取模型数据结构进行深度优先遍历确定欲删除数据结点的父结点(叶索引结点),在遍历过程中,采用判断各层结点SMBR是否包含欲删除多维数据点的方法降低搜索范围;2)释放数据结点存储空间,并在其父结点删除其相关记录信息;3)判断该数据结点的父结点现存子结点个数,若小于步骤二中定义的子结点数下限值m,那么就提取其子结点重新插入到多维数据动态存取模型数据结构中;4)最后删除该结点,并将其父结点作为当前结点考察其子结点数是否小于步骤二中定义的子结点数下限值m,对于符合该条件的结点,则采取步骤3)中的处理方法进行处理;否则,程序返回。
10.如权利要求1所述的产品逆向工程多维数据动态存取机制,其特征在于在步骤三中包含点查询、范围查询、空间k近邻查询程序,其中点查询程序在多维数据动态存取模型数据结构的深度优先遍历中采用当前结点SMBR是否包含查询目标所对应的多维数据点为向下剪枝准则,最终返回包含查询目标的叶索引结点或空值;范围查询程序在对多维数据动态存取模型数据结构深度优先遍历中,对用户指定的空间查询域与各层结点SMBR进行求交运算,以与空间查询域求交结果非空的SMBR所对应结点列为查询目标的父系结点继续对其进行递归查询,最终返回落入空间查询域的索引结点集。
11.如权利要求10所述的产品逆向工程多维数据动态存取机制,其特征在于空间k近邻查询程序,结合点查询程序与范围查询程序实现,首先采用点查询程序确定查询目标所在的叶索引结点,然后根据该结点的外接球半径初始化一个空心球查询区域,结合范围查询程序在空心球区域查与多维数据动态存取模型数据结构叶索引结点层SMBR的交集区域内查找查询目标的近邻点;通过自适应调整空心球区域获取包含k个邻近点的交集区域,将每一次调整空心球区域前所查询到的近邻点存储在线性表中,直至交集区域中的数据点满k个为止。
全文摘要
一种产品逆向工程多维数据动态存取机制,可对产品型面三维测量数据点云直接进行快速空间聚类划分建立多维数据动态存取模型,基于该模型对点云数据进行动态存取管理及数据空间关系快速查询。本发明对于各类多维数据操作能及时响应更新,并可实现数据存储设备多级存取体系,具有数据适应性强、存储设备利用率高、易扩展为其他空间对象的存取机制等特点,应用于产品逆向工程数据处理中可有效提高数据处理速度,以及处理结果的稳定性与准确性。
文档编号G06F17/30GK1877575SQ200610045318
公开日2006年12月13日 申请日期2006年7月10日 优先权日2006年7月10日
发明者孙殿柱, 李延瑞, 范志先 申请人:山东理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1