《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 深入解讀:增強(qiáng)現(xiàn)實(AR)的過去、現(xiàn)在和未來

深入解讀:增強(qiáng)現(xiàn)實(AR)的過去、現(xiàn)在和未來

2017-08-11
來源:雷鋒網(wǎng)
關(guān)鍵詞: AR 增強(qiáng)現(xiàn)實 3D Oculus

1、從現(xiàn)實到增強(qiáng)現(xiàn)實

增強(qiáng)現(xiàn)實(Augmented Reality,簡稱AR)和虛擬現(xiàn)實(Virtual Reality,簡稱VR)概念的出現(xiàn)已經(jīng)有幾十年的歷史了,然而VR/AR大量出現(xiàn)在科技媒體上吸引各方眼球也就是最近的事情。在本節(jié)中我們簡單介紹一下這兩個概念以及它們的歷史,同時澄清一下它們的區(qū)別。

首先,讓我們來想一想:什么是現(xiàn)實?很哲學(xué)很深邃的問題,古希臘思想家柏拉圖說過,哦,扯遠(yuǎn)了,回到大家賴以養(yǎng)家糊口的計算機(jī)世界,沿用俗語我們定義現(xiàn)實為:“眼見為實”。再具體地說,我們關(guān)心的現(xiàn)實就是以影像的方式呈現(xiàn)給人類視覺系統(tǒng)的對于真實世界的感知信息。簡單的說,就是真實世界的影像。

上述定義顯然給了有進(jìn)取心的計算機(jī)牛人們一個后門:如果以某種方式生成影像,只要足夠逼真,是不是就能愚弄人類的眼睛甚至整個大腦呢?有道理,這不就是黑客帝國的原型嘛。這種虛擬出來的現(xiàn)實,毫無懸念就是虛擬現(xiàn)實(VR)的定義。當(dāng)然,目前的技術(shù)能力還遠(yuǎn)遠(yuǎn)無法實現(xiàn)黑客帝國中的那種迷人的沉浸感。事實上,從最早的VR原型,1962年由Morton Helig發(fā)明的虛擬現(xiàn)實3D個人影院Sensorama(圖1),到最近拉風(fēng)的Oculus,虛擬現(xiàn)實技術(shù)帶來的沉浸感始終處在一種需要用戶主動相信的狀態(tài)。當(dāng)然,這種狀態(tài)對于很多應(yīng)用來說不是什么問題,所以才有了如今大熱的各種VR產(chǎn)品和資本熱捧的各個VR大鱷和新秀。

577a2f2e01293.png

那么,增強(qiáng)現(xiàn)實(AR)又是個啥?

經(jīng)常收到熱心朋友的“你們公司的VR做得真棒”的贊,虛榮心滿足的同時,作為一個嚴(yán)謹(jǐn)?shù)募夹g(shù)工作者,其實我是很有些尷尬的。很多時候我真的很想說:親愛滴,我們做的是AR,是AAAAA R啊!言歸正傳,讓我們引用一下維基百科的定義:

“Augmented reality (AR) is a live direct or indirect view of a physical, real-world environment whose elements are augmented (or supplemented) by computer-generated sensory input such as sound, video, graphics or GPS data. As a result, the technology functions by enhancing one's current perception of reality.”

請注意定義中的“physical, real-world environment”。就是說AR中的R是真實的R,相比之下,VR中的R就是個山寨版的。那么A這個增強(qiáng)的概念就比較廣大虛了:籠統(tǒng)的說,凡是能對R有附加額外的信息的都算。除了像HoloLens中那樣在實時影像上疊加的各種花哨東西以外,實用系統(tǒng)如ADAS里面實時疊加的車道線,輔助生產(chǎn)系統(tǒng)中頭顯里顯示的指示箭頭等等,都可以算。再次強(qiáng)調(diào)的是,AR里面的信息是疊加到真實的場景里面的,而不是虛擬的場景(即VR)里面的。一個有意思的小眾研究方向是將一部分真實場景中的內(nèi)容疊加到虛擬場景中,學(xué)名Augmented Virtualization,簡稱AV。

577a2f3035a6c.png

圖2中的例子也許能更好地反映AR和VR的區(qū)別。上方顯示的是典型的VR設(shè)備和人眼接收到的VR影像,下方則是AR設(shè)備和AR影像。這一組例子中我們可以看到VR是將人和真實世界完全隔離的,而AR則相反。AR和VR的優(yōu)缺點(diǎn)在這里就不啰嗦了。當(dāng)然,睿智如你,一定不喜歡被虛擬的假象蒙蔽雙眼的感覺,對吧?另外值得一提的Digi-Capital對于它們市場前景的預(yù)測:到2020年,AR/VR的市場體量總共是1500億美元,其中AR占1200億,VR300億。

從另一角度來看,它們也有一個比較明顯的相似之處,都是通過影像的方式實現(xiàn)人和計算機(jī)之間的交互,所以它們都需要有生成或者加工影像的能力和將影像呈現(xiàn)給人眼的途徑。前者是AR和VR之間很不同的地方,VR基于虛擬生成,AR則基于對現(xiàn)實的加工。而在影像呈現(xiàn)的方面AR和VR基本上是一致的,這也是行外人士難以區(qū)分二者的原因。簡而言之VR和AR的區(qū)別是:

VR是趨近現(xiàn)實;AR是超越現(xiàn)實。

接下來我們主要討論AR,重點(diǎn)討論AR和VR不同的那一部分。那么AR是如何發(fā)展起來的呢?一般認(rèn)為,AR的鼻祖是哈佛大學(xué)Ivan Sutherland教授1966年發(fā)明的光學(xué)透射式頭盔顯示器(STHMD),該設(shè)備使得虛實結(jié)合成為可能。增強(qiáng)現(xiàn)實這個術(shù)語最早是由波音公司的研究員Thomas P. Caudell在90年代初提出的。1992年,兩個早期的原型系統(tǒng),Virtual Fixtures虛擬幫助系統(tǒng)和KARMA機(jī)械師修理幫助系統(tǒng),由美國空軍的Louis Rosenberg和哥倫比亞大學(xué)的S. Feiner等人分別提出。

