一种基于自动分割与空间索引的三维点云文件加载方法与流程

文档序号:29853485发布日期:2022-04-30 08:38阅读:188来源:国知局
一种基于自动分割与空间索引的三维点云文件加载方法与流程

1.本发明涉及三维点云技术领域,尤其涉及一种基于自动分割与空间索引的三维点云文件加载方法。


背景技术:

2.三维点云是有由利用激光测距仪的原理,通过记录被测物表面大量密集的点坐标、反射率、纹理和全景图等信息,通过计算机辅助计算,形成的无序点集。因其精度较高、能够高效、快速、准确的获取到真实世界采集对象的表面数据,而在智慧城市、智慧工地、征地移民、土地规划、地质勘探、工程量概算等方向均有深度应用。
3.不同于工业领域的三维激光点云,工程领域的点云文件体量巨大,特别是城市规划、征地移民等超大场景,三维点云文件通常在数十gb(gb是gigabyte的简称,1gb表示一千兆个bit)以上,现有计算机硬件直接加载如此体量的点云文件通常采用两种方式:
4.第一种方式是直接加载整个文件,如点云图像的显示方法及装置、设备及存储介质(授权公告号:cn109472852b)就是直接加载,但这种加载方式对计算机硬件的要求较高,经常会因内存不够而导致无法加载的情况。而且通过此方法加载的三维点云数据,在后续点云数据处理中,定位、裁剪等需要的无关计算量巨大,浪费计算机资源的同时,计算效率也非常低下。
5.第二种方式是通过人工的方式对点云文件进行分块,再根据业务实际需要,分块加载对应的点云文件,这种方式尽管解决了完整三维点云因内存不足而无法加载的问题,但仍然无法根据实际业务需要的具体坐标,快速提取对应的点云区域。在实际加载过程中,无法灵活提取不同形状的三维点云文件,仍然存在大量的无效区域点云加载,造成计算资源的浪费。并且,三维点云的人工分块也很难保证使用的灵活性,如果分区面积过大,后续提取点云时也会产生无效加载,造成硬件资源的浪费;如果降低人工分区面积,则会大大提高分区时的时间成本,效率较低。
6.另外,现有三维点云文件索引技术大多是将三维点云文件加载到内存中,再根据三维点云数据构建索引库,或者将三维点云索引信息以文件名的形式储存于本地硬盘,将三维点云文件名作为索引入口进行点云索引。前者对于计算机内存的要求较高,并不适用于超大三维点云文件的加载;第二种方式需要设计较为繁琐的文件命名规则,不便于管理三维点云索引库,且索引效率较低。


技术实现要素:

7.本发明的目的在于提供一种基于自动分割与空间索引的三维点云文件加载方法,以实现降低超大三维点云文件处理时的内存开销,并大幅提高其索引效率,进而实现三维点云文件的高效动态加载。
8.为实现上述目的,本发明采用技术方案如下:
9.一种基于自动分割与空间索引的三维点云文件加载方法,所述方法包括步骤如
下:
10.步骤s1:获取待处理的三维点云文件;
11.步骤s2:对所述三维点云文件进行自动点云分割,所述自动点云分割是按照预先设计好的点云分块方式,逐行读取并分割三维点云文件;
12.步骤s3:对所述三维点云文件进行空间索引与动态加载。
13.通过先对待处理的三维点云文件进行自动点云分割,然后再进行空间索引与动态加载,降低超大三维点云文件处理时的内存开销,并大幅提高其索引效率,实现了三维点云文件的高效动态加载。
14.作为进一步的方式,所述步骤s2中的自动分割包括具体步骤如下:
15.步骤s21:确定单个三维点云文件的图幅尺寸上限;
16.步骤s22:加载三维点云文件,获取三维点云文件的基础数据,所述三维点云文件的基础数据包括空间点总数,三维点云文件空间坐标范围及坐标分辨率,所述三维点云文件为二进制格式;
17.步骤s23:对所述三维点云文件的点集进行有序化处理;
18.步骤s24:对完整三维点云文件进行分块设计,确定单个分块点云x、y、z方向的坐标范围;
19.步骤s25:按照预先设计好的点云分块方式,逐行读取并分割三维点云文件。
20.作为进一步的方式,所述步骤s24中单个分块点云x、y、z方向的坐标范围确定包括具体步骤如下:
21.步骤s24-1:读取原始点云的x坐标最小值x
min
、x坐标最大值x
max
、y坐标最小值y
min
、y坐标最大值y
max
,z坐标标最小值z
min
、z坐标最大值z
max
,;
22.步骤s24-2:计算原始三维点云文件x方向的长度x
size

