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

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

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

PCL中基礎下采樣介紹

麥辣雞腿堡 ? 來源:古月居 ? 作者:敢敢のwings ? 2023-11-21 17:03 ? 次閱讀

基礎下采樣

1.1 點云隨機下采樣

點云下采樣是對點云以一定的采樣規(guī)則重新進行采樣,目的是在保證點云整體幾何特征不變的情況下,降低點云的密度,進而可以降低相關(guān)處理的數(shù)據(jù)量和算法復雜度。

隨機下采樣顧名思義,隨機下采樣就似乎在原始點云中隨機采樣一定點數(shù)的點。這種方法最終得到的點云數(shù)量也是固定的。

pcl::PointCloud< PointT >::Ptr cloud_sub(new pcl::PointCloud< PointT >);    //隨機下采樣點云
    pcl::RandomSample< PointT > rs;    //創(chuàng)建濾波器對象
    rs.setInputCloud(cloud);                //設置待濾波點云
    rs.setSample(20000);                    //設置下采樣點云的點數(shù)
    //rs.setSeed(1);                        //設置隨機函數(shù)種子點
    rs.filter(*cloud_sub);                    //執(zhí)行下采樣濾波,保存濾波結(jié)果于cloud_sub

1.2 體素下采樣

體素下采樣的原理如圖1所示,首先將點云空間進行網(wǎng)格化,也稱體素化,即圖1(b),網(wǎng)格化后的每一個格子稱為體素,在這些劃分為一個個極小的格子中包含一些點,然后對這些點取平均或加權(quán)平均得到一個點,以此來替代原來網(wǎng)格中所有的點,即圖1(c)中藍色的點。顯然,網(wǎng)格選取越大則采樣之后的點云越少,處理速度變快,但會對原先點云過度模糊,網(wǎng)格選取越小,則作用相反。

圖片

pcl::VoxelGrid< pcl::PointXYZ > sor;    //創(chuàng)建體素網(wǎng)格采樣處理對象
 sor.setInputCloud(cloud);             //設置輸入點云
 sor.setLeafSize(0.01f, 0.01f, 0.01f); //設置體素大小,單位:m
 sor.filter(*cloud_filtered);          //進行下采樣

1.3 均勻采樣

均勻采樣的原理類似于體素化網(wǎng)格采樣方法,同樣是將點云空間進行劃分,不過是以半徑=r的球體,在當前球體所有點中選擇距離球體中心最近的點替代所有點,注意,此時點的位置是不發(fā)生移動的。

球體半徑選取越大則采樣之后的點云越少,處理速度變快,但會對原先點云過度模糊,網(wǎng)格選取越小,則作用相反。

pcl::UniformSampling< pcl::PointXYZ > form;   // 創(chuàng)建均勻采樣對象
form.setInputCloud(cloud);                  //設置輸入點云
form.setRadiusSearch(0.02f);                //設置半徑大小,單位:m
form.filter(*after_cloud);                  //執(zhí)行濾波處理

1.4 增采樣

增采樣的特點是可極大的增加點云數(shù)據(jù),但由于內(nèi)插點的不確定性會導致最后輸出的結(jié)果不一定準確。

//創(chuàng)建增采樣對象
pcl::MovingLeastSquares< pcl::PointXYZ,pcl::PointXYZ > filter;    
filter.setInputCloud(cloud);                     //設置輸入點云
pcl::search::KdTree< pcl::PointXYZ >::Ptr kdtree;  //定義搜索方法
filter.setSearchMethod(kdtree);                  //設置搜索方法
filter.setSearchRadius(0.03);    //設置搜索鄰域的半徑為3cm  
//Upsampling 采樣的方法還有 DISTINCT_CLOUD, RANDOM_UNIFORM_DENSITY
filter.setUpsamplingMethod(pcl::MovingLeastSquares< pcl::PointXYZ, pcl::PointXYZ >::SAMPLE_LOCAL_PLANE);     //對點云進行上采樣
filter.setUpsamplingRadius(0.03);    //設置采樣半徑大小,3cm
filter.setUpsamplingStepSize(0.02);  //設置采樣步長大小,2cm
filter.process(*after_cloud);      //執(zhí)行采樣操作

1.5 滑動最小二乘法采樣

滑動最小二乘法采樣的原理是將點云進行了滑動最小二乘法的映射,使得輸出的點云更加平滑。

pcl::PointCloud< pcl::PointNormal >::Ptr smoothedCloud(new pcl::PointCloud< pcl::PointNormal >);   //定義法線
pcl::MovingLeastSquares< pcl::PointXYZ, pcl::PointNormal > filter;
pcl::search::KdTree< pcl::PointXYZ >::Ptr kdtree;  //定義搜索方法
filter.setInputCloud(cloud);    //設置輸入點云
filter.setUpsamplingMethod();  //增加密度較小區(qū)域的密度對于holes的填補卻無能為力,具體方法要結(jié)合參數(shù)使用
filter.setSearchRadius(10);// 用于擬合的K近鄰半徑。在這個半徑里進行表面映射和曲面擬合。半徑越小擬合后曲面的失真度越小,反之有可能出現(xiàn)過擬合的現(xiàn)象。
filter.setPolynomialFit(true);  //對于法線的估計是有多項式還是僅僅依靠切線。true為加多項式;false不加,速度較快
filter.setPolynomialFit(3);      // 擬合曲線的階數(shù)
filter.setComputeNormals(true);  // 是否存儲點云的法向量,true 為存儲,false 不存儲
filter.setSearchMethod(kdtree); //設置搜索方法
filter.process(*smoothedCloud); //處理點云并輸出
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 濾波器
    +關(guān)注

    關(guān)注

    160

    文章

    7703

    瀏覽量

    177476
  • plc
    plc
    +關(guān)注

    關(guān)注

    5006

    文章

    13107

    瀏覽量

    461450
  • 采樣
    +關(guān)注

    關(guān)注

    1

    文章

    119

    瀏覽量

    25521