577a2f377e7e8.png

早期的AR系統(tǒng)多是應(yīng)用在工業(yè)制造維修或類似場景中的,笨重而且畫質(zhì)粗糙(相對于現(xiàn)在的系統(tǒng)而言)。這一方面是由于當(dāng)時的計算能力和資源所約束,另一方面也是算法技術(shù)的發(fā)展還沒有到位,同時移動數(shù)字影像設(shè)備還遠(yuǎn)未普及到一般個人用戶。之后,隨著這幾個方面的迅猛發(fā)展,AR的應(yīng)用和研究也有了長足的進(jìn)步。尤其值得一提的是2000年Bruce Thomas等研發(fā)的ARQuake系統(tǒng)和2008年推出的Wikitude,前者將AR推向了移動可穿戴的領(lǐng)域,而后者將AR直接落戶到了手機(jī)端。至于最近開始拉風(fēng)無比的HoloLens和神秘兮兮的Magic Leap,更是將對AR的關(guān)注引向了從所未有的高度。

577a2f391e831.png

從下面開始,我們將從軟件技術(shù)和智能理解的角度介紹AR。

2、AR中的視覺技術(shù)

增強(qiáng)現(xiàn)實技術(shù)流程

按照Ronald Azuma在1997年的總結(jié),增強(qiáng)現(xiàn)實系統(tǒng)一般具有三個主要特征:虛實結(jié)合,實時交互,和三維配準(zhǔn)(又稱注冊、匹配或?qū)?zhǔn))。近二十年過去了,AR已經(jīng)有了長足的發(fā)展,系統(tǒng)實現(xiàn)的重心和難點(diǎn)也隨之變化,但是這三個要素基本上還是AR系統(tǒng)中不可或缺的。

577a2f3a3e271.png

圖4描繪了一個典型的AR系統(tǒng)的概念流程。從真實世界出發(fā),經(jīng)過數(shù)字成像,然后系統(tǒng)通過影像數(shù)據(jù)和傳感器數(shù)據(jù)一起對三維世界進(jìn)行感知理解,同時得到對三維交互的理解。3D交互理解的目的是告知系統(tǒng)要“增強(qiáng)”的內(nèi)容。例如,在AR輔助維修系統(tǒng)中,如果系統(tǒng)識別出修理師翻頁的手勢,就意味著下面要疊加到真實圖像中的應(yīng)該是虛擬手冊的下一頁。相比之下,3D環(huán)境理解的目的就是告知系統(tǒng)要在哪里“增強(qiáng)”。比如在上面的例子中,我們需要新的顯示頁和以前的看起來在空間位置上是完全一致的,從而達(dá)到強(qiáng)烈的真實感。這就要求系統(tǒng)實時對周圍的真實3D世界有精準(zhǔn)的理解。一旦系統(tǒng)知道了要增強(qiáng)的內(nèi)容和位置以后,就可以進(jìn)行虛實結(jié)合,這個一般是通過渲染模塊來完成。最后,合成的視頻被傳遞到用戶的視覺系統(tǒng)中,就達(dá)到了增強(qiáng)現(xiàn)實的效果。

在AR的技術(shù)流程中,數(shù)據(jù)的采集(包括影像和傳感器)已經(jīng)比較成熟,顯示端和渲染端的技術(shù)也有了長足的進(jìn)步。相對而言,中間的對于環(huán)境和交互的精準(zhǔn)理解就是目前的瓶頸了。聰明的同學(xué)一定會想到,如果中間這部分使用基本虛擬生成的內(nèi)容,不就可以了嗎?恭喜你來到熱鬧的VR界:據(jù)說從2015年以來,國內(nèi)已經(jīng)涌現(xiàn)了好幾百個VR公司,光做VR眼鏡就上百,不會幾個VR名詞的話都不好意思和人打招呼,呵呵。當(dāng)然,本文討論的是AR,上圖中間的基于多模態(tài)(簡單說就是影像+傳感器)的環(huán)境和交互理解,是兩個充滿了各種或明或暗的坑的領(lǐng)域,足以讓很多假的猛士知難而退。

那么,真的猛士將會直面什么樣慘淡和淋漓的坑群呢?下面我們來共同賞析幾個常見坑型:

環(huán)境坑:據(jù)說人的腦細(xì)胞里面大多數(shù)都是用來處理和理解雙眼所獲取的視覺信息的,很多我們驚鴻一瞥就能理解和感知的東西得益于我們強(qiáng)大的腦處理能力。各種環(huán)境變化對視覺信息的影響我們不但能輕松應(yīng)對,有時還能加以利用。比如我們的認(rèn)知能力對光照明暗的變化相當(dāng)?shù)聂敯?比如我們可以通過陰影來反推三維關(guān)系。而這些對于計算機(jī)(確切些說是計算機(jī)視覺算法)來說都是不折不扣的坑或者大坑。理解了這種坑,就不難理解為什么很多看起來美輪美奐的demo實用起來那么悲催,可能的原因包括光照變了、形狀變了、紋理變了、姿態(tài)變了、相機(jī)變了、背景變了、前景變了;有陰影了、有遮擋了、有噪聲了、有干擾了、有畸變了等等。更加悲催的是,這些影響系統(tǒng)效果的因素在我們?nèi)祟惖囊曈X系統(tǒng)中經(jīng)常是難以察覺的,以至于小白用戶們經(jīng)常對我們的工作能力表示狐疑并產(chǎn)生親自上手的沖動??偟膩碚f,成像環(huán)境的變化常常給計算機(jī)視覺算法以及AR帶來很大的挑戰(zhàn),所以我把相關(guān)的坑統(tǒng)稱環(huán)境坑。

