三角网格模型中空洞的获取方法及装置与流程

文档序号:14718806发布日期:2018-06-16 23:47阅读:163来源:国知局
本申请涉及逆向工程
技术领域
,更具体地,涉及三角网格模型中空洞的获取方法及装置。
背景技术
:三维扫描系统,可以在不接触被测物体的情况下,采集被测物体表面信息,并根据物体表面信息计算出点云的空间分布,并通过曲面重构方法将点云数据编织成三维网格,从而获得被测物体的三角网格模型。三维扫描系统已经被广泛应用在工业设计领域的辅助制造与检验、医疗领域的手术定位与康复、游戏娱乐领域的实景建模与仿真以及考古领域的遗址保护与复原等方面。但是,在实际应用中,由于被测物体自身缺陷或者采样点数据不足等因素的影响,导致三角网格模型中可能存在空洞缺陷。此些空洞不仅影响三角网格模型所模拟出的视觉效果,而且影响对比测量、修改重塑以及有限元分析等后续处理的有效性。技术实现要素:有鉴于此,本申请提供了一种三角网格模型中空洞的获取方法,用于从三角网格模型中提取出空洞,以便进行空洞修复。另外,本申请还提供了一种三角网格模型中空洞的获取装置,用以保证上述方法在实际中的应用及实现。为实现所述目的,本申请提供的技术方案如下:本申请的第一方面提供了一种三角网格模型中空洞的获取方法,包括:根据三角网格模型包含的顶点,生成边界顶点信息列表;其中,所述边界顶点信息列表中包含若干边界顶点的顶点信息,所述边界顶点为三角网格模型中至少连接有一条边界边的顶点,所述边界边为只参与构成一个三角形或者未参与构成三角形的边,所述顶点信息包括编号、顶点级别及上级边界顶点编号;基于所述边界顶点信息列表,生成路由矩阵;其中,所述路由矩阵表示所述边界顶点与其上级边界顶点之间的连接关系;基于所述边界顶点信息列表,生成距离矩阵;其中,所述距离矩阵表示所述边界顶点与其上级顶点之间的距离;将所述距离矩阵的每行中有效距离元素两两组合,根据每组中有效距离元素的数值,对所述路由矩阵和距离矩阵进行处理;其中,所述有效距离元素为既不为0也不为无穷大的元素;根据处理后的路由矩阵,从所述边界顶点信息列表中,查找构成空洞的边界顶点。本申请的第二方面提供了一种三角网格模型中空洞的获取装置,包括:边界顶点信息列表生成模块,用于根据三角网格模型包含的顶点,生成边界顶点信息列表;其中,所述边界顶点信息列表中包含若干边界顶点的顶点信息,所述边界顶点为三角网格模型中至少连接有一条边界边的顶点,所述边界边为只参与构成一个三角形或者未参与构成三角形的边,所述顶点信息包括编号、顶点级别及上级边界顶点编号;路由矩阵生成模块,用于基于所述边界顶点信息列表,生成路由矩阵;其中,所述路由矩阵表示所述边界顶点与其上级边界顶点之间的连接关系;距离矩阵生成模块,用于基于所述边界顶点信息列表,生成距离矩阵;其中,所述距离矩阵表示所述边界顶点与其上级顶点之间的距离;路由矩阵和距离矩阵处理模块,用于将所述距离矩阵的每行中有效距离元素两两组合,根据每组中有效距离元素的数值,对所述路由矩阵和距离矩阵进行处理;其中,所述有效距离元素为既不为0也不为无穷大的元素;空洞的边界顶点获取模块,用于根据处理后的路由矩阵,从所述边界顶点信息列表中,查找构成空洞的边界顶点。由以上技术方案可知,本申请提供了一种三角网格模型中空洞的获取方法实施例,本实施例首先根据三角网格模型包含的顶点,生成包含编号、顶点级别及上级边界顶点编号的边界顶点信息列表,然后基于该边界顶点信息列表生成路由矩阵及距离矩阵,再将距离矩阵每行中的有效距离元素进行两两组合,根据每组中有效距离元素的数值,对路由矩阵和距离矩阵进行处理,最后根据路由矩阵,从边界顶点信息列表中,查找组成空洞的边界顶点。可见,本实施例能够实现对空洞缺陷的有效识别。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请提供的三维扫描系统的数据采集示意图;图2为本申请提供的三维扫描系统的模型重构示意图;图3为本申请提供的三角网格模型中的空洞示意图;图4为本申请提供的三角网格模型中空洞的获取方法实施例1的流程图;图5为本申请提供的三角网格模型中空洞的获取装置实施例1的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。三角网格模型是使用三维扫描系统扫描被测物体后生成的模型,三角网格模型可以用来描述被测物体的表面特征。具体地,三角网格模型的构建过程主要包括数据采集与模型重构两部分。其中,数据采集过程中,需要使用三维扫描仪。如图1所示,三维扫描仪3由照射光源2和双目相机4组成,当扫描对象1将照射光线反射进互成一定夹角的双目相机时,便得到扫描对象1的一组立体图像5。随着三维扫描仪3位置的不断变化,立体图像的数量不断增多,此些立体图像分别记录了扫描对象1不同位置、不同角度的图像信息。在模型重构过程中,如图2所示,首先,根据三角测量原理,按照获取立体图像5的时间先后顺序,计算出每组立体图像中记录的扫描对象表面的点云数据6,并将所有点云数据统一到相同的坐标系中;然后,将获取的点云数据编织成三角网格7并生成三维曲面模型8,其中,三角网格也称为三角网格模型。三角网格模型是描述被测物体表面特征的唯一数据,并且贯穿于模型的整个生命周期。因此,对三角网格模型的分析及对数据结构的处理及建模能力直接决定了三维扫描技术能否真实还原被测物体的外形结构和尺寸特征。在实际应用中,由于被测物体自身缺陷或者采样点数据不足等因素的影响,导致三角网格模型中可能存在如图3所示的空洞缺陷。空洞获取是指使用某种方法将三角网格模型中的空洞缺陷提取出来,以便进行空洞修复。空洞获取技术是否完善直接关系到三角网格模型中空洞修复的整体效果。为了实现对空洞的准确获取,本申请提供了如下的空洞获取方法。参见图4,其示出了本申请提供的三角网格模型中空洞的获取方法实施例1的流程。如图4所示,本实施例可以具体包括步骤S401~步骤S405。步骤S401:根据三角网格模型包含的顶点,生成边界顶点信息列表;其中,所述边界顶点信息列表中包含若干边界顶点的顶点信息,所述边界顶点为三角网格模型中至少连接有一条边界边的顶点,所述边界边为只参与构成一个三角形或者未参与构成三角形的边,所述顶点信息包括编号、顶点级别及上级边界顶点编号。其中,如图2所示,三角网格模型中包含有若干顶点,此些顶点具有先后获取顺序,根据三角网格模型中各个顶点的先后获取顺序,生成有关边界顶点的信息列表。需要说明的是,边界顶点是查找空洞的重要特征数据。如图3所示的空洞示意图,该空洞是由6个边界顶点(A0,A1,……,A5)围成的六边形空洞。边界顶点指的是三角网格模型中至少连接有一条边界边的顶点,进一步地,边界边是指三角网格模型中仅参与构成一个三角形或者并未参与构成三角形的边。正常来讲,三角网格模型中的边会参与构成两个三角形,而仅参与构成一个三角形或者并未参与构成三角形的边,则可能会构成空洞。因此,本申请将具有此种特征的边称为边界边,边界边的顶点称为边界顶点。边界顶点信息列表中包含有边界顶点的三项属性信息,为了便于描述,将该三项属性信息称为边界顶点的顶点信息。顶点信息分别为编号、顶点级别以及上级边界顶点编号。其中,三角网格模型中的各个顶点具有各自的编号,该编号是三维扫描系统在构建三角网格模型时,为了唯一定位每个顶点,为顶点设置的存储编号。边界顶点信息列表中的编号即边界顶点的存储编号。边界顶点的上级边界顶点编号用于标识边界顶点的上级边界顶点。步骤S402:基于所述边界顶点信息列表,生成路由矩阵;其中,所述路由矩阵表示所述边界顶点与其上级边界顶点之间的连接关系。其中,根据上述生成的边界顶点信息列表,构建路由矩阵。路由矩阵可以描述边界顶点信息列表中的每个边界顶点与其上级边界顶点之间的连接关系。步骤S403:基于所述边界顶点信息列表,生成距离矩阵;其中,所述距离矩阵表示所述边界顶点与其上级顶点之间的距离。其中,上述步骤S401生成的边界顶点信息列表中,包含边界顶点的顶点级别。根据边界顶点的顶点级别,构建距离矩阵。需要说明的是,本步骤生成距离矩阵与步骤S402生成路由矩阵的先后顺序并不局限于本实施例中的顺序,也可以是先执行步骤S403,再执行步骤S402,或者,步骤S402与步骤S403同时执行。步骤S404:将所述距离矩阵的每行中有效距离元素两两组合,根据每组中有效距离元素的数值,对所述路由矩阵和距离矩阵进行处理;其中,所述有效距离元素为既不为0也不为无穷大的元素。其中,距离矩阵中包含多行元素,将每行中既不为0也不为无穷大的元素两两组合,从而每行得到若干两两元素组。根据距离矩阵中两两元素组的数值之和与距离矩阵中相关元素之间的关系,对路由矩阵和距离矩阵进行处理。步骤S405:根据处理后的路由矩阵,从所述边界顶点信息列表中,查找构成空洞的边界顶点。其中,从处理后的路由矩阵中,可以得出组成空洞的各条路径的路径终点。然后,再查找各条路径经过的边界顶点,边界顶点信息列表中具有多个上级边界顶点编号的边界顶点、路径终点以及路径经过的边界顶点便是构成空洞的边界顶点。由以上的技术方案可知,本申请提供了一种三角网格模型中空洞的获取方法实施例,本实施例首先根据三角网格模型包含的顶点,生成包含编号、顶点级别及上级边界顶点编号的边界顶点信息列表,然后基于该边界顶点信息列表生成路由矩阵及距离矩阵,再将距离矩阵每行中的有效距离元素进行两两组合,根据每组中有效距离元素的数值,对路由矩阵和距离矩阵进行处理,最后根据路由矩阵,从边界顶点信息列表中,查找组成空洞的边界顶点。可见,本实施例能够实现对空洞缺陷的有效识别。在实际应用中,以上三角网格模型中空洞的获取方法实施例1中的步骤S401(根据三角网格模型包含的顶点,生成边界顶点信息列表)的具体实现方式包括以下步骤A1~步骤A6。步骤A1:在三角网格模型的各个顶点中,查找边界顶点,并设置查找到的边界顶点的顶点信息,将所述顶点信息保存到边界顶点缓存信息列表中。首先,可以按照三角网格模型中各个顶点的存储顺序及边界顶点的定义,在三角网格模型中查找首个边界顶点。例如,首个边界顶点为图3中的点A0。然后,设置边界顶点的顶点信息,即设置边界顶点的编号、顶点级别及上级边界顶点编号。其中,三角网格模型中的各个顶点具有各自的存储编号,编号即为边界顶点的存储编号;顶点级别设置为任意数值,如0、1、2等整数值,此处假设将首个边界顶点的顶点级别设置为0;将上级边界顶点编号设置为不同于各个顶点的存储编号的任意值,例如将首个边界顶点的上级边界顶点编号设置为-1。将首个边界顶点的顶点信息保存到边界顶点缓存信息列表中,以图3中的空洞为例,首个边界顶点A0的顶点信息保存到表1后,生成的表1如下所示。表1另外,本申请设置一个额外属性,即最高顶点级别,用来辅助生成边界顶点信息列表。将最高顶点级别的初始值设置为首个边界顶点的顶点级别减1,例如,首个边界顶点的顶点级别为0,则最高顶点级别的初始值为-1。步骤A2:将所述边界顶点缓存信息列表中的所有边界顶点的顶点信息转移至边界顶点信息列表中,并将所述最高顶点级别加1。其中,将边界顶点缓存信息列表中的各个边界顶点的顶点信息保存至边界顶点信息列表中,然后清空边界顶点缓存信息列表。需要说明的是,生成边界顶点信息列表的整个流程中,会对步骤A2多次循环执行。步骤A2首次执行时,边界顶点缓存信息列表中仅包含一个边界顶点的顶点信息,即首个边界顶点A0,但后续执行步骤A2时,边界顶点缓存信息列表中可能包含多个边界顶点的顶点信息,本步骤需要将所有的边界顶点的顶点信息均转移至边界顶点信息列表中。在将边界顶点的顶点信息保存在边界顶点信息列表后,将最高顶点级别加1。例如,将首个边界顶点的顶点信息保存在边界顶点信息列表后,最高顶点级别更新为0。步骤A3:按照边界顶点在所述边界顶点信息列表中的存储顺序,依次处理每个顶点级别等于所述最高顶点级别的目标边界顶点。其中,按照边界顶点在边界顶点信息列表中的存储顺序,依次查找顶点级别等于最高顶点级别的边界顶点。为了便于描述,将查找到的边界顶点可以称为目标边界顶点。针对每个目标边界顶点,分别执行下述处理步骤A31~步骤A33。步骤A31:在所述三角网格模型的各个所述顶点中,查找与所述目标边界顶点相连的各个边界顶点。步骤A32:依次判断相连的边界顶点的存储编号与所述目标边界顶点的上级边界顶点编号是否相同。若不同,则执行步骤A33;若相同,则继续判断下一个相连的边界顶点的存储编号与所述目标边界顶点的上级边界顶点编号是否相同。步骤A33:将所述相连的边界顶点的编号设置为自身的存储编号,将所述相连的边界顶点的顶点级别设置为所述最高顶点级别加1,将所述相连的边界顶点的上级边界顶点编号设置为所述目标边界顶点的编号,并将所述相连的边界顶点的编号、顶点级别及上级边界顶点编号保存至所述边界顶点缓存信息列表中。其中,在三角网格模型中,首先查找到与目标边界顶点相连的若干个边界顶点。以图3中的空洞为例,目标边界顶点为A0,查找到的相连的边界顶点为A1及A5。相连的边界顶点A1及A5的存储编号分别为a1及a5,目标边界顶点的上级边界顶点编号为-1,明显不同,因此,将相连的边界顶点A1的编号设置为a1,将顶点级别设置为最高顶点级别0与1的和值即1,将上级边界顶点编号设置为目标边界顶点A0的编号即a0,并将相连的边界顶点A5的编号设置为a5,将顶点级别设置为最高顶点级别0与1的和值即1,将上级边界顶点编号设置为目标边界顶点A0的编号即a0。将相连的边界顶点A1及相连的边界顶点A5的顶点信息保存至边界顶点缓存信息列表后,边界顶点缓存信息列表如下表2所示。表2在某个目标边界顶点执行完毕步骤A31~步骤A33的处理过程后,继续按照步骤A31~步骤A33处理下一个目标边界顶点,直至全部的目标边界顶点均被处理完毕后,执行步骤A4。步骤A4:返回步骤A2将所述边界顶点缓存信息列表中的所有边界顶点的顶点信息转移至边界顶点信息列表中,直至所述边界顶点缓存信息列表中的某个边界顶点的编号与所述边界顶点信息列表中某个边界顶点的编号重复,或者,直至所述边界顶点缓存信息列表中存在编号相同的边界顶点。需要说明的是,所有的所述目标边界顶点被处理完毕后,边界顶点缓存信息列表中包含多个边界顶点的顶点信息,则返回步骤A2将所述边界顶点缓存信息列表中的所有边界顶点的顶点信息转移至边界顶点信息列表中。例如,边界顶点信息列表第三次更新后如下表3所示。表3当然,在返回步骤A2之前,需要判断是否存在下述两种情况中的任意一种情况,若存在,便不再返回步骤A2,而是执行下述步骤A5或者步骤A6。情况之一为:边界顶点缓存信息列表中的某个边界顶点的编号与所述边界顶点信息列表中某个边界顶点的编号重复。情况之二为:边界顶点缓存信息列表中存在编号相同的边界顶点。其中,若出现第一种情况,则执行下述步骤A5,若出现第二种情况,则执行下述步骤A6。例如,边界顶点缓存信息列表如表4所示,属于第二种情况,因此,便不再返回执行步骤A2,而是执行下述步骤A6。表4步骤A5:若所述边界顶点缓存信息列表中的某个边界顶点的编号与所述边界顶点信息列表中某个边界顶点的编号重复,则将所述边界顶点缓存信息列表中的所述某个边界顶点的上级边界顶点编号添加至所述边界顶点信息列表中的所述某个边界顶点的上级边界顶点编号中。其中,本步骤是将边界顶点缓存信息列表中重复的边界顶点的顶点信息保存至边界顶点信息列表中。需要说明的是,重复的边界顶点的编号与顶点级别是相同的,只是上级边界顶点编号不同,则可以将重复的边界顶点保存为边界顶点信息列表中的一条记录,如下表5中的记录A3。步骤A6:若所述边界顶点缓存信息列表中存在编号相同的边界顶点,则所述边界顶点缓存信息列表中所述编号相同的各个边界顶点的编号、顶点级别及上级边界顶点编号保存至所述边界顶点信息列表中。其中,边界顶点缓存信息列表中,重复的边界顶点除了编号相同外,顶点级别也相同,只是上级边界顶点编号不同。因此,在保存时,可以将两个边界顶点的上级边界顶点编号一同保存。例如,将表4所示的边界顶点缓存信息列表中重复的边界顶点保存至表3所示的边界顶点信息列表后,边界顶点信息列表如下表5所示,其中,第6条记录A3的上级边界顶点编号包含两个,分别为a2和a4。表5经过以上步骤A1~步骤A6可以生成边界顶点信息列表。在生成边界顶点信息列表后,需要基于所述边界顶点信息列表,生成路由矩阵,具体实现方式包括以下步骤B1~步骤B2。步骤B1:确定所述边界顶点信息列表中包含的边界顶点个数N,将路由矩阵R初始化为2N×N的零矩阵。步骤B2:按照边界顶点在所述边界顶点信息列表中的存储顺序,依次将各个所述边界顶点与其上级边界顶点之间的连接关系更新到所述路由矩阵R中;其中,所述连接关系更新具体包括:若所述边界顶点信息列表中的第i个边界顶点的上级边界顶点编号与第j个边界顶点的编号相同,则按照下述表达式组(1)更新所述路由矩阵R。R(2i-1,j)=jR(2j-1,i)=i(1)其中,所述i、j均表示边界顶点在所述边界顶点信息列表中的存储顺序。例如,根据表5所示的边界顶点信息列表,生成的路由矩阵R为:R=023000000000100400000000100050000000020006000000003006000000000450000000.]]>另外,在生成边界顶点信息列表后,还需要基于所述边界顶点信息列表,生成距离矩阵,具体实现方式可以包括以下步骤C1~步骤C2:步骤C1:将距离矩阵W初始化为N阶零矩阵,并将所述距离矩阵W中非主对角线元素设置为无穷大。步骤C2:按照边界顶点在所述边界顶点信息列表中的存储顺序,依次将每个所述边界顶点与其上级边界顶点之间的距离更新到所述距离矩阵W中;其中,所述距离更新的表达式为:W(i,j)=W(j,i)=|m-n|×max(m,n),所述m、n分别表示所述边界顶点信息列表中的第i个及第j个边界顶点的顶点级别,所述max(·)表示取括号内所有数值的最大值。同样以表5所示的边界顶点信息列表为例,生成的距离矩阵W为:W=011∞∞∞10∞2∞∞1∞0∞2∞∞2∞0∞3∞∞2∞03∞∞∞330.]]>其中,∞表示无穷大。进一步地,上述三角网格模型中空洞的获取方法实施例1中步骤S404(将所述距离矩阵的每行中有效距离元素两两组合,根据每组中有效距离元素的数值,对所述路由矩阵和距离矩阵进行处理)的具体实现方式包括以下步骤D1。步骤D1:按照由上至下的顺序,逐行将所述距离矩阵中每行元素中既不为0也不为无穷大的元素两两组合,并根据下述表达式组(2)对路由矩阵R和距离矩阵W进行处理;R(2p-1,q)=R(2p-1,q),W(k,p)+W(k,q)≥W(p,q)q,W(k,p)+W(k,q)<W(p,q)]]>R(2p,q)=R(2p,q),W(k,p)+W(k,q)>W(p,q)q,W(k,p)+W(k,q)=W(p,q)0,W(k,p)+W(k,q)<W(p,q)]]>R(2q-1,p)=R(2q-1,p),W(k,p)+W(k,q)≥W(p,q)p,W(k,p)+W(k,q)<W(p,q)---(2)]]>R(2p,q)=R(2p,q),W(k,p)+W(k,p)>W(p,q)p,W(k,p)+W(k,q)=W(p,q)0,W(k,p)+W(k,q)<W(p,q)]]>W(p,q)=W(q,p)=W(p,q),W(k,p)+W(k,q)≥W(p,q)W(k,p)+W(k,q),W(k,p)+W(k,q)<W(p,q)]]>其中,所述k为所述距离矩阵的行号,所述p、q为所述距离矩阵中第k行中进行组合的两个元素的列号。对上述路由矩阵R及距离矩阵W进行处理后,处理后的路由矩阵R’及距离矩阵W’分别为:R′=023234000005101434000000110255000000222036000060333306000600445450500000,W′=011336102245120425324063342603655330.]]>进一步地,上述三角网格模型中空洞的获取方法实施例1中步骤S405(根据处理后的路由矩阵,从所述边界顶点信息列表中,查找构成空洞的边界顶点)的具体实现方式包括以下步骤E1~步骤E5。步骤E1:依据下述与处理后的路由矩阵R’相关的表达式组(3),将所述边界顶点信息列表中的第s个边界顶点确定为空洞的路径终点;R′(2r-1,s)≠0R′(2r,s)≠0R′(2s-1,r)≠0R′(2s,r)≠0]]>其中,所述r为所述边界顶点信息列表中具有多个上级边界顶点编号的边界顶点的存储顺序,所述s为所述边界顶点信息列表中满足上述表达式组(3)的边界顶点的存储顺序。步骤E2:将边界顶点信息列表中的第r个边界顶点的编号及所述路径终点的编号保存至构成空洞的边界顶点集合中。其中,以图3中的空洞为例,从上述表5中可以看出,第6个边界顶点具有两个上级边界顶点编号,因此,r的值为6。另外,从处理后的路由矩阵R’中可以看出,满足上述表达式组(3)的s的值为1,即,空洞的路径终点为边界顶点信息列表中的第1个边界顶点。因此,将上述表5所示的边界顶点信息列表中的第6个边界顶点的编号a3保存至空洞的边界顶点集合中,另外,将第1个边界顶点的编号a0保存至空洞的边界顶点集合中。此时,空洞的边界顶点集合为{a3,a0}。步骤E3:将空洞的第一条路径的起点u初始化为R'(2r-1,s),将空洞的第二条路径的起点v初始化为R'(2r,s)。步骤E4:将所述边界顶点信息列表中的第u个边界顶点的编号保存至所述空洞的边界顶点集合中,并将u更新为R'(2u-1,s),并返回将所述边界顶点信息列表中的第u个边界顶点的编号保存至所述空洞的边界顶点集合中,直至u与s相同。以图3所示的空洞为例,第一条路径依次经过点A2、点A1和点A0,因此,需要将各自的编号a2和编号a1保存至空洞的边界顶点集合中。因此,空洞的边界顶点集合为{a3,a0,a2,a1}。步骤E5:将所述边界顶点信息列表中的第v个边界顶点的编号保存至所述空洞的边界顶点集合中,并将v更新为R'(2v-1,s),并返回将所述边界顶点信息列表中的第v个边界顶点的编号保存至所述空洞的边界顶点集合中,直至v与s相同。以图3所示的空洞为例,第二条路径依次经过点A4、点A5和点A0,因此,需要将各自的编号a4和编号a5保存至空洞的边界顶点集合中。因此,空洞的边界顶点集合为{a3,a0,a2,a1,a4,a5}。边界顶点集合中的各个顶点便是构成空洞的各个顶点,获得该边界顶点集合后,便可以在三角网格模型中查找到一个空洞。当然,可以按照上述方式,查找三角网格模型中的其他空洞。目前,现有的空洞获取技术包括基于点云模型的获取技术和基于网格模型的获取技术。基于点云模型的获取技术,采用层次空间剖分技术进行空洞获取,利用张量理论提取发生剧烈变化的点云区域并消除噪声的影响,但是,该方法在提取空洞周围点云数据的拓扑信息时存在较高的计算复杂度。相对而言,基于网格模型的获取技术更容易实现,该技术对点云模型中的空洞进行分类,并分别给出了对应的获取算法,该类方法虽然能够进行有针对性的空洞获取,但是,分类过程带来了额外的运算量且所分类别很难涵盖所有情况下的空洞,虽然另一种空洞获取方法可以将曲面空洞周围的灰度信息以及拐点等特征信息作为辅助,但该方法受空洞的个体差异影响较为明显。另外,还有基于邻接三角形中边界边性质的空洞获取方法,该类方法具有较强的通用性,但是在进行特殊空洞的获取过程中鲁棒性较低且容易破坏网格模型的原始数据结构。本申请提供的三角网格模型中空洞的获取方法,无需对各种情况进行分别判断即可有效识别出曲面空洞,且具有强鲁棒性。具体而言,本申请提供的空洞获取方法,针对三维扫描系统中重构三角网格的数据结构特性,通过为边界边重新分配长度的方法对网格中的空洞进行数学建模,将图论中的Floyd最短路径选择算法与空洞识别过程有效结合,无需对特殊空洞进行单独处理,即可有效获得构成各类空洞的边界顶点集合。与传统方法相比,本申请提供的空洞获取方法不仅能够识别出由只属于一个三角形的边界边围成的普通空洞,而且能够在保证原始数据完整性的前提下对连接有孤立边的空洞进行识别,同时,对于两个空洞相邻的情况,传统方法会将其识别为一个大的空洞,而本申请提供的空洞获取方法能够对其进行准确判断。以下对本申请提供的三角网格模型中空洞的获取装置进行介绍,需要说明的是,下文有关三角网格模型中空洞的获取装置的说明可以参见上文提供的三角网格模型中空洞的获取方法,以下并不赘述。与上述三角网格模型中空洞的获取方法实施例1相对应,本申请提供了一种三角网格模型中空洞的获取装置实施例1。如图5所示,本装置实施例1可以包括:边界顶点信息列表生成模块501、路由矩阵生成模块502、距离矩阵生成模块503、路由矩阵和距离矩阵处理模块504及空洞的边界顶点获取模块505。边界顶点信息列表生成模块501,用于根据三角网格模型包含的顶点,生成边界顶点信息列表;其中,所述边界顶点信息列表中包含若干边界顶点的顶点信息,所述边界顶点为三角网格模型中至少连接有一条边界边的顶点,所述边界边为只参与构成一个三角形或者未参与构成三角形的边,所述顶点信息包括编号、顶点级别及上级边界顶点编号;路由矩阵生成模块502,用于基于所述边界顶点信息列表,生成路由矩阵;其中,所述路由矩阵表示所述边界顶点与其上级边界顶点之间的连接关系;距离矩阵生成模块503,用于基于所述边界顶点信息列表,生成距离矩阵;其中,所述距离矩阵表示所述边界顶点与其上级顶点之间的距离;路由矩阵和距离矩阵处理模块504,用于将所述距离矩阵的每行中有效距离元素两两组合,根据每组中有效距离元素的数值,对所述路由矩阵和距离矩阵进行处理;其中,所述有效距离元素为既不为0也不为无穷大的元素;空洞的边界顶点获取模块505,用于根据处理后的路由矩阵,从所述边界顶点信息列表中,查找构成空洞的边界顶点。由以上的技术方案可知,本申请提供了一种三角网格模型中空洞的获取装置实施例,本实施例中边界顶点信息列表生成模块501首先根据三角网格模型包含的顶点,生成包含编号、顶点级别及上级边界顶点编号的边界顶点信息列表,然后路由矩阵生成模块502基于该边界顶点信息列表生成路由矩阵,距离矩阵生成模块503生成距离矩阵,路由矩阵和距离矩阵处理模块504再将距离矩阵每行中的有效距离元素进行两两组合,根据每组中有效距离元素的数值,对路由矩阵和距离矩阵进行处理,最后空洞的边界顶点获取模块505根据路由矩阵,从边界顶点信息列表中,查找组成空洞的边界顶点。可见,本实施例能够实现对空洞缺陷的有效识别。具体地,所述边界顶点信息列表生成模块501可以包括:边界顶点查找子模块、顶点信息设置子模块、顶点信息缓存子模块、顶点信息保存子模块、目标边界顶点处理子模块、第一重复顶点信息保存子模块及第二重复顶点信息保存子模块。边界顶点查找子模块,用于在三角网格模型的各个顶点中,查找边界顶点;其中,所述三角网格模型中的各个顶点具有各自的存储编号;顶点信息设置子模块,用于设置查找到的边界顶点的顶点信息;其中,将所述顶点信息中的编号设置为该边界顶点的存储编号、将所述顶点信息中的顶点级别设置为任意数值、将所述顶点信息中的上级边界顶点编号设置为与所述各个顶点的存储编号均不同的任意值;顶点信息缓存子模块,用于将所述顶点信息保存到边界顶点缓存信息列表中,并将最高顶点级别设置为所述顶点级别减1;顶点信息保存子模块,用于将所述边界顶点缓存信息列表中的所有边界顶点的顶点信息转移至边界顶点信息列表中,并将所述最高顶点级别加1;目标边界顶点处理子模块,用于按照边界顶点在所述边界顶点信息列表中的存储顺序,依次处理每个顶点级别等于所述最高顶点级别的目标边界顶点;其中,所述处理具体包括:在所述三角网格模型的各个所述顶点中,查找与所述目标边界顶点相连的各个边界顶点;若相连的边界顶点的存储编号与所述目标边界顶点的上级边界顶点编号不同,则将所述相连的边界顶点的编号设置为自身的存储编号,将所述相连的边界顶点的顶点级别设置为所述最高顶点级别加1,将所述相连的边界顶点的上级边界顶点编号设置为所述目标边界顶点的编号,并将所述相连的边界顶点的编号、顶点级别及上级边界顶点编号保存至所述边界顶点缓存信息列表中;所有的所述目标边界顶点被处理完毕后,触发顶点信息保存子模块将所述边界顶点缓存信息列表中的所有边界顶点的顶点信息转移至边界顶点信息列表中,直至所述边界顶点缓存信息列表中的某个边界顶点的编号与所述边界顶点信息列表中某个边界顶点的编号重复,或者,直至所述边界顶点缓存信息列表中存在编号相同的边界顶点;若所述边界顶点缓存信息列表中的某个边界顶点的编号与所述边界顶点信息列表中某个边界顶点的编号重复,则触发第一重复顶点信息保存子模块;若所述边界顶点缓存信息列表中存在编号相同的边界顶点,则触发第二重复顶点信息保存子模块;第一重复顶点信息保存子模块,用于将所述边界顶点缓存信息列表中的所述某个边界顶点的上级边界顶点编号添加至所述边界顶点信息列表中的所述某个边界顶点的上级边界顶点编号中;第二重复顶点信息保存子模块,用于所述边界顶点缓存信息列表中所述编号相同的各个边界顶点的编号、顶点级别及上级边界顶点编号保存至所述边界顶点信息列表中。具体地,所述路由矩阵生成模块502可以包括:路由矩阵初始化子模块及路由矩阵更新子模块。路由矩阵初始化子模块,用于确定所述边界顶点信息列表中包含的边界顶点个数N,将路由矩阵R初始化为2N×N的零矩阵;路由矩阵更新子模块,用于按照边界顶点在所述边界顶点信息列表中的存储顺序,依次将各个所述边界顶点与其上级边界顶点之间的连接关系更新到所述路由矩阵R中;其中,所述连接关系更新具体包括:若所述边界顶点信息列表中的第i个边界顶点的上级边界顶点编号与第j个边界顶点的编号相同,则按照下述表达式R(2i-1,j)=j及R(2j-1,i)=i更新所述路由矩阵R;其中,所述i、j均表示边界顶点在所述边界顶点信息列表中的存储顺序。具体地,所述距离矩阵生成模块503可以包括:距离矩阵初始化子模块及距离矩阵更新子模块。距离矩阵初始化子模块,用于将距离矩阵W初始化为N阶零矩阵,并将所述距离矩阵W中非主对角线元素设置为无穷大;距离矩阵更新子模块,用于按照边界顶点在所述边界顶点信息列表中的存储顺序,依次将每个所述边界顶点与其上级边界顶点之间的距离更新到所述距离矩阵W中;其中,所述距离更新的表达式为:W(i,j)=W(j,i)=|m-n|×max(m,n),所述m、n分别表示所述边界顶点信息列表中的第i个及第j个边界顶点的顶点级别,所述max(·)表示取括号内所有数值的最大值。具体地,所述路由矩阵和距离矩阵处理模块504可以包括:路由矩阵和距离矩阵处理子模块。路由矩阵和距离矩阵处理子模块,用于按照由上至下的顺序,逐行将所述距离矩阵中每行元素中既不为0也不为无穷大的元素两两组合,并根据下述表达式组对路由矩阵R和距离矩阵W进行处理;R(2q-1,q)=R(2q-1,q),W(k,p)+W(k,q)≥W(p,q)q,W(k,p)+W(k,q)<W(p,q)]]>R(2p,q)=R(2p,q),W(k,p)+W(k,q)>W(p,q)q,W(k,p)+W(k,q)=W(p,q)0,W(k,p)+W(k,q)<W(p,q)]]>R(2q-1,p)=R(2q-1,p),W(k,p)+W(k,q)≥W(p,q)p,W(k,p)+W(k,q)<W(p,q)]]>R(2p,q)=R(2p,q),W(k,p)+W(k,q)>W(p,q)p,W(k,p)+W(k,q)=W(p,q)0,W(k,p)+W(k,q)<W(p,q)]]>W(p,q)=W(q,p)=W(p,q),W(k,p)+W(k,q)≥W(p,q)W(k,p)+W(k,q),W(k,p)+W(k,q)<W(p,q)]]>其中,所述k为所述距离矩阵的行号,所述p、q为所述距离矩阵中第k行中进行组合的两个元素的列号。具体地,所述空洞的边界顶点获取模块505可以包括:路径终点确定子模块、空洞边界顶点初始保存子模块、路径初始化子模块、第一条空洞路径保存子模块及第二条空洞路径保存子模块。路径终点确定子模块,用于依据下述与处理后的路由矩阵R’相关的表达式组,将所述边界顶点信息列表中的第s个边界顶点确定为空洞的路径终点;R'(2r-1,s)≠0R'(2r,s)≠0R'(2s-1,r)≠0R'(2s,r)≠0其中,所述r为所述边界顶点信息列表中具有多个上级边界顶点编号的边界顶点的存储顺序,所述s为所述边界顶点信息列表中满足上述表达式组的边界顶点的存储顺序;空洞边界顶点初始保存子模块,用于将边界顶点信息列表中的第r个边界顶点的编号及所述路径终点的编号保存至构成空洞的边界顶点集合中;路径初始化子模块,用于将空洞的第一条路径的起点u初始化为R'(2r-1,s),将空洞的第二条路径的起点v初始化为R'(2r,s);第一条空洞路径保存子模块,用于将所述边界顶点信息列表中的第u个边界顶点的编号保存至所述空洞的边界顶点集合中,并将u更新为R'(2u-1,s),并返回将所述边界顶点信息列表中的第u个边界顶点的编号保存至所述空洞的边界顶点集合中,直至u与s相同;第二条空洞路径保存子模块,用于将所述边界顶点信息列表中的第v个边界顶点的编号保存至所述空洞的边界顶点集合中,并将v更新为R'(2v-1,s),并返回将所述边界顶点信息列表中的第v个边界顶点的编号保存至所述空洞的边界顶点集合中,直至v与s相同。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1