日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

nanoflann库

發(fā)布時(shí)間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nanoflann库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ?點(diǎn)云處理過程中可能會遇到尋找最臨近點(diǎn)的問題,常用的解決方案就是用空間換效率。例如建立kd-tree等樹狀結(jié)構(gòu)來代替遍歷。

? ? ?這里向大家介紹一個(gè)nanoflann工程,nanoflann 算法對fastann進(jìn)行了改進(jìn),效率以及內(nèi)存使用等方面都進(jìn)行了優(yōu)化,而且代碼十分輕量級且開源,是一個(gè)不錯的選擇。工程代碼下載地址? https://github.com/jlblancoc/nanoflann

1.介紹

? ? ?nanoflann是一個(gè)c++11標(biāo)準(zhǔn)庫,用于構(gòu)建具有不同拓?fù)?#xff08;R2,R3(點(diǎn)云),SO(2)和SO(3)(2D和3D旋轉(zhuǎn)組))的KD樹。nanoflann不需要編譯或安裝。你只需要#include <nanoflann.hpp>在你的代碼中。?

1.1 如何使用庫

? ? 最簡單的方法:將其include/nanoflann.hpp用于需要的地方。

1.2 代碼示例

  1. KD-trees使用kdd_search()和查找radius_search()?:?pointcloud_kdd_radius.cpp

  2. 點(diǎn)云數(shù)據(jù)集上的KD樹查找:pointcloud_example.cpp

  3. 在動態(tài)點(diǎn)云數(shù)據(jù)集上進(jìn)行KD樹查找:dynamic_pointcloud_example.cpp

  4. 旋轉(zhuǎn)組(SO2)上的KD樹查找:SO2_example.cpp

  5. 旋轉(zhuǎn)組(SO3)上的KD樹查找:SO3_example.cpp

  6. 使用外部適配器類在點(diǎn)云數(shù)據(jù)集上查找KD樹:pointcloud_adaptor_example.cpp

  7. KD-tree使用在Eigen::Matrix<>:matrix_example.cpp上查找

  8. KD-tree查找std::vector<std::vector<T> >或std::vector<Eigen::VectorXd>:vector_of_vectors_example.cpp

  9. 如何構(gòu)建索引并將其保存到磁盤供以后使用的示例:saveload_example.cpp

3. nanoflann可以做什么?

? ? A.建立具有單一索引的KD樹(沒有隨機(jī)化的KD樹,沒有大致的搜索)。快速,線程安全地查詢KD樹上最近的鄰居。接口是:

? ? 1.? ?nanoflann :: KDTreeSingleIndexAdaptor <>::knnSearch()

找到num_closest最近的鄰居query_point[0:dim-1]。它們的索引存儲在結(jié)果對象中。查看示例使用代碼:

? ?2.???nanoflann :: KDTreeSingleIndexAdaptor <>::radiusSearch()

?query_point[0:dim-1]在最大半徑范圍內(nèi)查找所有鄰居。輸出作為對的向量給出,其中第一個(gè)元素是點(diǎn)索引,第二個(gè)元素是相應(yīng)的距離。查看示例使用代碼。

? ?3.? ? nanoflann :: KDTreeSingleIndexAdaptor<>::radiusSearchCustomCallback()

可以用于接收范圍內(nèi)找到的每個(gè)點(diǎn)的回叫。這在某些情況下可能更有效,而不是用結(jié)果構(gòu)建一個(gè)巨大的向量對。

?

B. 使用2D和3D點(diǎn)云或N維數(shù)據(jù)集。

C. 直接使用Eigen::Matrix<>類(矩陣和向量向量)

D. 使用動態(tài)點(diǎn)云而無需重建整個(gè)kd-tree索引。

E.??使用距離度量標(biāo)準(zhǔn):

????o??? L1?(曼哈頓)

????o??? L2 (歐幾里得,贊成SSE2優(yōu)化)。

????o??? L2_Simple (歐幾里得,用于像點(diǎn)云這樣的低維數(shù)據(jù)集)。

????o??? SO2 (用于旋轉(zhuǎn)組SO2)。

????o??? SO3 (歐幾里得,對于旋轉(zhuǎn)組SO3)。

F. 將構(gòu)建的索引保存并加載到磁盤。

1.4 Nanoflann不能做什么?

使用除L1,L2,SO2和SO3以外的其他距離度量。

支持SE(3)組。

只有C ++接口存在:不支持C,MATLAB或Python。

2.如何選擇KD樹參數(shù)?

2.1?KDTreeSingleIndexAdaptorParams::leaf_max_size

? ? ? ? KD樹它有一個(gè)根節(jié)點(diǎn),一組中間節(jié)點(diǎn),最后是沒有孩子的“葉”節(jié)點(diǎn)。點(diǎn)只存儲在葉節(jié)點(diǎn)中。每個(gè)葉子都包含一個(gè)列表,其中包含哪些點(diǎn)落入其范圍內(nèi)。在構(gòu)建樹的同時(shí),遞歸地分割節(jié)點(diǎn),直到內(nèi)部的點(diǎn)數(shù)等于或低于某個(gè)閾值。那是leaf_max_size。在進(jìn)行查 時(shí),“樹算法”通過選擇葉節(jié)點(diǎn)結(jié)束,然后在葉中的所有元素內(nèi)對查詢的最近點(diǎn)執(zhí)行線性搜索(一個(gè)接一個(gè))。所以,leaf_max_size必須將其設(shè)定為合適的值:

·??較大的值意味著樹會更快地構(gòu)建(因?yàn)闃鋾?#xff09;,但是每個(gè)查詢會更慢(因?yàn)槿~子中的線性搜索要完成更多的點(diǎn))。

·?較小的值將構(gòu)建樹慢得多(將會有許多樹節(jié)點(diǎn)),但查詢會更快......因?yàn)樗阉鞯摹皹洳糠帧?#xff08;對數(shù)復(fù)雜度)仍然有很高的成本。

選擇哪個(gè)數(shù)字確實(shí)取決于應(yīng)用程序,甚至取決于處理器高速緩存的大小,因此理想情況下應(yīng)該執(zhí)行一些基準(zhǔn)測試以最大限度地提高效率。

? ? ?但為了幫助選擇一個(gè)比較合適的參數(shù)作為一個(gè)基準(zhǔn),我提供了以下兩個(gè)基準(zhǔn)。每個(gè)圖表代表leaf_max_size1到10K之間不同值的樹構(gòu)建(水平)和查詢(垂直)時(shí)間(95%不確定性橢圓,由于對數(shù)標(biāo)度而變形)。

·??一個(gè)100K點(diǎn)云,均勻分布(每個(gè)點(diǎn)有(x,y,z)float坐標(biāo)):

·??一個(gè)來自真實(shí)數(shù)據(jù)集(scan_071_points.dat來自弗萊堡校區(qū)360數(shù)據(jù)集,每個(gè)點(diǎn)具有(x,y,z)float坐標(biāo))的大約150K點(diǎn)云:

因此,對于查詢成本占主導(dǎo)地位的應(yīng)用(例如ICP),似乎leaf_max_size10到50之間是最佳的。目前,其默認(rèn)值為10。

3.性能

3.1 nanoflann:更快,更少的內(nèi)存使用

3.2 原始flann對比nanoflann

? ? ? 許多點(diǎn)云算法(如ICP)中最耗時(shí)的部分是查詢最近鄰居的KD樹。因此這個(gè)操作是最重要的。nanoflann相對于原始flann實(shí)現(xiàn)可節(jié)省大約50%的時(shí)間(此圖表中的時(shí)間以微秒為單位):

?

? ? ? ?由于模板化代碼的原因,在構(gòu)建KD樹索引時(shí)還節(jié)省了一些時(shí)間,避免在輔助矩陣中復(fù)制數(shù)據(jù)(下圖中的時(shí)間以毫秒為單位):

4.其他KD樹項(xiàng)目

FLANN?- Marius Muja和David G. Lowe(不列顛哥倫比亞大學(xué))。

FASTANN?- James Philbin(VGG,牛津大學(xué))。

ANN?- David M. Mount和Sunil Arya(馬里蘭大學(xué))。

libkdtree ++?- Martin F. Krafft等人。

資源

三維點(diǎn)云論文及相關(guān)應(yīng)用分享

【點(diǎn)云論文速讀】基于激光雷達(dá)的里程計(jì)及3D點(diǎn)云地圖中的定位方法

3D目標(biāo)檢測:MV3D-Net

三維點(diǎn)云分割綜述(上)

3D-MiniNet: 從點(diǎn)云中學(xué)習(xí)2D表示以實(shí)現(xiàn)快速有效的3D LIDAR語義分割(2020)

