PCL中使用FLANN库(1)

  • 时间:
  • 浏览:1

indices: 将承载所有被找到的K最近邻的索引号( 预开辟的大小应该大慨是查询点数*knn);

其中还涉及到另外两种文件的数据行态的使用,一般都不包涵盖一另一一一个多头文件,第有一另一一一个多头文件是关于FLANN算法实现的声明的函数集,第一个多头文件是关于数据行态的两种存储的妙招 ,hdf5是用于存储和埋点科学数据的两种自我描述、多对象文件格式,HDF 被设计为:

不出有兴趣都都可以 去仔细看看论文啊,我等渣渣你以为多年以来对论文不出哪些感觉

对提供的索引来寻找最近邻

设置FLANN距离的类型

库的地址:www.cs.ubc.ca/research/flann/

建立有一另一一一个多索引机会说指定有一另一一一个多索引来寻找最近邻域

介绍几种FLANN库中的API接口,如保去使用它,也不通过具体的实例去实现从前有一另一一一个多匹配

参数解释:

(2)flann::Index::knnSearch

有兴趣者关注微信公众号,更欢迎大伙 投稿分享,只只要关于点云的都都都可以 分享

建立和返回索引的函数

从磁盘中载入索引文件

dists:     将承载到所有被找到的K最近邻的距离只(预开辟大小应该大慨是查询点数*knn);

queries: 承载查询点的矩阵,矩阵大小是:查询点数*纬数;

HDF 文件行态包括有一另一一一个多file id(文件号)、大慨有一另一一一个多 data descriptor (数据描述符)、不出或多个 data element(数据内容)数据内容。

基本的介绍,都都可以 查看相应的手册

主要流程

#include <flann/flann.h>

#include <flann/io/hdf5.h>

 在这里就不再一一翻译了

最好的妙招 是把HDF 文件看成为一本有表格内容的多章节书。HDF 文件是“数据书”,其中每章都包涵盖一另一一一个多不类事型的数据内容。正如书籍用有一另一一一个多目录表列出它的章节一样,HDF文件用“data index”(数据索引)列出其数据内容

以上内容是涉及到关于对PCL中物体的识别的基础知识。

释放内存

FLANN库全称是Fast Library for Approximate Nearest Neighbors,它是目前最全版的(近似)最近邻开源库。不但实现了一系列查找算法,还涵盖了两种自动选取最快算法的机制,在有一另一一一个多度量空间X给定一组点P=p1,p2,…,pn,有有哪些点都都可以 通过以下妙招 进行预外理,给第有一另一一一个多新的查询点q属于X,快速在P中找到距离q最近的点,即最近邻搜索问提。最近邻搜索的问提是在什么都有有应用领域是有一另一一一个多重大问提,如图像识别、数据压缩、模式识别和分类.在高维空间中外理你什儿 问提似乎是有一另一一一个多非常难以执行任务,不出算法明显优于标准的蛮力搜索。也不不出来太久的人把兴趣点转向执行近似最近邻搜索的一类算法,有有哪些妙招 在什么都有有实际应用和大多数案例中被证明是足够好的近似,比精确搜索算法快很大的数量级

保存索引到本地磁盘(仅仅是索引被保存)

(1)flann::Index这是FLANN最近邻指数类。该类用于抽象的不类事型的最近邻搜索索引。距离函数类模板用于计算有一另一一一个多行态空间之间的距离。

很显然在PCL 搜索最近邻也是属于高维度近邻搜索,什么都有有都都可以 用到从前的库来寻找匹配的,比如大伙 机会想通过使用PCL点云的数据来识别出物体到底是有哪些,不出很明显是都都可以 有一另一一一个多数据录的,你什儿 数据库的训练该如保来实现呢?机会我对机器学习了解的比较少,我都都可以 通过机器学习的妙招 来识别是最好的,也是今后都都可以 做的工作,目前来看,我认为的妙招 只要通过对血块的点云进行训练并提取大伙 的行态点,比如VFH,也不把血块点云训练存储成八叉树,以便于很好的搜索和匹配,也不在PCL 中使用八叉树是很常见的两种存储行态,也是方便搜索的,也不通过计算大伙 我想要 识别物体的点云 的VFH,通过FLANN算法寻找到最接近的,这只要整体的思路

params: 搜索参数。承载搜索都都可以 使用的参数的行态体,行态体类型是SearchParameters。

knn:       要找的最近邻的个数;

半径搜索的妙招 在机会建立的索引文件中寻找

利用行态聚类

对一组点查询点,该妙招 执行K最近邻搜索。该妙招 有有一另一一一个多实现,有一另一一一个多携带预开辟空间的flann::Matrix对象接收返回的找到邻居的索引号和到其距离;从前是携带std::vector<std::vector>根据都都可以 自动重新调整大小。