收藏 人收藏

    評論

    相關(guān)推薦

    GSM900 PCL指什么?

    GSM900 PCL指什么?
    發(fā)表于 05-11 09:32

    關(guān)于232的NCL,PCL的疑問

    有沒有大神接觸過這種232通訊的儀表,上面有NCL RXD,NCL TXD;PCL RXD,PCL TXD。這種能用DB9的芯片去采集數(shù)據(jù)嗎?我用DB9的RXD去接它的 NCL TXD,數(shù)據(jù)偶爾會有一位的偏移,請問該怎么正確的采集它的數(shù)據(jù),拜謝
    發(fā)表于 11-07 16:15

    PCL點云庫介紹及項目配置方式

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

    如何去配置PCL

    PCL是什么?怎樣去編寫并調(diào)試PCL程序?
    發(fā)表于 10-09 08:19

    PCL應用示例

    作為PCL系列的一個簡單的應用示例,該圖是與通常的1軸工作臺的機械系統(tǒng)連接的示例。按照從CPU接收的各動作數(shù)據(jù)中指定的方向運轉(zhuǎn)電機,定位在工作臺的行程內(nèi)。原點調(diào)整時,減速(SD)傳感器設為ON后減速
    發(fā)表于 11-04 16:18

    PCL6143運動控制器原理及應用

    PCL6143運動控制器的原理及應用 可以用于設計開發(fā)相應的芯片電路。介紹PCL6143 的功能結(jié)構(gòu)、主要寄存器以及指令系統(tǒng)。設計了一款基于PC104總線的四軸運動控制卡, 介紹了如
    發(fā)表于 09-26 08:14

    PCL6143運動控制器的原理及應用

       介紹PCL6143的功能結(jié)構(gòu)、主要寄存器以及指令系統(tǒng)。設計了一款基于PC104總線的四軸運動控制卡,介紹了如何編寫運動控制卡的功能函數(shù)庫。
    發(fā)表于 12-13 17:16 ?106次下載
    <b class='flag-5'>PCL</b>6143運動控制器的原理及應用

    PCL電梯控制系統(tǒng)

    電子設計研發(fā)部分的研發(fā)人員常用資料,PCL電梯控制系統(tǒng),感興趣的可以瞧一瞧。
    發(fā)表于 11-03 14:53 ?68次下載

    Lane Tech HS PCL自動燈開源

    電子發(fā)燒友網(wǎng)站提供《Lane Tech HS PCL自動燈開源.zip》資料免費下載
    發(fā)表于 02-08 15:28 ?1次下載
    Lane Tech HS <b class='flag-5'>PCL</b>自動燈開源

    Lane Tech PCL房間通知器開源分享

    電子發(fā)燒友網(wǎng)站提供《Lane Tech PCL房間通知器開源分享.zip》資料免費下載
    發(fā)表于 06-26 14:37 ?0次下載
    Lane Tech <b class='flag-5'>PCL</b>房間通知器開源分享

    在Ubuntu上編譯安裝pcl教程

    編譯安裝PCL(Point Cloud Library)是在Ubuntu上使用自定義選項進行安裝的一種方式。
    的頭像 發(fā)表于 10-26 09:36 ?1189次閱讀

    PCL中最遠點采樣是什么

    最遠點采樣(Farthest Point Sampling) 這里我們來單獨看一調(diào)用代碼,這里可以看到PCL中支持直接調(diào)用farthest_sampling這個函數(shù)可以實現(xiàn)最遠點采樣
    的頭像 發(fā)表于 11-21 17:18 ?695次閱讀

    PCL中法線空間采樣介紹

    法線空間采樣 NormalSpaceSampling即:法線空間采樣,它在法向量空間內(nèi)均勻隨機抽樣,使所選點之間的法線分布盡可能大,結(jié)果表現(xiàn)為地物特征變化大的地方剩余點較多,變化小的地方剩余點稀少
    的頭像 發(fā)表于 11-21 17:28 ?750次閱讀

    PCL泊松盤采樣具體流程

    泊松盤采樣 泊松盤采樣(possion disk sampling)的特點是任何兩個點的距離都不會隔得太近。 比如下圖,左邊是隨機生成的點,右邊是泊松盤采樣生成的點。 具體流程如下: 1、設定好兩個
    的頭像 發(fā)表于 11-21 17:42 ?1166次閱讀
    <b class='flag-5'>PCL</b>泊松盤<b class='flag-5'>采樣</b>具體流程

    PCL中非均勻體素采樣介紹

    非均勻體素采樣 SamplingSurfaceNormal,將輸入空間劃分為網(wǎng)格,直到每個網(wǎng)格中最多包含N個點,并在每個網(wǎng)格隨機采樣點。 使用每個網(wǎng)格的N個點計算法線。 在網(wǎng)格內(nèi)采樣
    的頭像 發(fā)表于 11-21 17:50 ?751次閱讀