关于kd-tree和ikd-tree的学习

一、前言

新的工作需要将ikd-tree接入,之前做毕设的时候fastlio2的ikd-tree没仔细看,重新捡起来看,记录自己的心得。

看两篇文章:

 1.首先把kd-tree给过一遍:

数据结构专题(一) | kd-tree 原理深入理解【看这一篇就够了】 - 知乎

2.把ikd-tree给过一遍:
https://zhuanlan.zhihu.com/p/529926254

看完这两篇文章ikd-tree就差不多了。

二、一些心得

1.SLAM究竟需要怎么样的kd-tree

做一个记录:

  1. 支持local map随着pose移动 → 支持高效地动态增删;
  2. 支持始终如一的高效 kNN&ranged-kNN搜索 → 能够始终保持tree的平衡,做到动态re-balance;
  3. 点的数量不要太大,点无需太过稠密 → 最好自带体素降采样功能;(辨证一下自己的想法)

 2、ikd-Tree的节点数据结构

理解一下lazy delete这个概念: 高频率做:删除一个节点时,先将其标记为删除,被标记为删除的节点在 kNN 搜索时会被跳过,但在树形结构中它还是存在的。低频率做:tree结构被彻底重构时,才会借机真的把这些节点从tree结构中拿掉。

关于range-kNN:他的range是以当前节点为根节点的subtree中的所有节点,它们在三维空间中的最小包络盒。range 仅包括 subtree 中没有被删除的点,那些被标记为删除的点不在统计范围内。

3、搜索

与kd-tree一致,会判断左右两个子树的range 是否与目标解空间有重叠,只有有重叠的子树才会被继续递归搜索,没重叠的子树将直接被剪枝掉,实现搜索加速。

要是这里自己后面忘了去看看

数据结构专题(一) | kd-tree 原理深入理解【看这一篇就够了】 - 知乎

这里的这张图的解释。

至于其他的暂时自己还用不到,直接用他的API就行。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值