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