bool ex_segmentor::icp_registration (PointCloudPtr input_scene, PointCloudPtr result_transform, float // icp對(duì)象 icp. setInputSource (input_obj); //設(shè)置輸入源點(diǎn)云 icp. setInputTarget (input_scene); //設(shè)置輸入目標(biāo)點(diǎn)云 // Set the max correspondence distance to 5 cm (e.g., correspondences with higher distances will be ignored) icp. setMaxCorrespondenceDistance (max_distance); //設(shè)置最大匹配距離 0.05 // Set the maximum number of iterations (criterion 1 ) icp. setMaximumIterations (max_iteration) ; //設(shè)置最" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PCL匹配器濾除點(diǎn)云方法

麥辣雞腿堡 ? 來源:古月居 ? 作者:lovely_yoshino ? 2023-11-28 11:30 ? 次閱讀

匹配器

2.1 ICP點(diǎn)云精配準(zhǔn)

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對(duì)象       
 icp.setInputSource(input_obj);                            //設(shè)置輸入源點(diǎn)云       
 icp.setInputTarget(input_scene);                          //設(shè)置輸入目標(biāo)點(diǎn)云        // 
Set the max correspondence distance to 5cm (e.g., correspondences with higher distances will be ignored)        icp.setMaxCorrespondenceDistance(max_distance); //設(shè)置最大匹配距離 0.05        // 
Set the maximum number of iterations (criterion 1)        icp.setMaximumIterations(max_iteration); //設(shè)置最大迭代次數(shù) 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); //設(shè)置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點(diǎn)云粗配準(zhǔn)

void FPFH_generation(pcl::PointCloud&lt;PointXYZRGB&gt;::Ptr &input, FPFHCloud::Ptr &output) // FPFH特征提取    {        // 首先,生成法線       
 pcl::NormalEstimationOMP&lt;PointNormal, PointNormal&gt; nest;                  // OMP線程數(shù)       
 pcl::PointCloud&lt;PointNormal&gt;::Ptr temp(new pcl::PointCloud&lt;PointNormal&gt;); //構(gòu)建暫時(shí)點(diǎn)云       
 pcl::copyPointCloud(*input, *temp);                                       //拷貝點(diǎn)云        
nest.setRadiusSearch(0.01);                                               //設(shè)置半徑搜索范圍       
 nest.setInputCloud(temp);                                                 //設(shè)置輸入點(diǎn)云       
 nest.compute(*temp);                                                      //計(jì)算暫時(shí)點(diǎn)云        // 然后生成FPFH點(diǎn)云       pcl::FPFHEstimationOMP&lt;PointNormal, PointNormal, FPFH&gt; fest; // OMP線程數(shù)       
 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粗配準(zhǔn)方法   
 {        pcl::SampleConsensusPrerejective&lt;PointType, PointType, FPFH&gt; align; //采樣一致性預(yù)排除算法        
align.setInputSource(object);                                       //設(shè)置輸入源點(diǎn)云        
align.setSourceFeatures(object_feature);                            //設(shè)置輸入源特征點(diǎn)云       
 align.setInputTarget(scene);                                        //設(shè)置輸入目標(biāo)點(diǎn)云       
 align.setTargetFeatures(scene_feature);                             //設(shè)置輸入目標(biāo)特征點(diǎn)云       
 align.setMaximumIterations(5000);                                   // 設(shè)置最大迭代次數(shù)       
 align.setNumberOfSamples(7);                                        // 設(shè)置采樣點(diǎn)數(shù)       
 align.setCorrespondenceRandomness(10);                              // 設(shè)置隨機(jī)匹配點(diǎn)數(shù)       
 align.setSimilarityThreshold(0.5f);                                 // 設(shè)置相似度閾值       
 align.setMaxCorrespondenceDistance(0.01f);                          // 設(shè)置最大匹配距離       
 align.setInlierFraction(0.05f);                                     // 設(shè)置內(nèi)點(diǎn)比例        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點(diǎn)云粗配準(zhǔn)

void ex_segmentor::PCA_registration(pcl::PointCloud< PointXYZRGB >::Ptr
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 匹配器
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    5710
  • PCL
    PCL
    +關(guān)注

    關(guān)注

    1

    文章

    32

    瀏覽量

    13636
  • 點(diǎn)云
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    3763
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PCL點(diǎn)庫介紹及項(xiàng)目配置方式

    關(guān)于PCL點(diǎn)庫,大家百度的時(shí)候可以找到很多相關(guān)的介紹,反正一堆專業(yè)性概念,相關(guān)的技術(shù)層面以及一些強(qiáng)大的應(yīng)用敘述云云,不過關(guān)于這些小編實(shí)在不感冒,能先把這個(gè)工具好好用起來再說吧。關(guān)于PCL
    發(fā)表于 07-02 07:44

    一種用于點(diǎn)模式匹配的改進(jìn)型譜方法

    利用譜方法進(jìn)行點(diǎn)模式匹配的主要問題是對(duì)點(diǎn)的位置噪聲比較敏感。為了提高譜方法對(duì)噪聲的魯棒性,該文在表示矩陣的構(gòu)建過程中采用高斯加權(quán)的近鄰矩陣對(duì)
    發(fā)表于 03-31 09:44 ?11次下載

    改進(jìn)的特征點(diǎn)匹配算法

    特征點(diǎn)匹配是計(jì)算機(jī)視覺中的關(guān)鍵步驟,在很多領(lǐng)域中都有著的重要應(yīng)用。通過對(duì)當(dāng)前圖像特征點(diǎn)匹配方法的研究,提取一種基于特征點(diǎn)的灰度量和幾何特征量
    發(fā)表于 05-19 17:20 ?0次下載
    改進(jìn)的特征<b class='flag-5'>點(diǎn)</b><b class='flag-5'>匹配</b>算法

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

    針對(duì)尺度不變特征變換( SIFT)描述子僅利用特征點(diǎn)的局部鄰域灰度信息而對(duì)圖像內(nèi)具有相似灰度分布的特征點(diǎn)易產(chǎn)生誤匹配的問題,提出一種基于典型相關(guān)分析( CCA)的sivr誤匹配剔除
    發(fā)表于 12-29 14:44 ?0次下載

    配器點(diǎn)涂技術(shù)的特點(diǎn)及方法介紹

    配器點(diǎn)涂技術(shù)是指將貼片膠一滴一滴地點(diǎn)涂在PCB貼裝SMD的部位上。根據(jù)施壓方式不同,常用的分配器點(diǎn)涂技術(shù)有三種方法。
    的頭像 發(fā)表于 10-21 11:40 ?4671次閱讀

    無序抓取の3D點(diǎn)匹配案例分享

    這是一個(gè)實(shí)際拍攝的點(diǎn)云圖,經(jīng)過了坐標(biāo)系糾正變換,更方便查看點(diǎn)位置。里面有一塊平面就是我們需要匹配的目標(biāo)點(diǎn)。
    的頭像 發(fā)表于 09-24 11:39 ?3328次閱讀

    點(diǎn)匹配與ICP算法基本思想

    ICP(Iterative Closest Point迭代最近點(diǎn))算法是一種點(diǎn)集對(duì)點(diǎn)集配準(zhǔn)方法。如下圖所示,PR(紅色點(diǎn)
    的頭像 發(fā)表于 09-24 12:43 ?3752次閱讀
    <b class='flag-5'>點(diǎn)</b><b class='flag-5'>云</b><b class='flag-5'>匹配</b>與ICP算法基本思想

    圖像匹配應(yīng)用及方法

    圖像匹配 應(yīng)用: 目標(biāo)識(shí)別、目標(biāo)跟蹤、超分辨率影像重建、視覺導(dǎo)航、圖像拼接、三維重建、視覺定位、場(chǎng)景深度計(jì)算 方法: 基于深度學(xué)習(xí)的特征點(diǎn)匹配算法、實(shí)時(shí)
    的頭像 發(fā)表于 12-26 11:08 ?6825次閱讀

    一種多幅點(diǎn)數(shù)據(jù)與紋理序列自動(dòng)配準(zhǔn)方法

    方法點(diǎn)數(shù)據(jù)生成強(qiáng)度圖像,通過特征匹配得到紋理影像與強(qiáng)度圖像間的匹配關(guān)系,利用RANSAC算法進(jìn)行匹配
    發(fā)表于 03-18 10:42 ?5次下載
    一種多幅<b class='flag-5'>點(diǎn)</b><b class='flag-5'>云</b>數(shù)據(jù)與紋理序列自動(dòng)配準(zhǔn)<b class='flag-5'>方法</b>

    使用CUDA PCL 1.0加速Jetson的點(diǎn)處理

      很多Jetson用戶在自動(dòng)化解決方案中選擇激光雷達(dá)進(jìn)行定位和感知。激光雷達(dá)使用3D點(diǎn)描繪周圍的空間環(huán)境。點(diǎn)可以高精度長距離采樣物體表面信息以便于上層應(yīng)用的障礙感知、繪圖、定位和
    的頭像 發(fā)表于 04-27 10:53 ?3867次閱讀
    使用CUDA <b class='flag-5'>PCL</b> 1.0加速Jetson的<b class='flag-5'>點(diǎn)</b><b class='flag-5'>云</b>處理

    SDMNet:大規(guī)模激光雷達(dá)點(diǎn)配準(zhǔn)的稀疏到稠密匹配網(wǎng)絡(luò)

    為了處理上述的問題,我們提出了SDMNet,一種新的由稀疏到密集的針對(duì)大規(guī)模室外點(diǎn)的配準(zhǔn)方法。稀疏到稠密匹配方案如圖1(c)所示。具體而言,我們將配準(zhǔn)問題分為兩個(gè)階段,即稀疏
    的頭像 發(fā)表于 05-24 15:53 ?973次閱讀
    SDMNet:大規(guī)模激光雷達(dá)<b class='flag-5'>點(diǎn)</b><b class='flag-5'>云</b>配準(zhǔn)的稀疏到稠密<b class='flag-5'>匹配</b>網(wǎng)絡(luò)

    Lane Tech PCL:通過語音命令的東西分配器

    電子發(fā)燒友網(wǎng)站提供《Lane Tech PCL:通過語音命令的東西分配器.zip》資料免費(fèi)下載
    發(fā)表于 06-26 11:36 ?0次下載
    Lane Tech <b class='flag-5'>PCL</b>:通過語音命令的東西分<b class='flag-5'>配器</b>

    基于深度學(xué)習(xí)的點(diǎn)分割的方法介紹

    基于視圖和投影的方法、基于體素的方法、無序點(diǎn)方法、有序點(diǎn)
    發(fā)表于 07-20 15:23 ?0次下載

    點(diǎn)濾波與匹配進(jìn)階干貨收藏

    之前作者專門為點(diǎn)匹配寫了幾篇博客,但是我們發(fā)現(xiàn)最近幾年有更多的新方法已經(jīng)在不斷地被使用。 同時(shí)之前有些內(nèi)容也沒有很好的概括,所以這里我們將作為一篇進(jìn)階文章來介紹這些
    的頭像 發(fā)表于 11-06 11:03 ?534次閱讀

    PCL中基礎(chǔ)下采樣介紹

    顧名思義,隨機(jī)下采樣就似乎在原始點(diǎn)云中隨機(jī)采樣一定點(diǎn)數(shù)的點(diǎn)。這種方法最終得到的點(diǎn)數(shù)量也是固定的。 pcl::PointCloud ::Pt
    的頭像 發(fā)表于 11-21 17:03 ?722次閱讀
    <b class='flag-5'>PCL</b>中基礎(chǔ)下采樣介紹