孔洞修补方法、电子装置和存储介质

文档序号:192794 发布日期:2021-11-02 浏览:13次 >En<

阅读说明:本技术 孔洞修补方法、电子装置和存储介质 (Hole repairing method, electronic device and storage medium ) 是由 郑俊 周国勇 于 2021-07-12 设计创作,主要内容包括:本申请涉及一种孔洞修补方法、电子装置和存储介质,其中,该孔洞修补方法包括:获取标记点在三维网格模型中的中心坐标和标记点的半径;根据标记点的中心坐标和标记点的半径,确定几何体,其中,几何体的中心坐标与标记点的中心坐标相同;在几何体范围内,获取面片各顶点的坐标;根据面片各顶点的坐标,确定待修补孔洞的边界顶点集合;在三维网格模型中,根据边界顶点集合,确定待修补孔洞的边界,并对待修补孔洞的边界进行孔洞修补,其中,待修补的孔洞是标记点在三维网格模型中所在区域,通过本申请,解决了修复的孔洞区域数据错误率高的问题,实现了对孔洞区域的精准修补。(The application relates to a hole repairing method, an electronic device and a storage medium, wherein the hole repairing method comprises the following steps: acquiring the center coordinates of the mark points in the three-dimensional grid model and the radiuses of the mark points; determining a geometric body according to the central coordinate of the mark point and the radius of the mark point, wherein the central coordinate of the geometric body is the same as that of the mark point; in the range of the geometric body, obtaining the coordinates of each vertex of the patch; determining a boundary vertex set of the hole to be repaired according to the coordinates of each vertex of the patch; in the three-dimensional grid model, the boundary of the hole to be repaired is determined according to the boundary vertex set, and the hole repairing is carried out on the boundary of the hole to be repaired, wherein the hole to be repaired is the area where the mark point is located in the three-dimensional grid model.)

孔洞修补方法、电子装置和存储介质

技术领域

本申请涉及三维扫描领域,特别是涉及孔洞修补方法、装置、电子装置和存储介质。

背景技术

通过3D扫描仪对实物模型表面进行快速扫描测量过程中,往往需要在被扫描物体上粘贴标记点,为三维重建算法提供位置信息;由于标记点具有一定厚度,且标记点具有高反光性,因此,在扫描数据中标记点所在区域会形成孔洞,导致得到的三维网格模型数据缺失,因此,需要对孔洞区域的数据进行修复。

目前对孔洞区域的数据进行修复的方法主要包括基于三角网格模型的修补方法和基于点云模型的修补方法,但目前孔洞区域数据修补方法容易将非孔洞区域的数据加入三维网格模型,产生修复的孔洞区域数据错误率高的问题。

发明内容

在本实施例中提供了一种孔洞修补方法、电子装置和存储介质,以解决相关技术中修复的孔洞区域数据错误率高的问题。

第一个方面,在本实施例中提供了一种孔洞修补方法,包括:

获取标记点在三维网格模型中的中心坐标和所述标记点的半径;

根据所述标记点的中心坐标和所述标记点的半径,确定几何体,其中,所述几何体的中心坐标与所述标记点的中心坐标相同;

在所述几何体范围内,获取面片各顶点的坐标;

根据所述面片各顶点的坐标,确定待修补孔洞的边界顶点集合;

在三维网格模型中,根据所述边界顶点集合,确定待修补孔洞的边界,并对所述待修补孔洞的边界进行孔洞修补,其中,所述待修补的孔洞是所述标记点在三维网格模型中所在区域。

在其中的一些实施例中,根据所述面片各顶点的坐标,确定待修补孔洞的边界顶点集合包括:

根据所述面片各顶点的坐标,确定所述标记点的邻近顶点,其中,所述邻近顶点的个数为一个以上;

根据所述邻近顶点,确定第一三角形集合,其中,所述第一三角形中至少有一个顶点为所述邻近顶点;

若所述第一三角形中有一个或者两个所述邻近顶点满足第一预设条件,则保留所述第一三角形中的非所述邻近顶点,得到所述边界顶点集合。

在其中的一些实施例中,根据所述面片各顶点的坐标,确定所述标记点的邻近顶点包括:

根据所述面片各顶点的坐标,确定空间数据结构,在所述空间数据结构中确定所述标记点的邻近顶点。

在其中的一些实施例中,所述第一预设条件包括:

所述邻近顶点的法线与所述标记点的法线之间的夹角小于90度。

