99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

從小白的角度學(xué)習(xí)SLAM

ml8z_IV_Technol ? 來源:cg ? 2018-12-27 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

小白:師兄,上次你講了點云拼接后,我回去費了不少時間研究,終于得到了和你給的參考結(jié)果差不多的點云,不過,這個點云“可遠觀而不可近看”,放大了看就只有一個個稀疏的點了。究竟它能干什么呢?

師兄:這個問題嘛。。?;揪秃蚐LAM的作用一樣,定位和建圖小白:定位好理解,可是師兄說建圖,這么稀疏的地圖有什么用呢?師兄:地圖分很多種,稀疏的,稠密的,還有半稀疏的等,你輸出的這個稀疏的地圖放大了看就是一個個離散的空間點,不過我們可以把它變成連續(xù)的稠密的網(wǎng)格,這個過程也叫點云的網(wǎng)格化小白:哇塞,聽起來好高大上呢,具體怎么做呢?師兄:點云網(wǎng)格化需要對點云進行一系列處理,今天我們先說說點云處理流程的第一步,叫做點云濾波

為什么要對點云濾波?

小白:濾波是什么鬼?

師兄:濾波最早來自在數(shù)字信號處理里的概念,你可以理解為是一個過濾器,是對點云的一種預(yù)處理方法

小白:哦哦,想起來中學(xué)學(xué)的濾紙,就是可以過濾掉雜質(zhì)那種師兄:哈哈,對,這個很形象了,你看下面這個圖,左側(cè)就是原來的點云,右側(cè)是經(jīng)過濾波后濾掉的“雜質(zhì)”

小白:師兄,那是所有的點云一開始都要濾波嗎?師兄:如果你的點云本來就非常好了,就不需要了。一般下面這幾種情況需要進行點云濾波處理:(1) 點云數(shù)據(jù)密度不規(guī)則需要平滑(2) 因為遮擋等問題造成離群點需要去除(3) 大量數(shù)據(jù)需要下采樣(4) 噪聲數(shù)據(jù)需要去除

小白:前三點還能勉強理解,這第四點中點云中噪聲數(shù)據(jù)從哪里來的呢?師兄:這個很多因素啦!一方面來自設(shè)備。比如我們用激光掃描儀、RGB-D相機等設(shè)備獲取點云數(shù)據(jù)時,由于設(shè)備精度,電磁波的衍射特性等都會引入噪聲的。另一方面來自環(huán)境因素帶來的影響,比如被測物體表面性質(zhì)發(fā)生變化。還有一個重要的方面就是操作者經(jīng)驗帶來的影響,比如在處理點云數(shù)據(jù)拼接配準等操作過程中引入的一些噪聲等。

小白:嗯嗯,原來噪聲數(shù)據(jù)這么容易混進來啊。那怎么去掉他們呢?或者說怎么樣濾波呢?說濾波好像顯得更專業(yè)一點哈師兄:點云中的噪聲點對后續(xù)操作的影響比較大。就像蓋房子一樣,地基有很多瑕疵,如果不加以處理最終可能會導(dǎo)致整個房子坍塌的。不過別擔(dān)心,PCL中有一個專門的點云濾波模塊,可以將噪聲點去除,還可以進行點云壓縮等操作,非常靈活實用,例如:雙邊濾波,統(tǒng)計濾波,條件濾波,隨機采樣一致性濾波等。這樣才能夠更好的進行配準,特征提取,曲面重建,可視化等后續(xù)應(yīng)用處理。小白:那太好啦,PCL都幫我們想到啦,我迫不及待的想要實踐一下啦。具體怎么操作呢?師兄:濾波模塊主要是調(diào)用一些封裝好的濾波函數(shù),然后根據(jù)需要設(shè)定一下參數(shù),還是很直觀的。

