2
本文作者: 胡金暉 | 2016-05-22 11:10 |
雷鋒網(wǎng)按:本文作者胡金暉,UCVR聯(lián)合創(chuàng)始人,CTO,英國King's College London電子工程系博士,專攻計(jì)算機(jī)視覺、圖像處理。
Project Tango發(fā)布初期曾經(jīng)一度被稱為黑科技,但現(xiàn)如今已慢慢走進(jìn)我們的生活。如果說Kinect是3D感應(yīng)技術(shù)的開創(chuàng)者,那么Project Tango就算是3D感應(yīng)技術(shù)領(lǐng)路人了。Project Tango將光學(xué)傳感器、慣性傳感器與計(jì)算機(jī)視覺技術(shù)進(jìn)行了完美的結(jié)合。
說到Project Tango就要說起ATAP(All Things Are Possible,ATAP是Google收購Motorola(后來又賣給了聯(lián)想)后保留的一個(gè)重要部門),更要說起Johnny Lee。
如果你打開上面Project Tango的介紹視頻,第一眼看到的一個(gè)面目和藹的胖子,就是那個(gè)在2007年底把Wii玩出花的大神。07年12月John神在YouTube上傳了一系列視頻,記錄了用Wii遙控手柄追蹤人的手指,通過改裝后的Wii遙控手柄和投影儀制造出多點(diǎn)觸摸電子白板,還有用Wii遙控手柄追蹤人的頭部位置,與此同時(shí),游戲畫面也為了適應(yīng)觀眾的視角而發(fā)生改變。從這幾個(gè)實(shí)驗(yàn)中,我們可以看到當(dāng)下Leap Motion、Oculus Rift等下一代人機(jī)交互方式的影子。
之后他加入了微軟的Project Natal(該項(xiàng)目的成果是風(fēng)靡全球的Kinect),后來跳槽到Google X,再之后加入Motorola ATAP(All Things Are Possible),最終帶領(lǐng)團(tuán)隊(duì)在2014年6月5日啟動Project Tango。
眾所周知Project Tango包含三塊技術(shù):運(yùn)動追蹤(Motion Tracking),深度感知(Depth Perception)和區(qū)域?qū)W習(xí)(Area Learning)。我們可以通過John神的職業(yè)道路,由簡入繁來看看Project Tango里面的黑科技是如何一步一步實(shí)現(xiàn)的。
首先就是John神的成名之作:Wii實(shí)現(xiàn)頭動追蹤。他將Wii捕捉系統(tǒng)翻了個(gè)個(gè),將含有IR相機(jī)的Wii手柄作為接收器,并把Wii的“感應(yīng)棒”作為一個(gè)含有兩個(gè)紅外點(diǎn)光源的發(fā)射器,如下圖:
這就形成了一個(gè)典型的單目視覺系統(tǒng)。接收器拍攝到的圖像是三維空間的場景在二維空間的投影,要識別場景的“深度”信息,就是一種逆向求解的過程。單目視覺系統(tǒng)一般采用對應(yīng)點(diǎn)標(biāo)定法,即通過不同坐標(biāo)系中對應(yīng)點(diǎn)的對應(yīng)坐標(biāo)求解坐標(biāo)系的轉(zhuǎn)換關(guān)系,說起來很繞口,但是簡單解釋就是好比你一只眼睛看一根木棍(我們假定木棍不會在水平面旋轉(zhuǎn)),雖然沒有了雙目的立體視覺,但是通過觀看木棍的長度和位置變化你就可以判斷木棍的大概位置。同理John神的Demo中接收器拍攝到的圖像大概是這個(gè)樣子。
可能這個(gè)例子里面的原理非常之簡單,但要知道他提出的這個(gè)VR Display概念要比Oculus早了近5年。
Project Tango的第一個(gè)核心技術(shù)“運(yùn)動追蹤”的三維動態(tài)捕捉就是利用了上面提到的單目視覺技術(shù)的升級版Feature Tracking(Google稱為特征捕捉)。特征捕捉如何理解呢? 再回到John神的例子里,我們不再固定接收器的位置了,反而是拿著接收器(這里我們不再叫它接收器了,叫采集設(shè)備或相機(jī))移動;而對面只有兩個(gè)光點(diǎn)的發(fā)射器也變成一個(gè)一個(gè)的光點(diǎn)貼在John神家里屋子的各個(gè)角落。
當(dāng)我們移動相機(jī)時(shí)不斷地一幀一幀進(jìn)行拍攝,因?yàn)榕臄z到的光點(diǎn)的相對位置在不斷變化(這里“變化”是指拍攝到的兩幀之間同一個(gè)光點(diǎn)的相對位置變化),通過計(jì)算我們可以得到相機(jī)的移動距離。簡單來說Tango設(shè)備在不斷循環(huán)的一個(gè)過程就是:拍攝——識別特征點(diǎn)(個(gè)人估計(jì)是SIFT點(diǎn))——匹配特征點(diǎn)——篩去錯(cuò)誤匹配——坐標(biāo)換算。當(dāng)然Project Tango的運(yùn)動追蹤不僅如此,他還能通過一個(gè)內(nèi)置的6軸慣性傳感器(加速度計(jì)和陀螺儀)來捕捉相機(jī)的加速度和運(yùn)動方向。
當(dāng)融合了以上兩類傳感器的數(shù)據(jù)之后Project Tango就“完美”(其實(shí)還有瑕疵)實(shí)現(xiàn)了三維運(yùn)動追蹤。
為什么說還有瑕疵的?因?yàn)檫\(yùn)動追蹤只是單純得到了相機(jī)移動的軌跡,然而對于相機(jī)所處的場景是零認(rèn)知。所以一旦設(shè)備被關(guān)掉,它之前的運(yùn)動軌跡就會被“忘掉”。最大的問題還是運(yùn)動追蹤中所累積的誤差,或者叫漂移,在長距離使用后真實(shí)位置會和運(yùn)算位置有很大差異。
為解決這個(gè)問題,John神團(tuán)隊(duì)為Tango設(shè)備設(shè)定了一種學(xué)習(xí)模式。這應(yīng)該是他在Google X里面無人駕駛汽車研究成果的冰山一角。這種學(xué)習(xí)模式理解起來就簡單很多了,為了讓Tango設(shè)備具有一定記憶,而不再像一個(gè)被蒙著眼睛的人一樣需要靠數(shù)自己走了多少步來計(jì)算距離,Project Tango可以讓用戶預(yù)先錄入某個(gè)場景(這里要特別提醒的是,錄入的數(shù)據(jù)不光包括了運(yùn)動追蹤里面所識別的特征點(diǎn),還包含了場景本身),當(dāng)用戶重回這個(gè)場景的時(shí)候Tango設(shè)備會自動用錄入的數(shù)據(jù)來糾正運(yùn)動追蹤的數(shù)據(jù),這個(gè)糾正的過程中錄入場景里的那些特征點(diǎn)會被當(dāng)作觀測點(diǎn),一旦發(fā)現(xiàn)與當(dāng)下特征點(diǎn)匹配的觀測點(diǎn),系統(tǒng)便會修正當(dāng)下的追蹤數(shù)據(jù)。這就是Project Tango的第二大技術(shù)核心——區(qū)域?qū)W習(xí)。
如果說把深度感知作為Project Tango的第三大技術(shù)核心,我覺得有點(diǎn)虛,畢竟Google也是采用的第三方的深度傳感器。不過對此Google并沒有掖著藏著,而是很大方的表明Tango設(shè)備可以選擇任意一種現(xiàn)今流行的深度感知技術(shù)。而對這項(xiàng)技術(shù)的順利應(yīng)用多半也要?dú)w功于John神在Project Natal的經(jīng)歷了。Kinect一代的推出震動了業(yè)界,震動了學(xué)術(shù)界,同時(shí)也把結(jié)構(gòu)光(Structured Light)的概念推廣了出去。那么他到底是怎么實(shí)現(xiàn)深度檢測的呢?檢測到的“深度”又是什么概念呢?
結(jié)構(gòu)光顧名思義是有特殊結(jié)構(gòu)(模式)的光,比如離散光斑,條紋光,編碼結(jié)構(gòu)光,等等。他們被投射到待檢測物體或平面上,看上去就好像標(biāo)尺一樣。根據(jù)用處不同,投影出來的結(jié)構(gòu)光也可以分為不可見的紅外光斑,黑白條紋可見光,單束線性激光,等等。比如Kinect投射出來的就是紅外光斑,設(shè)想你玩游戲的時(shí)候要是一片黑白條紋光打到你身上,這畫面感豈不是很怪。
人們發(fā)現(xiàn)把這些光投到不同深度的平面上光的紋路會發(fā)生變化,那么如果能采集到這些紋理變化,并且能精準(zhǔn)的計(jì)算這些變化豈不是可以算出不同的深度?
回歸正題,Kinect的離散光斑是如何實(shí)現(xiàn)深度檢測的呢,我們知道如果拿一個(gè)手電照射墻壁,站近或站遠(yuǎn),墻上的光斑是不同大小的,從不同角度照射墻,光斑也會呈現(xiàn)不同的橢圓。這就是基本原理了。但如何使一個(gè)紅外光源按照不同角度射出?并且還要變成一堆離散的光斑?
這就要拿出它的發(fā)明者以色列PrimeSense公司的專利圖了,他們非常聰明地在紅外發(fā)射器前面加了一個(gè)特殊設(shè)計(jì)的diffuser(光柵、擴(kuò)散片)可以使紅外光線能從不同角度射出。另一個(gè)攝像頭再去拍攝這些光斑然后進(jìn)行計(jì)算從而得出每一個(gè)光斑所在的深度。每種結(jié)構(gòu)光的掃描精度,所對應(yīng)的算法,以及應(yīng)用場景都有所不同。例如用于電子產(chǎn)業(yè)元器件錫膏檢查(SPI/ AOI)一般就是可見的條紋光。另外幾種結(jié)構(gòu)光就不多做介紹了,總之只需要知道他們對深度感知的精準(zhǔn)度會遠(yuǎn)遠(yuǎn)高于Kinect這種離散光斑類型的結(jié)構(gòu)光(可以達(dá)到微米級),并且算法也有很大出入。
除了結(jié)構(gòu)光Project Tango還提到了TOF(Time of Flight飛翔的時(shí)間?)一個(gè)激光發(fā)射器,一個(gè)接收器,一個(gè)運(yùn)算光程的芯片組成。通過計(jì)算不同的光程來獲取深度信息,它也是一種深度傳感器。
這些深度傳感器輸出稱之為“點(diǎn)云”的數(shù)據(jù),包含了所有被采集到深度的點(diǎn)的三維信息。
但是這里還隱藏了一個(gè)技術(shù)難點(diǎn),因?yàn)門ango設(shè)備是在一邊移動一邊采集的,如何把上一幀采集的“點(diǎn)云”信息和當(dāng)下幀采集的“點(diǎn)云”進(jìn)行匹配,并且顯示在同一世界坐標(biāo)中就是難點(diǎn)所在。Project Tango巧妙的結(jié)合運(yùn)動追蹤的軌跡數(shù)據(jù)達(dá)到了對“點(diǎn)云”的實(shí)時(shí)拼接。要知道“點(diǎn)云”的數(shù)量一般在幾百或者上千。算法已經(jīng)不易,運(yùn)算量更是大的離譜,而Project Tango還把它做進(jìn)了移動設(shè)備里。
當(dāng)這三大技術(shù)匯聚,Project Tango為移動平臺帶來了一種全新的空間感知技術(shù),它可以讓移動設(shè)備像人眼一樣感知你所在的房間,找到行走的路,并且感知到哪里是墻,哪里是地,以及所有你身邊的物體。
其實(shí)這段很酷炫的話只有一個(gè)關(guān)鍵詞,那就是“移動平臺”。為什么?此時(shí)先拿出一個(gè)上文都沒有提過的詞語SLAM(Simultaneous Localization And Mapping,同步定位與地圖構(gòu)建)。它是機(jī)器人領(lǐng)域里面最重要的一個(gè)概念,沒有之一。
就是希望機(jī)器人能夠在某個(gè)環(huán)境中認(rèn)識這個(gè)環(huán)境,找到自己的位置,并且規(guī)劃出合理的道路。然而自1986年這個(gè)概念被提出以來,運(yùn)算復(fù)雜度就一直是它的一個(gè)有待解決的問題。可能大家也發(fā)現(xiàn)了,Tango設(shè)備就是一種SLAM設(shè)備,并且Google把它實(shí)現(xiàn)在了移動設(shè)備端。John神和他的團(tuán)隊(duì)靠的不是魔法,而是對于光學(xué)傳感器和慣性傳感器與計(jì)算機(jī)視覺技術(shù)的巧妙結(jié)合。利用光學(xué)傳感器來校正慣性傳感器的誤差累計(jì)或者說“漂移”問題,利用慣性傳感器的小尺寸,低成本,以及實(shí)時(shí)信息輸出來降低光學(xué)傳感器的運(yùn)算量,再配合上成熟的深度感應(yīng)器(其實(shí)也是光學(xué)感應(yīng)器的一類)從而實(shí)現(xiàn)了這個(gè)人們眼中的黑科技。
Project Tango的價(jià)值并不是把某個(gè)技術(shù)做到了登峰造極,而是將多種技術(shù)完美融合在一起,做到了1+1+1大于3的功效。并且把這些技術(shù)融合在了我們每天手邊拿著的設(shè)備上。在AR,VR,MR盛行的今天,Project Tango的場景掃描和運(yùn)動追蹤功能正是現(xiàn)在AR,VR,MR設(shè)備最缺失的幾種輸入信息方式。再加上Google最近發(fā)布的DayDream VR平臺和Google移動操作系統(tǒng)的最新版本Android N,可見Google在移動VR上的布局是多么宏大。不過,此時(shí)看來Project Tango還處在“Tech Demo”階段,究竟能給AR,VR帶來多大的推動力,我們拭目以待。
本文為雷鋒網(wǎng)獨(dú)家特約稿件,轉(zhuǎn)載請聯(lián)系授權(quán),注明作者、出處,不得刪改。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。