CN115690120B - 生成三维网格的方法、装置、设备、介质和程序产品 - Google Patents

生成三维网格的方法、装置、设备、介质和程序产品 Download PDF

Info

Publication number
CN115690120B
CN115690120B CN202210631739.7A CN202210631739A CN115690120B CN 115690120 B CN115690120 B CN 115690120B CN 202210631739 A CN202210631739 A CN 202210631739A CN 115690120 B CN115690120 B CN 115690120B
Authority
CN
China
Prior art keywords
unit
point cloud
unit blocks
unit block
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210631739.7A
Other languages
English (en)
Other versions
CN115690120A (zh
Inventor
胡洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
You Can See Beijing Technology Co ltd AS
Original Assignee
You Can See Beijing Technology Co ltd AS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by You Can See Beijing Technology Co ltd AS filed Critical You Can See Beijing Technology Co ltd AS
Priority to CN202210631739.7A priority Critical patent/CN115690120B/zh
Publication of CN115690120A publication Critical patent/CN115690120A/zh
Application granted granted Critical
Publication of CN115690120B publication Critical patent/CN115690120B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)

Abstract

本公开实施例公开了一种生成三维网格的方法、装置、电子设备、存储介质和程序产品,其中,方法包括:基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,每个第二单元块的内部空间中包含有一个第一单元块,多个第一单元块构成最小外接包围盒;基于各第二单元块,对待处理点云进行分块处理,确定每个第二单元块对应的点云数据;基于预设的网格重建算法,分别对各第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据;基于第二单元块中包含的第一单元块,将位于第一单元块外部的初始网格数据切除,得到各第一单元块对应的局部网格数据;合并各局部网格数据,得到待处理点云对应的目标网格数据。

Description