一般來說,濾波對應(yīng)的方案有如下幾種:(1)按照給定的規(guī)則限制過濾去除點(2) 通過常用濾波算法修改點的部分屬性(3)對數(shù)據(jù)進行下采樣

小白:哦哦,這么多函數(shù)啊,哪里有這個濾波函數(shù)大全呢?方便我需要的時候去查查用哪個的那種?

師兄:有的,PCL中關(guān)于點云濾波的所有函數(shù)都在這里:http://docs.pointclouds.org/trunk/group__filters.html下面我們舉兩個例子介紹一下,簡單的熟悉一下濾波的過程

點云下采樣

師兄:我先說一下數(shù)據(jù)下采樣吧,這個最簡單小白:師兄,能不能問下為啥要下采樣?我有強迫癥,每做一件事情前都想知道原因。。。師兄:嗯,這個不算強迫癥啦,是個好習(xí)慣!了解原因了就知道什么時候用嘛!我舉個例子,比如我們上次點云融合,一張640x480 的Depth圖,假如每個地方都有深度值,可以轉(zhuǎn)化為30萬個點組成的點云,如果有幾十張上百張圖這樣暴力融合,那這個融合的點云會越來越大,儲存、操作都是個大問題!

小白:是不是相當(dāng)于我有個大容量的樣本,我按一定的規(guī)則從里面抽取有代表性的樣本,可以代替原來的樣本,是這樣嗎?師兄:對,理解的很到位。這個下采樣PCL中有專門的類,叫做

classpcl::ApproximateVoxelGrid

它比較適合對海量的點云在處理前進行數(shù)據(jù)壓縮,就像我們上次講的點云融合后的數(shù)據(jù)那樣,而且可以在特征提取等處理中選擇合適的體素(voxel)大小等參數(shù),提高算法效率。該函數(shù)對輸入的點云數(shù)據(jù)創(chuàng)建一個三維體素柵格,每個體素內(nèi)用體素中所有點的重心來近似顯示體素中其他點,這樣該體素內(nèi)所有點都用一個重心點最終表示。它的優(yōu)點是可以在下采樣的時候保存點云的形狀特征。看下面是它的結(jié)果,左邊是待處理的右邊是處理前,右邊是處理后

小白:看起來確實形狀保持的挺好,這個怎么編程實現(xiàn)?

師兄:其實關(guān)鍵就下面幾行代碼

pcl::VoxelGriddownSampled;//創(chuàng)建濾波對象downSampled.setInputCloud(cloud);//設(shè)置需要過濾的點云給濾波對象downSampled.setLeafSize(0.01f,0.01f,0.01f);//設(shè)置濾波時創(chuàng)建的體素體積為1cm的立方體downSampled.filter(*cloud_downSampled);//執(zhí)行濾波處理,存儲輸出

每行代碼的意義都注釋好了,應(yīng)該不難理解小白:看起來好像也不麻煩師兄;嗯,上面只是經(jīng)常用的成員函數(shù),還有一些其他成員函數(shù),我這里只重點介紹兩個一個是

setLeafSize(floatlx,floatly,floatlz)

setLeafSize后面的三個參數(shù)表示體素柵格葉大小,分別表示體素在XYZ方向的尺寸,以米為單位,上面就是設(shè)置為長寬高都為1cm另外一個是設(shè)置是否對所有的字段進行下采樣,成員函數(shù)為

setDownsampleAllData(booldownsample)

小白:師兄,這個字段是啥意思?師兄:哦,不好意思,忘記解釋了。我們知道點云有不同的類型,比如有的是 PointXYZ,有的是PointXYZRGB,還有其他類型,也就是一個點包含多種不同信息,比如空間位置XYZ,顏色信息RGB,或者強度信息等,如果想要對所有信息(字段)下采樣則設(shè)置為true,只對XYZ下采樣的話設(shè)置為false

如何充分了解每個類的功能?

