• <sub id="pqc61"><p id="pqc61"></p></sub><sub id="pqc61"></sub>
    在线精品视频一区二区,亚洲中文字幕无码一久久区,正在播放肥臀熟妇在线视频,国内精品视频一区二区三区八戒 ,国产毛片三区二区一区,国产精品一区中文字幕,丰满少妇被猛烈进出69影院,国产成人无码
    您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    專欄 正文
    發(fā)私信給YaYa007
    發(fā)送

    1

    解密Oculus Rift 的定位技術

    導語:眾所周知,Oculus Rift采用的是主動式光學定位技術,那它到底是如何實現(xiàn)的呢?

    雷鋒網(wǎng)按:本文作者系G-Wearable軟件工程師。

    解密Oculus Rift 的定位技術

    (via:nukethefridge.com

    2016,VR元年,oculus、HTC、索尼等這樣的重量級廠商紛紛推出或宣布了自己的消費級硬件產(chǎn)品來搶占消費者市場,相信廣大VR愛好者們中的很多人都已經(jīng)入手了一款虛擬現(xiàn)實設備。在這些硬件當中,Oculus Rift CV1(以下簡稱“CV1”)無疑是最受人矚目的硬件產(chǎn)品之一,畢竟它有2014年拿了facebook20億美金這樣的大事件撐腰。

    眾所周知,Oculus Rift采用的是主動式光學定位技術,那它到底是如何實現(xiàn)的呢?

    基本實現(xiàn)流程:

    Oculus Rift設備上會隱藏著一些紅外燈(即為標記點),這些紅外燈可以向外發(fā)射紅外光,并用紅外攝像機實時拍攝。獲得紅外圖像后,將攝像機采集到的圖像傳輸?shù)接嬎銌卧校ㄟ^視覺算法過濾掉無用的信息,從而獲得紅外燈的所在方向,再利用PnP算法,即利用四個不共面的紅外燈在設備上的位置信息、四個點獲得的圖像信息即可最終將設備納入攝像頭坐標系,擬合出設備的三維模型,并以此來實時監(jiān)控玩家的頭部、手部運動。

    雷鋒網(wǎng)注:具體可看如下圖,注意上面這些紅色的小點點。

    接下來我將向大家介紹一下我的推理過程,以及算法的一些細節(jié)。

    | 頭顯上的LED燈                                 

    解密Oculus Rift 的定位技術

    前文中我提到我們需要利用四個不共面的紅外燈在設備上的位置信息來進行定位,而如果想要知道不同的紅外燈在設備上的位置信息,就必須能夠區(qū)分不同的紅外燈。

    為什么這么說呢,如果不區(qū)分紅外燈,那么當DK2(注:特指頭顯)在空間中運動時,攝像機捕捉到光點后,要進行關聯(lián)(姿態(tài)最優(yōu)匹配的過程)的次數(shù) 會非常大,舉個列子:

    1)  如果有N預測圖像點和M <= N觀察圖像點,則有N!/(N-M)!可能的關聯(lián)

    2)  對于N = 40和M = 20(對DK2 LED的數(shù)量),有3.3×1029的關聯(lián),所以就算是計算機,也無法快速地得到結果。

    很顯然,DK2一定是采用了某種先驗的方式區(qū)分光點。那么問題來了,DK2到底是如何區(qū)分的呢?

    我曾看到有文章中猜測說DK2是通過LED燈的亮滅來區(qū)分的,實際上卻并非如此。因為雖然通過LED燈的亮滅來區(qū)分比較簡單,因為亮滅最容易區(qū)分出來,但是這種方法有個缺陷,就是無法區(qū)分是姿態(tài)改變導致的LED燈被遮擋,還是LED燈本身就熄滅了,所以,DK2沒有使用這個方法,而是采用LED燈光信息的強弱來實現(xiàn)的。我們來觀察用灰度攝像機拍攝的圖:

    解密Oculus Rift 的定位技術

    解密Oculus Rift 的定位技術 

    對比圖1,圖2,可以發(fā)現(xiàn)亮斑的大小有變化。可以看出紅色部分,在圖2時光斑更大,藍色則相反。接下里我們看詳細的做法。DK2是使用差分法來判斷光斑大小。

    什么是差分法呢?即DK2將當前幀的光斑與上一幀同一個光斑做對比,如果比之前大,則為大,反之則為小。那么當一個新的幀到達時,該算法首先提取幀的亮像素斑點,如下圖。忽略少于10個像素或不是圓盤狀的,最后確保所有的斑點來自前一幀中提取的大圓盤狀斑點,然后進行對比。

    解密Oculus Rift 的定位技術

    我在進一步查看這些點和位置信息的對應關系后,總結出DK2判斷強弱變化的依據(jù)是:

    1)  如果當前幀的斑點比上一幀斑點大10%,就是0;

    2)  如果當前幀的斑點比上一幀斑點小10%,就是1;

    3)  否則忽略。

    這樣的設計非常好,防止了LED燈受到隨機干擾。

     

    那么是不是這樣呢?如何在DK2中表示這些強弱關系呢?

    首先,已知SDK的windows的driver會發(fā)送一個開始信息,讓頭顯開始運作;

    緊接著,這個driver就會不斷接收到下面信息:

    解密Oculus Rift 的定位技術

    X1 X2 X3 X4 是1個32位數(shù),是圖像分析后得到的空間坐標(原理后面給大家解釋),DX則不知道干什么用,但是觀察上面的num,換算出來是40,index從1開始,不斷遞增到40,說明DK2在一個一個的識別LED燈,另外,這些信息每17ms左右發(fā)上來一次,和60HZ的拍攝頻率差不多,基本上可以認定是利用每10幀確定一個LED的方式。

    所以DK2確實是將當前幀的光斑與上一幀同一個光斑做對比,然后根據(jù)10幀不同的變化來讓攝像機確定LED燈的ID。

    不過在實際驗證中,發(fā)現(xiàn)如果這樣提取圖像,在頭顯運動時,還是會有錯誤出現(xiàn)(比如漏拍了幾幀), 那么它是如何判別的呢?這個花了我不少時間去想,最后發(fā)現(xiàn)這和漢明距離有關系。

    所謂漢明距離,簡單地說:如果數(shù)字是相同的,它們的漢明距離為0,如果他們在單一的比特不同,它們的距離為1,如果10比特它們彼此逐位否定,它們的漢明距離是10。我發(fā)現(xiàn),DK2已經(jīng)默認每個拍攝后的圖像(提取40個LED燈表示的比特位)和前一幀最多的漢明距離是 3,如果大于這個數(shù)字,則認為是錯誤幀。

    最后,給出幾個比較有特點的LED的10幀圖,大家可以看一下:

    解密Oculus Rift 的定位技術

    | 感知姿態(tài)

    前面談了如何探測LED燈,我介紹了DK2的攝像機通過視頻流捕獲LED燈獨特的閃爍模式,拼出10位二進制數(shù)來識別ID。

    現(xiàn)在來談如何感知姿態(tài),你可能會很自然地想到,通過每10幀來識別LED,然后利用已知LED的位置來判斷姿態(tài)。說實話,這個方法也可以,但是這就表示要間隔10個幀才能識別一次姿態(tài),萬一動作快一點,就出現(xiàn)麻煩了。

    當然,要估計一個三維模型的姿態(tài),需要足夠的LED的信息,如果拍攝到的LED點不夠,就必須使用DK2中的IMU來進行姿態(tài)的感知。另外,IMU本身也會累計誤差。

    DK2的算法其實是這樣的:

    1) 初始狀態(tài),先讀取靜止狀態(tài)的頭顯,10幀的時間,識別每個LED的ID號;

    2) 不斷地拍攝,利用前面幀的信息,推測出現(xiàn)在的LED燈的位置;

    3) 如果出現(xiàn)錯誤,就重新通過10幀的時間識別LED;

    4) 如果有足夠的LED燈信息,就使用識別算法;

    5) 如果沒有足夠的LED燈的信息,就使用IMU識別姿態(tài);

    解密Oculus Rift 的定位技術

    解密Oculus Rift 的定位技術

    解密Oculus Rift 的定位技術

    三維姿態(tài)估計或已知物體相對于2D照相機的角度,求出該物體在相機坐標系的坐標值,稱為PNP問題。在Oculus Rift中,感知頭顯的姿態(tài)是利用PnP算法,融合IMU實現(xiàn)的。Oculus Rift沒有單純的采用IMU進行姿態(tài)解算是因為IMU本身會產(chǎn)生漂移,無法在長時間內(nèi)跟蹤對象的絕對位置,因此必須外接3D參照系,PnP正可以提供這樣一個參照系。說白了,就是要利用PnP來糾正IMU,最后融合成一組比較合理的姿態(tài)信息。

    那么,什么是PnP算法?

    3D姿態(tài)估計是一個多維非線性優(yōu)化問題,攝像機拍攝圖像中的一組2D點,例如提取的LED斑點的集合,可以嘗試重建相對于相機的坐標模型的未知位置(X,Y,Z)和方向(偏航,俯仰,滾動)。

    解密Oculus Rift 的定位技術

    說詳細一點,在相機內(nèi)參數(shù)巳知的情況,由特征點與其像點的對應關系求解目標相對于相機的位姿,就是經(jīng)典的PnP 問題,這些算法大致可分為迭代算法和非迭代算法兩類。

    非迭代算法采用代數(shù)方法直接求出相對位姿,針對P3P 、P4P等問題推導出多種解析算法,該類算法具有運算量小、計算速度快等優(yōu)點,但受誤差影響大且精度不高。Lepetit 提出的一種計算量為O(n)的PnP問題非迭代算法,只需要4個點的信息就可以求解目標相對于相機的姿態(tài)信息, Oculus Rift正是利用這種算法實現(xiàn)的。

    最后再向大家總結說明一下感知姿態(tài)的基本步驟:

    1、發(fā)出同步信號,等待LED燈亮起后,提取收到的8位灰度視頻幀明亮的斑點。


    2、創(chuàng)造一種斑點顏色為亮綠色的8位RGB輸出視頻幀(用于調(diào)試/可視化的目的)。


    3、匹配大致圓盤形的斑點,并與來自先前幀中的斑點進行比較,比較它們的尺寸差異到差分位解碼器中,累積其10位ID和LED關聯(lián)。排序所有提取或投射二維LED的位置到一個kd樹,用在下一幀中快速匹配。


    4、如果有四個或更多的識別斑點且沒有當前姿勢估計,運行從頭計算姿態(tài)估計方法。


    5、如果有四個或多個識別的斑點,且已經(jīng)識別了先前幀的姿態(tài),采用迭代姿態(tài)估計方法。


    6、用姿態(tài)信息糾正IMU的漂移,并融合IMU的姿態(tài)信息。

    以上介紹了Oculus Rift的實現(xiàn)過程。

    Oculus Rift的主動式紅外光學+IMU定位系統(tǒng)精度較高,抗遮擋性強。

    由于其所用的攝像機具備很高的拍攝速率,并且該類系統(tǒng)總是能夠得到標記點在當前空間的絕對位置坐標,所以不存在累積誤差。但是由于攝像頭視角有限,因此該產(chǎn)品的可用范圍有限,會在很大程度上限制使用者的適用范圍,因而無法使用Oculus Rift來玩需要走動等大范圍活動的虛擬現(xiàn)實游戲。也因此,雖然Oculus Rift可以支持多個目標物同時定位,但是目標物不可過多,一般不超過兩個。 

    參考文獻:Hacking the Oculus Rift DK2 

    雷鋒網(wǎng)注:本文為雷鋒網(wǎng)獨家文章,轉載請聯(lián)系授權并保留完整信息,不得刪減文章。

    雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知

    解密Oculus Rift 的定位技術

    分享:
    相關文章

    專欄作者

    VR行業(yè)從業(yè)者,研發(fā)工程師
    當月熱門文章
    最新文章
    請?zhí)顚懮暾埲速Y料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經(jīng)綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
    立即設置 以后再說
    主站蜘蛛池模板: 国产精成A品人V在线播放| 99视频在线精品国自产拍| 久草综合视频| 亚洲AV一二三| 免费人成a大片在线观看日本| 国语精品自产拍在线观看网站| Av一区二区三区| 国内偷拍精品人妻| 精品亚洲一区二区视频| 亚洲人成网站77777在线观看| 日韩精品久久| 久久精品国产亚洲精品| 中文字幕欧美人妻精品一区| 中文字幕国产精品一区二| 日韩一区二区三| 久久国产乱子伦免费精品| 日韩一区二区三区精品视频第3页| 久久99精品久久久久久齐齐百度 | 91久久久久久久久18| 亚洲人成亚洲人成在线观看| 国产一区二区特别视频| 不卡无码人妻一区三区| 蜜臀av午夜精品福利| 91精品国产闺蜜国产在线闺蜜| 蜜桃AV在线| 精品亚洲中文无东京热,人妻中文字幕...| 激情五月天俺也去综合网| 日本不卡码一区二区三区| 一区二区水蜜桃| 欧美中文字幕人妻系列| 国产在线观看网站萌白酱视频| 久久永久精品免费视频| 98精品全国免费观看视频| 久久久久久亚洲精品成人| 亚洲激情自拍| 精品国产午夜福利在线观看| 巴青县| 亚洲qingse中文| 国产对白老熟女正在播放| 无码人妻人妻经典| 国产不卡一区二区在线视频|