CN113628343B - 三维网格的合并处理方法和装置、存储介质 - Google Patents
三维网格的合并处理方法和装置、存储介质 Download PDFInfo
- Publication number
- CN113628343B CN113628343B CN202111173369.9A CN202111173369A CN113628343B CN 113628343 B CN113628343 B CN 113628343B CN 202111173369 A CN202111173369 A CN 202111173369A CN 113628343 B CN113628343 B CN 113628343B
- Authority
- CN
- China
- Prior art keywords
- boundary point
- boundary
- mesh
- pair
- point pair
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本公开实施例公开了一种三维网格的合并处理方法和装置、存储介质,其中,方法包括:获取待合并的第一网格、第二网格、以及公共平面;其中的所述第一网格和所述第二网格为由所述公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者为由所述公共平面对所述目标场景的网格进行分块得到的两个网格;基于所述第一网格、所述第二网格和所述公共平面,确定所述第一网格在所述公共平面上的第一边界、以及所述第二网格在所述公共平面上的第二边界;基于所述第一边界和所述第二边界,在所述公共平面内对所述第一网格和所述第二网格进行网格合并。本公开实施例可以提高三维网格的合并速度。
Description
技术领域
本公开涉及数据处理技术,尤其是一种三维网格的合并处理方法和装置、存储介质。
背景技术
随着计算机技术的进步,三维重建与可视化在建筑建模、城市规划、建筑测量、3D打印等大场景中的应用越来越广泛。目前,常采用分治法来处理大场景中的大型数据,也就是说,先将大型数据分割成若干个小型数据,然后对若干个小型数据分别进行处理,再将处理后的若干个小型数据进行合并得到处理后的大型数据。
基于此,在大场景的三维重建与可视化应用中,通常先利用公共平面对大场景进行分块处理,然后利用三维网格合并技术对大场景的多个分块的三维网格进行合并处理,来实现大场景的三维重建与可视化。
然而,在实现本发明的过程中,本发明人通过研究发现,在现有的三维网格合并方法中,需要遍历每个分块的三维网格,查找每个分块的三维网格中可用于三维网格合并的三角形,进而基于查找到的可用于三维网格合并的三角形进行三维网格合并。由于需要遍历每个分块的三维网格的所有三角形,因而查找可用于三维网格合并的三角形的任务量较大,难度较高,从而导致三维网格合并速度较慢,大场景的三维重建与可视化效率较低。
发明内容
本公开实施例提供一种三维网格的合并处理方法和装置、存储介质,用于减少确定第一边界和第二边界的任务量和难度,有助于提高三维网格的合并速度,从而提高大场景的三维重建与可视化效率。
本公开实施例的一个方面,提供一种三维网格的合并处理方法,包括:
获取待合并的第一网格、第二网格、以及公共平面;其中的第一网格和第二网格为由公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者,第一网格和第二网格为由公共平面对目标场景的网格进行分块得到的两个网格;
基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界;
基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并。
本公开实施例的另一个方面,提供一种三维网格的合并处理装置,包括:
获取模块,用于获取待合并的第一网格、第二网格、以及公共平面;其中的第一网格和第二网格为由公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者,第一网格和第二网格为由公共平面对目标场景的网格进行分块得到的两个网格;
确定模块,用于基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界;
合并模块,用于基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并。
本公开实施例的再一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现本公开上述任一实施例所述的方法。
基于本公开上述实施例提供的三维网格的合并处理方法和装置、存储介质,首先获取待合并的第一网格、第二网格和公共平面,其中的第一网格和第二网格为由公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者为由公共平面对目标场景的网格进行分块得到的两个网格,然后基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界,进而,基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并,得到合并网格。由此,可以将分割目标场景的点云或网格的公共平面这一先验信息用于确定第一网格的第一边界和第二网格的第二边界,相对于仅根据第一网格和第二网格确定第一边界和第二边界,一方面能够减少确定第一边界和第二边界的任务量和难度,有助于提高三维网格的合并速度,从而提高大场景的三维重建与可视化效率,另一方面,由于公共平面与第一边界和第二边界密切相关,将公共平面作为先验信息用于确定第一边界和第二边界,能够提高第一边界和第二边界的精确度,从而有助于获得更准确的三维网格合并结果。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1为本公开三维网格的合并处理方法一个实施例的流程图;
图2为本公开获取第一目标边界点对的示意图;
图3为本公开三维网格的合并处理方法另一个实施例的流程图;
图4a为本公开进行三维网格合并前的第一网格和第二网格的示意图;
图4b为本公开对第一网格和第二网格进行三维网格合并后,得到的合并网格示意图;
图5为本公开三维网格的合并处理装置一个实施例的结构示意图;
图6为本公开三维网格的合并处理装置另一个实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
图1为本公开三维网格的合并处理方法一个实施例的流程图。如图1所示,该实施例的方法包括:
步骤102,获取待合并的第一网格、第二网格、以及公共平面。
在本公开实施例中,第一网格和第二网格可以为由公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者,也可以为由公共平面对目标场景的网格进行分块得到的两个网格,其中的目标场景可以是任何室内场景、室外场景等,例如,在房产领域,目标场景可以为房间,本公开实施例对目标场景的具体范围和类型不做限制。
实际应用中,目标场景的点云可以是利用3D扫描设备(如激光雷达、立体摄像头等)对目标场景进行扫描得到的点云,目标场景的网格可以是利用预设表面重建方法或预设表面重建工具对目标场景的点云进行表面重建得到的网格,也可以是先利用公共平面对目标场景的点云进行分块得到多块点云,再利用预设表面重建方法或预设表面重建工具分别对多块点云进行表面重建以及网格合并得到的网格。需要说明的是,本公开实施例对预设表面重建方法和预设表面重建工具不做具体限定,例如预设表面重建方法可以是泊松重建、MC(MarchingCube,移动立方体),三角剖分Delaunay,等表面重建方法中的任意一项,预设表面重建工具可以是网格模型处理软件MeshLab、PCL(PointCloudLibrary,点云库)等表面重建工具中的任意一项。
本公开实施例中,可以使用一个公共平面对目标场景的点云或网格进行分块,也可以使用两个或以上公共平面对目标场景的点云或网格进行分块,本公开实施例对目标场景的具体范围和类型不做限制。
在使用一个公共平面对目标场景的点云或网格进行分块的情况下,可以确定该一个公共平面为该步骤102中的公共平面,确定由该一个公共平面对目标场景的点云分块得到的两块点云构建的两个网格为该步骤102中的第一网格和第二网格,或者确定由该一个公共平面对目标场景的网格进行分块得到的两个网格为该步骤102中的第一网格和第二网格。
在使用两个或两以上公共平面对目标场景的点云或网格进行分块的情况下,可以确定该两个或以上公共平面中的任一公共平面为该步骤102中的公共平面,确定由该任一公共平面对目标场景的点云分块得到的两块点云构建的两个网格为该步骤102中的第一网格和第二网格,或者确定由该任一公共平面对目标场景的网格进行分块得到的两个网格为该步骤102中的第一网格和第二网格。
步骤104,基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界。
在本公开实施例中,网格的边界可以包括若干个边界点、若干条边和若干个三角形,边界中的两个相互连接的边界点可以确定边界中的一条边,边界中的三条首尾相接的边可以确定边界中的一个三角形。
在本公开实施例中,在确定第一网格在公共平面上的第一边界时,可以确定第一网格中的在公共平面上的顶点为第一边界中的边界点,确定第一边界中的两个相互连接的边界点构成的边为第一边界中的边,确定第一边界中的三条首尾相接的边构成的三角形为第一边界中的三角形。
同理,在确定第二网格在公共平面上的第二边界时,可以确定第二网格中的在公共平面上的顶点为第二边界中的边界点,确定第二边界中的两个相互连接的边界点构成的边为第二边界中的边,确定第二边界中的三条首尾相接的边构成的多边形为第二边界中的三角形。
需要说明的是,本公开实施例对第一边界所包括的边界点的数量,边的数量,以及三角形的数量,或者第二边界所包括的边界点的数量,边的数量,以及三角形的数量不做限制。
步骤106,基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并。
在本公开实施例中,可以基于步骤104所确定的第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并,以得到合并网格。
在基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并时,可以先确定第一边界和第二边界之间的边界点对集合,该边界点对集合包括至少一个边界点对,至少一个边界点对中的各边界点对分别包括一第一边界点和与第一边界点之间距离小于第四预设阈值的一第二边界点,其中的第一边界点为第一边界中的边界点,第二边界点为第二边界中的边界点,第四预设阈值的大小可以根据实际需要进行确定。
在确定了第一边界和第二边界之间的边界点对集合之后,还可以针对边界点对集合中的任一边界点对,构建连接该任一边界点对中的第一边界点和第二边界点的边,然后获取该边所在的多边形,以及确定该边所在的多边形的类型是否为预设类型,若该边所在的多边形的类型不为预设类型,可以在该边所在的多边形中插入边,以将该边所在多边形的类型转换为预设类型,以实现对第一网格和第二网格进行网格合并,得到合并网格。
作为一个示例,预设类型为三角形,该边所在的多边形的类型为四边形,可以在该四边形中插入一条边,以将该边所在的多边形的类型转换为三角形。
作为另一个示例,预设类型为三角形,该边所在的多边形的类型为五边形,可以在该五边形中插入两条边,以将该边所在的多边形的类型转换为三角形。
作为又一个示例,基于本公开上述实施例提供的三维网格的合并处理方法,对图4a示出的第一网格和第二网格进行网格合并,可以得到图4b示出的合并网格。在图4a中,灰色为图片背景色,黑色线条圈出部分示出的灰色缝隙左侧的网格可以为第一网格,灰色缝隙右侧的网格可以为第二网格。在图4b中,黑色线条圈出部分示出的网格不存在缝隙,第一网格与第二网格已经无缝连接。
基于本公开上述实施例提供的三维网格的合并处理方法,首先获取待合并的第一网格、第二网格和公共平面,其中的第一网格和第二网格为由公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者为由公共平面对目标场景的网格进行分块得到的两个网格,然后基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界,进而,基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并,得到合并网格。由此,可以将分割目标场景的点云或网格的公共平面这一先验信息用于确定第一网格的第一边界和第二网格的第二边界,相对于仅根据第一网格和第二网格确定第一边界和第二边界,一方面能够减少确定第一边界和第二边界的任务量和难度,有助于提高三维网格的合并速度,从而提高大场景的三维重建与可视化效率,另一方面,由于公共平面与第一边界和第二边界密切相关,将公共平面作为先验信息用于确定第一边界和第二边界,能够提高第一边界和第二边界的精确度,从而有助于获得更准确的三维网格合并结果。
可选地,在本公开其中一些可能的实现方式中,上述操作104中,基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界,以及第二网格在公共平面上的第二边界时,可以针对第一网格和第二网格中的任一网格,获取任一网格中的到公共平面的距离小于第一预设阈值的顶点,进而可以确定该顶点为任一网格的边界上的边界点,并基于该顶点所在的边,以及该顶点所在的三角形,确定任一网格的边界上的边和三角形。
在该可能的实现方式中,针对第一网格和第二网格中的任一网格,可以确定该任一网格中的到公共平面的距离小于第一预设阈值的顶点为该任一网格的边界上的边界点,其中的第一预设阈值的大小可以根据实际需要进行设定,本公开实施例对此不做具体限定。
在确定该任一网格的边界上的边界点之后,还可以在该任一网格中,获取该到公共平面的距离小于第一预设阈值的顶点所在的边,若该顶点所在的边中的另一个顶点也为该任一网格的边界上的边界点,可以确定该顶点所在的边为该任一网格的边界上的边。
在确定该任一网格的边界上的边界点之后,还可以在该任一网格中,获取该到公共平面的距离小于第一预设阈值的顶点所在的三角形,若该顶点所在的三角形中的另两个顶点也为该任一网格的边界上的边界点,可以确定该顶点所在的三角形为该任一网格的边界上的三角形。
基于该可能的实现方式,可以将任一网格中的到公共平面的距离小于第一预设阈值的顶点确定为该任一网络的边界上的边界点,并可以在该顶点所在的边中的另一个顶点也为该任一网格的边界上的边界点的情况下,确定该顶点所在的边为该任一网格的边界上的边,以及在该顶点所在的三角形中的另两个顶点也为该任一网格的边界上的边界点的情况下,确定该顶点所在的三角形为该任一网格的边界上的三角形,能够获得更准确的网格边界,有助于提高网格边界的确定准确度。
可选地,在本公开其中一些可能的实现方式中,上述步骤106中,基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并时,可以基于第一边界和第二边界,确定边界点对集合,进而可以基于边界点对集合,在公共平面内对第一网格和第二网格进行网格合并,得到合并网络。
在该可能的实现方式中,边界点对集合可以包括至少一个边界点对,至少一个边界点对中的各边界点对分别包括一第一边界点和与第一边界点之间距离最小的一第二边界点,第一边界点为第一边界中的边界点,第二边界点为第二边界中的边界点;
基于该可能的实现方式,边界点对集合中的各边界点对分别包括一第一边界点和与第一边界点之间距离最小的一第二边界点,也就是说,在基于边界点对集合对第一网格和第二网格进行网格合并时,构建连接第一边界点和与第一边界点之间距离最小的一第二边界点的边,有助于避免连接不同边界点对中的第一边界点和第二边界点的边出现相互交叉的情况,能够降低合并网格的结构复杂度。
可选地,在本公开其中一些可能的实现方式中,上述步骤106中,基于边界点对集合,在公共平面内对第一网格和第二网格进行网格合并时,可以分别获取边界点对集合中的第M个边界点对,然后确定第M个边界点对的标记状态是否为未处理标记,以及第M个边界点对中的第一边界点与第二边界点之间的距离是否小于第二预设阈值,在第M个边界点对的标记状态为未处理标记,且第M个边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值的情况下,可以构建连接第M个边界点对中的第一边界点和第二边界点的边作为基本边,并将第M个边界点对标记状态设置已处理标记,然后按照预设方向,获取基本边中的第一边界点在第一边界中的下一个顶点作为第三边界点,以及获取基本边中的第二边界点在第二边界中的上一个顶点为第四边界点,并可以基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对,进而可以基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,并将第一目标边界点对的标记状态设置已处理标记。
在该可能的实现方式中,边界点对的标记状态可以用于标识是否已构建连接该边界点对中的第一边界点和第二边界点的边,若该边界点对的标记状态为未处理标记,可以确定未构建连接该边界点对中的第一边界点和第二边界点的边,若该边界点对的标记状态为已处理标记,可以确定已构建连接该边界点对中的第一边界点和第二边界点的边。
在该可能的实现方式中,其中的M=0,1,2,…,N-1,N表示边界点对集合中边界点对的个数,N为大于0的整数,其中的预设方向可以包括逆时针方向和/或顺时针方向,其中的第二预设阈值的大小可以根据实际需要进行设定,本公开实施例对第二预设阈值的大小不做具体限定。
在该可能的实现方式中,在第M个边界点对的标记状态为未处理标记,且第M个边界点对中的第一边界点与第二边界点之间的距离不小于第二预设阈值的情况下,可以通过构建连接第M个边界点对中的第一边界点和第二边界点的边,实现对第一网格和第二网格进行网格合并,并将第M个边界点对的标记状态设置已处理标记。
在第M个边界点对的标记状态为未处理标记,且第M个边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值的情况下,可以构建连接第M个边界点对中的第一边界点和第二边界点的边作为基本边,并将第M个边界点对标记状态设置已处理标记,然后按照预设方向,获取基本边中的第一边界点在第一边界中的下一个顶点作为第三边界点,以及获取基本边中的第二边界点在第二边界中的上一个顶点为第四边界点,并可以基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对,进而可以基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,并将第一目标边界点对的标记状态设置已处理标记。
图2为本公开获取与基本边可构成三角形的第一目标边界点对的示意图。如图2所示,mesh1为第一网格,mesh2为第二网格,plane为公共平面,顶点p,p2和p3为mesh1的第一边界中的第一边界点,顶点q,q2,q3为mesh2的第二边界中的第二边界点,边pq为基本边,基本边pq中的第一边界点为p,第二边界点为q。
在设定预设方向为逆时针方向的情况下,可以获取基本边pq中的第一边界点p在第一边界中的下一个顶点p2作为第三边界点,获取基本边pq中的第二边界点q在第二边界中的上一个顶点q3作为第四边界点。基于该第三边界点p2和第四边界点q3,可以获取与基本边pq可构成三角形的两个边界点对pq3和qp2,可以选取两个边界点对pq3和qp2中任一边界点对作为第一目标边界点对,并基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,以及将第一目标边界点对的标记状态设置已处理标记。
假定选取边界点对pq3为第一目标边界点对,在基于基本边pq和第一目标边界点对pq3,对mesh1和mesh2进行网格合并时,可以构建连接第一边界点p和第二边界点q3的边pq3,以及构建包括边pq,边qq3以及边pq3的三角形,以实现对mesh1和mesh2的网格合并,并将第一目标边界点对pq3的标记状态设置已处理标记。
该可能的实现方式中,在边界点对的标记状态为未处理标记,且边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值的情况下,可以构建连接边界点对中的第一边界点和第二边界点的基本边,并能够获取可与基本边构成三角形的第一目标边界点对,进而可以构建连接第一目标边界点对中的第一边界点和第二边界点的边,以实现对第一网格和第二网格进行网格合并,基于此,可以获得第一边界和第二边界之间的更多可连接边界点对,有助于获得更细化的合并网格。
可选地,在本公开其中一些可能的实现方式中,上述步骤106中,基于边界点对集合,在公共平面内对第一网格和第二网格进行网格合并时,可以将边界点对集合中的各边界点对按照边界点对之间的距离由小到大的顺序进行排序,得到排序后的边界点对集合,然后依次获取排序后的边界点对集合中的一个边界点,并确定当前获取的边界点对的标记状态是否为未处理标记,以及确定当前获取的边界点对中的第一边界点与第二边界点之间的距离是否小于第二预设阈值。该第二预设阈值的大小可以根据实际需要进行设定,本公开实施例对此不做具体限定。
在该可能的实现方式中,当前获取的边界点对的标记状态可以用于标识是否已构建连接该当前获取的边界点对中的第一边界点和第二边界点的边,若该当前获取的边界点对的标记状态为未处理标记,可以确定未构建连接该当前获取的边界点对中的第一边界点和第二边界点的边,若该当前获取的边界点对的标记状态为已处理标记,可以确定已构建连接该当前获取的边界点对中的第一边界点和第二边界点的边。
在当前获取的边界点对的标记状态为已处理标记的情况下,可以执行依次获取排序后的边界点对集合中的一个边界点对的操作,以获取下一个边界点对,并可以针对获取的下一个边界点对作为当前边界点对,执行确定当前获取的边界点对的标记状态是否为未处理标记的操作,以及确定当前获取的边界点对中的第一边界点与第二边界点之间的距离是否小于第二预设阈值的操作。
在当前获取的边界点对的标记状态为未处理标记,且当前获取的边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值的情况下,可以构建连接当前获取的边界点对中的第一边界点和第二边界点的边作为基本边,并将当前获取的边界点对的标记状态设置已处理标记,按照预设方向,获取基本边中的第一边界点在第一边界中的下一个顶点作为第三边界点,以及获取基本边中的第二边界点在第二边界中的上一个顶点为第四边界点,并可以基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对,进而可以基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,并将第一目标边界点对的标记状态设置已处理标记,这里的预设方向包括逆时针方向和/或顺时针方向。
在当前获取的边界点对的标记状态为未处理标记,且当前获取的边界点对中的第一边界点与第二边界点之间的距离不小于第二预设阈值的情况下,可以构建连接当前获取的边界点对中的第一边界点和第二边界点的边,以及不再从排序后的边界点对集合中获取位于当前获取的边界点对之后的其他边界点对。
基于该可能的实现方式,可以将边界点对集合中的各边界点对按照边界点对之间的距离由小到大的顺序进行排序,得到排序后的边界点对集合,基于此,在当前获取的边界点对中的第一边界点与第二边界点之间的距离不小于第二预设阈值时,可以不需要从排序后的边界点对集合中获取位于当前获取的边界点对之后的其他边界点对,有助于节省处理资源,提高计算效率,从而提高三维网格的合并效率。
可选地,在本公开其中一些可能的实现方式中,在确定第一目标边界点对之后,还可以确定第一目标边界点对中的第一边界点与第二边界点之间的距离是否小于第二预设阈值,若第一目标边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值,构建连接第一目标边界点对中的第一边界点和第二边界点的边作为基本边,并可以执行按照预设方向,获取基本边中的第一边界点在第一边界中的下一个顶点作为第三边界点,以及获取基本边中的第二边界点在第二边界中的上一个顶点为第四边界点的操作,基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对的操作,以及基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,并将第一目标边界点对的标记状态设置已处理标记的操作。
基于该可能的实现方式,可以在第一目标边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值时,以连接第一目标边界点对中的第一边界点和第二边界点的边作为基本边,继续获取新的第一目标边界点对(也可以称为第二目标边界点对),并基于连接第一目标边界点对中的第一边界点和第二边界点的基本边和第二目标边界点对,对第一网格和第二网格进行网格合并,基于此,可以获得第一边界和第二边界之间的更多可连接边界点对,有助于获得更细化的合并网格。
可选地,在本公开其中一些可能的实现方式中,上述步骤106中,基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对时,可以获取基本边中的第一边界点和第二边界点,并在第一边界中获取第一边界点和第三边界点所在的三角形作为第一三角形,在第二边界中获取第二边界点和第四边界点所在的三角形作为第二三角形,然后确定第一三角形与第二三角形的法向量夹角是否小于第三预设阈值,若法向量夹角小于第三预设阈值,基于第一边界点、第二边界点、第三边界点和第四边界点获取第一目标边界点对。
再参见图2,基于第三边界点p2和第四边界点q3,获取与基本边pq可构成三角形的第一目标边界点对时,可以获取基本边中的第一边界点p和第二边界点q,并在第一边界中获取第一边界点p和第三边界点p2所在的三角形pp2p3作为第一三角形,在第二边界中获取第二边界点q和第四边界点q3所在的三角形qq2q3作为第二三角形,然后确定第一三角形pp2p3与第二三角形qq2q3的法向量夹角是否小于第三预设阈值,若法向量夹角小于第三预设阈值,可以基于该第三边界点p2和第四边界点q3,获取与基本边pq可构成三角形的两个边界点对pq3和qp2,并可以选取两个边界点对pq3和qp2中任一边界点对作为第一目标边界点对。需要说明的是,第三预设阈值的大小可以根据实际需要进行设定,本公开实施例对该第三预设阈值的大小不做具体限定。
基于该可能的实现方式,仅在第一边界点和第三边界点所在的第一三角形,与第二边界点和第四边界点所在的第二三角形之间的法向量夹角小于第三预设阈值时,可以基于第一边界点、第二边界点、第三边界点和第四边界点获取第一目标边界点对,一方面有助于节省处理资源,提高计算效率,从而提高三维网格的合并效率,另一方面由于两个三角形之间的夹角等于180度减去两个三角形之间的法向量夹角,若第一三角形与第二三角形之间的法向量夹角越小,第一三角形与第二三角形之间的夹角则越大,基于第一三角形中的第一边界点和第三边界点,以及第二三角形中的第二边界点和第四边界对第一网格和第二网格进行网格合并,所得到的合并网格越光滑,有助于提升合并网格的光滑度。
可选地,在本公开其中一些可能的实现方式中,上述步骤106中,基于第一边界点、第二边界点、第三边界点和第四边界点获取第一目标边界点对时,可以确定第一边界点与第四边界点之间的第三距离,以及第二边界点与第三边界点之间的第四距离,然后确定第三距离是否小于第四距离,若第三距离小于第四距离,确定第一边界点与第四边界点构成的边界点对为第一目标边界点对;若第三距离大于第四距离,确定第二边界点与第三边界点构成的边界点对为第一目标边界点对;否则,若第三距离等于第四距离,确定第一边界点与第四边界点构成的边界点对,或第二边界点与第三边界点构成的边界点对为第一目标边界点对。
再参见图2,基于第一边界点p、第二边界点q、第三边界点p2和第四边界点q3获取第一目标边界点对时,可以确定第一边界点p与第四边界点q3之间的第三距离D3,以及第二边界点q与第三边界点p2之间的第四距离D4,然后确定第三距离D3是否小于第四距离D4,若第三距离D3小于第四距离D4,确定第一边界点p与第四边界点q3构成的边界点对pq3为第一目标边界点对;若第三距离D3大于第四距离D4,确定第二边界点q与第三边界点p2构成的边界点对qp2为第一目标边界点对;否则,若第三距离D3等于第四距离D4,确定第一边界点p与第四边界点q3构成的边界点对pq3,或第二边界点q与第三边界点p2构成的边界点对qp2为第一目标边界点对。
该可能的实现方式中,基于第一边界点、第二边界点、第三边界点和第四边界点,可以获取到与基本可构成三角形的两个边界点对,即第一边界点与第四边界点构成的边界点对,以及第二边界点与第三边界点构成的边界点对,并可以选取距离更小的一边界点对作为第一目标边界点对,能够减小第一目标边界点对与基本边所构成的三角形的面积,有助于细化合并网格。
可选地,在本公开其中一些可能的实现方式中,上述步骤106中,基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并之后,还可以将合并网格中的与边界点对集合中包括的各边界点对对应的三角形的标记状态设置待处理标记,并利用第二预设方式,对合并网格中的标记状态为待处理标记的三角形进行光滑处理,得到光滑处理后的合并网格。
该可能的实现方式中,边界点对对应的三角形可以包括:连接边界点对中的第一边界点和第二边界点的边所在的三角形,以连接边界点对中的第一边界点和第二边界点的边为基本边确定的第一目标边界点对对应的三角形,以及以连接第一目标边界点对中的第一边界点和第二边界点的边为基本边确定的第二目标边界点对对应的三角形。其中第一目标边界点对对应的三角形可以为连接第一目标边界点对中的第一边界点和第二边界点的边所在的三角形,第二目标边界点对对应的三角形可以为连接第二目标边界点对中的第一边界点和第二边界点的边所在的三角形。
该可能的实现方式中,三角形的标记状态可以用于标识三角形是否需要进行光滑处理,若三角形的标记状态为待处理标记,可以确定三角形需要进行光滑处理;若三角形的标记状态为空,或为无需处理标记,可以确定三角形不需要进行光滑处理。
该可能的实现方式中,第二预设方式可以用于对合并网格中的标记状态为待处理标记的三角形进行光滑处理,第二预设方式可以是拉普拉斯平滑,平均曲率平滑,Taubin平滑等平滑方法中的任一项,本公开实施例对第二预设方式所采用的平滑方法不做具体限定。
基于该可能的实现方式,可以利用第二预设方式,对合并网格中的标记状态为待处理标记的三角形进行光滑处理,可以得到光滑处理后的合并网格,有助于提高合并网格的光滑度,另外仅对合并网格中的标记状态为待处理标记的三角形进行光滑处理,有助于节省处理资源,提高计算效率,从而提高三维网格的合并效率。
下面结合图2对本公开的三维网格的合并处理方法作进一步说明:
步骤a,获取待合并的第一网格mesh1、第二网格mesh2、以及公共平面plane。
步骤b,基于第一网格mesh1、第二网格mesh2和公共平面plane,确定第一网格mesh1在公共平面plane上的第一边界、以及第二网格mesh2在公共平面plane上的第二边界。在该步骤b中,可以针对第一网格mesh1和第二网格mesh2中的任一网格,获取任一网格中的到公共平面plane的距离小于第一预设阈值的顶点,并可以确定顶点为任一网格的边界上的边界点,并基于顶点所在的边,以及顶点所在的三角形,确定任一网格的边界上的边和三角形。
步骤c,基于第一边界和第二边界,确定边界点对集合,其中的边界点对集合包括至少一个边界点对,至少一个边界点对中的各边界点对分别包括一第一边界点和与第一边界点之间距离最小的一第二边界点,第一边界点为第一边界中的边界点,第二边界点为第二边界中的边界点。
步骤d,将边界点对集合中的各边界点对按照边界点对之间的距离由小到大的顺序进行排序,得到排序后的边界点对集合。
步骤e,依次获取排序后的边界点对集合中的一个边界点对,确定当前获取的边界点对pq的标记状态是否为未处理标记。若当前获取的边界点对pq的标记状态为已处理标记,执行步骤e的操作,以获取下一个边界点对;若当前获取的边界点对pq的标记状态是否为未处理标记,构建连接当前获取的边界点对pq中的第一边界点p和第二边界点q的边作为基本边,将当前获取的边界点对pq的标记状态设置已处理标记,并执行步骤f的操作。
步骤f,确定当前获取的边界点对pq中的第一边界点p与第二边界点q之间的距离是否小于第二预设阈值,若当前获取的边界点对pq中的第一边界点p与第二边界点q之间的距离小于第二预设阈值,并执行步骤g和步骤h的操作。
步骤g,正向遍历:按照逆时针方向,获取基本边pq中的第一边界点p在第一边界中的下一个顶点p2作为第三边界点,第二边界点q在第二边界中的上一个顶点q3作为第四边界点;获取第一边界点p和第三边界点p2所在的三角形pp2p3作为第一三角形,第二边界点q和第四边界点q3所在的三角形qq2q3作为第二三角形;确定第一三角形pp2p3与第二三角形qq2q3的法向量夹角是否小于第三预设阈值,若法向量夹角不小于第三预设阈值,结束当前正向遍历;若法向量夹角小于第三预设阈值,确定第一边界点p与第四边界点q3之间的第三距离D3,以及第二边界点q与第三边界点p2之间的第四距离D4,并确定第三距离D3是否小于第四距离D4;若第三距离D3小于第四距离D4,确定第一边界点p与第四边界点q3构成的边界点对pq3为第一目标边界点对;若第三距离D3大于第四距离D4,确定第二边界点q与第三边界点p2构成的边界点对qp2为第一目标边界点对;否则,若第三距离D3等于第四距离D4,确定第一边界点p与第四边界点q3构成的边界点对pq3,或第二边界点q与第三边界点p2构成的边界点对qp2为第一目标边界点对。这里,选取第二边界点q与第三边界点p2构成的边界点对qp2为第一目标边界点对,构建连接第一目标边界点对中的第一边界点q和第二边界点q2的边qp2,并基于三条首尾相接的边pq,边qp2和边p2p构建了三角形qp2p。接下来,以连接第一目标边界点对中的第一边界点q和第二边界点q2的边qp2为基本边,继续执行步骤f的操作。
步骤h,反向遍历:除按照顺时针方向,获取基本边pq中的第一边界点p在第一边界中的下一个顶点,以及第二边界点q在第二边界中的上一个顶点外,其他操作与步骤g相同。
图3为本公开三维网格的合并处理方法另一个实施例的流程图。如图3所示,在图1所示实施例的基础上,上述步骤104可以包括:
步骤1042,利用第一预设方式,分别对第一网格和第二网格进行网格简化。
步骤1044,基于网格简化后的第一网格、网格简化后的第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界。
在步骤1042中,第一预设方式可以用于对三维网格进行网格简化,可以在保证三维网格的几何信息(例如几何形状、几何结构)的前提下,减少三维网格中的三角形数量,该第一预设方式可以是顶点聚类法、区域合并法、几何元素删除法、重新布点法等网格简化方法中的任一项,本公开实施例对第一预设方式所采用的网格简化方法不做具体限定。
在步骤1044中,可以基于步骤1042获得的网格简化后的第一网格、网格简化后的第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界,由于网格简化后的第一网格中包括的顶点、边及三角形的数据,以及网格简化后的第二网格中包括的顶点、边及三角形的数量均相对较小,因而可以有效减少确定第一边界和第二边界的任务量和难度,有助于提高确定网格边界的速度,以及节省计算资源,从而提高三维网格的合并效率。
本公开实施例提供的任一种三维网格的合并处理方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种三维网格的合并处理方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种三维网格的合并处理方法。下文不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本公开三维网格的合并处理装置一个实施例的结构示意图。该实施例的三维网格的合并处理装置可用于实现本公开上述各三维网格的合并处理方法实施例。如图5所示,该实施例的装置包括:获取模块502,确定模块504和合并模块506。其中,
获取模块502,用于获取待合并的第一网格、第二网格、以及公共平面;其中的第一网格和第二网格为由公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者,第一网格和第二网格为由公共平面对目标场景的网格进行分块得到的两个网格。
确定模块504,用于基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界。
合并模块506,用于基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并。
可选地,在本公开其中一些可能的实现方式中,确定模块504,包括:
获取单元,用于针对第一网格和第二网格中的任一网格,获取任一网格中的到公共平面的距离小于第一预设阈值的顶点;
第一确定单元,用于确定顶点为任一网格的边界上的边界点,并基于顶点所在的边,以及顶点所在的三角形,确定任一网格的边界上的边和三角形。
可选地,在本公开其中一些可能的实现方式中,合并模块506,包括:
第二确定单元,用于基于第一边界和第二边界,确定边界点对集合;其中,边界点对集合包括至少一个边界点对,至少一个边界点对中的各边界点对分别包括一第一边界点和与第一边界点之间距离最小的一第二边界点,第一边界点为第一边界中的边界点,第二边界点为第二边界中的边界点;
合并单元,用于基于边界点对集合,在公共平面内对第一网格和第二网格进行网格合并,得到合并网络。
可选地,在本公开其中一些可能的实现方式中,合并单元,包括:
第一获取子单元,用于分别获取边界点对集合中的第M个边界点对;其中,M=0,1,2,…,N-1,N表示边界点对集合中边界点对的个数,N为大于0的整数;
第一确定子单元,用于确定第M个边界点对的标记状态是否为未处理标记,以及第M个边界点对中的第一边界点与第二边界点之间的距离是否小于第二预设阈值;
第二获取子单元,用于根据第一确定子单元的确定结果,若第M个边界点对的标记状态为未处理标记,且第M个边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值,构建连接第M个边界点对中的第一边界点和第二边界点的边作为基本边,并将第M个边界点对标记状态设置已处理标记,按照预设方向,获取基本边中的第一边界点在第一边界中的下一个顶点作为第三边界点,以及获取基本边中的第二边界点在第二边界中的上一个顶点为第四边界点,并基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对;其中,预设方向包括逆时针方向和/或顺时针方向;
第一合并子单元,用于基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,并将第一目标边界点对的标记状态设置已处理标记。
可选地,在本公开其中一些可能的实现方式中,合并单元,包括:
排序子单元,用于将边界点对集合中的各边界点对按照边界点对之间的距离由小到大的顺序进行排序,得到排序后的边界点对集合;
第三获取子单元,用于依次获取排序后的边界点对集合中的一个边界点对;
第二确定子单元,用于确定当前获取的边界点对的标记状态是否为未处理标记;
第四获取子单元,用于根据第二确定子单元的确定结果,若当前获取的边界点对的标记状态为已处理标记,执行依次获取排序后的边界点对集合中的一个边界点对的操作,以获取下一个边界点对,并针对获取的下一个边界点对作为当前边界点对,执行确定当前获取的边界点对的标记状态是否为未处理标记的操作;
第五获取子单元,用于根据第二确定子单元的确定结果,若当前获取的边界点对的标记状态为未处理标记,且所述当前获取的边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值,构建连接当前获取的边界点对中的第一边界点和第二边界点的边作为基本边,并将当前获取的边界点对的标记状态设置已处理标记,按照预设方向,获取基本边中的第一边界点在第一边界中的下一个顶点作为第三边界点,以及获取基本边中的第二边界点在第二边界中的上一个顶点为第四边界点,并基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对;其中的预设方向包括逆时针方向和/或顺时针方向;
第二合并子单元,用于基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,并将第一目标边界点对的标记状态设置已处理标记。
可选地,在本公开其中一些可能的实现方式中,合并单元还包括:
第三确定子单元,用于确定第一目标边界点对中的第一边界点与第二边界点之间的距离是否小于第二预设阈值;
第六获取子单元,用于根据第三确定子单元的确定结果,若第一目标边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值,构建连接第一目标边界点对中的第一边界点和第二边界点的边作为基本边,并执行按照预设方向,获取基本边中的第一边界点在第一边界中的下一个顶点作为第三边界点,以及获取基本边中的第二边界点在第二边界中的上一个顶点为第四边界点的操作,基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对的操作,以及基于基本边和第一目标边界点对,对第一网格和第二网格进行网格合并,并将第一目标边界点对的标记状态设置已处理标记的操作。
可选地,在本公开其中一些可能的实现方式中,基于第三边界点和第四边界点,获取与基本边可构成三角形的第一目标边界点对,包括:
获取基本边中的第一边界点和第二边界点;
在第一边界中获取第一边界点和第三边界点所在的三角形作为第一三角形,在第二边界中获取第二边界点和第四边界点所在的三角形作为第二三角形;
确定第一三角形与第二三角形的法向量夹角是否小于第三预设阈值;
若法向量夹角小于第三预设阈值,基于第一边界点、第二边界点、第三边界点和第四边界点获取第一目标边界点对。
可选地,在本公开其中一些可能的实现方式中,基于第一边界点、第二边界点、第三边界点和第四边界点获取第一目标边界点对,包括:
确定第一边界点与第四边界点之间的第三距离,以及第二边界点与第三边界点之间的第四距离;
确定第三距离是否小于第四距离;
若第三距离小于第四距离,确定第一边界点与第四边界点构成的边界点对为第一目标边界点对;
若第三距离大于第四距离,确定第二边界点与第三边界点构成的边界点对为第一目标边界点对;
否则,若第三距离等于第四距离,确定第一边界点与第四边界点构成的边界点对,或第二边界点与第三边界点构成的边界点对为第一目标边界点对。
可选地,在本公开其中一些可能的实现方式中,确定模块304,包括:
简化单元,用于利用第一预设方式,分别对第一网格和第二网格进行网格简化;
第三确定单元,用于基于网格简化后的第一网格、网格简化后的第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界。
图6为本公开三维网格的合并处理装置另一个实施例的结构示意图。该另一个实施例的三维网格的合并处理装置,在图5所示三维网格的合并处理装置的基础上,还可以包括设置模块508和光滑模块510。其中,
设置模块508,用于将合并网格中的与边界点对集合中包括的各边界点对对应的三角形的标记状态设置待处理标记。
光滑模块510,用于利用第二预设方式,对合并网格中的标记状态为待处理标记的三角形进行光滑处理,得到光滑处理后的合并网格。
基于本公开上述实施例提供的三维网格的合并处理装置,首先获取待合并的第一网格、第二网格和公共平面,其中的第一网格和第二网格为由公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者为由公共平面对目标场景的网格进行分块得到的两个网格,然后基于第一网格、第二网格和公共平面,确定第一网格在公共平面上的第一边界、以及第二网格在公共平面上的第二边界,进而,基于第一边界和第二边界,在公共平面内对第一网格和第二网格进行网格合并,得到合并网格。由此,可以将分割目标场景的点云或网格的公共平面这一先验信息用于确定第一网格的第一边界和第二网格的第二边界,相对于仅根据第一网格和第二网格确定第一边界和第二边界,一方面能够减少确定第一边界和第二边界的任务量和难度,有助于提高三维网格的合并速度,从而提高大场景的三维重建与可视化效率,另一方面,由于公共平面与第一边界和第二边界密切相关,将公共平面作为先验信息用于确定第一边界和第二边界,能够提高第一边界和第二边界的精确度,从而有助于获得更准确的三维网格合并结果。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的三维网格的合并处理方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种三维网格的合并处理方法,其特征在于,包括:
获取待合并的第一网格、第二网格、以及公共平面;其中,所述第一网格和所述第二网格为由所述公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者,所述第一网格和所述第二网格为由所述公共平面对所述目标场景的网格进行分块得到的两个网格;
基于所述第一网格、所述第二网格和所述公共平面,确定所述第一网格在所述公共平面上的第一边界、以及所述第二网格在所述公共平面上的第二边界;
基于所述第一边界和所述第二边界,在所述公共平面内对所述第一网格和所述第二网格进行网格合并。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一网格、所述第二网格和所述公共平面,确定所述第一网格在所述公共平面上的第一边界,以及所述第二网格在所述公共平面上的第二边界,包括:
针对所述第一网格和所述第二网格中的任一网格,获取所述任一网格中的到所述公共平面的距离小于第一预设阈值的顶点;
确定所述顶点为所述任一网格的边界上的边界点,并基于所述顶点所在的边,以及所述顶点所在的三角形,确定所述任一网格的边界上的边和三角形。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一边界和所述第二边界,在所述公共平面内对所述第一网格和所述第二网格进行网格合并,包括:
基于所述第一边界和所述第二边界,确定边界点对集合;其中,所述边界点对集合包括至少一个边界点对,所述至少一个边界点对中的各边界点对分别包括一第一边界点和与所述第一边界点之间距离最小的一第二边界点,所述第一边界点为所述第一边界中的边界点,所述第二边界点为所述第二边界中的边界点;
基于所述边界点对集合,在所述公共平面内对所述第一网格和所述第二网格进行网格合并,得到合并网络。
4.根据权利要求3所述的方法,其特征在于,所述基于所述边界点对集合,在所述公共平面内对所述第一网格和所述第二网格进行网格合并,包括:
分别获取所述边界点对集合中的第M个边界点对;其中,M=0,1,2,…,N-1,N表示所述边界点对集合中边界点对的个数,N为大于0的整数;
确定所述第M个边界点对的标记状态是否为未处理标记,以及所述第M个边界点对中的第一边界点与第二边界点之间的距离是否小于第二预设阈值;
若所述第M个边界点对的标记状态为未处理标记,且所述第M个边界点对中的第一边界点与第二边界点之间的距离小于所述第二预设阈值,构建连接所述第M个边界点对中的第一边界点和第二边界点的边作为基本边,并将所述第M个边界点对标记状态设置已处理标记,按照预设方向,获取所述基本边中的第一边界点在所述第一边界中的下一个顶点作为第三边界点,以及获取所述基本边中的第二边界点在所述第二边界中的上一个顶点为第四边界点,并基于所述第三边界点和所述第四边界点,获取与所述基本边可构成三角形的第一目标边界点对;其中,所述预设方向包括逆时针方向和/或顺时针方向;
基于所述基本边和所述第一目标边界点对,对所述第一网格和所述第二网格进行网格合并,并将所述第一目标边界点对的标记状态设置已处理标记。
5.根据权利要求3所述的方法,其特征在于,所述基于所述边界点对集合,在所述公共平面内对所述第一网格和所述第二网格进行网格合并,包括:
将所述边界点对集合中的各边界点对按照边界点对之间的距离由小到大的顺序进行排序,得到排序后的边界点对集合;
依次获取所述排序后的边界点对集合中的一个边界点对;
确定当前获取的边界点对的标记状态是否为未处理标记;
若所述当前获取的边界点对的标记状态为已处理标记,执行所述依次获取所述排序后的边界点对集合中的一个边界点对的操作,以获取下一个边界点对,并针对获取的下一个边界点对作为当前边界点对,执行所述确定当前获取的边界点对的标记状态是否为未处理标记的操作;
否则,若所述当前获取的边界点对的标记状态为未处理标记,且所述当前获取的边界点对中的第一边界点与第二边界点之间的距离小于第二预设阈值,构建连接所述当前获取的边界点对中的第一边界点和第二边界点的边作为基本边,并将所述当前获取的边界点对的标记状态设置已处理标记,按照预设方向,获取所述基本边中的第一边界点在所述第一边界中的下一个顶点作为第三边界点,以及获取所述基本边中的第二边界点在所述第二边界中的上一个顶点为第四边界点,并基于所述第三边界点和所述第四边界点,获取与所述基本边可构成三角形的第一目标边界点对;其中,所述预设方向包括逆时针方向和/或顺时针方向;
基于所述基本边和所述第一目标边界点对,对所述第一网格和所述第二网格进行网格合并,并将所述第一目标边界点对的标记状态设置已处理标记。
6.根据权利要求4或5所述的方法,其特征在于,还包括:
确定所述第一目标边界点对中的第一边界点与第二边界点之间的距离是否小于所述第二预设阈值;
若所述第一目标边界点对中的第一边界点与第二边界点之间的距离小于所述第二预设阈值,构建连接所述第一目标边界点对中的第一边界点和第二边界点的边作为基本边,并执行所述按照预设方向,获取所述基本边中的第一边界点在所述第一边界中的下一个顶点作为第三边界点,以及获取所述基本边中的第二边界点在所述第二边界中的上一个顶点为第四边界点的操作,所述基于所述第三边界点和所述第四边界点,获取与所述基本边可构成三角形的第一目标边界点对的操作,以及所述基于所述基本边和所述第一目标边界点对,对所述第一网格和所述第二网格进行网格合并,并将所述第一目标边界点对的标记状态设置已处理标记的操作。
7.根据权利要求4或5所述的方法,其特征在于,所述基于所述第三边界点和所述第四边界点,获取与所述基本边可构成三角形的第一目标边界点对,包括:
获取所述基本边中的第一边界点和第二边界点;
在所述第一边界中获取所述第一边界点和所述第三边界点所在的三角形作为第一三角形,在所述第二边界中获取所述第二边界点和所述第四边界点所在的三角形作为第二三角形;
确定所述第一三角形与所述第二三角形的法向量夹角是否小于第三预设阈值;
若所述法向量夹角小于所述第三预设阈值,基于所述第一边界点、所述第二边界点、所述第三边界点和所述第四边界点获取所述第一目标边界点对。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一边界点、所述第二边界点、所述第三边界点和所述第四边界点获取所述第一目标边界点对,包括:
确定所述第一边界点与所述第四边界点之间的第三距离,以及所述第二边界点与所述第三边界点之间的第四距离;
确定所述第三距离是否小于所述第四距离;
若所述第三距离小于所述第四距离,确定所述第一边界点与所述第四边界点构成的边界点对为所述第一目标边界点对;
若所述第三距离大于所述第四距离,确定所述第二边界点与所述第三边界点构成的边界点对为所述第一目标边界点对;
否则,若所述第三距离等于所述第四距离,确定所述第一边界点与所述第四边界点构成的边界点对,或所述第二边界点与所述第三边界点构成的边界点对为所述第一目标边界点对。
9.一种三维网格的合并处理装置,其特征在于,包括:
获取模块,用于获取待合并的第一网格、第二网格、以及公共平面;其中,所述第一网格和所述第二网格为由所述公共平面对目标场景的点云进行分块得到的两块点云构建的两个网格,或者,所述第一网格和所述第二网格为由所述公共平面对所述目标场景的网格进行分块得到的两个网格;
确定模块,用于基于所述第一网格、所述第二网格和所述公共平面,确定所述第一网格在所述公共平面上的第一边界、以及所述第二网格在所述公共平面上的第二边界;
合并模块,用于基于所述第一边界和所述第二边界,在所述公共平面内对所述第一网格和所述第二网格进行网格合并。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述权利要求1-8任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111173369.9A CN113628343B (zh) | 2021-10-09 | 2021-10-09 | 三维网格的合并处理方法和装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111173369.9A CN113628343B (zh) | 2021-10-09 | 2021-10-09 | 三维网格的合并处理方法和装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113628343A CN113628343A (zh) | 2021-11-09 |
CN113628343B true CN113628343B (zh) | 2021-12-07 |
Family
ID=78390680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111173369.9A Active CN113628343B (zh) | 2021-10-09 | 2021-10-09 | 三维网格的合并处理方法和装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113628343B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115690120B (zh) * | 2022-06-06 | 2024-01-26 | 如你所视(北京)科技有限公司 | 生成三维网格的方法、装置、设备、介质和程序产品 |
CN114972687B (zh) * | 2022-07-21 | 2022-11-15 | 中汽研(天津)汽车工程研究院有限公司 | 基于消除三角形网格对的网格调整方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106204738A (zh) * | 2016-06-30 | 2016-12-07 | 北京恒创增材制造技术研究院有限公司 | 一种网格模型的缝合方法 |
CN107944102A (zh) * | 2017-11-13 | 2018-04-20 | 武汉大学 | 流域大尺度复杂河网的网格拼接方法 |
CN109074675A (zh) * | 2016-04-13 | 2018-12-21 | 奇跃公司 | 3d纹理网格的稳健合并 |
CN110111397A (zh) * | 2019-05-16 | 2019-08-09 | 长江水利委员会长江科学院 | 一种基于边界缝合与拓展的复杂水域网格再生方法 |
CN111080792A (zh) * | 2019-10-17 | 2020-04-28 | 贝壳技术有限公司 | 模型简化处理方法、装置以及电子设备、存储介质 |
CN112307553A (zh) * | 2020-12-03 | 2021-02-02 | 之江实验室 | 一种对三维道路模型进行提取与简化的方法 |
WO2021097126A1 (en) * | 2019-11-12 | 2021-05-20 | Geomagical Labs, Inc. | Method and system for scene image modification |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7129942B2 (en) * | 2002-12-10 | 2006-10-31 | International Business Machines Corporation | System and method for performing domain decomposition for multiresolution surface analysis |
-
2021
- 2021-10-09 CN CN202111173369.9A patent/CN113628343B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109074675A (zh) * | 2016-04-13 | 2018-12-21 | 奇跃公司 | 3d纹理网格的稳健合并 |
CN106204738A (zh) * | 2016-06-30 | 2016-12-07 | 北京恒创增材制造技术研究院有限公司 | 一种网格模型的缝合方法 |
CN107944102A (zh) * | 2017-11-13 | 2018-04-20 | 武汉大学 | 流域大尺度复杂河网的网格拼接方法 |
CN110111397A (zh) * | 2019-05-16 | 2019-08-09 | 长江水利委员会长江科学院 | 一种基于边界缝合与拓展的复杂水域网格再生方法 |
CN111080792A (zh) * | 2019-10-17 | 2020-04-28 | 贝壳技术有限公司 | 模型简化处理方法、装置以及电子设备、存储介质 |
WO2021097126A1 (en) * | 2019-11-12 | 2021-05-20 | Geomagical Labs, Inc. | Method and system for scene image modification |
CN112307553A (zh) * | 2020-12-03 | 2021-02-02 | 之江实验室 | 一种对三维道路模型进行提取与简化的方法 |
Non-Patent Citations (3)
Title |
---|
Scalable and Detail-Preserving Ground Surface Reconstruction from Large 3D Point Clouds Acquired by Mobile Mapping Systems;Andrés Serna,et al;《ResearchGate》;20150905;正文第1-11页 * |
基于CUDA的人耳数据网格合并算法;盖宇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160815;I138-676 * |
基于增强型三维点云模型的建筑物特征保持三维建模;孟馨玫;《中国优秀硕士学位论文全文数据库 基础科学辑》;20210315;A008-138 * |
Also Published As
Publication number | Publication date |
---|---|
CN113628343A (zh) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111932688B (zh) | 一种基于三维点云的室内平面要素提取方法、系统及设备 | |
US10510148B2 (en) | Systems and methods for block based edgel detection with false edge elimination | |
CN113628343B (zh) | 三维网格的合并处理方法和装置、存储介质 | |
CN110276829B (zh) | 通过多尺度体素哈希处理的三维表示 | |
CN108053432B (zh) | 基于局部icp的室内稀疏点云场景的配准方法 | |
US11875513B2 (en) | Self-adaptive point cloud stripe division method | |
KR20170068462A (ko) | 에지를 이용한 3차원 모델 생성 | |
CN112767551B (zh) | 三维模型构建方法、装置以及电子设备、存储介质 | |
JP2012530323A (ja) | 3次元シーンの区分的平面再構成 | |
CN107851332B (zh) | 经由拓扑知晓表面跟踪的一致细分 | |
Mencl et al. | Graph-based surface reconstruction using structures in scattered point sets | |
Lu et al. | PatchMatch filter: edge-aware filtering meets randomized search for visual correspondence | |
CN109344750B (zh) | 一种基于结构描述子的复杂结构三维对象识别方法 | |
CN115018992A (zh) | 发型模型的生成方法、装置、电子设备及存储介质 | |
US10937236B1 (en) | Mesh smoothing for visual quality and analysis improvement | |
Yang et al. | Automatic objects removal for scene completion | |
Nousias et al. | A saliency aware CNN-based 3D model simplification and compression framework for remote inspection of heritage sites | |
CN113379826A (zh) | 物流件的体积测量方法以及装置 | |
CN111402429A (zh) | 一种尺度还原、三维重建方法、系统、存储介质及设备 | |
CN116912817A (zh) | 三维场景模型拆分方法、装置、电子设备和存储介质 | |
CN113111741B (zh) | 一种基于三维特征点的装配状态识别方法 | |
Feichter et al. | Planar simplification of indoor point-cloud environments | |
CN113160102A (zh) | 三维场景重建的方法、装置、设备和存储介质 | |
CN111295694A (zh) | 点云的孔洞填充的方法和设备 | |
CN113592976A (zh) | 地图数据的处理方法、装置、家用电器和可读存储介质 |
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 |