【AR實驗室】ARToolKit之Example篇


0x00 - 前言


PS : 我突然意識到ARToolKit本質可能就是一個可以實時求解相機內外參的解決方案。

拿到一個新的SDK,90%的人應該都會先跑一下Example。拿到ARToolKit的SDK,也不例外。不過本人之前是做iOS開發的,所以從官網下載的是ARToolKit5-bin-5.3.2-iOS.tar.gz。后面的博客內容基本上也都是圍繞這個SDK進行的。當然,如果今年秋季出了ARToolKit6,我也會立馬跟進的,聽說ARToolKit加入了SLAM。

image

0x01 – 示例簡介


example pattern result
ARApp image ARApp
解鎖技能:觸摸該正方體,正方體將會旋轉
ARApp2 image
總共4個marker
ARApp2
支持multi markers
ARAppOSG image
總共2個marker
ARAppOSG
ARAppMovie image ARAppMovie
ARAppNFT pinball ARAppNFT
ARAppNFTOSG pinball ARAppNFTOSG
ARAppCameraTest 主要是為了測試相機的若干功能,比如屏幕分辨率切換、截屏、前后攝像頭切換。
ARAppES1 image ARAppES1

0x02 - Pattern文件


pattern指的是你識別的圖片模板,雖然上述表格使用圖片來表示pattern,但是在ARToolKit中,我們需要對圖片進行訓練,對於marker類型的圖片是輸出”.patt”文件以便ARToolKit進行識別。而NFT(Natural Feature Tracking)自然圖片是輸出FeatureList,比如上述使用的pinball.jpg輸出的FeatureList就是“pinball.fset”、”pinball.fset3”(而pinball.iset表示的是pinball.jpg的image set,即原始的圖片信息)。關於圖片/marker訓練這一部分后面會專門開一章詳解

pattern的圖片可以打印出來,example中的pattern圖片都是放在doc/patterns文件夾下。比如hiro pattern的pattern文件就是hiro.patt。

打開hiro.patt文件,你可以看到里面全是數字,不過很明顯,這些應該都是顏色值:

image

考慮到hiro是黑白圖,所以我將這些顏色值當做灰度值進行了圖片輸出,得到了下面這張圖片。敢情hiro.patt的本質其實是這樣的:

image

而pinball.jpg的pattern文件是這樣的:

pinball.fset
&pinball.fset3
image

 


Tip

pattern的圖片存放在doc/patterns文件夾下,hiro pattern有兩張圖片

hiro pattern with border hiro pattern
image image

實際使用中,可以明顯發現hiro pattern with border的識別率遠遠高於hiro pattern,這是因為有了border的對比(注意到border和pattern黑色邊緣的對比明顯),對於pattern的識別率有顯著提高。


0x03 - 其他配置文件


除了pattern文件,每個example都有三個同樣的文件 – camera_para.dat、markers.dat、models.dat。

  • camera_para.dat

相機標定獲取到的相機內參。

下圖解釋了內參與外參的含義(來源自知乎機器視覺的相機標定到底是什么?)。

image

  • markers.dat

image

  • models.dat

image

另外還有TRANSPARENT選項,添加這個字段表示該模型有透明部分。

其實你也可以通過修改程序,增加自己的配置選項,還是很方便擴展的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM