虛擬現(xiàn)實(shí)(VR)和增強(qiáng)現(xiàn)實(shí)(AR)背后的核心技術(shù)
AR 和 VR 是兩個(gè)不同的概念。題主說(shuō)的Magic Leap自己提了個(gè)HR還是MR的概念,就是混合現(xiàn)實(shí)。個(gè)人以為——“別以為你換個(gè)馬甲我就不認(rèn)識(shí)你了!” 本質(zhì)上其實(shí)就是AR。
首先說(shuō)一個(gè)基本概念,如果說(shuō)VR硬件制造的難度等同造汽車(chē),那么AR硬件的制作難度就等同于造宇宙飛船。為啥等我慢慢細(xì)說(shuō)~
VR主要的核心點(diǎn)在于三個(gè)
1. 全視角的虛擬畫(huà)面。這個(gè)就像你用IPHONE拍全景圖一樣,要生成一個(gè)實(shí)時(shí)動(dòng)態(tài)的360度可見(jiàn)的世界,所謂的虛擬世界就是這么個(gè)基礎(chǔ)。這個(gè)目前來(lái)說(shuō),通過(guò)既有的3D游戲引擎可以輕松實(shí)現(xiàn)。
2. 虛擬世界和現(xiàn)實(shí)世界的同步。這個(gè)東西聽(tīng)起來(lái)比較玄妙,其實(shí)原理不難。首先了解用戶(hù)頭部或者眼部的旋轉(zhuǎn)動(dòng)作,如果有偵測(cè)行走的,還需要偵測(cè)行走距離,然后快速、準(zhǔn)確的反應(yīng)到虛擬世界中去。比如腦袋轉(zhuǎn)了半圈,那么虛擬世界中畫(huà)面也要轉(zhuǎn)相應(yīng)的角度,這個(gè)是目前VR領(lǐng)域最最重要的。人們常說(shuō)戴上VR頭盔、眼鏡時(shí)候有眩暈感,這個(gè)眩暈感就來(lái)自于不同步。但技術(shù)并不是什么高大上的技術(shù),綜合來(lái)講,就是九軸動(dòng)作感應(yīng)器和相應(yīng)的算法,難的是快、準(zhǔn)。
3. 控制。這個(gè)各家有各路,有些是游戲手柄,有些是體感手柄,不細(xì)說(shuō)了~
當(dāng)然還有一些顯示部分的,屏幕分辨率與放大鏡片,但因?yàn)椴恍枰紤]太多現(xiàn)實(shí)環(huán)境制約,各家沒(méi)什么大區(qū)別。還有一些物理尺寸制約什么的。就不講了。
轉(zhuǎn)到AR,就是個(gè)技術(shù)巨坑了,AR的重點(diǎn)在于和現(xiàn)實(shí)世界疊加的顯示。那么
STEP1:
感知和分析現(xiàn)實(shí)世界,要在對(duì)的位置顯示對(duì)的內(nèi)容,那就涉及到計(jì)算機(jī)視覺(jué),深度傳感器,gps等等,目的就是要讓機(jī)器看懂你看到的絕大部分環(huán)境。這個(gè)就是微軟Hololens和Magic Leap比最早google glass的高明之處。
STEP2:
基于第一步之后的近眼現(xiàn)實(shí)疊加,那么就有兩個(gè)點(diǎn),AR設(shè)備不可能像VR設(shè)備一樣不再介意個(gè)頭大小。那么就帶來(lái)一系列的問(wèn)題,在最短的距離里實(shí)現(xiàn)虛擬畫(huà)面。
光學(xué)反射,早期的Google glass就是基于光學(xué)反射,有點(diǎn)混合了投影、反射式望遠(yuǎn)鏡的原理,基本能實(shí)現(xiàn)3米外40寸左右的畫(huà)面,但也只能在這個(gè)大小和距離,那就無(wú)法真正把信息疊加到對(duì)的位置。這是目前唯一有量產(chǎn)的技術(shù),這個(gè)也是O.S.G 開(kāi)源智能眼鏡的光學(xué)顯示起點(diǎn)。
光柵衍射,這個(gè)是Lumus的技術(shù),通過(guò)分割畫(huà)面后多次反射,實(shí)現(xiàn)更薄更小的顯示。但制造精度要求高。至今也沒(méi)有量產(chǎn)。
光場(chǎng)技術(shù),光場(chǎng)技術(shù)簡(jiǎn)單通俗的來(lái)說(shuō)。就是通過(guò)運(yùn)算出不同景深的圖像。通過(guò)對(duì)人眼焦距的分析,通過(guò)投射的方式讓用戶(hù)看到的虛擬畫(huà)面跟真實(shí)畫(huà)面在視覺(jué)上看起來(lái)是一致的。簡(jiǎn)單的來(lái)說(shuō),就是類(lèi)似昆蟲(chóng)復(fù)眼的成像方式。目前只有nvidia的研究項(xiàng)目pinlights display有演示過(guò)。
作者:陳兒
AR是人工智能和人機(jī)交互的交叉學(xué)科,基礎(chǔ)技術(shù)包括CV(計(jì)算機(jī)視覺(jué))、機(jī)器學(xué)習(xí)、多模態(tài)融合等,借凌老師去年的一篇文章簡(jiǎn)單科普AR技術(shù)。
作者亮風(fēng)臺(tái)信息科技首席科學(xué)家凌海濱
一、從現(xiàn)實(shí)到增強(qiáng)現(xiàn)實(shí)
增強(qiáng)現(xiàn)實(shí)(AugmentedReality,簡(jiǎn)稱(chēng)AR)和虛擬現(xiàn)實(shí)(VirtualReality,簡(jiǎn)稱(chēng)VR)概念的出現(xiàn)已經(jīng)有了幾十年的歷史了,然而VR/AR大量出現(xiàn)在科技媒體上吸引各方眼球也就是最近的事情。
AR中的R是真實(shí)的R,相比之下,VR中的R就是個(gè)山寨版的。那么A這個(gè)增強(qiáng)的概念就比較廣大虛了:籠統(tǒng)的說(shuō),凡是能對(duì)R有附加額外的信息的都算。再次強(qiáng)調(diào)的是,AR里面的信息是疊加到真實(shí)的場(chǎng)景里面的,而不是虛擬的場(chǎng)景(即VR)里面的。一個(gè)有意思的小眾研究方向是將一部分真實(shí)場(chǎng)景中的內(nèi)容疊加到虛擬場(chǎng)景中,學(xué)名AugmentedVirtualization,簡(jiǎn)稱(chēng)AV。圖2中的例子也許能更好地反映AR和VR的區(qū)別。上方顯示的是典型的VR設(shè)備和人眼接收到的VR影像,下方則是AR設(shè)備和AR影像。簡(jiǎn)而言之VR和AR的區(qū)別是:VR是趨近現(xiàn)實(shí);AR是超越現(xiàn)實(shí)。
接下來(lái)我們主要討論AR,重點(diǎn)討論AR和VR不同的那一部分。
二、AR中的視覺(jué)技術(shù)
增強(qiáng)現(xiàn)實(shí)技術(shù)流程
按照Ronald Azuma在1997年的總結(jié),增強(qiáng)現(xiàn)實(shí)系統(tǒng)一般具有三個(gè)主要特征:虛實(shí)結(jié)合,實(shí)時(shí)交互,和三維配準(zhǔn)(又稱(chēng)注冊(cè)、匹配或?qū)?zhǔn))。近二十年過(guò)去了,AR已經(jīng)有了長(zhǎng)足的發(fā)展,系統(tǒng)實(shí)現(xiàn)的重心和難點(diǎn)也隨之變化,但是這三個(gè)要素基本上還是AR系統(tǒng)中不可或缺的。
上圖描繪了一個(gè)典型的AR系統(tǒng)的概念流程。從真實(shí)世界出發(fā),經(jīng)過(guò)數(shù)字成像,然后系統(tǒng)通過(guò)影像數(shù)據(jù)和傳感器數(shù)據(jù)一起對(duì)三維世界進(jìn)行感知理解,同時(shí)得到對(duì)三維交互的理解。3D交互理解的目的是告知系統(tǒng)要“增強(qiáng)”的內(nèi)容。
在AR的技術(shù)流程中,中間的對(duì)于環(huán)境和交互的精準(zhǔn)理解就是目前的瓶頸了。上圖中間的基于多模態(tài)(簡(jiǎn)單說(shuō)就是影像+傳感器)的環(huán)境和交互理解,是兩個(gè)充滿(mǎn)了各種或明或暗的坑的領(lǐng)域,足以讓很多假的猛士知難而退。
環(huán)境和交互理解的難點(diǎn)和機(jī)會(huì)
那么,真的猛士將會(huì)直面什么樣慘淡和淋漓的坑群呢?下面我們來(lái)共同賞析幾個(gè)常見(jiàn)坑型:
1、環(huán)境坑:據(jù)說(shuō)人的腦細(xì)胞里面大多數(shù)都是用來(lái)處理和理解雙眼所獲取的視覺(jué)信息的,很多我們驚鴻一瞥就能理解和感知的東西得益于我們強(qiáng)大的腦處理能力。各種環(huán)境變化對(duì)視覺(jué)信息的影響我們不但能輕松應(yīng)對(duì),有時(shí)還能加以利用。比如我們的認(rèn)知能力對(duì)光照明暗的變化相當(dāng)?shù)聂敯?;比如我們可以通過(guò)陰影來(lái)反推三維關(guān)系。而這些對(duì)于計(jì)算機(jī)(確切些說(shuō)是計(jì)算機(jī)視覺(jué)算法)來(lái)說(shuō)都是不折不扣的坑或者大坑。總的來(lái)說(shuō),成像環(huán)境的變化常常計(jì)算機(jī)視覺(jué)算法以及AR帶來(lái)很大的挑戰(zhàn),所以我把相關(guān)的坑統(tǒng)稱(chēng)環(huán)境坑。
2、學(xué)術(shù)坑:對(duì)于環(huán)境和交互的理解重建基本上屬于計(jì)算機(jī)視覺(jué)的范疇,計(jì)算機(jī)視覺(jué)是一個(gè)有著半個(gè)世紀(jì)積累的領(lǐng)域,和AR相關(guān)的學(xué)術(shù)成果可以成噸來(lái)計(jì)。夸張一點(diǎn)的說(shuō),每篇都有坑,區(qū)別只在大小深淺明暗。從實(shí)用的解決方案的角度來(lái)看學(xué)術(shù)論文,尤其是新的論文,一定要小心其中的設(shè)定和有些話(huà)外的信息,多想一下諸如該算法是否對(duì)光照敏感,是否可能在手機(jī)端達(dá)到實(shí)時(shí),等等。簡(jiǎn)單的建議是:對(duì)于一篇計(jì)算機(jī)視覺(jué)的論文,未有相關(guān)經(jīng)驗(yàn)的觀眾請(qǐng)?jiān)谟邢嚓P(guān)訓(xùn)練的成熟觀眾陪伴下謹(jǐn)慎觀看。
3、上帝坑:上帝是誰(shuí)?當(dāng)然就是用戶(hù)了。上帝的坑當(dāng)然得長(zhǎng)得有創(chuàng)意,常常激起開(kāi)發(fā)者靈光一動(dòng)恍然大哭的欲望。比如上帝說(shuō),要能判別視頻中人的性別,80%的準(zhǔn)確度,100萬(wàn)。哇,你是不是感動(dòng)的熱淚盈眶(仁慈的上帝啊),用各種時(shí)髦的方法輕松超額10%搞定??墒?,交貨的時(shí)候上帝說(shuō)你這個(gè)系統(tǒng)咋認(rèn)不出我們家小baby的性別??!Oh my God,你是不是又激動(dòng)得想哭了。和環(huán)境坑比較像,CV的算法很多時(shí)候是需要有假設(shè)的,強(qiáng)烈的假設(shè)。那怎么辦呢?上帝總是正確的,所以唯一的辦法就是盡早教育上帝讓他更加正確:需要苦口婆心地盡早和用戶(hù)科普以及盡量明確定義需求,防范坑于未成。還不行的話(huà)咋辦?上帝啊,請(qǐng)?jiān)偌狱c(diǎn)工錢(qián)吧。
其實(shí)還有其他類(lèi)型的坑,比如開(kāi)源代碼坑,這里就不詳述了。那么,這么一個(gè)充滿(mǎn)憂(yōu)患的領(lǐng)域,為什么又會(huì)有那么多追隨呢?最重要的原因就是巨大的應(yīng)用前景和錢(qián)景了。往小了說(shuō),很多具體的應(yīng)用領(lǐng)域(比如游戲)都已經(jīng)成功地引入了AR的元素;往大了說(shuō),AR的終極形態(tài)可能從根本上改變當(dāng)前的非自然人機(jī)交互模式(請(qǐng)腦補(bǔ)微軟Win95的成功和現(xiàn)在的HoloLens)。上面說(shuō)的那些坑,在很多是應(yīng)用上,是可能避免的或者可能填得不那么深的。總的來(lái)說(shuō),一個(gè)好的AR應(yīng)用往往是需要算法工程實(shí)現(xiàn)、產(chǎn)品設(shè)計(jì)、內(nèi)容制作等方面的深度結(jié)合。
AR跟蹤配準(zhǔn)技術(shù)發(fā)展
三維配準(zhǔn)是鏈接虛實(shí)的最核心技術(shù),沒(méi)有之一。大致說(shuō)來(lái),在AR中配準(zhǔn)的目的是對(duì)影像數(shù)據(jù)進(jìn)行幾何上的精確理解。這樣一來(lái),就決定了要疊加的數(shù)據(jù)的定位問(wèn)題。比如說(shuō),在AR輔助導(dǎo)航中如果想把導(dǎo)航箭頭“貼在”路面上,就一定要知道路面在哪里。在這個(gè)例子中,每當(dāng)手機(jī)攝像頭獲取到新一幀圖像,AR系統(tǒng)首先需要將圖像中的路面定位,具體的說(shuō)就是在某個(gè)事先設(shè)定的統(tǒng)一的世界坐標(biāo)系下確定地面的位置,然后將要貼的箭頭虛擬地放在這個(gè)地面上,再通過(guò)與相機(jī)相關(guān)的幾何變換將箭頭畫(huà)在圖像中相應(yīng)的位置(通過(guò)渲染模塊完成)。
如前所述,三維跟蹤配準(zhǔn)在技術(shù)上存在很多挑戰(zhàn),尤其在考慮到移動(dòng)設(shè)備有限的信息輸入和計(jì)算能力的情況下。鑒于此,在基于視覺(jué)AR的發(fā)展歷程中,經(jīng)歷了從簡(jiǎn)單定位到復(fù)雜定位的幾個(gè)階段,下面簡(jiǎn)單介紹一下這個(gè)發(fā)展過(guò)程,更多的技術(shù)細(xì)節(jié)在下一節(jié)討論。
- 二維碼:和大家如今廣為使用的微信二維碼原理一樣,二維碼主要的功能在于提供穩(wěn)定的快速的識(shí)別標(biāo)識(shí)。在AR中,除了識(shí)別以外,二維碼還兼職提供易于跟蹤和對(duì)于平面進(jìn)行定位的功能。因?yàn)檫@個(gè)原因,AR中的二維碼比一般的二維碼來(lái)說(shuō)模式顯得簡(jiǎn)單以便于精確定位。下圖給出了AR二維碼的例子。
- 二維圖片:二維碼的非自然人工痕跡很大得局限了它的應(yīng)用。一個(gè)很自然的拓廣是使用二維圖片,比如紙幣、書(shū)本海報(bào)、相片卡牌等等。聰明的小白朋友一定已經(jīng)發(fā)現(xiàn):二維碼本身也是二維圖片,那為啥不把二維碼的方法直接用到二維圖片上呢?哦,是醬紫:二維碼之所以簡(jiǎn)單就是因?yàn)樗厦娴膱D案是設(shè)計(jì)出來(lái)的讓視覺(jué)算法可以迅速的識(shí)別定位的,一般的二維圖片則不具備這種良好的性質(zhì),也需要更強(qiáng)大的算法。并且,不是所有的二維圖片都可以用來(lái)進(jìn)行AR定位的。極端情況下,一個(gè)純色的沒(méi)有任何花紋的圖片是無(wú)法用視覺(jué)的方法定位的。下圖例子中,兩張卡牌用來(lái)定位兩個(gè)對(duì)戰(zhàn)重點(diǎn)的虛擬戰(zhàn)士。
- 三維物體:二維圖片的自然擴(kuò)展當(dāng)屬三維物體。一些簡(jiǎn)單的規(guī)則三維物體,比如圓柱狀可樂(lè)罐,同樣可以作為虛實(shí)結(jié)合的載體。稍微復(fù)雜一些的三維物體通常也可以用類(lèi)似的方法處理或分解成簡(jiǎn)單物體處理,如在工業(yè)修理中的情況。但是,對(duì)于一些特定的非規(guī)則物體,比如人臉,由于有多年的研究積累和海量的數(shù)據(jù)支持,已經(jīng)有很多算法可以進(jìn)行實(shí)時(shí)精準(zhǔn)對(duì)齊。然而,如何處理通用的物體仍然是一個(gè)巨大的挑戰(zhàn)。
- 三維環(huán)境:在很多應(yīng)用中我們需要對(duì)整個(gè)周?chē)?D環(huán)境的幾何理解,很長(zhǎng)時(shí)間以來(lái)和可預(yù)期的一段時(shí)間以?xún)?nèi),這一直是個(gè)充滿(mǎn)挑戰(zhàn)的問(wèn)題。近年來(lái),三維環(huán)境感知在無(wú)人車(chē)和機(jī)器人等領(lǐng)域的應(yīng)用取得了成功的效果,這讓人們對(duì)在其在AR中的應(yīng)用充滿(mǎn)憧憬。然而,相比無(wú)人車(chē)等應(yīng)用場(chǎng)景,AR中可以使用的計(jì)算資源和場(chǎng)景先驗(yàn)常常捉襟見(jiàn)肘。受此影響,AR中的三維場(chǎng)景理解研發(fā)主要有了兩個(gè)顯而易見(jiàn)的思路,一是多傳感器的結(jié)合,而是對(duì)于應(yīng)用的定制。兩個(gè)思路的結(jié)合也是實(shí)用中常見(jiàn)的手段。
在以上提到的技術(shù)中,二維碼和二維圖片的識(shí)別跟蹤技術(shù)已基本上成熟,也已經(jīng)有了廣泛的應(yīng)用。技術(shù)方面的發(fā)展目標(biāo)主要是進(jìn)一步提高穩(wěn)定性以及拓寬適用范圍。相比而言,三維物體和三維場(chǎng)景的識(shí)別理解還有很大的探索空間,即使是目前火爆的HoloLens所展現(xiàn)的令人驚艷的跟蹤穩(wěn)定性,從追求完美的角度還有很多可以提升的空間。
三、單目AR識(shí)別跟蹤簡(jiǎn)介
由于識(shí)別跟蹤的重要性,下面簡(jiǎn)單介紹一下AR中的二維圖片跟蹤和三維環(huán)境理解。二維碼的技術(shù)已經(jīng)很成熟而應(yīng)用有較受限制,三維物體識(shí)別的技術(shù)大致上介于二維圖片和三維場(chǎng)景之間,所以就偷懶不提了。
二維平面物體的AR跟蹤
一般情況下, AR中二維平面物體的跟蹤可以歸結(jié)為如下問(wèn)題:給定一個(gè)模板圖片R,在視頻流中時(shí)刻檢測(cè)該圖片的(相對(duì)相機(jī)的)三維精確位置。比如在下圖的例子中,R是實(shí)現(xiàn)知道的人民幣圖片,視頻是從手機(jī)端實(shí)時(shí)獲取的,通常記為It (表示在時(shí)間t獲得的視頻圖像),而需要得到的是R在It 中的幾何姿態(tài)(通常包括三維旋轉(zhuǎn)和平移),記為Pt。換句話(huà)說(shuō),模板圖片R通過(guò)由Pt表示的三維變換就可以被貼到它在圖像It中的位置。跟蹤結(jié)果的用途也很顯然,既然知道了這個(gè)姿態(tài)Pt,我們可以用一個(gè)美元的圖片以同樣的姿態(tài)疊加到視頻中來(lái)替換人民幣,從而達(dá)到6倍以上的炫富效果。好吧,例子中沒(méi)有那么俗氣,而是疊加了一個(gè)莊嚴(yán)的視頻。
那么,上面例子中的跟蹤定位是如何做到的呢?主流的方法大致有兩類(lèi),一類(lèi)是直接法(directmethod,有時(shí)也稱(chēng)為全局法),另一類(lèi)叫控制點(diǎn)法(keypoint-based)。
- 直接法:直接法里的“直接”是說(shuō)直接用優(yōu)化方法去找最好的目標(biāo),即姿態(tài)Pt。這里牽涉到三個(gè)主要元素:(1)怎么定義好和不好,(2)在哪里找Pt,(3)怎么找。對(duì)于(1),一個(gè)直觀的辦法是:假設(shè)模板圖按照姿態(tài)Pt變換后對(duì)應(yīng)圖像It上的一個(gè)小區(qū)域,那么這個(gè)區(qū)域可以摳出一個(gè)圖像T,T(經(jīng)過(guò)歸一化以后)應(yīng)該和模板R長(zhǎng)得越像越好。對(duì)于(2),我們可以在所有可能的姿態(tài)中去找Pt。不過(guò)這個(gè)策略顯然是很費(fèi)時(shí)的,考慮到在視頻中相鄰圖像幀的變化有限,所以我們通常是在上一時(shí)刻的姿態(tài)(通常記為Pt-1)附近去尋找。至于怎么找,這就轉(zhuǎn)化成一個(gè)優(yōu)化問(wèn)題了,簡(jiǎn)單的說(shuō),就是要在Pt-1的一個(gè)鄰域里面找一個(gè)Pt,使得通過(guò)Pt摳出來(lái)得圖像塊T和R最相似。
當(dāng)然,實(shí)際操作時(shí)候上面三個(gè)部分都各有講究。比如(1)中對(duì)于T和R是否相似可能要考慮光照的變化,(2)中如何定義姿態(tài)空間的鄰域以及合理的鄰域大小,(3)中具體用什么樣的優(yōu)化算法來(lái)盡量對(duì)抗局部極值的干擾而又不能太耗時(shí)。不同的處理方式產(chǎn)生出了不同的跟蹤算法,其中典型的代表工作之一是ESM算法和它的一些變種。
ESM是EfficientSecond-order Minimization的縮寫(xiě),源自Benhimane和Malis在2004年在IROS上發(fā)表的工作。該算法采用重構(gòu)誤差平方作為衡量R和T相似性的指標(biāo),然后對(duì)于姿態(tài)空間進(jìn)行了在李群(Lie Group)上的重新構(gòu)建使得搜索的步長(zhǎng)更為理性,在尋優(yōu)上面使用的二階近似的快速算法。這個(gè)算法的結(jié)構(gòu)清晰,各模塊都可以比較容易的獨(dú)立擴(kuò)展,所以在其基礎(chǔ)上衍生出了不少改進(jìn)算法,通常是針對(duì)實(shí)用場(chǎng)景中不同的調(diào)整(比如處理強(qiáng)光照或者運(yùn)動(dòng)模糊)。
- 控制點(diǎn)法:基于控制點(diǎn)的方法由于其實(shí)時(shí)高效成為目前業(yè)內(nèi)主流方法??刂泣c(diǎn)類(lèi)的方法并不直接對(duì)姿態(tài)Pt進(jìn)行尋優(yōu),而是通過(guò)控制點(diǎn)匹配的方法來(lái)計(jì)算Pt??刂泣c(diǎn)法的一個(gè)典型流程參見(jiàn)圖9。其基本出發(fā)點(diǎn)在于使用圖像中特別的點(diǎn)(通常是角點(diǎn))來(lái)建立模板R和視頻圖像It的之間的映射,通過(guò)該映射建立方程組,然后求解出姿態(tài)Pt。比如說(shuō)模板是一張人物的相片,那么我們?cè)谝曨l中定位的時(shí)候并不需要對(duì)于臉上的所有點(diǎn)進(jìn)行匹配,而可以通過(guò)一些控制點(diǎn)(眼角,鼻尖,嘴角等)迅速定位。
稍微數(shù)學(xué)一點(diǎn)的解釋是這樣的:由于姿態(tài)Pt是由若干參數(shù)(一般是8個(gè))控制的,那么求解Pt的一個(gè)辦法是弄一個(gè)方程組出來(lái),比如說(shuō)8個(gè)線(xiàn)性的方程,那么我們就可以求出Pt了。那么這些方程怎么來(lái)呢?我們知道,Pt的作用是把模板R變到圖像It中,也就是說(shuō)R中的每個(gè)點(diǎn)經(jīng)過(guò)一個(gè)由Pt決定的變換就可以得到它在圖像中的位置。那么,反過(guò)來(lái),如果我們知道圖像中的一個(gè)點(diǎn)(比如眼角)和模板中就是同一個(gè)點(diǎn)(就是說(shuō)他們匹配上了),我們就可以用這一對(duì)匹配點(diǎn)給出兩個(gè)方程(X、Y坐標(biāo)各一個(gè)),這樣的點(diǎn)就是所謂的控制點(diǎn)。當(dāng)我們有了足夠多的控制點(diǎn)對(duì)以后,就可以求解姿態(tài)Pt了。
總結(jié)起來(lái),控制點(diǎn)法包括三個(gè)主要元素:(1)控制點(diǎn)提取和選擇,(2)控制點(diǎn)匹配,(3)姿態(tài)求解。控制點(diǎn)的基本要求一是要能從周?chē)h(huán)境中脫穎而出(減少位置上的歧義),而是要經(jīng)常而且穩(wěn)定地出現(xiàn)(易于找到)。各種圖像中的角點(diǎn)因此閃亮登場(chǎng),各種PK。比較知名的有SIFT、SURF、FAST等。注意,上述排名分先后的:按照能力來(lái)說(shuō)越往前越好,按照速度來(lái)說(shuō)越往后越好。實(shí)際應(yīng)用中可以根據(jù)用戶(hù)機(jī)型做決定。那么,這些點(diǎn)提取后就可以用了嗎?No,一般來(lái)說(shuō)還需要進(jìn)行取舍:一是要去掉沒(méi)用的點(diǎn)(即outlier),二是使選取后的點(diǎn)盡量均勻以降低不必要的誤差,同時(shí)也要防止點(diǎn)太多帶來(lái)的大量后續(xù)計(jì)算??刂泣c(diǎn)匹配的目的是在兩個(gè)圖像的控制點(diǎn)集間找到匹配的點(diǎn)對(duì)(鼻尖對(duì)鼻尖,眼角對(duì)眼角)。通常這個(gè)由控制點(diǎn)之間的相似性和空間約束協(xié)同完成。簡(jiǎn)單的方法有緊鄰匹配,復(fù)雜的基本上二分匹配的各種變種(bipartitematching or two-dimensional assignment)。完成了匹配之后,就可以求解得到姿態(tài)Pt了:由于通常使用的點(diǎn)數(shù)遠(yuǎn)多于最小需求(為了穩(wěn)定性),這里的方程數(shù)目遠(yuǎn)大于未知變量的數(shù)目,所以最小二乘法之類(lèi)的解法在這里會(huì)派上用場(chǎng)。
以上三個(gè)步驟初看起來(lái)涇渭分明,實(shí)際使用時(shí)卻經(jīng)常是交織在一起的。主要原因是很難保證得到精確無(wú)誤的控制點(diǎn)。有用的可靠控制點(diǎn)常常夾雜在各種真假難辨的山寨們一起到來(lái),所以經(jīng)常需要往返迭代在三個(gè)步驟之間,比如用RANSAC之類(lèi)的方法選擇控制點(diǎn)來(lái)得到服從大多數(shù)的姿態(tài)。相比直接法,控制點(diǎn)法的基本算法框架比較成熟,工程實(shí)現(xiàn)上的細(xì)節(jié)很大程度上決定了算法的最終效果。
這兩類(lèi)方法的優(yōu)缺點(diǎn)根據(jù)具體實(shí)現(xiàn)略有不同,大致上可以總結(jié)如下:
這兩類(lèi)方法的優(yōu)缺點(diǎn)有很明顯的互補(bǔ)性,所以一個(gè)自然的想法就是二者的結(jié)合,具體的方式也有不同變種,這里就不羅嗦了。
三維環(huán)境的AR跟蹤
對(duì)于三維環(huán)境的動(dòng)態(tài)的實(shí)時(shí)的理解是當(dāng)前AR在技術(shù)研究方面最活躍的問(wèn)題。其核心就是最近火熱的“即時(shí)定位與地圖構(gòu)建”(SLAM,SimultaneouslyLocalization And Mapping),在無(wú)人車(chē),無(wú)人機(jī)和機(jī)器人等領(lǐng)域也起著核心作用。AR中的SLAM比其他領(lǐng)域中一般難度要大很多,主要是因?yàn)锳R賴(lài)以依存的移動(dòng)端的計(jì)算能力和資源比起其他領(lǐng)域來(lái)說(shuō)要弱很多。目前在AR中還是以視覺(jué)SLAM為主,其他傳感器為輔的局面,盡管這個(gè)情況正在改變。下面的討論主要局限于視覺(jué)SLAM。
標(biāo)準(zhǔn)的視覺(jué)SLAM問(wèn)題可以這么描述為:把你空投到一個(gè)陌生的環(huán)境中,你要解決“我在哪”的問(wèn)題。這里的“我”基本上等同于相機(jī)或者眼睛(因?yàn)閱文浚磫蜗鄼C(jī),請(qǐng)把自己想象成獨(dú)眼龍),“在”就是要定位(就是localization),“哪”需要一張本來(lái)不存在的需要你來(lái)構(gòu)建的地圖(就是mapping)。你帶著一只眼睛一邊走,一邊對(duì)周邊環(huán)境進(jìn)行理解(建圖),一邊確定在所建地圖中的位置(定位),這就是SLAM了。換句話(huà)說(shuō),在走的過(guò)程中,一方面把所見(jiàn)到(相機(jī)拍到)的地方連起來(lái)成地圖,另一方面把走的軌跡在地圖上找到。下面我們看看這個(gè)過(guò)程大致需要哪些技術(shù)。
從圖像序列反算出三維環(huán)境的過(guò)程,即mapping,在計(jì)算機(jī)視覺(jué)里面屬于三維重建的范疇。在SLAM中,我們要從連續(xù)獲取的圖像序列來(lái)進(jìn)行重建,而這些圖像序列是在相機(jī)的運(yùn)動(dòng)過(guò)程中采集的,所以相關(guān)的技術(shù)就叫基于運(yùn)動(dòng)的重建(SfM,Structurefrom Motion)。題外話(huà),SfX是視覺(jué)中泛指從X中進(jìn)行三維重建的技術(shù),X除了運(yùn)動(dòng)以外還可以有別的(比如Structurefrom Shading)。如果相機(jī)不動(dòng)怎么辦?很難辦,獨(dú)眼龍站著不動(dòng)怎么能知道周?chē)S的情況呢?原理上來(lái)說(shuō),一旦獲取的兩張圖像之間有運(yùn)動(dòng),就相當(dāng)與有兩個(gè)眼睛同時(shí)看到了場(chǎng)景(注意坑,這里假設(shè)場(chǎng)景不動(dòng)),不就可以立體了嗎?這樣一來(lái),多視幾何的東西就派上用場(chǎng)了。再進(jìn)一步,運(yùn)動(dòng)過(guò)程中我們得到的實(shí)際是一系列圖像而不只是兩張,自然可以用他們一起來(lái)優(yōu)化提高精度,這就是令小白們不明覺(jué)厲的集束約束(BundleAdjustment)啦。
那么localization又是怎么回事呢?如果有了地圖,即有了一個(gè)坐標(biāo)系,定位問(wèn)題和前述2D跟蹤在目的上基本一致(當(dāng)然更復(fù)雜一些)。讓我們考慮基于控制點(diǎn)的方法,那么現(xiàn)在就需要在三維空間找到并跟蹤控制點(diǎn)來(lái)進(jìn)行計(jì)算了。很巧的是(真的很巧嗎?),上面的多視幾何中也需要控制點(diǎn)來(lái)進(jìn)行三維重建,這些控制點(diǎn)就經(jīng)常被共用了。那么可不可以用直接法呢?Yes wecan!但是,如后面會(huì)講到的,由于目前AR中計(jì)算資源實(shí)在有限,還是控制點(diǎn)法經(jīng)濟(jì)實(shí)惠些。
從三維重建的方法和結(jié)果,SLAM大致可以分為稀疏、半稠密和稠密三類(lèi)。下圖中給出的典型的示例。
- 稠密SLAM:簡(jiǎn)單的說(shuō),稠密SLAM的目的是對(duì)所相機(jī)所采集到的所有信息進(jìn)行三維重建。通俗的說(shuō),就是對(duì)看見(jiàn)的每一個(gè)空間上的點(diǎn)算出它到相機(jī)的方位和距離,或者知道它在物理空間的位置。在AR相關(guān)的工作里面最近的影響力較大的有DTAM和KinectFusion,前者是純視覺(jué)的,后者則使用了深度相機(jī)。由于需要對(duì)幾乎所有采集到的像素進(jìn)行方位計(jì)算,稠密SLAM的計(jì)算量那是杠杠的,所以不是平民AR(比如一般的手機(jī),手握6S/S7/Mate8的朋友不要側(cè)漏傲氣,這些統(tǒng)統(tǒng)都算“一般”)。
- 稀疏SLAM:稀疏SLAM的三維輸出是一系列三維點(diǎn)云。比如三維立方體的角點(diǎn)。相對(duì)于實(shí)心的三維世界(比如立方體的面和中腹),點(diǎn)云所提供的對(duì)于三維環(huán)境的重建是稀疏的,是以得名。實(shí)際應(yīng)用中,在這些點(diǎn)云的基礎(chǔ)上提取或推理出所需要的空間結(jié)構(gòu)(比如桌面),然后就可以根據(jù)這些結(jié)構(gòu)進(jìn)行AR內(nèi)容的渲染疊加了。和稠密SLAM版本相比,稀疏SLAM關(guān)心的點(diǎn)數(shù)低了整整兩個(gè)維度(從面墮落到點(diǎn)),理所當(dāng)然地成為平民AR的首選。目前流行的稀疏SLAM大多是基于PTAM框架的一些變種,比如最近被熱捧的ORB-SLAM。
- 半稠密SLAM:顧名思義,半稠密SLAM的輸出密度在上述二者之間,但其實(shí)也沒(méi)有嚴(yán)格的界定。半稠密SLAM最近的代表是LSD-SLAM,不過(guò)對(duì)于在AR中的應(yīng)用,目前還沒(méi)有稀疏SLAM熱門(mén)。
由于稀疏SLAM在AR中的流行度,下面我們簡(jiǎn)單介紹一下PTAM和ORB-SLAM。在PTAM之前,由A. Davison在2003年提出的單目SLAM開(kāi)創(chuàng)了實(shí)時(shí)單目SLAM的先河。這個(gè)工作的基本思想還是基于當(dāng)時(shí)機(jī)器人等領(lǐng)域的主流SLAM框架的。簡(jiǎn)單地說(shuō),對(duì)于每一幀新到來(lái)的圖像,進(jìn)行“跟蹤-匹配-制圖-更新”的流程。然而這個(gè)框架在移動(dòng)端(手機(jī))上的效果和效率都不盡人意。針對(duì)移動(dòng)端AR的SLAM需求,Klein和Murray在 2007年的ISMAR(AR領(lǐng)域的旗艦學(xué)術(shù)會(huì)議)展示了效果驚艷的PTAM系統(tǒng),從而成為單目視覺(jué)AR SLAM的最常用框架,暫時(shí)還是之一。
PTAM的全稱(chēng)是ParallelTracking And Mapping,上面已經(jīng)暗示過(guò)了,PTAM和之前的SLAM在框架是不同的。我們知道,SLAM對(duì)每一幀同時(shí)(Simultaneously)進(jìn)行兩個(gè)方面的運(yùn)算:定位(Localization)和建圖(Mapping)。由于資源消耗巨大,這兩種運(yùn)算很難實(shí)時(shí)的對(duì)每一幀都充分地實(shí)現(xiàn)。那我們一定要每一幀都同時(shí)定位和建圖嗎?先看定位,這個(gè)是必須每幀都做,不然我們就不知道自己的位置了。那么制圖呢?很幸運(yùn),這個(gè)其實(shí)并不需要每幀都做,因?yàn)楦羯蠋讕覀內(nèi)匀豢梢酝ㄟ^(guò)SfM來(lái)感知場(chǎng)景。試想一下,把你扔到一個(gè)陌生的場(chǎng)景,讓你邊走邊探索周邊環(huán)境,但是每秒鐘只讓你看10眼,只要你不是在飛奔,相信這個(gè)任務(wù)還是可以完成的。PTAM的核心思想就在這里,不是simultaneously定位和制圖,而是把他們分開(kāi),parallel地各自奔跑。這里的定位以逐幀跟蹤為主,所以就有了tracking。而制圖則不再逐幀進(jìn)行,而是看計(jì)算能力而定,啥時(shí)候處理完當(dāng)前的活,再去拿一幀新的來(lái)看看。在這個(gè)框架下,再配合控制點(diǎn)選取匹配等各項(xiàng)優(yōu)化組合,PTAM一出場(chǎng)就以其在華麗麗的demo亮瞎觀眾(這可是近10年前?。?。
故事顯然沒(méi)有這樣結(jié)束。我們都知道,demo和實(shí)用是有差距滴,何況還是學(xué)術(shù)界的demo。但是在PTAM思想的指引下,研究人員不斷的進(jìn)行改進(jìn)和更新。這其中的佼佼者就有上面提到的ORB-SLAM。ORB-SLAM由Mur-Artal,Montiel和Tardos在2015年發(fā)表在IEEETransaction on Robotics上,由于其優(yōu)異的性能和貼心的源碼迅速獲得工業(yè)界和學(xué)術(shù)界兩方面的青睞。不過(guò),如果打算通讀其論文的話(huà),請(qǐng)先做好被郁悶的心理準(zhǔn)備。不是因?yàn)橛刑嗷逎臄?shù)學(xué)公式,恰恰相反,是因?yàn)榛旧蠜](méi)有啥公式,而是充滿(mǎn)了讓人不明覺(jué)厲的名詞。為什么會(huì)這樣?其實(shí)和ORB-SLAM的成功有很大關(guān)系。ORB-SLAM雖然仍然基于PTAM的基本框架,不過(guò),做了很多很多改進(jìn),加了很多很多東西。從某個(gè)角度看,可以把它看作一個(gè)集大成的且精心優(yōu)化過(guò)的系統(tǒng)。所以,區(qū)區(qū)17頁(yè)的IEEE雙欄論文是不可能給出細(xì)節(jié)的,細(xì)節(jié)都在參考文獻(xiàn)里面,有些甚至只在源碼里。在眾多的改進(jìn)中,比較大的包括控制點(diǎn)上使用更為有效的ORB控制點(diǎn)、引入第三個(gè)線(xiàn)程做回環(huán)檢測(cè)矯正(另外兩個(gè)分別是跟蹤和制圖)、使用可視樹(shù)來(lái)實(shí)現(xiàn)高效的多幀優(yōu)化(還記得集束約束嗎)、更為合理的關(guān)鍵幀管理、等等。
有朋友這里會(huì)有一個(gè)疑問(wèn):既然ORB-SLAM是基于PTAM的框架,那為啥不叫ORB-PTAM呢?是醬紫的:盡管從框架上看PTAM已經(jīng)和傳統(tǒng)SLAM有所不同,但是出于各種原因,SLAM現(xiàn)在已經(jīng)演變成為這一類(lèi)技術(shù)的統(tǒng)稱(chēng)。也就是說(shuō),PTAM一般被認(rèn)為是SLAM中的一個(gè)具體算法,確切些說(shuō)是單目視覺(jué)SLAM的一個(gè)算法。所以呢,ORB-PTAM就叫ORB-SLAM了。
盡管近年來(lái)的進(jìn)展使得單目SLAM已經(jīng)能在一些場(chǎng)景上給出不錯(cuò)的結(jié)果,單目SLAM在一般的移動(dòng)端還遠(yuǎn)遠(yuǎn)達(dá)不到隨心所欲的效果。計(jì)算機(jī)視覺(jué)中的各種坑還是不同程度的存在。在AR中比較刺眼的問(wèn)題包括:
- 初始化問(wèn)題:?jiǎn)文恳曈X(jué)對(duì)于三維理解有著與生俱來(lái)的歧義。盡管可以通過(guò)運(yùn)動(dòng)來(lái)獲得有視差的幾幀,但這幾幀的質(zhì)量并沒(méi)有保證。極端情況下,如果用戶(hù)拿著手機(jī)沒(méi)動(dòng),或者只有轉(zhuǎn)動(dòng),算法基本上就掛掉了。
- 快速運(yùn)動(dòng):相機(jī)快速運(yùn)動(dòng)通常會(huì)帶來(lái)兩方面的挑戰(zhàn)。一是造成圖像的模糊,從而控制點(diǎn)難以準(zhǔn)確的獲取,很多時(shí)候就是人眼也很難判斷。二是相鄰幀匹配區(qū)域減小,甚至在極端情況下沒(méi)有共同區(qū)域,對(duì)于建立在立體匹配之上的算法造成很大的困擾。
- 純旋轉(zhuǎn)運(yùn)動(dòng):當(dāng)相機(jī)做純旋轉(zhuǎn)或近似純旋轉(zhuǎn)運(yùn)動(dòng)時(shí),立體視覺(jué)無(wú)法通過(guò)三角化來(lái)確定控制點(diǎn)的空間位置,從而無(wú)法有效地進(jìn)行三維重建。
- 動(dòng)態(tài)場(chǎng)景:SLAM通常假設(shè)場(chǎng)景基本上是靜止的。但是當(dāng)場(chǎng)景內(nèi)有運(yùn)動(dòng)物體的時(shí)候,算法的穩(wěn)定性很可能會(huì)受到不同程度的干擾。
對(duì)AR行業(yè)動(dòng)態(tài)有了解的朋友可能會(huì)有些疑惑,上面說(shuō)的這么難,可是HoloLens一類(lèi)的東西好像效果還不錯(cuò)哦?沒(méi)錯(cuò),不過(guò)我們上面說(shuō)的是單目無(wú)傳感器的情況。一個(gè)HoloLens可以買(mǎi)五個(gè)iPhone6S+,那么多傳感器不是免費(fèi)的。不過(guò)話(huà)說(shuō)回來(lái),利用高質(zhì)量傳感器來(lái)提高精度必然是AR SLAM的重要趨勢(shì),不過(guò)由于成本的問(wèn)題,這樣的AR可能還需要一定時(shí)間才能從高端展會(huì)走到普通用戶(hù)中。
四、SMART:語(yǔ)義驅(qū)動(dòng)的多模態(tài)增強(qiáng)現(xiàn)實(shí)和智能交互
單目AR(即基于單攝像頭的AR)雖然有著很大的市場(chǎng)(想想數(shù)億的手機(jī)用戶(hù)吧),但是如上文所憂(yōu),仍然需要解決很多的技術(shù)難題,有一些甚至是超越單目AR的能力的。任何一個(gè)有理想有追求有情懷的AR公司,是不會(huì)也不能局限于傳統(tǒng)的單目框架上的。那么除了單目AR已經(jīng)建立的技術(shù)基礎(chǔ)外,AR的前沿上有哪些重要的陣地呢?縱觀AR和相關(guān)軟硬方向的發(fā)展歷史和事態(tài),橫看今天各路AR諸侯的技術(shù)風(fēng)標(biāo),不難總結(jié)出三個(gè)主要的方向:語(yǔ)義驅(qū)動(dòng),多模態(tài)融合,以及智能交互。遵循業(yè)界性感造詞的慣例,我們將他們總結(jié)成:
SMART:SemanticMulti-model AR inTeraction
即“語(yǔ)義驅(qū)動(dòng)的多模態(tài)增強(qiáng)現(xiàn)實(shí)和智能交互”。由于這三個(gè)方面都還在飛速發(fā)展,技術(shù)日新月異,我下面就勉強(qiáng)地做一個(gè)粗淺的介紹,表意為主,請(qǐng)勿鉆牛角尖。
語(yǔ)義驅(qū)動(dòng):語(yǔ)義驅(qū)動(dòng)在傳統(tǒng)的幾何為主導(dǎo)的AR中引入語(yǔ)義的概念,其技術(shù)核心來(lái)源于對(duì)場(chǎng)景的語(yǔ)義理解。為什么要語(yǔ)義信息?答案很簡(jiǎn)單,因?yàn)槲覀內(nèi)祟?lèi)所理解的世界是充滿(mǎn)語(yǔ)義的。如下圖所列,我們所處的物理世界不僅是由各種三維結(jié)構(gòu)組成的,更是由諸如透明的窗、磚面的墻、放著新聞的電視等等組成的。對(duì)于AR來(lái)說(shuō),只有幾何信息的話(huà),我們可以“把虛擬菜單疊加到平面上”;有了語(yǔ)義理解后,我們就可以“把虛擬菜單疊加到窗戶(hù)上”,或者邪惡地“根據(jù)正在播放的電視節(jié)目顯示相關(guān)廣告”。
相比幾何理解,對(duì)于視覺(jué)信息的語(yǔ)義理解涵蓋廣得多的內(nèi)容,因而也有著廣得多的應(yīng)用。廣義的看,幾何理解也可以看作是語(yǔ)義理解的一個(gè)子集,即幾何屬性或幾何語(yǔ)義。那么,既然語(yǔ)義理解這么好這么強(qiáng)大,為啥我們今天才強(qiáng)調(diào)它?難道先賢們都沒(méi)有我們聰明?當(dāng)然不是,只是因?yàn)檎Z(yǔ)義理解太難了,也就最近的進(jìn)展才使它有廣泛實(shí)用的可能性。當(dāng)然,通用的對(duì)任意場(chǎng)景的完全語(yǔ)義理解目前還是個(gè)難題,但是對(duì)于一些特定物體的語(yǔ)義理解已經(jīng)在AR中有了可行的應(yīng)用,比如AR輔助駕駛和AR人臉特效(下圖)。
多模態(tài)融合:隨著大大小小的AR廠(chǎng)家陸續(xù)推出形形色色的AR硬件,多模態(tài)已經(jīng)是AR專(zhuān)用硬件的標(biāo)配,雙目、深度、慣導(dǎo)、語(yǔ)音等等名詞紛紛出現(xiàn)在各個(gè)硬件的技術(shù)指標(biāo)清單中。這些硬件的啟用顯然有著其背后的算法用心,即利用多模態(tài)的信息來(lái)提高AR中的對(duì)環(huán)境和交互的感知理解。比如,之前反復(fù)提到,作為AR核心的環(huán)境跟蹤理解面臨著五花八門(mén)的技術(shù)挑戰(zhàn),有些甚至突破了視覺(jué)算法的界限,這種情況下,非視覺(jué)的信息就可以起到重要的補(bǔ)充支持作用。比如說(shuō),在相機(jī)快速運(yùn)動(dòng)的情況下,圖像由于劇烈模糊而喪失精準(zhǔn)性,但此時(shí)的姿態(tài)傳感器給出的信息還是比較可靠的,可以用來(lái)幫助視覺(jué)跟蹤算法度過(guò)難關(guān)。
智能交互:從某個(gè)角度來(lái)看,人機(jī)交互的發(fā)展史可以看作是追求自然交互的歷史。從最早的紙帶打孔到如今窗口和觸屏交互,計(jì)算機(jī)系統(tǒng)對(duì)使用者的專(zhuān)業(yè)要求越來(lái)越低。近來(lái),機(jī)器智能的發(fā)展使得計(jì)算機(jī)對(duì)人類(lèi)的自然意識(shí)的理解越來(lái)越可靠,從而使智能交互有了從實(shí)驗(yàn)室走向?qū)嵱玫钠鯔C(jī)。從視覺(jué)及相關(guān)信息來(lái)實(shí)時(shí)理解人類(lèi)的交互意圖成為AR系統(tǒng)中的重要一環(huán)。在各種自然交互中,基于手勢(shì)的技術(shù)是目前AR的熱點(diǎn)。一方面由于手勢(shì)的技術(shù)比較成熟,另一方面也由于手勢(shì)有很強(qiáng)的可定制性。關(guān)于手勢(shì)需要科普的一個(gè)地方是:手勢(shì)估計(jì)和手勢(shì)識(shí)別是兩個(gè)緊密相關(guān)但不同的概念。手勢(shì)估計(jì)是指從圖像(或者深度)數(shù)據(jù)中得到手的精確姿勢(shì)數(shù)據(jù),比如所有手指關(guān)節(jié)的3D坐標(biāo)(下圖);而手勢(shì)識(shí)別是指判斷出手的動(dòng)作(或姿態(tài))說(shuō)代表的語(yǔ)義信息,比如“打開(kāi)電視”這樣的命令。前者一般可以作為后者的輸入,但是如果手勢(shì)指令集不大的情況下,也可以直接做手勢(shì)識(shí)別。前者的更準(zhǔn)確叫法應(yīng)該是手的姿勢(shì)估計(jì)。
五、結(jié)語(yǔ)
增強(qiáng)現(xiàn)實(shí)的再度興起是由近年來(lái)軟硬件的進(jìn)展決定的,是科學(xué)和技術(shù)人員幾十年努力的推動(dòng)成果。一方面,很幸運(yùn)我們能夠趕上這個(gè)時(shí)代提供的機(jī)會(huì);另一方面,我們也應(yīng)該警惕過(guò)度的樂(lè)觀,需要腳踏實(shí)地得趟過(guò)每一個(gè)坑。
-
分享到:
您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)
- 用戶(hù)名:
- 密 碼:
- 驗(yàn)證碼: 看不清? 點(diǎn)擊更換
- 忘記密碼?
全部評(píng)論:0條