匹配器
2.1 ICP点云精配准
template < typename PointCloudPtr > bool ex_segmentor::icp_registration(PointCloudPtr &input_obj, PointCloudPtr &input_scene, PointCloudPtr &output_obj, Eigen::Matrix4f &result_transform, float &result_error, uint max_iteration, float max_distance, float ransac_th) // icp匹配
{ pcl::IterativeClosestPoint< PointXYZRGB, PointXYZRGB > icp; // icp对象
icp.setInputSource(input_obj); //设置输入源点云
icp.setInputTarget(input_scene); //设置输入目标点云 //
Set the max correspondence distance to 5cm (e.g., correspondences with higher distances will be ignored) icp.setMaxCorrespondenceDistance(max_distance); //设置最大匹配距离 0.05 //
Set the maximum number of iterations (criterion 1) icp.setMaximumIterations(max_iteration); //设置最大迭代次数 50 // Set the transformation epsilon (criterion 2) //
icp.setTransformationEpsilon (1e-5); //1e-8 //
Set the euclidean distance difference epsilon (criterion 3) //
icp.setEuclideanFitnessEpsilon (0.000001); //1
icp.setRANSACOutlierRejectionThreshold(ransac_th); //设置RANSAC阈值
icp.align(*output_obj); // icp匹配 if (icp.hasConverged()) //如果icp匹配成功
{ result_transform = icp.getFinalTransformation(); //获取最终变换矩阵
result_error = icp.getFitnessScore(); //获取最终匹配误差
return true; }
else
{ result_transform = Eigen::Matrix4f::Identity(4, 4); result_error = 1.0; return false; } }/** icp_registration(object_aligned, cluster, Final, icp_result_transform, icp_error);**/
2.2 FPFH点云粗配准
void FPFH_generation(pcl::PointCloud<PointXYZRGB>::Ptr &input, FPFHCloud::Ptr &output) // FPFH特征提取 { // 首先,生成法线
pcl::NormalEstimationOMP<PointNormal, PointNormal> nest; // OMP线程数
pcl::PointCloud<PointNormal>::Ptr temp(new pcl::PointCloud<PointNormal>); //构建暂时点云
pcl::copyPointCloud(*input, *temp); //拷贝点云
nest.setRadiusSearch(0.01); //设置半径搜索范围
nest.setInputCloud(temp); //设置输入点云
nest.compute(*temp); //计算暂时点云 // 然后生成FPFH点云 pcl::FPFHEstimationOMP<PointNormal, PointNormal, FPFH> fest; // OMP线程数
fest.setRadiusSearch(0.01); // 0.025
fest.setInputCloud(temp);
fest.setInputNormals(temp); fest.compute(*output); }
template <typename PointType, typename PointCloudPtr> bool
FPFH_matching(PointCloudPtr &object, FPFHCloud::Ptr &object_feature, PointCloudPtr &scene, FPFHCloud::Ptr &scene_feature, PointCloudPtr &result_cloud, Eigen::Matrix4f &result_transformation) // FPFH粗配准方法
{ pcl::SampleConsensusPrerejective<PointType, PointType, FPFH> align; //采样一致性预排除算法
align.setInputSource(object); //设置输入源点云
align.setSourceFeatures(object_feature); //设置输入源特征点云
align.setInputTarget(scene); //设置输入目标点云
align.setTargetFeatures(scene_feature); //设置输入目标特征点云
align.setMaximumIterations(5000); // 设置最大迭代次数
align.setNumberOfSamples(7); // 设置采样点数
align.setCorrespondenceRandomness(10); // 设置随机匹配点数
align.setSimilarityThreshold(0.5f); // 设置相似度阈值
align.setMaxCorrespondenceDistance(0.01f); // 设置最大匹配距离
align.setInlierFraction(0.05f); // 设置内点比例 align.align(*result_cloud); if (align.hasConverged())
{ result_transformation = align.getFinalTransformation(); //获取最终变换矩阵 // pcl::console::print_info("Inliers: %i/%i , %in", align.getInliers().size(), scene->size(), object->size()); // return (float(align.getInliers().size()) / float(object->size())); return true; } // return 0.0f; return false; }/**
FPFHCloud::Ptr cluster_feature(new FPFHCloud); FPFH_generation(cluster, cluster_feature);
ROS_INFO("cluster_size : %d, feature size : %d", cluster->size(), cluster_feature->size());
bool FPFH_match_success = FPFH_matching<PointXYZRGB>(object_, object_feature_, cluster, cluster_feature, object_aligned, align_result_transform);**/
2.3 PCA点云粗配准
void ex_segmentor::PCA_registration(pcl::PointCloud< PointXYZRGB >::Ptr
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
匹配器
+关注
关注
0文章
6浏览量
5747 -
PCL
+关注
关注
1文章
35浏览量
13690 -
点云
+关注
关注
0文章
58浏览量
3804
发布评论请先 登录
相关推荐
PCL点云库介绍及项目配置方式
关于PCL点云库,大家百度的时候可以找到很多相关的介绍,反正一堆专业性概念,相关的技术层面以及一些强大的应用叙述云云,不过关于这些小编实在不感冒,能先把这个工具好好用起来再说吧。关于PCL
发表于 07-02 07:44
一种用于点模式匹配的改进型谱方法
利用谱方法进行点模式匹配的主要问题是对点的位置噪声比较敏感。为了提高谱方法对噪声的鲁棒性,该文在表示矩阵的构建过程中采用高斯加权的近邻矩阵对
发表于 03-31 09:44
•11次下载
改进的特征点匹配算法
特征点匹配是计算机视觉中的关键步骤,在很多领域中都有着的重要应用。通过对当前图像特征点匹配方法的研究,提取一种基于特征点的灰度量和几何特征量
发表于 05-19 17:20
•0次下载
基于CCA的SIFT误匹配剔除方法
针对尺度不变特征变换( SIFT)描述子仅利用特征点的局部邻域灰度信息而对图像内具有相似灰度分布的特征点易产生误匹配的问题,提出一种基于典型相关分析( CCA)的sivr误匹配剔除
发表于 12-29 14:44
•0次下载
分配器点涂技术的特点及方法介绍
分配器点涂技术是指将贴片胶一滴一滴地点涂在PCB贴装SMD的部位上。根据施压方式不同,常用的分配器点涂技术有三种方法。
图像匹配应用及方法
图像匹配 应用: 目标识别、目标跟踪、超分辨率影像重建、视觉导航、图像拼接、三维重建、视觉定位、场景深度计算 方法: 基于深度学习的特征点匹配算法、实时
使用CUDA PCL 1.0加速Jetson的点云处理
很多Jetson用户在自动化解决方案中选择激光雷达进行定位和感知。激光雷达使用3D点云描绘周围的空间环境。点云可以高精度长距离采样物体表面信息以便于上层应用的障碍感知、绘图、定位和
SDMNet:大规模激光雷达点云配准的稀疏到稠密匹配网络
为了处理上述的问题,我们提出了SDMNet,一种新的由稀疏到密集的针对大规模室外点云的配准方法。稀疏到稠密匹配方案如图1(c)所示。具体而言,我们将配准问题分为两个阶段,即稀疏
点云滤波与匹配进阶干货收藏
之前作者专门为点云匹配写了几篇博客,但是我们发现最近几年有更多的新方法已经在不断地被使用。
同时之前有些内容也没有很好的概括,所以这里我们将作为一篇进阶文章来介绍这些
评论