學(xué)術(shù)坑:對于環(huán)境和交互的理解重建基本上屬于計算機(jī)視覺的范疇,計算機(jī)視覺是一個有著半個世紀(jì)積累的領(lǐng)域,和AR相關(guān)的學(xué)術(shù)成果可以成噸來計。比如,如果對跟蹤感興趣的話,光文章題目中含有“tracking”的頂級會議論文(比如CVPR),每一年都能有幾十篇。夸張一點(diǎn)的說,每篇都有坑,區(qū)別只在大小深淺明暗。為什么會這樣?哦,這個嘛,要發(fā)一篇CVPR,我們要想法新、理論強(qiáng)、公式繁、結(jié)果好、速度還不能太慢(艾瑪我容易嘛我),程序不過擬合數(shù)據(jù)真的很難,文章不藏著limitations(注意是復(fù)數(shù))也很難。不是說這些學(xué)術(shù)成果沒有用,相反,正是這些前仆后繼的學(xué)術(shù)進(jìn)展才慢慢催生了領(lǐng)域的進(jìn)步。重點(diǎn)是,從實用的解決方案的角度來看學(xué)術(shù)論文,尤其是新的論文,一定要小心其中的設(shè)定和有些話外的信息,多想一下諸如該算法是否對光照敏感,是否可能在手機(jī)端達(dá)到實時等等。簡單的建議是:對于一篇計算機(jī)視覺的論文,未有相關(guān)經(jīng)驗的觀眾請在有相關(guān)訓(xùn)練的成熟觀眾陪伴下謹(jǐn)慎觀看。

上帝坑:上帝是誰?當(dāng)然就是用戶了。上帝的坑當(dāng)然得長得有創(chuàng)意,常常激起開發(fā)者靈光一動恍然大哭的欲望。比如上帝說,要能判別視頻中人的性別,80%的準(zhǔn)確度,100萬。哇,你是不是感動的熱淚盈眶(仁慈的上帝啊),用各種時髦的方法輕松超額10%搞定??墒?,交貨的時候上帝說你這個系統(tǒng)咋認(rèn)不出我們家小baby的性別啊?Oh my God,你是不是又激動得想哭了。和環(huán)境坑比較像,CV的算法很多時候是需要有假設(shè)的,強(qiáng)烈的假設(shè)。那怎么辦呢?上帝總是正確的,所以唯一的辦法就是盡早教育上帝讓他更加正確:需要苦口婆心地盡早和用戶科普以及盡量明確定義需求,防范坑于未成。還不行的話咋辦?上帝啊,請再加點(diǎn)工錢吧。

其實還有其他類型的坑,比如開源代碼坑,這里就不詳述了。那么,這么一個充滿憂患的領(lǐng)域,為什么又會有那么多追隨呢?最重要的原因就是巨大的應(yīng)用前景和錢景了。往小了說,很多具體的應(yīng)用領(lǐng)域(比如游戲)都已經(jīng)成功地引入了AR的元素;往大了說,AR的終極形態(tài)可能從根本上改變當(dāng)前的非自然人機(jī)交互模式(請腦補(bǔ)微軟Win95的成功和現(xiàn)在的HoloLens)。上面說的那些坑,在很多應(yīng)用上,是可能避免的或者可能填得不那么深的。舉個例子:某AR游戲里面需要在跟蹤的Marker上進(jìn)行游戲內(nèi)容疊加,而該游戲的特殊性使跟蹤的精確性難以保證(好吧,其實是算法做得不夠給力)從而導(dǎo)致影響用戶體驗的抖動。這種情況下,一個簡單有效的辦法是把要疊加的內(nèi)容做得動感十足,這樣一來用戶就感覺不到令人不爽的抖動了。類似的實戰(zhàn)例子非常多,有的是從渲染端解決的,還有更多的是針對具體用例做算法層面的優(yōu)化定制的。總的來說,一個好的AR應(yīng)用往往是需要算法工程實現(xiàn)、產(chǎn)品設(shè)計、內(nèi)容制作等方面的深度結(jié)合。

好了,水貨講得太多了,下面我們開始講技術(shù)了。主要是跟蹤配準(zhǔn)方面,一來是這些技術(shù)在AR中的核心重要性,二來嘛,其他方面我其實也不太懂(看我多謙虛,呵呵)。

三維配準(zhǔn)是鏈接虛實的最核心技術(shù),沒有之一。大致說來,在AR中配準(zhǔn)的目的是對影像數(shù)據(jù)進(jìn)行幾何上的精確理解。這樣一來,就決定了要疊加的數(shù)據(jù)的定位問題。比如說,在AR輔助導(dǎo)航中如果想把導(dǎo)航箭頭“貼在”路面上(如圖5),就一定要知道路面在哪里。在這個例子中,每當(dāng)手機(jī)攝像頭獲取到新一幀圖像,AR系統(tǒng)首先需要將圖像中的路面定位,具體的說就是在某個事先設(shè)定的統(tǒng)一的世界坐標(biāo)系下確定地面的位置,然后將要貼的箭頭虛擬地放在這個地面上,再通過與相機(jī)相關(guān)的幾何變換將箭頭畫在圖像中相應(yīng)的位置(通過渲染模塊完成)。

577a2f3b7924f.png

如前所述,三維跟蹤配準(zhǔn)在技術(shù)上存在很多挑戰(zhàn),尤其在考慮到移動設(shè)備有限的信息輸入和計算能力的情況下。鑒于此,在基于視覺AR的發(fā)展歷程中,經(jīng)歷了從簡單定位到復(fù)雜定位的幾個階段,下面簡單介紹一下這個發(fā)展過程,更多的技術(shù)細(xì)節(jié)在下一節(jié)討論。

二維碼:和大家如今廣為使用的微信二維碼原理一樣,二維碼主要的功能在于提供穩(wěn)定的快速的識別標(biāo)識。在AR中,除了識別以外,二維碼還兼職提供易于跟蹤和對于平面進(jìn)行定位的功能。因為這個原因,AR中的二維碼比一般的二維碼來說模式顯得簡單以便于精確定位。圖6給出了AR二維碼的例子。

