PS : 我忽然意識到ARToolKit本質可能就是一個能夠實時求解相機內外參的解決方案。測試
拿到一個新的SDK,90%的人應該都會先跑一下Example。拿到ARToolKit的SDK,也不例外。不過本人以前是作iOS開發的,因此從官網下載的是ARToolKit5-bin-5.3.2-iOS.tar.gz。後面的博客內容基本上也都是圍繞這個SDK進行的。固然,若是今年秋季出了ARToolKit6,我也會立馬跟進的,據說ARToolKit加入了SLAM。spa
example | pattern | result |
ARApp | 解鎖技能:觸摸該正方體,正方體將會旋轉 |
|
ARApp2 | 總共4個marker |
支持multi markers |
ARAppOSG | 總共2個marker |
|
ARAppMovie | ||
ARAppNFT | ||
ARAppNFTOSG | ||
ARAppCameraTest | 無 | 主要是爲了測試相機的若干功能,好比屏幕分辨率切換、截屏、先後攝像頭切換。 |
ARAppES1 |
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訓練這一部分後面會專門開一章詳解。3d
pattern的圖片能夠打印出來,example中的pattern圖片都是放在doc/patterns文件夾下。好比hiro pattern的pattern文件就是hiro.patt。blog
打開hiro.patt文件,你能夠看到裏面全是數字,不過很明顯,這些應該都是顏色值:圖片
考慮到hiro是黑白圖,因此我將這些顏色值當作灰度值進行了圖片輸出,獲得了下面這張圖片。敢情hiro.patt的本質實際上是這樣的:ip
而pinball.jpg的pattern文件是這樣的:ci
pinball.fset &pinball.fset3 |
Tip開發
pattern的圖片存放在doc/patterns文件夾下,hiro pattern有兩張圖片get
hiro pattern with border | hiro pattern |
實際使用中,能夠明顯發現hiro pattern with border的識別率遠遠高於hiro pattern,這是由於有了border的對比(注意到border和pattern黑色邊緣的對比明顯),對於pattern的識別率有顯著提升。博客
除了pattern文件,每一個example都有三個一樣的文件 – camera_para.dat、markers.dat、models.dat。
相機標定獲取到的相機內參。
下圖解釋了內參與外參的含義(來源自知乎機器視覺的相機標定究竟是什麼?)。
另外還有TRANSPARENT選項,添加這個字段表示該模型有透明部分。
其實你也能夠經過修改程序,增長本身的配置選項,仍是很方便擴展的。