生成三维网格的方法、装置、设备、介质和程序产品
技术领域
本公开涉及三维重建技术领域,尤其涉及一种生成三维网格的方法、装置、电子设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的进步,三维重建与可视化在建筑建模、城市规划、建筑测量、3D打印等大场景中的应用越来越广泛,其中,利用离散点云构建三角网格模型是三维重建领域中的一项基础工作。
通过计算机进行网格构建时,点云数据的大小以及网格构建过程中的算法类型都关系到运算量的大小。例如数字城市、数字地球等领域通常会涉及到海量的点云数据;在VR(Virtual Reality,虚拟现实)领域或SLAM(Simultaneous Localization and Mapping,即时定位与地图构建)领域,点云数据量并不大,但其中涉及的算法通常会造成较大的运算量。大运算量通常需要较高的运算性能,同时会导致网格构建时间的成倍增长。
发明内容
本公开实施例提供一种生成三维网格的方法、装置、电子设备、存储介质和计算机程序产品。
本公开实施例的一个方面,提供一种生成三维网格的方法,包括:基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,每个第二单元块的内部空间中包含有一个第一单元块,多个第一单元块构成最小外接包围盒;基于各第二单元块,对待处理点云进行分块处理,确定每个第二单元块对应的点云数据;基于预设的网格重建算法,分别对各第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据;基于第二单元块中包含的第一单元块,将位于第一单元块外部的初始网格数据切除,得到各第一单元块对应的局部网格数据;合并各局部网格数据,得到待处理点云对应的目标网格数据。
在一些实施例中,基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,包括:基于预先确定的分块策略,将最小外接包围盒分割为预设数量个第一单元块,得到第一单元块的第一信息,第一信息表征第一单元块的位置及其内部空间;对每个第一单元块执行如下操作:将围成第一单元块的面确定为第一边界面;将各第一边界面分别沿各自的外法线方向平移预设距离,得到多个第二边界面;将第二边界面所在的平面围成的块确定为第一单元块对应的第二单元块,得到第二单元块的第二信息,第二信息表征第二单元块的位置及其内部空间。
基于各第二单元块,对待处理点云进行分块处理,确定每个第二单元块中包括的点云数据,包括:遍历待处理点云,根据待处理点云中的点的位置以及各第二信息,确定待处理点云中的点所在的第二单元块,得到遍历结果;基于遍历结果,确定每个第二单元块的内部空间中包含的点,得到第二单元块对应的点云数据。
在一些实施例中,遍历结果通过如下方式获得:将待处理点云拆分为多个待遍历的子点云;采用并行处理的方式,同时遍历多个子点云,分别得到各子点云的局部遍历结果;基于各局部遍历结果,确定遍历结果。
在一些实施例中,基于预设的网格重建算法,分别对各第二单元块对应的点云数据进行处理,包括:采用并行处理的方式,基于预设的网格重建算法,同时对多个第二单元块对应的点云数据进行处理。
在一些实施例中,合并各目标网格数据,得到待处理点云对应的目标网格数据,包括:对任意相邻的两个第一单元块执行如下合并步骤:将两个第一单元块中重合的第一边界面确定为公共分割平面;利用公共分割平面,合并两个第一单元块对应的两个局部网格数据;重复合并步骤,直至将全部的局部网格数据合并为目标网格数据。
本公开实施例的又一个方面,提供一种生成三维网格的装置,包括:第一分块单元,被配置成基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,每个第二单元块的内部空间中包含有一个第一单元块,多个第一单元块构成最小外接包围盒;第二分块单元,被配置成基于各第二单元块,对待处理点云进行分块处理,确定每个第二单元块对应的点云数据;网格生成单元,被配置成基于预设的网格重建算法,分别对各第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据;网格裁切单元,被配置成基于第二单元块中包含的第一单元块,将位于第一单元块外部的初始网格数据切除,得到各第一单元块对应的局部网格数据;网格合并单元,被配置成合并各局部网格数据,得到待处理点云对应的目标网格数据。
本公开的实施例还提供了一种电子设备,包括:存储器,用于存储计算机程序产品;处理器,用于执行存储器中存储的计算机程序产品,且计算机程序产品被执行时,实现上述任一实施例中的方法。
本公开的实施例还提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时,实现上述任一实施例中的方法。
本公开的实施例还提供了一种计算机程序产品,包括计算机程序指令,该计算机程序指令被处理器执行时,实现上述任一实施例中的方法。
本公开的实施例提供的生成三维网格的方法,可以基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,然后基于各第二单元块,对待处理点云进行分块处理;之后,分别对各第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据;再然后将位于第一单元块外部的初始网格数据切除,得到各第一单元块对应的局部网格数据;最后,合并各局部网格数据,得到待处理点云对应的目标网格数据。可以将生成三维网格的任务分解成多个子任务,可以降低计算机性能对三维网格构建过程的限制,并提高生成三维网格的效率。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1(a)为本公开的生成三维网格的方法的一个场景示意图;
图1(b)为图1(a)所示的场景中初始网格数据和局部网格数据的示意图;
图1(c)为图1(a)所示的场景中合并局部网格数据的示意图;
图2为本公开的生成三维网格的方法的一个实施例的流程示意图;
图3为本公开的生成三维网格的方法的一个实施例中分割最小外接包围盒的流程示意图;
图4为本公开的生成三维网格的方法的一个实施例中的第一单元块和第二单元块的结构示意图;
图5为本公开的生成三维网格的方法的又一个实施例的流程示意图;
图6为本公开的生成三维网格的装置的一个实施例的结构示意图;
图7为本公开电子设备一个应用实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本公开概述
在实现本公开的过程中,发明人发现,当点云数据量较大时,直接利用点云构建三维网格会占用较大的计算机内存,使得三维网格的构建过程受到计算机性能的限制,并且会导致运算时间的成倍增长。
示例性系统
下面结合图1(a)、图1(b)和图1(c)对本公开的生成三维网格的方法进行示例性说明。图1(a)示出了本公开的生成三维网格的方法的一个场景示意图。在图1(a)所示的场景中,执行主体100可以是终端设备,也可以是服务器。
需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成例如用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模块。在此不做具体限定。
执行主体接收到待处理的点云(图中未示出)后,可以利用PCL、Python等工具确定出待处理点云的最小外接包围盒110。然后基于最小外接包围盒110,生成第一单元块111、112和第二单元块113、114,其中,每个第二单元块内部包含有一个第一单元块,第一单元块111、112的并集构成最小外接包围盒110围成的空间。之后,根据第二单元块113、114对待处理点云进行分块,每个第二单元块的空间中包含的点云数据确定为该第二单元块对应的点云数据,从而将待处理点云分为两个块。然后,基于预设的网格重建算法,分别对第二单元块113、114对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据120、130。再之后,利用第一单元块111对初始网格数据120进行裁切处理,将位于第一单元块111外部的初始网格数据切除,得到局部网格数据140(如图1(b)所示);同理,得到第一单元块112对应的局部网格数据150,最后,将局部网格数据140、150合并(如图1(c)所示),得到待处理点云对应的目标网格数据160。
示例性方法
接着参考图2,图2示出了本公开的生成三维网格的方法的一个实施例的流程图,如图2所示,该流程包括以下步骤:
步骤210、基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块。
其中,每个第二单元块的内部空间中包含有一个第一单元块,多个第一单元块构成最小外接包围盒。
通常,点云的数据量与点云的覆盖范围是正相关的,在本实施例中,可以通过最小外接包围盒可以表征待处理点云的覆盖面积,例如可以是OBB包围盒、AABB包围盒等。待处理点云表示需要用于构建三维网格处理的点云。作为示例,待处理点云可以是利用激光雷达在指定场景中采集得到的点云数据,本实施例的执行主体可以基于获取到的点云数据构建该场景的三维网格(mesh)模型。
在本实施例的一些可选的实施方式中,执行主体可以根据自身的运算性能和待处理点云的数据量确定分块策略,以均衡运算性能和分块效率。分块策略例如可以包括分块的数量、大小和空间形状,例如当待处理点云数据量较小时,可以选择数量较少的分块策略,使得每个单元块(第一单元块和/或第二单元块)可以具有较大的空间;当待处理点云的数据量较大时,可以选择数量较多的分块策略,使得每个单元块的空间较小,以免每个单元块中包含的点云数据过多,进而给后续的网格构建步骤造成较大的运算压力。
各单元块的大小可以相同,也可以不同。作为示例,可以根据待处理点云在不同区域中的稀疏程度,对不同的区域采用不同的单元块划分策略。例如,点云分布较稀疏的区域可以采用数量较少、空间较大的单元块,而点云分布较稠密的区域,可以采用数量较多、空间较小的单元块,可以进一步提高运算性能和分块效率。
各单元块的形状可以是任意三维形状,例如长方体、球形、多面体等,各个单元块的形状可以相同也可以不同。
考虑到待处理点云的最小外接包围盒的形状为长方体,为了提高单元块与最小外接包围盒的适配程度,第一单元块和第二单元块的形状均采用长方体,无需引入其它形状即可实现对最小外接包围盒的分割,有助于降低分割最小外接包围盒的过程中的运算量,提高分割效率。
在一个具体的示例中,执行主体可以通过一组空间平面将最小外接包围盒均匀分割成多个长方体,每个长方体即为一个第一单元块,其中,每个空间平面均平行于最小外接包围盒的一个面。之后,可以根据预设系数,保持第一单元块的位置不变,并将第一单元块放大一定比例,即可得到该第一单元块对应的第二单元块。
步骤220、基于各第二单元块,对待处理点云进行分块处理,确定每个第二单元块对应的点云数据。
在本实施例中,执行主体可以根据第二单元块的空间范围将待处理点云的覆盖范围划分为多个空间区域,每个空间区域对应一个第二单元块,位于该空间区域中的点的集合即为该第二单元块对应的点云数据。
步骤230、基于预设的网格重建算法,分别对各第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据。
在本实施例中,初始网格数据表征第二单元块内部空间中的点所生成的网格数据。
作为示例,执行主体可以根据自身的运算性能确定可以同时处理的点云数据量,并根据点云数据量每次从待处理点云中提取对应数量个第二单元块对应的点云数据;之后,基于预设的网格重建算法,例如可以是Poisson、Graph-Cut对提取出的点云数据进行处理,生成各个第二单元块对应的初始网格数据。
再例如,当执行主体为分布式系统中的节点设备时,可以以第二单元块为单位,将待处理点云分发至分布式系统的各个节点,借助于分布式系统并行处理各个第二单元块对应的点云数据,以生成各个第二单元块分别对应的初始网格数据。
在本实施例的一些可选的实施方式中,执行主体可以根据需求选取多种网格重建算法,然后采用不同的网格重建算法分别处理对不同的第二单元块对应的点云数据进行处理。
步骤240、基于第二单元块中包含的第一单元块,将位于第一单元块外部的初始网格数据切除,得到各第一单元块对应的局部网格数据。
在本实施例中,局部网格数据表征第一单元块的内部空间中的点所生成的网格数据。
作为示例,执行主体首先可以首先确定出第一单元块的边界,例如可以是围成第一单元块的空间平面,并将该边界映射至初始网格数据,然后将位于边界外侧的初始网格数据切除,得到第一单元块对应的局部网格数据。在切除过程中,当边界与网格相交时,可以基于边界与位于边界内侧的网格部分生成新的网格,以确保局部网格数据的边界与第一单元块的边界对齐,这样一来,相邻两个第一单元块对应的局部网格数据在公共平面处的边界也是严格对齐的。
步骤250、合并各局部网格数据,得到待处理点云对应的目标网格数据。
在本实施例中,第一单元块的并集构成最小外接包围盒的空间,因此,按照各个第一单元块的空间位置将各个局部网格数据合并,可以得到待处理点云对应的目标网格数据。
作为示例,执行主体可以利用相邻两个第一单元块之间的公共面引导两个局部网格数据的合并。首先,基于两个相邻单元块分别对应的局部网格数据以及公共面,分别确定两个局部网格数据在公共面上的边界;然后,在公共面内对两个局部网格数据进行合并,得到合并后的网格数据。重复上述步骤,直至全部的第一单元块均被合并,得到待处理点云的对应的目标网格数据。
本公开的实施例提供的生成三维网格的方法,可以基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,然后基于各第二单元块,对待处理点云进行分块处理;之后,分别对各第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据;再然后将位于第一单元块外部的初始网格数据切除,得到各第一单元块对应的局部网格数据;最后,合并各局部网格数据,得到待处理点云对应的目标网格数据。可以将生成三维网格的任务拆封成多个子任务,可以降低计算机性能对三维网格构建过程的限制,并提高生成三维网格的效率。
接着参考图3,图3示出了本公开的生成三维网格的方法的一个实施例中分割最小外接包围盒的流程图,如图3所示,该流程包括以下步骤:
步骤310、基于预先确定的分块策略,将最小外接包围盒分割为预设数量个第一单元块,得到第一单元块的第一信息。
其中,第一信息表征第一单元块的位置及其内部空间。
进一步结合图4对步骤310进行示例性说明。如图4所示,执行主体可以利用两个垂直的空间平面401、402将最小外接包围盒400分割为4个长方体,得到4个第一单元块,分别是:410、420、430和440。由此得到的第一单元块的并集构成了最小外接包围盒400的空间。
之后,执行主体根据各个第一单元块的位置以及内部空间,生成各个第一单元块的第一信息。作为示例,第一信息可以包括第一单元块的质心在点云坐标系中的坐标以及长方体的长、宽和高;再例如,第一信息可以包括第一单元块的6个顶点在点云坐标系中的坐标,通过各个顶点的相对位置可以确定出第一单元块的位置及其内部空间。
在步骤310之后,执行主体可以分别对各个第一单元块执行步骤320至步骤340,以生成各个第一单元块分别对应的第二单元块。
步骤320、将围成第一单元块的面确定为第一边界面。
步骤330、将各第一边界面分别沿各自的外法线方向平移预设距离,得到多个第二边界面。
步骤340、将第二边界面所在的平面围成的块确定为第一单元块对应的第二单元块,得到第二单元块的第二信息。
其中,第二信息表征第二单元块的位置及其内部空间。
下面以图4中的第一单元块410为例对步骤320至340进行示例性说明。第一单元块410的各第一边界面分别沿各自的外法线方向平移后可以得到对应的第二边界面,各个第二边界面延伸之后围成的长方体即为第一单元块410对应的第二单元块450。分别对其他第一单元块执行上述步骤320至步骤340,可以确定出其他第二单元块:460、470和480。
图3所示的实施例体现了基于第一单元块生成第二单元块的步骤,既可以提高生成第一单元块和第二单元块的效率,又可以确保第一单元块和第二单元块在空间位置上的对应关系。
在上述实施例的一些可选地实现方式中,还可以采用如下方式对待处理点云进行分块处理:遍历待处理点云,根据待处理点云中的点的位置以及各第二信息,确定待处理点云中的点所在的第二单元块,得到遍历结果;基于遍历结果,确定每个第二单元块的内部空间中包含的点,得到第二单元块对应的点云数据。
在本实现方式中,遍历结果表征待处理点云中的点与各第二单元块的对应关系。执行主体可以根据第二信息,确定第二单元块的内部空间,然后根据点的坐标,确定点所在的第二单元块。之后,执行主体可以根据遍历结果,分别从待处理点云中提取第二单元块对应的点,从而得到各第二单元块对应的点云数据。可以提高对待处理点云的分块效率。
在图3所示的实施例的基础上,本公开的生成三维网格的方法可以通过如下方式合并局部网格数据,对任意相邻的两个第一单元块执行如下合并步骤:将两个第一单元块中重合的第一边界面确定为公共分割平面;利用公共分割平面,合并两个第一单元块对应的两个局部网格数据;重复合并步骤,直至将全部的局部网格数据合并为目标网格数据。
继续结合图4进行示例性说明,执行主体可以将第一边界面411确定为第一单元块410和第一单元块420之间的公共分割平面,并分别确定第一单元块410和第一单元块420对应的局部网格数据在第一边界面411上的边界,然后在第一边界面411上对两个局部网格数据进行合并,得到合并后的网格数据;之后,利用第一边界面412将第一单元块440对应的局部网格数据合并,最后将第一单元块430对应的网格数据合并,即可得到待处理点云对应的目标网格数据。
在本实现方式中,利用两个相邻的第一单元块之间的公共分割平面引导局部网格数据的合并,通过各第一单元块之间的相对位置约束各局部网格数据之间的相对位置,生成无缝的目标网格数据,可以提高合并网格数据的效率和准确度。
接着参考图5,图5示出了本公开的生成三维网格的方法的又一个实施例的流程图,如图5所示,该流程包括以下步骤:
步骤510、基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,每个第二单元块内部包含有一个第一单元块,各第一单元块的并集构成最小外接包围盒。
步骤520、将待处理点云拆分为多个待遍历的子点云。
在本实施例中,子点云为待处理点云的子集。
步骤530、采用并行处理的方式,同时遍历多个子点云,分别得到各子点云的局部遍历结果。
在本实施例中,局部遍历结果表征子点云中的点与第二单元块的对应关系。
例如,执行主体为终端设备时,可以根据自身的运算性能,每次从全部子点云中提取部分子点云,然后在对提取出的子点云进行遍历;或者,执行主体还可以将子点云发送至其他终端设备,由多个终端设备同时对多个子点云进行遍历。
作为示例,执行主体可以是分布式系统中的节点设备,通过分布式系统中的多个节点设备实现对多个子点云的遍历,并分别得到各个子点云的局部遍历结果。
步骤540、基于各局部遍历结果,确定遍历结果。
在本实施例中,通过步骤520至步骤540,将待处理点云分为多个子点云,并采用并行处理的方式同时遍历多个子点云,然后将各个子点云的局部遍历结果汇总,得到待处理点云的遍历结果。可以进一步提高点云分块的效率。
步骤550、基于遍历结果,确定每个第二单元块的内部空间中包含的点,得到第二单元块对应的点云数据。
步骤560、采用并行处理的方式,基于预设的网格重建算法,同时对多个第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据。
作为示例,执行主体可以根据自身的运算性能,每次对多个第二单元块对应的点云数据进行处理,分别生成多个第二单元块对应的初始网格数据。或者,执行主体可以将第二单元块对应的点云数据发送至其他终端设备,由多个终端设备同时进行三维网格的构建处理,以生成多个第二单元块对应的初始网格数据。
再例如,执行主体可以是分布式系统的节点设备,由分布式系统内的多个节点设备同时对多个第二单元块对应的点云数据进行处理,分别生成各个第二单元块对应的初始网格数据。
在本实施例中,基于第二单元块对应的点云数据,通过并行处理的方式分别构建初始网格数据,可以提高三维网格的构建效率。
步骤570、基于第二单元块中包含的第一单元块,将位于第一单元块外部的初始网格数据切除,确定出各第一单元块对应的局部网格数据。
步骤580、合并各局部网格数据,得到待处理点云对应的目标网格数据。
从图5看出,图5所示的实施例采用了并行处理的方式对待处理点云进行遍历,以提高点云分块的效率;同时,并行构建多个第二单元块对应的初始网格数据,以提高构建初始网格数据的效率。可以进一步降低构建三维网格对运算能力的需求,进一步提高三维网格的生成效率。
示例性装置
下面结合图6对本公开的生成三维网格的装置进行示例性说明,图6示出了本公开的生成三维网格的装置的一个实施例的结构示意图,如图6所示,该装置包括:第一分块单元610,被配置成基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,每个第二单元块的内部空间中包含有一个第一单元块,多个第一单元块构成最小外接包围盒;第二分块单元620,被配置成基于各第二单元块,对待处理点云进行分块处理,确定每个第二单元块对应的点云数据;网格生成单元630,被配置成基于预设的网格重建算法,分别对各第二单元块对应的点云数据进行处理,生成每个第二单元块对应的初始网格数据;网格裁切单元640,被配置成基于第二单元块中包含的第一单元块,将位于第一单元块外部的初始网格数据切除,确定出各第一单元块对应的局部网格数据;网格合并单元650,被配置成合并各局部网格数据,得到待处理点云对应的目标网格数据。
在其中一个实施例中,第一分块单元510进一步包括:第一分割模块,被配置成基于预先确定的分块策略,将最小外接包围盒分割为预设数量个第一单元块,得到第一单元块的第一信息,第一信息表征第一单元块的位置及其内部空间;第二分割模块,被配置成对每个第一单元块执行如下操作:将围成第一单元块的面确定为第一边界面;将各第一边界面分别沿各自的外法线方向平移预设距离,得到多个第二边界面;将第二边界面所在的平面围成的块确定为第一单元块对应的第二单元块,得到第二单元块的第二信息,第二信息表征第二单元块的位置及其内部空间。
在其中一个实施例中,第二分块单元620进一步包括:点云遍历模块,被配置成遍历待处理点云,根据待处理点云中的点的位置以及各第二信息,确定待处理点云中的点所在的第二单元块,得到遍历结果;点云分块模块,被配置成基于遍历结果,确定每个第二单元块的内部空间中包含的点,得到第二单元块对应的点云数据。
在其中一个实施例中,点云遍历模块进一步包括:点云拆分模块,被配置成将待处理点云拆分为多个待遍历的子点云;并行处理模块,被配置成采用并行处理的方式,同时遍历多个子点云,分别得到各子点云的局部遍历结果;结果汇总模块,被配置成基于各局部遍历结果,确定遍历结果。
在其中一个实施例中,网格生成单元630被进一步配置成:采用并行处理的方式,基于预设的网格重建算法,同时对多个第二单元块对应的点云数据进行处理。
在其中一个实施例中,网格合并单元650被进一步被配置成对任意相邻的两个第一单元块执行如下合并步骤:将两个第一单元块中重合的第一边界面确定为公共分割平面;利用公共分割平面,合并两个第一单元块对应的两个局部网格数据;重复合并步骤,将全部的局部网格数据合并为目标网格数据。
另外,本公开实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开上述任一实施例所述的生成三维网格的方法。
图7为本公开电子设备一个应用实施例的结构示意图。下面,参考图7来描述根据本公开实施例的电子设备。如图7所示,电子设备包括一个或多个处理器和存储器。
处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现上文所述的本公开的各个实施例的生成三维网格的方法以及/或者其他期望的功能。
在一个示例中,电子设备还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入设备还可以包括例如键盘、鼠标等等。
该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图7中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的生成三维网格的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的生成三维网格的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (8)