577a2f3c8ee2e.png

二維圖片:二維碼的非自然人工痕跡很大地局限了它的應(yīng)用。一個很自然的拓廣是使用二維圖片,比如紙幣、書本海報、相片卡牌等等。聰明的小白朋友一定已經(jīng)發(fā)現(xiàn):二維碼本身也是二維圖片,那為啥不把二維碼的方法直接用到二維圖片上呢?哦,是醬紫:二維碼之所以簡單就是因為它上面的圖案是設(shè)計出來的讓視覺算法可以迅速識別定位的,一般的二維圖片則不具備這種良好的性質(zhì),也需要更強(qiáng)大的算法。并且,不是所有的二維圖片都可以用來進(jìn)行AR定位的。極端情況下,一個純色的沒有任何花紋的圖片是無法用視覺的方法定位的。圖7的例子中,兩張卡牌用來定位兩個對戰(zhàn)重點(diǎn)的虛擬戰(zhàn)士。

577a2f3db8a41.png

三維物體:二維圖片的自然擴(kuò)展當(dāng)屬三維物體。一些簡單的規(guī)則三維物體,比如圓柱狀可樂罐,同樣可以作為虛實結(jié)合的載體。稍微復(fù)雜一些的三維物體通常也可以用類似的方法處理或分解成簡單物體處理,如在工業(yè)修理中的情況。但是,對于一些特定的非規(guī)則物體,比如人臉,由于有多年的研究積累和海量的數(shù)據(jù)支持,已經(jīng)有很多算法可以進(jìn)行實時精準(zhǔn)對齊。然而,如何處理通用的物體仍然是一個巨大的挑戰(zhàn)。

三維環(huán)境:在很多應(yīng)用中我們需要對整個周圍3D環(huán)境的幾何理解,很長時間以來和可預(yù)期的一段時間以內(nèi),這一直是個充滿挑戰(zhàn)的問題。近年來,三維環(huán)境感知在無人車和機(jī)器人等領(lǐng)域的應(yīng)用取得了成功的效果,這讓人們對在其在AR中的應(yīng)用充滿憧憬。然而,相比無人車等應(yīng)用場景,AR中可以使用的計算資源和場景先驗常常捉襟見肘。受此影響,AR中的三維場景理解研發(fā)主要有了兩個顯而易見的思路,一是多傳感器的結(jié)合,而是對于應(yīng)用的定制。兩個思路的結(jié)合也是實用中常見的手段。

在以上提到的技術(shù)中,二維碼和二維圖片的識別跟蹤技術(shù)已基本上成熟,也已經(jīng)有了廣泛的應(yīng)用。技術(shù)方面的發(fā)展目標(biāo)主要是進(jìn)一步提高穩(wěn)定性以及拓寬適用范圍。相比而言,三維物體和三維場景的識別理解還有很大的探索空間,即使是目前火爆的HoloLens所展現(xiàn)的令人驚艷的跟蹤穩(wěn)定性,從追求完美的角度還有很多可以提升的空間。

3、單目AR識別跟蹤簡介

由于識別跟蹤的重要性,下面簡單介紹一下AR中的二維圖片跟蹤和三維環(huán)境理解。二維碼的技術(shù)已經(jīng)很成熟而應(yīng)用較受限制,三維物體識別的技術(shù)大致上介于二維圖片和三維場景之間,所以就偷懶不提了。

一般情況下, AR中二維平面物體的跟蹤可以歸結(jié)為如下問題:給定一個模板圖片R,在視頻流中時刻檢測該圖片的(相對相機(jī)的)三維精確位置。比如在圖8的例子中,R是實現(xiàn)知道的人民幣圖片,視頻是從手機(jī)端實時獲取的,通常記為It (表示在時間t獲得的視頻圖像),而需要得到的是R在It中的幾何姿態(tài)(通常包括三維旋轉(zhuǎn)和平移),記為Pt。換句話說,模板圖片R通過由Pt表示的三維變換就可以被貼到它在圖像It中的位置。跟蹤結(jié)果的用途也很顯然,既然知道了這個姿態(tài)Pt,我們可以用一個美元的圖片以同樣的姿態(tài)疊加到視頻中來替換人民幣,從而達(dá)到6倍以上的炫富效果。好吧,例子中沒有那么俗氣,而是疊加了一個莊嚴(yán)的視頻。

577a2f3eea1e9.png

那么,上面例子中的跟蹤定位是如何做到的呢?主流的方法大致有兩類,一類是直接法(direct method,有時也稱為全局法),另一類叫間接法,哦不對,叫控制點(diǎn)法(keypoint-based)。

直接法:直接法里的“直接”是說直接用優(yōu)化方法去找最好的目標(biāo),即姿態(tài)Pt。這里牽涉到三個主要元素:

(1)怎么定義好和不好,(2)在哪里找Pt,(3)怎么找。

對于(1),一個直觀的辦法是:假設(shè)模板圖按照姿態(tài)Pt變換后對應(yīng)圖像It上的一個小區(qū)域,那么這個區(qū)域可以摳出一個圖像T,T(經(jīng)過歸一化以后)應(yīng)該和模板R長得越像越好。

對于(2),我們可以在所有可能的姿態(tài)中去找Pt。不過這個策略顯然是很費(fèi)時的,考慮到在視頻中相鄰圖像幀的變化有限,所以我們通常是在上一時刻的姿態(tài)(通常記為Pt-1)附近去尋找。至于怎么找,這就轉(zhuǎn)化成一個優(yōu)化問題了,簡單的說,就是要在Pt-1的一個鄰域里面找一個Pt,使得通過Pt摳出來得圖像塊T和R最相似。當(dāng)然,實際操作時候上面三個部分都各有講究。比如(1)中對于T和R是否相似可能要考慮光照的變化,(2)中如何定義姿態(tài)空間的鄰域以及合理的鄰域大小。

