PCL——快速邻域搜索

  • 1. 代码示例

以下代码参考《点云库PCL从入门到精通》

1. 代码示例

  • 用 k-d tree找到具体点在空间中的k近邻
  • 找到指定的某一半径内的所有近邻
#include <pcl/point_cloud.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <iostream>
#include <vector>
#include <ctime>using namespace std;
using namespace pcl;int main(int argc, char**argv)
{// 用系统时间初始化随机种子srand(time(NULL));  PointCloud<PointXYZ>::Ptr cloud(new PointCloud<PointXYZ>);// 点云初始化cloud->width = 1000;cloud->height = 1;cloud->points.resize(cloud->width * cloud->height);// 点云填充数据for (size_t i = 0; i< cloud->points.size(); ++i){cloud->points[i].x = 1024.0f* rand() / (RAND_MAX + 1.0f);cloud->points[i].y = 1024.0f* rand() / (RAND_MAX + 1.0f);cloud->points[i].z = 1024.0f* rand() / (RAND_MAX + 1.0f);}// 创建k-d tree对象KdTreeFLANN<PointXYZ> kdtree;// 设置搜索的点云kdtree.setInputCloud(cloud);// 定义查询点并赋值PointXYZ searchPoint;searchPoint.x = 1024.0f* rand() / (RAND_MAX + 1.0f);searchPoint.y = 1024.0f* rand() / (RAND_MAX + 1.0f);searchPoint.z = 1024.0f* rand() / (RAND_MAX + 1.0f);// k近邻搜索 找最近的K个点,最终的点数有可能小于Kint K = 10;vector<int> pointIdxNKNSearch(K);          //存储搜索到查询点近邻的索引vector<float> pointNKNSquaredDistance(K);  //存储对应近邻的平方距离cout << "K nearest neighbor search at (" << searchPoint.x<< " " << searchPoint.y<< " " << searchPoint.z<< ") with K=" << K << endl;cout << endl;//n 是返回的点的数量//所有的返回点已经按照近邻平方距离排列好了,然后对应索引从小到大排列int n = kdtree.nearestKSearch(searchPoint, K, pointIdxNKNSearch, pointNKNSquaredDistance);if (n > 0){for (size_t i = 0; i < pointIdxNKNSearch.size(); ++i){cout << " " << cloud->points[pointIdxNKNSearch[i]].x<< " " << cloud->points[pointIdxNKNSearch[i]].y<< " " << cloud->points[pointIdxNKNSearch[i]].z<< " (squared distance: " << pointNKNSquaredDistance[i] << ")" << endl;}cout << endl;}// 在半径r内搜索近邻 找半径内的所有点,点的数量无法确定,有可能一个都没有,也有可能有很多vector<int> pointIdxRadiusSearch;vector<float> pointRadiusSquaredDistance;float radius = 100;cout << "Neighbors within radius search at (" << searchPoint.x<< " " << searchPoint.y<< " " << searchPoint.z<< ") with radius=" << radius << endl;cout << endl;//n 是返回的点的数量//所有的返回点已经按照近邻平方距离排列好了,然后对应索引从小到大排列n = kdtree.radiusSearch(searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance);if (n >0){for (size_t i = 0; i < pointIdxRadiusSearch.size(); ++i){cout << "    " << cloud->points[pointIdxRadiusSearch[i]].x<< " " << cloud->points[pointIdxRadiusSearch[i]].y<< " " << cloud->points[pointIdxRadiusSearch[i]].z<< " (squared distance: " << pointRadiusSquaredDistance[i] << ")" << endl;}}system("Pause");return 0;
}