win下使用QT添加VTK插件實(shí)現(xiàn)點(diǎn)云可視化GUI

JSNet:3D點(diǎn)云的聯(lián)合實(shí)例和語義分割

大場景三維點(diǎn)云的語義分割綜述

PCL中outofcore模塊---基于核外八叉樹的大規(guī)模點(diǎn)云的顯示

基于局部凹凸性進(jìn)行目標(biāo)分割

基于三維卷積神經(jīng)網(wǎng)絡(luò)的點(diǎn)云標(biāo)記

點(diǎn)云的超體素(SuperVoxel)

基于超點(diǎn)圖的大規(guī)模點(diǎn)云分割

更多文章可查看:點(diǎn)云學(xué)習(xí)歷史文章大匯總

SLAM及AR相關(guān)分享

【開源方案共享】ORB-SLAM3開源啦!

【論文速讀】AVP-SLAM:自動泊車系統(tǒng)中的語義SLAM

【點(diǎn)云論文速讀】StructSLAM:結(jié)構(gòu)化線特征SLAM

SLAM和AR綜述

常用的3D深度相機(jī)

AR設(shè)備單目視覺慣導(dǎo)SLAM算法綜述與評價(jià)

SLAM綜述(4)激光與視覺融合SLAM

Kimera實(shí)時(shí)重建的語義SLAM系統(tǒng)

SLAM綜述(3)-視覺與慣導(dǎo),視覺與深度學(xué)習(xí)SLAM

易擴(kuò)展的SLAM框架-OpenVSLAM

高翔:非結(jié)構(gòu)化道路激光SLAM中的挑戰(zhàn)

SLAM綜述之Lidar SLAM

基于魚眼相機(jī)的SLAM方法介紹

往期線上分享錄播匯總

第一期B站錄播之三維模型檢索技術(shù)

第二期B站錄播之深度學(xué)習(xí)在3D場景中的應(yīng)用

第三期B站錄播之CMake進(jìn)階學(xué)習(xí)

第四期B站錄播之點(diǎn)云物體及六自由度姿態(tài)估計(jì)

第五期B站錄播之點(diǎn)云深度學(xué)習(xí)語義分割拓展

第六期B站錄播之Pointnetlk解讀

[線上分享錄播]點(diǎn)云配準(zhǔn)概述及其在激光SLAM中的應(yīng)用

[線上分享錄播]cloudcompare插件開發(fā)

[線上分享錄播]基于點(diǎn)云數(shù)據(jù)的?Mesh重建與處理

[線上分享錄播]機(jī)器人力反饋遙操作技術(shù)及機(jī)器人視覺分享

[線上分享錄播]地面點(diǎn)云配準(zhǔn)與機(jī)載點(diǎn)云航帶平差

點(diǎn)云PCL更多活動請查看:點(diǎn)云PCL活動之應(yīng)屆生校招群

掃描下方微信視頻號二維碼可查看最新研究成果及相關(guān)開源方案的演示:

如果你對本文感興趣,點(diǎn)擊“原文閱讀”獲取知識星球二維碼,務(wù)必按照“姓名+學(xué)校/公司+研究方向”備注加入免費(fèi)知識星球,星球可自由發(fā)言交流和分享。也可免費(fèi)下載公眾號分享的論文pdf文檔,和更多熱愛分享的小伙伴一起交流吧!

歡迎各位轉(zhuǎn)發(fā)分享朋友圈,將公眾號設(shè)置為星標(biāo),或點(diǎn)擊“在看”以示鼓勵和支持,讓我們繼續(xù)分享!

以上內(nèi)容如有錯誤請留言評論,歡迎指正交流。如有侵權(quán),請聯(lián)系刪除

掃描二維碼

? ? ? ? ? ? ? ? ? ?關(guān)注我們

讓我們一起分享一起學(xué)習(xí)吧!期待有想法,樂于分享的小伙伴加入免費(fèi)星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點(diǎn)云,高精地圖,自動駕駛,以及機(jī)器人等相關(guān)的領(lǐng)域。

分享及合作方式:聯(lián)系微信“920177957”(需要按要求備注)聯(lián)系郵箱:dianyunpcl@163.com,歡迎企業(yè)來聯(lián)系公眾號展開合作。

點(diǎn)一下“在看”你會更好看耶

總結(jié)

以上是生活随笔為你收集整理的nanoflann库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。