(3)中具體用什么樣的優(yōu)化算法來盡量對抗局部極值的干擾而又不能太耗時。不同的處理方式產(chǎn)生出了不同的跟蹤算法,其中典型的代表工作之一是ESM算法和它的一些變種。

ESM是Efficient Second-order Minimization的縮寫,源自Benhimane和Malis在2004年在IROS上發(fā)表的工作。該算法采用重構(gòu)誤差平方作為衡量R和T相似性的指標(biāo),然后對于姿態(tài)空間進(jìn)行了在李群(Lie Group)上的重新構(gòu)建使得搜索的步長更為理性,在尋優(yōu)上面使用的二階近似的快速算法。這個算法的結(jié)構(gòu)清晰,各模塊都可以比較容易的獨(dú)立擴(kuò)展,所以在其基礎(chǔ)上衍生出了不少改進(jìn)算法,通常是針對實用場景中不同的調(diào)整(比如處理強(qiáng)光照或者運(yùn)動模糊)。

控制點(diǎn)法:基于控制點(diǎn)的方法由于其實時高效成為目前業(yè)內(nèi)主流方法??刂泣c(diǎn)類的方法并不直接對姿態(tài)Pt進(jìn)行尋優(yōu),而是通過控制點(diǎn)匹配的方法來計算Pt??刂泣c(diǎn)法的一個典型流程參見圖9。其基本出發(fā)點(diǎn)在于使用圖像中特別的點(diǎn)(通常是角點(diǎn))來建立模板R和視頻圖像It之間的映射,通過該映射建立方程組,然后求解出姿態(tài)Pt。比如說模板是一張人物的相片,那么我們在視頻中定位的時候并不需要對于臉上的所有點(diǎn)進(jìn)行匹配,而可以通過一些控制點(diǎn)(眼角,鼻尖,嘴角等)迅速定位。

577a2f3fe3a34.png

稍微數(shù)學(xué)一點(diǎn)的解釋是這樣的:由于姿態(tài)Pt是由若干參數(shù)(一般是8個)控制的,那么求解Pt的一個辦法是弄一個方程組出來,比如說8個線性的方程,那么我們就可以求出Pt了。那么這些方程怎么來呢?我們知道,Pt的作用是把模板R變到圖像It中,也就是說R中的每個點(diǎn)經(jīng)過一個由Pt決定的變換就可以得到它在圖像中的位置。那么,反過來,如果我們知道圖像中的一個點(diǎn)(比如眼角)和模板中就是同一個點(diǎn)(就是說他們匹配上了),我們就可以用這一對匹配點(diǎn)給出兩個方程(X、Y坐標(biāo)各一個),這樣的點(diǎn)就是所謂的控制點(diǎn)。當(dāng)我們有了足夠多的控制點(diǎn)對以后,就可以求解姿態(tài)Pt了。

總結(jié)起來,控制點(diǎn)法包括三個主要元素:(1)控制點(diǎn)提取和選擇,(2)控制點(diǎn)匹配,(3)姿態(tài)求解。

控制點(diǎn)的基本要求:一是要能從周圍環(huán)境中脫穎而出(減少位置上的歧義),二是要經(jīng)常而且穩(wěn)定地出現(xiàn)(易于找到)。各種圖像中的角點(diǎn)因此閃亮登場,各種PK。比較知名的有SIFT、SURF、FAST等。注意,上述排名分先后的:按照能力來說越往前越好,按照速度來說越往后越好。實際應(yīng)用中可以根據(jù)用戶機(jī)型做決定。那么,這些點(diǎn)提取后就可以用了嗎?No,一般來說還需要進(jìn)行取舍:一是要去掉沒用的點(diǎn)(即outlier),二是使選取后的點(diǎn)盡量均勻以降低不必要的誤差,同時也要防止點(diǎn)太多帶來的大量后續(xù)計算。

控制點(diǎn)匹配的目的是在兩個圖像的控制點(diǎn)集間找到匹配的點(diǎn)對(鼻尖對鼻尖,眼角對眼角)。通常這個由控制點(diǎn)之間的相似性和空間約束協(xié)同完成。簡單的方法有緊鄰匹配,復(fù)雜的基本上是二分匹配的各種變種(bipartite matching or two-dimensional assignment)。完成了匹配之后,就可以求解得到姿態(tài)Pt了:由于通常使用的點(diǎn)數(shù)遠(yuǎn)多于最小需求(為了穩(wěn)定性),這里的方程數(shù)目遠(yuǎn)大于未知變量的數(shù)目,所以最小二乘法之類的解法在這里會派上用場。

以上三個步驟初看起來涇渭分明,實際使用時卻經(jīng)常是交織在一起的。主要原因是很難保證得到精確無誤的控制點(diǎn)。有用的可靠控制點(diǎn)常常夾雜著各種真假難辨的山寨們一起到來,所以經(jīng)常需要往返迭代在三個步驟之間,比如用RANSAC之類的方法選擇控制點(diǎn)來得到服從大多數(shù)的姿態(tài)。相比直接法,控制點(diǎn)法的基本算法框架比較成熟,工程實現(xiàn)上的細(xì)節(jié)很大程度上決定了算法的最終效果。

這兩類方法的優(yōu)缺點(diǎn)根據(jù)具體實現(xiàn)略有不同,大致上可以總結(jié)如下:

577a2f2cc8a31.png

這兩類方法的優(yōu)缺點(diǎn)有很明顯的互補(bǔ)性,所以一個自然的想法就是二者的結(jié)合,具體的方式也有不同變種,這里就不羅嗦了。

三維環(huán)境的AR跟蹤

