k-最接近一个点的空间查询
Spatial querying for k-th closest neighbour of a point
我正在使用一种算法,该算法反复需要(欧几里得)到k-最接近的点,从某些给定的查询点开始,这都是从点的向量中获取的。另外,我一再需要在一个点的半径内找到所有点。
我正在考虑使用Nanoflann库中的K-D树。但是,knnsearch()函数返回所有我不需要的K最近的K邻居。(不过,radiussearch()函数适合我)。
除了每次都在所有K最近的K邻居中,还有一种更有效的方法来获取我的需求吗?更好的数据结构还是更好的实现?(我正在使用C 。)
我正在考虑使用K-d树
2D或3D的绝佳选择。
k-d树是低维数据的好选择(我认为您有Nanoflann"主要是针对2D或3D点云进行了优化的"。)。
除了每次都在所有K最近的K邻邻邻邻邻居外面,是否有更有效的方法来获得我的需求?
您需要k-th最近的邻居(nn),但是当搜索k-d树以k nns搜索时,昂贵的操作(按时间)正在找到第一个NN(这需要您下降到树下,从根到叶子)。
找到第二,第三或另一个索引的nn相对便宜,我高度怀疑它会损害性能(即,从树返回的k nns中获取k-th nn是瓶颈)。<<<<<<<<<<<<<<<<<<<<<<<</p>
所以,我强烈建议您不必担心那一步。
更好的数据结构或更好的实现?
我不这么认为。我没有使用nanoflann,但是CGAL用于此类疑问,值得尝试(但是CGAL需要安装(不是蛋糕),而Nanoflann只是一个标题)。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 查询SQLite数据库中的日期
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- 如何在ArangoDb AQL查询中指定数据库
- OpenGL相机和相机空间转型的困惑
- CUDA内核和数学函数的显式命名空间
- 打印第二列时的2d字符矢量打印空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- Qt SQLite没有查询或参数计数不匹配
- 如何使用c++在VS 2019上运行SQL查询
- k-最接近一个点的空间查询
- 查询oracle空间(sdo_geomtery)