<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 主流手勢(shì)識(shí)別技術(shù)解析 有助提升VR/AR設(shè)備體驗(yàn)

          主流手勢(shì)識(shí)別技術(shù)解析 有助提升VR/AR設(shè)備體驗(yàn)

          作者: 時(shí)間:2017-10-22 來(lái)源:網(wǎng)絡(luò) 收藏

          虛擬現(xiàn)實(shí)設(shè)備體驗(yàn)的提升除了與處理器、顯示技術(shù)等息息相關(guān),與虛擬現(xiàn)實(shí)設(shè)備的交互也十分重要。無(wú)論在VR還是AR設(shè)備中,語(yǔ)音、體感、都可能成為提升體驗(yàn)的交互方式。本文將介紹主流的光學(xué)技術(shù)。

          本文引用地址:http://www.ex-cimer.com/article/201710/367579.htm

          談起技術(shù),由簡(jiǎn)單粗略的到復(fù)雜精細(xì)的,大致可以分為三個(gè)等級(jí):二維手型識(shí)別、二維手勢(shì)識(shí)別、三維手勢(shì)識(shí)別。

          在具體討論手勢(shì)識(shí)別之前,我們有必要先知道二維和三維的差別。二維只是一個(gè)平面空間,我們可以用(X坐標(biāo),Y坐標(biāo))組成的坐標(biāo)信息來(lái)表示一個(gè)物體在二維空間中的坐標(biāo)位置,就像是一幅畫出現(xiàn)在一面墻上的位置。三維則在此基礎(chǔ)上增加了“深度”(Z坐標(biāo))的信息,這是二維所不包含的。這里的“深度”并不是咱們現(xiàn)實(shí)生活中所說(shuō)的那個(gè)深度,這個(gè)“深度”表達(dá)的是“縱深”,理解為相對(duì)于眼睛的“遠(yuǎn)度”也許更加貼切。就像是魚缸中的金魚,它可以在你面前上下左右的游動(dòng),也可能離你更遠(yuǎn)或者更近。

          前兩種手勢(shì)識(shí)別技術(shù),完全是基于二維層面的,它們只需要不含深度信息的二維信息作為輸入即可。就像平時(shí)拍照所得的相片就包含了二維信息一樣,我們只需要使用單個(gè)攝像頭捕捉到的二維圖像作為輸入,然后通過(guò)計(jì)算機(jī)視覺(jué)技術(shù)對(duì)輸入的二維圖像進(jìn)行分析,獲取信息,從而實(shí)現(xiàn)手勢(shì)識(shí)別。

          而第三種手勢(shì)識(shí)別技術(shù),是基于三維層面的。三維手勢(shì)識(shí)別與二維手勢(shì)識(shí)別的最根本區(qū)別就在于,三維手勢(shì)識(shí)別需要的輸入是包含有深度的信息,這就使得三維手勢(shì)識(shí)別在硬件和軟件兩方面都比二維手勢(shì)識(shí)別要復(fù)雜得多。對(duì)于一般的簡(jiǎn)單操作,比如只是想在播放視頻的時(shí)候暫?;蛘呃^續(xù)播放,二維手勢(shì)也就足夠了。但是對(duì)于一些復(fù)雜的人機(jī)交互,與3D場(chǎng)景互動(dòng),就必須含有深度信息才行。

          二維手型識(shí)別

          二維手型識(shí)別,也可稱為靜態(tài)二維手勢(shì)識(shí)別,識(shí)別的是手勢(shì)中最簡(jiǎn)單的一類。這種技術(shù)在獲取二維信息輸入之后,可以識(shí)別幾個(gè)靜態(tài)的手勢(shì),比如握拳或者五指張開。其代表公司是一年前被Google收購(gòu)的Flutter。在使用了他家的軟件之后,用戶可以用幾個(gè)手型來(lái)控制播放器。用戶將手掌舉起來(lái)放到攝像頭前,視頻就開始播放了;再把手掌放到攝像頭前,視頻又暫停了。

          “靜態(tài)”是這種二維手勢(shì)識(shí)別技術(shù)的重要特征,這種技術(shù)只能識(shí)別手勢(shì)的“狀態(tài)”,而不能感知手勢(shì)的“持續(xù)變化”。舉個(gè)例子來(lái)說(shuō),如果將這種技術(shù)用在猜拳上的話,它可以識(shí)別出石頭、剪刀和布的手勢(shì)狀態(tài)。但是對(duì)除此之外的手勢(shì),它就一無(wú)所知了。所以這種技術(shù)說(shuō)到底是一種模式匹配技術(shù),通過(guò)計(jì)算機(jī)視覺(jué)算法分析圖像,和預(yù)設(shè)的圖像模式進(jìn)行比對(duì),從而理解這種手勢(shì)的含義。

          這種技術(shù)的不足之處顯而易見(jiàn):只可以識(shí)別預(yù)設(shè)好的狀態(tài),拓展性差,控制感很弱,用戶只能實(shí)現(xiàn)最基礎(chǔ)的人機(jī)交互功能。但是它是識(shí)別復(fù)雜手勢(shì)的第一步,而且我們的確可以通過(guò)手勢(shì)和計(jì)算機(jī)互動(dòng)了,還是很酷的不是么?想象一下你忙著吃飯,只要憑空做個(gè)手勢(shì),計(jì)算機(jī)就可以切換到下一個(gè)視頻,比使用鼠標(biāo)來(lái)控制可是方便多了!

          二維手勢(shì)識(shí)別

          二維手勢(shì)識(shí)別,比起二維手型識(shí)別來(lái)說(shuō)稍難一些,但仍然基本不含深度信息,停留在二維的層面上。這種技術(shù)不僅可以識(shí)別手型,還可以識(shí)別一些簡(jiǎn)單的二維手勢(shì)動(dòng)作,比如對(duì)著攝像頭揮揮手。其代表公司是來(lái)自以色列的PointGrab,EyeSight和ExtremeReality。

          二維手勢(shì)識(shí)別擁有了動(dòng)態(tài)的特征,可以追蹤手勢(shì)的運(yùn)動(dòng),進(jìn)而識(shí)別將手勢(shì)和手部運(yùn)動(dòng)結(jié)合在一起的復(fù)雜動(dòng)作。這樣一來(lái),我們就把手勢(shì)識(shí)別的范圍真正拓展到二維平面了。我們不僅可以通過(guò)手勢(shì)來(lái)控制計(jì)算機(jī)播放/暫停,我們還可以實(shí)現(xiàn)前進(jìn)/后退/向上翻頁(yè)/向下滾動(dòng)這些需求二維坐標(biāo)變更信息的復(fù)雜操作了。

          這種技術(shù)雖然在硬件要求上和二維手型識(shí)別并無(wú)區(qū)別,但是得益于更加先進(jìn)的計(jì)算機(jī)視覺(jué)算法,可以獲得更加豐富的人機(jī)交互內(nèi)容。在使用體驗(yàn)上也提高了一個(gè)檔次,從純粹的狀態(tài)控制,變成了比較豐富的平面控制。這種技術(shù)已經(jīng)被集成到了電視里,但是還沒(méi)有成為常用控制方式。

          三維手勢(shì)識(shí)別

          接下來(lái)我們要談的就是當(dāng)今手勢(shì)識(shí)別領(lǐng)域的重頭戲——三維手勢(shì)識(shí)別。三維手勢(shì)識(shí)別需要的輸入是包含有深度的信息,可以識(shí)別各種手型、手勢(shì)和動(dòng)作。相比于前兩種二維手勢(shì)識(shí)別技術(shù),三維手勢(shì)識(shí)別不能再只使用單個(gè)普通攝像頭,因?yàn)閱蝹€(gè)普通攝像頭無(wú)法提供深度信息。要得到深度信息需要特別的硬件,目前世界上主要有3種硬件實(shí)現(xiàn)方式。加上新的先進(jìn)的計(jì)算機(jī)視覺(jué)軟件算法就可以實(shí)現(xiàn)三維手勢(shì)識(shí)別了。下面就讓小編為大家一一道來(lái)三維手勢(shì)識(shí)別的三維成像硬件原理。

          1. 結(jié)構(gòu)光(Structure Light)

          結(jié)構(gòu)光的代表應(yīng)用產(chǎn)品就是PrimeSense的Kinect一代了。

          這種技術(shù)的基本原理是,加載一個(gè)激光投射器,在激光投射器外面放一個(gè)刻有特定圖樣的光柵,激光通過(guò)光柵進(jìn)行投射成像時(shí)會(huì)發(fā)生折射,從而使得激光最終在物體表面上的落點(diǎn)產(chǎn)生位移。當(dāng)物體距離激光投射器比較近的時(shí)候,折射而產(chǎn)生的位移就較?。划?dāng)物體距離較遠(yuǎn)時(shí),折射而產(chǎn)生的位移也就會(huì)相應(yīng)的變大。這時(shí)使用一個(gè)攝像頭來(lái)檢測(cè)采集投射到物體表面上的圖樣,通過(guò)圖樣的位移變化,就能用算法計(jì)算出物體的位置和深度信息,進(jìn)而復(fù)原整個(gè)三維空間。

          以Kinect一代的結(jié)構(gòu)光技術(shù)來(lái)說(shuō),因?yàn)橐蕾囉诩す庹凵浜螽a(chǎn)生的落點(diǎn)位移,所以在太近的距離上,折射導(dǎo)致的位移尚不明顯,使用該技術(shù)就不能太精確的計(jì)算出深度信息,所以1米到4米是其最佳應(yīng)用范圍。

          2. 光飛時(shí)間(TIme of Flight)

          光飛時(shí)間是SoftKineTIc公司所采用的技術(shù),該公司為Intel提供帶手勢(shì)識(shí)別功能的三維攝像頭。同時(shí),這一硬件技術(shù)也是微軟新一代Kinect所使用的。

          這種技術(shù)的基本原理是加載一個(gè)發(fā)光元件,發(fā)光元件發(fā)出的光子在碰到物體表面后會(huì)反射回來(lái)。使用一個(gè)特別的CMOS傳感器來(lái)捕捉這些由發(fā)光元件發(fā)出、又從物體表面反射回來(lái)的光子,就能得到光子的飛行時(shí)間。根據(jù)光子飛行時(shí)間進(jìn)而可以推算出光子飛行的距離,也就得到了物體的深度信息。

          就計(jì)算上而言,光飛時(shí)間是三維手勢(shì)識(shí)別中最簡(jiǎn)單的,不需要任何計(jì)算機(jī)視覺(jué)方面的計(jì)算。

          3. 多角成像(MulTI-camera)

          多角成像這一技術(shù)的代表產(chǎn)品是Leap MoTIon公司的同名產(chǎn)品和Usens公司的Fingo。

          這種技術(shù)的基本原理是使用兩個(gè)或者兩個(gè)以上的攝像頭同時(shí)攝取圖像,就好像是人類用雙眼、昆蟲用多目復(fù)眼來(lái)觀察世界,通過(guò)比對(duì)這些不同攝像頭在同一時(shí)刻獲得的圖像的差別,使用算法來(lái)計(jì)算深度信息,從而多角三維成像。

          在這里我們以兩個(gè)攝像頭成像來(lái)簡(jiǎn)單解釋一下:

          測(cè)距是根據(jù)幾何原理來(lái)計(jì)算深度信息的。使用兩臺(tái)攝像機(jī)對(duì)當(dāng)前環(huán)境進(jìn)行拍攝,得到兩幅針對(duì)同一環(huán)境的不同視角照片,實(shí)際上就是模擬了人眼工作的原理。因?yàn)閮膳_(tái)攝像機(jī)的各項(xiàng)參數(shù)以及它們之間相對(duì)位置的關(guān)系是已知的,只要找出相同物體(楓葉)在不同畫面中的位置,我們就能通過(guò)算法計(jì)算出這個(gè)物體(楓葉)距離攝像頭的深度了。

          多角成像是三維手勢(shì)識(shí)別技術(shù)中硬件要求最低,但同時(shí)是最難實(shí)現(xiàn)的。多角成像不需要任何額外的特殊設(shè)備,完全依賴于計(jì)算機(jī)視覺(jué)算法來(lái)匹配兩張圖片里的相同目標(biāo)。相比于結(jié)構(gòu)光或者光飛時(shí)間這兩種技術(shù)成本高、功耗大的缺點(diǎn),多角成像能提供“價(jià)廉物美”的三維手勢(shì)識(shí)別效果。

          本文參考王元的《應(yīng)用于VR/AR的主流光學(xué)手勢(shì)識(shí)別技術(shù)解析》文章



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();