對于三維環(huán)境的動態(tài)的實時的理解是當(dāng)前AR在技術(shù)研究方面最活躍的問題。其核心就是最近火熱的“即時定位與地圖構(gòu)建”(SLAM,Simultaneously Localization And Mapping),在無人車、無人機(jī)和機(jī)器人等領(lǐng)域也起著核心作用。AR中的SLAM比其他領(lǐng)域中一般難度要大很多,主要是因為AR賴以依存的移動端的計算能力和資源比起其他領(lǐng)域來說要弱很多。目前在AR中還是以視覺SLAM為主,其他傳感器為輔的局面,盡管這個情況正在改變。下面的討論主要局限于視覺SLAM。

標(biāo)準(zhǔn)的視覺SLAM問題可以描述為:把你空投到一個陌生的環(huán)境中,你要解決“我在哪”的問題。這里的“我”基本上等同于相機(jī)或者眼睛(因為單目,即單相機(jī),請把自己想象成獨(dú)眼龍),“在”就是要定位(就是localization),“哪”需要一張本來不存在的需要你來構(gòu)建的地圖(就是mapping)。你帶著一只眼睛一邊走,一邊對周邊環(huán)境進(jìn)行理解(建圖),一邊確定在所建地圖中的位置(定位),這就是SLAM了。換句話說,在走的過程中,一方面把所見到(相機(jī)拍到)的地方連起來成地圖,另一方面把走的軌跡在地圖上找到。下面我們看看這個過程大致需要哪些技術(shù)。

從圖像序列反算出三維環(huán)境的過程,即mapping,在計算機(jī)視覺里面屬于三維重建的范疇。在SLAM中,我們要從連續(xù)獲取的圖像序列來進(jìn)行重建,而這些圖像序列是在相機(jī)的運(yùn)動過程中采集的,所以相關(guān)的技術(shù)就叫基于運(yùn)動的重建(SfM,Structure from Motion)。題外話,SfX是視覺中泛指從X中進(jìn)行三維重建的技術(shù),X除了運(yùn)動以外還可以有別的(比如Structure from Shading)。如果相機(jī)不動怎么辦?很難辦,獨(dú)眼龍站著不動怎么能知道周圍三維的情況呢?原理上來說,一旦獲取的兩張圖像之間有運(yùn)動,就相當(dāng)于有兩只眼睛同時看到了場景(注意坑,這里假設(shè)場景不動),不就可以立體了嗎?這樣一來,多視幾何的東西就派上用場了。再進(jìn)一步,運(yùn)動過程中我們得到的實際是一系列圖像而不只是兩張,自然可以用他們一起來優(yōu)化提高精度,這就是令小白們不明覺厲的集束約束(Bundle Adjustment)啦。

那么localization又是怎么回事呢?如果有了地圖,即有了一個坐標(biāo)系,定位問題和前述2D跟蹤在目的上基本一致(當(dāng)然更復(fù)雜一些)。讓我們考慮基于控制點(diǎn)的方法,那么現(xiàn)在就需要在三維空間找到并跟蹤控制點(diǎn)來進(jìn)行計算了。很巧的是(真的很巧嗎?),上面的多視幾何中也需要控制點(diǎn)來進(jìn)行三維重建,這些控制點(diǎn)就經(jīng)常被共用了。那么可不可以用直接法呢?Yes we can!但是,如后面會講到的,由于目前AR中計算資源實在有限,還是控制點(diǎn)法經(jīng)濟(jì)實惠些。

從三維重建的方法和結(jié)果,SLAM大致可以分為稀疏、半稠密和稠密三類。

577a2f40e673b.png

稠密SLAM:簡單的說,稠密SLAM的目的是對所相機(jī)所采集到的所有信息進(jìn)行三維重建。通俗的說,就是對看見的每一個空間上的點(diǎn)算出它到相機(jī)的方位和距離,或者知道它在物理空間的位置。在AR相關(guān)的工作里面最近的影響力較大的有DTAM和KinectFusion,前者是純視覺的,后者則使用了深度相機(jī)。由于需要對幾乎所有采集到的像素進(jìn)行方位計算,稠密SLAM的計算量那是杠杠的,所以不是平民AR(比如一般的手機(jī),手握6S/S7/Mate8的朋友不要側(cè)漏傲氣,這些統(tǒng)統(tǒng)都算“一般”)。

稀疏SLAM:稀疏SLAM的三維輸出是一系列三維點(diǎn)云。比如三維立方體的角點(diǎn)。相對于實心的三維世界(比如立方體的面和中腹),點(diǎn)云所提供的對于三維環(huán)境的重建是稀疏的,是以得名。實際應(yīng)用中,在這些點(diǎn)云的基礎(chǔ)上提取或推理出所需要的空間結(jié)構(gòu)(比如桌面),然后就可以根據(jù)這些結(jié)構(gòu)進(jìn)行AR內(nèi)容的渲染疊加了。和稠密SLAM版本相比,稀疏SLAM關(guān)心的點(diǎn)數(shù)低了整整兩個維度(從面墮落到點(diǎn)),理所當(dāng)然地成為平民AR的首選。目前流行的稀疏SLAM大多是基于PTAM框架的一些變種,比如最近被熱捧的ORB-SLAM。

半稠密SLAM:顧名思義,半稠密SLAM的輸出密度在上述二者之間,但其實也沒有嚴(yán)格的界定。半稠密SLAM最近的代表是LSD-SLAM,不過對于在AR中的應(yīng)用,目前還沒有稀疏SLAM熱門。

由于稀疏SLAM在AR中的流行度,下面我們簡單介紹一下PTAM和ORB-SLAM。在PTAM之前,由A. Davison在2003年提出的單目SLAM開創(chuàng)了實時單目SLAM的先河。這個工作的基本思想還是基于當(dāng)時機(jī)器人等領(lǐng)域的主流SLAM框架的。簡單地說,對于每一幀新到來的圖像,進(jìn)行“跟蹤-匹配-制圖-更新”的流程。然而這個框架在移動端(手機(jī))上的效果和效率都不盡如人意。針對移動端AR的SLAM需求,Klein和Murray在2007年的ISMAR(AR領(lǐng)域的旗艦學(xué)術(shù)會議)展示了效果驚艷的PTAM系統(tǒng),從而成為單目視覺AR SLAM的最常用框架,暫時還是之一。

