WO2022017038A1 - 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 - Google Patents
用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 Download PDFInfo
- Publication number
- WO2022017038A1 WO2022017038A1 PCT/CN2021/099114 CN2021099114W WO2022017038A1 WO 2022017038 A1 WO2022017038 A1 WO 2022017038A1 CN 2021099114 W CN2021099114 W CN 2021099114W WO 2022017038 A1 WO2022017038 A1 WO 2022017038A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- point cloud
- voxel
- search
- voxels
- cloud data
- Prior art date
Links
- 238000010845 search algorithm Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 16
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/22—Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition
- G06V10/23—Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition based on positionally close patterns or neighbourhood relationships
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
- G06V10/267—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/761—Proximity, similarity or dissimilarity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Definitions
- the invention relates to a K-nearest neighbor search algorithm for efficient FPGA realization of three-dimensional laser radar point cloud in unmanned driving.
- the K-nearest neighbor search algorithm is to search for K data closest to some given data in a given data set.
- the distance can be represented by Euclidean distance or Manhattan distance.
- the general K-nearest neighbor search algorithm has two processes, establishing the search data structure and searching for the K-nearest neighbor.
- K-nearest neighbor search is widely used in algorithms such as computer vision, artificial intelligence, and simultaneous mapping and localization.
- massive point cloud data is unevenly distributed in the vast space around the vehicle body, which makes it difficult for the current state-of-the-art K-nearest neighbor search algorithm to effectively process.
- the strict constraints on the use of batteries by smart vehicles also put forward energy consumption requirements for the realization of the K-nearest neighbor search algorithm.
- KD-Tree reference [1]: D.Wehr and R.Radkowski, "Parallel kd-tree construction on the gpu with an adaptive split and sort strategy," International Journal of Parallel Programming, vol.46, pp.1139- 1156, 2018.
- KD-tree GBDS (Grid Based Data Structure)
- PJSLeite JMXNTeixeira
- TSMCde Farias B. Reis, V. Teichrieb, and J.
- Kelner "Nearest neighbor searches on the gpu, "International Journal of Parallel Programming, vol.40, pp.313-330, 2011) can quickly establish a search structure, but it is inferior to KD-tree in search, and its efficiency is limited by the point cloud. distributed.
- Another drawback of GBDS is that it searches for enough points in an expanding region, which leads to a large number of redundant searches.
- the purpose of the present invention is to further improve the energy efficiency ratio of the K-nearest neighbor search algorithm.
- the technical solution of the present invention is to provide a high-efficiency K-nearest neighbor search algorithm for unmanned three-dimensional lidar point cloud, which is characterized in that it includes the following steps:
- Step 1 Calculate the axis-aligned bounding box of an unordered point cloud dataset
- Step 2 Divide the axisymmetric bounding box obtained in the previous step into S three-dimensional space volumes according to the desired radius R set by the user, each three-dimensional space volume is defined as a voxel, and the edge length of each voxel is R re , R re ⁇ R;
- Step 3 traverse each point cloud data in the disordered point cloud data set in step 1, and calculate the specific voxel to which each point cloud data belongs and the number of point cloud data contained in each voxel;
- Step 5 Divide the unordered point cloud dataset into a series of voxels and sub-voxels through steps 1 to 4, and this series of voxels and sub-voxels constitute the DSVS data structure;
- Step 6 Based on the DSVS data structure, use the K-nearest neighbor search algorithm to search for a certain search point, and obtain the K-nearest neighbor point cloud data of the current search point within the desired radius R, including the following steps:
- Step 601 Calculate the voxel to which the search point belongs, and define the voxel as the current voxel;
- Step 602 Calculate the distance between the search point and each voxel and/or sub-voxel adjacent to the current voxel, and search for each adjacent voxel and/or sub-voxel and the current voxel with a distance within a certain range. area;
- Step 603 traverse each point cloud data in the search domain, and obtain K point cloud data closest to the search point in each point cloud data by calculation.
- step 2 dividing the three-dimensional space volume also considers memory constraints, which means that if the number of voxels obtained according to the expected radius R is greater than the maximum number M allowed by the memory, then When the axisymmetric bounding box is divided, the edge length R re of each voxel is greater than the expected radius R, so that the number of voxels obtained by division is not greater than M; if the number of voxels obtained according to the expected radius R If it is not greater than the maximum number M allowed by the memory, when the axisymmetric bounding box is divided, the edge length R re of each of the voxels is equal to the desired radius R.
- the DSVS data structure further includes configuration information
- the configuration information includes the total number of voxels, which voxels are divided into sub-voxels, the number of corresponding sub-voxels, each voxel and which point cloud data are included in the sub-voxels and the edge length R re of the voxels.
- step 5 the following steps are also included:
- search set composed of search points, and sort the unordered point cloud data set and the search set based on the DSVS data structure and configuration information, so that the physical addresses of the search points located in the same voxel or sub-voxel in the search set are the same. Adjacent and continuous, so that the search points can be continuously transmitted into the FPGA, and multiple data in the same voxel or sub-voxel can be read simultaneously on the FPGA.
- the FPGA is used to search for the K nearest point cloud data in parallel in the form of intra-function pipeline and inter-function data flow.
- Another technical solution of the present invention is to provide an application of the above-mentioned K-nearest neighbor search algorithm in the point cloud map matching process in unmanned driving.
- the present invention has the following innovations:
- each voxel or sub-voxel contains an appropriate number of points to reduce redundant search.
- each subspace of the new data structure contains a more balanced number of points.
- the present invention only needs to divide the point cloud space a limited number of times, which greatly reduces the time for building the data structure.
- the present invention adopts a new K-nearest neighbor search algorithm based on DSVS and FPGA, which mainly has the following characteristics: 1. Only search the nearest neighbor in the desired area adjacent to the search point, which can reduce the search of redundant points . 2. Optimized data transmission and access strategy to make it more in line with the characteristics of FPGA.
- FIG. 1 is a flow chart of the present invention.
- the present invention provides an efficient K-nearest neighbor search algorithm, which is implemented on FPGA using high-level synthesis tools.
- the present invention includes a novel data structure (DSVS, quadratic division voxel structure) and an efficient search method based on the data structure.
- DSVS divides the entire point cloud space into a series of uniform voxels and sub-voxels. The specific process is as follows:
- Step 1 Calculate the axially aligned bounding box (AABB, axially aligned bounding box) of an unordered point cloud dataset D.
- Step 2 Divide the axisymmetric bounding box obtained in the previous step into S three-dimensional space volumes according to the desired radius R set by the user and the memory limit, each three-dimensional space volume is defined as a voxel, and the edge length of each voxel is is R re , where R re ⁇ R.
- the memory limit refers to: if the number of voxels obtained according to the expected radius R is greater than the maximum number M allowed by the memory, when the axisymmetric bounding box is divided, the edge length Rre of each voxel is greater than the expected radius R, so that the obtained The number of voxels is not greater than M; if the number of voxels obtained according to the expected radius R is not greater than the maximum number M allowed by the memory, then when dividing the axisymmetric bounding box, the edge length Rre of each voxel is equal to the expected radius R.
- the present invention proposes a desired radius R, which is the desired search radius, that is, when K-nearest neighbor search is performed, the desired spherical space is formed with the search point as the center of the sphere and the desired radius R as the search radius All nearest neighbors within must be searched.
- Step 3 Traverse each point cloud data in the unordered point cloud data set D in step 1, and calculate the specific voxel to which each point cloud data belongs and the number of point cloud data contained in each voxel.
- Step 4 According to the quantity of point cloud data contained in each voxel, the corresponding voxel is further divided into a plurality of sub-voxels.
- Step 5 Divide the unordered point cloud dataset D into a series of voxels and sub-voxels through steps 1 to 4, and the series of voxels and sub-voxels constitute the DSVS data structure.
- the DSVS data structure contains a series of configuration information, such as: the total number of voxels, which voxels are divided into sub-voxels, the number of corresponding sub-voxels, and which point cloud data is contained in each voxel and sub-voxels and the edge length R re of the voxel.
- Step 6 Obtain a search set consisting of search points.
- the unordered point cloud data set and the search set are sorted so that the search set is located in the same voxel or sub-voxel.
- the physical addresses of the points are adjacent and consecutive, so that the search points can be continuously transmitted into the FPGA, and multiple data in the same voxel or sub-voxel can be read simultaneously on the FPGA.
- Step 7 Based on the DSVS data structure, use the K-nearest neighbor search algorithm to search for each search point in the search set, and obtain the K-nearest neighbor point cloud data of the current search point within the desired radius, including the following steps:
- Step 701 Calculate the voxel to which the search point belongs, and define the voxel as the current voxel.
- Step 702 Calculate the distance between the search point and each voxel and/or sub-voxel adjacent to the current voxel, and search for each adjacent voxel and/or sub-voxel and the current voxel with a distance within a certain range. Domain Q.
- the search domain Q can be determined this way because only neighbors within a certain range are meaningful for the nearest neighbor search in LiDAR point cloud data in autonomous driving. If the searched neighbor is too far, then the search point will be considered as a dissociated point.
- the search domain Q consists of a range of voxels (without quadratic segmentation) and sub-voxels containing the desired spherical space described in step 2 above.
- Step 703 traverse each point cloud data in the search domain Q, and obtain K point cloud data closest to the search point in each point cloud data by calculation.
- the use of FPGA greatly improves the search efficiency through the form of intra-function pipeline and data flow between functions.
- the experimental results show that the energy efficiency of the method provided by the present invention is 2.1 times and 6.2 times higher on average than the latest technology on FPGA and GPU respectively.
- the above K-nearest neighbor search algorithm can be applied to the matching of point cloud maps in unmanned driving.
- 3D point cloud maps can be composed of lidar or binocular camera data. If the 3D point cloud map is the unordered point cloud data set in the above step 1, the above steps 1 to 5 are used to construct the DSVS data structure of the 3D point cloud map.
- the point cloud data obtained in real time in the unmanned driving is the search point in the above-mentioned steps 6 and 7, then the search points in the above-mentioned steps 6 and 7 are used to obtain the 3D point cloud map that is closest to the point cloud data obtained in real time. K point cloud data, so as to achieve point cloud map matching. It should be noted that the point cloud map will also be updated in real time during the driving process of the driverless car, and the updated point cloud map needs to re-use the above steps 1 to 5 to construct the corresponding DSVS data structure.
- the present invention can well solve the task of finding the nearest K points in a huge data set.
- FPGA acceleration allows the entire algorithm to have better real-time performance and consume less energy.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Biology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
一种用于无人驾驶的三维激光雷达点云高效K-最近邻搜索算法和上述的K-最近邻搜索算法在无人驾驶中的点云地图匹配过程中的应用。该方法采用了一种新型的数据结构用于快速K-最近邻搜索:使各个体素或者子体素中包含合适的点数以减少冗余搜索。该方法采用了一种基于DSVS和FPGA的新型K-最近邻搜索算法,主要有以下特征:1.只在搜索点邻近的期望区域中搜索最近邻,这可以减少冗余点的搜索。2.优化的数据传输与访问策略,使其更契合FPGA的特性。
Description
本发明涉及一种用于无人驾驶中三维激光雷达点云的高效FPGA实现的K-最近邻搜索算法。
K-最近邻搜索算法即在一个给定的数据集中,搜索距离某些给定数据最近的K个数据。可以用欧氏距离或者曼哈顿距离等来表示远近。一般的K-最近邻搜索算法有两个过程,建立搜索数据结构以及搜索K-最近邻。K-最近邻搜索被广泛的应用于计算机视觉,人工智能以及同时建图与定位等算法中。在无人驾驶领域中,海量的点云数据不均匀地分布在车身周围广阔的空间中,这让当前最先进的K-最近邻搜索算法难以有效处理。而智能车对电池使用的严格约束,也对K-最近邻搜索算法的实现提出了能耗方面的要求。
为了高效的实现大规模三维点云的K-最近邻搜索,相关专家首先在算法层次做优化。KD-Tree(参考文献【1】:D.Wehr and R.Radkowski,“Parallel kd-tree construction on the gpu with an adaptive split and sort strategy,”International Journal of Parallel Programming,vol.46,pp.1139-1156,2018.)可以实现快速搜索,但相应的需要较长的时间来建立树形搜索结构。与KD-tree相反,GBDS(基于网格的数据结构)(参考文献【2】:P.J.S.Leite,J.M.X.N.Teixeira,T.S.M.C.de Farias,B.Reis,V.Teichrieb,and J.Kelner,“Nearest neighbor searches on the gpu,”International Journal of Parallel Programming,vol.40,pp.313-330,2011)则可以快速建立搜索结构,但在搜索这块则逊色于KD-tree,而且其效率受限于点云的分布。GBDS的另一个缺陷在于其会在一个不断扩张的区域中搜索足够的点,这会导致大量冗余的搜索。
为了进一步提高K-最近邻搜索算法的能效比,部分研究人员考虑使用FPGA(参考文献【3】:F.B.Muslim,A.Demian,L.Ma,L.Lavagno,and A.Qamar,“Energy-efficient fpga implementation of the k-nearest neighbors algorithm using opencl.”in FedCSIS Position Papers,2016,pp.141-145.)或GPU(参考文献【1】) 来加速这一过程。但是从结果来看,对当前已有算法的加速仍然无法同时满足实时性与低功耗需求,其能效比仍然有待进一步的提高。
发明内容
本发明的目的是:进一步提高K-最近邻搜索算法的能效比。
为了达到上述目的,本发明的技术方案是提供了一种用于无人驾驶的三维激光雷达点云高效K-最近邻搜索算法,其特征在于,包括以下步骤:
步骤1、计算一个无序点云数据集的轴对齐边界框;
步骤2、根据用户设定的期望半径R将上一步获得的轴对称边界框划分成S个三维立体空间体,每个三维立体空间体定义为一个体素,每个体素的棱长为R
re,R
re≥R;
步骤3、遍历步骤1中无序点云数据集中的每个点云数据,计算每个点云数据所属的具体体素以及每个体素所包含的点云数据的数量;
步骤4、依据每个体素所包含的点云数据的数量,将相应的体素进一步划分为多个子体素,设第i个体素中包含N
i个点云数据,i=1,2,....,I,若N
i>T,T为预先设定的阈值,则将第i个体素划分为J个子体素,且保证
式中,
N
j表示第j个子体素包含的点云数据的数量;A为由用户调节或由场景动态调节的参数;
步骤5、通过步骤1至步骤4将无序点云数据集分割成了一系列的体素和子体素,这一系列的体素和子体素构成了DSVS数据结构;
步骤6、基于DSVS数据结构,利用K-最近邻搜索算法对某个搜索点进行搜索,获得当前搜索点在期望半径R内的K-最近邻个点云数据,包括以下步骤:
步骤601、计算得到搜索点所属的体素,将该体素定义为当前体素;
步骤602、计算搜索点与当前体素相邻的各体素和/或子体素的距离,由距离在一定范围内的相邻的各体素和/或子体素以及当前体素组成搜索域;
步骤603、遍历搜索域中的各点云数据,计算获得各点云数据中与搜索点最邻近的K个点云数据。
优选地,步骤2中,划分所述三维立体空间体还考虑内存限制,内存限制指的是:若依据所述期望半径R获得的所述体素数目大于内存所允许的最大数目 M,则进行轴对称边界框划分时,每个所述体素的棱长R
re大于期望半径R,使得划分得到的所述体素数目不大于M;若依据所述期望半径R获得的所述体素数目不大于内存所允许的最大数目M,则进行轴对称边界框划分时,每个所述体素的棱长R
re等于期望半径R。
优选地,步骤5中,所述DSVS数据结构还包含配置信息,该配置信息包括体素的总个数、哪些体素被划分成了子体素、相应子体素的个数,每个体素及子体素中包含哪些点云数据以及体素的棱长R
re。
优选地,在步骤5之后并步骤6之前,还包括以下步骤:
获得由搜索点组成的搜索集,在DSVS数据结构及配置信息的基础上,将无序点云数据集以及搜索集进行排序,使搜索集中位于相同体素或子体素的搜索点物理地址相邻且连续,从而可以连续传输搜索点进入FPGA,并且在FPGA上做到同时读取同一体素或子体素中的多个数据。
优选地,步骤603中,在遍历搜索过程中,使用FPGA通过函数内流水线以及函数间数据流的形式并行搜索所述最邻近的K个点云数据。
本发明的另一个技术方案是提供了一种上述的K-最近邻搜索算法在无人驾驶中的点云地图匹配过程中的应用,其特征在于,无人驾驶中已构建的3D点云地图为所述步骤1中的所述无序点云数据集,则采用所述步骤1至步骤5构建3D点云地图的所述DSVS数据结构;无人驾驶中实时获得的点云数据为所述步骤6及所述步骤7中的所述搜索点,则采用所述步骤6及所述步骤7搜索得到3D点云地图中与实时获得的点云数据最邻近的K个点云数据,从而实现点云地图的匹配。
与现有技术相比较,本发明具有如下创新点:
(1)本发明采用了一种新型的数据结构(DSVS)用于快速K-最近邻搜索:使各个体素或者子体素中包含合适的点数以减少冗余搜索。与GBDS不一样,新数据结构的每个子空间包含的点数较均衡。与KD-tree相比,本发明只需要分割点云空间有限次,这会大大减小建立数据结构的时间。
(2)本发明采用了一种基于DSVS和FPGA的新型K-最近邻搜索算法,主要有以下特征:1.只在搜索点邻近的期望区域中搜索最近邻,这可以减少冗余点的搜索。2.优化的数据传输与访问策略,使其更契合FPGA的特性。
图1为本发明的流程图。
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明提供了一种高效的K-最近邻搜索算法,并使用高层次综合工具在FPGA上实现。本发明包括一个新颖的数据结构(DSVS,二次分割体素结构)以及基于此数据结构的一种高效搜索方法。DSVS将整个点云空间划分成一系列点数均匀的体素以及子体素,具体过程如下:
步骤1、计算一个无序点云数据集D的轴对齐边界框(AABB,axially aligned bounding box)。
步骤2、根据用户设定的期望半径R以及内存限制将上一步获得的轴对称边界框划分成S个三维立体空间体,每个三维立体空间体定义为一个体素,每个体素的棱长为R
re,R
re≥R。
内存限制指的是:若依据期望半径R获得的体素数目大于内存所允许的最大数目M,则进行轴对称边界框划分时,每个体素的棱长Rre大于期望半径R,使得划分得到的体素数目不大于M;若依据期望半径R获得的体素数目不大于内存所允许的最大数目M,则进行轴对称边界框划分时,每个体素的棱长Rre等于期望半径R。
K-最近邻搜索的实际应用中对邻居的数据是有距离要求的,如果超出了一定的距离,则此时搜索到的结果不再可靠。为此,本发明提出了期望半径R,期望半径R即为期望的搜索半径,即在进行K-最近邻搜索时,以搜索点为球心、以期望半径R为搜索半径形成的期望球形空间内所有的最近邻必须被搜索到。
步骤3、遍历步骤1中无序点云数据集D中的每个点云数据,计算每个点云数据所属的具体体素以及每个体素所包含的点云数据的数量。
步骤4、依据每个体素所包含的点云数据的数量,将相应的体素进一步划分 为多个子体素。
设第i个体素中包含N
i个点云数据,i=1,2,....,I,若N
i>T,T为预先设定的阈值,则将第i个体素划分为J个子体素,且保证
式中,
表示第j个子体素包含的点云数据的数量;A为由用户调节或由场景动态调节的参数。
步骤5、通过步骤1至步骤4将无序点云数据集D分割成了一系列的体素和子体素,这一系列的体素和子体素构成了DSVS数据结构。DSVS数据结构包含一系列配置信息,如:体素的总个数、哪些体素被划分成了子体素、相应子体素的个数,每个体素及子体素中包含哪些点云数据以及体素的棱长R
re。
步骤6、获得由搜索点组成的搜索集。为了优化FPGA上的数据传输以及数据访存,在DSVS数据结构及其配置信息的基础上,将无序点云数据集以及搜索集进行排序,使搜索集中位于相同体素或子体素的搜索点物理地址相邻且连续,从而可以连续传输搜索点进入FPGA,并且在FPGA上做到同时读取同一体素或子体素中的多个数据。
步骤7、基于DSVS数据结构,利用K-最近邻搜索算法对搜索集中的各个搜索点进行搜索,获得当前搜索点在期望半径内的K-最近邻个点云数据,包括以下步骤:
步骤701、计算得到搜索点所属的体素,将该体素定义为当前体素。
步骤702、计算搜索点与当前体素相邻的各体素和/或子体素的距离,由距离在一定范围内的相邻的各体素和/或子体素以及当前体素组成搜索域Q。
可以这样确定搜索域Q是因为对无人驾驶中激光雷达点云数据中的最近邻搜索而言,只有一定范围内的邻居是有意义的。如果搜寻到的邻居太远,那么这个搜索点会被认为是一个离异点。搜索域Q由一定范围内的体素(无二次分割)和子体素组成,包含上文步骤2中所述的期望球形空间。
步骤703、遍历搜索域Q中的各点云数据,计算获得各点云数据中与搜索点最邻近的K个点云数据。在搜索过程中,使用FPGA,通过函数内流水线以及函数间数据流的形式,极大地提高了搜索效率。实验结果表明,本发明提供的方法的能效在FPGA和GPU上分别比最新的技术平均提高了2.1倍和6.2倍。
上述K-最近邻搜索算法可以被应用于无人驾驶中的点云地图的匹配中。3D 点云地图可以由激光雷达或者双目摄像头的数据组成。3D点云地图为上述步骤1中的所述无序点云数据集,则采用上述步骤1至步骤5构建3D点云地图的所述DSVS数据结构。无人驾驶中实时获得的点云数据为上述步骤6及上述步骤7中的所述搜索点,则采用所述步骤6及步骤7搜索得到3D点云地图中与实时获得的点云数据最邻近的K个点云数据,从而实现点云地图的匹配。应当注意的时,在无人驾驶汽车行驶过程中,点云地图也会进行实时更新,则更新后的点云地图需要重新采用上述的步骤1至步骤5来构建对应的DSVS数据结构。
对于复杂的户外环境,本发明可以很好的解决在庞大数据集中查找最近邻K个点的任务。FPGA加速则让整个算法具有更好的实时性,消耗更少的能量。
Claims (6)
- 一种用于无人驾驶的三维激光雷达点云高效K-最近邻搜索算法,其特征在于,包括以下步骤:步骤1、计算一个无序点云数据集的轴对齐边界框;步骤2、根据用户设定的期望半径R将上一步获得的轴对称边界框划分成S个三维立体空间体,每个三维立体空间体定义为一个体素,每个体素的棱长为R re,R re≥R;步骤3、遍历步骤1中无序点云数据集中的每个点云数据,计算每个点云数据所属的具体体素以及每个体素所包含的点云数据的数量;步骤4、依据每个体素所包含的点云数据的数量,将相应的体素进一步划分为多个子体素,设第i个体素中包含N i个点云数据,i=1,2,....,I,若N i>T,T为预先设定的阈值,则将第i个体素划分为J个子体素,且保证 式中, N j表示第j个子体素包含的点云数据的数量;A为由用户调节或由场景动态调节的参数;步骤5、通过步骤1至步骤4将无序点云数据集分割成了一系列的体素和子体素,这一系列的体素和子体素构成了DSVS数据结构;步骤6、基于DSVS数据结构,利用K-最近邻搜索算法对某个搜索点进行搜索,获得当前搜索点在期望半径R内的K-最近邻个点云数据,包括以下步骤:步骤601、计算得到搜索点所属的体素,将该体素定义为当前体素;步骤602、计算搜索点与当前体素相邻的各体素和/或子体素的距离,由距离在一定范围内的相邻的各体素和/或子体素以及当前体素组成搜索域;步骤603、遍历搜索域中的各点云数据,计算获得各点云数据中与搜索点最邻近的K个点云数据。
- 如权利要求1所述的一种用于无人驾驶的三维激光雷达点云高效K-最近邻搜索算法,其特征在于,步骤2中,划分所述三维立体空间体还考虑内存限制,内存限制指的是:若依据所述期望半径R获得的所述体素数目大于内存所允许的最大数目M,则进行轴对称边界框划分时,每个所述体素的棱长R re大于期望半径R,使得划分得到的所述体素数目不大于M;若依据所述期望半径R获得的所述体素数目不大于内存所允许的最大数目M,则进行轴对称边界框划分时, 每个所述体素的棱长R re等于期望半径R。
- 如权利要求1所述的一种用于无人驾驶的三维激光雷达点云高效K-最近邻搜索算法,其特征在于,步骤5中,所述DSVS数据结构还包含配置信息,该配置信息包括体素的总个数、哪些体素被划分成了子体素、相应子体素的个数,每个体素及子体素中包含哪些点云数据以及体素的棱长R re。
- 如权利要求3所述的一种用于无人驾驶的三维激光雷达点云高效K-最近邻搜索算法,其特征在于,在步骤5之后并步骤6之前,还包括以下步骤:获得由搜索点组成的搜索集,在DSVS数据结构及配置信息的基础上,将无序点云数据集以及搜索集进行排序,使搜索集中位于相同体素或子体素的搜索点物理地址相邻且连续,从而可以连续传输搜索点进入FPGA,并且在FPGA上做到同时读取同一体素或子体素中的多个数据。
- 如权利要求4所述的一种用于无人驾驶的三维激光雷达点云高效K-最近邻搜索算法,其特征在于,步骤603中,在遍历搜索过程中,使用FPGA通过函数内流水线以及函数间数据流的形式并行搜索所述最邻近的K个点云数据。
- 一种如权利要求1所述的K-最近邻搜索算法在无人驾驶中的点云地图匹配过程中的应用,其特征在于,无人驾驶中已构建的3D点云地图为所述步骤1中的所述无序点云数据集,则采用所述步骤1至步骤5构建3D点云地图的所述DSVS数据结构;无人驾驶中实时获得的点云数据为所述步骤6及所述步骤7中的所述搜索点,则采用所述步骤6及所述步骤7搜索得到3D点云地图中与实时获得的点云数据最邻近的K个点云数据,从而实现点云地图的匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/593,852 US11430200B2 (en) | 2020-07-22 | 2021-06-09 | Efficient K-nearest neighbor search algorithm for three-dimensional (3D) lidar point cloud in unmanned driving |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010710469.X | 2020-07-22 | ||
CN202010710469.XA CN111860340B (zh) | 2020-07-22 | 2020-07-22 | 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022017038A1 true WO2022017038A1 (zh) | 2022-01-27 |
Family
ID=73002032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2021/099114 WO2022017038A1 (zh) | 2020-07-22 | 2021-06-09 | 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11430200B2 (zh) |
CN (1) | CN111860340B (zh) |
WO (1) | WO2022017038A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117864412A (zh) * | 2023-08-10 | 2024-04-12 | 中国人民解放军海军航空大学 | 一种基于激光点云信息的机载电子装备测试信号触发机制 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111860340B (zh) * | 2020-07-22 | 2023-09-22 | 上海科技大学 | 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 |
CN112905239B (zh) * | 2021-02-19 | 2024-01-12 | 北京超星未来科技有限公司 | 一种基于fpga的点云预处理加速方法、加速器及电子设备 |
CN112986982B (zh) * | 2021-05-12 | 2021-07-30 | 长沙万为机器人有限公司 | 环境地图参照定位方法、装置和移动机器人 |
CN113536232B (zh) * | 2021-06-28 | 2023-03-21 | 上海科技大学 | 用于无人驾驶中激光点云定位的正态分布变换方法 |
CN116664812B (zh) * | 2022-11-30 | 2024-06-07 | 荣耀终端有限公司 | 一种视觉定位方法、视觉定位***及电子设备 |
CN115963471A (zh) * | 2023-01-06 | 2023-04-14 | 上海科技大学 | 应用于激光雷达单帧点云的高效knn方法及其应用 |
CN116012892A (zh) * | 2023-03-27 | 2023-04-25 | 山东科技大学 | 一种用于塔吊信号工的信号装置与信号传输方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070250476A1 (en) * | 2006-04-21 | 2007-10-25 | Lockheed Martin Corporation | Approximate nearest neighbor search in metric space |
CN106156281A (zh) * | 2016-06-25 | 2016-11-23 | 南京理工大学 | 基于Hash‑Cube空间层次划分结构的最近邻点集快速检索方法 |
CN110222626A (zh) * | 2019-06-03 | 2019-09-10 | 宁波智能装备研究院有限公司 | 一种基于深度学习算法的无人驾驶场景点云目标标注方法 |
CN111860340A (zh) * | 2020-07-22 | 2020-10-30 | 上海科技大学 | 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9390110B2 (en) * | 2012-05-02 | 2016-07-12 | Level Set Systems Inc. | Method and apparatus for compressing three-dimensional point cloud data |
US10539676B2 (en) * | 2017-03-22 | 2020-01-21 | Here Global B.V. | Method, apparatus and computer program product for mapping and modeling a three dimensional structure |
US11409998B2 (en) * | 2019-10-02 | 2022-08-09 | Apple Inc. | Trimming search space for nearest neighbor determinations in point cloud compression |
CN110909337B (zh) * | 2019-12-02 | 2024-03-08 | 浪潮通用软件有限公司 | 一种基于gsp平台的北京数字证书认证集成方法 |
-
2020
- 2020-07-22 CN CN202010710469.XA patent/CN111860340B/zh active Active
-
2021
- 2021-06-09 WO PCT/CN2021/099114 patent/WO2022017038A1/zh active Application Filing
- 2021-06-09 US US17/593,852 patent/US11430200B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070250476A1 (en) * | 2006-04-21 | 2007-10-25 | Lockheed Martin Corporation | Approximate nearest neighbor search in metric space |
CN106156281A (zh) * | 2016-06-25 | 2016-11-23 | 南京理工大学 | 基于Hash‑Cube空间层次划分结构的最近邻点集快速检索方法 |
CN110222626A (zh) * | 2019-06-03 | 2019-09-10 | 宁波智能装备研究院有限公司 | 一种基于深度学习算法的无人驾驶场景点云目标标注方法 |
CN111860340A (zh) * | 2020-07-22 | 2020-10-30 | 上海科技大学 | 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117864412A (zh) * | 2023-08-10 | 2024-04-12 | 中国人民解放军海军航空大学 | 一种基于激光点云信息的机载电子装备测试信号触发机制 |
Also Published As
Publication number | Publication date |
---|---|
CN111860340A (zh) | 2020-10-30 |
US20220148281A1 (en) | 2022-05-12 |
US11430200B2 (en) | 2022-08-30 |
CN111860340B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022017038A1 (zh) | 用于无人驾驶的三维激光雷达点云高效k-最近邻搜索算法 | |
CN109345619B (zh) | 基于类八叉树编码的海量点云空间管理方法 | |
CN109325993B (zh) | 一种基于类八叉树索引的显著性特征强化采样方法 | |
CN107798346B (zh) | 一种基于Fréchet距离阈值的轨迹相似性快速匹配方法 | |
Lu et al. | Massive point cloud space management method based on octree-like encoding | |
CN107943053A (zh) | 一种移动机器人的路径规划方法 | |
CN108320293A (zh) | 一种结合改进粒子群算法的快速点云边界提取技术 | |
WO2023272964A1 (zh) | 用于无人驾驶中激光点云定位的正态分布变换方法 | |
CN109493344A (zh) | 一种大规模城市三维场景的语义分割方法 | |
CN105405136A (zh) | 一种基于粒子群算法的自适应脊柱ct图像分割方法 | |
CN102867290B (zh) | 一种基于纹理优化的非同质图像合成方法 | |
CN104731984A (zh) | R树上溢结点***问题的增量式聚类优化求解方法 | |
WO2020025004A1 (zh) | 一种车联网知识库表示方法,装置及*** | |
CN108198084A (zh) | 一种复杂网络重叠社区发现方法 | |
CN111814979A (zh) | 一种基于动态规划的模糊集自动划分方法 | |
CN115496133A (zh) | 基于自适应在线学习的密度数据流聚类方法 | |
CN109003222B (zh) | 一种异步高能效图计算加速器 | |
CN115471424A (zh) | 一种基于自学习的有向点云去噪方法 | |
CN109684424B (zh) | 基于离散特征线的地貌数据快速生成与优化方法 | |
Xiangde et al. | Global dynamic path planning algorithm based on harmony search algorithm and artificial potential field method | |
CN112287185A (zh) | 一种结合vp树和导向近邻图的近似最近邻搜索方法 | |
CN113052231A (zh) | 一种基于体素和全局形状分布特征的三维模型分类方法 | |
CN112905239B (zh) | 一种基于fpga的点云预处理加速方法、加速器及电子设备 | |
Teng et al. | A New Frog Leaping Algorithm Based on Simulated Annealing and Immunization Algorithm for Low-power Mapping in Network-on-chip. | |
WO2024146010A1 (zh) | 应用于激光雷达单帧点云的高效knn方法及其应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21845213 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21845213 Country of ref document: EP Kind code of ref document: A1 |