23.x
size
=x
max-x
min
24.步骤s24-3:比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
小于预设分块点云x尺寸上限则x
min
,x
max
即为当前分块点云x方向的区间范围;
25.步骤s24-4:比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
大于预设分块点云x尺寸上限则将点云分成左右两边,分别对左右两侧重复步骤s242、s243,直至计算出所有分块点云x方向的区间范围;
26.步骤s24-5:计算原始三维点云文件y方向的长度y
size

27.y
size
=y
max-y
min
28.步骤s24-6:比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
小于预设分块点云y尺寸上限则y
min
,y
max
即为当前分块点云y方向的区间范围;
29.步骤s24-7:比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
大于预设分块点云y尺寸上限则将点云分成上下两边,分别对上下两侧重复步骤s245、s246,直至计算出所有分块点云y方向的区间范围;
30.步骤s24-8:计算原始三维点云文件z方向的长度z
size

31.z
size
=z
max-z
min
32.步骤s24-9:比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
小于预设分块点云z尺寸上限则z
min
,z
max
即为当前分块点云z方向的区间范围;
33.步骤s24-10:比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
大于预设分块点云z尺寸上限则将点云分成上下两边,分别对上下两侧重复步骤s246、s247,直至计算出所有分块点云z方向的区间范围;
34.步骤s24-11:汇总s24-3、s24-6、s24-9的结果,得到每个分块点云x、y、z方向的坐标范围。
35.作为进一步的方式,所述步骤s3中的空间索引与动态加载包括具体步骤如下:
36.步骤s31:计算点云数据空间各维度顶点,得到标记分块点云位置的空间坐标窗格[x
min
,x
max
,y
min
,y
max
,z
min
,z
max
];
[0037]
步骤s32:基于关系型数据库与各分块点云的空间坐标窗格,构建三维点云空间索引库;
[0038]
步骤s33:获取所需的局部点云空间坐标范围[(x
min
,x
max
),(y
min
,y
max
),(z
min
,z
max
)],
[0039]
得到s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
),
[0040]
所述s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
)是坐标窗格为[x
min
,x
max
,y
min
,y
max
,z
min
,z
max
]的分块点云;
[0041]
步骤s34:将索引出的三维点云文件进行拼接,并封装成通用格式的三维点云文件。作为进一步的方式,所述步骤s32中的三维点云空间索引库的构建具体步骤如下:
[0042]
步骤s321:创建原始三维点云文件表,所述原始三维点云文件表的字段包括主键(src_id)、原始三维点云储存路径、空间点总数、空间坐标范围以及坐标分辨率;
[0043]
步骤s322:创建分块三维点云文件表,所述分块三维点云文件表的字段包括:主键(sep_id)、分块三维点云文件储存路径,空间坐标窗格坐标(xmin,xmax,ymin,ymax,zmin,zmax),空间点总数以及原始三维点云文件的主键(src_id)。
[0044]
作为进一步的方式,所述步骤s33中的三维点云索引条件如下:
[0045]
{s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
)|(x
min
,x
max
)∈u
x
,(y
min
,y
max
)∈uy,(z
min
,z
max
)∈uz}
[0046]
其中:
[0047]ux
={(x
min
,x
max
)|x
min
<x
min
<x
max
}∪{(x
min
,x
max
)|x
min
<x
max
<x
max
}∪{(x
min
,x
max
)|x
min
>x
min
,x
max
<x
max
}
[0048]
uy={(y
min
,y
max
)|y
min
<y
min
<y
max
}∪{(y
min
,y
max
)|y
min
<y
max
<y
max
}∪{(y
min
,y
max
)|y
min
>y
min
,y
max
<y
max
}
[0049]
uz={(z
min
,z
max
)|z
min
<z
min
<z
max
}∪{(z
min
,z
max
)|z
min
<z
max
<z
max
}∪{(z
min
,z
max
)|z
min
>z
min
,z
max
<z
max
}。
[0050]
与上述基于自动分割与空间索引的三维点云文件加载方法相对应的是一种三维点云自动分割方法,所述方法中包括步骤如下:
[0051]
获取待处理的三维点云文件;
[0052]
确定单个三维点云文件的图幅尺寸上限;
[0053]
加载三维点云文件,获取三维点云文件的基础数据,所述三维点云文件的基础数
据包括空间点总数,三维点云文件空间坐标范围及坐标分辨率,所述三维点云文件为二进制格式;
[0054]
对所述三维点云文件的点集进行有序化处理;
[0055]
对完整三维点云文件进行分块设计,确定单个分块点云x、y、z方向的坐标范围;
[0056]
按照预先设计好的点云分块方式,逐行读取并分割三维点云文件。
[0057]
作为进一步的方式,所述单个分块点云x、y、z方向的坐标范围确定包括具体步骤如下:
[0058]
读取原始点云的x坐标最小值x
min
、x坐标最大值x
max
、y坐标最小值y
min
、y坐标最大值y
max
,z坐标标最小值z
min
、z坐标最大值z
max