在其中的一些实施例中,根据所述标记点的中心坐标和所述标记点的半径,确定几何体包括:

将所述标记点半径与第一预设值相加,得到所述标记点的预设尺寸值;

根据所述预设尺寸值和所述标记点的半径,确定所述几何体。

在其中的一些实施例中,在三维网格模型中,根据所述边界顶点集合,确定待修补孔洞的边界包括:

确定所述边界顶点集合中的非流形顶点,并记录所述非流形顶点;

以所述非流形顶点为起点,遍历各所述边界顶点,根据各所述边界顶点对应的邻接三角形数量,确定第一孔洞的边界;

将所述第一孔洞边界上的顶点从所述边界顶点集合中删除,得到第二孔洞的边界顶点集合;

根据第二孔洞的边界顶点集合,确定所述第二孔洞的边界。

在其中的一些实施例中,根据各所述边界顶点对应的邻接三角形数量,确定第一孔洞的边界包括:

若所述边界顶点对应的邻接边有且仅有一个邻接三角形,则记录所述边界顶点对应的邻接边,并将所述边界顶点对应的邻接边作为第一孔洞边界。

在其中的一些实施例中,确定所述边界顶点集合中的非流形顶点,具体包括:

在三维网格模型中,根据所述边界顶点,确定与各所述边界顶点对应的各邻接边以及各邻接三角形,根据第二预设条件从所述邻接边中确定邻接边界边,其中,所述邻接边是以至少一个所述边界顶点作为端点的边,所述邻接三角形是以至少一条所述邻接边作为边的三角形,所述第二预设条件是所述邻接边对应的邻接三角形数量为1;

获取各所述边界顶点对应的邻接边界边数量和邻接三角形数量,若各所述边界顶点中某一所述边界顶点对应的邻接边界边数量与邻接三角形数量的差大于1,则将该边界顶点确定为非流形顶点。

在其中的一些实施例中,在三维网格模型中,根据所述边界顶点集合,确定待修补孔洞的边界还包括:

根据所述标记点,确定所述待修补区域的两个端点,所述待修补区域的两个端点分别为第一端点和第二端点,其中,所述第一端点和所述第二端点的第一侧均为所述标记点,与所述第一侧相反的一侧均没有所述标记点;

在三维网格模型中,从所述第一端点开始遍历各所述边界顶点对应的邻接边,若所述邻接边有且仅有一个邻接面,则将所述邻接边作为待修补孔洞的边界,直到遍历的所述边界顶点为所述第二端点。

在其中的一些实施例中,根据所述待修补孔洞的边界修补孔洞包括:

确定各所述边界顶点对应的第一夹角、第二夹角和第三夹角;其中,所述第一夹角为同一个所述边界顶点对应的两条邻接边之间的夹角,各所述边界顶点的两条邻接边分别对应两个邻接三角形,所述第二夹角和所述第三夹角为两个所述邻接三角形的法线分别与第二三角形的法线之间的夹角,所述第二三角形是所述两条邻接边组成的三角形;

计算各所述边界顶点对应的第一角度和,所述第一角度和为所述第一夹角、所述第二夹角和所述第三夹角的和;

根据所述第一角度和,从所述边界顶点集合中确定第一顶点,其中,所述第一顶点为所述边界顶点集合中所述第一角度和最小的边界顶点;

所述第一顶点和所述第一顶点对应的两条边界边确定第三三角形;

将所述第一顶点从所述边界顶点集合中删除,再次执行根据所述第一角度和从所述边界顶点集合中确定第一顶点的步骤,直至所述边界顶点集合中的边界顶点数量为0,其中,各所述第三三角形为待修补的孔洞区域。

在其中的一些实施例中,根据所述待修补孔洞的边界修补孔洞之后包括:

若第三三角形的质心与所述第三三角形的三个顶点的距离均大于第一阈值,则根据所述第三三角形的质心对所述第三三角形进行分割,其中,所述第一阈值为所述第三三角形的各顶点对应的平均邻接边边长的常数倍。

在其中的一些实施例中,根据所述第三三角形的质心对所述第三三角形进行分割之后包括:

若两个所述第三三角形具有两个重叠顶点,则根据两个所述第三三角形中的一个所述第三三角形确定一个外接圆,若两个所述第三三角形中的另外一个所述第三三角形的非重叠顶点在所述外接圆之外,连接两个所述第三三角形中的非重叠顶点,删除两个所述第三三角形中的重叠边。

