CN105488192A - 点云数据k邻域搜索方法 - Google Patents
点云数据k邻域搜索方法 Download PDFInfo
- Publication number
- CN105488192A CN105488192A CN201510876826.9A CN201510876826A CN105488192A CN 105488192 A CN105488192 A CN 105488192A CN 201510876826 A CN201510876826 A CN 201510876826A CN 105488192 A CN105488192 A CN 105488192A
- Authority
- CN
- China
- Prior art keywords
- point
- distance
- sampling
- threshold value
- less
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Analysis (AREA)
Abstract
本发明提出一种点云数据K邻域搜索方法,将点云数据中每个点从X、Y和Z轴三个方向按升序排列存入数组Px、Py和Pz中;确定候选点P(i,j,k),在Px、Py和Pz中,分别取第i、第j和第k点,在每个点上分别向前向后按照设定步长取样,若取样点的X方向与第i点的距离小于阈值、Y方向与第j点的距离小于阈值、Z方向与第k点的距离小于阈值,则对应将索引存入数组TemX、TemY和TemZ中,继而增加一次步长继续上述步骤直至距离大于阈值;从TemX、TemY和TemZ中搜索点的交集确定搜索点集,从搜索点集中找出与候选点距离最近的K个点组成候选点的K邻域,解决了现有K邻域算法耗时长且占用内存空间的技术问题。
Description
技术领域
本发明属于计算机应用技术领域,具体地说,涉及一种扫描数据三维重建技术中的点云数据K邻域搜索方法。
背景技术
对点云数据进行三维重建,需要建立点云的邻域拓扑关系。K邻域广泛应用于海量数据点的三维重建中,能够在数据点中建立一定的邻域关系以加快搜索速度。
现有的K邻域搜索方法是:首先对点云数据集S={Pi}(i=1,2,...,n)进行分块,按照空间位置邻近的原则设定点Pi的近邻区域,然后在近邻区域中计算距离并排序,最后取距离Pi最近的K个点作为其K近邻。
由于要处理的点云在数量上往往是海量的,因此将其精确分块是非常耗时的,而要分块记录下来也需要复杂的数据结构,占用大量的存储空间。
发明内容
本发明提供了一种点云数据K邻域搜索方法,解决现有K邻域算法耗时长且占用内存空间的技术问题。
为解决上述技术问题,本发明采用以下技术方案予以实现:
提出一种点云数据K邻域搜索方法,包括:将点云数据中每个点分别从X、Y、Z三个方向进行升序排列,存入数组Px、Py和Pz中;取数组Px中的第i点,分别向前向后按照设定步长取样,若取样点的X方向与第i点的距离小于阈值d,则将其索引存入数组TemX中,并增加一次步长取样,直至取样点X方向距离与第i点的距离大于阈值d;取数组Py中的第j点,分别向前向后按照设定步长取样,若取样点的Y方向与第j点的距离小于阈值d,则将其索引存入数组TemY中,并增加一次步长取样,直至取样点Y方向距离与第j点的距离大于阈值d;取数组Pz中的第k点,分别向前向后按照设定步长取样,若取样点的Z方向与第k点的距离小于阈值d,则将其索引存入数组TemZ中,并增加一次步长取样,直至取样点Z方向距离与第k点的距离大于阈值d;基于TemX、TemY和TemZ中搜索点的交集确定搜索点集;计算搜索点与候选点之间的欧式空间距离,取距离最近的K个点组成所述候选点的K邻域;其中,数组Px中的第i点、数组Py中的第j点和数组Pz中的第k点对应为候选点P(i,j,k)。
进一步的,所述阈值d的取值为点云平均间距的4至5倍。
进一步的,在将点云数据中每个点分别从x、y、z三个方向进行升序排列之前,所述方法还包括:保存点云数据的索引值;和初始化点云数据的标识为初始值;则所述方法还包括:在确定X方向与第i点的距离小于阈值d的取样点后,将所述X方向与第i点的距离小于阈值d的取样点的标识值加1;在确定Y方向第j点的距离小于阈值d的取样点后,将所述Y方向与第j点的距离小于阈值d的取样点的标识值加1;在确定Z方向第k点的距离小于阈值d的取样点后,将所述Z方向与第k点的距离小于阈值d的取样点的标识值加1。
进一步的,所述初始值为0,则基于TemX、TemY和TemZ中索引的交集,确定搜索点,具体为:将标识值增大3的点确定为搜索点。
进一步的,在数组Px、数组Py和数组Pz中取样时,所述方法还包括:若第一次取样的点的个数小于设定步长,则将所有取样点的标识加1。
与现有技术相比,本发明的优点和技术效果是:
本发明实施例提出的点云数据K邻域搜索方法中,使用单坐标轴结合距离阈值d进行分步搜索的方法,在整体点云中限定一个候选点为中心,以边长为2倍的阈值d的立方体为限,在该立方体内沿X、Y、Z三个方向以设定步长依次向正负两个方向分段进行搜索,分别找到X、Y、Z三个方向所有距离候选点单坐标距离小于阈值d的点,在这些点中求X、Y、Z三个方向搜索结果的交集,确定搜索点,最后在这个搜索点交集中找出距离候选点的欧式空间距离最小的K个点,构成候选点的K邻域。该方法使用单坐标结合阈值进行分步搜索,方法简单直观,易于实现,能够减少参与计算欧式空间距离的点数,从而减少了计算量,提高了搜索速度,也节省了内存空间。
结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1为本发明实施例提出的点云数据K邻域搜索方法的流程图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步详细地说明。
如图1所示,为本发明实施例提出的点云数据K邻域搜索方法的流程图,包括以下步骤:
步骤S11:将点云数据中每个点分别从X、Y、Z三个方向进行升序排列,存入数组Px、Py和Pz中。
读取点云数据,将每个点的x、y、z坐标值分别存入数组Px、Py和Pz中,同时保存点云数据的索引值,初始化点云数据的标识为初始值,例如,初始化点云数据的标识flag为0。
然后按照数组Px、Py和Pz中元素的坐标值对数组Px、Py和Pz中元素进行升序排列。
步骤S12:取数组Px中的第i点,分别向前向后按照设定步长取样,若取样点的X方向与第i点的距离小于阈值d,则将其索引存入数组TemX中,并增加一次步长取样,直至取样点X方向距离与第i点的距离大于阈值d。
在确定X方向与第i点的距离小于阈值d的取样点后,将这些取样点的标识值flag加1。若第一次取样的点的个数小于设定步长,则将所有取样点的标识加1。
步骤S13:取数组Py中的第j点,分别向前向后按照设定步长取样,若取样点的Y方向与第j点的距离小于阈值d,则将其索引存入数组TemY中,并增加一次步长取样,直至取样点Y方向距离与第j点的距离大于阈值d。
在确定Y方向第j点的距离小于阈值d的取样点后,将这些取样点的标识值flag加1。若第一次取样的点的个数小于设定步长,则将所有取样点的标识加1。
步骤S14:取数组Pz中的第k点,分别向前向后按照设定步长取样,若取样点的Z方向与第k点的距离小于阈值d,则将其索引存入数组TemZ中,并增加一次步长取样,直至取样点Z方向距离与第k点的距离大于阈值d。
在确定Z方向第k点的距离小于阈值d的取样点后,将这些取样点的标识值flag加1。若第一次取样的点的个数小于设定步长,则将所有取样点的标识加1。
这其中,数组Px中的第i点、数组Py中的第j点和数组Pz中的第k点对应为从点云中选取出的候选点P(i,j,k)。可以在数组Px中的第i点选取确定后,通过Py和Pz中查找i对应的索引确定j和k。
设定步长为设定的一次取样的点数;阈值d与设定步长均可调。
步骤S15:基于TemX、TemY和TemZ中搜索点的交集确定搜索点集。
具体的,数组TemX、TemY和TemZ中都存在的点,其对应的标识值flag增大3次,则可将标识值增大3的点确定为搜索点。
步骤S16:计算搜索点与候选点之间的欧式空间距离,取距离最近的K个点组成所述候选点的K邻域。
完成步骤S11至步骤S16后,将i值加1切换到下一个候选点,重复步骤12至步骤S16,直至i大于点云数量总数。
上述阈值d的取值优选为为点云平均间距的4至5倍。取值过大,会导致计算量太大,而取值过小,会导致无法取得足够的近邻点。
上述本发明实施例提出的点云数据K邻域搜索方法,使用单坐标轴结合阈值d进行分步搜索的方法,简单直观,易于实现,减少了参与计算欧式空间距离的点数,进而提高了搜索速度,也节省了内存空间的占用。该方法根据点云精度和数量确定阈值d来约束候选点前后的搜索范围,解决了对不同精度和规模的点云数据的适用性问题。
应该指出的是,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
Claims (5)
1.点云数据K邻域搜索方法,其特征在于,包括:
将点云数据中每个点分别从X、Y、Z三个方向进行升序排列,存入数组Px、Py和Pz中;
取数组Px中的第i点,分别向前向后按照设定步长取样,若取样点的X方向与第i点的距离小于阈值d,则将其索引存入数组TemX中,并增加一次步长取样,直至取样点X方向距离与第i点的距离大于阈值d;
取数组Py中的第j点,分别向前向后按照设定步长取样,若取样点的Y方向与第j点的距离小于阈值d,则将其索引存入数组TemY中,并增加一次步长取样,直至取样点Y方向距离与第j点的距离大于阈值d;
取数组Pz中的第k点,分别向前向后按照设定步长取样,若取样点的Z方向与第k点的距离小于阈值d,则将其索引存入数组TemZ中,并增加一次步长取样,直至取样点Z方向距离与第k点的距离大于阈值d;
基于TemX、TemY和TemZ中搜索点的交集确定搜索点集;
计算搜索点与候选点之间的欧式空间距离,取距离最近的K个点组成所述候选点的K邻域;
其中,数组Px中的第i点、数组Py中的第j点和数组Pz中的第k点对应为候选点P(i,j,k)。
2.根据权利要求1所述的点云数据K邻域搜索方法,其特征在于,所述阈值d的取值为点云平均间距的4至5倍。
3.根据权利要求1所述的点云数据K邻域搜索方法,其特征在于,在将点云数据中每个点分别从x、y、z三个方向进行升序排列之前,所述方法还包括:
保存点云数据的索引值;和
初始化点云数据的标识为初始值;则所述方法还包括:
在确定X方向与第i点的距离小于阈值d的取样点后,将所述X方向与第i点的距离小于阈值d的取样点的标识值加1;在确定Y方向第j点的距离小于阈值d的取样点后,将所述Y方向与第j点的距离小于阈值d的取样点的标识值加1;在确定Z方向第k点的距离小于阈值d的取样点后,将所述Z方向与第k点的距离小于阈值d的取样点的标识值加1。
4.根据权利要求3所述的点云数据K邻域搜索方法,其特征在于,所述初始值为0,则基于TemX、TemY和TemZ中搜索点的交集确定搜索点,具体为:
将标识值增大3的点确定为搜索点。
5.根据权利要求3所述的点云数据K邻域搜索方法,其特征在于,在数组Px、数组Py和数组Pz中取样时,所述方法还包括:
若第一次取样的点的个数小于设定步长,则将所有取样点的标识加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510876826.9A CN105488192A (zh) | 2015-12-03 | 2015-12-03 | 点云数据k邻域搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510876826.9A CN105488192A (zh) | 2015-12-03 | 2015-12-03 | 点云数据k邻域搜索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105488192A true CN105488192A (zh) | 2016-04-13 |
Family
ID=55675166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510876826.9A Pending CN105488192A (zh) | 2015-12-03 | 2015-12-03 | 点云数据k邻域搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105488192A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112991521A (zh) * | 2021-03-26 | 2021-06-18 | 清华大学 | 一种基于熵能量的点云各向异性邻域搜索方法 |
CN113932727A (zh) * | 2021-11-29 | 2022-01-14 | 中国电建集团成都勘测设计研究院有限公司 | 基于扫描全站仪与gnss的边坡变形监测方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092897A (zh) * | 2011-11-08 | 2013-05-08 | 南京理工大学常熟研究院有限公司 | 一种用于点云数据处理的快速k近邻搜索方法 |
CN103744886A (zh) * | 2013-12-23 | 2014-04-23 | 西南科技大学 | 一种直接提取的k个最近邻点搜索方法 |
CN105096379A (zh) * | 2014-05-23 | 2015-11-25 | 南京理工大学 | 一种基于k-邻域的三角网格曲面重建方法 |
-
2015
- 2015-12-03 CN CN201510876826.9A patent/CN105488192A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092897A (zh) * | 2011-11-08 | 2013-05-08 | 南京理工大学常熟研究院有限公司 | 一种用于点云数据处理的快速k近邻搜索方法 |
CN103744886A (zh) * | 2013-12-23 | 2014-04-23 | 西南科技大学 | 一种直接提取的k个最近邻点搜索方法 |
CN105096379A (zh) * | 2014-05-23 | 2015-11-25 | 南京理工大学 | 一种基于k-邻域的三角网格曲面重建方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112991521A (zh) * | 2021-03-26 | 2021-06-18 | 清华大学 | 一种基于熵能量的点云各向异性邻域搜索方法 |
CN113932727A (zh) * | 2021-11-29 | 2022-01-14 | 中国电建集团成都勘测设计研究院有限公司 | 基于扫描全站仪与gnss的边坡变形监测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107621263B (zh) | 一种基于道路磁场特征的地磁定位方法 | |
JP2010033561A (ja) | マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置 | |
CN103116536B (zh) | 存储装置的容量检测方法 | |
KR101370989B1 (ko) | 3차원 스캔 데이터를 이용한 시공 오차 분석 방법 | |
CN104346384A (zh) | 一种小文件处理方法及装置 | |
CN107122126A (zh) | 数据的迁移方法、装置和系统 | |
CN104990501A (zh) | 一种三维激光扫描装置的系统参数校准方法 | |
CN103617163A (zh) | 基于聚类分析的目标快速关联方法 | |
CN103336828B (zh) | 实时数据库读取及写入方法 | |
CN105488192A (zh) | 点云数据k邻域搜索方法 | |
CN113592961A (zh) | 一种基于精度控制场和点云特征相似性的点云拼接方法 | |
CN103092897A (zh) | 一种用于点云数据处理的快速k近邻搜索方法 | |
CN109634960B (zh) | 键值数据存储方法、装置、设备以及存储介质 | |
CN104502967A (zh) | 快速获取地震勘探观测系统面元信息的方法及装置 | |
CN108595792B (zh) | 一种飞机油箱燃油测量传感器布局优化方法 | |
CN110879063B (zh) | 基于三角形匹配的快速星图识别方法 | |
CN112130166A (zh) | 基于反光板网络的agv定位方法及装置 | |
CN103335626B (zh) | 三坐标测量机测量平面度的样本点优化选取方法 | |
CN115983007A (zh) | 一种重合轨迹提取方法、装置、电子设备及存储介质 | |
CN110969900A (zh) | 一种基于航线管理的全航线水平偏置算法 | |
CN111858785A (zh) | 地图离散型要素的匹配方法、装置、系统及存储介质 | |
CN108286957A (zh) | 一种快稳简的平面度误差评定方法 | |
CN102166747A (zh) | 利用机械手臂测试物体的系统及方法 | |
CN110619134B (zh) | 解决路网数据飞点、点密度问题一体化检测及修复方法 | |
JP2014016831A (ja) | 更新装置、更新方法、および更新プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20160413 |