PCL——快速邻域搜索相关推荐

  1. PCL学习笔记(八)-- PCL实现快速邻域搜索

    一.简介 学习如何用k-d tree树找到具体点或空间位置的k近邻,然后学习如何找到用户指定的(本例中是随机的)某一半径内的所有近邻. Vector: C++标准库提供了被封装的动态数组--Vecto ...

  2. 《PCL点云库学习VS2010(X64)》Part 37 FLANN——快速最近邻搜索库

    <PCL点云库学习&VS2010(X64)>Part 37 FLANN--快速最近邻搜索库 一.介绍 该算法库在OpenCV和PCL等开源库中应用较广,是PCL的默认安装库之一.与 ...

  3. ga设置迭代次数_种群进化+邻域搜索的混合算法(GA+TS)求解柔性作业车间调度问题(FJSP)算法介绍...

    程序猿声 代码黑科技的分享区 过去小编简单了解过作业车间调度问题(JSP),这两个月简单接触了柔性车间调度问题(FJSP),但是因为一些原因打算暂时研究到这里.在研究的时候,小编发现网上这方面的中文资 ...

  4. 异同点 模拟退火 遗传算法 邻域搜索_智能算法浅介----模拟退火,遗传算法,禁忌搜索,神经网络等...

    本文讲的过于笼统,如果想真正理解,请参考: 智能算法浅介----By cooler 一个比方 在工程实践中,经常会接触到一些比较"新颖的算法"如模拟退火,遗传算法,禁忌搜索,神经网 ...

  5. 局部邻域搜索-爬山法,模拟退火,禁忌,迭代局部搜索,变邻域局部搜索的简单阐释

    原文来源: 局部搜索算法 - JiePro - 博客园 https://www.cnblogs.com/JiePro/p/Metaheuristics_0.html 局部搜索算法 目录: 1.数学定义 ...

  6. github 搜索_如何通过GitHub快速的搜索资源?

    最近在研究GitHub的使用,所以刚好借这次机会跟大家分享一下GitHub的使用. GitHub应该大部分人都知道,或多或少的接触过它.有些人可能使用它搜索更多的学习资料,有些人使用它管理自己的资源, ...

  7. python实现大规模邻域搜索(LNS)求解旅行商问题(TSP)

    文章目录 1. 大规模邻域搜索算法 1.1. LNS定义 1.2. LNS邻域 1.3. LNS框架 2. 旅行商问题TSP 3. python代码示例及结果 1. 大规模邻域搜索算法 参考<H ...

  8. 如何删除计算机某个盘搜索记录,怎么快速删除搜索记录 如何随意删除指定的那条记录...

    如何快速删除搜索记录,具体详细内容如下所示 我们网吧的时候如果不小心在IE上留下很多隐私的的搜索记录到时候你想哭都来不及,所以我们平时要养成一个好的习惯,我朋友就碰到一次他是一个女同志,有一次他在网吧 ...

  9. 禁忌搜索(TS——Tabu Search)与邻域搜索基础知识

    禁忌搜索,也是一种常见的邻域搜索算法.其实我觉得很多智能算法本质都是邻域搜索(本质是局部搜索)算法.只不过邻域的应用方式不同,是全局式的邻域搜索算法.比如,局部搜索中最经典的是"爬山算法&q ...

最新文章

  1. 这是Nginx的负载均衡配置方法
  2. Session保存到Memcache
  3. (转)在编写Spring框架的配置文件时,标签无提示符的解决办法
  4. 数据挖掘之模型选择和融合
  5. laravel5.5 尝试使用laravel安装器安装(失败) 最后还是用的composer。。。
  6. 关于WEB集群中文件服务器的讨论
  7. Google Talk Testing(早期版本)
  8. 16kb等于多少b_一篇文章讲透MySQL为什么要用B+树实现索引
  9. 中国油冷却单元行业市场供需与战略研究报告
  10. 确定你的台式计算机支持的内存类型,如何区分内存类型及查看内存的兼容性
  11. 二线城市-太原-程序员真实写照
  12. 微信摇一摇效果HTML,JavaScript+H5实现微信摇一摇功能
  13. 高中计算机手抄报图片大全集,高中生手抄报版面图大全
  14. iOS 中 XML 数据交换格式
  15. 使用Java SE8 Streams 处理数据,Part 2
  16. 三级数据库知识点学习(五)
  17. Linux指令--let
  18. offer different kinds of LED lights
  19. Arcgis二次开发——试用arcgis online、arcgis pro
  20. 大学计算机基础实践教程实验一讨论与思考,大学计算机基础实验报告手册(非艺术类).doc...

热门文章

  1. zabbix自动发现,端口 url检测
  2. Centos 7安装报错:Warning:dracut-initqueue timeout - starting timeout scripts
  3. 【EXCEPTION_INIT】自定义错误名称并关联错误号
  4. System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常
  5. React+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
  6. HBase中此类异常解决记录org.apache.hadoop.ipc.RemoteException(java.io.IOException):
  7. 使用Jstl异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannotnbs
  8. 深入解析Mysql 主从同步延迟原理及解决方案
  9. Undefined symbols for architecture armv7错误解决方法
  10. 在Java 8中,有没有一种简洁的方法可以迭代带有索引的流?