PTAM的全稱是Parallel Tracking And Mapping,上面已經(jīng)暗示過了,PTAM和之前的SLAM在框架是不同的。我們知道,SLAM對每一幀同時(Simultaneously)進(jìn)行兩個方面的運(yùn)算:定位(Localization)和建圖(Mapping)。由于資源消耗巨大,這兩種運(yùn)算很難實時的對每一幀都充分地實現(xiàn)。那我們一定要每一幀都同時定位和建圖嗎?先看定位,這個是必須每幀都做,不然我們就不知道自己的位置了。那么制圖呢?很幸運(yùn),這個其實并不需要每幀都做,因為隔上幾幀我們?nèi)匀豢梢酝ㄟ^SfM來感知場景。試想一下,把你扔到一個陌生的場景,讓你邊走邊探索周邊環(huán)境,但是每秒鐘只讓你看10眼,只要你不是在飛奔,相信這個任務(wù)還是可以完成的。PTAM的核心思想就在這里,不是simultaneously定位和制圖,而是把他們分開,parallel地各自奔跑。這里的定位以逐幀跟蹤為主,所以就有了tracking。而制圖則不再逐幀進(jìn)行,而是看計算能力而定,啥時候處理完當(dāng)前的活,再去拿一幀新的來看看。在這個框架下,再配合控制點(diǎn)選取匹配等各項優(yōu)化組合,PTAM一出場就以其在華麗麗的demo亮瞎觀眾(這可是近10年前啊)。

故事顯然沒有這樣結(jié)束。我們都知道,demo和實用是有差距滴,何況還是學(xué)術(shù)界的demo。但是在PTAM思想的指引下,研究人員不斷進(jìn)行改進(jìn)和更新。這其中的佼佼者就有上面提到的ORB-SLAM。ORB-SLAM由Mur-Artal,Montiel和Tardos在2015年發(fā)表在IEEE Transaction on Robotics上,由于其優(yōu)異的性能和貼心的源碼迅速獲得工業(yè)界和學(xué)術(shù)界兩方面的青睞。不過,如果打算通讀其論文的話,請先做好被郁悶的心理準(zhǔn)備。不是因為有太多晦澀的數(shù)學(xué)公式,恰恰相反,是因為基本上沒有啥公式,而是充滿了讓人不明覺厲的名詞。為什么會這樣?其實和ORB-SLAM的成功有很大關(guān)系。ORB-SLAM雖然仍然基于PTAM的基本框架,不過,做了很多很多改進(jìn),加了很多很多東西。從某個角度看,可以把它看作一個集大成的且精心優(yōu)化過的系統(tǒng)。所以,區(qū)區(qū)17頁的IEEE雙欄論文是不可能給出細(xì)節(jié)的,細(xì)節(jié)都在參考文獻(xiàn)里面,有些甚至只在源碼里。在眾多的改進(jìn)中,比較大的包括控制點(diǎn)上使用更為有效的ORB控制點(diǎn)、引入第三個線程做回環(huán)檢測矯正(另外兩個分別是跟蹤和制圖)、使用可視樹來實現(xiàn)高效的多幀優(yōu)化(還記得集束約束嗎)、更為合理的關(guān)鍵幀管理、等等。

有朋友這里會有一個疑問:既然ORB-SLAM是基于PTAM的框架,那為啥不叫ORB-PTAM呢?是醬紫的:盡管從框架上看PTAM已經(jīng)和傳統(tǒng)SLAM有所不同,但是出于各種原因,SLAM現(xiàn)在已經(jīng)演變成為這一類技術(shù)的統(tǒng)稱。也就是說,PTAM一般被認(rèn)為是SLAM中的一個具體算法,確切些說是單目視覺SLAM的一個算法。所以呢,ORB-PTAM就叫ORB-SLAM了。

盡管近年來的進(jìn)展使得單目SLAM已經(jīng)能在一些場景上給出不錯的結(jié)果,單目SLAM在一般的移動端還遠(yuǎn)遠(yuǎn)達(dá)不到隨心所欲的效果。計算機(jī)視覺中的各種坑還是不同程度的存在。在AR中比較刺眼的問題包括:

初始化問題:單目視覺對于三維理解有著與生俱來的歧義。盡管可以通過運(yùn)動來獲得有視差的幾幀,但這幾幀的質(zhì)量并沒有保證。極端情況下,如果用戶拿著手機(jī)沒動,或者只有轉(zhuǎn)動,算法基本上就掛掉了。

快速運(yùn)動:相機(jī)快速運(yùn)動通常會帶來兩方面的挑戰(zhàn)。一是造成圖像的模糊,從而控制點(diǎn)難以準(zhǔn)確獲取,很多時候就是人眼也很難判斷。二是相鄰幀匹配區(qū)域減小,甚至在極端情況下沒有共同區(qū)域,對于建立在立體匹配之上的算法造成很大的困擾。

純旋轉(zhuǎn)運(yùn)動:當(dāng)相機(jī)做純旋轉(zhuǎn)或近似純旋轉(zhuǎn)運(yùn)動時,立體視覺無法通過三角化來確定控制點(diǎn)的空間位置,從而無法有效地進(jìn)行三維重建。

動態(tài)場景:SLAM通常假設(shè)場景基本上是靜止的。但是當(dāng)場景內(nèi)有運(yùn)動物體的時候,算法的穩(wěn)定性很可能會受到不同程度的干擾。

對AR行業(yè)動態(tài)有了解的朋友可能會有些疑惑,上面說得這么難,可是HoloLens一類的東西好像效果還不錯哦?沒錯,不過我們上面說的是單目無傳感器的情況。一個HoloLens可以買五個iPhone 6S+,那么多傳感器不是免費(fèi)的。不過話說回來,利用高質(zhì)量傳感器來提高精度必然是AR SLAM的重要趨勢,不過由于成本的問題,這樣的AR可能還需要一定時間才能從高端展會走到普通用戶中。

