PCL——快速邻域搜索
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——快速邻域搜索相关推荐
- PCL学习笔记(八)-- PCL实现快速邻域搜索
一.简介 学习如何用k-d tree树找到具体点或空间位置的k近邻,然后学习如何找到用户指定的(本例中是随机的)某一半径内的所有近邻. Vector: C++标准库提供了被封装的动态数组--Vecto ...
- 《PCL点云库学习VS2010(X64)》Part 37 FLANN——快速最近邻搜索库
<PCL点云库学习&VS2010(X64)>Part 37 FLANN--快速最近邻搜索库 一.介绍 该算法库在OpenCV和PCL等开源库中应用较广,是PCL的默认安装库之一.与 ...
- ga设置迭代次数_种群进化+邻域搜索的混合算法(GA+TS)求解柔性作业车间调度问题(FJSP)算法介绍...
程序猿声 代码黑科技的分享区 过去小编简单了解过作业车间调度问题(JSP),这两个月简单接触了柔性车间调度问题(FJSP),但是因为一些原因打算暂时研究到这里.在研究的时候,小编发现网上这方面的中文资 ...
- 异同点 模拟退火 遗传算法 邻域搜索_智能算法浅介----模拟退火,遗传算法,禁忌搜索,神经网络等...
本文讲的过于笼统,如果想真正理解,请参考: 智能算法浅介----By cooler 一个比方 在工程实践中,经常会接触到一些比较"新颖的算法"如模拟退火,遗传算法,禁忌搜索,神经网 ...
- 局部邻域搜索-爬山法,模拟退火,禁忌,迭代局部搜索,变邻域局部搜索的简单阐释
原文来源: 局部搜索算法 - JiePro - 博客园 https://www.cnblogs.com/JiePro/p/Metaheuristics_0.html 局部搜索算法 目录: 1.数学定义 ...
- github 搜索_如何通过GitHub快速的搜索资源?
最近在研究GitHub的使用,所以刚好借这次机会跟大家分享一下GitHub的使用. GitHub应该大部分人都知道,或多或少的接触过它.有些人可能使用它搜索更多的学习资料,有些人使用它管理自己的资源, ...
- python实现大规模邻域搜索(LNS)求解旅行商问题(TSP)
文章目录 1. 大规模邻域搜索算法 1.1. LNS定义 1.2. LNS邻域 1.3. LNS框架 2. 旅行商问题TSP 3. python代码示例及结果 1. 大规模邻域搜索算法 参考<H ...
- 如何删除计算机某个盘搜索记录,怎么快速删除搜索记录 如何随意删除指定的那条记录...
如何快速删除搜索记录,具体详细内容如下所示 我们网吧的时候如果不小心在IE上留下很多隐私的的搜索记录到时候你想哭都来不及,所以我们平时要养成一个好的习惯,我朋友就碰到一次他是一个女同志,有一次他在网吧 ...
- 禁忌搜索(TS——Tabu Search)与邻域搜索基础知识
禁忌搜索,也是一种常见的邻域搜索算法.其实我觉得很多智能算法本质都是邻域搜索(本质是局部搜索)算法.只不过邻域的应用方式不同,是全局式的邻域搜索算法.比如,局部搜索中最经典的是"爬山算法&q ...
最新文章
- 这是Nginx的负载均衡配置方法
- Session保存到Memcache
- (转)在编写Spring框架的配置文件时,标签无提示符的解决办法
- 数据挖掘之模型选择和融合
- laravel5.5 尝试使用laravel安装器安装(失败) 最后还是用的composer。。。
- 关于WEB集群中文件服务器的讨论
- Google Talk Testing(早期版本)
- 16kb等于多少b_一篇文章讲透MySQL为什么要用B+树实现索引
- 中国油冷却单元行业市场供需与战略研究报告
- 确定你的台式计算机支持的内存类型,如何区分内存类型及查看内存的兼容性
- 二线城市-太原-程序员真实写照
- 微信摇一摇效果HTML,JavaScript+H5实现微信摇一摇功能
- 高中计算机手抄报图片大全集,高中生手抄报版面图大全
- iOS 中 XML 数据交换格式
- 使用Java SE8 Streams 处理数据,Part 2
- 三级数据库知识点学习(五)
- Linux指令--let
- offer different kinds of LED lights
- Arcgis二次开发——试用arcgis online、arcgis pro
- 大学计算机基础实践教程实验一讨论与思考,大学计算机基础实验报告手册(非艺术类).doc...
热门文章
- zabbix自动发现,端口 url检测
- Centos 7安装报错:Warning:dracut-initqueue timeout - starting timeout scripts
- 【EXCEPTION_INIT】自定义错误名称并关联错误号
- System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常
- React+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
- HBase中此类异常解决记录org.apache.hadoop.ipc.RemoteException(java.io.IOException):
- 使用Jstl异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannotnbs
- 深入解析Mysql 主从同步延迟原理及解决方案
- Undefined symbols for architecture armv7错误解决方法
- 在Java 8中,有没有一种简洁的方法可以迭代带有索引的流?