CN107644422A - 基于双重空间数据组织的海量点云Delaunay三角网构建方法 - Google Patents
基于双重空间数据组织的海量点云Delaunay三角网构建方法 Download PDFInfo
- Publication number
- CN107644422A CN107644422A CN201710882593.2A CN201710882593A CN107644422A CN 107644422 A CN107644422 A CN 107644422A CN 201710882593 A CN201710882593 A CN 201710882593A CN 107644422 A CN107644422 A CN 107644422A
- Authority
- CN
- China
- Prior art keywords
- cloud
- point
- triangle
- point cloud
- thread
- 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.)
- Pending
Links
- 238000010276 construction Methods 0.000 title claims abstract description 11
- 230000009977 dual effect Effects 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000003139 buffering effect Effects 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 3
- 239000000203 mixture Substances 0.000 claims description 3
- 238000009740 moulding (composite fabrication) Methods 0.000 abstract description 36
- 230000008520 organization Effects 0.000 abstract description 6
- 230000007812 deficiency Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
Landscapes
- Image Generation (AREA)
Abstract
本发明公开一种基于双重空间数据组织的海量点云Delaunay三角网构建方法,分为四个步骤:点云格网组织、点云逐点组织、点云Delaunay构网和流水线调度。本发明算法能够避免以往单一空间数据组织方法的不足,降低构网方法对计算机内存的需求,增强构网方法对不同点云分布类型的适应性,提高构网方法的效率。
Description
技术领域
本发明属于地理信息技术,具体涉及一种基于双重空间数据组织的海量点云Delaunay三角网构建方法。
背景技术
Delaunay三角网(Delaunay Triangulated Irregular Network,D-TIN)是指一系列相互邻接且互不重叠的三角形集合,且每个三角形的外接圆内均不包含该面域内其余的任何点。D-TIN的空外接圆特性让D-TIN中每个三角形的最小内角尽可能的最大,保证了D-TIN中不会出现过于狭长的三角形,使得三角网的构建更加合理与准确,因而被认为是最优的三角网,在地理信息系统、地质学、计算机图形学、计算机仿真及虚拟现实等领域都有着广泛的应用。
随着现代数据获取技术的不断发展,D-TIN构建方法所面对的数据量不断激增,动辄上亿规模的海量点云数据对传统的D-TIN重建方法提出了严重挑战。传统的D-TIN重建方法多基于纯内存模式(In-Core),即将所有数据一次性全部读入内存,处理完毕后再全部释放。该类方法在运行过程中,点云数据、构建的D-TIN数据以及辅助数据结构均需占用较大的内存空间,显然难以应对激增的数据量。因此,如何构建out-of-core模式的D-TIN重建方法,是当前相关领域研究的重要问题。
现有的out-of-core模式的D-TIN构建方法的基本思想均是通过某种空间数据组织方式,将海量点云数据进行预处理,然后再进行D-TIN构建。根据数据组织方式的不同,大致可以分为两类。
第一类方法利用特定的数据结构对点云进行逐点排序,然后进行构网。这类方法在构网前引入对点云的排序,利用特定的插入顺序来保证几何空间中相邻的点云在内存空间中同样保持相邻,进而尽可能地减少对不符合空外接圆性质的新三角形进行调整的过程,以将满足空外接圆性质的三角形输出到外存,从而降低了内存的压力,增加了有限内存中可构建的三角形的数量。然而,这种方法也有着明显的缺陷。由于点云的数量远超过计算机内存的容纳能力,因而,只能通过外部排序的方式来完成对点云的空间排序,而频繁的内、外存交换严重降低了排序的效率,导致排序时间过长。
第二类方法对点云进行格网划分,然后逐个对每个格网中的点云进行构网,最后合并得到完整的三角网。这类方法利用网格作为辅助,先利用网格对点云进行分块,保证不同网格中的点云保持一种相对的顺序,而每个网格内的点云仍然保持无序,同时在构网的过程中利用网格来辅助判断三角网中的三角形是否已经稳定而能够输出到外存中。虽然这种方法提高了构网前对点云进行处理的效率,但是在于没有对块内的点云进行排序而直接进行插入构网,使得构网的效率往往会随着块内点云的不同顺序而波动。
以上两种方法的共同点在于,都仅仅使用单一空间数据组织方法处对点云进行处理。第一种方法对点云进行逐点组织,虽然能够保证构网的效率,但数据组织的效率却很低。后一种方法对点云进行格网组织,提高了数据组织的效率,却无法保证构网效率。因而,利用单一的空间数据组织方法对点云进行预处理,不可避免地会受到这种数据组织方法自身的局限性的约束,而无法保证重建过程中所有环节的效率,因而方法的实用性有限。
发明内容
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种基于双重空间数据组织的海量点云Delaunay三角网构建方法。
技术方案:本发明的一种基于双重空间数据组织的海量点云Delaunay三角网构建方法,依次包括以下步骤:
(1)利用四叉树通过三次完整遍历实现对点云进行格网组织;
(2)对经过上述组织后的每个矩形格网中的点云进行逐点排序;
(3)利用逐点插入法对点云进行构网,并将构网过程中内存里的三角形分为稳定三角形和不稳定三角形,将内存中的稳定三角形写入到硬盘,保留不稳定三角形继续参与后续的构网过程;
(4)流水线调度:对以上三个步骤按照流水线进行调度,设格网分割线程、排序线程和构网线程分别对应步骤(1)、(2)和(3),最后输出三角网。
所述步骤(1)的具体过程为:
(1.1)第一次遍历:
设待分割的原始输入点云为P={pi,i∈[1,n]},其中Pi·x和Pi·y分别代表点pi的X和Y坐标。通过第一次遍历点云P计算出点数n和X、Y坐标的最值:
xmax=max(Pi·x),i∈[1,n]、xmin=min(Pi·x),i∈[1,n]
ymax=max(Pi·y),i∈[1,n]、ymin=min(Pi·y),i∈[1,n]
则由p1(xmax,ymax),p2(xmax,ymin),p3(xmin,ymax),p4(xmin,ymin)四个点组成的矩形就是点云P的最小外接矩形MBR;
(1.2)第二次遍历:
利用四叉树对点云进行递归分割,至每个四叉树叶节点中包含的点数量n小于10000时停止。设此时的四叉树深度为k,则该四叉树的根节点对应的空间范围是点云的最小外接矩形MBR,经过k次递归细分,MBR被细分为4k个子矩形G=gi,i∈[1,4k];
第二次遍历点云P,统计每个子矩形gi中的所包含的点数ni,即判断每个点被包含于哪个四叉树的叶子节点中;
(1.3)第三次遍历:
先确定每个点的所属四叉树叶子节点,与第二次遍历类似,然后将这个点保存在叶子节点中,并将第二次遍历时统计的该叶子节点中保存的点数ni减1,当ni等于0的时候,说明该叶子节点包含的所有点已经保存到节点中。
所述步骤(2)中稳定三角形和不稳定三角形的判断依据为:如果一个三角形的外接圆既不与顶点所在的矩形边界相交,也不与顶点所在矩形的父节点的矩形边界相交,则认为这个三角形是稳定的,否则即为不稳定三角形。
所述步骤(4)中流水线调度的具体过程为:
(4.1)对于格网分割线程,每次完成分割的时候,将当前所有矩形格网中的点云写入待排序缓冲区中,而排序线程在空闲的时候就不停的检测待排序缓冲区中是否存在数据,若有,则取出进行排序,否则继续检测;
(4.2)在排序线程完成当前矩形格网中点云的排序之后,将该矩形格网内的所有点云放入待构网缓冲区中,而构网线程则不停的检测构网缓冲区中是否存在数据,若有,则取出进行构网,否则继续检测;
(4.3)在分块线程完成所有点云的格网分割之后,对排序线程发送信号,则排序线程在处理完待排序缓冲区中的数据后就停止运行,同时给构网线程发送信号,最后构网线程处理完构网缓冲区中的数据,并且将内存中的所有有效三角形都输出到硬盘中,整个点云的重建过程就结束。
有益效果:本发明能够避免现有构网算法的缺点,增强构网算法对点云分布模式的适应性,提高构网的整体效率。
附图说明
图1是本发明方法的流程图;
图2是本发明实施例的点云格网组织示意图;
图3是本发明实施例的点云逐点组织示意图;
图4是本发明实施例的稳定三角形和不稳定三角形判断依据意义图;
图5是本发明实施例的流水线调度示意图;
图6是本发明实施例的多线程同步示意图。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
如图1所示,本发明所述的一种基于双重空间数据组织的海量点云Delaunay三角网构建算法包括以下基本步骤:
1、点云格网组织
利用四叉树对点云进行格网组织,具体通过对点云的三次完整遍历实现,如图2所示。
(1)第一次遍历
设待分割的原始输入点云为P={pi,i∈[1,n]},其中Pi·x和Pi·y分别代表点pi的X和Y坐标,通过遍历求出P中X和Y坐标的最值:
xmax=max(Pi·x),i∈[1,n]、xmin=min(Pi.x),i∈[1,n]
ymax=max(Pi.y),i∈[1,n]、ymin=min(Pi.y),i∈[1,n]
则由p1(xmax,ymax),p2(xmax,ymin),p3(xmin,ymax),p4(xmin,ymin)四个点组成的矩形就是点云P的最小外接矩形MBR。
(2)第二次遍历
本发明选择四叉树来对点云进行分块组织,在第一次遍历之后,可以知道点云的最小外接矩形R和点数n。利用四叉树对点云进行递归分割,至每个四叉树叶节点中包含的点数量小于10000时停止。设此时的四叉树深度为k,则该四叉树的根节点对应的空间范围是点云的最小外接矩形MBR,经过k次递归细分,MBR被细分为4k个子矩形G=gi,i∈[1,4k]。
第二次遍历点云,统计每个网格gi中的所包含的点数ni,即判断每个点被包含于哪个四叉树的叶子节点中。
(3)第三次遍历
第三次遍历点云,先确定每个点的所属四叉树叶子节点,与第二次遍历类似,然后将这个点保存在叶子节点中,并将第二次遍历时统计的该叶子节点中保存的点数ni减1。当ni等于0的时候,说明该叶子节点包含的所有点都已经保存到节点中。
2、点云逐点排序
本实施例中采用KD-tree对点云进行逐点排序,具体过程如图3所示。图3从左到右共分为三个部分,左侧表示点云的分布及每次选择的分割点,中间是一个任务队列,每次从队列头弹出一个任务进行分割,右侧为一个数组,将每次分割的存入到数组末尾。图3(a)左图表示未排序之前的点云分布,可以看出一共有15个点。因为要对这15个点进行排序,所以将所有点P[1~15]作为待排序任务进入任务队列,如图3(b)中所示。在图3(b)中,首先弹出任务队列队首的待排序点云P[1~15],然后从P[1~15]的最小外接矩形Rp[1~15]的两条边中选择较长的一条边作为分割边,并找到P[1~15]在分割边方向的中位点,即P8,过P8做分割边的垂线,将P[1~15]分为两部分P[1~7]和P[9~15],然后把P[1~7]和P[9~15]作为新任务进入到任务队列,如图3(b)中图所示,再把P8插入到数组末尾,如图3(b)中右图所示。重复上述过程,直至任务队列中没有任务,点云的排序就完成了,此时点云已经排好顺序存储在数组中。
3、点云Delaunay构网
本实施例以逐点插入法对点云构建Delaunay三角网,由于针对的是海量点云的构网,因而不能把构网过程中产生的所有三角形都保存到内存中,必须把一部分在后续构网过程中不会再发生变化的三角网输出到外存,以空出内存的容量供之后的点云构网。在每个格网内的点都插入完成之后,本实施例将此时内存中的三角形分为两类:(1)稳定三角形,指该三角形在后续的构网过程中不会在发生变化的三角形;(2)不稳定三角形,指该三角形在后续的构网过程中可能会产生变化的三角形。
稳定三角形和不稳定三角形的判断依据为:如果一个三角形的外接圆既不与当前块的矩形边界相交,也不与当前块的父节点的矩形边界相交,则认为这个三角形是稳定的,否则即为不稳定三角形。
如图4所示,Δabc的外接圆不与当前块的矩形边界相交,且Δabc内部也不含有其他任何点,所以Δabc是稳定三角形,而Δbcd与当前块的矩形边界相交,那么与当前块邻接的块内仍然可能会有点落在Δbcd的外接圆内,因而Δbcd是不稳定三角形。
4、流水线调度
为了提高CPU利用率,提高算法的整体效率,本实施例对上述步骤按照流水线进行调度,如图5所示,创建格网分割线程、排序线程和构网线程分别用于执行上述三个步骤。同时,保证各线程之间不会出现冲突,通过设定缓冲区来进行线程同步,如图6所示。
对于格网分割线程,每次完成分割的时候,将当前所有矩形格网中的点云写入待排序缓冲区中,而排序线程在空闲的时候就不停的检测待排序缓冲区中是否存在数据,若有,则取出进行排序,否则继续检测。同样,在排序线程完成当前矩形格网中点云的排序之后,将该矩形格网内的所有点云放入待构网缓冲区中,而构网线程则不停的检测构网缓冲区中是否存在数据,若有,则取出进行构网,否则继续检测。在分块线程完成所有点云的格网分割之后,对排序线程发送信号,则排序线程在处理完待排序缓冲区中的数据后就停止运行,同时给构网线程发送信号,最后构网线程处理完构网缓冲区中的数据,并且将内存中的所有有效三角形都输出到硬盘中,整个点云的重建过程就结束了。
Claims (4)
1.一种基于双重空间数据组织的海量点云Delaunay三角网构建方法,其特征在于:依次包括以下步骤:
(1)利用四叉树通过三次完整遍历实现对点云进行格网组织;
(2)对经过上述组织后的每个矩形格网中的点云进行逐点排序;
(3)利用逐点插入法对点云进行构网,并将构网过程中内存里的三角形分为稳定三角形和不稳定三角形,将内存中的稳定三角形写入到硬盘,保留不稳定三角形继续参与后续的构网过程;
(4)流水线调度:对以上三个步骤按照流水线进行调度,设格网分割线程、排序线程和构网线程分别对应步骤(1)、(2)和(3),最后输出三角网。
2.根据权利要求1所述的基于双重空间数据组织的海量点云Delaunay三角网构建方法,其特征在于:所述步骤(1)的具体过程为:
(1.1)第一次遍历:
设待分割的原始输入点云为P={pi,i∈[1,n]},其中Pi.x和Pi.y分别代表点pi的X和Y坐标,通过第一次遍历点云P计算出点数n和X、Y坐标的最值:
xmax=max(Pi.x),i∈[1,n]、xmin=min(Pi.x),i∈[1,n]
ymax=max(Pi.y),i∈[1,n]、ymin=min(Pi.y),i∈[1,n]
则由p1(xmax,ymax),p2(xmax,ymin),p3(xmin,ymax),p4(xmin,ymin)四个点组成的矩形就是点云P的最小外接矩形MBR;
(1.2)第二次遍历:
利用四叉树对点云进行递归分割,至每个四叉树叶节点中包含的点数量n小于10000时停止,然后设此时的四叉树深度为k,则该四叉树的根节点对应的空间范围是点云的最小外接矩形MBR,经过k次递归细分,MBR被细分为4k个子矩形G=gi,i∈[1,4k];
第二次遍历点云P,统计每个子矩形gi中的所包含的点数ni,即判断每个点被包含于哪个四叉树的叶子节点中;
(1.3)第三次遍历:
先确定每个点的所属四叉树叶子节点,与第二次遍历类似,然后将这个点保存在叶子节点中,并将第二次遍历时统计的该叶子节点中保存的点数ni减1,当ni等于0的时候,说明该叶子节点包含的所有点已经保存到节点中。
3.根据权利要求1所述的基于双重空间数据组织的海量点云Delaunay三角网构建方法,其特征在于:所述步骤(2)中稳定三角形和不稳定三角形的判断依据为:如果一个三角形的外接圆既不与顶点所在的矩形边界相交,也不与顶点所在矩形的父节点的矩形边界相交,则认为这个三角形是稳定的,否则即为不稳定三角形。
4.根据权利要求1所述的基于双重空间数据组织的海量点云Delaunay三角网构建方法,其特征在于:所述步骤(4)中流水线调度的具体过程为:
(4.1)对于格网分割线程,每次完成分割的时候,将当前所有矩形格网中的点云写入待排序缓冲区中,而排序线程在空闲的时候就不停的检测待排序缓冲区中是否存在数据,若有,则取出进行排序,否则继续检测;
(4.2)在排序线程完成当前矩形格网中点云的排序之后,将该矩形格网内的所有点云放入待构网缓冲区中,而构网线程则不停的检测构网缓冲区中是否存在数据,若有,则取出进行构网,否则继续检测;
(4.3)在分块线程完成所有点云的格网分割之后,对排序线程发送信号,则排序线程在处理完待排序缓冲区中的数据后就停止运行,同时给构网线程发送信号,最后构网线程处理完构网缓冲区中的数据,并且将内存中的所有有效三角形都输出到硬盘中,整个点云的重建过程就结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710882593.2A CN107644422A (zh) | 2017-09-26 | 2017-09-26 | 基于双重空间数据组织的海量点云Delaunay三角网构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710882593.2A CN107644422A (zh) | 2017-09-26 | 2017-09-26 | 基于双重空间数据组织的海量点云Delaunay三角网构建方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107644422A true CN107644422A (zh) | 2018-01-30 |
Family
ID=61111413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710882593.2A Pending CN107644422A (zh) | 2017-09-26 | 2017-09-26 | 基于双重空间数据组织的海量点云Delaunay三角网构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107644422A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108765564A (zh) * | 2018-05-31 | 2018-11-06 | 中国电子科技集团公司第二十九研究所 | 一种海量地形数据多维剖分结构、生成方法及精细场景快速生成方法 |
CN109816787A (zh) * | 2019-01-05 | 2019-05-28 | 天津大学 | 一种海量tin模型数据的高效调度方法 |
-
2017
- 2017-09-26 CN CN201710882593.2A patent/CN107644422A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108765564A (zh) * | 2018-05-31 | 2018-11-06 | 中国电子科技集团公司第二十九研究所 | 一种海量地形数据多维剖分结构、生成方法及精细场景快速生成方法 |
CN109816787A (zh) * | 2019-01-05 | 2019-05-28 | 天津大学 | 一种海量tin模型数据的高效调度方法 |
CN109816787B (zh) * | 2019-01-05 | 2023-07-28 | 天津大学 | 一种海量tin模型数据的高效调度方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8140585B2 (en) | Method and apparatus for partitioning and sorting a data set on a multi-processor system | |
CN105608490B (zh) | 细胞阵列计算系统以及其中的通信方法 | |
CN110188778B (zh) | 基于影像提取结果的居民区要素轮廓规则化方法 | |
CN108763827B (zh) | 一种输电塔有限元模型建立方法及装置 | |
CN106779057A (zh) | 基于gpu的计算二值神经网络卷积的方法及装置 | |
CN102436217B (zh) | 飞机结构件槽特征腹板加工驱动几何重构方法 | |
CN111145356A (zh) | 一种基于Unity3D模型的切割方法 | |
CN105654552B (zh) | 一种面向任意分布大规模点云数据的快速Delaunay构网方法 | |
CN101599181A (zh) | 一种代数b样条曲面的实时绘制方法 | |
CN105956666A (zh) | 一种机器学习方法及系统 | |
CN107644422A (zh) | 基于双重空间数据组织的海量点云Delaunay三角网构建方法 | |
CN107564077A (zh) | 一种绘制道路网的方法及装置 | |
CN109872375A (zh) | 一种骨骼动画关键帧压缩方法及装置 | |
CN103839222A (zh) | 一种基于分层次边界拓扑搜索模型的栅格转矢量并行系统 | |
CN105858043A (zh) | 一种升降机与穿梭车结合的仓储系统优化调度方法 | |
CN109147050A (zh) | 基于Unity引擎地形系统的道路网格创建方法及装置 | |
CN101533525B (zh) | 一种用于地理信息系统中的点面叠加分析方法 | |
CN102622467A (zh) | 包含多种构件的三维有限元网格自动剖分方法 | |
CN106373192B (zh) | 一种非拓扑一致性三维网格块体追踪算法 | |
CN109784484A (zh) | 神经网络加速方法、装置、神经网络加速芯片及存储介质 | |
CN106897224A (zh) | 一种软件测试范围的确定方法及装置 | |
Horvat et al. | Ray-casting point-in-polyhedron test | |
CN111599015A (zh) | 一种约束条件下的空间多边形网格化填充方法和装置 | |
CN103150711A (zh) | 一种基于OpenCL的图像修复方法 | |
CN102663789A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180130 |