小白:嗯,了解啦,不過我有個問題,我想要用這個下采樣類時怎么知道它有哪些函數(shù)可以用呢?師兄:這個好問題,PCL官網(wǎng)上一般都有例程,但是例程包含的成員函數(shù)是很有限的,所以如果你想要了解這個濾波模板類的所有功能,或者說內(nèi)聯(lián)成員函數(shù)的話,最好的辦法就是去官網(wǎng)查詢。我們還是以pcl::ApproximateVoxelGrid 模板類為例進行說明

第一步,登錄PCL API documentation http://docs.pointclouds.org/trunk/

第二步:在右上角搜索框內(nèi)輸入我們要查詢的模板類名稱,這里我們輸入ApproximateVoxelGrid,如下所示,會自動跳出來匹配的結(jié)果

第三步:選擇你要找的類名,點擊進入,就到了下面這個界面,列出了所有的成員變量和成員函數(shù),點擊每個成員函數(shù),會跳到對應(yīng)的解釋界面

你看除了我們前面提到的幾個成員函數(shù),其實還有好幾個我們沒用到的都在這里了,需要的話可以使用啦,就是這樣簡單

小白:授人以魚不如授人以漁,謝謝師兄!以后我可以自己查函數(shù)啦

去除點云的離群點

師兄:剛才下采樣只是萬里長征第一步,下面說一下去除離群點方法。小白:等下,師兄,什么是離群點???師兄:哦,忘了解釋這個術(shù)語了,抱歉,我簡單說一下,離群點對應(yīng)的英文是outliers,也叫外點,就是明顯偏離“群眾”的點,比如我們用激光掃描一面平坦的墻壁,正常情況下得到的應(yīng)該是差不多也位于同一個平面的點云,但是由于設(shè)備測量誤差等原因,會產(chǎn)生少量脫離群眾的空間點,離本來的墻壁過遠,我們就叫這部分點為離群點。

小白:哈哈,離群點就是脫離群眾的壞點,明白啦!不過這些點不是很少嗎?有必要趕盡殺絕嗎?師兄:“趕盡殺絕”,很形象的比喻!哈哈,還是很有必要的,因為離群點會使局部點云特征(如表面法線或曲率變化)的估計復(fù)雜化,從而導(dǎo)致錯誤的值,從而可能導(dǎo)致點云配準失敗。而且這些離群點還會隨著積累進行傳導(dǎo),不早點消滅會有很大隱患的。

小白:原來危害這么大,那師兄趕快告訴我該怎樣消滅它們吧!師兄:好,我這里列舉兩個常用的去除離群點的類,第一個類叫做 StatisticalOutlierRemoval ,顧名思義,使用統(tǒng)計分析技術(shù),從一個點云數(shù)據(jù)中集中移除測量噪聲點,也就是離群點啦!

小白:聽起來很高大上啊,那具體是什么統(tǒng)計分析技術(shù)呢?師兄:主要是對每個點的鄰域進行統(tǒng)計分析,剔除不符合一定標準的鄰域點。具體來說,對于每個點,我們計算它到所有相鄰點的平均距離。假設(shè)得到的分布是高斯分布,我們可以計算出一個均值 μ 和一個標準差 σ,那么這個鄰域點集中所有點與其鄰域距離大于μ + std_mul * σ 區(qū)間之外的點都可以被視為離群點,并可從點云數(shù)據(jù)中去除。std_mul 是標準差倍數(shù)的一個閾值,可以自己指定。

小白:嗯,聽起來還是挺科學(xué)的,槍打出頭鳥嘛!師兄,這個原理我懂啦,重點是怎么編程呢?師兄:這里有個示例代碼

pcl::StatisticalOutlierRemovalsor;//創(chuàng)建濾波器對象sor.setInputCloud(cloud);//設(shè)置待濾波的點云sor.setMeanK(50);//設(shè)置在進行統(tǒng)計時考慮的臨近點個數(shù)sor.setStddevMulThresh(1.0);//設(shè)置判斷是否為離群點的閥值,用來倍乘標準差,也就是上面的std_mulsor.filter(*cloud_filtered);//濾波結(jié)果存儲到cloud_filtered

