This work presents an efficient approach for neighbourhood searching in 3D point clouds by combining spatial reordering leveraging Space-Filling Curves (SFC), specifically Morton and Hilbert curves, with a linear Octree implementation. We also propose specialised search algorithms for fixed-radius and kNN queries, based on our linear Octree structures. Additionally, we introduce the novel concept of kNN locality histogram, which can be easily computed to characterise locality in data accesses, and we found to be directly related to cache misses and search performance. Our experiments reveal that SFC reordering significantly improves access to spatial data, reducing the number of cache misses from 25% to 75% and runtime by up to 50%. Moreover, we compare our proposal with several widely used Octree and KDTree implementations. Our method achieves a significant reduction in search time, up to 10$\times$ faster than existing solutions.Additionally, we analysed the performance of our neighbourhood searches (parallelised using OpenMP), demonstrating high scalability with the number of cores and the problem size. Notably, we observed a speedup of up to $36\times$ when executing fixed-radius searches in a system with 40 cores. The results obtained indicate that our methods provide a robust and efficient solution for applications that require fast access to large-scale 3D point neighbour sets.
翻译:本研究提出了一种高效的三维点云邻域搜索方法,该方法通过结合利用空间填充曲线(特别是莫顿曲线和希尔伯特曲线)的空间重排序技术与线性八叉树实现。基于线性八叉树结构,我们进一步提出了针对固定半径搜索与k近邻查询的专用搜索算法。此外,我们引入了新颖的k近邻局部性直方图概念,该直方图可便捷计算以表征数据访问的局部性特征,并发现其与缓存缺失率及搜索性能直接相关。实验表明,空间填充曲线重排序能显著改善空间数据访问效率,将缓存缺失率降低25%至75%,运行时间减少最高达50%。通过与多种广泛使用的八叉树和KDTree实现方案对比,本方法在搜索时间上实现显著缩减,比现有方案快达10倍。同时,我们对并行化(基于OpenMP)邻域搜索的性能分析表明,该方法在核心数与问题规模上均表现出高度可扩展性。值得注意的是,在40核系统中执行固定半径搜索时,我们观察到最高达36倍的加速比。实验结果表明,本方法为需要快速访问大规模三维点邻域集的应用提供了鲁棒且高效的解决方案。