CN103092897A - 一种用于点云数据处理的快速k近邻搜索方法 - Google Patents
一种用于点云数据处理的快速k近邻搜索方法 Download PDFInfo
- Publication number
- CN103092897A CN103092897A CN2011103540050A CN201110354005A CN103092897A CN 103092897 A CN103092897 A CN 103092897A CN 2011103540050 A CN2011103540050 A CN 2011103540050A CN 201110354005 A CN201110354005 A CN 201110354005A CN 103092897 A CN103092897 A CN 103092897A
- Authority
- CN
- China
- Prior art keywords
- point
- array
- distance
- cloud
- neighbour
- 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
Images
Landscapes
- Length Measuring Devices With Unspecified Measuring Means (AREA)
Abstract
本发明公开一种用于点云数据处理的快速K近邻搜索方法,由三维扫描获得点云数据时设定的角分辨率精度确定点云主体部分点的最小间距dmin,取3~4倍dmin值作为中心点前后的搜索距离参数DISC。将角分辨率参数和K近邻搜索挂钩,方便根据不同规模和精度的点云数据调节参数DISC,从而提高方法的适应性。
Description
技术领域
本发明涉及模式识别和图像处理领域,尤其是对三维扫描数据集进行近邻搜索的技术,具体地说是一种用于点云数据处理的快速K近邻搜索方法。
背景技术
三维扫描能够直接得到物体表面的采样点信息,即点云数据,利用点云数据即可重构出任意曲面。这种方法不受曲面复杂度影响,只要表面采样密度足够,就可以得到很高的重构精度。因此,三维扫描及相关数据处理技术近些年发展十分迅速。
在硬件设备方面,已有较多的三维扫描设备广泛应用于机械加工、数字城市等领域。对于精度最高的台式扫描设备,其扫描精度可达十几微米,得到的点云密度超过人眼分辨率,能够同时使用三色激光扫描,直接得到真彩色点云数据。这种点云模型已经不需要进行网格化,但是模型数据量非常庞大。
在软件处理方面,各类CAD软件都陆续推出3D功能,3D地理信息系统是研究热点之一。美国最先进的数字城市平台已经成功建立了数字费城,并将推出适用于个人PC、PDA、车载、手机无线通信等不同平台的产品。点云数据处理技术是这些软件实现中的核心算法,其关键技术主要包括点云网格化、多视点云拼接、点云模型简化及多分辨率表示等。
在点云数据处理中,点云网格化和点云简化等都需要K近邻信息。由于K近邻反映散乱点云的重要局部拓扑关系,并且在表面重构前就要做K近邻搜索,因此,K近邻搜索的效率和准确性直接关系到点云建模的效率和准确性,是点云重构中的关键技术。
如图1所示,为某个点的6近邻点分布情况。近邻方法是统计模式识别中的常用方法,多用于分类决策中,即把原始数据最能反映分类本质的特征提取出来之后,在特征空间中用统计方法把被识别对象归为某一类别。
最常见的近邻分类法是最近邻分类法,直观来说,对于未知样本x,只要比较x与已知类别中所有样本的欧氏距离,并决策x与离它最近的样本同类。
K近邻分类法是最近邻分类法的改进,取未知样本x的K个近邻,看这K个近邻中多数属于哪一类,就把x归为哪一类。K近邻分类法的主要缺点是计算量大,所以模式识别中发明了很多方法来克服这个缺点,如近邻法的快速搜索法、剪辑近邻法和压缩近邻法等。这些方法有很多值得借鉴之处,但它们并不是针对点云数据提出的,在面对庞大的点云数据时,其运行效率较低。
通过三维扫描获得的点云数据量是极其庞大的,动辄几十万上百万个点。如果直接计算一个点到其它所有点的距离,再按照距离排序取前K个,在计算复杂度上显然是无法接受的。必须先对点云数据进行分块,按照邻近的原则设定一个点的近邻区域,在这个区域中计算距离并排序,得到其K近邻点。现有K近邻方法大多采用这个思路,但由于点云数据量十分庞大,将其精确地分块是一件很耗时间的工作,而要将这样的分块记录下来也需要使用很复杂的数据结构,并占用大量的存储空间。
从直观角度看,某个点的近邻的X、Y、Z坐标都应该和它比较接近。假设某点的第K个近邻点到它的距离为d,则前K个近邻点的每一个坐标和中心点相应坐标的差不能超过d。即近邻点的每一个坐标都处在中心点相应坐标的邻域内,当点分别按照X、Y、Z坐标排序后,用一个适当的距离阈值分别去取序列中位于中心点坐标前后的点,得到一个点的子集,这个子集必然包括了中心点的K近邻。只要在X、Y、Z的坐标序列中取某点附近的一定数量的点就可以保证该点的K近邻点都被取到了。然后只需把这些点到中心点的距离排序,取前K个即可。
如图2所示,相当于在整体点云中搜索到以中心点为中心,边长2×DISC的立方体内的点,然后在这个小范围内计算点到中心点的距离,取距离最近的K个点为K近邻。
参考文献提出一种基于单坐标轴排序的K近邻搜索方法,该方法的可调参数是一个坐标方向上某个中心点前后搜索点的个数M。M取值太大则计算量过大,M取值太小又不能保证取到全部近邻。由于不同的点云在规模和精度上差距比较大,因此该参数不太容易确定。另外该方法在三个坐标轴单方向搜索完成后,剩余需要计算空间距离的点数量仍然比较多。
发明内容
针对上述问题,本发明提出一种用于点云数据处理的快速K近邻搜索方法。由三维扫描获得点云数据时设定的角分辨率精度确定点云主体部分点的最小间距dmin,即取3-4倍dmin值作为中心点前后的搜索距离参数DISC。将角分辨率参数和K近邻搜索挂钩,方便根据不同规模和精度的点云数据调节参数DISC,从而提高方法的适应性。将可调参数与角分辨率精度关联,从而更加容易确定可调参数。
为了实现上述目的,本发明的技术方案思路、存储数据结构、方法实施步骤如下:
1.技术方案思路
改进搜索策略,原方法每次在一个坐标方向上某个中心点前后各取M个点,三个坐标方向都取完后删除重复的点,再计算这些点到中心点的距离。本方法第一次在一个坐标方向上依据参数DISC,即可保证取到全部可能的近邻,其它两个坐标方向搜索后,只保留重复的点,减少了参与计算三维距离的点的数量,从而提高计算效率。
2.存储数据结构
3.方法实施步骤
步骤1:读入点云数据,各点标记初始化为FALSE。将点x,y,z三个坐标值分别存入三个数组PointX,PointY,PointZ,并将点的索引值也相应存入三个数ItemX,ItemY,ItemZ。
步骤2:将PointX中的坐标按从小到大快速排序。排序中调换坐标值的同时调换ItemX中索引的顺序。同理,对y和z坐标的值数组和索引数组进行排序。
步骤3:置i=0。
步骤4:取ItemX[i]数组中的一个点的索引作为中心点,设定距离参数DISC,从i点开始分别向前向后每隔NUM个点计算一次x方向到i点的距离,小于DISC的点存入一个临时数组TemItemlist。如果某个搜索方向点的个数不足NUM个,则有多少点都全部存入临时数组TemItemlist。
步骤5:在ItemY数组中寻找步骤4中的ItemX[i]里的索引值,然后在PointY数组中从这点的前后以阈值DISC,间隔NUM寻找中心点y方向的邻近点,并将其原始点数据结构中的y_neighborhood设为TRUE。
步骤6:查询TemItemlist中的各项的y_neighborhood,如果为FALSE,则将该项值设为-1,并从数组中删除。
步骤7:将步骤5中设为TRUE的各点的y_neighborhood改为FALSE。
步骤8:和在y方向同理,根据PointZ和ItemZ寻找i点在z方向的近邻。
步骤9:TemItemlist中不为-1的项即中心点的K近邻点的序号。计算这些点到中心点的距离,并从小到大排序,取前K个为中心点近邻,相关序号和距离存入中心点的结构体。
步骤10:i++。如果i<总点数,转步骤4步,否则结束。
本发明在VC++6.0平台下结合OpenGL实现OBJ模型读取、方法实现和结果的三维显示,方法实施流程图见图3,相关参数说明如下:
距离参数DISC与扫描时的参数有关,其取值可根据扫描时的角分辨率和扫描距离估计。一般DISC取点云中重要数据部分点距的3-4倍即可。另外在Riscan Pro中有计算两点之间距离的功能,可以得到比较精确的相邻两点之间的距离。
参数NUM对于算法时间有一定影响,经过试验可取10-30,再增大对运算速度影响不大。
对于点云的边界点,与其关系密切的近邻点数有可能小于K。
附图说明
图1为6近邻示意图。
图2为单坐标轴搜索原理图。
图3为本发明方法流程图。
图4为公牛雕塑黎曼图(K=3)。
图5为公牛雕塑黎曼图(K=7)。
图6为公牛雕塑黎曼图局部放大(K=3)。
图7为公牛雕塑黎曼图局部放大(K=7)。
具体实施方式
为了测试本发明的效果,下面将描述本发明的具体实施例。
实验例一:测试方法效果
将所有的中心点和近邻连接起来形成的图叫黎曼图。公牛雕塑使用在I-SiTE Studio中拼接融合后的点云数据,共25408个点,分别取3近邻和7近邻,DISC=0.05m。
假设扫描对象为一个平面,并且扫描点云非常均匀,在这种情况下与一个中心点的局部拓扑结构关系比较密切的近邻点有8个。实际上扫描对象表面为不规则曲面,同时由于误差,点云不是绝对均匀的,因此与中心点的局部拓扑结构关系比较密切的近邻会在8个左右浮动。
如图4~7所示,公牛雕塑的黎曼图连线比较规则,杂乱连线很少,说明没有出现近邻远离中心点的情况,近邻关系保持得比较好,说明距离阈值DISC选取是合适的,证明算法得到的近邻是正确的。
上述实施例不以任何方式限制本发明,凡是采用等同替换或等效变换的方式获得的技术方案均落在本发明的保护范围内。
实验例二:测试时间性能
使用公牛雕塑数据,K=7,DISC=0.05m。对比算法选择了文献方法和直接计算各点空间距离然后排序取前K个的方法。点的数量和各算法执行时间如表1。其中文献算法运行时间栏的时间是根据点数选择不同参数得到的,算法实现过程中发现参数M比较难以确定,只能根据输出结果进行调整,其中1000点M取值32,100000点M取值640,变化很大。本发明方法参数DISC则由扫描获得点云数据时的角分辨率精度有关,容易确定。
表1算法运行时间表
Claims (3)
1.一种用于点云数据处理的快速K近邻搜索方法,其特征在于:由三维扫描获得点云数据时设定的角分辨率精度确定点云主体部分点的最小间距dmin,取3~4倍dmin值作为中心点前后的搜索距离参数DISC。
2.根据权利要求1所述的快速K近邻搜索方法,其特征在于存储数据结构包括:点的索引、点的坐标、判断是否是中心点某方向的近邻的标记、某点的近邻点序号数组、某点的近邻到该点的三维距离、点云简化时使用的判断是否删除的标记。
3.根据权利要求1所述的快速K近邻搜索方法,其特征在于包含如下步骤:
步骤1:读入点云数据,各点标记初始化为FALSE;将点x,y,z三个坐标值分别存入三个数组PointX,PointY,PointZ,并将点的索引值也相应存入三个数ItemX,ItemY,ItemZ;
步骤2:将PointX中的坐标按从小到大快速排序;排序中调换坐标值的同时调换ItemX中索引的顺序;同理,对y和z坐标的值数组和索引数组进行排序;
步骤3:置i=0;
步骤4:取ItemX[i]数组中的一个点的索引作为中心点,设定距离参数DISC,从i点开始分别向前向后每隔NUM个点计算一次x方向到i点的距离,小于DISC的点存入一个临时数组TemItemlist;如果某个搜索方向点的个数不足NUM个,则有多少点都全部存入临时数组TemItemlist;
步骤5:在ItemY数组中寻找步骤4中的ItemX[i]里的索引值,然后在PointY数组中从这点的前后以阈值DISC,间隔NUM寻找中心点y方向的邻近点,并将其原始点数据结构中的y_neighborhood设为TRUE;
步骤6:查询TemItemlist中的各项的y_neighborhood,如果为FALSE,则将该项值设为-1,并从数组中删除;
步骤7:将步骤5中设为TRUE的各点的y_neighborhood改为FALSE;
步骤8:和在y方向同理,根据PointZ和ItemZ寻找i点在z方向的近邻;
步骤9:TemItemlist中不为-1的项即中心点的K近邻点的序号;计算这些点到中心点的距离,并从小到大排序,取前K个为中心点近邻,相关序号和距离存入中心点的结构体;
步骤10:i++;如果i<总点数,转步骤4步,否则结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103540050A CN103092897A (zh) | 2011-11-08 | 2011-11-08 | 一种用于点云数据处理的快速k近邻搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103540050A CN103092897A (zh) | 2011-11-08 | 2011-11-08 | 一种用于点云数据处理的快速k近邻搜索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103092897A true CN103092897A (zh) | 2013-05-08 |
Family
ID=48205474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103540050A Pending CN103092897A (zh) | 2011-11-08 | 2011-11-08 | 一种用于点云数据处理的快速k近邻搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103092897A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744886A (zh) * | 2013-12-23 | 2014-04-23 | 西南科技大学 | 一种直接提取的k个最近邻点搜索方法 |
CN104050639A (zh) * | 2014-06-16 | 2014-09-17 | 西安电子科技大学 | 一种基于双边滤波器的多视角密集点云数据融合方法 |
CN105261060A (zh) * | 2015-07-23 | 2016-01-20 | 东华大学 | 基于点云压缩和惯性导航的移动场景实时三维重构方法 |
CN105488192A (zh) * | 2015-12-03 | 2016-04-13 | 青岛尤尼科技有限公司 | 点云数据k邻域搜索方法 |
CN109241059A (zh) * | 2018-08-30 | 2019-01-18 | 百度在线网络技术(北京)有限公司 | 一种点云数据的构造方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030058242A1 (en) * | 2001-09-07 | 2003-03-27 | Redlich Arthur Norman | Method and system for 3-D content creation |
CN1928921A (zh) * | 2006-09-22 | 2007-03-14 | 东南大学 | 三维扫描系统中特征点云带的自动搜索方法 |
-
2011
- 2011-11-08 CN CN2011103540050A patent/CN103092897A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030058242A1 (en) * | 2001-09-07 | 2003-03-27 | Redlich Arthur Norman | Method and system for 3-D content creation |
CN1928921A (zh) * | 2006-09-22 | 2007-03-14 | 东南大学 | 三维扫描系统中特征点云带的自动搜索方法 |
Non-Patent Citations (1)
Title |
---|
袁夏: "三维激光扫描点云数据处理及应用技术", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 1, 15 January 2007 (2007-01-15), pages 32 - 49 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744886A (zh) * | 2013-12-23 | 2014-04-23 | 西南科技大学 | 一种直接提取的k个最近邻点搜索方法 |
CN104050639A (zh) * | 2014-06-16 | 2014-09-17 | 西安电子科技大学 | 一种基于双边滤波器的多视角密集点云数据融合方法 |
CN104050639B (zh) * | 2014-06-16 | 2017-01-11 | 西安电子科技大学 | 一种基于双边滤波器的多视角密集点云数据融合方法 |
CN105261060A (zh) * | 2015-07-23 | 2016-01-20 | 东华大学 | 基于点云压缩和惯性导航的移动场景实时三维重构方法 |
CN105488192A (zh) * | 2015-12-03 | 2016-04-13 | 青岛尤尼科技有限公司 | 点云数据k邻域搜索方法 |
CN109241059A (zh) * | 2018-08-30 | 2019-01-18 | 百度在线网络技术(北京)有限公司 | 一种点云数据的构造方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038717B (zh) | 一种基于立体栅格自动分析3d点云配准误差的方法 | |
CN106600622B (zh) | 一种基于超体素的点云数据分割方法 | |
CN112526513B (zh) | 基于聚类算法的毫米波雷达环境地图构建方法及装置 | |
CN101702200B (zh) | 一种机载激光雷达点云数据的自动分类方法 | |
CN106373118B (zh) | 可有效保留边界和局部特征的复杂曲面零件点云精简方法 | |
Zhou et al. | A fast and accurate segmentation method for ordered LiDAR point cloud of large-scale scenes | |
CN112418245B (zh) | 基于城市环境物理模型的电磁发射点定位方法 | |
CN106680798B (zh) | 一种机载lidar航带重叠区冗余辨识及消除方法 | |
CN107392875A (zh) | 一种基于k近邻域划分的点云数据去噪方法 | |
CN102890828B (zh) | 基于法向夹角的点云数据精简方法 | |
CN103092897A (zh) | 一种用于点云数据处理的快速k近邻搜索方法 | |
CN114332348B (zh) | 一种融合激光雷达与图像数据的轨道三维重建方法 | |
CN105787081B (zh) | 一种基于辐射源空间位置的辐射平台关联方法 | |
Bastani et al. | Machine-assisted map editing | |
CN103136535A (zh) | 一种用于点云简化的k近邻搜索方法 | |
CN103744886A (zh) | 一种直接提取的k个最近邻点搜索方法 | |
CN112669458A (zh) | 基于激光点云进行地面滤波的方法、设备和程序载体 | |
CN117315146B (zh) | 基于跨尺度多源数据的三维模型的重建方法及存储方法 | |
CN113835078A (zh) | 基于局部三维栅格的信号级联合检测方法及装置 | |
Shen et al. | Object-based classification of airborne light detection and ranging point clouds in human settlements | |
CN110488259B (zh) | 一种基于gdbscan的雷达目标分类方法及装置 | |
CN113345072A (zh) | 一种多视角遥感地形影像点云重建方法及系统 | |
Lin et al. | Noise point detection from airborne lidar point cloud based on spatial hierarchical directional relationship | |
CN106803266A (zh) | 一种船体复杂外板点云肋骨线提取方法及装置 | |
CN112130166A (zh) | 基于反光板网络的agv定位方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130508 |