ArUco与AprilTag简介
無論是aruco還是apriltag二維碼標(biāo)定板檢測的思路是提取一塊四邊形的區(qū)域,這個區(qū)域具有比周圍亮度更低的特點。這個思路的主要優(yōu)點是盡可能多的檢測出所有可能的二維碼,但是根據(jù)采集數(shù)據(jù)的環(huán)境極有可能出現(xiàn)異常線段,然后再根據(jù)二維碼的編碼值可以對野值進(jìn)行剔除實現(xiàn)識別與定位。
ArUco
ArUco是一個開源的小型的AR虛擬現(xiàn)實增強庫,已經(jīng)集成在OpenCV3.0以上的版本,它除了用于現(xiàn)實增強,還很用于實現(xiàn)一些機器視覺方面的應(yīng)用。
?ArUco下載地址:https://sourceforge.net/projects/aruco/files/
?ArUco開源庫的幾個特點如下:?
1.基于C++;?
2.僅依賴于OpenCV(≥2.4.9)和Eigen3;?
3.BDS開源。??
一個ArUco標(biāo)記外圍都有一組黑色邊框,同時內(nèi)部有著確定該標(biāo)記ID的二維矩陣組合而成。黑色的邊框能加速標(biāo)記在圖像中的檢測速度,內(nèi)部的二維編碼能唯一識別該標(biāo)記,同時進(jìn)行錯誤檢測和錯誤修復(fù)。標(biāo)記的大小確定了內(nèi)部矩陣的大小,例如4x4大小的標(biāo)記有16個bit
aruco標(biāo)志在環(huán)境中通常存在旋轉(zhuǎn),然而,檢測的過程需要確定旋轉(zhuǎn)的初始方向,因此,每一個角點在二維編碼的過程中就會被唯一確定。
標(biāo)記字典是一組被用來進(jìn)行特殊應(yīng)用的標(biāo)記,它大大簡化了每個marker二維碼列表。字典的主要屬性就是字典的大小和標(biāo)志的大小:
字典大小:合成字典的marker的數(shù)量 (50 100 250 1000)
標(biāo)志大小:marker的大小(bits 16 25 49 ...)
aruco模塊中包含了一些已經(jīng)預(yù)先定義好不同大小和數(shù)量的字典集
Aruco標(biāo)記物生成
在檢測之前,往往我們需要打印一些marker放到我們的環(huán)境中。Marker圖案我們能通過drawMarker函數(shù)產(chǎn)生:
Aruco標(biāo)記物檢測
在包含ArUco標(biāo)志的圖片中,檢測過程通常能返回被檢測到的marker序列。每一個檢測的Marker結(jié)果包括:
marker四個角點在圖片中的位置
marker的id
Marker檢測過程主要有兩個步驟:
檢測Marker的候選區(qū)域。
通過分析二維碼確定marker
在opencv的ArUco模塊中,主要通過detectMarkers()函數(shù)來完成,這個函數(shù)是整個模塊中最重要的函數(shù)了,因為后續(xù)的函數(shù)處理幾乎都依賴于該函數(shù)的檢測結(jié)果。
位姿估計
當(dāng)獲取得到Marker的識別結(jié)果之后,就是確定相機姿態(tài)了。為了確定相機姿態(tài),首先得知道相機的標(biāo)定參數(shù),內(nèi)參和畸變。在估計每個ArUco標(biāo)記的時候,我們能單獨估計每個marker。如果你希望能從一系列的marker中估計一個pose,此時就需要ArUco Boards.
相機相對于marker的姿態(tài)是一個3d的旋轉(zhuǎn),從marker坐標(biāo)系到camera坐標(biāo)系。這個通過一個旋轉(zhuǎn)和一個平移向量和描述。
標(biāo)記坐標(biāo)系統(tǒng)是假設(shè)z軸是朝外的,x是朝右邊,y朝前進(jìn)方向。標(biāo)志角點在左上角點。
該庫主要的類主要有:?
aruco::Marker----視覺標(biāo)志類;?
aruco::MarkerDetector----視覺標(biāo)志檢測類;?
aruco::MarkerPoseTracker----視覺標(biāo)志姿態(tài)預(yù)估類;
aruco::MarkerMap-----視覺標(biāo)志地圖類;
aruco::MarkerMapPoseTracker----視覺標(biāo)志地圖姿態(tài)預(yù)估類;?
aruco::CvDrawingUtils----繪圖類;
注意:
aruco中的字典比如DICT_4X4_50是什么意思?
每個字典式表示位數(shù)和包含的標(biāo)記數(shù) 標(biāo)準(zhǔn)的標(biāo)記5×5位,0最小距離,4*4位表示marker標(biāo)記要被劃分的位數(shù),邊界為1比特位,所以4×4的marker識別時候會被分割為6×6的格子,最后面的數(shù)字表示字典里包含marker的個數(shù),比如50個。
AprilTag
AprilTag是一個視覺基準(zhǔn)系統(tǒng),可用于各種任務(wù),包括增強現(xiàn)實、機器人和攝像機校準(zhǔn)。AprilTag檢測可以計算標(biāo)定板相對于相機的精確三維位置、方向和id。AprilTag庫是用C實現(xiàn)的,沒有外部依賴關(guān)系。該庫可以很容易地包含在其他應(yīng)用程序中,也可以移植到嵌入式設(shè)備上。即使在手機級處理器上也可以實現(xiàn)實時性能。
AprilTag的地址:
https://github.com/AprilRobotics/apriltag
?AprilTag開源庫的幾個特點如下:?
1.基于C;?
2.不依賴其他第三方庫;?
3.BDS開源。?
AprilTags在概念上類似于QR碼,因為它們是一種二維條形碼。然而,它們被設(shè)計成編碼更小的數(shù)據(jù)有效載荷(4到12位之間),允許它們更可靠地被檢測到,并且可以從更長的范圍內(nèi)被檢測到。此外,他們是為高定位精度設(shè)計的,用戶可以計算精確的AprilTag相對于相機三維位置。
所以一般AprilTag用于機器人領(lǐng)域比較多。
AprilTag的種類
AprilTag的種類叫家族(family),有下面的幾種:
TAG16H5 → 0 to 29
TAG25H7 → 0 to 241
TAG25H9 → 0 to 34
TAG36H10 → 0 to 2319
TAG36H11 → 0 to 586
ARTOOLKIT → 0 to 511
也就是說TAG16H5的家族(family)有30個,每一個都有對應(yīng)的id,從0~29。
相關(guān)的論文
AprilTag: A robust and flexible visual fiducial system, ICRA 2011;?
AprilTag 2: Efficient and robust fiducial detection, IROS 2016;?
One useful application of AprilTags is camera calibration (AprilCal: Assisted and repeatable camera calibration, IROS 2013).
兩者優(yōu)劣比較
Aruco(在OpenCV中實現(xiàn))
優(yōu)點
易于設(shè)置(使用現(xiàn)成的aruco標(biāo)記生成器、opencv和ros實現(xiàn)等)
更少的錯誤檢測(使用默認(rèn)參數(shù))
缺點
較新版本的aruco是GPL許可的,因此opencv在aruco還是BSD的時候仍然停留在舊的實現(xiàn)上。
更容易在中長距離旋轉(zhuǎn)模糊
更多適配參數(shù)
計算量更大
AprilTag(在AprilTag? ros中實現(xiàn))
優(yōu)點
更少的適配參數(shù)
即使在遠(yuǎn)距離也能很好地工作
美國宇航局使用
更靈活的標(biāo)記設(shè)計(例如,標(biāo)記可以不一定是正方形)
計算量較少
缺點
不太直接地進(jìn)行配置和設(shè)置(沒有opencv實現(xiàn)AFAIK,只有ros實現(xiàn),獲得標(biāo)記的步驟稍微多一些)
更多錯誤檢測(使用默認(rèn)參數(shù))
接下來本公眾號將從opencv的中aruco模塊中給的教程從理論到實踐進(jìn)行講解。敬請期待ing...
資源
三維點云論文及相關(guān)應(yīng)用分享
【點云論文速讀】基于激光雷達(dá)的里程計及3D點云地圖中的定位方法
3D目標(biāo)檢測:MV3D-Net
三維點云分割綜述(上)
3D-MiniNet: 從點云中學(xué)習(xí)2D表示以實現(xiàn)快速有效的3D LIDAR語義分割(2020)
win下使用QT添加VTK插件實現(xiàn)點云可視化GUI
JSNet:3D點云的聯(lián)合實例和語義分割
大場景三維點云的語義分割綜述
PCL中outofcore模塊---基于核外八叉樹的大規(guī)模點云的顯示
基于局部凹凸性進(jìn)行目標(biāo)分割
基于三維卷積神經(jīng)網(wǎng)絡(luò)的點云標(biāo)記
點云的超體素(SuperVoxel)
基于超點圖的大規(guī)模點云分割
更多文章可查看:點云學(xué)習(xí)歷史文章大匯總
SLAM及AR相關(guān)分享
【開源方案共享】ORB-SLAM3開源啦!
【論文速讀】AVP-SLAM:自動泊車系統(tǒng)中的語義SLAM
【點云論文速讀】StructSLAM:結(jié)構(gòu)化線特征SLAM
SLAM和AR綜述
常用的3D深度相機
AR設(shè)備單目視覺慣導(dǎo)SLAM算法綜述與評價
SLAM綜述(4)激光與視覺融合SLAM
Kimera實時重建的語義SLAM系統(tǒng)
SLAM綜述(3)-視覺與慣導(dǎo),視覺與深度學(xué)習(xí)SLAM
易擴展的SLAM框架-OpenVSLAM
高翔:非結(jié)構(gòu)化道路激光SLAM中的挑戰(zhàn)
SLAM綜述之Lidar SLAM
基于魚眼相機的SLAM方法介紹
往期線上分享錄播匯總
第一期B站錄播之三維模型檢索技術(shù)
第二期B站錄播之深度學(xué)習(xí)在3D場景中的應(yīng)用
第三期B站錄播之CMake進(jìn)階學(xué)習(xí)
第四期B站錄播之點云物體及六自由度姿態(tài)估計
第五期B站錄播之點云深度學(xué)習(xí)語義分割拓展
第六期B站錄播之Pointnetlk解讀
[線上分享錄播]點云配準(zhǔn)概述及其在激光SLAM中的應(yīng)用
[線上分享錄播]cloudcompare插件開發(fā)
[線上分享錄播]基于點云數(shù)據(jù)的?Mesh重建與處理
[線上分享錄播]機器人力反饋遙操作技術(shù)及機器人視覺分享
[線上分享錄播]地面點云配準(zhǔn)與機載點云航帶平差
如果你對本文感興趣,請點擊“原文閱讀”獲取知識星球二維碼,務(wù)必按照“姓名+學(xué)校/公司+研究方向”備注加入免費知識星球,免費下載pdf文檔,和更多熱愛分享的小伙伴一起交流吧!
以上內(nèi)容如有錯誤請留言評論,歡迎指正交流。如有侵權(quán),請聯(lián)系刪除
掃描二維碼
? ? ? ? ? ? ? ? ? ?關(guān)注我們
讓我們一起分享一起學(xué)習(xí)吧!期待有想法,樂于分享的小伙伴加入免費星球注入愛分享的新鮮活力。分享的主題包含但不限于三維視覺,點云,高精地圖,自動駕駛,以及機器人等相關(guān)的領(lǐng)域。
分享及合作:群主微信“920177957”(需要按要求備注) 聯(lián)系郵箱:dianyunpcl@163.com,歡迎企業(yè)來聯(lián)系公眾號展開合作。
點一下“在看”你會更好看耶
總結(jié)
以上是生活随笔為你收集整理的ArUco与AprilTag简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于先验时间一致性车道线的IPM相机外参
- 下一篇: F-LOAM:基于激光雷达的快速里程计和