PCL 中的Octree来管理空间中无序的点云,从而加快查找速度 。
八叉树的原理已经后很多文章进行过描述,主要就是将一个正方体分成八块或者不切分,一层一层构造成树的结构, 我在这里不进行赘述,本文主要讨论八叉树的双缓冲机制,查找了很多资料对此都没有详细的描述。
简介:
八叉树的双缓冲机制简单来说就是在内存空间中开辟两块缓冲区来进行存储,
Octree在动态检测使用中的原理:
1、 Pcl的Octree中,通过点云建立一棵树,这棵树只会存在于其中一个点云之中。
octree.setInputCloud (cloudA);
octree.addPointsFromInputCloud ();
如上,clouda只会存在于一个缓冲区。
2、 我们通过交换缓冲区,此时就会得到一个新的缓冲区:
octree.switchBuffers ();
而且此时 刚在建立的CloudA八叉树仍然存在内存当中。
3、 重新建立一个新Octree
//添加 cloudB到八叉树
octree.setInputCloud (cloudB);
octree.addPointsFromInputCloud ();
此时,我们使用CLoudB建立了一个新树,按我的理解,CloudA和CloudB两颗树此时存在于不同的缓冲区。
4、两棵树进行相似度检查,这个过程就是去筛选出在CLoudA中出现,而没有在CloudB中出现的点云。
vector<int>newPoint