小白:和前面下采樣的形式很像哎師兄:嗯,PCL都幫你寫好了,你只需要創(chuàng)建對象,設(shè)置參數(shù)就行啦。小白:師兄可以稍微解釋一下上面代碼嗎?師兄:好,這個應(yīng)該不難看懂。你看,我們先創(chuàng)建統(tǒng)計分析濾波器,然后設(shè)置濾波器輸入是 cloud,也就是我們待處理的點云,然后設(shè)置對每個點分析的臨近點的個數(shù)設(shè)置為50 ,并將標準差的倍數(shù)設(shè)置為1, 這意味著如果一個點的距離超出了平均距離加上一個標準差以上,則該點被標記為離群點,并將它移除。最后統(tǒng)計分析濾波后,輸出的結(jié)果就是cloud_filtered小白:師兄這么一解釋感覺容易理解多了,這個方法效果怎么樣?

師兄:效果還是挺不錯的,你看下圖展示了稀疏離群值分析和移除的效果:原始數(shù)據(jù)集顯示在左邊,結(jié)果集顯示在右邊。圖中紅色表示濾波前的平均k近鄰距離,綠色表示濾波后的平均k近鄰距離,可以看到毛刺明顯少了很多。

小白:嗯嗯,效果明顯,看的見!師兄:另外,還有一個比較簡單常用的方法就是根據(jù)空間點半徑范圍臨近點數(shù)量來濾波,對應(yīng)的類名是 RadiusOutlinerRemoval,這個很容易理解,它的濾波思想非常直接,就是在點云數(shù)據(jù)中,設(shè)定每個點一定半徑范圍內(nèi)周圍至少有足夠多的近鄰,不滿足就會被刪除。小白:這個半徑范圍是怎么定的?師兄:因為空間點的具體坐標都是知道的,所以我們可以很方便的計算某個點和它周圍所有點的歐氏距離,這些都是以米為單位的,可以直接指定具體的數(shù)值,對于三維建模很實用。

下圖就是該類的篩選方法。比如你指定了一個半徑d,然后指定該半徑內(nèi)至少有1個鄰居,那么下圖中只有黃色的點將從點云中刪除。如果指定了半徑內(nèi)至少有2個鄰居,那么黃色和綠色的點都將從點云中刪除。

小白:確實很直觀,編程怎么實現(xiàn)呢?師兄:編程實現(xiàn)的簡單例子在這里:

pcl::RadiusOutlierRemovalpcFilter;//創(chuàng)建濾波器對象pcFilter.setInputCloud(cloud);//設(shè)置待濾波的點云pcFilter.setRadiusSearch(0.8);//設(shè)置搜索半徑pcFilter.setMinNeighborsInRadius(2);//設(shè)置一個內(nèi)點最少的鄰居數(shù)目(見上面解釋)pcFilter.filter(*cloud_filtered);//濾波結(jié)果存儲到cloud_filtered

小白:確實用法都差不多,我按照前面師兄講的方法充分了解每個類的功能,就會用啦!師兄:嗯,今天篇幅已經(jīng)比較長了,雖然感覺才講了一點,下次我們再講網(wǎng)格化吧!小白:好,那下次再聊啦,謝謝師兄!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)字信號
    +關(guān)注

    關(guān)注

    2

    文章

    997

    瀏覽量

    48376
  • SLAM
    +關(guān)注

    關(guān)注

    24

    文章

    441

    瀏覽量

    32509

原文標題:從零開始一起學(xué)習(xí)SLAM | 給點云加個濾網(wǎng)