[0059]
计算原始三维点云文件x方向的长度x
size

[0060]
x
size
=x
max-x
min
[0061]
比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
小于预设分块点云x尺寸上限则x
min
,x
max
即为当前分块点云x方向的区间范围;
[0062]
比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
大于预设分块点云x尺寸上限则将点云分成左右两边,分别对左右两侧重复计算当前分块点云x方向的区间范围,直至计算出所有分块点云x方向的区间范围;
[0063]
计算原始三维点云文件y方向的长度y
size

[0064]ysize
=y
max-y
min
[0065]
比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
小于预设分块点云y尺寸上限则y
min
,y
max
即为当前分块点云y方向的区间范围;
[0066]
比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
大于预设分块点云y尺寸上限则将点云分成上下两边,分别对上下两侧重复计算当前分块点云y方向的区间范围,直至计算出所有分块点云y方向的区间范围;
[0067]
计算原始三维点云文件z方向的长度z
size

[0068]zsize
=z
max-z
min
[0069]
比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
小于预设分块点云z尺寸上限则z
min
,z
max
即为当前分块点云z方向的区间范围;
[0070]
比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
大于预设分块点云z尺寸上限则将点云分成上下两边,分别对上下两侧重复计算当前分块点云x方向的区间范围,直至计算出所有分块点云z方向的区间范围;
[0071]
汇总x、y、z方向的区间范围,得到每个分块点云x、y、z方向的坐标范围。
[0072]
与上述基于自动分割与空间索引的三维点云文件加载方法相对应的还有一种三维点云的空间索引库构建方法,所述维点云的空间索引库构建方法包括具体步骤如下:
[0073]
计算点云数据空间各维度顶点,得到标记分块点云位置的空间坐标窗格[x
min
,x
max
,y
min
,y
max
,z
min
,z
max
];
[0074]
基于关系型数据库与各分块点云的空间坐标窗格,构建三维点云空间索引库;
[0075]
获取所需的局部点云空间坐标范围[(x
min
,x
max
),(y
min
,y
max
),(z
min
,z
max
)],
[0076]
得到s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
),
[0077]
所述s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
)是坐标窗格为[x
min
,x
max
,y
min
,y
max
,z
min
,z
max
]的分块点云;
[0078]
将索引出的三维点云文件进行拼接,并封装成通用格式的三维点云文件。
[0079]
作为进一步的方式,所述三维点云空间索引库的构建具体步骤如下:
[0080]
创建原始三维点云文件表,所述原始三维点云文件表的字段包括主键(src_id)、原始三维点云储存路径、空间点总数、空间坐标范围以及坐标分辨率;
[0081]
创建分块三维点云文件表,所述分块三维点云文件表的字段包括:主键(sep_id)、分块三维点云文件储存路径,空间坐标窗格坐标(xmin,xmax,ymin,ymax,zmin,zmax),空间点总数以及原始三维点云文件的主键(src_id);
[0082]
其中,三维点云的空间索引库构建方法中的三维点云索引条件如下:
[0083]
{s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
)|(x
min
,x
max
)∈u
x
,(y
min
,y
max
)∈uy,(z
min
,z
max
)∈uz}
[0084]
其中:
[0085]ux
={(x
min
,x
max
)|x
min
<x
min
<x
max
}∪{(x
min
,x
max
)|x
min
<x
max
<x
max
}∪{(x
min
,x
max
)|x
min
>x
min
,x
max
<x
max
}
[0086]
uy={(y
min
,y
max
)|y
min
<y
min
<y
max
}∪{(y
min
,y
max
)|y
min
<y
max
<y
max
}∪{(y
min
,y
max
)|y
min
>y
min
,y
max
<y
max
}
[0087]
uz={(z
min
,z
max
)|z
min
<z
min
<z
max
}∪{(z
min,zmax
)|z
min
<z
max
<z
max
}∪{(z
min
,z
max
)|z
min
>z
min
,z
max
<z
max
}。
[0088]
本发明所实现的有益效果:
[0089]
1.本发明通过三维点云文件的自动化分割实现超大型三维点云的自动化分块;
[0090]
2.本发明通过空间索引库构建以及动态加载,实现三维点云的高效空间索引,并实现了分块点云的拼接与标准化格式输出,相对于传统点云文件分割加载方式,本发明提高了三维点云文件的处理效率,并降低了处理所需的硬件开销,特别是对超大型三维点云文件特别适用。
附图说明
[0091]
图1为本发明实施例的基于自动分割与空间索引的三维点云文件加载方法步骤图;
[0092]
图2为本发明实施例的三维点云自动化分割方法步骤图;
[0093]
图3为本发明实施例的三维点云的索引与动态加载方法步骤图。
具体实施方式
[0094]
如图1所示,一种基于自动分割与空间索引的三维点云文件加载方法,包括步骤如下:
[0095]
步骤s1:获取待处理的三维点云文件;
[0096]
步骤s2:对所述三维点云文件进行自动点云分割,所述自动点云分割是按照预先设计好的点云分块方式,逐行读取并分割三维点云文件;
[0097]
步骤s3:对所述三维点云文件进行空间索引与动态加载。
[0098]
如图2所示的是一种超大型三维点云自动化分割方法,具体包括以下步骤:
[0099]
s1、首先获取完整的三维点云文件,并储存在本地服务器的硬盘中。
[0100]
s21、根据实际需求确定单个分块点云文件的图幅尺寸上限,以库区房屋为例,图幅尺寸上限可设置为50
×
50m。
[0101]
s22、逐行加载二进制格式点云文件,预设同时加载到内存中的数据上限,处理完一批数据后立即释放内存,采用这种方式遍历整个三维点云,提取三维点云文件的基础数据,包括空间点总数,点云文件空间坐标范围以及坐标分辨率。
[0102]
s23、随后对点云文件进行有序化处理,以便在后续点云切割过程中能够以逐行读取的形式完成分块点云的截断与写入操作。如果点云文件是无序的,则在进行点云切割时,需要同时将大量数据同时加载到内存中,计算开销较大,采用有序点云可以利用逐行加载的方式进行切割。
[0103]
s24、根据之前预设的图幅尺寸上限,对完整三维点云文件进行分块设计,确定单个分块点云x、y、z方向的坐标范围,具体步骤如下:
[0104]
s24-1:读取原始点云的x坐标最小值x
min
、x坐标最大值x
max
、y坐标最小值y
min
、y坐标最大值y
max
,z坐标标最小值z
min
、z坐标最大值z
max