1.一种生成三维网格的方法,其特征在于,包括:
基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,每个第二单元块的内部空间中包含有一个第一单元块,所述多个第一单元块构成所述最小外接包围盒;
基于各所述第二单元块,对所述待处理点云进行分块处理,确定每个所述第二单元块对应的点云数据;
基于预设的网格重建算法,分别对各所述第二单元块对应的点云数据进行处理,生成每个所述第二单元块对应的初始网格数据;
基于所述第二单元块中包含的第一单元块,将位于所述第一单元块外部的初始网格数据切除,得到各所述第一单元块对应的局部网格数据;
合并各所述局部网格数据,得到所述待处理点云对应的目标网格数据;
其中,所述基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块包括:
基于预先确定的分块策略,将所述最小外接包围盒分割为预设数量个第一单元块,得到所述第一单元块的第一信息,所述第一信息表征所述第一单元块的位置及其内部空间;
对每个所述第一单元块执行如下操作:将围成所述第一单元块的面确定为第一边界面;将各所述第一边界面分别沿各自的外法线方向平移预设距离,得到多个第二边界面;将所述第二边界面所在的平面围成的块确定为所述第一单元块对应的第二单元块,得到所述第二单元块的第二信息,所述第二信息表征所述第二单元块的位置及其内部空间。
2.根据权利要求1所述的方法,其特征在于,基于各所述第二单元块,对待处理点云进行分块处理,确定每个所述第二单元块中包括的点云数据,包括:
遍历所述待处理点云,根据所述待处理点云中的点的位置以及各所述第二信息,确定所述待处理点云中的点所在的第二单元块,得到遍历结果;
基于所述遍历结果,确定每个所述第二单元块的内部空间中包含的点,得到所述第二单元块对应的点云数据。
3.根据权利要求2所述的方法,其特征在于,所述遍历结果通过如下方式获得:
将所述待处理点云拆分为多个待遍历的子点云;
采用并行处理的方式,同时遍历多个所述子点云,分别得到各所述子点云的局部遍历结果;
基于各所述局部遍历结果,确定所述遍历结果。
4.根据权利要求1至3之一所述的方法,其特征在于,基于预设的网格重建算法,分别对各所述第二单元块对应的点云数据进行处理,包括:
采用并行处理的方式,基于预设的网格重建算法,同时对多个所述第二单元块对应的点云数据进行处理。
5.根据权利要求1至3之一所述的方法,其特征在于,合并各所述目标网格数据,得到所述待处理点云对应的目标网格数据,包括:
对任意相邻的两个第一单元块执行如下合并步骤:将所述两个第一单元块中重合的第一边界面确定为公共分割平面;利用所述公共分割平面,合并所述两个第一单元块对应的两个局部网格数据;
重复所述合并步骤,直至将全部的局部网格数据合并为所述目标网格数据。
6.一种生成三维网格的装置,其特征在于,包括:
第一分块单元,被配置成基于待处理点云的最小外接包围盒,确定多个第一单元块和多个第二单元块,每个第二单元块的内部空间中包含有一个第一单元块,所述多个第一单元块构成所述最小外接包围盒;
第二分块单元,被配置成基于各所述第二单元块,对待处理点云进行分块处理,确定每个所述第二单元块对应的点云数据;
网格生成单元,被配置成基于预设的网格重建算法,分别对各所述第二单元块对应的点云数据进行处理,生成每个所述第二单元块对应的初始网格数据;
网格裁切单元,被配置成基于所述第二单元块中包含的第一单元块,将位于所述第一单元块外部的初始网格数据切除,得到各所述第一单元块对应的局部网格数据;
网格合并单元,被配置成合并各所述局部网格数据,得到所述待处理点云对应的目标网格数据;
所述第一分块单元包括:
第一分割模块,被配置成基于预先确定的分块策略,将最小外接包围盒分割为预设数量个第一单元块,得到第一单元块的第一信息,第一信息表征第一单元块的位置及其内部空间;
第二分割模块,被配置成对每个第一单元块执行如下操作:将围成第一单元块的面确定为第一边界面;将各第一边界面分别沿各自的外法线方向平移预设距离,得到多个第二边界面;将第二边界面所在的平面围成的块确定为第一单元块对应的第二单元块,得到第二单元块的第二信息,第二信息表征第二单元块的位置及其内部空间。
7.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序产品;
处理器,用于执行所述存储器中存储的计算机程序产品,且所述计算机程序产品被执行时,实现上述权利要求1-5任一所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时,实现上述权利要求1-5任一所述的方法。
CN202210631739.7A 2022-06-06 2022-06-06 生成三维网格的方法、装置、设备、介质和程序产品 Active CN115690120B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210631739.7A CN115690120B (zh) 2022-06-06 2022-06-06 生成三维网格的方法、装置、设备、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210631739.7A CN115690120B (zh) 2022-06-06 2022-06-06 生成三维网格的方法、装置、设备、介质和程序产品

