0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCL匹配器滤除点云方法

麦辣鸡腿堡 来源:古月居 作者:lovely_yoshino 2023-11-28 11:30 次阅读

匹配器

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&lt;PointXYZRGB&gt;::Ptr &input, FPFHCloud::Ptr &output) // FPFH特征提取    {        // 首先,生成法线       
 pcl::NormalEstimationOMP&lt;PointNormal, PointNormal&gt; nest;                  // OMP线程数       
 pcl::PointCloud&lt;PointNormal&gt;::Ptr temp(new pcl::PointCloud&lt;PointNormal&gt;); //构建暂时点云       
 pcl::copyPointCloud(*input, *temp);                                       //拷贝点云        
nest.setRadiusSearch(0.01);                                               //设置半径搜索范围       
 nest.setInputCloud(temp);                                                 //设置输入点云       
 nest.compute(*temp);                                                      //计算暂时点云        // 然后生成FPFH点云       pcl::FPFHEstimationOMP&lt;PointNormal, PointNormal, FPFH&gt; fest; // OMP线程数       
 fest.setRadiusSearch(0.01);                                  // 0.025        
fest.setInputCloud(temp);       
 fest.setInputNormals(temp);        fest.compute(*output);    }    
template &lt;typename PointType, typename PointCloudPtr&gt;    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&lt;PointType, PointType, FPFH&gt; 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-&gt;size(), object-&gt;size());            // return (float(align.getInliers().size()) / float(object-&gt;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-&gt;size(), cluster_feature-&gt;size());   
 bool FPFH_match_success = FPFH_matching&lt;PointXYZRGB&gt;(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
    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是什么?怎样去编写并调试PCL程序?
    发表于 10-09 08:19

    半导体管阻抗匹配器

    如图所示是半导体阻抗匹配器,它实际上是一个半导体共集电极电路,又称为射极输出器.
    发表于 01-31 12:00 1065次阅读
    半导体管阻抗<b class='flag-5'>匹配器</b>

    场效应管阻抗匹配器

    场效应管阻抗匹配器
    发表于 01-31 12:02 3811次阅读
    场效应管阻抗<b class='flag-5'>匹配器</b>

    磁放大器阻抗匹配器电路图

    磁放大器阻抗匹配器电路图
    发表于 07-03 13:35 731次阅读
    磁放大器阻抗<b class='flag-5'>匹配器</b>电路图

    PCL放置和编辑元件的方法有哪些详细教程说明

    本文档的主要内容详细介绍的是PCL放置和编辑元件的方法有哪些详细教程说明包括了:1查找元件和装入元件库,2放置元件,3编辑元件与对象,4调整原理图中元件的封装模型
    发表于 11-14 15:50 92次下载
    <b class='flag-5'>PCL</b>放置和编辑元件的<b class='flag-5'>方法</b>有哪些详细教程说明

    Lane Tech PCL:通过语音命令的东西分配器

    电子发烧友网站提供《Lane Tech PCL:通过语音命令的东西分配器.zip》资料免费下载
    发表于 06-26 11:36 0次下载
    Lane Tech <b class='flag-5'>PCL</b>:通过语音命令的东西分<b class='flag-5'>配器</b>

    在Ubuntu上编译安装pcl教程

    编译安装PCL(Point Cloud Library)是在Ubuntu上使用自定义选项进行安装的一种方式。
    的头像 发表于 10-26 09:36 430次阅读

    PCL中基础下采样介绍

    顾名思义,随机下采样就似乎在原始点云中随机采样一定点数的点。这种方法最终得到的点云数量也是固定的。 pcl::PointCloud ::Ptr cloud_sub( new pcl
    的头像 发表于 11-21 17:03 437次阅读
    <b class='flag-5'>PCL</b>中基础下采样介绍