第二个方面,在本实施例中提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的孔洞修补方法。

第三个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的孔洞修补方法。

与相关技术相比,在本实施例中提供的孔洞修补方法、电子装置和存储介质,本申请中根据标记点的中心坐标和标记点的半径,确定几何体,在该几何体范围内获取面片各顶点的坐标,从而能够去除非孔洞区域内的顶点,进一步地,基于该面片各顶点的坐标确定待修补孔洞的边界,根据待修补孔洞的边界完成待修补孔洞的修补,解决了修复的孔洞区域数据错误率高的问题,实现了对孔洞区域的精准修补。

本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的孔洞修补方法的应用终端的硬件结构框图;

图2是根据本申请实施例的一种孔洞修补方法的流程图;

图3是根据本申请实施例的非薄壁件示意图;

图4是根据本申请实施例的薄壁件示意图;

图5是根据本申请实施例的非流形顶点示意图;

图6是根据本申请实施例的非封闭型孔洞示意图;

图7是根据本申请实施例的三维网格中重叠边交换前的示意图;

图8是根据本申请实施例的三维网格中重叠边交换后的示意图;

图9是根据本申请实施例的三维网格自相交示意图;

图10是根据本申请实施例的第一顶点沿切线方向移动至对应的一环领域点的平均坐标值处的示意图;

图11是根据本申请实施例的再一种孔洞修补方法的流程图;

图12是根据本申请实施例的又一种孔洞修补方法的流程图;

图13是根据本申请实施例的孔洞修补前的示意图;

图14是根据本申请实施例的孔洞修补后的示意图。

具体实施方式

为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。

除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。

在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。比如在终端上运行,图1是根据本申请实施例的孔洞修补方法的应用终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的孔洞修补方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种孔洞修补方法,图2是根据本申请实施例的一种孔洞修补方法的流程图,如图2所示,该流程包括如下步骤:

步骤S201,获取标记点在三维网格模型中的中心坐标和标记点的半径。

步骤S202,根据标记点的中心坐标和标记点的半径,确定几何体,其中,几何体的中心坐标与标记点的中心坐标相同。

在本实施例中,将标记点的中心作为几何体的体心,该标记点在几何体的内部。

步骤S203,在几何体范围内,获取面片各顶点的坐标。

步骤S204,根据面片各顶点的坐标,确定待修补孔洞的边界顶点集合。

步骤S205,在三维网格模型中,根据边界顶点集合,确定待修补孔洞的边界,并对待修补孔洞的边界进行孔洞修补,其中,待修补的孔洞是标记点在三维网格模型中所在区域。

通过上述步骤,根据标记点的中心坐标和标记点的半径,确定几何体,在该几何体范围内获取面片各顶点的坐标,从而能够去除非孔洞区域内的顶点,进一步地,基于该面片各顶点的坐标确定待修补孔洞的边界,根据待修补孔洞的边界完成待修补孔洞的修补,解决了修复的孔洞区域数据错误率高的问题,实现了对孔洞区域的精准修补。

在其中的一些实施例中,根据面片各顶点的坐标,确定待修补孔洞的边界顶点集合包括:

根据面片各顶点的坐标,确定标记点的邻近顶点,其中,邻近顶点的个数为一个以上;

根据邻近顶点,确定第一三角形集合,其中,第一三角形中至少有一个顶点为邻近顶点;

若第一三角形中有一个或者两个邻近顶点满足第一预设条件,则保留第一三角形中的非邻近顶点,得到边界顶点集合。

可以理解的,根据面片的邻近顶点来确定第一三角形集合,避免将所有的面片的顶点用来确定边界顶点集合,提高了确定待修补孔洞边界顶点的效率。

在其中的一些实施例中,根据面片各顶点的坐标,确定标记点的邻近顶点包括:

根据面片各顶点的坐标,确定空间数据结构,在空间数据结构中确定标记点的邻近顶点。

在本实施例中,空间数据结构包括八叉树和K-D树,但不限于上述两种空间数据结构,此处不对具体是哪种空间数据结构做限定。

需要说明的是,空间数据结构(SpatiaI Data Structure)是指空间数据适合于计算机存储、管理、处理的逻辑结构,是空间数据在计算机内的组织和编码形式。

可以理解的,在本实施例中,根据空间数据结构能够快速确定标记点的邻近顶点,提高了确定标记点邻近顶点的效率。

在其中的一些实施例中,第一预设条件包括:

邻近顶点的法线与标记点的法线之间的夹角小于90度。

在本实施例中,根据标记点的中心坐标和标记点的半径,确定几何体,这里的几何体可以是球体、长方体,本实施例中不对几何体的形状做限定,这里以几何体形状为球体为例进行阐述,请参考图3和图4,图3是根据本申请实施例的非薄壁件示意图,图4是根据本申请实施例的薄壁件示意图,在图3和图4中,中间的空心圆点为标记点,虚线圆是以标记点为球心的球体,虚线圆内的非标记点是需要删除的邻近顶点,箭头方向表示各邻近顶点和标记点的法向量,如图3所示,在球体范围内,非薄壁件只有一个表面,如图4所示,在球体范围内,薄壁件有两个表面,若不考虑邻近顶点的法线与标记点的法线之间的夹角,会将薄壁件两侧的表面都删除,造成薄壁件数据的缺失,从图4可以看出,没有标记点的一侧表面上的邻近顶点的法线与标记点的法线之间的夹角大于90度,因此,本实施例中考虑邻近顶点的法线与标记点的法线之间的夹角,并将该夹角小于90度的邻近顶点删除,这样可以避免将非薄壁件中没有标记点的一侧表面数据删除。

在其中的一些实施例中,根据标记点的中心坐标和标记点的半径,确定几何体包括:

将标记点半径与第一预设值相加,得到标记点的预设尺寸值;

根据预设尺寸值和标记点的半径,确定几何体。

可以理解的,因为标记点附近重建出来的数据较差,因此,在本实施例中,将将标记点半径与第一预设值相加,得到标记点的预设尺寸值,根据预设尺寸值和标记点的半径,确定几何体,进一步地,将几何体内部的邻近顶点删除,即能将标记点附近较差的数据删除,从而能够更加准确地修复的孔洞区域数据。

图5是根据本申请实施例的非流形顶点示意图,如图5所示,非流形顶点P附近有两个孔洞,使用现有的孔洞修补方法,根据各边界顶点对应的邻接三角形数量确定孔洞边界时,仅能找出其中一个孔洞的边界,因为,现有技术中在根据边界顶点确定出一个孔洞后,不能去确定出另外一个孔洞的边界,本申请通过下述方式来确定两个孔洞的边界。

在其中的一些实施例中,在三维网格模型中,根据边界顶点集合,确定待修补孔洞的边界包括:

确定边界顶点集合中的非流形顶点,并记录非流形顶点;

以非流形顶点为起点,遍历各边界顶点,根据各边界顶点对应的邻接三角形数量,确定第一孔洞的边界;

将第一孔洞边界上的顶点从边界顶点集合中删除,得到第二孔洞的边界顶点集合;

根据第二孔洞的边界顶点集合,确定第二孔洞的边界。

在本实施例中,以非流形顶点为起点,遍历第二孔洞的边界顶点,若边界顶点对应的邻接边有且仅有一个邻接三角形,将该邻接边作为第二孔洞的边界。

通过上述方式,以确定的非流形顶点为起点来遍历各边界顶点,根据各边界顶点的邻接三角形数量,来确定第一孔洞的边界,再将第一孔洞边界上的顶点从边界顶点集合中删除,从而能确定第二孔洞的边界顶点,进而能够根据非流形顶点和第二孔洞的边界顶点来确定第二孔洞的边界,实现了存在非流形顶点的两个孔洞的边界确定,解决了无法修补所有的待修补孔洞的问题,实现了能够更加准确完成待修补孔洞的修复。

在其中的一些实施例中,根据各边界顶点对应的邻接三角形数量,确定第一孔洞的边界包括:

若边界顶点对应的邻接边有且仅有一个邻接三角形,则记录边界顶点对应的邻接边,并将边界顶点对应的邻接边作为第一孔洞边界。

可以理解的,在本实施例中,若边界顶点对应的邻接边有且仅有一个邻接三角形,说明该邻接边为边界边,所有的边界边组成第一孔洞边界,实现了第一孔洞边界的确定,进一步地,根据第一孔洞的边界能够完成第一孔洞的修补,另外,在确定第一孔洞边界后,能够在此基础上来完成第二孔洞的边界确定和修补。

在其中的一些实施例中,确定边界顶点集合中的非流形顶点,具体包括:

在三维网格模型中,根据边界顶点,确定与各边界顶点对应的各邻接边以及各邻接三角形,根据第二预设条件从邻接边中确定邻接边界边,其中,邻接边是以至少一个边界顶点作为端点的边,邻接三角形是以至少一条邻接边作为边的三角形,第二预设条件是邻接边对应的邻接三角形数量为1;