Publications (2)

Publication Number Publication Date
CN115690120A CN115690120A (zh) 2023-02-03
CN115690120B true CN115690120B (zh) 2024-01-26

Family

ID=85060355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210631739.7A Active CN115690120B (zh) 2022-06-06 2022-06-06 生成三维网格的方法、装置、设备、介质和程序产品

Country Status (1)

Country Link
CN (1) CN115690120B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111986308A (zh) * 2020-07-14 2020-11-24 武汉数字化设计与制造创新中心有限公司 基于点云法线与曲率变化双约束曲面误差显著点识别方法
CN112669463A (zh) * 2020-12-25 2021-04-16 河南信大融通信息科技有限公司 三维点云的曲面重建方法、计算机设备和计算机可读存储介质
CN113592994A (zh) * 2021-09-27 2021-11-02 贝壳技术有限公司 用于纹理贴图的方法、装置和存储介质
CN113628343A (zh) * 2021-10-09 2021-11-09 贝壳技术有限公司 三维网格的合并处理方法和装置、存储介质
CN113761093A (zh) * 2021-01-27 2021-12-07 京东城市(北京)数字科技有限公司 空间二元组的确定方法、装置、计算机设备和存储介质
WO2022016310A1 (zh) * 2020-07-20 2022-01-27 深圳元戎启行科技有限公司 基于点云数据的三维重建方法、装置和计算机设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111986308A (zh) * 2020-07-14 2020-11-24 武汉数字化设计与制造创新中心有限公司 基于点云法线与曲率变化双约束曲面误差显著点识别方法
WO2022016310A1 (zh) * 2020-07-20 2022-01-27 深圳元戎启行科技有限公司 基于点云数据的三维重建方法、装置和计算机设备
CN112669463A (zh) * 2020-12-25 2021-04-16 河南信大融通信息科技有限公司 三维点云的曲面重建方法、计算机设备和计算机可读存储介质
CN113761093A (zh) * 2021-01-27 2021-12-07 京东城市(北京)数字科技有限公司 空间二元组的确定方法、装置、计算机设备和存储介质
CN113592994A (zh) * 2021-09-27 2021-11-02 贝壳技术有限公司 用于纹理贴图的方法、装置和存储介质
CN113628343A (zh) * 2021-10-09 2021-11-09 贝壳技术有限公司 三维网格的合并处理方法和装置、存储介质

