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

    浏览量

    5747
  • PCL
    PCL
    +关注

    关注

    1

    文章

    35

    浏览量

    13690
  • 点云
    +关注

    关注

    0

    文章

    58

    浏览量

    3804
收藏 人收藏

    评论

    相关推荐

    PCL库介绍及项目配置方式

    关于PCL库,大家百度的时候可以找到很多相关的介绍,反正一堆专业性概念,相关的技术层面以及一些强大的应用叙述云云,不过关于这些小编实在不感冒,能先把这个工具好好用起来再说吧。关于PCL
    发表于 07-02 07:44

    一种用于模式匹配的改进型谱方法

    利用谱方法进行模式匹配的主要问题是对的位置噪声比较敏感。为了提高谱方法对噪声的鲁棒性,该文在表示矩阵的构建过程中采用高斯加权的近邻矩阵对
    发表于 03-31 09:44 11次下载

    改进的特征匹配算法

    特征匹配是计算机视觉中的关键步骤,在很多领域中都有着的重要应用。通过对当前图像特征匹配方法的研究,提取一种基于特征的灰度量和几何特征量
    发表于 05-19 17:20 0次下载
    改进的特征<b class='flag-5'>点</b><b class='flag-5'>匹配</b>算法

    基于CCA的SIFT误匹配剔除方法

    针对尺度不变特征变换( SIFT)描述子仅利用特征的局部邻域灰度信息而对图像内具有相似灰度分布的特征易产生误匹配的问题,提出一种基于典型相关分析( CCA)的sivr误匹配剔除
    发表于 12-29 14:44 0次下载

    配器涂技术的特点及方法介绍

    配器涂技术是指将贴片胶一滴一滴地点涂在PCB贴装SMD的部位上。根据施压方式不同,常用的分配器涂技术有三种方法
    的头像 发表于 10-21 11:40 4843次阅读

    无序抓取の3D匹配案例分享

    这是一个实际拍摄的云图,经过了坐标系纠正变换,更方便查看点位置。里面有一块平面就是我们需要匹配的目标点
    的头像 发表于 09-24 11:39 3529次阅读

    匹配与ICP算法基本思想

    ICP(Iterative Closest Point迭代最近)算法是一种集对集配准方法。如下图所示,PR(红色
    的头像 发表于 09-24 12:43 3880次阅读
    <b class='flag-5'>点</b><b class='flag-5'>云</b><b class='flag-5'>匹配</b>与ICP算法基本思想

    图像匹配应用及方法

    图像匹配 应用: 目标识别、目标跟踪、超分辨率影像重建、视觉导航、图像拼接、三维重建、视觉定位、场景深度计算 方法: 基于深度学习的特征匹配算法、实时
    的头像 发表于 12-26 11:08 7033次阅读

    一种多幅数据与纹理序列自动配准方法

    方法数据生成强度图像,通过特征匹配得到纹理影像与强度图像间的匹配关系,利用RANSAC算法进行匹配
    发表于 03-18 10:42 5次下载
    一种多幅<b class='flag-5'>点</b><b class='flag-5'>云</b>数据与纹理序列自动配准<b class='flag-5'>方法</b>

    使用CUDA PCL 1.0加速Jetson的处理

      很多Jetson用户在自动化解决方案中选择激光雷达进行定位和感知。激光雷达使用3D描绘周围的空间环境。可以高精度长距离采样物体表面信息以便于上层应用的障碍感知、绘图、定位和
    的头像 发表于 04-27 10:53 4093次阅读
    使用CUDA <b class='flag-5'>PCL</b> 1.0加速Jetson的<b class='flag-5'>点</b><b class='flag-5'>云</b>处理

    SDMNet:大规模激光雷达配准的稀疏到稠密匹配网络

    为了处理上述的问题,我们提出了SDMNet,一种新的由稀疏到密集的针对大规模室外的配准方法。稀疏到稠密匹配方案如图1(c)所示。具体而言,我们将配准问题分为两个阶段,即稀疏
    的头像 发表于 05-24 15:53 1236次阅读
    SDMNet:大规模激光雷达<b class='flag-5'>点</b><b class='flag-5'>云</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>

    基于深度学习的分割的方法介绍

    基于视图和投影的方法、基于体素的方法、无序方法、有序
    发表于 07-20 15:23 3次下载

    滤波与匹配进阶干货收藏

    之前作者专门为匹配写了几篇博客,但是我们发现最近几年有更多的新方法已经在不断地被使用。 同时之前有些内容也没有很好的概括,所以这里我们将作为一篇进阶文章来介绍这些
    的头像 发表于 11-06 11:03 836次阅读

    PCL中基础下采样介绍

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