4、SMART: 語義驅(qū)動的多模態(tài)增強(qiáng)現(xiàn)實和智能交互

單目AR(即基于單攝像頭的AR)雖然有著很大的市場(想想數(shù)億的手機(jī)用戶吧),但是如上文所憂,仍然需要解決很多的技術(shù)難題,有一些甚至是超越單目AR的能力的。任何一個有理想有追求有情懷的AR公司,是不會也不能局限于傳統(tǒng)的單目框架上的。那么除了單目AR已經(jīng)建立的技術(shù)基礎(chǔ)外,AR的前沿上有哪些重要的陣地呢?縱觀AR和相關(guān)軟硬件方向的發(fā)展歷史和事態(tài),橫看今天各路AR諸侯的技術(shù)風(fēng)標(biāo),不難總結(jié)出三個主要的方向:語義驅(qū)動,多模態(tài)融合,以及智能交互。遵循業(yè)界性感造詞的慣例,我們將他們總結(jié)成:

SMART:Semantic Multi-model AR inTeraction

即“語義驅(qū)動的多模態(tài)增強(qiáng)現(xiàn)實和智能交互”。由于這三個方面都還在飛速發(fā)展,技術(shù)日新月異,我下面就勉強(qiáng)地做一個粗淺的介紹,表意為主,請勿鉆牛角尖。

語義驅(qū)動:語義驅(qū)動在傳統(tǒng)的幾何為主導(dǎo)的AR中引入語義的概念,其技術(shù)核心來源于對場景的語義理解。為什么要語義信息?答案很簡單,因為我們?nèi)祟愃斫獾氖澜缡浅錆M語義的。如圖11所列,我們所處的物理世界不僅是由各種三維結(jié)構(gòu)組成的,更是由諸如透明的窗、磚面的墻、放著新聞的電視等等組成的。對于AR來說,只有幾何信息的話,我們可以“把虛擬菜單疊加到平面上”;有了語義理解后,我們就可以“把虛擬菜單疊加到窗戶上”,或者邪惡地“根據(jù)正在播放的電視節(jié)目顯示相關(guān)廣告”。

相比幾何理解,對于視覺信息的語義理解涵蓋廣得多的內(nèi)容,因而也有著廣得多的應(yīng)用。廣義的看,幾何理解也可以看作是語義理解的一個子集,即幾何屬性或幾何語義。那么,既然語義理解這么好這么強(qiáng)大,為啥我們今天才強(qiáng)調(diào)它?難道先賢們都沒有我們聰明?當(dāng)然不是,只是因為語義理解太難了,也就最近的進(jìn)展才使它有廣泛實用的可能性。當(dāng)然,通用的對任意場景的完全語義理解目前還是個難題,但是對于一些特定物體的語義理解已經(jīng)在AR中有了可行的應(yīng)用,比如AR輔助駕駛和AR人臉特效。

577a2f4286351.png

多模態(tài)融合:隨著大大小小的AR廠家陸續(xù)推出形形色色的AR硬件,多模態(tài)已經(jīng)是AR專用硬件的標(biāo)配,雙目、深度、慣導(dǎo)、語音等等名詞紛紛出現(xiàn)在各個硬件的技術(shù)指標(biāo)清單中。這些硬件的啟用顯然有著其背后的算法用心,即利用多模態(tài)的信息來提高AR中的對環(huán)境和交互的感知理解。比如,之前反復(fù)提到,作為AR核心的環(huán)境跟蹤理解面臨著五花八門的技術(shù)挑戰(zhàn),有些甚至突破了視覺算法的界限,這種情況下,非視覺的信息就可以起到重要的補(bǔ)充支持作用。比如說,在相機(jī)快速運(yùn)動的情況下,圖像由于劇烈模糊而喪失精準(zhǔn)性,但此時的姿態(tài)傳感器給出的信息還是比較可靠的,可以用來幫助視覺跟蹤算法度過難關(guān)。

智能交互:從某個角度來看,人機(jī)交互的發(fā)展史可以看作是追求自然交互的歷史。從最早的紙帶打孔到如今窗口和觸屏交互,計算機(jī)系統(tǒng)對使用者的專業(yè)要求越來越低。近來,機(jī)器智能的發(fā)展使得計算機(jī)對人類的自然意識的理解越來越可靠,從而使智能交互有了從實驗室走向?qū)嵱玫钠鯔C(jī)。從視覺及相關(guān)信息來實時理解人類的交互意圖成為AR系統(tǒng)中的重要一環(huán)。在各種自然交互中,基于手勢的技術(shù)是目前AR的熱點(diǎn)。一方面由于手勢的技術(shù)比較成熟,另一方面也由于手勢有很強(qiáng)的可定制性。關(guān)于手勢需要科普的一個地方是:手勢估計和手勢識別是兩個緊密相關(guān)但不同的概念。手勢估計是指從圖像(或者深度)數(shù)據(jù)中得到手的精確姿勢數(shù)據(jù),比如所有手指關(guān)節(jié)的3D坐標(biāo);而手勢識別是指判斷出手的動作(或姿態(tài))說代表的語義信息,比如“打開電視”這樣的命令。前者一般可以作為后者的輸入,但是如果手勢指令集不大的情況下,也可以直接做手勢識別。前者的更準(zhǔn)確叫法應(yīng)該是手的姿勢估計。

577a2f43b16fa.png

5、結(jié)語

增強(qiáng)現(xiàn)實的再度興起是由近年來軟硬件的進(jìn)展決定的,是科學(xué)和技術(shù)人員幾十年努力的推動成果。一方面,很幸運(yùn)我們能夠趕上這個時代提供的機(jī)會;另一方面,我們也應(yīng)該警惕過度的樂觀,需要腳踏實地得趟過每一個坑。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。