获取各边界顶点对应的邻接边界边数量和邻接三角形数量,若各边界顶点中某一边界顶点对应的邻接边界边数量与邻接三角形数量的差大于1,则将该边界顶点确定为非流形顶点。

在本实施例中,请继续参考图5,与非流形顶点对应的邻接边界边数量为4,与非流形顶点对应的邻接三角形数量为2,若边界顶点为非流形顶点,该边界顶点对应的邻接边界边数量为2,该边界顶点对应的邻接三角形数量为2,因此,根据边界顶点对应的邻接边界边数量与邻接三角形数量的差,可确定非流形顶点。

通过上述方式,实现了非流形顶点的确定,进一步地,能够根据非流形顶点来实现与非流形顶点邻近的两个孔洞的修补,从而能够更加准确地完成待修补孔洞的修复,另外,根据本实施例的孔洞修补方法能够适用于非流形顶点场景,提高了三维扫描的场景适用性。

当标记点贴在三维网格模型边缘位置时,由于标记点区域以及标记点外扩一定范围内的数据不理想,需要删除,删除数据后新出现的边界会与三维网格模型外面固有的边界连通,形成一个大边界,可能会包含整个三维网格模型的边缘。由于新引入的边界未封闭,请参阅图6,找边界算法未能从起始点回到起始点,而是沿着外边界继续迭代,最终得到不正确的边界数据。在本申请中通过下述方式来准确的完成非封闭型孔洞的修补。

在其中的一些实施例中,在三维网格模型中,根据边界顶点集合,确定待修补孔洞的边界还包括:

根据标记点,确定待修补区域的两个端点,待修补区域的两个端点分别为第一端点和第二端点,其中,第一端点和第二端点的第一侧均为标记点,与第一侧相反的一侧均没有标记点;

在三维网格模型中,从第一端点开始遍历各边界顶点对应的邻接边,若邻接边有且仅有一个邻接面,则将邻接边作为待修补孔洞的边界,直到遍历的边界顶点为第二端点。

在本实施例中,待修补孔洞为标记点所在的区域,由于标记点区域以及标记点外扩一定范围内的数据不理想,需要删除,假设由于删除数据新引入的边界顶点集合为A,三维网格模型固有的边界顶点集合为B,在删除标记点区域时会得到顶点集合C,集合C中的顶点必然属于集合A,在本实施例中通过下述方式确定第一端点和第二端点,在本实施例中,第一端点为起始点P1,第二端点为终止点P2。

遍历查找与顶点集合C中的顶点相连的所有边,比如可以通过网格拓扑连接关系或者根据顶点的邻接边可以直接获得与顶点集合C中的顶点相连的所有边,如果该边的一个顶点属于A,而另一个顶点属于B,那么属于A的那个顶点就是一个潜在的第一端点或者第二端点,找出C中的所有满足上述条件的所有顶点,得到集合D,D中取一顶点为起始点P1,再逆时针方向查找集合A中的边界顶点,直到满足第三预设条件停止,比如第三预设条件为连续n个新找到的顶点均属于集合B,停止后得到一系列的边界数据E,边界数据E为顶点或者边,从E的末尾开始向前查找第一个属于集合D的顶点作为终止点P2,计算P1、P2之间的顶点个数k,若k在集合C中的占比大于第二阈值,比如第二阈值为0.8,则找到一个正确的孔洞边界,否则继续从D中取下一个顶点继续迭代,直至P1、P2之间的顶点个数在集合C中的占比大于第二阈值。

通过上述,根据非封闭型孔洞的第一端点和第二端点,实现了非封闭型孔洞的修补,即根据本实施例的孔洞修补方法能够适用于非封闭型孔洞场景,提高了三维扫描的场景适用性。

在根据待修补孔洞边界修补时,如果边界顶点对应的两条邻接边之间的夹角大于180°,会造成修补出来的三角网络与原始的网络相重叠,基于此,本实施例通过下述方式完成待修补孔洞的修补。

在其中的一些实施例中,根据待修补孔洞的边界修补孔洞包括:

确定各边界顶点对应的第一夹角、第二夹角和第三夹角;其中,第一夹角为同一个边界顶点对应的两条邻接边之间的夹角,各边界顶点的两条邻接边分别对应两个邻接三角形,第二夹角和第三夹角为两个邻接三角形的法线分别与第二三角形的法线之间的夹角,第二三角形是两条邻接边组成的三角形;

