匹配器
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
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
匹配器
+關注
關注
0文章
6瀏覽量
5803 -
PCL
+關注
關注
1文章
35瀏覽量
13888 -
點云
+關注
關注
0文章
58瀏覽量
3933
發(fā)布評論請先 登錄
相關推薦
熱點推薦
PCL點云庫介紹及項目配置方式
關于PCL點云庫,大家百度的時候可以找到很多相關的介紹,反正一堆專業(yè)性概念,相關的技術層面以及一些強大的應用敘述云云,不過關于這些小編實在不感冒,能先把這個工具好好用起來再說吧。關于PCL
發(fā)表于 07-02 07:44
一種用于點模式匹配的改進型譜方法
利用譜方法進行點模式匹配的主要問題是對點的位置噪聲比較敏感。為了提高譜方法對噪聲的魯棒性,該文在表示矩陣的構建過程中采用高斯加權的近鄰矩陣對
發(fā)表于 03-31 09:44
?11次下載
改進的特征點匹配算法
特征點匹配是計算機視覺中的關鍵步驟,在很多領域中都有著的重要應用。通過對當前圖像特征點匹配方法的研究,提取一種基于特征點的灰度量和幾何特征量
發(fā)表于 05-19 17:20
?0次下載

基于CCA的SIFT誤匹配剔除方法
針對尺度不變特征變換( SIFT)描述子僅利用特征點的局部鄰域灰度信息而對圖像內具有相似灰度分布的特征點易產生誤匹配的問題,提出一種基于典型相關分析( CCA)的sivr誤匹配剔除
發(fā)表于 12-29 14:44
?0次下載
分配器點涂技術的特點及方法介紹
分配器點涂技術是指將貼片膠一滴一滴地點涂在PCB貼裝SMD的部位上。根據施壓方式不同,常用的分配器點涂技術有三種方法。
無序抓取の3D點云匹配案例分享
這是一個實際拍攝的點云圖,經過了坐標系糾正變換,更方便查看點云位置。里面有一塊平面就是我們需要匹配的目標點云。
圖像匹配應用及方法
圖像匹配 應用: 目標識別、目標跟蹤、超分辨率影像重建、視覺導航、圖像拼接、三維重建、視覺定位、場景深度計算 方法: 基于深度學習的特征點匹配算法、實時
使用CUDA PCL 1.0加速Jetson的點云處理
很多Jetson用戶在自動化解決方案中選擇激光雷達進行定位和感知。激光雷達使用3D點云描繪周圍的空間環(huán)境。點云可以高精度長距離采樣物體表面信息以便于上層應用的障礙感知、繪圖、定位和

SDMNet:大規(guī)模激光雷達點云配準的稀疏到稠密匹配網絡
為了處理上述的問題,我們提出了SDMNet,一種新的由稀疏到密集的針對大規(guī)模室外點云的配準方法。稀疏到稠密匹配方案如圖1(c)所示。具體而言,我們將配準問題分為兩個階段,即稀疏

Lane Tech PCL:通過語音命令的東西分配器
電子發(fā)燒友網站提供《Lane Tech PCL:通過語音命令的東西分配器.zip》資料免費下載
發(fā)表于 06-26 11:36
?0次下載

點云濾波與匹配進階干貨收藏
之前作者專門為點云匹配寫了幾篇博客,但是我們發(fā)現最近幾年有更多的新方法已經在不斷地被使用。
同時之前有些內容也沒有很好的概括,所以這里我們將作為一篇進階文章來介紹這些
評論