Also Published As

Publication number Publication date
CN115690120A (zh) 2023-02-03

Similar Documents

Publication Publication Date Title
US7348975B2 (en) Applications of interval arithmetic for reduction of number of computations in ray tracing problems
US7561156B2 (en) Adaptive quadtree-based scalable surface rendering
KR102164541B1 (ko) 레이 트레이싱 시스템에서의 가속 구조 생성 장치 및 그 생성 방법
CN112767551B (zh) 三维模型构建方法、装置以及电子设备、存储介质
US20020186216A1 (en) 3D computer modelling apparatus
CN113724401B (zh) 一种三维模型切割方法、装置、计算机设备和存储介质
JP2016126795A5 (zh)
CN113744408B (zh) 网格生成方法、装置及存储介质
CA2609283A1 (en) Real-time precision ray tracing
US10937236B1 (en) Mesh smoothing for visual quality and analysis improvement
CN113628343B (zh) 三维网格的合并处理方法和装置、存储介质
US20200211256A1 (en) Apparatus and method for generating 3d geographic data
CN111080792B (zh) 模型简化处理方法、装置以及电子设备、存储介质
Kuhn et al. Incremental division of very large point clouds for scalable 3d surface reconstruction
CN115690120B (zh) 生成三维网格的方法、装置、设备、介质和程序产品
JP6482193B2 (ja) 映像処理装置及び方法
WO2007081303A1 (en) Applications of interval arithmetic for reduction of number of computations in ray tracing problems
CN115481268A (zh) 一种平行线墙体数据识别方法、装置、设备及存储介质
CN116188565A (zh) 位置区域检测方法、装置、设备、存储介质和程序产品
Kumar Interactive rendering of parametric spline surfaces
Wiemann et al. Data handling in large-scale surface reconstruction
CN111986300A (zh) 房屋装修的渲染点确定方法和装置、存储介质、电子设备
US7091969B2 (en) Frontier advancing polygonization
CN116758243B (zh) 基于实时点云流的场景网格划分生成及渲染显示方法
Zyda A decomposable algorithm for contour surface display generation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant