色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PCL濾波配準常用的濾波方式

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

最近在看PCL濾波配準等操作,之前在自動駕駛-激光雷達預處理/特征提取和提到了一些濾除點云等操作,但是最近作者發現里面還有一些配準的方法還沒有提到,所以這里重新開個章節來給大家列舉一些常用的濾波方式,方便大家查閱和使用

濾波&聚類

1.1 直通濾波器

void pass_through_filter(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &input_cloud) //直通濾波器    {        std::cout < < "start pass_through_filter" < < std::endl;        calc_sight_center(); //計算視點中心,視點中心為濾波器的輸入參數        // 
void ex_segmentor::calc_sight_center()        // {        // double roll, pitch, yaw;        // 
tf::Quaternion quat_tmp;        // tf::quaternionMsgToTF(latest_camera_pos_.pose.pose.orientation, quat_tmp);        // tf::Matrix3x3(quat_tmp).getRPY(roll, pitch, yaw);        // centerX_ = latest_camera_pos_.pose.pose.position.x + gaze_length_ * cos(yaw);        //
 centerY_ = latest_camera_pos_.pose.pose.position.y + gaze_length_ * sin(yaw);        // 
centerZ_ = latest_camera_pos_.pose.pose.position.z - gaze_length_ * sin(pitch);        // }        // 
build the condition        pcl::ConditionAnd< pcl::PointXYZRGB >::Ptr range_limit(new pcl::ConditionAnd< pcl::PointXYZRGB >);                                                                         //構建范圍限制條件        
range_limit- >addComparison(pcl::FieldComparison< pcl::PointXYZRGB >::ConstPtr(new pcl::FieldComparison< pcl::PointXYZRGB >("x", pcl::ComparisonOps::GT, centerX_ - 1.5))); // x坐標大于視點中心x坐標-1.5        range_limit- >addComparison(pcl::FieldComparison< pcl::PointXYZRGB >::ConstPtr(new pcl::FieldComparison< pcl::PointXYZRGB >("x", pcl::ComparisonOps::LT, centerX_ + 1.5))); // x坐標小于視點中心x坐標+1.5       
 range_limit- >addComparison(pcl::FieldComparison< pcl::PointXYZRGB >::ConstPtr(new pcl::FieldComparison< pcl::PointXYZRGB >("y", pcl::ComparisonOps::GT, centerY_ - 1.5))); // y坐標大于視點中心y坐標-1.5        
range_limit- >addComparison(pcl::FieldComparison< pcl::PointXYZRGB >::ConstPtr(new pcl::FieldComparison< pcl::PointXYZRGB >("y", pcl::ComparisonOps::LT, centerY_ + 1.5))); // y坐標小于視點中心y坐標+1.5        
range_limit- >addComparison(pcl::FieldComparison< pcl::PointXYZRGB >::ConstPtr(new pcl::FieldComparison< pcl::PointXYZRGB >("z", pcl::ComparisonOps::GT, centerZ_ - 1.5))); // z坐標大于視點中心z坐標-1.5        
range_limit- >addComparison(pcl::FieldComparison< pcl::PointXYZRGB >::ConstPtr(new pcl::FieldComparison< pcl::PointXYZRGB >("z", pcl::ComparisonOps::LT, centerZ_ + 1.5))); // z坐標小于視點中心z坐標+1.5        //構建濾波器 
       pcl::ConditionalRemoval< pcl::PointXYZRGB > condrem; //構建濾波器
        condrem.setCondition(range_limit);                 //設置濾波條件
        condrem.setInputCloud(input_cloud);                //設置輸入點云        //濾波操作       
 condrem.filter(*input_cloud);    }

1.2 離群點濾波器

void statical_outlier_filter(const pcl::PointCloud&lt;PointXYZRGB&gt;::Ptr &input_cloud, int nr_k, double stddev_mult) //濾波器移除離群點    {        pcl::StatisticalOutlierRemoval&lt;PointXYZRGB&gt; sorfilter(true); //構建濾波器        sorfilter.setInputCloud(input_cloud);        sorfilter.setMeanK(nr_k);                  //設置在進行統計時考慮的臨近點個數        sorfilter.setStddevMulThresh(stddev_mult); //設置判斷是否為離群點的閥值,用來倍乘標準差,也就是上面的stddev_mult        sorfilter.filter(*input_cloud);            //濾波結果存儲到cloud_filtered    }

1.3 體素化濾波器

void voxel_filter(const pcl::PointCloud< PointXYZRGB >::Ptr &input_cloud, float resolution) //體素化濾波器  
  {        pcl::VoxelGrid< PointXYZRGB > voxel_grid; //構建體素化濾波器
        voxel_grid.setInputCloud(input_cloud);   //設置輸入點云        
voxel_grid.setLeafSize(resolution, resolution, resolution); //設置體素的大小        voxel_grid.filter(*input_cloud); //濾波結果存儲到cloud_filtered    }

1.4 平面點濾除

bool remove_plane(const pcl::PointCloud< PointXYZRGB >::Ptr &input_cloud, const Eigen::Vector3f &axis, double plane_thickness) //移除平面    {        pcl::ModelCoefficients::Ptr 
coefficients(new pcl::ModelCoefficients); //平面參數矩陣        
pcl::PointIndices::Ptr inliers(new pcl::PointIndices);                //平面內點索引        // Create the 
segmentation object        pcl::SACSegmentation< pcl::PointXYZRGB > seg; //構建分割對象        
seg.setOptimizeCoefficients(true);                   //設置是否優化系數        
seg.setModelType(pcl::SACMODEL_PERPENDICULAR_PLANE); //設置模型類型為平面       
 seg.setMethodType(pcl::SAC_RANSAC);                  //設置分割方法為RANSAC        

seg.setMaxIterations(500);                           //設置最大迭代次數        seg.setAxis(axis);                                   //設置分割軸        seg.setEpsAngle(0.25);                               //設置角度閾值       
 seg.setDistanceThreshold(plane_thickness);           //設置距離閾值  0.025 0.018       
 seg.setInputCloud(input_cloud);                      //設置輸入點云        seg.segment(*inliers, 
*coefficients);                //分割平面        if (inliers- >indices.size() < 500)        {            // 
ROS_INFO("plane size is not enough large to remove.");            return false;        }       
 pcl::ExtractIndices< pcl::PointXYZRGB > extract;        extract.setInputCloud(input_cloud); //設置輸入點云        extract.setIndices(inliers);        //設置索引,用來濾除        extract.setNegative(true);          //設置是否濾除索引內的點        extract.filter(*input_cloud);        return true;    }

1.5 RGBD顏色特征聚類

void clustoring_with_color(pcl::PointCloud&lt;pcl::PointXYZRGB&gt;::Ptr &input_cloud, std::vector&lt;pcl::PointCloud&lt;PointXYZRGB&gt;::Ptr&gt; &clusters, int min_cluster_size, float distance_th, float color_th, float region_color_th, unsigned int num_nbr) //根據點云的顏色完成聚類    {        std::vector&lt;pcl::PointIndices&gt; clusters_indices;                                              //聚類索引        pcl::search::KdTree&lt;pcl::PointXYZRGB&gt;::Ptr kdtree(new pcl::search::KdTree&lt;pcl::PointXYZRGB&gt;); //構建kd樹        kdtree-&gt;setInputCloud(input_cloud);                                                           //設置輸入點云        // 基于顏色的區域生長聚類對象        

pcl::RegionGrowingRGB&lt;pcl::PointXYZRGB&gt; clustering;        clustering.setInputCloud(input_cloud);        clustering.setSearchMethod(kdtree); //設置搜索方法        // 這里,最小簇大小也會影響后處理步驟: 小于這個值的clusters_indices將與鄰點合并。       
clustering.setMinClusterSize(min_cluster_size); //設置最小簇大小        // 設置距離閾值,以知道哪些點將被視為,鄰點        clustering.setDistanceThreshold(distance_th); // 1        // 顏色閾值,用于比較兩個點的RGB顏色        clustering.setPointColorThreshold(color_th); // 9 6.5 25.0f 18.0f        // 后處理步驟的區域顏色閾值:顏色在閾值內的clusters_indices將合并為一個。       
clustering.setRegionColorThreshold(region_color_th); // 2        //區域耦合時檢查的附近的數量。默認為100, 在不影響結果的范圍內適度設定小范圍。       
clustering.setNumberOfRegionNeighbours(num_nbr); //設置近鄰數量        // 
clustering.setSmoothModeFlag(true);        // clustering.setSmoothnessThreshold(0.95);        
clustering.extract(clusters_indices); //提取聚類索引        for (std::vector&lt;pcl::PointIndices&gt;::const_iterator i = clusters_indices.begin(); i != 
clusters_indices.end(); ++i)//遍歷聚類索引        {            
pcl::PointCloud&lt;pcl::PointXYZRGB&gt;::Ptr cluster(new 
pcl::PointCloud&lt;pcl::PointXYZRGB&gt;); //構建聚類點云            for 
(std::vector&lt;int&gt;::const_iterator pit = i-&gt;indices.begin(); pit != i-&gt;indices.end(); ++pit) //遍歷聚類索引中的點索引            {                cluster-&gt;points.push_back(input_cloud-&gt;points[*pit]); //將點添加到聚類點云            }            cluster-&gt;width = cluster-&gt;points.size();            cluster-&gt;height = 1;            cluster-&gt;is_dense = true;            clusters.push_back(cluster); //將聚類點云添加到聚類點云集合中        }    }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • plc
    plc
    +關注

    關注

    5016

    文章

    13376

    瀏覽量

    464710
  • 濾波
    +關注

    關注

    10

    文章

    669

    瀏覽量

    56722
  • 點云
    +關注

    關注

    0

    文章

    58

    瀏覽量

    3806
收藏 人收藏

    評論

    相關推薦

    常用的經典濾波算法有哪些??

    常用的經典濾波算法有哪些??
    發表于 07-01 15:15

    跪求常用濾波方法

    常用濾波方法
    發表于 12-17 22:50

    matlab 圖像問題,有代碼,區域是綠色的,想要的是灰度圖像的區域,求助大神?

    ','joint');title('完成');set(gca,'units','pixels','Visible','off');frame=getframe;im1=frame2im(frame
    發表于 03-21 16:49

    AD轉換常用濾波算法

    AD轉換常用濾波算法
    發表于 08-01 10:46

    電路濾波方式提問

    有人知道這個電路圖中的四個電容作用分別是什么嗎?它的低通濾波為什么沒有電阻,還是只用了電容濾波濾波方式是什么?
    發表于 08-31 17:44

    大容量有源濾波與無功補償方式研究

    對于大容量諧波與無功功率補償,提出了采用混合型有源電力濾波器以及混合型濾波器與無源濾波器并聯補償的方式,分析了并聯運行時混合型濾波器與無源
    發表于 04-06 14:06 ?19次下載

    SAR圖像自動性能分析

    合成孔徑雷達(SAR)圖像的自動長期以來都未能很好的解決,特別是高分辨率SAR圖像其的關鍵是穩健的特征提取與特征匹配算法。在光學圖像
    發表于 04-28 15:04 ?26次下載

    濾波器的原理種類以及計算方式

    濾波器的濾波電路、原理種類以及計算方式
    的頭像 發表于 03-12 17:16 ?8.6w次閱讀
    <b class='flag-5'>濾波</b>器的原理種類以及計算<b class='flag-5'>方式</b>

    基于SIFT特征的圖像(圖像匹配)

     SIFT圖像處理代碼,必須和三個文件一起下載使用:基于SIFT特征的圖像(Matlab源代碼)、基于SIFT特征的圖像(仿真圖片)。
    發表于 08-06 08:00 ?3次下載

    基于SIFT特征的圖像(仿真圖片)

    SIFT圖像處理代碼,必須和三個文件一起下載使用:基于SIFT特征的圖像(Matlab源代碼)、基于SIFT特征的圖像(圖像匹配)。
    發表于 08-06 08:00 ?3次下載

    使用PCL進行點云數據粗算法的研究資料分析

    傳統ICP算法精度受點云初始位姿影響較大,收斂速度慢,不能滿足精細化點云建模的要求。基于此問題,通過基于快速點特征直方圖的采樣一致性方法進行粗。首先將兩幀待
    發表于 03-01 09:34 ?14次下載
    使用<b class='flag-5'>PCL</b>進行點云數據粗<b class='flag-5'>配</b><b class='flag-5'>準</b>算法的研究資料分析

    常用的數字濾波方法

    平均值濾波就是對多個采樣值進行平均算法,這是消除隨機誤差最常用的方法。
    的頭像 發表于 08-24 11:28 ?4.1w次閱讀

    電感濾波常用的三種方式

    電感濾波常用方式如下:1、L型濾波其原理就是輸入端串入一個電感,電感濾除高頻信號效果最明顯,主要是利用電感中的電流不能突變的原理,當電感中的電流增大時,將其存儲于電感當中使電流緩慢增
    的頭像 發表于 12-22 09:09 ?3.3w次閱讀

    濾波電容不同補償方式優缺點對比

    濾波電容不同補償方式優缺點對比? 濾波電容是電子電路中常用的元件,用于對信號進行濾波處理。不同的補償方式
    的頭像 發表于 01-04 16:00 ?1406次閱讀

    常用的ADC濾波算法有哪些

    ADC(模數轉換器)濾波算法在信號處理中起著至關重要的作用,它們能夠幫助我們提取出有用的信號,同時濾除噪聲和干擾。以下是常用的ADC濾波算法詳解,這些算法各具特色,適用于不同的應用場景。
    的頭像 發表于 10-08 14:35 ?477次閱讀
    主站蜘蛛池模板: 中文字幕99香蕉在线| 欧美日韩1区| 精品美女国产互换人妻| 亚洲人成电影网站| 中国老女人xxhd69| 国产扒开美女双腿屁股流白浆| 久久99国产精品无码AV| 青娱乐极品视觉盛宴av| 亚洲一区免费香蕉在线| 高挑人妻无奈张开腿| 蜜芽国产在线精品欧美| 亚洲色大成网站WWW永久麻豆| A级韩国乱理伦片在线观看| 精品亚洲一区二区在线播放 | 一个色夫导航| 在线不卡日本v二区| 国产69精品久久久久乱码韩国| 恋夜秀场支持安卓版全部视频国产| 小伙无套内射老女人| 俄罗斯bbbbbbbbb大片| 男人大臿蕉香蕉大视频| 青青草原伊人| 中文字幕无码他人妻味| 国产在线观看免费观看| 伸进同桌奶罩里摸她胸作文| jijzzizz中国版| 蜜桃AV色欲A片精品一区| 欲乱艳荡少寡妇全文免费| 国产曰韩无码亚洲视频| 偷偷要色偷偷| 在线 自拍 综合 亚洲 欧美| 国产精品自在在线午夜蜜芽tv在线| 日本后进式猛烈xx00动态图| 97精品在线观看| 久久中文字幕亚洲精品最新| 亚洲一级电影| 花蝴蝶高清观看免费| 亚洲va久久久久| 国内外成人免费在线视频| 亚洲精品久久久久久偷窥| 国内精品免费久久影院|