今年6月份Apple發(fā)布了iOS 11杉武,隨之帶來(lái)了ARKit陷谱,ARKit一出技驚四座惧浴,就在昨天Google發(fā)布了他們的AR開(kāi)發(fā)工具ARCore,看效果還是蠻不錯(cuò)的爽哎,看來(lái)又是一場(chǎng)大戰(zhàn)了蜓席。
GoogleAR官方平臺(tái):https://developers.google.com/ar
ARCore SDK:https://github.com/google-ar/arcore-android-sdk
ARCore是基于單目+IMU增強(qiáng)現(xiàn)實(shí)方案, 跟ARKit一樣课锌,除了自家平臺(tái)厨内,Unity3D和Unreal平臺(tái)也都有相應(yīng)的開(kāi)發(fā)包,都是為了籠絡(luò)開(kāi)發(fā)者啊渺贤。
解密三大核心功能
ARCore的核心功能有三個(gè):相機(jī)姿態(tài)估計(jì)雏胃, 環(huán)境感知以及光源感知(Light Estimation)。
相機(jī)姿態(tài)估計(jì)其實(shí)就是通過(guò)單目相機(jī)讀取圖像志鞍,通過(guò)特征的匹配估計(jì)相機(jī)的運(yùn)動(dòng)軌跡瞭亮。這點(diǎn)我相信研究過(guò)SFM、SLAM的同學(xué)并不陌生固棚。但是ARCore極有可能用的不是常見(jiàn)的特征匹配法统翩。這里先賣(mài)個(gè)關(guān)子,下文再詳細(xì)分析運(yùn)動(dòng)軌跡的估計(jì)方法此洲。
環(huán)境感知其實(shí)就是ARKit中的平面檢測(cè)厂汗,這樣可以保證虛擬物體擺放位置相對(duì)合理,處于水平姿態(tài)呜师。
而第三個(gè)功能光源感知娶桦,按照谷歌官方的說(shuō)法是,ARCore能感知現(xiàn)實(shí)世界的光源位置匣掸,使虛擬物體能夠形成相應(yīng)方位的影子趟紊,從而增加虛擬物體在現(xiàn)實(shí)世界里的真實(shí)度氮双∨鲈停可以看到上面的那個(gè)gif圖,在關(guān)燈之后戴差,獅子身上的光照也發(fā)生了變化送爸。
個(gè)人估計(jì):是因?yàn)槭褂玫钠ヅ渌惴ǖ脑颉N覀兙颓腥氲紸RCore第一個(gè)核心功能——姿態(tài)估計(jì)上暖释,進(jìn)行具體分析:
傳統(tǒng)的特征匹配方法只計(jì)算關(guān)鍵點(diǎn)和描述袭厂,幾十萬(wàn)像素的圖像只用了幾百個(gè)特征點(diǎn),屏蔽了大部分可能有用的信息球匕,更別說(shuō)對(duì)灰度的估計(jì)了纹磺。所以,ARCore很有可能是使用了直接法來(lái)做相機(jī)位姿估計(jì)(對(duì)直接法感興趣的同學(xué)可以去看看LSD, SVO, DSO等解決方案)亮曹。
簡(jiǎn)單來(lái)說(shuō)橄杨,直接法直接使用的是整張圖片的像素信息秘症,通過(guò)像素亮度來(lái)進(jìn)行運(yùn)動(dòng)軌跡的估計(jì)。這樣的好處是速度很快式矫,直接跳過(guò)計(jì)算關(guān)鍵點(diǎn)與描述子的步驟乡摹。同時(shí)在有些缺失特征點(diǎn)的環(huán)境下,只要環(huán)境中有明暗變化采转,也能工作聪廉,如此大大的避免了跟丟的情況。
直接法的數(shù)學(xué)推導(dǎo)就不詳述了故慈,但是該方案是基于灰度不變的強(qiáng)假設(shè)板熊。換句話(huà)說(shuō), 就是同一空間的像素灰度值察绷,在每張圖像上都是不變的邻邮。這樣就對(duì)光源的強(qiáng)弱及位置變化要求比較高,同時(shí)相機(jī)的自動(dòng)曝光功能也需要關(guān)閉克婶,使得圖像不會(huì)整體變亮或者變暗筒严。
ARCore的所謂光源感知功能估計(jì)就是基于像素灰度變化的計(jì)算。這也就是為什么不同的光源強(qiáng)度下情萤,形成的影子的方向效果有好有差鸭蛙。
由于直接法完全依靠像素梯度優(yōu)化來(lái)估計(jì)相機(jī)位姿,作為Ceres(谷歌推出的SLAM閉環(huán)檢測(cè)算法)的東家筋岛,這點(diǎn)對(duì)于谷歌來(lái)說(shuō)并不是什么難處娶视。另外一個(gè)ARCore使用直接法的例證就是點(diǎn)云。
ARCore的SDK里是有點(diǎn)云功能的——由于Unity3D的Demo存在Bug睁宰,無(wú)法看到具體形成的點(diǎn)云是半稠密還是稠密的肪获。但無(wú)論是半稠密還是稠密點(diǎn)云的構(gòu)建,這都是特征法無(wú)法實(shí)現(xiàn)的柒傻。個(gè)人估計(jì)是半稠密的點(diǎn)云孝赫。如果ARCore在沒(méi)有GPU CUDA加速的情況下真構(gòu)建了稠密點(diǎn)云,只能膜拜Google大法了红符。
相比之下青柄,ARCore能夠?qū)崿F(xiàn)的光源感知和點(diǎn)云功能,ARkit實(shí)現(xiàn)不了——如果ARKit是Metaio(蘋(píng)果之前收購(gòu)的德國(guó)公司)做的話(huà)预侯,采用特征法的可能性大致开,這樣就無(wú)法實(shí)現(xiàn)光源感知,點(diǎn)云理論上是能構(gòu)建萎馅,但只能是稀疏的双戳,基本上就是一堆點(diǎn),看不出什么糜芳。
至于ARCore整體的工程是SLAM還是VIO飒货,個(gè)人的偏向還是VIO更有可能千诬。就如ARKit一樣,使用的場(chǎng)景更偏向于手機(jī)端膏斤,在場(chǎng)景不大的情況下徐绑,VIO作為定位方案已經(jīng)綽綽有余,而且更加節(jié)省計(jì)算資源莫辨。
小結(jié)
雖然Google正式與Apple在AR戰(zhàn)場(chǎng)上叫板了傲茄,不過(guò)個(gè)人覺(jué)得鑒于安卓混亂的市場(chǎng),有些手機(jī)甚至沒(méi)有陀螺儀沮榜,我對(duì)它的推廣表示一些擔(dān)憂(yōu)盘榨。不過(guò)話(huà)說(shuō)回來(lái),Apple跟Google都在AR上發(fā)力蟆融,AR增強(qiáng)現(xiàn)實(shí)的春來(lái)就是真的來(lái)了草巡。