计算各边界顶点对应的第一角度和,第一角度和为第一夹角、第二夹角和第三夹角的和;

根据第一角度和,从边界顶点集合中确定第一顶点,其中,第一顶点为边界顶点集合中第一角度和最小的边界顶点;

第一顶点和第一顶点对应的两条边界边确定第三三角形;

将第一顶点从边界顶点集合中删除,再次执行根据第一角度和从边界顶点集合中确定第一顶点的步骤,直至边界顶点集合中的边界顶点数量为0,其中,各第三三角形为待修补的孔洞区域。

可以理解的,本实施例在进行待修补孔洞的修补时,考虑边界顶点对应的两条邻接边之间的夹角,从而能够解决修补出来的三角网络与原始的网络相重叠的技术问题,另外,孔洞修补过程中考虑两个邻接三角形的法线分别与第二三角形的法线之间的夹角,并从第二夹角与第三夹角的和最小处修复,需要说明的是,第二夹角与第三夹角的和最小代表该处三维网格最平坦,即本实施例中从三维网格的最平坦处开始修补,这样修补完成后的三维网格更接近原始三维网格,即能够更加准确地完成待修补孔洞的修补。

在完成待修补孔洞的修补过后,修补过后的三维网格会出现网格不均匀的问题,本申请通过下述方式来解决该技术问题。

在其中的一些实施例中,根据待修补孔洞的边界修补孔洞之后包括:

若第三三角形的质心与第三三角形的三个顶点的距离均大于第一阈值,则根据第三三角形的质心对第三三角形进行分割,其中,第一阈值为第三三角形的各顶点对应的平均邻接边边长的常数倍。

可以理解的,本实施例中的第一阈值可以根据实际的三维网格分辨率设置,此处不对第一阈值的大小做具体的限定,可以根据实际情况来调整第一阈值的大小,若第三三角形的质心与第三三角形的三个顶点的距离均大于第一阈值,说明该第三三角形的面积过大,此时需要对该第三三角形进行分割,分割后的各第三三角形的面积大小更加合适,从而分割后的三维网格更加均匀。

在其中的一些实施例中,根据第三三角形的质心对第三三角形进行分割之后包括:

若两个第三三角形具有两个重叠顶点,则根据两个第三三角形中的一个第三三角形确定一个外接圆,若两个第三三角形中的另外一个第三三角形的非重叠顶点在外接圆之外,连接两个第三三角形中的非重叠顶点,删除两个第三三角形中的重叠边。

在本实施例中,图7是根据本申请实施例的三维网格中重叠边交换前的示意图,图8是根据本申请实施例的三维网格中重叠边交换后的示意图,如图7所示两个第三三角形中的另外一个第三三角形的非重叠顶点在外接圆之外,此时,连接两个第三三角形中的非重叠顶点,删除两个第三三角形中的重叠边,对比图7和图8可知,图8中两个第三三角形的大小比图7中两个第三三角形的大小更加均匀。

通过上述方式,在对第三三角形进行分割之后,进一步的使修补后的三维网格更加均匀。

在完成孔洞修补过后,一些网格会存在自相交,图9是根据本申请实施例的三维网格自相交示意图,本申请通过下述方式来解决修补后的三维网格自相交的技术问题。

在其中的一些实施例中,根据待修补孔洞的边界修补孔洞之后还包括:

遍历待修补孔洞内的每个第一顶点,根据各第一顶点的连接关系,确定与各第一顶点对应的一环领域点,其中,第一顶点与一环领域点连接得到待修补孔洞内三角形的边;

计算各第一顶点对应的一环领域点的平均坐标值,将各第一顶点沿切线方向移动至对应的一环领域点的平均坐标值处。

在本实施例中,一环领域点为图9中的C、D、E、F,图10是根据本申请实施例的第一顶点沿切线方向移动至对应的一环领域点的平均坐标值处的示意图。

通过上述方式,解决了修补后的三维网格自相交的技术问题,从而修补后的孔洞更加接近真实的扫描物体。

图11是根据本申请实施例的再一种孔洞修补方法的流程图,如图11所示,该流程包括如下步骤:

步骤S1101,获取标记点在三维网格模型中的中心坐标和标记点的半径。

步骤S1102,将标记点半径与第一预设值相加,得到标记点的预设尺寸值。

步骤S1103,根据预设尺寸值和标记点的半径,确定几何体。

步骤S1104,在几何体范围内,获取面片各顶点的坐标。

步骤S1105,根据面片各顶点的坐标,建立空间数据结构,在空间数据结构中确定标记点的邻近顶点,其中,邻近顶点的个数为一个以上。

步骤S1106,根据邻近顶点,确定第一三角形集合,其中,第一三角形中至少有一个顶点为邻近顶点。

步骤S1107,若第一三角形中有一个或者两个邻近顶点满足第一预设条件,则保留第一三角形中的非邻近顶点,得到边界顶点集合。

在本实施例中,第一预设条件为:邻近顶点的法线与标记点的法线之间的夹角小于90度。

步骤S1108,在三维网格模型中,根据边界顶点集合,确定待修补孔洞的边界,并对待修补孔洞的边界进行孔洞修补,其中,待修补的孔洞是标记点在三维网格模型中所在区域。

步骤S1109,若第三三角形的质心与第三三角形的三个顶点的距离均大于第一阈值,则根据第三三角形的质心对第三三角形进行分割,其中,第一阈值为第三三角形的各顶点对应的平均邻接边边长的常数倍。

步骤S1110,若两个第三三角形具有两个重叠顶点,则根据两个第三三角形中的一个第三三角形确定一个外接圆,若两个第三三角形中的另外一个第三三角形的非重叠顶点在外接圆之外,连接两个第三三角形中的非重叠顶点,删除两个第三三角形中的重叠边。

通过上述步骤,根据标记点的中心坐标和标记点的半径,确定几何体,在该几何体范围内获取面片各顶点的坐标,并将根据面片各顶点的坐标,建立空间数据结构,在空间数据结构中确定标记点的邻近顶点,从而能够去除非孔洞区域内的顶点,进一步地,基于该面片各顶点的坐标确定待修补孔洞的边界,根据待修补孔洞的边界完成待修补孔洞的修补,解决了修复的孔洞区域数据错误率高的问题,实现了对孔洞区域的精准修补。

图12是根据本申请实施例的又一种孔洞修补方法的流程图,如图12所示,该流程包括如下步骤:

步骤S1201,确定待修补孔洞的边界顶点集合。

在本实施例中,由于标记点附近重建出来的数据较差,一般需要在标记点半径的基础上扩展3~5mm,假设扩展后的半径为r;

提取三角网格模型中的面片顶点坐标,通过比较面片顶点坐标与标记点坐标的大小,确定落在以标记点为中心边长为2r的方盒内的面片顶点,然后用方盒内的面片顶点建立局部kd树,在局部kd树中查找标记点邻近顶点,这样可以避免将整个顶点数据建树,提高算法效率;

确定各邻近顶点的法线与标记点的法线之间的夹角,将角度小于90度的邻近顶点标记为删除,否则标为保留,将与标记为删除的邻近顶点相关联的网格数据删除,从而可以避免错误删除薄壁件数据;

在三维网格模型中,若某个三角形只有一个或者两个顶点被标记删除,那么这个三角形应当位于标记点区域边缘位置,与标记为删除的邻近顶点相关联的网格数据删除后,未标记删除的顶点将会变成待修补孔洞的边界顶点,将这些待修补孔洞的边界顶点记录下来,作为查找待修补孔洞边界的依据。

步骤S1202,根据边界顶点集合确定待修补孔洞的边界。

在三角网格模型中,如果边界顶点对应的邻接边有且仅有一个邻接三角形,则该边界顶点的邻接边为边界边,

通过判断所有边界顶点对应的邻接三角形的数目,可以提取整个三角网格模型中包含的待修补孔洞的边界,由于实时网格中存在非流形顶点,比如,与标记为删除的邻近顶点相关联的网格数据删除后会可能引入非流形顶点,使得准确提取待修补孔洞边界具有一定的难度。图5是根据本申请实施例的非流形顶点示意图,如图5所示,与标记为删除的邻近顶点相关联的网格数据删除后,会引入一个小孔洞,会干扰待修补孔洞边界的提取,本实施例通过下述方法来完成两个待修补孔洞边界的确定,在三维网格模型中,根据边界顶点,确定与各边界顶点对应的各邻接边以及各邻接三角形,根据第二预设条件从邻接边中确定邻接边界边,其中,邻接边是以至少一个边界顶点作为端点的边,邻接三角形是以至少一条邻接边作为边的三角形,第二预设条件是邻接边对应的邻接三角形数量为1;

获取各边界顶点对应的邻接边界边数量和邻接三角形数量,若各边界顶点中某一边界顶点对应的邻接边界边数量与邻接三角形数量的差大于1,则将该边界顶点确定为非流形顶点;

以非流形顶点为起点,遍历各边界顶点,若边界顶点对应的邻接边有且仅有一个邻接三角形,则记录边界顶点对应的邻接边,并将边界顶点对应的邻接边作为第一孔洞边界;

将第一孔洞边界上的顶点从边界顶点集合中删除,得到第二孔洞的边界顶点集合;

根据第二孔洞的边界顶点集合,确定第二孔洞的边界。

另外,如果标记点贴在物体边缘位置,与标记为删除的邻近顶点相关联的网格数据删除后,会形成一个非封闭的待修补孔洞,如图6所示,对于该孔洞的修补方法为,先找出孔洞端点p1和p2,然后从p1点开始遍历查找边界边,直到遍历至p2则认为形成一个完整的孔洞。

步骤S1203,根据待修补孔洞的边界完成待修补孔洞的修补。

在本实施例中,确定各边界顶点对应的第一夹角、第二夹角和第三夹角;其中,第一夹角为同一个边界顶点对应的两条邻接边之间的夹角,各边界顶点的两条邻接边分别对应两个邻接三角形,第二夹角和第三夹角为两个邻接三角形的法线分别与第二三角形的法线之间的夹角,第二三角形是两条邻接边组成的三角形;计算各边界顶点对应的第一角度和,第一角度和为第一夹角、第二夹角和第三夹角的和;根据第一角度和,从边界顶点集合中确定第一顶点,其中,第一顶点为边界顶点集合中第一角度和最小的边界顶点;第一顶点和第一顶点对应的两条边界边确定第三三角形;将第一顶点从边界顶点集合中删除,再次执行根据第一角度和从边界顶点集合中确定第一顶点的步骤,直至边界顶点集合中的边界顶点数量为0,其中,各第三三角形为待修补的孔洞区域,如图13和图14所示,图13是根据本申请实施例的孔洞修补前的示意图,图14是根据本申请实施例的孔洞修补后的示意图。

步骤S1204,对修补后的孔洞进行后处理。

在本实施例中,若第三三角形的质心与第三三角形的三个顶点的距离均大于第一阈值,则根据第三三角形的质心对第三三角形进行分割,其中,第一阈值为第三三角形的各顶点对应的平均邻接边边长的常数倍;

若两个第三三角形具有两个重叠顶点,则根据两个第三三角形中的一个第三三角形确定一个外接圆,若两个第三三角形中的另外一个第三三角形的非重叠顶点在外接圆之外,连接两个第三三角形中的非重叠顶点,删除两个第三三角形中的重叠边;

遍历待修补孔洞内的每个第一顶点,根据各第一顶点的连接关系,确定与各第一顶点对应的一环领域点,其中,第一顶点与一环领域点连接得到待修补孔洞内三角形的边;

计算各第一顶点对应的一环领域点的平均坐标值,将各第一顶点沿切线方向移动至对应的一环领域点的平均坐标值处。

通过上述步骤,根据标记点的中心坐标和标记点的半径,确定几何体,在该几何体范围内获取面片各顶点的坐标,并将根据面片各顶点的坐标,建立空间数据结构,在空间数据结构中确定标记点的邻近顶点,从而能够去除非孔洞区域内的顶点,进一步地,基于该面片各顶点的坐标确定待修补孔洞的边界,根据待修补孔洞的边界完成待修补孔洞的修补,解决了修复的孔洞区域数据错误率高的问题,实现了对孔洞区域的精准修补。

在本实施例中还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

获取标记点在三维网格模型中的中心坐标和标记点的半径。

根据标记点的中心坐标和标记点的半径,确定几何体,其中,几何体的中心坐标与标记点的中心坐标相同。

在几何体范围内,获取面片各顶点的坐标。

根据面片各顶点的坐标,确定待修补孔洞的边界顶点集合。

在三维网格模型中,根据边界顶点集合,确定待修补孔洞的边界,并对待修补孔洞的边界进行孔洞修补,其中,待修补的孔洞是标记点在三维网格模型中所在区域。

需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。

此外,结合上述实施例中提供的孔洞修补方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种孔洞修补方法。

应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。

显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。

“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:三维模型的生成装置、生成方法和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!