[0105]
s24-2:计算原始三维点云文件x方向的长度x
size

[0106]
x
size
=x
max-x
min
[0107]
s24-3:比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
小于预设分块点云x尺寸上限则x
min
,x
max
即为当前分块点云x方向的区间范围;
[0108]
s24-4:比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
大于预设分块点云x尺寸上限则将点云分成左右两边,分别对左右两侧重复步骤s24-2、s24-3,直至计算出所有分块点云x方向的区间范围;
[0109]
s24-5:计算原始三维点云文件y方向的长度y
size

[0110]ysize
=y
max-y
min
[0111]
s24-6:比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
小于预设分块点云y尺寸上限则y
min
,y
max
即为当前分块点云y方向的区间范围;
[0112]
s24-7:比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
大于预设分块点云y尺寸上限则将点云分成上下两边,分别对上下两侧重复步骤s24-5、s24-6,直至计算出所有分块点云y方向的区间范围;
[0113]
s24-8:计算原始三维点云文件z方向的长度z
size

[0114]zsize
=z
max-z
min
[0115]
s24-9:比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
小于预设分块点云z尺寸上限则z
min
,z
max
即为当前分块点云z方向的区间范围;
[0116]
s24-10:比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
大于预设分块点云z尺寸上限则将点云分成上下两边,分别对上下两侧重复步骤s24-8、s24-9,直至计算出所有分块点云z方向的区间范围;
[0117]
s24-11:汇总s24-3、s24-6、s24-9的结果,得到每个分块点云x、y、z方向的坐标范
围;
[0118]
s25、逐行读取原始三维点云文件,依据各分块点云的坐标范围,逐行读取并分割点云文件。在完成某一分块点云数据的提取后,将点云数据以二进制形式保存到本地硬盘以完成持久化,随后释放内存并开始下一个分块点云文件的处理,直至保存完所有的分块点云文件。
[0119]
如图3所示,本发明实施例提供了超大型三维点云的空间索引库构建方法,索引技术以及局部点云动态加载方式,包括步骤s31~s34。
[0120]
s31、计算点云数据空间各维度顶点,得到标记分块点云位置的空间坐标窗格[xmin,xmax,ymin,ymax,zmin,zmax]。
[0121]
s32、基于关系型数据库与各分块点云的空间坐标窗格,构建三维点云空间索引库。具体构建步骤如下:
[0122]
a)创建原始三维点云文件表,字段包括:主键(src_id)、原始三维点云储存路径、空间点总数、空间坐标范围以及坐标分辨率。
[0123]
b)创建分块三维点云文件表,字段包括:主键(sep_id)、分块三维点云文件储存路径,空间坐标窗格坐标(xmin,xmax,ymin,ymax,zmin,zmax),空间点总数以及原始点云文件的主键(src_id)
[0124]
需要说明的是,采用关系型数据库建立分块点云文件与点云基本信息的关联关系,可以不加载点云数据的情况下完成点云的空间区域索引,降低了超大型三维点云索引的计算机硬件开销。
[0125]
不同于利用分块点云文件名进行索引的方式,通过数据库进行索引可以更加灵活的配置点云文件储存路径,更方便的进行点云文件管理。
[0126]
s33、获取所需的局部点云空间坐标范围[(xmin,xmax),(ymin,ymax),(zmin,zmax)],假设,s(xmin,xmax,ymin,ymax,zmin,zmax)是坐标窗格为[xmin,xmax,ymin,ymax,zmin,zmax]的分块点云,则根据以下条件索引三维点云:
[0127]
{s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
)|(x
min
,x
max
)∈u
x
,(y
min
,y
max
)∈uy,(z
min
,z
max
)∈uz}
[0128]
其中
[0129]ux
={(x
min
,x
max
)|x
min
<x
min
<x
max
}∪{(x
min
,x
max
)|x
min
<x
max
<x
max
}∪{(x
min
,x
max
)|x
min
>x
min
,x
max
<x
max
}
[0130]
uy={(y
min
,y
max
)|y
min
<y
min
<y
max
}∪{(y
min
,y
max
)|y
min
<y
max
<y
max
}∪{(y
min
,y
max
)|y
min
>y
min
,y
max
<y
max
}
[0131]
uz={(z
min
,z
max
)|z
min
<z
min
<z
max
}∪{(z
min
,z
max
)|z
min
<z
max
<z
max
}∪{(z
min
,z
max
)|z
min
>z
min
,z
max
<z
max
}
[0132]
s34、将索引出的点云文件进行拼接,并封装成通用格式的点云文件,后续点云处理的需求,可以将拼接后的点云封装成不同通用格式的点云文件(las、pcd等)。
[0133]
需要说明的是,拼接后的点云文件是仅包含坐标范围内点云信息的局部点云文件,根据给定坐标范围的大小,局部点云文件的范围也动态的发生变化。这种加载方式能够减少无效点云区域的加载,提高超大型三维点云处理的灵活性与效率,降低了点云处理时的内存消耗。
[0134]
如图2所示,与上述基于自动分割与空间索引的三维点云文件加载方法相对应的
是一种三维点云自动分割方法,所述方法中包括步骤如下:
[0135]
获取待处理的三维点云文件;
[0136]
确定单个三维点云文件的图幅尺寸上限;
[0137]
加载三维点云文件,获取三维点云文件的基础数据,所述三维点云文件的基础数据包括空间点总数,三维点云文件空间坐标范围及坐标分辨率,所述三维点云文件为二进制格式;
[0138]
对所述三维点云文件的点集进行有序化处理;
[0139]
对完整三维点云文件进行分块设计,确定单个分块点云x、y、z方向的坐标范围;
[0140]
按照预先设计好的点云分块方式,逐行读取并分割三维点云文件。
[0141]
具体的,所述单个分块点云x、y、z方向的坐标范围确定包括具体步骤如下:
[0142]
读取原始点云的x坐标最小值x
min
、x坐标最大值x
max
、y坐标最小值y
min
、y坐标最大值y
max
,z坐标标最小值z
min
、z坐标最大值z
max

