匹配器
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浏览量
5642 -
PCL
+关注
关注
1文章
31浏览量
13597 -
点云
+关注
关注
0文章
58浏览量
3724
发布评论请先 登录
相关推荐
[灌水]天线阻抗匹配器ZN28100
ZN28100天线阻抗匹配器是参照国标GB18655-2002《用于保护车载接收机的无线电骚扰特性的限值和测量方法》研制的。 &
发表于 04-16 14:14
阻抗匹配器
频率而变化,输送多频信号时,将因机、线阻抗难于匹配而出现失真。阻抗匹配器,是微波电子学里的一部分,主要用于传输线上,来达至所有高频的微波信号皆能传至负载点的目的,不会有信号反射回来源点,从而提升能源效益。http://www.g
发表于 06-01 09:08
电源适配器拆开方法及维修步骤
:次级滤波电容,规格为820uF/25V,共有两个,起滤除低压直流电中的纹波的作用。除上述元件外,电路板上还有可调电位器及其它阻容元件。 电源适配器拆开方法及维修步骤 电源适配器
发表于 12-29 10:48
确定适配器是否相位匹配的最佳方法是什么?
没有安装名称的5个适配器,可能是中文副本。我有点怀疑是这样,因为质量非常高,但这并非不可能。我可以想到几种方法,我可以检查这些适配器是否相位匹配,但想知道*最佳方式。是否公布了Agil
发表于 05-28 10:36
两种阻抗匹配方法讨论
应用阻抗匹配器使负载与传输线特性阻抗相匹配,如图 2-12 所示。由于信源端一般用隔离器或去耦衰减器以实现信源端匹配, 因此我们着重讨论负载匹配的方
发表于 06-03 06:51
计算机中丢失OpenNI2.dll相关资料下载
计算机中丢失OpenNI2.dll在使用PCL点云库时,直接用pcl_mesh_sampling.exe或是pcl_mesh_samplin
发表于 07-01 11:39
PCL点云库介绍及项目配置方式
关于PCL点云库,大家百度的时候可以找到很多相关的介绍,反正一堆专业性概念,相关的技术层面以及一些强大的应用叙述云云,不过关于这些小编实在不感冒,能先把这个工具好好用起来再说吧。关于PCL
发表于 07-02 07:44
PCL放置和编辑元件的方法有哪些详细教程说明
本文档的主要内容详细介绍的是PCL放置和编辑元件的方法有哪些详细教程说明包括了:1查找元件和装入元件库,2放置元件,3编辑元件与对象,4调整原理图中元件的封装模型
发表于 11-14 15:50
•92次下载
PCL中基础下采样介绍
顾名思义,随机下采样就似乎在原始点云中随机采样一定点数的点。这种方法最终得到的点云数量也是固定的。 pcl::PointCloud ::Ptr cloud_sub( new pcl
评论