文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于深度學(xué)習(xí)的增強版ORB-SLAM3詳解

    ORB-SLAM3雖是當(dāng)前最先進的SLAM之一,但由于使用傳統(tǒng)的ORB(定向FAST和旋轉(zhuǎn)BRIEF)特征,在尺度、旋轉(zhuǎn)和光照發(fā)生顯著變化時可能會表現(xiàn)出局限性。
    的頭像 發(fā)表于 07-14 17:21 ?219次閱讀
    基于深度<b class='flag-5'>學(xué)習(xí)</b>的增強版ORB-<b class='flag-5'>SLAM</b>3詳解

    三維高斯?jié)姙R大規(guī)模視覺SLAM系統(tǒng)解析

    近期興起的神經(jīng)輻射場(NeRF)與三維高斯?jié)姙R(3DGS)技術(shù)在視覺SLAM中展現(xiàn)出令人鼓舞的突破性成果。然而,當(dāng)前主流方法多依賴RGBD傳感器,并且僅適用于室內(nèi)環(huán)境。在大規(guī)模室外場景中的重建魯棒性
    的頭像 發(fā)表于 05-27 14:13 ?347次閱讀
    三維高斯?jié)姙R大規(guī)模視覺<b class='flag-5'>SLAM</b>系統(tǒng)解析

    【「# ROS 2智能機器人開發(fā)實踐」閱讀體驗】視覺實現(xiàn)的基礎(chǔ)算法的應(yīng)用

    視覺巡線,展示了如何從數(shù)據(jù)采集、模型訓(xùn)練到機器人部署的完整流程。 值得注意的是,深度學(xué)習(xí)模型的實時性對機器人計算資源提出了較高要求,優(yōu)化模型(如TensorRT加速)是實際部署的關(guān)鍵。 二、SLAM
    發(fā)表于 05-03 19:41

    一種基于點、線和消失點特征的單目SLAM系統(tǒng)設(shè)計

    本文提出了一種穩(wěn)健的單目視覺SLAM系統(tǒng),該系統(tǒng)同時利用點、線和消失點特征來進行精確的相機位姿估計和地圖構(gòu)建,有效解決了傳統(tǒng)基于點特征的SLAM的局限性。
    的頭像 發(fā)表于 03-21 17:07 ?465次閱讀
    一種基于點、線和消失點特征的單目<b class='flag-5'>SLAM</b>系統(tǒng)設(shè)計

    智行者蝸小白賦能卡塔爾智慧清潔新突破

    在科技進步的浪潮中,智行者秉持用自動駕駛解決方案構(gòu)建智慧生活的理念,孕育出了"蝸小白"這一智慧清潔領(lǐng)域的重要成果。蝸小白在國內(nèi)已嶄露頭角,身影遍布多地;而在海外,蝸小白系列產(chǎn)品已成功拓展至40余個國家及地區(qū)。
    的頭像 發(fā)表于 03-17 15:44 ?432次閱讀

    智行者蝸小白助力澳大利亞智慧清潔新篇章

    在科技進步的浪潮中,智行者秉持用自動駕駛解決方案構(gòu)建智慧生活的理念,孕育出了“蝸小白”這一智慧清潔領(lǐng)域的重要成果。蝸小白在國內(nèi)已嶄露頭角,身影遍布多地;而在海外,蝸小白系列產(chǎn)品已成功拓展至30余個國家及地區(qū)。
    的頭像 發(fā)表于 01-10 09:50 ?607次閱讀

    一種基于MASt3R的實時稠密SLAM系統(tǒng)

    本文提出了一種即插即用的單目SLAM系統(tǒng),能夠在15FPS的幀率下生成全局一致的位姿和稠密幾何圖形。 01 ? 本文核心內(nèi)容 視覺SLAM乃是當(dāng)今機器人技術(shù)與增強現(xiàn)實產(chǎn)品的基礎(chǔ)性構(gòu)建模塊。通過
    的頭像 發(fā)表于 12-27 15:25 ?1467次閱讀

    智行者蝸小白繪就泰國智慧清潔藍圖

    在科技進步的浪潮中,智行者秉持用自動駕駛解決方案構(gòu)建智慧生活的理念,孕育出了“蝸小白”這一智慧清潔領(lǐng)域的重要成果。蝸小白在國內(nèi)已嶄露頭角,身影遍布多地;而在海外,蝸小白系列產(chǎn)品已成功拓展至30余個國家及地區(qū)。
    的頭像 發(fā)表于 12-06 13:53 ?770次閱讀

    利用VLM和MLLMs實現(xiàn)SLAM語義增強

    語義同步定位與建圖(SLAM)系統(tǒng)在對鄰近的語義相似物體進行建圖時面臨困境,特別是在復(fù)雜的室內(nèi)環(huán)境中。本文提出了一種面向?qū)ο?b class='flag-5'>SLAM的語義增強(SEO-SLAM)的新型SLAM系統(tǒng),借
    的頭像 發(fā)表于 12-05 10:00 ?1401次閱讀
    利用VLM和MLLMs實現(xiàn)<b class='flag-5'>SLAM</b>語義增強

    智行者蝸小白海外項目落地實況

    在科技進步的浪潮中,智行者秉持用自動駕駛解決方案構(gòu)建智慧生活的理念,孕育出了“蝸小白”這一智慧清潔領(lǐng)域的重要成果。蝸小白在國內(nèi)已嶄露頭角,身影遍布多地;而在海外,蝸小白系列產(chǎn)品已成功拓展至30余個國家及地區(qū)。
    的頭像 發(fā)表于 11-29 16:24 ?723次閱讀

    最新圖優(yōu)化框架,全面提升SLAM定位精度

    同時定位與地圖構(gòu)建(SLAM)是一項關(guān)鍵技術(shù),允許移動機器人在部分或完全未知的環(huán)境中自主導(dǎo)航。它包括使用機載傳感器同時估計機器人狀態(tài)和構(gòu)建傳感器檢測到的環(huán)境地圖。SLAM可以根據(jù)傳感器和地圖構(gòu)建技術(shù)
    的頭像 發(fā)表于 11-12 11:26 ?1240次閱讀
    最新圖優(yōu)化框架,全面提升<b class='flag-5'>SLAM</b>定位精度

    激光雷達在SLAM算法中的應(yīng)用綜述

    一、文章概述 1.1 摘 要 即時定位與地圖構(gòu)建(simultaneous localization and mapping,SLAM)是自主移動機器人和自動駕駛的關(guān)鍵 技術(shù)之一,而激光雷達則是支撐
    的頭像 發(fā)表于 11-12 10:30 ?2563次閱讀
    激光雷達在<b class='flag-5'>SLAM</b>算法中的應(yīng)用綜述

    MG-SLAM:融合結(jié)構(gòu)化線特征優(yōu)化高斯SLAM算法

    同步定位與地圖構(gòu)建 (SLAM) 是計算機視覺中的一個基本問題,旨在在同時跟蹤相機姿勢的同時對環(huán)境進行地圖構(gòu)建?;?b class='flag-5'>學(xué)習(xí)的密集 SLAM 方法,尤其是神經(jīng)輻射場 (NeRF) 方法,在捕獲密集光度
    的頭像 發(fā)表于 11-11 16:17 ?880次閱讀
    MG-<b class='flag-5'>SLAM</b>:融合結(jié)構(gòu)化線特征優(yōu)化高斯<b class='flag-5'>SLAM</b>算法

    從算法角度SLAM(第 2 部分)

    ,分別是基于濾波器的 SLAM、基于圖形的 SLAM 和基于深度學(xué)習(xí)SLAM。 基于濾波器的 SLAM
    的頭像 發(fā)表于 10-02 16:39 ?795次閱讀
    從算法<b class='flag-5'>角度</b>看 <b class='flag-5'>SLAM</b>(第 2 部分)