[0143]
计算原始三维点云文件x方向的长度x
size

[0144]
x
size
=x
max-x
min
[0145]
比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
小于预设分块点云x尺寸上限则x
min
,x
max
即为当前分块点云x方向的区间范围;
[0146]
比较x
size
与预设分块点云x尺寸上限的大小,如果x
size
大于预设分块点云x尺寸上限则将点云分成左右两边,分别对左右两侧重复计算当前分块点云x方向的区间范围,直至计算出所有分块点云x方向的区间范围;
[0147]
计算原始三维点云文件y方向的长度y
size

[0148]ysize
=y
max-y
min
[0149]
比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
小于预设分块点云y尺寸上限则y
min
,y
max
即为当前分块点云y方向的区间范围;
[0150]
比较y
size
与预设分块点云y尺寸上限的大小,如果y
size
大于预设分块点云y尺寸上限则将点云分成上下两边,分别对上下两侧重复计算当前分块点云y方向的区间范围,直至计算出所有分块点云y方向的区间范围;
[0151]
计算原始三维点云文件z方向的长度z
size

[0152]zsize
=z
max-z
min
[0153]
比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
小于预设分块点云z尺寸上限则z
min
,z
max
即为当前分块点云z方向的区间范围;
[0154]
比较z
size
与预设分块点云z尺寸上限的大小,如果z
size
大于预设分块点云z尺寸上限则将点云分成上下两边,分别对上下两侧重复计算当前分块点云z方向的区间范围,直至计算出所有分块点云z方向的区间范围;
[0155]
汇总x、y、z方向的区间范围,得到每个分块点云x、y、z方向的坐标范围。
[0156]
如图3,与上述基于自动分割与空间索引的三维点云文件加载方法相对应的还有一种三维点云的空间索引库构建方法,所述维点云的空间索引库构建方法包括具体步骤如下:
[0157]
计算点云数据空间各维度顶点,得到标记分块点云位置的空间坐标窗格[x
min
,x
max
,y
min
,y
max
,z
min
,z
max
];
[0158]
基于关系型数据库与各分块点云的空间坐标窗格,构建三维点云空间索引库;
[0159]
获取所需的局部点云空间坐标范围[(x
min
,x
max
),(y
min
,y
max
),(z
min
,z
max
)],
[0160]
得到s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
),
[0161]
所述s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
)是坐标窗格为[x
min
,x
max
,y
min
,y
max
,z
min
,z
max
]的分块点云;
[0162]
将索引出的三维点云文件进行拼接,并封装成通用格式的三维点云文件。
[0163]
具体的,所述三维点云空间索引库的构建具体步骤如下:
[0164]
创建原始三维点云文件表,所述原始三维点云文件表的字段包括主键(src_id)、原始三维点云储存路径、空间点总数、空间坐标范围以及坐标分辨率;
[0165]
创建分块三维点云文件表,所述分块三维点云文件表的字段包括:主键(sep_id)、分块三维点云文件储存路径,空间坐标窗格坐标(xmin,xmax,ymin,ymax,zmin,zmax),空间点总数以及原始三维点云文件的主键(src_id);
[0166]
其中,三维点云的空间索引库构建方法中的三维点云索引条件如下:
[0167]
{s(x
min
,x
max
,y
min
,y
max
,z
min
,z
max
)|(x
min
,x
max
)∈u
x
,(y
min
,y
max
)∈uy,(z
min
,z
max
)∈uz}
[0168]
其中:
[0169]ux
={(x
min
,x
max
)|x
min
<x
min
<x
max
}∪{(x
min
,x
max
)|x
min
<x
max
<x
max
}∪{(x
min
,x
max
)|x
min
>x
min
,x
max
<x
max
}
[0170]
uy={(y
min
,y
max
)|y
min
<y
min
<y
max
}∪{(y
min
,y
max
)|y
min
<y
max
<y
max
}∪{(y
min
,y
max
)|y
min
>y
min
,y
max
<y
max
}
[0171]
uz={(z
min
,z
max
)|z
min
<z
min
<z
max
}∪{(z
min
,z
max
)|z
min
<z
max
<z
max
}∪{(z
min
,z
max
)|z
min
>z
min
,z
max
<z
max
}。
[0172]
最后需要说明的是,上述实施例阐明的内容应当理解为这些实施例仅用于更清楚地说明本发明,而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本技术所附权利要求所限定的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1