新四季網

用於增強現實準備、處理和應用的系統和方法與流程

2023-06-01 16:18:27


本申請要求2014年11月16日提交的美國臨時專利申請62/080400、題為「SYSTEMS AND METHODS FOR AUGMENTED REALITY PREPARATION,PROCESSING,AND APPLICATION」的權益和優先權,以及2014年11月17日提交的美國臨時專利申請62/080983、題為「Persistent AR:Life-Like Augmented Reality」的權益和優先權,在此這兩個專利申請中的每個專利申請的內容以它們的全部公開內容以引用方式併入本文。

背景

儘管實現了很多新的和令人激動的數位技術,但是許多數字世界的能力仍然嚴格地與物理現實相脫離。例如,雖然網際網路提供了對大量信息儲存的迅速訪問,但是通常分析和訪問該信息而不直接參考其可以影響的真實世界的人和對象。代替地,以數字數據(一般不適合與該環境交互的形式)間接反映真實世界環境。因此,期望使數字和真實世界領域相互作用的用戶必須常常將真實世界數據轉換成由數字系統易管理的形式,並且反之亦然。進行手動測量,並且在購買家具之前,將測量結果與在線列表進行比較。經由笨拙的聊天界面發生談話,迫使參與者採納不存在於任何真實世界交互中的人工協議和問候。並非技術適應終端用戶,而是終端用戶通常適應該技術,開發用於鍵盤、滑鼠、操縱杆、觸控螢幕和其它不自然的接口的設施。

不僅由終端用戶體驗數字現實分裂,而且還由開發者感覺到數字現實分裂。例如,因為視頻遊戲設計師不具有現成裝置以識別用戶的真實世界環境,所以他們設計他們的遊戲,以在用戶設備的人工限制內專門進行播放。甚至尖端的電影工作室常常依靠將他們的演員放置在複雜的和不舒適的服裝中,以動作捕獲真實世界表現,用於數字式控制臺處的隨後的操縱。

雖然已經做出了一些努力以提供「增強現實」(AR)體驗,但是這些過去的努力通常要求真實世界環境再次適應該技術的需要(而不是相反的方式)。例如,這些應用可以要求將真實世界圖標、圖案、紋理或物理標記放置在表面上,然後,成像設備可以辨識和投影根據或與其相關的合成對象。但是,關於上面所描述的方法,該方法再次對真實世界提出了要求,而不是使技術適應現實。

理想地,用戶或開發者不應將它們的行為適應它們的技術,但是可以代替地被動地且僅半主動地將它們的技術應用於它們的日常真實世界活動。於是,存在對促進不那麼繁瑣的方法將數字資源應用於真實世界情況的系統和方法的需要。

附圖說明

通過參考以下與附圖結合的具體實施方式,可以更好地理解這裡介紹的技術,在附圖中,相同的附圖標記指示相同的或功能相似的元件:

圖1是例示如可以在一些實施例中發生的環境數據捕獲、模型創建和模型應用的概述的框圖;

圖2是描繪根據一些實施例準備的真實世界環境中的虛擬電視的示例應用的攝影圖像;

圖3是如在一些實施例中可以實施的出現在系統中的各種部件的框圖;

圖4是一般描繪在如可以在一些實施例中實施的映射和跟蹤過程中的各種步驟的概述的流程圖;

圖5是如可以在一些實施例中實施的示例組合的捕獲和AR設備的攝影圖像;

圖6是圖5的示例捕獲和AR設備的另一個透視圖。

圖7是例示如在一些實施例中使用的姿態的變換表示的概念框圖;

圖8是與一些實施例相關的各種概念之間的關係的概念框圖;

圖9是如可以發生在一些實施例中的如可以應用於映射、標準跟蹤和全局定位的姿態搜索算法(PSA)的一系列輸入、配置和輸出;

圖10是一般描繪如在一些實施例中可以實施的在映射過程中用於創建環境的模型(例如,基於舍位帶符號距離函數(TSDF)的表示)的各種步驟的流程圖;

圖11是為了解釋可以應用於一些實施例中的高維方法描繪理想化迭代TSDF創建過程(例如,在地圖更新中)的示例性二維柵格;

圖12是如在一些實施例中可以實施的一般描繪用於TSDF創建過程的地圖更新過程中的各種步驟的流程圖;

圖13是為了解釋可以應用於一些實施例中的高維方法來自TSDF表示(例如,在姿態更新中)的虛擬掃描的創建的示例性二維表示;

圖14是如在一些實施例中可以實施的描繪用於創建虛擬掃描(例如,在姿態更新中)的示例過程的流程圖;

圖15是如在一些實施例中可以實施的一般描繪地圖著色過程中的各種步驟的流程圖;

圖16是如可以根據一些實施例生成的3D網格和對應的紋理的屏幕截圖的集合;

圖17是例示如在一些實施例中可以相關的旋轉和距離之間的關係的一系列框圖;

圖18是如根據一些實施例可以使用的動態貝葉斯網絡的框圖;

圖19是如在一些實施例中可以實施的一般描繪估計最大化算法(例如,用於跟蹤)的綜述的流程圖;

圖20是如可以應用於一些實施例的一般描繪在估計最大化期間迭代收斂過程的框圖;

圖21是如可以在一些實施例中實施的反映一個可能的估計最大化算法的偽代碼列表;

圖22是如在一些實施例中可以實施的在假想的二維宇宙中用於促進高維算法的理解的示例的縮放系列算法的圖形化描繪;

圖23是描述在一些實施例中實施的示例縮放系列算法的操作的流程圖;

圖24是反映如可以在一些實施例中實施的一個可能的縮放系列算法實施方式的偽代碼列表;

圖25是如可以應用於一些實施例的描繪用於對應於高維度量的對應關係確定的LF和IB測量度量的理想化二維表示;

圖26是在一些實施例中對應於高維結構的似然欄位整數(LFI)數據結構的理想化二維表示;

圖27是在一些實施例中對應於高維結構的似然欄位浮點數(LFF)數據結構的理想化二維表示;

圖28是如可以應用於一些實施例的描繪用於姿態評估的「點到面」度量的理想化二維表示;

圖29是如可以在一些實施例中實施的與對幀和/或模型進行旋轉原點調整相關聯的益處的可視化;

圖30是如可以在一些實施例中實施的縮放系列算法中使用的在假想的二維宇宙中用於促進高維算法的理解的示例同程度覆蓋密度算法的圖形化描繪-該圖還描繪如可以應用於一些實施例的柵格散列;

圖31是如可以在一些實施例中實施的例示示例故障恢復過程的流程圖;

圖32是如可以在實施例中的一些實施例中實施的用於確定使用LFI數據結構與用於由姿態搜索算法使用的結構(例如,陣列的結構)的對應關係(例如,串聯或並聯)的過程的流程圖;

圖33是如可以發生在一些實施例中的陰影變形和部分遮擋的示例屏幕截圖;

圖34是如可以發生在一些實施例中的陰影變形和部分遮擋的示例屏幕截圖;

圖35是描繪使用如可以在一些實施例中實施的技術包含虛擬角色的場景的動態數據再現的一系列屏幕截圖;

圖36是如可以在一些實施例中實施的動態網格創建的一系列概念描繪;

圖37是如可以發生在一些實施例中不具有和具有分別應用於虛擬對象的景深濾波器的一對屏幕截圖;

圖38例示如可以在一些實施例中確定的用於三個不同的設備時鐘(CPU、RGBD和IMU)、傳感器事件和對應的偏移的時序圖;

圖39是用根據一些實施例實施的系統創建的示例三維地圖;

圖40是使用各種所公開的實施例取得家具的3D模型的一對屏幕截圖;

圖41是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用展示從環境的模型生成的示例頂-底地圖;

圖42是例示在所公開的實施例中的一些實施例中實施的測量技術的一對屏幕截圖;

圖43是如可以在一些實施例中實施的提供用於評估個人計算機上的模型內的關係的模型和工具的3D表示的示例應用的影像圖像;

圖44是在圖5的示例設備上運行的示例應用的一對影像圖像,如可以在一些實施例中實施的,該示例應用展示用於放置合成對象例如合成家具(例如,合成櫥櫃)的光標;

圖45是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用展示用於替換或調整合成對象(例如,電視屏幕)的特性的工具欄;

圖46、圖47和圖48是例示如可以在一些實施例中實施的購物應用的屏幕截圖的集合;

圖49是例示如可以在一些實施例中實施的與AR設備有關的家具標記和家具的位置的一系列概念框圖;

圖50是例示如可以在一些實施例中實施的鼓勵孩子保持他們的房間乾淨的「清理模式」的特徵的一系列屏幕截圖和照片;

圖51是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示合成角色(例如,寵物狗);

圖52是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示通過環境中的真實世界對象(例如,沙發)遮擋的合成角色(例如,寵物狗);

圖53是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示在幾個可用的真實世界表面中的一個表面(例如,沙發座)上操作的合成角色(例如,寵物狗);

圖54是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示實行用戶路徑跟隨算法的合成角色(例如,寵物狗);

圖55是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用展示可以與真實世界環境的模型交互的額外的示例合成對象(例如,電視和網球);

圖56和圖57是如可以在一些實施例中實施的例示包括球交互的虛擬寵物遊戲的屏幕截圖的集合;

圖58和圖59如可以在一些實施例中實施的包括例示妖精第一人稱射擊遊戲的屏幕截圖的集合;

圖60是如可以在一些實施例中實施的從環境模型生成的3D彩印玩具屋的攝影圖像;

圖61是描繪孩子的房間和其3D列印版本的一對照片,該3D列印版本基於使用各種所公開的實施例捕獲的數據定製為玩具屋;

圖62是如可以根據一些實施例實施的在數據連接中斷之後應用的校準透明度的屏幕截圖;以及

圖63是如可以被用於實施實施例中的一些實施例的特徵的計算機系統的框圖。

雖然本文中展示的流程圖和序列圖示出被設計成使它們被讀者更可理解的組織,但是本領域中的技術人員將理解,用於儲存該信息的實際數據結構可以與所示出的結構不同,其中例如可以以不同的方式組織實際數據結構;實際數據結構可以包含與所示的相比更多或更少的信息;實際數據結構可以被壓縮和/或加密等。

本文中提供的標題只是為了方便,並且不一定影響實施例的範圍和含義。另外,沒有必要按比例繪製附圖。例如,圖中的元件中的一些元件的尺寸可以擴大或減少以幫助提高實施例的理解。類似地,為了討論實施例中的一些實施例,一些部件和/或操作可以被分成不同的塊或被組合成單個塊。而且,雖然各種實施例可以做出各種修改和供選擇的形式,但是在附圖中以示例的方式示出了具體實施例,並且下面詳細地描述了具體實施例。然而,意圖並不限制於所描述的特定實施例。相反,實施例旨在覆蓋落入所公開的實施例的範圍內的所有的修改、等價物和供選擇的方案。

具體實施方式

各種所公開的實施例提供了用於獲取和應用例如各種增強現實應用中的環境的深度確定的系統和方法。用戶可以被動地或主動地在環境周圍掃描設備(例如,平板設備、行動電話設備等),獲取用於各種區域的深度數據。系統可以將這些掃描整合到內部三維模型中。然後該模型可以與隨後的數據採集結合使用,來以高保真度確定環境內的設備的位置和取向。在一些實施例中,可以實時或近實時完成這些確定。使用高保真度取向和位置確定,然後使用用於獲取深度數據的相同的設備或不同設備,各種增強現實應用可以是可能的。

使用各種所公開的實施例,虛擬對象可以表現出在空間和時間上持續存在,就像真實對象。例如,用戶在房間中旋轉360度每次旋轉可以遇到真實世界沙發和在相同位置處的虛擬角色。為了向用戶如實地顯示這些對象,各種實施例確定:(a)如何相對於模型和一些靜態參考坐標系(「世界坐標」)安置相機(例如,深度捕獲相機諸如RGBD傳感器-將認識到一些實施例可以採用不具有RGB捕獲能力的深度傳感器);以及(b)周邊環境的3D形狀,例如,使得可以適當地再現遮擋(例如,通過真實的對虛擬對象的,或反之亦然)和陰影。問題(b)是挑戰問題,並且假定在大多數實例中已經解決(a)。例如,在過去,電影產業通過使用圖形美工師團隊,將虛擬內容嵌入在先前捕獲的真實視頻流中,已經「解決」(a)和(b)兩者。美工師必須手工且費力地將虛擬對象的圖像插入在正確的位置處,逐幀修改電影。美工師必須通過手繪製陰影,虛擬對象的預計遮擋的部分,並且因此可以將開發過程延遲幾個月或幾年。與此相反,所公開的實施例中的一些實施例可以實時達到與當接收視頻流時視頻流相同或類似的效果。

現在將進一步詳細地描述所公開的技術的各種示例。為了徹底理解這些示例且能夠描述這些示例,以下描述提供了具體細節。然而,相關領域的技術人員將理解,在沒有這些細節中的許多細節的情況下,可以實踐本文中所討論的技術。同樣地,相關領域中的技術人員還將理解,該技術可以包含本文中沒有詳細描述的很多其它顯而易見的特徵。額外地,下面沒有詳細示出或描述一些眾所周知的結構或功能,以便避免不必要地混淆相關的描述。

下面使用的術語應該以其最寬泛合理的方式進行釋議,儘管其與實施例的特定具體示例的詳細描述結合使用。實際上,下面甚至突出了某些術語;然而,旨在以任何限制方式進行釋議的任何術語都會如在該部分中的那樣公開而明確地定義。

1.概述-示例系統拓撲結構

各種實施例展示系統和方法以在增強現實情境(例如,其中用戶持有平板電腦、盔、頭戴顯示裝置或能夠用於捕獲圖像且將圖像展示在屏幕上或能夠在用戶的視場中再現或投影到用戶的眼睛中的其它設備,但是更一般地說,在其中虛擬圖像可以被展示在真實世界情境的任何情況下)中生成虛擬對象。這些虛擬對象可以以類同於真實對象的方式持續存在於空間和時間中。例如,當用戶掃描房間時,對象可以以類似於真實世界對象的位置和取向重新出現在它們的視場中。

圖1是例示如可以在一些實施例中發生的環境數據捕獲、模型創建和模型應用的概述的框圖。初始地100a,用戶110可以在環境150周圍掃描捕獲設備105a(這裡被例示為類似於圖5中所描繪的設備的設備)。捕獲設備105a可以包括深度傳感器,並且可以額外地包括用於捕獲攝影圖像的相機(例如,用於各種實施例的一些合適的設備包括傳感器、傳感器、ASUS Xtion等)。一般地,如本文中所引用的「相機」是指能夠捕獲深度和/或攝影圖像的設備。當用戶110移動捕獲設備105a時,捕獲設備105a可以使用深度傳感器,獲取多個深度幀115a、深度幀115b、深度幀115c。每個深度幀可以為捕獲設備105a的視場中的每個點提供深度值。當用戶走過環境150和/或掃描環境150時,原始數據(包含例如深度、RGB和IMU數據)可以在捕獲設備105a上被記錄到數據日誌中。數據日誌可以是儲存在捕獲設備105a上的文件。捕獲設備105a可以將形狀和顏色信息兩者捕獲為適合於在日誌中儲存的形式。在一些實施例中,捕獲設備105a可以跨越網絡120(雖然這裡描繪為跨越網絡通信,但是將認識到還可以使用可攜式存儲器,例如USB存儲棒)直接將捕獲的數據傳輸到遠程系統125(例如,膝上型計算機,或伺服器,或「雲」中的虛擬伺服器,或例如在「雲」中的多個伺服器)。在捕獲設備105a上或在經由網絡120與捕獲設備105a通信的遠程系統125上運行的應用可以整合160在數據日誌中的幀,以形成三維內部模型表示130(例如,這裡在頂-底視圖100b中所表示的一個或多個頂點網格)。可以在捕獲設備105a上或在遠程設備125上或在這兩者的組合上實行本文中還被稱為「映射」的該整合。捕獲設備105a還可以獲取具有每個深度幀的攝影圖像,例如,以生成如本文中所描述的地圖的紋理。

然後,增強現實(AR)設備105b(其可以與捕獲設備105b相同)可以使用170模型130結合傳入的深度幀數據來展示增強現實體驗100c。例如,針對環境150,用戶可以持有AR設備105b。當捕獲環境150的實時圖像且在AR設備105b上顯示實時圖像時,AR系統可以用虛擬要素補充圖像(在如本文中所描述的一些實施例中,實時圖像可以被轉換成有紋理的網格)。例如,這裡一件虛擬的家具135出現在真實世界沙發的後面。類似地,虛擬角色140被展示在場景中,好像其正站在真實世界環境中(向右和向下旋轉設備可以將角色完全帶到視圖中)。AR設備105b可以具有不止一個相機(例如,以提供立體體驗),並且AR系統105b可以(不過捕獲設備105a,例如,可以僅具有一個相機)加上必要地變更修改每個單獨的相機圖像。

模型130還可以被用於獨立容積中,例如,用於創建酷似真實世界環境的虛擬世界,或用於實行獨立於任何增強現實應用的真實世界環境的測量。雖然這裡所描繪的是在家庭環境中,但是將認識到相同的系統和方法可以應用於其它設置中,例如,辦公室或工業環境、動物體內等。

為了向用戶如實地顯示虛擬對象(諸如一件虛擬的家具135和虛擬角色140),一些實施例設定:(a)如何相對於模型130或對象或一些靜態參考坐標系(本文中被稱為「世界坐標」)安置AR設備105b上的(多個)相機。一些實施例還設定(b)周邊環境的3D形狀,以便例如適當地再現遮擋(通過真實對象對虛擬對象的,或反之亦然)和陰影(例如,如為在圖1中的一件虛擬的家具135所描繪的)。問題(a)還被稱為相機定位或姿態估計,例如,確定3D空間中相機的位置和取向。

各種所公開的實施例展示用於解決如何相對於模型或一些靜態參考坐標系(「世界坐標」)安置相機(眼睛)的較好的方法。這些實施例提供了較高的定位準確性,這減輕虛擬對象抖動和錯位-可以破壞將被安置在真實空間中的虛擬對象的幻象的不想要的偽像。然而,現有技術設備常常專門依賴特殊標記,以避免這些問題,這些標記需要被嵌入在環境中,並且如此,常常使用繁瑣。此類標記還限定可以實行的AR功能的範圍。

與現有的AR解決方案相比,所公開的實施例中的很多所公開的實施例提供例如:實時操作;不具有用戶幹預的操作;在正確的位置中且不具有抖動的虛擬對象的顯示;沒有環境或其它繁瑣的準備的修改;空中遮擋和陰影;以易於使用的包裝(例如,智慧型電話、平板電腦或護目鏡)展示給用戶;可以以消費者友好的價格進行生產;等。將認識到,一些實施例可以僅展示這些特徵中的一些特徵,或不展示這些特徵中的任一個特徵。

作為示例,圖2是操作中的實施例的照片,其中在真實世界的一件家具的頂上在AR設備205中描繪了播放家庭視頻的虛擬電視。TV實際上不存在於真實世界中,但是用AR設備205觀看他們的周邊環境的用戶可能不能區分圍繞他們的真實對象和虛擬對象。

圖3是如在一些實施例中可以實施的出現在捕獲和AR系統中的各種部件的框圖(但是捕獲和AR系統可以單獨存在於一些實施例中)。這些可操作的部件可以由以下子系統構成:映射310;姿態估計/跟蹤325;再現315;規劃/交互330;網絡/傳感器通信320;以及校準335。雖然這裡被描繪為單個整體系統305的部件,但是將認識到,子部件可以被分到單獨的計算機系統(例如,「雲」網絡中的伺服器)、處理功能和/或設備。例如,一個系統可以包括捕獲設備。第二系統可以從捕獲設備接收深度幀和位置信息,並且實施映射部件310,以生成模型。然後,第三系統可以實施剩餘的部件。將容易地認識到供選擇的功能劃分。額外地,一些實施例獨享與一個或多個模塊相關聯的功能和/或結構。

類似地,雖然為了方便解釋本文中參考用戶設備討論了跟蹤,但是將認識到,一些實施例可以使用在供選擇的形成因素中所公開的技術捕獲和處理的數據實施應用。僅作為一個示例,可以在用戶的房子和設備周圍放置深度或其它傳感器,用於將圖像投影在所提供的接觸鏡片上。然後,使用所公開的技術捕獲的數據可以被用於通過將適宜的圖像投影到接觸鏡片上,為用戶產生AR體驗。第三方設備可以捕獲用戶的環境的深度幀用於映射,而用戶的個人設備實行AR功能。於是,雖然為了方便理解,本文中可以一起討論部件,但是將理解,所描述的功能可以跨越不同的功能劃分和形成因素出現。

2.示例工作流程概述

在系統操作中發現所公開的特徵中的許多所公開的特徵,其可以表現為軟體、固件、硬體,或這些中的兩個或更多的組合(例如,可能在片上進行實施方式)。可以如圖4中所描繪的發生一般處理和應用流水線。在框405,映射系統可以接收原始深度幀、圖像幀,和/或捕獲設備取向數據(例如,包含例如加速、陀螺、磁力計數據等的慣性測量單元數據)。可以從由捕獲設備(先前地)創建的日誌或從捕獲設備實時遞送接收該數據。可以由用戶走過環境用捕獲設備掃描環境。然而,還將認識到其中設備自己移動或自己旋轉(例如,其中設備位於機器人或動物上)以捕獲多個深度幀的變體。通過每個捕獲,捕獲設備可以記錄位置信息(加速計,和/或陀螺,和/或磁力計,和/或GPS數據、編碼器數據等)、深度幀,以及可能的視覺圖像幀。

在框410,可以使用獲取的原始數據實行映射生成操作。例如,映射系統可以基於深度數據,生成反映環境的頂點網格。在一些實施例中,所得到的地圖被表示為具有著色的頂點或具有紋理的多邊形網格(但是將容易地認識到其他表示,例如,三維像素)。

在框415,映射系統還可以應用任何期望的後處理操作,例如,地圖著色。後處理還可以涉及如本文中更詳細討論的促進跟蹤的數據結構的創建。例如,可以創建地圖的LFI和LFF表示(在一些實施例中,僅創建這些表示中的一個或兩個,並且沒有單獨的頂點「地圖」)。

在框420,系統可以將3D表示提供給AR系統,3D表示例如3D頂點網格和/或LFF和LFI結構。例如,開發工具包可以被提供給AR開發者,允許他們訪問3D表示。

在框425,AR開發者的應用還可以能夠訪問跟蹤例程。這些跟蹤例程可以允許AR程序確定AR設備在由3D表示表示的環境中的姿態。在一些實施例中,映射子系統產生在跟蹤期間可以使用的環境的3D模型(「地圖」)。所生成的地圖可以是非常詳細和準確的。當用戶通過設備觀看環境時,跟蹤子系統可以實時計算精確的相機姿態。然後,可以由再現子系統使用該姿態、3D模型和其它3D數據(例如,虛擬對象模型),以實時向用戶顯示變更的環境。雖然這裡單獨描繪了跟蹤和映射,但是將認識到,在跟蹤期間,捕獲幀可以被用於實行映射功能,例如,以更新或增強現有的地圖。

規劃和交互子系統還可以使用姿態、模型和數據,以計算虛擬和真實世界對象之間的交互,以為虛擬角色作出決策(例如,規劃軌跡),並且以實行其它虛擬-真實世界交互功能。

示例應用包含:房間組織(例如,為了安全、保險、兒童發育的目的,識別和強調移位的物品);購物(例如,在購買之前虛擬放置以評估家具);室內裝飾工/重新室內裝飾工(redecorator);重構(例如,虛擬評估對環境的改變);視頻遊戲(即時戰略遊戲、第一人稱射擊遊戲等);教育(例如,通過遇到與環境中的對象相關的詞學習新的語言);等。

3.示例組合的捕獲和增強現實設備

圖5是如可以在一些實施例中實施的示例組合的捕獲和AR設備的攝影圖像。可以使用消費級成品部件實施各種實施例。在一些實施例中,AR設備由平板電腦構成,RGBD相機和可選地IMU(例如,如圖5中描繪的)已經附接到平板電腦。相機和IMU以可嵌入的形式可以是可用的,並且如此在一些實施例中,可以被安裝在平板電腦中。由此,設備可以採取多個形式,例如,平板電腦、頭戴式系統(AR/VR頭盔或護目鏡)、獨立設備或智慧型電話。可以以軟體、硬體和/或固件(例如,片上系統、FPGA等)實施各種所公開的實施例或其方面。

圖6是圖5的示例捕獲和應用設備的另一個透視圖。如所描繪的,示例設備包括具有與附接到USB集線器610的顯示器相對的面板的平板個人計算機605、RGBD相機615,以及慣性測量單元(IMU)620。雖然這裡IMU 620和相機615被描繪為與平板605的形式因素分離,但是將容易認識到變體,其中IMU 620、相機615和平板計算機605包括單個形式因素。觸控螢幕顯示器630(未示出)可以被提供在該平板的相對表面上。

在一個示例實施方式中,Razer Edge平板電腦可以被用作捕獲和/或AR設備。用於捕獲和/或用於AR的示例RGBD傳感器可以是ASUS Xtion PRO或相機。可以使用的示例IMU傳感器是該示例配置還可以包括4埠USB集線器。為了在單獨的設備上計算,可以使用Dell Alienware(實施例如Dual GeForce GTX 880m GPU)。

如所提到的,捕獲和AR設備不需要與這裡所描繪的設備相同。例如,不具有顯示器的設備可以被用於獲取深度幀數據。頭戴式顯示器可以被用作組合的捕獲和AR設備,或僅作為一個或另一個。

4.用於一些實施例的概念概況

為了方便在本公開中使用的術語的理解,圖7是如在一些實施例中使用的例示姿態的變換表示的概念框圖。特別地,想像其中用戶715站在真實世界700a中的椅子705a之前,將捕獲設備720保持高於頭部,且當向下看椅子705a時捕獲具有值710a-e的深度幀的情況。

用戶可以先前創建了或處於創建真實世界環境700a的全部或一部分的虛擬模型700b的過程中。在該示例中,虛擬模型已經包括對應於真實世界椅子705a的椅子的虛擬表示705b(例如,為TSDF或頂點網格)。虛擬表示700b可以被儲存在計算機中。虛擬模型具有原點725,對象諸如椅子705b可以相對於原點725進行取向。雖然為了方便理解在物理世界中沒有「中央參考幀」,但是可以考慮具有原點723的「真實世界」坐標框架。一些實施例可以在真實世界坐標框架723和虛擬坐標框架725之間給出一對一對應關係。於是,它們可以每個在本文中不同地被稱為「世界坐標框架」。如此,相對於虛擬環境的原點725,椅子的表示705b可以位於指示的位置,其將對應於相對於真實世界坐標原點723真實世界椅子705a位於的地方(將認識到,在該示例中特定的原點放置僅為了方便理解)。

當捕獲了具有深度值710a-e的深度幀時,系統可以尋求確定捕獲設備720相對於世界坐標框架723的姿態(在一些實施例中)。可以通過將深度數據適配或對準到虛擬模型,來估計該捕獲設備姿態。為了方便理解,假設系統樸素地可以假設當捕獲設備在原點725處、處於不旋轉的位置時生成深度值710a-e。這可以對應於涉及沒有旋轉或平移的深度值的樸素變換735a。如所例示的,該假設將導致深度值的不正確的對準730。

如此,系統可以尋求識別深度值710a-e的更適宜的變換735b。當700a捕獲具有值710a-e的深度幀時,該改善的變換735b(深度幀值710a-e的平移和/或旋轉)將更好地反映捕獲設備720相對於虛擬坐標框架725的位置和取向,這將充當設備720的姿態740和世界坐標框架723之間的變換的估計。由於「變換」表示設備720的姿態740和世界坐標框架723和世界坐標框架725之間的變換,本文中互換使用術語「姿態」和「變換」。

如此,雖然本文中可以使用圖標740來指代「姿態」,但是應認識到「姿態」還可以被表示為例如相對於世界坐標框架或任何其它合適的坐標框架的變換。還可以通過相對於世界坐標框架的3D中的剛性變換表示相機姿態。本文中開始姿態可以被稱為T0,在時間t的相機姿態可以被稱為Tt。

圖8是與一些實施例相關的各種概念之間的關係的概念框圖。一般地,在高級別上,來自捕獲設備的深度捕獲數據805可以被提供在日誌文件中或實時被提供到映射系統815。映射系統可以生成多個輸出810,例如,環境的3D模型810a(諸如,頂點網格)、優化的LFF表示810b和優化的LFI表示810c(例如,如或初始地或在後處理期間本文中更詳細描述的)。

可以由跟蹤系統820使用這些輸出810。在AR會話期間,AR設備可以將真實世界深度信息825(例如,當AR設備在真實世界中處於一定姿態中時獲取的深度幀)提供給跟蹤系統820。然後,跟蹤系統820可以基於深度數據825,確定AR設備相對於對應於AR設備的真實世界姿態的3D模型810a的姿態。跟蹤系統820可以將作為輸出830的該姿態信息提供給AR應用。

跟蹤系統820可以包括全局定位系統820a和標準跟蹤系統820b(這裡「標準」是指在一些實施例中的一些操作的頻繁重複的特徵,而不是在本領域中已知的任何預先存在的操作標準)。當AR設備首先被用於環境中時(例如,當接收到第一幀時)或當AR設備丟失時(例如,當與預期相比用戶更快地將設備重新定位到新的姿態時,或如果傳感器被覆蓋或太靠近用於傳感器接收適宜的深度數據的對象或數據誤導),全局定位系統820a可以例如被用於確定AR設備相對於模型的姿態。將認識到,全局定位可以被用於如本文中所描述的其它目的(例如,在動態模型不可用的實例中,用於標準跟蹤操作等)。初始化之後,可以在標準跟蹤系統820b中實行標準跟蹤操作。這些標準跟蹤操作可以導致AR姿態數據830的生成。

映射系統815可以由地圖更新過程815b和姿態更新過程815c組成。當考慮幀數據815a時(例如,當從儲存的日誌抽取幀數據時或當在捕獲設備處生成幀時),可以迭代地應用姿態更新過程815c和地圖更新過程815b。當姿態更新過程815c確定相對於不完整的地圖(在不完整的地圖處考慮傳入幀數據815a)的適當的姿態時,地圖更新過程815b可以構造地圖表示(例如,TSDF表示)。可以從默認姿態或用戶指定姿態,而不是使用姿態更新確定的姿態,實行第一地圖更新。

映射系統815和跟蹤系統820每個可以參考姿態搜索算法(PSA)845a、姿態搜索算法(PSA)845b、姿態搜索算法(PSA)845c(縮放系列是PSA的一個示例,但是將認識到其它示例,例如,爬山或優化搜索),以識別新的姿態(例如,變換)835e、855e、860e(在本文中的各種實例中還被稱為「最終姿態」),新的姿態(例如,變換)835e、855e、860e相對於虛擬表示(並且,通過對應關係、真實世界坐標框架中的正確位置)更正確地放置深度幀數據。例如,對於虛擬環境中的幀數據,「預測的姿態」835b、「預測的姿態」860b可以是系統的初始、近似姿態(例如,用於如本文中更詳細討論的預測置信度的最可能的姿態)。PSA 845a、PSA 845b、PSA 845c可以基於該估計,確定更適當的旋轉和平移。雖然這裡單獨描繪,但是在一些實施例中,PSA 845a、PSA 845b、PSA 845c中的兩個或更多可以是相同的PSA(並且可以使用相同的硬體/固件/軟體來實施)。在一些實施例中,姿態835d和姿態835e的置信度可以是在本文中被稱為「置信度」的概率分布(例如,跨越候選姿態變換的全集的概率的分布)。在一些實施例中(例如,在PSA是爬坡的情況下),代替地,可以由單個變換表示置信度835d和置信度835e。該單個變換可以是用於創建虛擬掃描835c的姿態和用於幀835a的預測的姿態(例如,用於通過對應關係使用的)。在使用概率分布的情況下,例如,最可能的候選變換可以被用作姿態,以創建虛擬掃描835c(例如,如果由高斯概率分布表示置信度,則最可能的姿態將是平均值)。如本文中所討論的,可以由粒子系統表示置信度。當使用例如由粒子、樣本、柵格或格網單元表示的置信度時,以很多方式選擇單個變換可以是可能的。例如,可以採取最高加權的粒子(如果權重是可用的、採取一些或全部粒子的平均值、使用核密度估計以確定最可能的姿態)等。在一些實施例中,在直接使用姿態而不是自置信度推導出姿態的情況下,姿態可以伴隨有「搜索區域」,其引導PSA在哪裡限制它的搜索和/或如何限制它的搜索。

類似地,還可以由單個變換或分布表示在標準跟蹤中使用的置信度860d,並且該變換或最可能的候選分布還可以被用作預測姿態860b。在一些實施例中(例如,如在本文中下面更詳細討論的),置信度835d和置信度835e可以被表示為可能的姿態的區域以及如例如從動態模型(使用IMU數據、時間戳等)推導出的或如由PSA確定的它們的似然的集合。

姿態更新過程815c和標準跟蹤過程820b可以應用PSA 845a、PSA 845c作為期望最大化(EM)過程840a、期望最大化(EM)過程840b的一部分。EM過程840a、EM過程840b可以迭代改進中間置信度和/或姿態確定870a、870b(初始從置信度和/或預測姿態835b、835d、860b、860d推導出的-再者,姿態835b與姿態/置信度835d相同,或從姿態/置信度835d得出,並且姿態860b與姿態/置信度860d相同,或從姿態/置信度860d得出),以確定將被返回的改進的、最終姿態/置信度835e、860e。「期望」涉及對應關係識別過程850a、850b,對應關係識別過程850a、850b可以使用最近的姿態確定870a、870b,確定幀數據和模型數據(或虛擬掃描835c或模型860c)之間的對應關係。「最大化」可以涉及應用PSA 845a、PSA 845c,以識別藉由其實行對應關係的更加改進的置信度和更加適宜的姿態870a、870b。由此,使深度數據與給定「預期」姿態對應關係的模型的對準「最大化」(例如,提高)。再者,在一些實施例中,雖然這裡單獨描述了它們,但是EM過程840a、840b可以是相同的,或在相同的設備上實施EM過程840a、840b。

與EM系統相比,全局定位過程820a可以直接涉及PSA 845b,而不用在運行PSA之前,尋求迭代地確定的最優擬合或固定對應關係。這可以是因為當考慮模型的大部分時全局定位過程820a尋求發現姿態-嘗試發現幀數據和模型之間的對應關係,作為整體可以是無用的。如本文中更詳細描述的,LFF數據結構可以已經反映「對應的」點之間的關係。

關於姿態更新過程815c,姿態更新過程815c可以生成本文中稱為虛擬掃描835c的不完整的地圖構造的深度幀表示。可以從預測的姿態835b的視角生成虛擬掃描835c。初始地,還可以假設在預測的姿態835b處取得當前幀深度數據835a(例如,如圖7中的系統樸素地假設的,在原點處取得數據,但是在很多實施例中預測的姿態835b可以是更好的估計)。

虛擬掃描835c、預測的姿態835b和幀深度數據835a可以被提供到對應關係識別過程850a。在一些實施例中,可以對幀深度數據835a二次抽樣。

在一些實施例中,可以過濾掉包含在「邊界」區域中(在捕獲的深度圖像的邊緣周圍,其中在跳過沒有包含深度數據等的像素的邊緣的任何部分之後,邊緣可以有一些像素寬度,例如,恆定的,或一些距離)的任何點/像素,或將包含在「邊界」區域中的任何點/像素排除在考慮之外,並且由此不由對應關係識別850a過程考慮包含在「邊界」區域中的任何點/像素。這將減少相對於先前獲取的和處理的深度幀出現在深度幀中的先前未看見的「新的數據」的量。應當注意,在姿態更新815c過程期間,在對應關係識別850a期間,邊界過濾可以應用於幀深度數據,但是在一些實施例中,在地圖更新815b或標準跟蹤對應關係識別850b期間,不需要應用邊界過濾。

過程850a可以確定虛擬掃描835c中的哪些深度值對應於幀數據835a中的深度值(因為根據它們的像素位置,深度「值」對應於空間中的「點」,在本文中可以互換使用術語深度值和深度點)。給出這些對應關係,PSA845a可以為使對應的點一起靠得更近的幀數據835a尋求姿態(和在一些實施例中的改進的置信度)835e。

PSA 845a可以使用預測的置信度/姿態以制約其搜索。然後,所確定的姿態870a可以被用於下一個對應關係確定中,以更好地識別虛擬掃描835c中和幀數據835a中的對應的深度點。該過程840a可以繼續直到生成最好的所得的置信度和所確定的姿態835e。應當注意,虛擬掃描835c仍舊為在每個迭代中預測的姿態835b處的表示,但是在每個EM迭代期間,在新的最可能的姿態870a處重新考慮幀數據835a。

關於標準跟蹤過程820b,一些實施例可以生成虛擬掃描835c,並且對於一些實施例,標準跟蹤過程820b可以代替地生成虛擬掃描,或除了創建虛擬掃描之外,能夠訪問例如處於LFI表示860c的環境的模型。近來捕獲的幀860a、預測的姿態860b和LFI表示860c可以被提供到對應關係識別過程850b,以識別對應於幀深度值860a的模型860c中的點。在一些實施例中,可以對幀860a進行二次抽樣。給出這些對應關係,PSA 845c可以為使對應的點一起靠得更近的幀數據860a尋求姿態(並且在一些實施例中,改進的置信度)。再者,PSA可以參考預測的姿態/置信度860d作出該確定。然後,所確定的姿態870b可以被用於下一個對應關係確定中,以更好地識別對應於幀數據860a中的深度值的LFI表示860c中的深度值。該過程840b可以繼續直到生成最佳確定的姿態/置信度860e。如同虛擬掃描,LFI表示860c不隨著每個迭代而改變。

關於全局定位過程820a,全局定位過程820a尋求相對於整個模型確定AR設備的姿態。因為模型可以很大,所以可以由全局定位過程820a作出低保真度確定(並且之後由標準跟蹤過程820b作出隨後的高保真度確定)。在一些實施例中,對於姿態更新、全局定位和標準跟蹤操作中的每個,可以對幀數據進行二次抽樣,但是與姿態更新和標準跟蹤相比,對於全局定位,可以更大程度地對幀數據進行二次抽樣。

全局定位過程820a可以將幀855a提供給PSA 845b。當AR設備初始化時,幀855a可以是捕獲的第一幀。當設備丟失或不確定其姿態時,幀855a可以是捕獲的最後一個可行的幀。可以對幀855a二次抽樣,以加快搜索過程的速度。幀855a可以與一個或多個「開始姿態」855b和不確定區域855d相關聯。在一些實施例中,當生成模型時,可以已經確定起始搜索姿態855b(例如,映射系統815可以已經識別房間,並且將開始姿態放置在每個房間的中心)。如本文中由一個或多個PSA 845b實例更詳細討論的,可以順序地或並行考慮開始姿態855b。還可以將模型的LFF表示855c提供給PSA 845b。在一些實施例中可以使用覆蓋整個模型的單個不確定區域855d,或者足夠大的多個不確定區域855d,使得開始姿態與它們的對應的不確定區域855d的聯合將覆蓋整個模型。PSA 845b可以識別將幀數據855a重新定位到更好地匹配LFF模型855c數據的位置的置信度和最可能的姿態855e。在例如並行應用多個PSA實例(例如,用於每個開始姿態的一個實例)中,全局定位過程820a可以選擇所得的姿態855e中的最好的,以及在一些實施例中對應的置信度,或在其它實施例中的組合的置信度。

將認識到對於用於各種實施例的圖的變體。例如,一些實施例不將期望最大化應用於姿態更新和標準跟蹤。在這些實例中,姿態更新、標準跟蹤和全局定位中的每個可以直接引用PSA。

為了方便在視覺上理解姿態更新、全局定位和標準跟蹤對它們的相應的PSA的使用,圖9反映如可以應用於一些實施例中的一系列輸入、輸出和配置。相對於映射過程中的姿態更新,在捕獲設備910a的視場中的深度值的幀905a可以被提供到包括E步驟930a(對應關係確定)和M步驟930b(應用PSA以發現提高的置信度和其最可能的姿態)的EM過程。幀905a可以包括對應於先前捕獲的深度值915a(現在以中間表示920(例如,本文中更詳細描述的TSDF結構)表示深度值915a),以及新的深度值915b(尚未以中間表示920表示新的深度值915b)。此外,使用預測的姿態925b(例如,預測的姿態925b可以是預測的置信度925c中最高概率姿態)的不完整的模型920的虛擬掃描925a構造可以被提供到EM過程。在一些實施例中,預測的置信度925c還可以被提供給EM過程,例如,提供給應用於M步驟中的PSA。PSA 930b可以應用如本文中更詳細描述的點到面度量,以確定更新的置信度和最可能的姿態/變換。可以例如使用具有KD-樹或具有IB的LF實施對應關係。然後,EM過程可以相對於不完整的模型920識別最終姿態955a。然後,數據幀中的新的數據點可以被用於增補不完整的模型920。

全局定位還可以提供來自AR設備910b的幀905b(但是可以相對於幀905a和幀905c,對該幀進行二次抽樣)。全局定位系統還可以提供可以一起覆蓋整個地圖模型的多個開始姿態940a、940b、940c和對應的不確定區域945a、945b、945c。模型950可以被提供作為LFF表示,如本文中更詳細描述的,LFF表示可以通過PSA 955被用於點到點度量中。然後,PSA可以計算所得的置信度,並且使用最可能的姿態作為相對於模型950的最終姿態955b。

關於標準跟蹤,標準跟蹤還可以將來自AR設備910b(例如,與被用於全局定位的全部或一部分的相同的設備)的幀905c提供給包括E步驟970a(對應關係確定)和M步驟970b(應用PSA以發現提高的置信度和姿態)的EM過程。標準跟蹤系統還可以將預測的置信度965b和作為預測的姿態965a的其最可能的姿態提供給EM過程。模型可以作為LFI表示960被提供到EM過程。然後,EM過程可以相對於模型960識別最終置信度和其最可能的姿態955c。

5.映射

映射系統產生環境的3D模型(地圖)。地圖可以非常準確以方便隨後的操作。圖10是一般描繪例如如可以在圖4的框410處發生的地圖創建過程中的各種步驟的概述的流程圖。在一些實施例中,映射系統使用貝葉斯濾波算法,例如,同步映射和跟蹤(SLAM)算法,其基於相機相對於環境的姿態建立地圖。SLAM方法可以對傳入深度幀迭代地實行估計。每個迭代可以由相機姿態更新(例如,如在框1030處所描繪的)和地圖更新(例如,如在框1015處所描繪的)構成,但是在如所指示的第一實例中,第一幀1010可以直接應用於地圖更新。

在一些實施例中,當生成地圖時,映射系統可以使用「中間」表示,並且當完成時,可以將該中間表示轉換為最終形式。例如,在圖10中,第一幀1010可以是例如在數據日誌中的第一幀,或當從捕獲設備實時獲取的第一幀。中間表示可以是例如舍位帶符號距離函數(TSDF)數據結構(但是將容易地認識到,其它合適的數據結構)。然而,為了解釋的目的,本文中所描述的大多數的示例將參考TSDF。

在框1015,系統可以實行地圖更新,並且用幀的數據更新內部表示,例如,TSDF表示。初始地,在框1005,TSDF中的全部格點(在一些實例中,還被稱為「格網單元」或「格網單元拐角」)可以被初始化為默認值。應用地圖更新過程可以調整TSDF格點中的一些TSDF格點,以反映幀的深度數據。本文中(例如,在具有數字標識符#7的部分和任何對應的子部分中)更詳細地描述了用於這些更新的細節。在一些實施例中,為了輔助第一幀定位,IMU向下矢量(例如通過在所捕獲的設備中的加速計所測量的)可以與Z軸對準。然後,可以使用例如下面所描述的技術提取樓層平面圖。然後,樓層平面圖的法線可以與Z軸對準。在一些實施例中,如果需要,則可以手動調整圍繞Z軸的旋轉,以及3D平移。

當在框1020處仍有要考慮的幀時,在框1025,系統可以考慮下一個幀。然後,在框1030,系統可以實行姿態更新。例如,在框1015處初始地圖更新期間,系統可以依賴於任意姿態,用於應用深度幀數據來更新TSDF。在隨後的迭代期間,然而,應該相對於先前的TSDF更新適當地對準傳入深度數據。於是,姿態更新1030可以提高針對該幀的相機姿態估計。然後,可以在地圖更新1015處更新TSDF。

一旦在框1020處已經考慮全部或足夠數量的幀(例如,以完成模型),在框1035,系統可以從TSDF表示中建立3D網格,或構造其它表示,諸如如在本文中更詳細討論的LFF和/或LFI。

6.映射-地圖更新-圖形概述

圖11是一般描繪如可以應用於一些實施例中的在地圖更新期間迭代TSDF創建過程的柵格。雖然為了方便理解這裡在二維中進行描繪,但是將容易地認識到三維中加上必要的變更的應用。TSDF是3D體積柵格,其中每個格點的值是到地圖表面的所估計的符號距離d。可以在B.Curless和M.Levoy在第23年度計算機圖形和互動技術的會議的會議記錄中pp.303-312,ACM,1996中的「A volumetric method for building complex models from range images」中,發現關於相關的TSDF結構的示例實施方式的細節。應當注意,對於對象和牆內的格點,d可以是負的,並且對於在自由空間中的格點,d可以是正的。距離可以被截斷為最大值μ。距離可以被計算為從不同的數據幀獲取的距離測量的滾動加權平均。為了方便該計算,每個格點(例如,圖11的柵格中的每個交點)可以儲存全部之前觀測的累積權重w。例如在框1005處使用之前,各種實施例的映射系統可以初始化TSDF結構。

在狀態1100a,柵格可以包括分別用μ和0的距離和權重值初始化的多個「格點」(但是可以使用其它表示,例如,一種可能簡單地涉及作為格網單元拐角的值)。柵格可以對應於真實世界環境。在真實世界中,對象1105(例如,柱子)可以與柵格交點重疊,如所指示的。例如,格點1110a可以落在對象1105中,但是格點1110b可以落在對象1105之外。

作為地圖更新的示例迭代,地圖更新可以選擇格點(例如,點1110a)。然後,地圖更新可以通過更新格點1110a生成1150aTSDF配置1100b。例如,姿態更新可以已經提供了用於將姿態F』(在姿態F』處,捕獲了深度幀)轉換到TSDF的坐標系O』的變換。例如,通過將該變換的逆變換應用于格點1110a,然後,可以確定格點1110a落進深度相機中的哪個像素中。從該像素髮出的光線1115a(如由與像素相關聯的深度值反映的)將入射到位置1120a處的表面1105上。如所指示的,因為格點1110a在表面內,所以可以確定從位置1120a到格點1110a的負距離(-.4)。如這裡所指示的,可以基於本文中所討論的加權變體,將格點1110a的權重調整為1,或另一個值。

然後,系統可以考慮TSDF中的下一個格點,例如,格點1110b,並且通過更新格點1110b,生成1150b TSDF配置1100c。如所指示的,對應於新的像素的新的光線1115b和深度值1120b可以被確定為最靠近該格點1110b(例如,通過將由姿態更新確定的變換T的逆變換應用于格點)。將認識到,相同的光線可以被用於更新一些格點。這裡,因為格點1110b在表面1105之外,所以可以確定正距離(.6)。還可以計算新的權重(1)。

如此,對於每個地圖更新,系統可以對全部TSDF格點進行迭代,基於姿態更新變換和幀深度值更新它們的值。

7.映射-地圖更新-流程圖

如所提到的,TSDF是3D體積柵格,其中柵格中的每個格點的值(或格網單元拐角,在一些實施例中,非格點的值是來自周圍的格點的內插值)是到地圖表面(例如,到對象的表面)的所估計的符號距離d。應當注意,對於對象和牆內部的格點,d可以是負的,並且對於自由空間中的格點,d可以是正的。距離可以被截斷為最大值μ。距離可以被計算為從不同的數據幀獲取的距離測量的滾動加權平均。為了方便該計算,每個格點(例如,圖11的柵格中的每個交點)可以儲存全部之前觀測的累積權重w。然後,給出具有權重w新的新的距離觀測d新的,格點值可以被更新為

w=w+w新的 (2)

初始地,可以用d=μ和w=0初始化全部格點。

更明確地,在一些實施例中,在姿態更新之後,然後可以更新TSDF,例如,如圖12中提供的。給定數據幀F、幀的3D姿態T(例如,經由姿態更新或任意地針對第一幀所確定的),以及相機模型(CM)。CM可以以局部相機坐標取得3D點,並且為該點提供像素坐標,表示3D點將落入哪個像素中。CM還可以提供反向變換,例如,給定像素和深度,CM可以以局部相機坐標提供3D點。使用CM,系統可以確定哪個像素對應于格點(例如,確定與格點1110a相關聯的光線1115a)。

在框1210,系統可以確定是否還有要考慮額外的格點。如果還有要考慮格點,則在框1215處可以考慮下一個格點。在框1220,系統可以確定該格點對應於哪個像素(例如,深度值與哪個光線相關聯)。在框1225,系統可以計算d新的作為針對該像素測量的3D點和相機原點之間的距離減去格點和相機原點之間的距離(例如,從1110a到1120a的距離)。如果d新的大於μ,則d新的可以被截斷為最大值μ。然而,如果小於-μ,則格點可以被認為被遮擋了,並且跳過用於該格點的更新。在框1230,系統可以基於範圍、入射角和到間斷點的接近度,計算更新權重w新的。在框1235,系統可以例如使用方程式1和方程式2,更新格點的值。

為了減少計算負擔,系統可以首先計算在相機前面為梯形的更新體積。梯形可以從最小到最大範圍覆蓋相機的視場。在該情況下,系統可以需要僅對落入更新體積中的而不是整個TSDF中的格點進行循環。

在一些實施例中,為了提高d新的的計算,系統可以在鄰近像素之間內插值,同時注意不要對間斷點內插。可以使用的一個更新權重是w新的:=1(例如,圖11中所描繪的)。這可以給全部測量以相等的權重。然而,一些實施例採用在以下部分中討論的改善。

8.映射-地圖更新-權重

各種實施例期待使用一個或多個供選擇的加權度量(例如,範圍權重、「間斷點權重」和「入射權重」)的組合,更新格點權重。

9.映射-地圖更新-權重-範圍權重

在很多情況下,測量誤差可以隨著範圍增加。系統可以確定範圍權重為wrng:=1/r2,其中r是所測量的範圍(例如,用於光線的深度值)。

10.映射-地圖更新-權重-間斷點權重

由於傳感器數據扭曲和姿態估計誤差,所以幀數據可以在範圍間斷點附近具有更大的方差。映射系統可以通過計算間斷點權重為以下來處理這些間斷點

其中s是該像素和在像素的周圍的預定義寬度的窗口中的像素之間的範圍測量的斜率。兩個像素之間的斜率可以是深度值的差值除以兩個像素之間的像素距離。值s可以被設置為從該像素到該像素的鄰域內的其它像素的最大斜率。如此,在間斷點附近的像素可以接收低「間斷點權重」,而在其他情況下,離間斷點很遠的像素可以接收更靠近1的權重。

11.映射-地圖更新-權重-入射權重

地圖更新系統還可以應用入射權重winc。入射權重可以取決於像素的光線以其撞擊表面的角度。更高的入射角可以導致更不準確的範圍測量,並且如此較低的入射權重。權重可以被計算為歸一化光線矢量和表面法線之間的點積:

如果點積是負的,則權重winc可以被設置為零。例如,

12.映射-地圖更新-權重-權重積分

除了範圍權重、間斷點權重和入射權重之外,可以使用其它權重。給定每個具有對應的重要性{pi}(例如,0和無窮大之間的實值加權)的一組權重{wi}(包含,例如,範圍權重、間斷點權重和入射權重),在方程式1和方程式2中使用的累積更新權重w新的可以被計算為

將容易地認識到對該方法的變體。例如,在一些實施例中,可以通過乘以對應的重要性{pi}縮放每個權重,並且對每個權重進行求和。

在一些實施例中,例如,地圖更新可以跨越多個CPU或跨越圖形處理單元(GPU)上的多個計算單元或多個GPU單元被並行化。由於每個格點獨立於其它格點進行更新,所以一些實施例僅需要拆分需要跨越多個並行計算線程更新的全組格點。

13.映射-網格構造

如所提到的,在一些實施例中,中間表示可以與最終3D表示相同。例如,頂點表示可以是中間表示和最終表示兩者。其中中間表示是TSDF表示,例如,可以使用移動立方體算法(和/或LFF和/或LFI表示)創建最終多邊形網格表示。給定TSDF,可以使用1987年最初由Lorensen提出的移動立方體算法,構造多邊形網格表示。移動立方體算法通過對立方體(立方體的拐角點是連續的TSDF格點(在維度中的一個中,例如,x、y或z))進行迭代,並且檢查立方體是否和地圖表面相交(將認識到,「立方體」和格點可以不具有相同的x、y或z解析度,例如,與z(高度)上的較低的解析度相比,可以有x和y上更高的解析度,等),構造網格。確實相交的立方體將在拐角處有具有不同的TSDF值符號(例如,一些正的和一些負的)的格點。對於和表面相交的每個立方體,映射系統可以使用例如線性內插,計算在連貫的格點之間的立方體的每個邊緣上的交點。然後,映射系統可以構造一個或多個三角形面(或其它多邊形),以由表面表示立方體的相交處。可以參考基於和表面相交的邊緣的表,確定應用於每種類型的相交的三角形。

14.映射-網格構造-範圍間斷點

在一些實施例中,在例如映射操作期間,系統可以檢測深度數據中的範圍間斷點。範圍間斷點可以是範圍尖銳轉變為用於深度圖像中的鄰近像素的障礙。可以由環境中的對象邊界引起這些間斷點。當一個像素測量到特寫對象的範圍,並且鄰近像素正好未看到該對象,並且測量到背景的範圍,則範圍中的差異可以非常大。

為了檢測範圍間斷點,一些實施例比較鄰近像素的深度值。如果差值大於閾值kdisc,則系統可以識別間斷點。kdisc的值可以取決於在該實施例中採用的具體RGBD傳感器的噪聲特性。對於飛行時間(TOF)相機,kdisc可以保持恆定。對於投影相機,kdisc可以是到掃描點的範圍的函數。

15.映射-網格構造-各種各樣的技術

在一些實施例中,在映射期間,可以應用多個其它技術。

16.映射-網格構造-各種各樣的技術-地圖先驗

如本文中所討論的,各種實施例將構造新的地圖(從頭開始),但是常常更新現有的地圖例如以將現有的房間的地圖延伸到相鄰走廊是很有幫助的。在該情況下,代替用第一捕獲的幀的數據初始化TSDF,一些實施例可以用預先存在的地圖初始化TSDF。現在可以使用本文中所討論的全局定位技術,定位第一幀。使用用於第一幀的該姿態,可以用第一幀的數據,實行定期姿態更新和地圖更新。然後,映射系統可以用隨後的幀照之前的進行下去。

17.映射-網格構造-各種各樣的技術-平面先驗

在一些實施例中,甚至當「從頭開始」建立地圖時,可以容易地得到關於環境的先驗信息。例如,大多數房間具有平面的地板。可以通過用平面表面初始化TSDF來捕獲該信息。平面表面可以幫助確保所得到的地圖將具有平坦地板。與使用先驗地圖相比,當應用平面先驗時,一些實施例將不使用局部定位來安置第一幀。代替地,系統可以使用本文中(例如,在具有數字標識符#25的部分和任何對應的子部分中)所討論的技術,以第一幀估計樓層平面圖。然後,系統可以將第一幀的樓層平面圖與給定的先驗平面對準。這可能仍然留有不受第一幀的姿態約束的幾個自由度(例如,幀可以沿著地板平移,並且圍繞垂直線旋轉)。在一些實施例中,可以由用戶調整這些額外的自由度。

18.映射-網格構造-各種各樣的技術-選擇性的-重新映射

在一些應用中,環境可以隨著時間改變。然而,先驗地圖中的許多先驗地圖仍可以提供很好的表示,儘管一些部分可以已經改變。在這些情況下,僅對改變的區域進行重新映射可以是有幫助的。在一些實施例中,系統可以將小於全部先驗TSDF的部分重新初始化為未知的空間,從而濾除關於這些區域中的環境的全部信息。然後,所得到的TSDF可以被用作地圖先驗。在一些實施例中,可以由用戶指定被選擇用於去除的部分,或可以基於新的數據與舊的深度數據的比較,識別被選擇用於去除的部分。

供選擇地,一些實施例從先前的TSDF構造網格模型,去除網格中的一些部分,並且然後從所得到的網格建立新的TSDF。新的數據日誌的第一幀可以開始於已知的區域,使得全局定位技術可以被用於安置它,並且將新的區域無縫整合到現有的地圖中。

19.映射-網格構造-各種各樣的技術-數據驅動參數學習

在一些實施例中,映射器使用多個不同的參數,例如:期望的柵格解析度、截斷距離、不同的加權組分的貢獻(如在方程式6中的)、用於姿態估計的各種參數等。改變這些參數的值可以影響所生成的地圖的質量,並且很難用手優化設置全部參數。

一些實施例採用數據驅動參數學習,以改善這些系統的結果。這些實施例可以假設用於給定的數據日誌的初始地圖和相機軌跡是已知的。初始地圖和軌跡本文中被稱為「地面真值」。然後,系統可以運行具有不同的參數設置的映射器(例如,地圖更新和姿態更新系統),以確定哪個設置產生更靠近地面真值的地圖和軌跡。可以例如依照相機姿態(在地面真值相對數據日誌中)之間的距離,以及映射的表面(例如,所生成的地圖和地面真值地圖)之間的距離,測量貼近度。

系統可能不知道用於實際數據日誌的初始地圖和軌跡,並且需要方法以生成地面真值。在一個方法中,在嘗試創建儘可能準確的地圖和軌跡中,可以應用許多計算時間和資源。然後,該地圖和軌跡可以被處理為地面真值的估計。在另一個方法中,系統可以基於給定的3D網格和相機的軌跡,生成合成數據日誌。在該情況下,對於相機的每個姿態,系統可以使用網格的3D模型(例如,將3D網格模型再現到深度緩衝器OpenGLTM中),並且然後讀回深度值,來生成虛擬深度掃描。虛擬深度掃描生成基於深度的,並且可以額外地生成幀數據的顏色表示(例如,以類同於真實世界數據的幀的形式)。

20.映射-姿態更新

如所提到的,在嘗試地圖更新之前,姿態更新(例如,在框1030)可以相對於現有的中間結構對系統中的所接收的幀進行更好地平移和取向。例如,姿態更新可以定位傳入數據幀。給定先前置信度belt-1和相機姿態Tt-1,系統可以估計在時間t的當前置信度belt和相機姿態Tt。首先,系統可以生成預測置信度(例如,通過使用先前belt-1和應用動態模型(如本文中所描述的)、通過取得先前姿態Tt-1和設置圍繞其的不確定區域等),並且系統可以生成預測的姿態,例如,使用來自預測置信度的最可能的姿態作為預測的姿態。然後,系統可以使用例如光線跟蹤,從預測的姿態(或,在一些實施例中,從先前姿態Tt-1)建立TSDF的虛擬深度掃描。然後,可以通過將新的數據與虛擬掃描對準,推斷新的置信度belt和姿態估計Tt。姿態更新可以涉及首先使用預測的姿態安置更新數據,並且然後為幀確定地圖上的對應於每個深度光線的點。本文中別處(例如,在具有數字標識符#28的部分和任何對應的子部分中)更詳細地描述了對準和推斷過程的細節。還可以在實時AR操作中使用姿態估計的方面。

21.映射-姿態更新-示例圖形虛擬掃描創建

圖13是為了解釋可以應用於一些實施例中的高維方法來自TSDF表示(例如,在姿態更新中)的虛擬掃描的創建的示例性二維表示。再者,如在情況1300b中所描繪的,不完整的TSDF結構可以包括具有反映與最近表面1305的關係的距離值的很多格點。系統可以希望生成相對於假設姿態1310(例如,基於動態模型的預測的姿態,例如,過去姿態的考慮、用戶的運動等)的虛擬掃描。系統可以確定對應於在該姿態下考慮的捕獲設備中的像素的多個光線。對於一個光線1315,系統可以沿著以間隔1370a、1370b、1370c、1370d的光線1315移動,沿著光線在每個點處內插最近TSDF距離值(例如,三線性插值),直到所內插的值的符號改變。

例如,在間隔1370a、1370b、1370c處的所內插的值可以都是正的,但是在1370d處所內插的值可以是負的。在一些實施例中,可以返回第一負間隔處的點。但是在一些實施例中,對應於第一負間隔1370d和最後一個正間隔1370c的位置可以(例如,基於它們的距離值)在之間進行內插,以確定更靠近對象的1305表面(對應於深度D1)的所內插的位置1320。於是,姿態更新系統可以確定虛擬掃描將包含對應於點1320的新的深度值。然後,例如,當確定對應關係時,與真實幀深度數據作比較,深度值例如1380a、1380b、1380c、1380d可以被組織成TSDF的「偽框架」虛擬掃描。

圖14是如在一些實施例中可以實施的(例如,如可以發生在框1030中的)一般描繪虛擬掃描的創建中的各種步驟的流程圖。可以如下進行示例虛擬掃描生成技術。給定相機的姿態T和相機模型CM,系統可以用一個光線/掃描的每個像素,對TSDF進行光線跟蹤,建立虛擬掃描。系統可以實行框1415、框1425、框1430和框1435,直到在框1410處考慮虛擬了掃描的生成所期望的全部光線。

在框1425,在每個步驟(例如,步驟1370a、步驟1370b等),系統可以計算TSDF距離值(例如,三線性插值)。在框1430,系統可以確定沿著光線在哪裡TSDF值的符號改變(例如,步驟1370d)。

在框1435,系統可以使用線性內插發現光線和TSDF相交處的範圍。例如,系統可以在與步驟1370c和步驟1370d相關聯的點之間線性內插,以發現表面1305的更好的邊界近似(而不是僅取得與圖13中的步驟1370d相關聯的點)。然後,每個虛擬範圍測量(例如,包括測量1380a-c的)可以使用相機模型CM,被轉換為3D點,並且這些3D點的集合和/或它們的深度值可以構成「虛擬掃描」。

應當注意,用於一個光線的光線跟蹤計算可以獨立於用於另一個的計算。由此,在一些實施例中,虛擬掃描生成可以例如通過分配待被處理的光線的子集到每個線程,跨越多個計算線程被並行化。

22.映射-地圖後處理

雖然3D網格模型捕獲關於環境的許多信息,但是常常對另外推論出環境的一些重要特性是有幫助的。例如,對知道地板和牆在哪以及哪些表面是適於行走的是有幫助的。

23.映射-後處理-地圖著色

一旦建立網格模型(或至少充分部分地建立以進行後處理),可以以類似於映射系統的方式進行後處理操作諸如地圖著色。可以使用頂點網格表示而不是TSDF數據結構。地圖著色可以被用於將紋理數據應用於網格。網格可以由頂點(點)和面(三角形)構成。對於每個頂點,可以維持可以是RGB三元色的顏色的加權平均值c和全部先驗觀測的累積權重w。由於已經由映射器估計了幀姿態,所以可以重新使用幀姿態。

圖15是如在一些實施例中可以實施的一般描繪地圖著色過程中的各種步驟的流程圖。在框1510,系統可以考慮是否已經處理全部幀。如果仍有幀,則在框1515,可以考慮下一個幀。對於該幀,然後在框1525處,地圖著色系統可以確定是否已經考慮全部網格頂點。如果仍有頂點,則在框1530,可以考慮下一個頂點。在一些實施例中,系統可以為每個數據幀計算更新體積,並且為更新體積之外(例如,梯形之外的)的網格頂點跳過顏色更新。

在框1535,系統可以使用相機模型CM和用於該幀的姿態,計算該頂點落入哪個像素中。例如,給定對應於深度幀捕獲的RGB圖像,系統可以例如通過使用映射系統為該幀產生的姿態,識別對應於世界坐標框架中的幀數據的姿態。系統可以使用由映射系統為該幀產生的姿態,為相機坐標系中的頂點確定坐標。相機模型CM可以被用於確定頂點落入哪個像素中(如果頂點沒有落入像素中,則可以跳過該頂點,以減少計算負擔,但是如本文中所描述的當應用梯形時,很多像素將對應於頂點)。在框1535,系統可以確定哪個RGB值對應於考慮中的頂點。

在框1540,系統可以將到頂點的範圍與所測量的範圍進行比較,例如,以確定用RGB圖像取得的深度是否指示在考慮中的頂點被遮擋或以其它方式不可視。例如,相對於以其拍取RGB圖像的姿態(例如,範圍可以被確定為絕對差的閾值),在考慮中的頂點可以落在另一個對象後面(例如,被遮擋)。如果是這樣的話,不應該更新頂點顏色。類似地,傳感器數據可以是壞的,並且其中深度值遠遠越過頂點的位置,頂點可以被「排除」,表明數據是壞的,並且應該忽略該數據。

在框1545,系統可以計算更新權重w新的。在框1550,系統可以例如使用以下方程式更新頂點顏色:

w=w+w新的 (8)

其中c可以是(r,g,b)元組,其可以被儲存為浮點,而不是字節、值。

在框1540,如果所測量的範圍遠離範圍-到-頂點(例如,超過μ),則映射系統可以將頂點分類為不合適的,並且於是可以跳過更新。如之前的,更新權重w新的可以被計算為範圍權重wrng、間斷點權重wdisc和入射權重winc的組合。此外,一些實施例還添加運動模糊權重分量wblur=1/δpix,其中δpix是該頂點或從先驗幀移動到當前幀或從當前幀移動到下一幀的最大像素距離。

δpix的值可以從下面由一些常量限制。由此,在相機圖像中該頂點移動的越多,運動模糊權重就越小。在使網格著色之前,一些實施例修剪掉表面積太小的三角形,並且計算用於與入射角一起使用的平滑的每個頂點法線。一些實施例可以通過例如將包含該頂點作為拐角中的一個的全部三角形的全部法線加起來,並且然後對總和進行歸一化,計算平滑的每個頂點法線。然後,結果可以被用作用於該頂點的平滑的法線。

24.映射-地圖後處理-網格拆解

根據本文中描述的「地圖著色」構造的著色的3D網格可以具有每個頂點顏色。一些工具(例如,MeshLabTM)能夠處理此類網格,但是很多工具(例如,很多遊戲引擎)要求有紋理的網格。

在有紋理的網格中,由稱為「紋理」的2D顏色圖像表示顏色信息。每個網格頂點具有紋理坐標(u,v),紋理坐標(u,v)表示2D紋理圖像的像素。可以從由面頂點的紋理坐標定義的紋理三角形取得在網格的每個三角形面上繪製的顏色。將紋理坐標分配給全部網格頂點的過程被稱為「網格拆解」,因為該過程將3D網格「拆解」到2D紋理的平面上。

為了拆解網格,一些實施例將網格歸類為六個類別,在兩個方向上的每個軸有一個類別:x、y、z上。可以基於頂點法線最靠近的任何一個軸方向,對每個頂點進行歸類。然後,系統可以基於類別歸類,將頂點分裂成連接部件。為了建立部件,系統可以開始於一些(先前未分配的)頂點,並且僅用該頂點創建新的部件。然後,系統可以考慮涉及該頂點的全部面。一些面中與該頂點相鄰的頂點可以被認為其相鄰點。然後,系統可以將具有相同的類別歸類的全部頂點相鄰點添加到相同的部件。然後,系統可以為最新添加的頂點的全部相鄰點重複該過程。

一旦建立了部件,系統就可以沿著每個部件的相關聯的軸,將每個部件投影到2D圖像平面上。然後,該投影可以變成用於該部件的圖像紋理。在一些實施例中,然後,系統可以儘可能緊密地將全部部件的紋理包封到單個2D圖像上,並且為整個網格獲取紋理(例如,4096×4096像素的紋理圖像)。如果,部件紋理沒有適配到一個此類圖像上,則可以使用多個紋理圖像。圖16是如可以根據一些實施例生成的3D網格和對應的紋理的屏幕截圖的集合。在屏幕截圖1605中示出有紋理的頂點網格模型。屏幕截圖1610經由著色指示每個頂點被分配給哪個類別(例如,在地板上的大多數頂點與紫色著色相關聯)。屏幕截圖1615描繪所得的2D生成的紋理圖像。

25.映射-地圖後處理-平面和地板提取

在一些實施例中,可以通過提取大的平面表面,獲取關於環境的許多有用的知識。在一些實例中,面朝上的最大的平面表面將是地板,並且面向下的最大的平面表面將是天花板。牆可以被識別為大的頂點平面表面。在一些實施例中,從網格提取平面的一種方式是使用本文中所描述的用於網格拆解的定向部件。對於每個足夠大的部件,系統可以使用分解技術(例如,主部件分析(PCA)),使平面適配到頂點。

來自平面的點的平均偏差可以充當非平面性分數。具有低於一定閾值的非平面性分數的部件可以被認為是平面的。例如,與+z軸對準的最大的此類部件可以被識別為地板。類似的技術可以被用於從深度掃描提取平面表面。在該情況下,可以沒有面。代替地,掃描點的鄰近點可以是相鄰的像素的掃描點(但是一些實施例會注意不會橫跨深度間斷點邊界)。倘若世界坐標中的相機的取向近似已知(例如,從IMU,或通過已經要求用戶使相機向下指向,或供選擇地向前指向等),最大的平面的+z部件可以被識別為地板。如在具有數字標識符#17的部分和任何對應的子部分中討論的,例如,一些實施例使用該技術以為平面先驗提取樓層平面圖。

26.姿態估計

期望最大化系統和PSA特別地可以被用於估計相對於環境的模型的相機的姿態(例如,位置和取向)的置信度。在作為「姿態更新」過程的一部分的映射期間,可以實行姿態估計,以適當地將傳入數據對準到3D模型。在AR應用期間,還可以使用姿態估計,以確定相對於世界坐標框架當前設備的姿態(例如,在標準跟蹤和全局定位中)。

姿態估計子系統可以包括PSA和/或EM部件,並且可以對估計在給定的時間點相機的姿態(即,位置和取向)的置信度負責(這可以被用於映射和跟蹤兩者,如本文中討論的)。可以由從本地相機框架到世界坐標框架的剛性變換Tt表示姿態。如所討論的,一些實施例解決兩種類型的姿態估計問題:(a)當相機姿態的很好的先驗估計是可用的時,姿態跟蹤,以及(b)當先驗相機姿態是未知的(或非常不確定)時,全局定位。在AR設備的定期操作期間,可以實時針對每個數據幀實行跟蹤。在用於數據日誌中的每個幀的映射期間,還可以實行跟蹤。與此相反,在映射期間,不需要實行全局定位。在定期AR操作開始時或無論何時跟蹤器丟失時可以實行全局定位以初始化跟蹤器。

27.姿態估計-狀態表示和測量單元

由於置信度belt是非常複雜、非平滑函數,所以在一些實施例中其可以不以閉合的形式來表示。代替地,在一些實施例中,使用粒子濾波算法,由點值估計該函數。然而,粒子濾波器在需要被估計的參數的數量上是指數的。在大多數實施例中,至少六個參數可以被用於估計3D空間中的剛性體。為了節省計算成本,各種實施例採用稱為縮放系列的先進的粒子濾波器。縮放系列可以由一組加權廣義粒子表示置信度,其中每個粒子儲存例如6D參數空間中的點、圍繞其的不確定區域和重要性權重。

一般地,在姿態估計期間,「狀態」可以被表示為將被估計的未知的隨機變量。在一些實施例中,狀態被建模為隨機變量,以應對例如傳感器誤差和數據捕獲之間的其它微小變化。在各種實施例中,狀態是相機的姿態T。由於全部逐點估計算法在參數的數量上為指數的,所以各種實施例尋求用儘可能少的參數表示該狀態。於是,姿態可以被表示為T:=(x,y,z,a,b,c),其中(x,y,z)是笛卡爾坐標,並且(a,b,c)是羅德裡格斯表示中的旋轉(例如,軸時間角度,其中角度在0和π之間)。將容易地認識到供選擇的表示(例如,極、球形、圓柱形、歐拉角、四元數、矩陣等),並且將理解,這裡所提供的示例僅是一個可能的實例。因為T是在該框架中的剛性變換,T(p)在本文中被用於表示將變換T應用於3D點p的結果。雖然搜索或推斷算法(例如,縮放系列)可以保持跟蹤一個表示(諸如(x,y,z,a,b,c))中的狀態,但是將容易地認識到,當需要應用或組合變換時(例如,當計算特定粒子的概率時),變換可以被轉換成另一個形式(例如,矩陣),其可以被用於潛在地更快地實行這些操作;額外地,還可能立刻保持跟蹤處於幾種形式的變換,當需要時,更新全部這幾種形式的變換,並且使用對於特定操作最快的任何一種形式。

一些實施例使用米(m)用於笛卡爾坐標,並且使用弧度(rad)用於旋轉角度。將容易地認識到供選擇的表示(例如,釐米、英尺、英寸、毫米、度等),並且將理解,這裡所提供的示例僅是一個可能的實例。然而,當說到剛性變換時,使用包含位置和旋轉兩者的單個測量單位可以是很方便的。例如,圖17是例示如在一些實施例中可以相關的旋轉和距離之間的關係的一系列框圖。捕獲設備1705可以已經預期在位置1710a處看到對象,但是代替地在位置1710b處發現該對象。該不一致可以歸因於旋轉、平移,或捕獲姿態中的兩個捕獲姿態的組合。例如,捕獲設備1705可以被平移1715一定距離,導致對象出現在位置1710b處。供選擇地,捕獲設備1705可以代替地已經被旋轉1720,以達到相同的結果。不是用可以引起不一致的可能的平移和旋轉的整個範圍反映該不一致,而是一些實施例採用反映旋轉和平移兩者的測量單位。

特別地,一些實施例將1米等同於1弧度,以方便較小的平移轉換到較小的旋轉,並且反之亦然。所得的單位在本文中被稱為米和弧度(MAR-1)。MAR-1可以被用作用於歸一化誤差的度量(可歸因於例如平移和/或旋轉中的一個或兩個)。換句話說,長度1MAR-1的變換是6D參數空間中的單位矢量。MAR可以為6D參數空間中的運動如何影響世界3D空間中的運動提供很好的近似。例如,如果長度1MAR-1的變換被應用於相機,則其將通過無論是通過平移、旋轉,還是兩者的組合(例如,在圖17中所描繪的偏移處),將位於相機前面1米的點移動近似1米。如此,在世界坐標中,1MAR-1的相機抖動將把特寫虛擬對象移位近似1米。在EM期間,可以使用MAR,以確定何時已經發生收斂(例如,當由PSA生成的連續變換仍舊在彼此的MAR的閾值內)。

更一般地,系統可以尋求確定相機抖動對遠離相機一定距離R(而不是僅1米)的對象的影響。這對於不同環境中的映射(例如,外殼(諸如人體)中的映射可以涉及在毫米的量級上距相機的對象距離,其中映射體育場可以具有在幾十米量級上距相機的對象距離)可以是有用的。一些實施例通過旋轉乘以旋轉到位置係數,將較小的旋轉轉換為較小的移位,其結果近似為R。直觀地,例如,想像持有長度R的釣魚杆且對象懸置在其最末端。如果你將該杆轉動較小的角度α,則三角函數計算可以示出對象將被移位近似R*α(其中α單位為弧度)的距離。所得到的單位在本文中被稱為「MAR-R」。借用這種記號,上面1米到1弧度的轉換將被寫為MAR-1。在本文中參考「MAR」而不未指定R的情況下,將認識到用於MAR的R將取決於上下文(並且可以是例如R=1)。

應當注意,如果R不等於1米,則長度1MAR-R的6D矢量不再是使用歐幾裡得度量的6D參數空間中的單位矢量。於是,一些實施例使用馬氏距離,馬氏距離將考慮旋轉到位置係數,使得1MAR-R的長度的矢量將具有單位馬氏長度。在一些實施例中,兩個矢量和之間的馬氏距離dM被計算為

其中{λi}是馬氏係數。在一些實施例中,對於(x,y,z,a,b,c)的狀態矢量,我們具有全部設置為1的λx、λy、λz和全部設置為R的λa、λb、λc。額外地,在一些實施例中,為了確定兩個變換Ta和Tb之間的距離,代替使用dM(Ta,Tb),系統可以使用dM(Ta-1*Tb,I),其中I是恆等變換(0,0,0,0,0,0),這將防止環繞哪裡旋轉的問題(例如,圍繞(x,y,z)軸的α弧度相似於圍繞(-x,-y,-z)軸的2π-α弧度)。如此,(從不同側)在纏繞邊界附近不同的兩個非常類似的變換可以如此對應於相距很遠的6D表示矢量。通過計算Ta-1*Tb,可以生成從Ta到Tb的變換C。C的量值(以MAR-R為單位)可以提供Ta和Tb多麼靠近的很好的估計。

28.姿態估計-姿態跟蹤

在一些實施例中,姿態跟蹤可以被建模為貝葉斯過程,其中由於相機運動,所以相機姿態Tt隨著時間改變。圖18是如根據一些實施例可以使用的動態貝葉斯網絡的框圖。在每個時間步長t,姿態估計系統可以從RGBD相機(或如本文中討論的任何其它合適的傳感器)獲得新的傳感器測量Dt,例如,深度數據幀。這裡M表示環境,以及在取得深度數據D1、D2等時環境中的相機姿態T1、T2等。T1、T2等是未知的(例如,未觀測的),然而D1、D2等是已知的(例如,觀測的)。在標準跟蹤期間,M可以被認為是已知的(例如,由先前建立的環境模型表示的)。在映射期間,跟T1、T2等一起,地圖M可以是未知的,但是不像相機姿態,地圖不會隨著時間改變。系統可以基於深度數據D1、D2等,尋求估計姿態T1、T2等(和並且可能估計M)。由於傳感器噪聲和建模不精確,所以系統不能確定具有絕對確定性的相機姿態。代替地,可以由在給定時間稱為貝葉斯「置信度」的概率分布belt描述不確定的相機的姿態的知識。

belt:=p(Tt|D1,...,Dt) (10)

該概率方法可以具有計算給定全部可用的數據的最優解的優點,同時還適當地考慮傳感器噪聲和建模不確定性。可以使用貝葉斯遞推公式遞歸地估計置信度

belt=ηp(Dt|Tt)∫p(Tt|Tt-1)belt-1dTt-1 (11)

其中η是歸一化常數,並且belt-1是在之前時間步長t-1的置信度。從這裡開始,術語η被用於代表歸一化常數。在不同的方程式之間η的值將是不同的,但是使得該特定的方程式右手邊積分為一。第一概率項p(Dt|Tt)在本文中被稱為測量模型(描述如何取得傳感器測量的概率性陳述)。第二概率項p(Tt|Tt-1)是動態模型(描述相機可以如何移動的概率性陳述(例如,其可以考慮人可以多快地行動裝置、過去的姿態、IMU數據等))。貝葉斯濾波器通過在每個時間步長t內的迭代預測和測量,估計置信度。圖19是如在一些實施例中可以實施的一般描繪跟蹤算法的綜述的流程圖。例如,圖19可以反映姿態更新過程815c和EM過程840a的組合的操作或標準跟蹤過程820b和EM過程840b的組合的操作。圖20是如可以應用於一些實施例的一般描繪迭代擬合過程的框圖。圖21是如可以在一些實施例中實施的反映一個可能的跟蹤算法的偽代碼列表。

初始地,在框1905,系統可以接收第一相機姿態和/或置信度。這可以是任意的、默認假設。在一些實施例中,如果標準跟蹤剛開始,則其可以接收該初始姿態和/或置信度作為由全局定位生成的姿態和/或置信度。當在框1910處接收新的數據幀時,系統可以更新姿態和/或置信度估計。

在預測中,一般地對應於圖19中的組1950的框,系統可以基於例如幀時間戳、IMU數據,確定預測的置信度(框1915),並且確定最可能的姿態(框1920)。預測可以是姿態更新過程815c或標準跟蹤過程820b的一部分。例如,系統可以使用動態模型,並且計算來自還被稱為貝葉斯預測的方程式11的積分項

該項可以反映給定全部之前測量的相機姿態的預測,除了最後一個。換句話說,

這些步驟可以一般對應於圖21中行3-4的示例。代表的最大後驗概率,例如,基於預測置信度的相機的最大可能姿態。

在測量更新處,一般對應於組1955的框,如果尚未達到收斂(框1925),則系統可以確定對應關係(框1930),並且改進置信度估計(框1935)(例如,為姿態確定改善的變換)。這些步驟一般可以對應於圖21的行7-12。測量更新1955可以一般對應於EM過程840a或EM過程840b。系統可以通過使用測量模型p(Dt|Tt)併入最新的測量Dt,針對時間步長計算得到的置信度belt。一旦已經達到收斂(例如,連續變換之間的MAR差值的比較低於閾值、已經實行一定數量的迭代等),測量更新過程就可以將最近的置信度和姿態1960提供到請求的系統(例如,姿態更新過程或標準跟蹤過程)。

在圖20的框圖中圖形展示收斂的示例。與相對於原點處未平移的、未旋轉的姿態的幀相關聯的深度值可以導致安置在位置2005處的深度值。預測步驟1950可以通過將深度值重新定位到位置2010a的最可能的變換/姿態T1,生成置信度。然後,可以使用例如具有KD-樹、IB或LFI模型的LF,在E步驟2000a中確定對應關係。例如,深度值2020可以被確定與對象的表面上的點2015一致。系統可以將這些對應關係提供例如給下一個M步驟迭代2030a中的PSA。

M步驟2030a可以產生通過最可能的變換/姿態T2(其將深度值重新定位到位置2010b),產生新的置信度,該新的置信度可以由第二EM迭代使用,以在E步驟2000b中生成第二組對應關係。類似的迭代可以繼續:M步驟2030b通過最可能的變換/姿態T3產生新的置信度,然後,該新的置信度被用於為在位置2010c處的數據識別對應關係;M步驟2030c通過最可能的變換/姿態T4產生新的置信度,然後,該新的置信度可以被用於為在位置2010d處的數據識別對應關係;等。然而,如所指示的,當變換將深度數據越來越近地重新定位到「正確」位置時,連續變換可以極少改變。例如,T4和T3之間的差值遠小於T4和T1之間的差值。可以以MAR(用所選擇的適宜的R)評估變換之間的差值,並且當差值在閾值之下時,可以說達到「收斂」。然後可以返回近期置信度及其最可能的變換/姿態(例如,T4)。

在圖21的行9處,LFI數據結構允許最快的對應關係匹配,並且可以被用於一些實施例中。在沒有LFI的情況下(例如,在映射期間),為整個模型計算對應關係可以非常昂貴。在這些情況下,一些實施例依靠將新的數據對準到模型的虛擬掃描,從如由圖21的行4生成的預測的最可能的相機姿態Tt-生成模型的虛擬掃描。對於映射器,本文中(例如,在具有數字標識符#20的部分和任何對應的子部分中)更詳細地描述了虛擬掃描構造。對於跟蹤器,可以代替地在一些實施例中通過將模型網格再現到OpenGl深度緩衝器中,並且然後讀回深度值,生成「虛擬掃描」。然而,優化為使用LFI數據結構的PSA在一些實施例中可以生成更好的結果。

虛擬掃描的使用可以意味著姿態估計僅將新的數據對準到虛擬掃描,而不是整個模型。對於較小的相機運動(如,例如,在映射期間),這可以不太明顯,但是對於較大的運動,其可以是非最理想的。與虛擬掃描相比,LFI具有將數據對準到整個模型的優點,這對於在跟蹤期間可以產生較大的運動可以是更好的。

數據掃描和虛擬掃描(如果使用)可以具有計算的平滑法線。模型可以已經足夠平滑,但是在一些實施例中可需要對數據進行平滑,以便獲得有用的法線。

出於效率原因,如在本文中(例如,在具有數字標識符#54的部分和任何對應的子部分中)更詳細描述的,可以在GPU上實行平滑法線計算。為了改善的性能,還可以對數據掃描作二次抽樣,以減少在一些實施例中點比較的數量。在映射期間,為了姿態更新的目的,一些實施例還可以從數據深度掃描去除一定寬度的邊界,同時例如使用整個數據掃描用於地圖更新。

關於圖21的行8,該循環可以使用期望最大化(EM)方法(在該示例中具體地硬分配EM版本),逐漸改進belt的估計。EM使期望步驟(E步驟)和最大化步驟(M步驟)交替。E步驟計算對應關係,並且M步驟調整姿態。

關於圖21的行9,(E步驟),系統可以首先使用近期相機姿態估計{yn}={Tt(i)(xn)},將數據掃描變換成世界坐標。然後,可以使用IB、LF或LFI模型計算對應關係(例如,如在圖20中圖形描繪的對應關係)。接下來,系統可以計算界外值,界外值為不能很好地匹配它們的對應的模型點的數據點。例如,如果不能使數據點相配於有效的模型點、距離匹配的模型點太遠(超過一定閾值kdist)、不具有有效的法線,或其法線與模型法線很不同,則數據點可以被認為界外值。如果界外值的百分比太大,則系統可能失敗。跟蹤器可或嘗試針對下一個數據掃描Dt+1從相同的姿態重新開始,或其可以要求使用在本文中(例如,在數字標識符#20的部分和任何對應的子部分中)更詳細描述的全局定位技術重新初始化。

在一些實施例中,傳感器數據幀中的掃描點可以來自兩種類型的障礙:靜態障礙和動態障礙。靜態障礙是自例如已經為牆等創建地圖後仍舊在相同位置中的障礙。動態障礙是自地圖創建之後已經移動的對象。動態障礙可以包括人、寵物,以及自先前映射之後從原處移動的任何對象。當將數據掃描對準到地圖時,在一些實施例中,系統可以過濾掉動態障礙,以至於它們不在地圖上。界外值的丟棄旨在過濾動態障礙。如此,界外值閾值kdist越小,將過濾越多的動態障礙。對於非常好的和準確的姿態調整,這可能是期望的。

另一方面,如果界外值閾值kdist小於當前姿態估計中的誤差,則還可以過濾掉靜態故障的大部分。在沒有這些障礙的情況下,可能很難收斂到正確的姿態。由於姿態誤差應該隨著EM迭代逐漸地變得更小,所以在EM開始時,一些實施例將kdist設置為更大的值,並且朝向最小值逐漸減少kdist。

關於圖21的行10,(M步驟),可以例如使用從置信度的近期估計開始的縮放系列,並且產生新的估計實行將所選擇的數據點對準到它們的對應的模型點(例如,導致圖20中狀態2000a、2000b、2000c和2000d的增加的準確的映射)。可以基於模型法線,使用點到面度量,計算點之間的距離。如在本文中(例如,在具有數字標識符#54的部分和任何對應的子部分中)更詳細描述的,縮放系列更新可以在GPU上被高度並行化。將認識到,其它爬山或優化搜索技術還可以被用於取代縮放系列。

縮放系列的開始的不確定性可以被設置為由動態更新產生的預測分布的不確定性。最終不確定性δ*可以被設置為非常小,以便達到高度準確的對準。如在本文中(例如,在具有數字標識符#44的部分和任何對應子部分中)更詳細描述的,可以學習用於縮放系列的大多數參數的值。必須對縮放系列進行許多其它考慮。本文中在別處(例如,在具有數字標識符#39的部分和任何對應的子部分中)提供了更詳細的討論。

關於圖21的行11,改善的姿態估計Tt(i+1)可以被更新為的最大後驗概率,並且為了下一個迭代,i被增加。

關於圖21的行12,收斂條件可以是例如Tt(i)的估計中的改變變得非常小,或到達EM迭代的最大數量。由於EM可以在幾個局部最小值之間擺動,所以一些實施例計算從Tt(i)到全部之前迭代Tt(0),…,Tt(i-1)的距離。如果距之前迭代中的任一個的MAR(例如,MAR-1)距離低於收斂閾值,則系統可以假設EM已經收斂,並且退出EM循環。

關於圖21的行14,一旦到達收斂條件,一些實施例就將belt和Tt設置為來自最後一個EM迭代i的估計。

29.姿態估計-姿態跟蹤-預測步驟

關於在預測步驟中使用的動態模型(例如,方程式11中的項p(Tt|Tt-1)),一些實施例假設深度傳感器可以至多以人類的速度移動(因為在一些實施例中人類將提供相機運動),或者無論什麼其它車輛或動物被用於操縱捕獲設備。例如,給定最大線速度vmax和最大旋轉wmax,一些實施例假設相機可以最大平移vmaxΔt,並且圍繞一些軸最大旋轉wmaxΔt,其中Δt是時間步長t-1和t之間的時間量。

如果可靠的IMU測量是可用的,則它們還可以被用於改善動態模型。具體地,為了將運動模型應用於一組寬粒子,可以(例如,基於來自IMU的信息或估計的速度)使用運動模型移動粒子,並且可以通過運動的不確定性,增加每個粒子的不確定性半徑。在一些實施例中,可以如在(Anna Petrovskaya的博士論文的第二章,「Towards Dependable Robotic Perception」-將認識到不是所有的實施例都使用該粒子實施方式進行實施)中的算法SS-DYN3中所描述的,更新粒子權重。

在一些實施例中,對於映射,使用之前姿態作為預測的當前姿態,而不是使用一些估計的速度移動預測可以是更安全的。因為尚未完成地圖,所以可以這樣做,並且所以對速度估計過高可以將相機移動到從其相機不能看見任何地圖的位置。這可以引起跟蹤算法丟失。對於實時跟蹤,可以代替地使用估計的速度,更好地使用更為改進的預測。由於兩個數據幀之間的時間量非常小,所以IMU可以提供兩個姿態之間的δ旋轉的合理準確的估計。與人類可以線性平移設備相比,人類可以更快地旋轉設備。出於該原因,在由用戶急劇轉彎期間,IMU數據可以尤其有用。使用IMU用於在一些實施例中採用的預測的一個示例為計算時間步長t-1和t之間的所觀測的相對旋轉(和可選的平移)IMU,然後將該旋轉(和可選地平移)應用於置信度中的每個粒子,並且將不確定性區域增加為例如常數,或基於在該時間段內IMU將積累多少不確定性增加不確定性區域。

30.姿態估計-姿態跟蹤-縮放系列

縮放系列算法(示例PSA)可以通過加權粒子計算置信度bel的近似值。粒子表示搜索空間中的位置。例如,在設備的姿態被表示為六維(x,y,z,俯仰、偏航、翻滾)的情況下,然後每個粒子可以表示跨越全部六維的潛在的姿態。在開始區域上初始不確定性可以被假設為是一致的。如果初始不確定性被假設為是一致的,則置信度可以與數據概率成比例。如此,可以經由測量模型計算權重。在Anna Petrovskaya的博士論文「Towards Dependable Robotic Perception」)中,提供了示例縮放系列方法的更徹底的討論。然而,本文中所描述的實施例並不局限於該示例的特殊性。事實上,一些實施例採用其它爬山或優化搜索功能完全地替換縮放系列。

圖22是如在一些實施例中可以實施的在假想的二維宇宙中的縮放系列的圖形化描繪。圖23是描述在一些實施例中實施的示例縮放系列算法的操作的流程圖。圖24是反映如可以在一些實施例中實施的一個可能的縮放系列算法的偽代碼列表。在作為二維矩形的步驟2200a-2200j中的每個步驟中描繪了該示例中的搜索空間(典型的搜索空間將包括例如六維而不是二維)。在該示例中,最佳對應於當前數據的實際位置是位置2205。

在該示例實施方式中,在框2305,算法可以採取初始不確定性區域V0、數據集D(例如,幀深度數據)和兩個用戶指定的參數:M和δ*作為輸入。M指定粒子的數量,以維持每個δ鄰域。δ*指定δ的終值。一旦到達該值,改進就可以停止。在圖24的行2處,設置縮放因子變焦,使得在縮放期間,每個鄰域的體積減半(但是可以使用其它縮放因子)。

在圖24的行3處,在該示例算法中,基於初始體積與最終體積的比率(如果例如選取不同的縮放因子,則可以對其進行調整),計算迭代的數量N。S代表鄰域,R(·)代表半徑,並且Vol(·)代表區域的體積(例如,六維體積)。

如在圖24的行1中所描繪的,系統可以初始化鄰域的半徑,以被認為初始不確定性區域的半徑。於是,在框2310處生成覆蓋不確定性空間的初始鄰域。

圖24的行4-11描繪發生在算法的每個迭代處的步驟。例如,基於所實行的迭代的數量、鄰域的大小、應用的度量等,在框2315處停止迭代。在框2320,系統可以減少鄰域大小。例如,如在圖24的行5處所指示的,在每個迭代n處,通過將變焦因子應用於dn-1來計算dn。在縮放系列應用退火方法的情況下,在圖24的行6處,還可以假設δ*對應於τ=1的溫度,確定對應的溫度τn。

在框2325,系統可以確定鄰域中的抽樣分布(例如,其考慮在空間內的候選姿態)。例如,在圖24的行7處,系統可以從Vn-1中均勻地抽取粒子集確保每個δ鄰域所請求的M粒子的密度。

在框2330,系統可以基於測量模型,確定測量權重。本文中更詳細地描述了示例測量權重。例如,在圖24的行8處,系統可以通過在溫度τn處的退火數據概率對粒子進行加權,退火數據概率可以是例如由測量模型提供的冪次提升到1/τn的概率。在圖24的示例中,其根據行9上的修整函數,還可以用於歸一化權重,使得它們加到1(在一些實施例中,可能不期望歸一化權重,以使它們總計達1)。在一些實施例中,由測量模型提供的概率可以是負對數形式(即,不對負冪進行取冪,例如如在方程式14中的總測量誤差平方除以2),還被稱為能量,如此當使用浮點值時,允許在一些實施例中更好的數值穩定性。在一些實施方式中,代替對能量進行取冪且將其冪次提升至1/τn,能量可以乘以1/τn,並且概率權重可以被保持為負對數形式。

在框2335,例如基於在框2330處的測量模型確定,系統可以去除具有在閾值之下的權重的鄰域,例如,使全部粒子中的最高權重的修整因子倍。如果權重保持處於負對數形式,則在一些實施方式中,可以通過減去全部粒子之中的最低的負對數權重(例如,最高加權粒子將是最低能量粒子),並且確定其大於修整因子的負對數(例如,-log(f)),確定該修整因子。例如,在圖24的行9處,系統可以排除低概率區域(例如,低於閾值的區域)。

在框2340,系統可以識別用於在下一個迭代中考慮的鄰域。例如,在圖24的行10處,然後,系統可以為該迭代確定所得的子區域。

圖22圖形描繪這些操作。例如,在幾個迭代之後,系統可以在初始步驟2210中識別關於值2215的鄰域。然後,系統可以實行同程度密度覆蓋(圖24的行7),以識別點2220a、點2220b、點然後,在步驟2200c(圖24的行8),可以為每個點計算歸一化權重。基於這些權重值,可以修整這些點,使得僅2220a和2220b仍舊在步驟2200d處(圖24的行9)。更小的鄰域2225a和2225b(狀態2200e)可以出現在這些點和這些鄰域的併集2230(狀態2200f)周圍(圖24的行10)。然後,可以實行新的迭代。特別地,可以跨越併集2230計算同程度密度覆蓋(圖24的行7),以產生點2235a、2235b、2235c、2235d、然後,在步驟2200h,可以為每個點計算歸一化權重(圖24的行8)。基於這些權重值,可以修整點,使得僅點2235a、2235b和2235c仍舊在步驟2200i處(圖24的行9)。更小的鄰域2240a、2240b和2240c(狀態2220j)可以出現在這些點周圍。可以對鄰域取得併集,並且可以繼續迭代。

一旦已經實行N個迭代(但是其它停止條件可以被用於一些實施例中),在框2345處,系統就可以返回結果。例如,系統可以在圖24的行12和行13處準備輸出。這些行抽取最終粒子集,並且在溫度τ=1下計算權重。

31.姿態估計-姿態跟蹤-縮放系列-測量模型

在一些實施例中,圖24的行8處被用於計算歸一化權重的測量模型比由映射或跟蹤系統使用的動態模型更複雜。一般地,不可能確切地對傳感器建模。另一方面,該模型可以對估計的準確性且還對所要求的計算時間有巨大的影響。

應用於一些實施例中的測量模型可以具有常見結構。一般地,測量模型可以被計算為在總測量誤差ε上的高斯分布。例如,

其中η代表歸一化常數。如果掃描是3D點的集合D:={x1,…,xn},則總測量誤差ε是每個掃描點xn的各測量誤差εn的函數。一些實施例假設給定相機的姿態T,單個掃描點彼此獨立,然後ε是各誤差的L2範數

在現實中,不過,各掃描點可以不完全彼此獨立,並且L1範數可以給出更好的結果:

其中|.|代表絕對值。

可以在相機的局部坐標框架中表達每個單個測量xn。考慮當前相機姿態T,可以以世界框架yn:=T(xn)表達這些點。在一些實施例中,每個單個誤差被定義為與3D地圖上從測量yn到一些對應點C(yn)的距離的一些測量成比例:

其中σ是誤差的標準偏差,其可以取決於傳感器和地圖準確性。距離的測量d(.,.)可以是歐幾裡得距離,但是一些實施例代替地應用點到面距離。給定數據點yn、其對應的模型點C(yn)和在模型點處的表面法矢量vn,點到面距離被計算為點積的絕對值

d(yn,C(yn)):=|(C(yn)-yn)·vn| (18)

其中|.|代表絕對值,並且·代表點積運算符。特別地,如本文中在別處描述的,姿態更新和標準跟蹤過程兩者可以確定對應關係C(yn),然後,對應關係C(yn)可以被用於使用上面的方程式,確定距離。額外地,在一些實施方式中,對應的點C(yn)和法矢量vn可以被提供作為平面(a,b,c,d),在這種情況下,點到面距離可以被計算為:

d((x,y,z),(a,b,c,d)):=|a*x+b*y+c*z+d| (19)

其中(x,y,z)是yn的位置,並且(a,b,c,d)是對應的平面表示。在一些實施例中,全局定位過程可以代替地使用LFF數據結構,以確定距離(LFF可以直接提供距離值,而不需要明確計算分子「d(yn,C(yn))」)。就是說,

在界外值的存在下,一些實施例將εn的值定限額為最大值。如本文中解釋的,在不同的測量模型中可以不同地定義對應關係函數C(.)。

32.姿態估計-姿態跟蹤-縮放系列-測量模型-獨立的梁模型

圖25是如可以應用於一些實施例的一般描繪用於對應關係確定和用於PSA測量的測量度量的框圖。被認為在姿態2505處的捕獲設備可以為對應於點2510的給定的光線返回深度值。

獨立的梁模型(IB)是應用於用於對應關係的一些實施例中(例如,在EM中)的測量模型,其假設傳感器沿著單個光線(束)每個像素進行測量。例如,IB測量模型將評估圖25中的D1和D1+D2之間的差值作為結果誤差(即,D2)。由此,對應關係函數F可以使用相機投影模型CM來將模型點反投影到相機圖像中。然後,可以假設每個點yn以對應於落在相同像素內的任何一個模型點,並且每個點yn最靠近相機(例如,類似於圖11中的TSDF的更新)。在映射期間,該測量模型可以是最常用的。該測量模型計算可以很快,但是因為相機的最小的運動可以導致測量誤差的大幅躍升,所以該測量模型可以是很脆弱的。

IB模型可以具有考慮負信息的優點。正信息是關於存在障礙的信息,然而負信息是關於不存在障礙(即,自由空間)的信息。換句話說,IB不僅可以使缺乏建模的障礙的測量不利,還可以使太長且經過建模的障礙的測量(例如,在2540處的深度值)不利。例如,IB不允許測量光線穿過牆且與在另一個房間中的障礙相關聯。

33.姿態估計-姿態跟蹤-縮放系列-測量模型-似然欄位模型

由於對於PSA,脆弱的測量模型(例如,縮放系列)可以非常具有挑戰性,所以更平滑的版本可以被用於一些實施例中(單獨地或與其它模型結合)。一個這樣的模型是似然欄位模型(LF)。LF把每個測量的點yn放進與最靠近的模型點的對應關係中(依據歐幾裡得距離)。例如,在建模的障礙附近的測量可以被認為是更可能的,並且在自由空間中的測量可以被認為不太可能的。為了繼續圖25的示例,LF將評估報告的距離(點2510)和表面上的最近的點(點2515)之間的距離D3為誤差。

在一些實施例中,似然被建模為逐漸從障礙離開,並且可以被建模為平滑函數。在映射階段期間,該模型可以是有幫助的(並且在一些實施例中可以專門使用該模型)。一些實施例可以採用KD樹用於最靠近的模型點的快速查找。例如,在映射或跟蹤期間,可以生成和使用地圖或虛擬掃描的KD樹表示。在一些實施例中,LF模型忽略負信息。例如,允許測量穿過牆,並且與在另一個房間中的障礙匹配,如果出現這種情況,則給出更好的似然性分數。

34.姿態估計-姿態跟蹤-縮放系列-測量模型-似然柵格模型

在一些情形下,對於跟蹤,LF模型可太耗費時間(甚至當使用KD樹時),然而可期望仍使用更平滑的模型(例如,比IB模型更平滑)。如此,在一些實施例中,當完成映射時,映射系統可以預計算柵格數據結構(例如,在三維中),將關於最靠近模型點的信息儲存在每個柵格單元中。到表面上的最靠近的點的歐幾裡得距離可以被儲存作為浮點數(所得的數據結果在本文中被稱為LFF)。將認識到其它合適的數據類型。例如,可以儲存模型點的陣列和它們的法線。然後,可以儲存每個柵格單元中最靠近的點的整數指數。該所得的數據結構在本文中被稱為LFI(似然欄位整數)。

圖26是如在一些實施例中可以實施的似然欄位整數(LFI)數據結構的理想化二維表示。在該示例中,格網單元2615a和格網單元2615b的中心可以最靠近點2610b,點2610b在具有在點2610b處的法線2610a的表面上。類似地,格網單元2620a、2620b和2620c的中心可以最靠近點2605b,點2605b在具有在點2605b處的法線2605a的表面上。在LFI格網單元結構的視圖2600a中強調這些相同的格網單元,以方便理解。格網單元2620a、格網單元2620b和格網單元2620c被分配相同的整數42,並且格網單元2615a和格網單元2615b被分配相同的整數43。這些分配可以對應於陣列2630中的條目。例如,第42個條目可以包含對應於點2605b和法線2605a的位置值2625a和法線值2625b(與在表面上所指示的這些相比可以存在更多的點,例如,沿著表面處於離散間隔)。應當注意,表面內的點還可以與指數相關聯。

圖27是如在一些實施例中可以實施的似然欄位浮點數(LFF)數據結構的理想化二維表示。在該示例中,格網單元2720a的中心可以距最近的表面4.5個單位,並且格網單元2720b的中心可以距最近的表面2.5個單位。於是,LFF結構2700可以包含相應的格網單元中的這些值(這裡被突出顯示,以方便理解)。應當注意,表面內的點還可以與到表面的距離相關聯(應當注意,這裡提供的距離值僅用於方便理解,並且可以不是確切的)。

與LFI相比,對於查找,LFF可以更小和更快。由於雙重參考,所以LFI可以更慢,但是可以允許點到面距離計算。由於使用實際模型點,所以在靠近距離處,LFI還可以提供更準確的匹配。因此,在AR設備的常規操作期間,一些實施例使用LFI用於姿態跟蹤,並且使用LFF用於全局定位。

35.姿態估計-姿態跟蹤-縮放系列-測量模型-LF柵格的構造

對於每個新的地圖,LFF和LFI兩者可以僅被計算一次,並且可以剛好在地圖構造之後,建立LFF和LFI兩者。構造可以包括將全部模型點放進KD樹中,並且然後循環通過全部柵格單元,並且為每個柵格單元查找KD樹中的最靠近的模型點。在一些實施例中,這些KD樹查找可以花費大量時間,尤其是對於高解析度LFF和LFI。為了加快構造,一些實施例可以限制在每個柵格單元周圍將被搜索的最大半徑μr。

36.姿態估計-姿態跟蹤-縮放系列-測量模型-最大截斷距離

LFF和LFI兩者可以被用於為數據掃描點計算對應關係。如果數據掃描點距離任何模型點太遠,則或(a)根本不應該作出對應關係(相對於跟蹤算法,這被稱作本文中更詳細描述的界外值過濾),或(b)如關於測量模型本文中所描述的,應該給誤差值εn定限額。在任一情況下,在一定最大截斷距離之外,在一些實施例中,該數據點對應於哪個模型點無所謂。各種實施例設置μr為該最大截斷距離。在跟蹤期間,可以使用界外值過濾,並且所以對於LFI,μr可以相當小。

其實,μr可以僅需要大於本文中所描述的界外值閾值kdist。一些實施例將-1的值分配給每個LFI格網單元(對於每個LFI格網單元,沒有模型點在μr內),以指示這些格網單元不匹配任何模型點。在全局定位期間,可以使用LFF,並且μr可以被設置為在εn的計算中使用的誤差上限。如此,可以給格網單元值定限額為μr。

37.姿態估計-姿態跟蹤-縮放系列-測量模型-與TSDF比較

雖然TSDF和LF柵格兩者儲存類似的信息(例如,到障礙的距離),但是可以在不同的實施例中利用兩者之間的幾個區別。與TSDF相比較,似然欄位可以僅儲存正距離。再者,對於LF柵格,可以從每個柵格單元的中心計算該距離,然而對於TSDF,可以從柵格單元的拐角計算該距離。在一些實施例中,這對於速度可以是重要的考慮,因為在LFF中,可以簡單地查找距離,但是在TSDF中必須經由三線性插值計算距離。還有,可以在地圖已經完成之後計算LFF和LFI,並且如此,它們可以儲存正確距離,然而TSDF可以儲存到障礙的距離的近似值(有時相當不準確)。

38.姿態估計-姿態跟蹤-縮放系列-測量度量

圖28是如可以應用於一些實施例中的一般描繪用於評估潛在的姿態質量(例如,當在縮放系列中確定粒子權重[例如,行8]時)的測量度量(例如,點到面)的框圖。特別地,在當前姿態估計中的給定光線2830可以報告對應於點2810的距離測量D1。相對於模型,預期的距離可以是對應於點2835的D2。因此,相對於點2810,點到面誤差測量可以是對應於到點2835位於其上的平面的最近的交點的D3。

39.姿態估計-姿態跟蹤-縮放系列-技術

由於縮放系列在緊密的EM循環內部運行,所以很多實施例尋求使得縮放系列儘可能有效且儘可能準確。為此,下面詳述可以單獨或組合使用的各種技術。還鼓勵讀者參考圖24得到縮放系列算法的細節。

40.姿態估計-姿態跟蹤-縮放系列-技術-中心對準

通常很容易調整你直接持在你的手裡的對象的精細旋轉,與懸置在長杆末端的對象截然相反。對於點雲,「杆」的長度是點雲的中心和旋轉原點(例如,坐標框架)之間的距離。額外地,對於點雲對準問題,將兩個點雲的中心對準到相同的位置可以是有益的,因為這可以減少將需要被搜索的平移量。然而,用於點雲的最優「中心」可以取決於如何計算總測量誤差ε。如果點到點距離與L2度量一起使用,則最優「中心」可以是點雲的質心(即,一階矩)。在代替點到點應用點到面距離的實施例中,可以很難計算最優「中心」,但是在一些實施例中,質心可以仍然被用作很好的估計。如此,一些實施例可以使數據和/或模型點偏移,以使得它們的中心對應於旋轉原點(例如,它們的相應的坐標框架),然後將該偏移合併回到總對準變換中。額外地,一些實施例可以將數據和模型中心對準,這可以例如通過在運行PSA之前調整變換的位置分量來完成,例如,在由粒子表示的置信度的情況下,全部粒子可以被偏移相同的偏移量;或全部粒子可以被偏移,使得它們都與模型中心對準;或一個具體粒子可以被偏移,以與模型中心對準;或可以添加新的粒子,以與模型中心對準,並且具有預測的姿態的取向。

圖29是如可以在一些實施例中實施的與對幀和/或模型進行旋轉原點調整相關聯的益處的可視化。在面板2900a中描繪了樸素法,在樸素法中,在預測的姿態2950的應用之後深度幀數據被直接應用於姿態搜索方法,而在面板2900b中展示了如參考本文中的一些實施例討論的涉及中心對準的更複雜的方法。如所例示的,預測的姿態2950已促使深度幀數據更靠近對應的模型點,但是需要額外的旋轉和平移,以適當地使幀數據與模型匹配。

特別地,如在初始情況2905a中所指示的,在預測的姿態2950的應用之後,數據坐標框架仍舊低於對應的模型點,並且相對於對應的模型點進行旋轉。如果幀數據被提交給PSA,用於以該形式進行分析,則旋轉2925a和平移2925b將是必要的,以將模型和幀數據對準。可以在PSA內實行旋轉和平移操作2905b、2905c兩者(雖然這裡單獨描繪了旋轉和平移操作2905b、2905c,以方便理解,但是將理解,搜索6維姿態空間的PSA可以一起進行這兩個確定)。

初始地,在情況2905a中,幀數據在到對應的模型點的相對短平移距離內。然後,適當地對數據進行取向所要求的相對於相機原點的額外的旋轉2925a引入額外的大的平移2925b(超過初始的相對短的平移距離),PSA將還要識別額外的大的平移2925b。要求PSA識別這樣的總移位可以阻礙速度和/或質量,PSA以該速度和/或質量識別改善的姿態。

相比之下,在情況2900b中,數據坐標框架在被提交給PSA之前,被重新定位到數據的中心。特別地,在預測的姿態的應用之後的初始情況2910a中,幀數據再次低於對應的模型點,並且相對於對應的模型點進行旋轉。在步驟2910b,深度數據的局部坐標框架可以被重新定位到深度幀數據的一階矩2955。如所指示的,在重新定位之後,深度值中的一些深度值相對於局部原點指向所有的方向。就是說,例如,在捕獲之後,深度數據可以初始地僅具有+z分量,但是當原點被重新定位到質心時,一些深度數據點可以具有-z值。在步驟2910c,在一些實施例中,然後深度幀數據可以自身被偏移,使得深度幀數據的一階矩與對應的模型點的一階矩(供選擇地,虛擬掃描的一階矩,或模型的一部分等)相一致。

然後,PSA可以被應用於該經處理的深度幀數據。特別地,PSA可以識別具有旋轉2930a和平移2930b分量的姿態(再者,雖然這裡單獨描繪了旋轉和平移操作2910d、2910e,以方便理解,但是將理解,搜索6維姿態空間的PSA可以一起進行這兩個確定)。與2900a的PSA搜索不同,當對平移中的差異求總時,2900b的PSA搜索不需要之間進行區分。因此,在2900b的方法而不是2900a的方法下,由例如縮放系列PSA算法的相同的計算工作量可以產生更好的姿態確定。將認識到,在PSA識別適宜的調整之後,調整的逆調整可以加上必要的變更應用於估計的姿態,以識別改善的姿態確定,用於輸出。

41.姿態估計-姿態跟蹤-縮放系列-技術-轉換半徑

一些實施例還採用轉換半徑R用於馬氏距離以在狀態空間中使用(參見本文中在別處(例如,在具有數字標識符#27的部分和任何對應的子部分中)的mar-R單位的討論)。再者,最優半徑可以很難為點到面度量進行計算。然而,標準偏差和數據點雲的最大半徑的一些線性組合可以被用作近似值。例如,給定中心點,可以定義點雲的最大半徑為從中心到雲中的任何點的最大距離。在一些實施例中,除了或替換標準偏差,可以使用方差或其它數據點雲特徵。

42.姿態估計-姿態跟蹤-縮放系列-技術-粒子限制

一些實施例可以由跟蹤器以適時方式把姿態估計的生成區分優先次序。在這樣的情況下,可有有助於限制縮放系列將考慮的粒子的數量。在修整步驟期間,這可以在縮放系列內部完成。除了常規修整之外,系統可以基於處於降序的權重,對粒子進行排序。然後,系統可以僅保留第一Nss數量的粒子,同時修整掉其餘的。Nss可以是可以學習的另一個縮放系列參數。

43.姿態估計-姿態跟蹤-縮放系列-技術-柵格和散列樹

圖30是如可以在一些實施例中實施的縮放系列算法中使用的在假想的二維宇宙中用於方便高維算法的理解的示例同程度覆蓋密度算法的圖形化描繪-該圖還描繪如可以應用於一些實施例的柵格散列。如在狀態3000a中所描繪的,多個鄰域可以在考慮中(並且鄰域不需要都進行連接)。同程度覆蓋密度算法可以通過鄰域迭代,以生成點的新的群體。

例如,在狀態3000b中,可以用點(由小圓反映的)填充鄰域3005、忽略尚未考慮的其它鄰域(例如,鄰域3010)的邊界。在狀態3000c中,可以隨機地用點(由小圓反映的,然而由三角形反映用於鄰域3005的先前的點)填充下一個鄰域3010。然而,將鑑於先前考慮的鄰域(即,鄰域3005),來考慮鄰域3010的點。就是說,在狀態3000d,去除落入先前考慮的鄰域(即,鄰域3005)內的鄰域3010中的這些點。在狀態3000e,過程可以繼續,隨機地填充鄰域3015,並且然後去除出現在先前考慮的鄰域3005、3010中的點。

在縮放系列中的同程度密度覆蓋過程期間(參見,例如,圖24),一些實施例從舊的大小N的集合{Si}生成新的粒子集合X。在該過程期間,系統可以重複地檢查是否新生成的粒子X落進第一i-1個粒子{S1,...Si-1}的任一個δ鄰域中,其中i從1增加到N。如果系統對全部之前粒子{Si}進行迭代,則計算複雜性變成O(N2)。一些實施例可以通過使用本文中所考慮的被稱為柵格散列和柵格樹的兩個具體數據結構中的一個,將該複雜性減少為在O(N)和O(Nlog(N))之間。

首先,系統可以將狀態空間(例如,全部可能的相機姿態的6D空間)劃分為格網單元的柵格(例如,柵格3030)。格網單元尺寸可以是δ鄰域的相應的尺寸的某因子f倍(可以與其它跟蹤器參數一起學習用於f的最優值,但是一些試驗已經指示在1和8之間的最優值)。例如,假定,粒子S∈{Si}落進柵格單元C中。C的整數坐標變成多維指數,這允許S被儲存在散列或樹中。對於散列,整數坐標的元組變成用於整數元組到庫的散列圖的密鑰,每個庫包含一定數量的粒子。在圖中,例如考慮鄰域3025的迭代將僅考慮其相交的格網單元,即單元格網3030a-f。如此,將不需要考慮例如與鄰域3005相關聯的點,即使這些點是先前為鄰域3005生成的。

對於樹,一些實施例將全序強加在整數元組上。然後,C的整數坐標可以變成用於庫的有序樹的查找密鑰,其中每個庫包含一定數量的粒子。

在同程度密度覆蓋中,當i增加以包含來自{Si}的額外的粒子時,系統可以將該粒子添加到柵格散列或柵格樹。應當注意,可以有多個粒子被添加到相同的庫。為了測試是否新生成的粒子X落在任何之前δ鄰域{S1,...Si-1}內,一些實施例檢查與X的鄰域相交的全部柵格單元。相交格網單元中的每個相交格網單元對應於散列或樹中的庫。對於在這些庫中的每個庫內的每個粒子,系統可以檢查其是否落進X的δ鄰域中。如果對於全部相交庫中的全部粒子該測試結果是否定的,則X不在任何之前鄰域{S1,...Si-1}中。應當注意,在柵格散列和柵格樹操作期間使用的距離度量可以是在本文中(例如,在具有數字標識符#26的部分和任何對應的子部分中)更詳細描述的M步驟中討論的馬氏距離。

44.姿態估計-姿態跟蹤-跟蹤器參數學習

跟蹤器參數學習概念類似於在本文中(例如,在具有數字標識符#15的部分和任何對應的子部分中)更詳細討論的數據驅動映射器參數學習。各種實施例收集一組代表性數據,計算地面真值,定義誤差度量,並且然後通過調整跟蹤器參數值使誤差和計算時間最小化。

45.姿態估計-姿態跟蹤-跟蹤器參數學習-訓練數據

幾種類型的數據可以被收集用於跟蹤器學習,並且每種類型可以具有其自己的地面真值和誤差度量的理念。一些實施例保持AR設備靜止,同時收集一組數據,並且獲得靜止日誌。雖然相機的真正姿態不是已知的,但是系統仍可以知道其不移動,並且如此,幀到幀姿態差值應該是零。這構成一種類型的訓練數據,在本文中被稱為「靜止訓練數據」。

系統還可以收集常規(動態)數據日誌,並且使用大量資源和計算時間計算相機軌跡,以獲得儘可能很好的估計。然後,該估計可以被處理為用於該數據日誌的地面真值。這構成第二種類型的訓練數據,本文中被稱為「緩慢而徹底」訓練數據。即使系統不知道真正相機軌跡,系統也可以通過在相同的數據日誌上運行其兩次,專注於減少跟蹤器的方差。然後,系統可以計算跟蹤器為每個幀產生的兩個姿態之間的差值,例如,每幀方差。這可以提供第三種類型的訓練數據,在本文中被稱為「方差訓練數據」。然後,全訓練集可以被創建為三種類型中的一個或多個的組合(例如,加權組合)。

46.姿態估計-姿態跟蹤-跟蹤器參數學習-誤差度量

每種類型的訓練數據可以與其自己的誤差的理念相關聯,可以在每幀基礎上定義其自己的誤差的理念。對於靜態日誌,幀誤差可以是與恆等變換(例如,與先前幀)的姿態改變的偏差。對於緩慢而徹底數據,幀誤差可以是幀姿態與為該幀估計的地面真值姿態的偏差。對於方差訓練數據,幀誤差可以是由跟蹤器的兩個單獨的運行為該幀產生的兩個姿態估計之間的差值。可以以MAR(例如,MAR-1)為單位計算姿態之間的差值。然後,為了組合來自全部訓練數據的誤差,系統可以取得例如全部幀誤差的平均值、中值或最大值,以獲得訓練誤差。

47.姿態估計-姿態跟蹤-跟蹤器參數學習-優化目標

一些實施例可以尋求使兩個屬性:訓練誤差和每幀(平均、中值或最大)計算時間最小化。有幾種可能的優化目標。一些實施例可以通過使這兩個屬性的加權和最小化,尋找誤差和計算時間之間的折中。一些實施例可以將計算時間固定為期望的(最大)值(例如,33ms),並且然後使誤差最小化。或一些實施例可以將誤差固定為期望的準確值(例如,2毫-mar-1),並且然後使計算時間最小化。

48.姿態估計-姿態跟蹤-跟蹤器參數學習-學習

給定具體優化目標,系統現在可以通過調整它們的值且再評價訓練集,來學習全部跟蹤器參數的最優值。優化程序可以開始於用於全部參數的合理值(例如,人工設置的),並且可以實行爬山搜索。

49.姿態估計-姿態跟蹤-全局定位和故障恢復

全局定位估計相機在地圖上的姿態。其可以在AR操作期間實行,以初始化跟蹤器,跟蹤器需要在剛剛開始或每當其崩潰時被初始化。與跟蹤器不同,全局定位可以處置當關於相機姿態沒有初始信息是可用的情況。當可以有非常大的空間體積(例如,整個地圖)要進行搜索和全部可能的相機的取向時,這可以更具有挑戰性。另一方面,因為跟蹤器可以改進由全局定位產生的姿態估計,所以全局定位不需要與跟蹤器一樣準確。

可以為單個數據幀實行全局定位,並且如此,可以沒有運動且對動態模型可以沒有需要。系統可以使用在本文中(例如,在具有數字標識符#34的部分和任何對應的子部分中)更詳細描述的LFF測量模型。該模型可以很快和平滑,但是可以不與其它測量模型一樣準確。系統還可以將εn的值限額為某個最大值,以改善在界外值的存在下的性能,如本文中(例如,在具有數字標識符#31的部分和任何對應的子部分中)更詳細描述的。此外,系統可以顯著地對數據點進行二次抽樣:例如,對於全局定位≈100點對比對於跟蹤器≈100,000點。可以使用縮放系列實行全局定位,縮放系列可以能夠有效地搜索非常大的空間體積。

圖31是如可以在一些實施例中實施的例示示例故障恢復過程的流程圖。在框3105,系統可以將反映需要實行全局定位的標誌「全局_Loc」設置為假。在框3110,例如,在AR標準跟蹤期間,系統可以接收下一個幀。在框3115,系統可以確定是否有太少的合適的深度點(用該深度點實行確定)。如果有太少的點,則一旦接收到充足的幀,在框3120,系統可以更新全局_Loc標誌,以反映對實行全局定位的需要(該示例描繪如開始於框3120以反映會話的初始化也使用全局定位的過程)。如果在框3125,標誌為真,則系統可以直接前進到框3145,準備用於全局定位的幀。

如果沒有設置標誌,則在框3130,系統可以實行標準跟蹤以確定最終姿態。在框3135,如果用於姿態的對應關係是符合要求的,且姿態和IMU數據一致(例如,從最後一個幀捕獲幾毫秒之前,姿態不在建築物的相對端,並且姿態「向下」矢量與IMU「向下」矢量匹配),則系統可以繼續實行正常AR跟蹤操作,在框3140提供最終姿態作為輸出。

然而,如果例如有太少的跟蹤器故障檢測對應關係,或者IMU數據不與由標準跟蹤器估計的最終姿態一致,則在框3145系統可以準備幀的減少的版本(例如,對每10個值進行二次抽樣),並且在框3155將用於識別的減少的幀提交到全局定位系統。為了確定全局定位是否成功,系統可以使用全局定位故障檢測參數,以檢查界外值,或者系統可以首先將估計的姿態/置信度提供給標準跟蹤,用於改進,並且然後使用全局定位故障檢測參數,以檢查界外值。如果在框3160全局定位成功,則在框3165系統可以將新的姿態/置信度提供給標準跟蹤,用於改進。與此相反,如果在框3160全局定位沒有成功,則在框3170系統可以被動地通知用戶其在經歷誤差(其可以提供被動狀態消息和潛在指令),並且可以自動地(例如,而不要求用戶點擊「確定」或「重試」按鈕)繼續嘗試連續地從框3150接收幀。在一些實施例中,在任何時候,或在標準跟蹤期間,或如果設備「崩潰」或處於故障恢復(例如,繼續對連續幀執行全局定位)用戶可以能夠終止會話,從而引起姿態估計(和系統的其餘的)例如退出或進入待機模式。

50.姿態估計-姿態跟蹤-全局定位和故障恢復-故障檢測

為了知道何時重新運行全局定位,一些實施例檢測何時姿態估計器崩潰。例如,給定相機的姿態和數據的掃描,系統可以需要確定該姿態是正確的還是不正確的。這可以基於故障檢測界外值的百分比(基於例如跟蹤器故障檢測參數或全局定位故障檢測參數)來進行,故障檢測界外值是遠離地圖超過一定距離的數據點。對於跟蹤器,可以在全部二次抽樣的點上取得該百分比。對於全局定位,可以在全部數據點上取得該百分比。為了故障檢測的目的,一些數據結構諸如例如LFF或LFI可以被用於數據和模型之間的對應關係。

另一個故障模式是不充分的數據。當(例如,由用戶的手指)妨礙傳感器或傳感器太靠近一些障礙(例如,與傳感器的最小範圍相比更靠近)時,這可以發生。如果數據點的數量低於一定閾值,則運行全局定位或跟蹤可能是沒有意義的,雖然對於跟蹤,閾值數據可以更低。與全局定位能夠處置的相比,跟蹤器可能夠處置具有更少有效點的數據掃描。

還可以通過將向下矢量(例如,-z方向)與由IMU測量的重力矢量比較,檢測姿態估計失敗。兩個矢量的方向上的大的差異可以指示姿態是不正確的。

51.姿態估計-姿態跟蹤-全局定位和故障恢復-4DoF模型

一些實施例通過將相機姿態表示中的參數的數量從六個減少到四個,使得全局定位更有效。系統可以使用由IMU提供的重量矢量,以將參數減少為(x,y,z,α),其中(x,y,z)是如之前的笛卡爾坐標,並且α是圍繞垂直線(例如,由重力矢量近似的)的偏航角。由於IMU的不準確,所以4DoF表示對於跟蹤器可不是足夠準確的,但是其對於全局定位可以是足夠準確的。由於全部逐點估計量在估計的參數的數量上是指數的,所以可以用減少的狀態表示獲得大的提速。一些實施例可以通過藉助於例如使用IMU標註在局部坐標系中的什麼單位矢量將表示向下(例如,在世界坐標中的-z方向)來實施4DoF表示。然後,一些實施例可以修改同程度密度覆蓋算法,使得無論何時其對新的粒子進行抽樣,其可以將旋轉分量調整為最靠近的旋轉,使得局部坐標中的向下矢量與由例如IMU報告的矢量匹配。其它實施例可以代替地將縮放系列狀態修改為4維(例如,(x,y,z,α)),並且使用具有如由例如IMU確定的局部坐標中的向下矢量的4維狀態來生成全6DoF變換。

52.姿態估計-姿態跟蹤-全局定位和故障恢復-多個開始姿態

全局定位可以通過將全不確定性拆分為更小的不確定性體積,在多個處理器上被並行化。多個縮放系列估計器可以並行運行,一個用於更小的不確定性體積中的每個。在最一般的情況下,不確定性是整個地圖,所以系統可以使用數據日誌(由數據日誌建立地圖),以學習不確定性體積的很好的分割。可以由子體積的中心表示子體積,子體積的中心可以變成用於縮放系列的開始姿態。

日誌的第一姿態可以變成子體積的第一中心。然後,系統可以發現日誌中的下一個姿態(日誌中的下一個姿態超過遠離開始設置中的任何姿態一定分離距離),並且將日誌中的下一個姿態添加到開始設置。系統可以為整個數據日誌重複該過程,以獲得全組開始姿態。在全局定位期間,系統可以運行多個縮放系列估計器,一個開始於具有至少與分離距離一樣大的不確定性的開始姿態中的每個。

如此,在這些實施例中,現在估計過程產生姿態的多個估計,每個不確定性子體積一個估計。然後,系統可以將具有最少全局定位故障檢測界外值的姿態挑選為最終估計的姿態。

53.姿態估計-姿態跟蹤-全局定位和故障恢復-學習參數

除多個開始姿態之外,可以為全局定位學習許多其它參數。可以通過針對來自數據日誌的一大組數據幀,使計算機時間的每秒的成功定位的數量最大化,學習用於縮放系列的各種參數(包含最終不確定性δ*、每個δ鄰域的粒子的數量等)。如果系統使用數據日誌(由數據日誌建立地圖),則地面真值姿態可以是現成的。否則,可以或通過人工或通過緩慢而徹底縮放系列定位日誌的第一幀。對於日誌的其餘部分,系統可以從該姿態運行跟蹤器,以獲得很好的姿態估計。

用於全局定位故障檢測界外值的界外值閾值可以是特例。系統可需要學習用於全局定位故障檢測界外值的兩個參數(可以為跟蹤器故障檢測界外值參數實行類似的過程,或可以人工對它們進行設置):用於界外值百分比的閾值(kpct)和在其之外點被認為是界外值(kdist)的距離。系統可以學習給定數據掃描和相機姿態,將其分類為定位的或丟失的分類器。分類器可能會犯兩種類型的錯誤:將正確的姿態分類為丟失的和將不正確的姿態分類為定位的。第一類型可以被稱為錯誤否定,並且第二類型可以被稱為錯誤肯定。

可以如下構造肯定示例和否定示例的訓練集。可以收集訓練數據日誌,使得其包含很多的動態障礙(例如,走來走去的人、不在適當地方的對象等)。可以通過初始化第一幀(例如,通過全局定位和/或手動地)且針對日誌的其餘部分從該姿態進行跟蹤,確保姿態對準全部表現出正確的,來計算地面真值姿態。為了構造訓練集,對於訓練日誌中的每個數據幀,一些實施例可以從該組開始姿態運行全局定位(在本文中(例如,在具有數字標識符#52的部分和任何對應的子部分中)更詳細描述的),以獲得一組估計的姿態(例如,每個開始姿態一個)。額外地,如果在框3160中系統首先將姿態/置信度提供給標準跟蹤器,以在確定全局定位是否成功之前改進它,然後該組估計的姿態還可以被提供到標準跟蹤器,以改進用於該訓練集的這些姿態。對於以該方式發現的每個估計的姿態,如果該姿態足夠靠近地面真值(例如,在跟蹤器可以處置的不確定性內),則姿態可以被認為是正確的,並且被添加為肯定示例。否則,其可以被認為是否定示例。然後,系統可以為kpct和kdist選擇值,以使用於得到的分類器的錯誤肯定和錯誤否定的和(例如,加權和)最小化。

54.數據並行化技術

例如,在實時AR設備操作期間,在一些實施例中,跟蹤器的速度可以是重要的。然而,一些實施例想要實現實時性能,而不犧牲準確性。在一些實施例中,這可以通過例如跨越多個CPU和多個GPU核心使計算並行化來進行。該部分描述了用於跟蹤算法的不同部分的並行化技術。

55.數據並行化技術-數據準備

在圖21的行7中的數據準備步驟期間,系統可以尋求計算平滑法線。在可以計算平滑法線之前,系統可以需要使深度數據平滑。對於每個數據點p,系統可以將平滑的深度設置為在圍繞像素ρ的一定窗口(例如,像素窗口)中的深度值的加權平均值。可以忽略來自跨越範圍間斷點的點的貢獻(如在本文中(例如,在具有數字標識符#14的部分和任何對應的子部分中)更詳細描述的)。給定圍繞p的窗口中的點q,讓d深度是這兩個點之間的深度差,並且dpix是它們之間的像素距離。q的貢獻權重可以被計算為

其中N(.,.)代表零均值正態分布,並且表示被分別用於像素距離和深度距離的方差。

可以通過使每個線程處理數據點的子集,在GPU上完成深度平滑。一旦已經使深度數據平滑,系統就可以計算平滑法線。對於每個點p,法線可以被計算為p的鄰域(例如,左右對和上下對)之間的兩個矢量的叉積。如果p的四個鄰域中的任一個通過深度間斷點與p分離,則p可以被標記為無效的。

56.數據並行化技術-對應關係

可以在E步驟(圖21的行9)期間計算數據-到-模型對應關係。由於不同數據點的對應關係可以彼此獨立,所以該計算可以跨越多個線程通過每個線程處理單獨的數據點的子集被並行化。在一些實施例中,當在GPU上並行化時,數據結構的布局可以對性能有顯著影響。

可以如下變換LFI數據結構。每個模型點-法線對可以被儲存作為處於float4格式的兩個元組(x,y,z,0)和(nx,ny,nz,0)。數據點還可以被儲存作為處於float4格式的4-元組(x,y,z,0)。雖然適合於一些硬體設備,但是將認識到其它布置可以更適合於其它情況。例如,在一些架構上,儲存為float3的3-元組(x,y,z)可以證明更有效。供選擇地,在一些布置中,數組結構(SoA)表示可以更有效。為了將數據點儲存作為SoA,一些實施例可以儲存三個單獨的浮點數的數組,一個用於x,一個用於y,並且一個用於全部數據點的z坐標。

對於將LFI儲存為SoA,有幾個可能性。一些實施例儲存兩個元組數組(例如,為float3或float4),或儲存六個浮點數的每個坐標數組。

一組一對一數據到模型對應關係可以被表示為float4數組對:用於數據點的(x,y,z,0)和用於對應的模型表面的(a,b,c,d)。這裡,元組(a,b,c,d)表示根據模型法線取向且經過模型點的平面。與點和法矢量相比,元組(a,b,c,d)可以提供用於表示平面的更緊湊的方式。元組(a,b,c,d)可以表示由滿足方程式:ax+by+ca+d=0的點(x,y,z)構成的平面。

在該過程期間,數據云和模型雲還可以為中心對準的,如本文中(例如,在具有數字標識符#39的部分和任何對應的子部分中)更詳細描述的。可以以兩遍運行建立輸出數組:圖32是如可以在實施例中的一些實施例中實施的用於確定使用LFI數據結構與用於由姿態搜索算法使用的結構(例如,數組的結構)的對應關係(例如,串行或並行)的過程的流程圖。注意,該示例可以適於一些特定的系統,並且不同的優化的表示可以更適於其它系統。

在第一遍運行3290a中,系統可以循環通過全部數據點,並產生兩個新的數組:包含輸出數據點/模型平面對的一個(A),以及包含對應的模型點的另一個(B)。

系統可以通過迭代數據點3210,在框3215,將近期相機姿態應用於考慮的點。然後,在框3220,系統可以在例如LFI中定位對應的變換的數據點。在框3225,然後系統可以確定該數據點是界外值還是不是界外值。可以保持界內值的計數。在框3235,系統還可以保持全部界內值數據點的累計和以及全部對應的模型點的單獨的和。

在框3240,系統可以以(x,y,z,0)格式將變換的數據點記錄在數組A中。對於A中的模型平面,系統可以填寫(a,b,c,d):=(nx,ny,nz,0),其中(nx,ny,nz)是模型法線。在框3245,系統還可以將對應的模型點記錄在數組B中作為float4。對於界外值,在一些實施例中,代替刪除數據-和-法線,以及包裝或壓縮所得的數組(在一些架構中其可以是昂貴的操作),系統可以代替地將數據和法線設置為將不會影響所得的計算的「空」佔位符值(例如,結束相當於「noop」操作)。一些實施例可以通過在框3230處設置(a,b,c,d):=(0,0,0,0),完成此。在一些實施例中,系統可以不將數據和法線對提供到所得的數組A和B中。在第一遍運行3290a結束時,系統可以在框3250將界內值的和除以界內值的數量,以獲得用於與中心對準的數據云和模型雲的中心。系統還可以計算界外值的百分比,並且針對界外值百分比閾值kpct進行檢查。在框3250,如果界外值的百分比大於閾值,則系統可以撤出EM循環。

在第二遍運行3255、3290b期間,數據云和模型雲可以被移動到中心,並且可以把模型平面最後定下來。通過用於每個數據模型對應關係的框3260、3265、3270迭代,系統可以跳過處理界外值數據點。對於界內值點,在框3275,系統可以從數據點減去數據中心,將結果記錄在數組A中。對於界內值點,在框3280,系統可以從模型點減去模型中心。對於界內值點,在框3285,系統可以使用例如在上面步驟中獲得的模型點,為模型平面的(a,b,c,d)表示計算d。對於界內值點,在框3286,系統可以將所得的模型平面記錄在A中。在框3270,系統可以跳過界外值,系統可以確定點是否是界外值,例如對於其模型法線是零的點。如此,對於界外值,元組(a,b,c,d)可以保持(0,0,0,0)。

然後,所得的數組A可以被傳遞到搜索算法,例如,縮放系列,用於處理。注意,該過程可以不從對應關係對去除界外值。不這樣可以更有效。代替地,全部數據點可以被傳遞到縮放系列,但是由於界外值與(0,0,0,0)元組匹配,所以在縮放系列計算期間對測量誤差沒有貢獻。

對於一些架構,用於輸出數組A的最有效的表示可以是成對的float4的數組。對於一些架構,兩個float4的數組,或一個float3和一個float4數組可以更有效。在一些架構中,作為七個單獨的浮點數數組的SoA格式的表示還可以證明更有效。

57.數據並行化技術-縮放系列

在M步驟(圖21的行10)期間,可以使用縮放系列實行對準。對於縮放系列內的每個變焦水平,計算可以跨越粒子和數據點被同時並行化。如此,每個線程可以接收特定粒子和數據點的子集,以進行處理。線程可以將儲存在粒子中的姿態變換(或,例如,基於中心對準調整的姿態變換)應用於子集中的全部數據點,以獲得在世界坐標中它們的位置。然後,線程可以計算從每個變換的數據點到處於(a,b,c,d)格式的對應的模型平面的距離。然後,可以針對整個數據點的子集對該距離進行求和(例如,或作為平方和或絕對值的和),並且結果可以被記錄在用於該粒子和該線程的GPU存儲器中。一旦全部線程完成,所得的和就可以在GPU上求和精簡,以計算用於每個粒子的全部數據點的分數。

58.數據並行化技術-流水線

跟蹤器算法內的一些步驟可以獨立於來自先前幀的結果。這些步驟可以被流水線化,使得它們在之前幀已經完成之前開始執行。雖然該技術不可以減少每幀計算的延遲,但是其可以增加吞吐量。為了最好地使用可用的計算資源,一些實施例如下跨越CPU線程和GPU組織計算。

線程1:通過網絡接收幀數據

線程2:解壓幀數據

線程3:對數據進行二次抽樣

線程4(例如,GPU 1):為數據計算平滑法線

線程5(例如,GPU 2):估計幀姿態。注意,該線程可以取決於用於預測步驟的之前幀的結果。

線程6:通過網絡將姿態估計傳輸到其它設備。

注意,如果有很少CPU核心或GPU是可用的,則在一些實施例中這些線程中的一些線程可以組合(或重新分布)。

59.數據並行化技術-GPU參數

可以由架構的細節大大影響並行化的效率。特別地,對於將在GPU上被並行化的每個過程,可以有兩個需要被確定的參數。在GPU術語中,並行線程可以被組織成塊。由n線程代表每個GPU塊的GPU線程的數量,並且由n塊代表GPU塊的總數量(這還被已知為GPU柵格大小)。注意,對於將被並行化的不同的過程,參數n線程和n塊可以具有不同的值。對於每個這樣的過程,n線程和n塊的最優值可以是高度架構相關的,並且,如此,必須為每個具體架構學習n線程和n塊的最優值。

60.再現和增強現實

傳統上,增強現實(AR)被視為用一些額外的虛擬內容修改視頻流的一種方式。然而,各種所公開的實施例提供持續的AR,其中虛擬對象在時間和空間上與真實對象持續共存。在本文中這樣的虛擬對象被稱為持續的虛擬對象。

61.再現和增強現實-持續的增強現實

持續的AR將物理現實與持續的虛擬對象組合。持續的虛擬對象可以行為就像真實對象,例如,它們可以在每個時間點處佔據真實3D空間。甚至當用戶不再觀測它們(例如,通過用戶的逆轉)時,持續的虛擬對象可以存在。持續的虛擬對象就像真實對象可以遵守物理定律,例如,投擲的虛擬對象可以受重力、空氣阻力,以及與其它真實和虛擬對象的碰撞的影響。

持續的虛擬對象可以以與真實對象受真實世界對象和事件影響的相同的方式,受真實世界對象和事件的影響。例如,推動真實對象跨越長桌可以靠邊地將虛擬對象推動到該長桌上。如果你在虛擬角色前面關閉門,則虛擬角色可不能走過門口。相對於真實對象,持續的虛擬對象可以具有以下差異:虛擬對象用肉眼是不可觀測的。一些設備(例如,電話、平板電腦或護目鏡)可以被用於看見它們。不能用裸手感覺到虛擬對象。再者,一些設備需要用觸摸的感測感覺這些對象。當具體應用方便時,虛擬對象可以忽略物理定律。例如,大的虛擬的一件家具可以像羽毛一樣輕,或投擲的虛擬對象可以在飛行途中暫停。

雖然虛擬對象可以不對真實環境做出真實改變,但是它們可以做出虛擬改變。例如,強壯的虛擬角色可以能夠虛擬地毀掉真實的門。重構應用可以虛擬地去除分開兩個房間的真實的牆。類似地,將想像出其中虛擬對象與真實世界致動器相關聯的應用。例如,虛擬角色可以笑,並且處於房間周圍的揚聲器可以被校準,以實現笑聲,好像笑聲來自虛擬角色的位置。

62.再現和增強現實-再現

用戶可以使用觀看設備觀測虛擬對象,觀看設備例如智能行動裝置(電話或平板電腦)或頭戴式顯示器(HMD),諸如頭盔或護目鏡(例如,)。一般地,有兩種類型的顯示技術:a)相機饋送顯示器,其示出來自嵌入在觀看設備中的相機的實時饋送(在該情況下,虛擬和真實內容兩者都需要被再現);以及b)透視顯示器,其允許用戶直接觀測真實環境。在該情況下,僅虛擬內容需要被再現。該類型的顯示器有時被稱為光學顯示器。

除了電話和平板電腦之外,相機饋送顯示器的示例包括來自Oculus(現在是的一部分)的Oculus頭盔和來自的幾種型號。透視顯示器的示例包括GoogleEpson幾種型號,以及用技術的產品(例如,為了軍事目的)。對於任一種類型的顯示器,各種實施例依賴於附接到觀看設備的RGBD相機。在相機饋送顯示器的情況下,一些實施例假設將被顯示的饋送來自RGBD相機。使用本文中(例如,在具有數字標識符#26的部分和任何對應的子部分中)更詳細描述的技術,一些實施例可以在任何時間點估計在世界坐標中RGBD相機的姿態(並且從而直接或間接推斷觀看設備的姿態)。由此,對於每個虛擬對象,系統可以確定其應該如何被安置在觀看設備的視場內。然而,可能不足以簡單地在相機饋送的頂部上或在透視顯示器上再現虛擬對象。

圖33是如可以發生在一些實施例中的陰影變形和部分遮擋的示例屏幕截圖。圖34是如可以發生在一些實施例中的陰影變形和部分遮擋的示例屏幕截圖。如圖33和圖34中所示的,兩個視覺線索可以是特別有效的。通過真實對象對虛擬對象的部分遮擋,並且反之亦然;以及通過虛擬對象將陰影投射到真實對象上,並且反之亦然。對於這兩個視覺線索,考慮真實環境的3D形狀可以很重要。一些實施例可以獲得來自兩個源的形狀信息:(a)來自如本文中在別處(例如,在具有數字標識符#5的部分和任何對應的子部分中)所描述的建立的3D地圖,以及(b)來自RGBD相機。

63.再現和增強現實-再現-部分遮擋

為了達到適當的部分遮擋,各種實施例進行以下技術中的一個或多個。對於相機饋送顯示器,系統可以首先從觀看者的視角將3D環境(例如,或地圖、RGBD數據或組合)再現給OpenGL的深度和顏色緩衝器。然而,系統可以將虛擬對象再現(再次地,再現給兩個緩衝器),並且OpenGL將實行適當的遮擋(圖33和圖34)。對於透視顯示器,系統可以僅將3D環境再現給深度緩衝器(保持顏色緩衝器不變)。然後,系統可以將虛擬對象再現給深度緩衝器和顏色緩衝器兩者。這可以迫使OpenGL實行適當的遮擋,而不以顏色再現3D環境。如此,僅可視地再現虛擬對象,並且它們的一部分將被環境遮擋。

64.再現和增強現實-再現-3D陰影

對於在環境中對象的相對位置,陰影可以是另一個重要線索。簡單的AR技術可以假設有樓層平面圖,並且簡單再現平坦陰影。然而,在現實中,陰影常常通過環境的3D形狀變形,例如,如圖33和圖34所示。陰影還可以部分地被環境遮擋。於是,一些實施例添加兩種類型的陰影:a)虛擬對象將陰影投射到虛擬內容和真實內容兩者上;以及b)真實環境需要僅將陰影投射到虛擬內容上。一些實施例將不需要將真實對象的額外的陰影再現到真實對象上(因為這些已經存在於環境中),但是可以取決於應用實行調整和增強。

考慮到上面兩個因素,一些實施例可以使用標準3D圖形技術再現陰影。然而,在一些實施例中,在透視顯示器的情況下,僅將到真實環境上的額外的陰影再現到顏色緩衝器中,而不是環境本身。

65.再現和增強現實-再現-動態數據再現

為了再現的目的,3D地圖可以被表示為例如在具有數字標識符#23的部分和任何對應的子部分中構造的3D顏色網格。然而,地圖可以不包含關於動態障礙(諸如人、寵物或移動位置的對象)的任何信息。可以由RGBD相機捕獲該信息。

RGBD數據可以被再現為顏色點雲,但是這可以引起虛擬對象在數據點之間透過,尤其是如果從與相機比稍微不同的有利點再現視圖,或如果顯示解析度高於相機的解析度(參見圖35)。

如屏幕截圖3505a中所示,如果顯示解析度高於AR設備上相機的解析度,則背景和虛擬對象可以在RGBD數據的點之間透過。如屏幕截圖3505b中所示,通過增加點大小或使用大看板,可以修正透過效果,但是由RGBD傳感器的屬性引起的遮擋陰影可以仍然是可視的。如屏幕截圖3505c中所示,動態網格技術的應用可以修正這兩個問題。

圖36是如可以在一些實施例中實施的動態網格創建的一系列概念描繪。初始地3600a,潛在的頂點(包括例如頂點3605a、頂點3605b)可以被布置在用戶的顯示器的平面3625中的柵格中。頂點的數量可以與從AR設備處的相機接收的深度值的數量相同,或可以更少。給定深度幀,基於對應的深度值和生成的網格3610,可以遠離平面3625重新定位頂點,如在狀態3600b中描繪的。在該示例中,頂點3605a、頂點3605b已經向後移動(但是在一些實施例中,在網格的邊緣處的頂點可以留在平面3625的平面中)。這裡,網格描繪了洞穴入口的深度捕獲。如圖所示,對於被確定將在捕獲相機的範圍之外的這些值,平面3640可以形成於網格的後面。如本文中所描述的,網格可以通過由AR設備捕獲的對應的RGB圖像進行紋理映射。

系統現在可以將虛擬對象(例如,角色3630)放置在網格3610內。這可以促進現實陰影3615b和遮擋3615a的創建(儘管這裡從讀者的視角示出遮擋3615a,以方便理解,將認識到將相對於透過平面3625看去用戶的視角創建遮擋)。

對抗該問題的一種方式是再現更大的點(幾個像素每個數據點)或再現大看板,(例如,始終面向觀看者的小紋理化四元組)。這可以幫助防止在數據點之間透過的虛擬對象。然而,一些RGBD相機在數據內具有遮擋陰影(參見圖35)。換句話說,在範圍間斷點附近可以有缺失數據。大的點或大看板可無助於該問題。出於該原因,一些實施例通過將來自相鄰像素的數據點連接成三角形面,用RGBD數據構造3D網格。在範圍間斷點上,系統可以通過取得最大範圍的相鄰像素,填充深度數據。這可以創建範圍間斷點的實際邊界的很好的近似值。

66.再現和增強現實-再現-各種各樣的技術

額外的再現技術可以被應用來改善虛擬內容的現實性。

67.再現和增強現實-再現-各種各樣的技術-光照

可以通過將單定向燈放置在場景上方,獲得房間中光照的合理地很好的近似值。定向燈可以模擬遙遠的光源,來自定向燈的光線彼此平行。雖然在真實環境中,實際光源的配置可以是不同的,但是從該定向燈獲得的影子和陰影可以一般提供足夠好的近似值。即使沒有以與圍繞虛擬對象的真實對象相同的方向確切地繪製虛擬對象的陰影,但是用戶的大腦可以不會通過該差別而混淆。事實上,大多數人甚至不會注意到它。在很多實施例中,看起來通過環境適當變形的陰影表現出對於人類感知更加重要。

68.再現和增強現實-再現-各種各樣的技術-抗鋸齒

可以使用抗鋸齒技術(抗鋸齒技術幫助使得虛擬對象表現得更加現實),去除來自虛擬線和邊界的像素效果。

69.再現和增強現實-再現-各種各樣的技術-融合

考慮不同顏色的兩個對象之間的邊界。人眼和相機兩者將邊界上的顏色混合,所以對象表現得稍微融合。為了對虛擬對象模擬該效果,可以在再現真實內容和虛擬內容兩者之後,將較少的模糊量施加於整個圖像。在一些實施例中,該技術還可以充當對抗鋸齒的供選擇的方案。

70.再現和增強現實-再現-各種各樣的技術-視野深度

相機(和人眼)將察覺在如比特寫對象稍微更加模糊的距離處的對象。這被稱為視野深度效果。在一些實施例中,在缺少額外的處理的情況下,將始終僅如清晰獨立於它們距觀看者的距離繪製虛擬對象。為了對此進行彌補,一些實施例根據距觀看者的距離,通過增加的模糊量使虛擬對象模糊(圖37)。

71.規劃和物理現象

為了虛擬內容適當地對真實世界作出反應,一些實施例計算真實世界對虛擬對象的影響,並且允許虛擬角色相對於真實世界規劃他們的動作。例如,在任何給定的時間點,兩種類型的信息可以是可用的:3D地圖和最新數據掃描。

72.規劃和物理現象-碰撞檢測

一些實施例經由碰撞檢測提供在虛擬和真實世界之間的交互。可以使用標準技術計算虛擬對象之間的碰撞。然而,各種實施例採用有效的方式計算與可以是非常大的3D地圖的,以及與可以隨著每幀改變的最新數據掃描的碰撞。

73.規劃和物理現象-碰撞檢測-與地圖碰撞

對於3D地圖碰撞,一些實施例重新使用LFI數據結構。在場景更新期間,考慮從點A移動到點B的虛擬球。一些實施例可以LFI中查找AB段,並且通過LFI的柵格單元從A走到B。對於每個這樣的柵格單元,系統可以檢索對應的地圖點,並且計算從該點到段AB的距離。如果該距離小於球半徑(加上一些公差),則可以確定球已與該點碰撞。系統可以返回該點及其法矢量作為碰撞檢查的結果。

74.規劃和物理現象-碰撞檢測-與數據掃描碰撞

由於數據掃描隨著每幀改變,所以可太昂貴而不能建立用於其的專門查找數據結構。代替地,一些實施例利用深度點進入圖像像素中的布置。對於如上面的段AB,讓pA和pB為用於這兩個點的對應的像素。考慮用一些額外的填補刻印像素pA和像素pB的矩形R。在從相機到球的當前範圍處,填補量可以大於轉化為像素的球半徑。

系統可以巡視矩形R中的全部像素,並且計算從用於該像素的3D點到段AB的距離。如之前,如果該距離小於球半徑,則可以確定球已與該點碰撞。系統可以返回最靠近pA的碰撞像素pc作為球遇到的第一碰撞。系統可以通過使pc周圍的小窗口中的掃描數據平滑,並且然後取得鄰近像素(例如,上/下與左/右)之間的矢量的叉積,計算用於碰撞點的法矢量。

如果球太靠近,並且矩形R最終很大,則在碰撞搜索期間,一些實施例可以對點進行二次抽樣。

75.規劃和物理現象-牛頓物理學

通過上面的碰撞檢查,一些實施例實施牛頓物理學。在空氣中飛行的對象可以受重力且受空氣阻力的影響。基於對象的速度到碰撞法矢量的角度,對象可以從其它對象彈回。如果對象與接近水平表面碰撞(例如,從碰撞法線判斷)且其垂直於表面的速度太小,則對象可以在表面上滾動。一旦對象到達表面的後端,對象就可以跌落。

由於一些實施例檢查與掃描數據的碰撞,所以在這些實施例中通過用真實對象推動來移動虛擬對象是可能的。例如,只要相機能夠觀測該動作,用你的腳踢虛擬球就是可能的。不同於用戶的視野,全方位深度傳感器可以被用於一些實施例中,以提供延伸到用戶的即時視場之外的模擬。

76.規劃和物理現象-路徑規劃

在一些實施例中,虛擬角色可以規劃在真實環境中它們的動作。特別地,角色需要知道在該環境中如何導航。這可以使用路徑規劃來完成。在非常基本的水平上,路徑規劃包含考慮很多不同的軌跡,並且挑選最佳的一個。在一些實施例中,使用簡化模型,因為為所考慮的每個軌跡的每一步使用本文中(例如,在具有數字標識符#72的部分和任何對應的子部分中)更詳細描述的技術檢查碰撞可能計算太昂貴。

77.規劃和物理現象-路徑規劃-佔用柵格和高度地圖

一些實施例使用可以有助於導航任務的「佔用柵格」數據結構。佔用柵格可以用2D柵格表示能越過的表面(例如,地板),其中每個柵格單元被標記為或佔用或自由。然後,虛擬角色可以在自由單元上走,但是不可跨越佔用單元。可以通過估計樓層平面圖,並且然後將全部障礙投影到該平面上,建立該柵格。具有障礙的格網單元可以被認為是「佔用的」,並且其餘的可以被認為是「自由的」。僅考慮直接在地板上面的空間的水平片內的障礙可以是有用的。

可以由虛擬角色的高度決定該片的高度。高於該高度的障礙(例如,天花板)可以不會阻礙導航。在一些實施例中使用的稍微更先進的數據結構是「高度地圖」。高度地圖可以類似於佔用柵格,但是代替地用於每個柵格單元的二元佔用/自由狀態,高度地圖可以記錄柵格單元內(又可能在適於行走的表面上面的一定水平片內)障礙的最大高度。高度地圖可以允許計算坡度。如果坡度低,則表面可以被識別為適於行走的,否則表面不是適於行走的。如此,角色可以沿著斜坡走到將原本在佔用柵格地圖中被認為是「佔用的」高度。

可以剛好在3D地圖構造之後建立佔用柵格地圖和高度地圖兩者(如在本文中(例如,在具有數字標識符#5的部分和任何對應的子部分中)更詳細描述的)。可以如本文中(例如,在具有數字標識符#25的部分和任何對應的子部分中)更詳細描述的擬合樓層平面圖。然後,該平面可以設定零高度。然後,系統可以將3D地圖的水平片投影到該平面上。

78.規劃和物理現象-路徑規劃-A*

一些實施例使用A*算法實行規劃。所採用的成本可以是路徑的長度,但是其還可以把其遍歷路徑花費的工作量編碼,例如,與在平坦地區上走相比,沿陡坡走更困難。A*算法可以在A*-圖(由邊緣連接的節點構成的數據結構)上運行。節點可以表示空間中的點,並且它們之間的邊緣可以表示能越過的連接。每個邊緣可以具有相關聯的成本,其可以是節點之間的距離或把其遍歷該邊緣花費的工作量編碼的數字。可以由佔用柵格或高度地圖建立A*-圖。節點可以是柵格單元的拐角,並且邊緣可以是鄰近柵格單元之間的連接。對於佔用柵格,如果鄰域中的一個鄰域是障礙,則可以不連接該鄰域。對於高度地圖,連接成本可以取決於坡度。可以去除具有高於一定閾值的坡度的邊緣(例如,被認為是不適於行走的)。

79.規劃和物理現象-路徑規劃-動態避障

在一些實施例中,佔用柵格和高度地圖可以僅包含關於靜態3D地圖的信息。在AR設備操作期間,系統還可以從傳感器接收動態數據。該數據可以包含關於動態障礙的信息(例如,人和動物走來走去、門打開/關閉、對象從原處移動等)。因為在3D地圖中沒有反映動態障礙,所以A*實施方式可以是沒有意識到它們。因此,虛擬任務可能不能避免這些障礙。對於每個數據掃描,可以通過將每個所測量的點的高度與從3D地圖創建的高度地圖比較,將屬於動態障礙的數據點分割出來。可以僅考慮落入直接在地板上面的水平片內的數據點。

在一些實施例中,如果數據點超過在高度地圖上面的一定高度,則其可以被分類為動態障礙點。為了使A*意識到動態障礙,對於被分類為動態障礙的每個數據點,系統可以將所測量的3D點添加到A*-圖,例如,其可以修改A*-圖中對應的節點,使得通向它們的邊緣具有更高的遍歷成本。可以為每個新的數據幀實行該操作。因此,保持僅具有3D地圖信息的初始A*-圖的副本可以是有用的,使得系統不用必須「撤銷」改變。對於每個新的幀,系統可以製作初始A*-圖的新的副本,並且將數據點添加到新的副本。然後,對於下一個幀,系統可以再次從初始的開始。

80.規劃和物理現象-路徑規劃-跳躍

一些虛擬角色可以跳到真實世界對象上。可以與常規走不同地處置這些轉變。這些轉變可以不是基於節點之間的坡度,而是基於高度的差值。再者,跳躍的物理現象可以決定角色可以從哪裡跳躍到哪裡。通常,跳躍的長度遠大於鄰近節點之間的邊緣。如此,系統可以需要添加新的邊緣,而不是鄰近邊緣。為了添加這些轉變,一些實施例循環通過A*-圖,並且為每個節點確定角色可以跳躍到的全部其它節點。這些節點可以必須在某個最小/最大距離內,並且距當前節點具有一定最小/最大高度差。每個跳躍邊緣的成本可以遠大於走邊緣的長度的成本(甚至考慮坡度),因為與簡單的走相比,跳躍可以花費更多努力。

此外,跳躍邊緣可以需要被特別標記,因為系統可需要為該動作播放完全不同的動畫。

81.規劃和物理現象-路徑規劃-軌跡改善

雖然A*被保障產生最短的(或最低總成本)路徑,但是所得的軌跡可以不是完美的。由於空間離散化為柵格單元,所以路徑可以包括很多急轉彎(例如,90度或45度)。如此,遵循該路徑的虛擬角色將不會看起來現實。可以如下面所討論的作出許多改善。

82.規劃和物理現象-路徑規劃-軌跡改善-從牆推開

如果角色不會不必要地靠近牆和其它障礙(即使其給出最短路徑),則角色可以看起來更自然。這可以通過幾種方式達到。系統可以檢查路徑的每個點,並且然後如果該點太靠近,則移動其遠離障礙。在該操作期間,路徑點的移位可以是在垂直於在該點的路徑的方向的方向上。供選擇地或組合地,一些實施例可以修改佔用/高度地圖,並且將全部障礙擴大了角色的半徑(或一些其它期望的半徑)。然而,這可以使得地圖上的一些區域對於角色來說是難接近的,例如,在障礙之間的通道太窄的情況下。

另一個方法是修改A*-圖中的成本。系統可以逐漸地增加靠近障礙的成本,並且只要可能,就移動由A*產生的路徑遠離障礙。如果沒有其它方式到達目的地,則路徑還可能夠穿越窄的通道。在一些實施例中,可以使用這些方法的組合。

83.規劃和物理現象-路徑規劃-軌跡改善-視線

由A*產生的路徑可以非常不平滑。對於幾乎每個柵格單元,它們可以拐彎90度或45度。這可以是由於A*-圖的構造。改善路徑的一種方式是使用視線簡化。路徑可以是相繼點的集合{Pi}。可以如下構造新的路徑。開始於i=0,將Pi添加到新的路徑,並且然後相繼地檢查遵循Pi(例如,Pi+1、Pi+2,…)的點,以看這些點從Pi是否是可視的。發現k使得全部點Pk+1、…Pk,從Pi都是可視的,但是Pk+1不是可視的。將Pk添加到新的路徑,並且然後從Pk重複相同的操作。該過程可以產生具有更少的點的新的路徑,並且因而更少的轉彎。可以通過從Pi到Pk的光線投射,完成可視性檢查。如果光線沒有撞擊這兩個點之間的任何障礙,則Pk可以被認為是可視的。

然而,該路徑可以太靠近障礙,所以事實上,系統可以檢查角色的整個寬度可以從Pi通到Pk。如此,代替僅檢查用於障礙的光線Pi到Pk,一些實施例可以檢查內切該光線的矩形寬度w(並且與光線的方向對準),其中w是角色的寬度。

84.規劃和物理現象-路徑規劃-軌跡改善-自行車動態模型

視線簡化可以產生具有更少轉彎的路徑,但是轉彎可以仍然太急。為了使這些急轉彎平滑,一些實施例可以使用一些動態模型(例如,自行車動態模型)驅動角色。在自行車模型中,在每個運動更新期間,角色可以進行較小的轉彎,並且向前行進較小的距離d。在一些實施例中,角色可以僅沿著其前向矢量行進。可以由角色的最大允許的線速度vmax決定距離d,並且可以由最大轉彎速度wmax決定轉彎。如此

其中Δt是自先前更新經過的時間量。角色圍繞其轉彎的點沒有必要必須是角色的中心,例如,對於車輛來說更自然的是圍繞後軸的中心點轉彎。現在路徑點可以變成使用自行車模型角色遵循的航路點。

角色可以通過嘗試到達第一航路點開始,然後一旦其在距該點的一定閾值距離內,角色就可以朝向第二航路點驅動,等等。因為角色可以以其他方式在圍繞航路點的圓上結束驅動,閾值距離可以大於角色的轉彎半徑。轉彎半徑可以是

通過該模型,角色現在可以使轉彎平滑。

校準

為了解譯傳感器數據,一些實施例估計各種傳感器參數。這可以經由校準過程進行。一些實施例預計有可以發生的三種類型的校準:(1)RGB校準,(2)深度校準和(3)時間校準。下面依次討論了全部三種類型。

85.校準-RGB校準

投影RGBD相機可以由三個部件構成:RGB(例如,顏色)相機、紅外(IR)相機和IR投影儀。可以以RGB相機的局部坐標框架表達由RGBD相機產生的數據掃描。為了能夠將3D點變換為相機圖像,並且反之亦然,一些實施例估計用於相機投影矩陣CM(本文中還被稱為相機模型)的參數。這可以通過記錄檢測板的多個圖像,使用標準RGB校準技術來進行。

86.校準-深度校準

還可以使用檢測板(或類似的標記)校準深度傳感器。RGB相機模型CM可以被用於確定相對於RGB相機檢測板的姿態。這為落在檢測板上的圖像中的每個像素提供「真」深度τpix。從深度傳感器,系統還可以獲得用於該像素的測量的深度dpix。系統現在可以通過記錄在遠離相機不同距離處檢測板的很多不同位置,構造由(dpix,τpix)對構成的大的訓練數據集。使用該數據集,對於每個像素,系統可以運行線性回歸,以學習用於比率τ/d的線性近似spix(d):=apixd+bpix的參數apix和bpix,使得對於每個訓練對(dpix,τpix)

然後,在數據收集期間,系統可以將每個像素的深度校正為

其中dpix是初始測量的深度,並且是用於該像素的校正的深度。

87.校準-時間校準

在一些實施例中,每個設備(CPU、RGBD相機、IMU等)可以有其自己的內部時鐘。為了達到系統的最佳準確性,可以計數每一毫秒。於是,一些實施例使不同的時鐘同步。這些實施例中的一些實施例可以使CPU時間標準化,並且將全部其它時鐘轉換成該時間。

88.校準-時間校準-速度縮放

三個設備的內部時鐘的速度可以稍微不同。可以在很長的時間段(例如,幾個小時)內,通過比較傳感器對比CPU上的時間增量,計算速度縮放因子。對於剩餘的討論,假設速度縮放已經應用於將全部時鐘轉換為相同的時間標度。

89.校準-時間校準-時間偏移

具有它們自己的時鐘的兩個不同的傳感器的實施例可以尋求在這些時鐘之間進行轉換。可以順序發生下面列出的各種事件。

「傳感器事件」:對於給定的傳感器,假定A是真實世界事件(例如,相機快門關閉)實際發生的時間。然後,在時間B:=A+Δ,傳感器可以將時間戳標在新收集的數據上,並且可以將時間戳發送到CPU。讓C:=B+m是CPU接收消息的時間。一些實施例假設時間戳延遲Δ是未知數。消息傳輸時間m也是未知的,但是由於例如線程調度和其它OS事件,所以在一些實施例中,消息傳輸時間m不被認為是常數。

「傳輸時間」:雖然傳輸時間m變化,但是其可以具有穩定的平均值。換句話說,如果系統在一個時間點處將計算1分鐘內的平均值m,其將非常靠近系統將在另一個時間點處獲得的平均值。讓代表平均傳輸時間。的值也可以是未知的,但是為常數。讓代表CPU接收消息所估計的時間。

讓O是傳感器時鐘和CPU時鐘之間的時間偏移。然後,O可以是未知常數。雖然系統可以不能直接估計但是系統可以計算O+m的平均值。為了做到這些,系統可以在一段時間內收集數據。對於在該時間段期間接收的每個傳感器數據幀,系統可以具有兩個時間戳:傳感器時間和CPU接收消息的時間。可以由傳感器的時鐘給出傳感器時間,或可以基於幀速率和幀數量估計傳感器時間。通過對數據集中全部幀內這兩個時間戳之間的差值取平均值,系統可以計算的值。

在上面中,假設O是常數。如果兩個時鐘的標度可以確切地同步,則這可以是真的。不幸的是,在實踐中這並非始終可能,並且時鐘可以隨著時間相對於彼此漂移。出於該原因,一些實施例周期性地重新計算的值。

「不同的時鐘」:由於一些實施例具有兩個傳感器(RGBD和IMU),所以下標「r」將被用於以下項中,以指代RGBD傳感器事件,並且「i」用於IMU傳感器事件。在這裡所描述的示例實施例中,系統可以具有三個不同的時鐘,可以在三個不同的時鐘上表達這些時間。第二下標「r」、「i」和「c」這裡分別被用於代表RGBD、IMU和CPU時鐘時間幀。例如,CPU傳感器可以提供相對於UTC新紀元(1970年1月1日)的時間,而RGBD(或僅深度傳感器)可以提供自啟動以毫秒為單位的時間,並且IMU傳感器提供自激活(在計算機的啟動之後)以毫秒為單位的時間。如此,Arr是在RGBD時鐘的表示中的RGBD數據幀的時間,然而Arc是在CPU時鐘的表示中表達的相同事件。

「比較傳感器幀」:考慮具有兩個數據幀的示例情況:來自RGBD相機的Ar和來自IMU的Ai。一些實施例尋求確定在這兩個事件之間已經經過多長時間(例如,使得IMU數據可以與適宜的深度和/或紋理幀關聯)。例如,參考圖38,系統可以想要知道x:=Aic-Arc。這裡,Aic反映在其處在IMU設備處發生IMU數據捕獲的實際時間(以CPU的時間格式),並且Arc反映在其處發生RGBD數據捕獲的實際時間(以CPU的時間格式)。根據RGBD數據捕獲在IMU數據捕獲之前還是在IMU數據捕獲之後,項x可以是正的或負的。不幸的是,捕獲/跟蹤系統可以既不知道Arc也不知道Aic,所以可需要在可以是已知的其它量的項中表達Arc和Aic。由於事件Arr和事件Arc可以發生在相同的絕對時間上,所以都在相同的垂直線上。在該圖表中,偏移Or和Oi被示為在行進路徑中帶來的「成本」。

讓Δt:=Eic-Erc。就是說,Δt是CPU接收IMU消息所估計的時間和CPU接收RGBD消息所估計的時間之間的差值。通過遵循圖38中的圖表中從Arc到Aic的虛線路徑,我們獲得

o被抵消,並且如此存在

在該方程式中,Δt可以被表示為

如先前所提到的,每個o+m項可以是隨著時間通過觀測操作中的系統推斷的常數。如此,時間戳可以被用於推斷Δt。就是說,因為在一些實施例中方程式28中的全部量是已知的,所以可以確定Δt。然而,系統可以仍需要未知量

以從方程式27計算x。雖然c是未知的,但是其是常數。如此,c可以是或由手設置或從數據學習的參數。

90.網絡和通信

在一些實施例中,耗時計算可不會發生在AR設備自己上。代替地,數據可以被無線發送到例如或本地或在雲上的計算機伺服器。在用於映射的數據日誌記錄期間,數據還可以被發送到計算機伺服器,而不是儲存在AR設備上。為了經由網絡發送數據,其可以以更緊湊的形式進行表示。對於給定的數據掃描,代替地儲存3D點,系統可以僅儲存每個像素的z坐標。然後,在伺服器上,在一些實施例中,相機投影模型CM可以被用於計算3D點。另外,在一些實施例中,可以使用標準壓縮技術壓縮深度數據和顏色數據。

在實時AR操作期間,伺服器可以從AR設備接收掃描數據,針對每個掃描計算相機姿態,並且將其發送回AR設備。在映射期間,伺服器可以計算整個地圖,並且然後將其發送到AR設備。事實上,在一些實施例中,當可以在伺服器上實行跟蹤和全局定位時,大多數數據結構可以仍舊在伺服器上。在這樣的實施例中,為了顯示的目的,AR設備僅需要接收低解析度地圖。

91.用戶接口和應用

持續的AR具有眾多有用的應用。下面在該部分中描述了一些示例,但是其僅是可能的小樣本。雖然大多數今天的計算機應用(例如,經由遊戲、社交網站或甚至電子郵件)使用戶遠離真實世界進入到虛擬實境中,但是持續的AR實際上將用戶連接到真實環境。其允許用有用的信息豐富物理現實,而不是將有用的信息保持在與現實斷絕的單獨的地方中。

持續的AR還是與真實周圍環境和計算機應用交互的完全新的模式。事實上,與大多數消費者用於與今天的計算設備交互相比,其允許更自然的交互。出於該原因,持續的AR致使很多新的用戶界面(UI)技術,因為持續的AR不存在,所以之前很多新的用戶界面(UI)技術是不可能的。關於實際應用的示例很容易描述這些新的技術,但是這些技術中的很多技術可應用於很多其它用途。於是,以下示例被提供用於促進底層功能和應用部件的解讀,而不是簡單反映所公開的特徵的孤立實例。

92.用戶界面和應用-房地產

例如,在房地產背景下,各種所公開的技術可以對人如何購物、購買和租賃具有巨大的影響。甚至在將腳放在房屋內之前,用戶可以觀看幾個透視的房間,在這些房間中布置家具,並且從朋友和家人接收輸入。在座房產生意期間,這將節約大把的時間,並且幫助人作出更多明智的和深思熟慮的決策。

當用戶親自來訪這些房間時,當用戶走過,可以用用戶的自己的家具(虛擬)裝飾房間的AR表示(提供給他們在未來搬遷之後評估家具的安置的能力)。這還可以允許房地產經紀人展現具有虛擬家具的房間而不是租賃真正的空間(從而節省成本和時間)。對房地產經紀人的該部分所要求的投入可以是極小的。房地產經紀人可以僅需要用AR設備走過房間,以生成可以被公布在線的全3D顏色模型(圖39)。圖像3905是地圖的正投影、頂-底視圖。圖像3910是地圖的投影視圖。圖像3915是地圖的陰影網格視圖。圖像3920是地圖的彩色表面正常視圖。

在一些實施例中,還可以通過用AR設備簡單地圍繞每件走過,使用相同的映射技術,容易地建立用戶的家具件的3D模型(圖40)。而且,今天,可以基於3D CAD模型製造很多對象。這些模型一般沒有被分發給消費者,因為在過去對它們沒有需求。然而,當隨著3D列印、AR應用等增加了可訪問性,對家具和其它對象的3D模型的需要上升,將更頻繁地創建、交換和提供模型。用戶既可以使用所公開的技術生成它們的模型,又可以體驗第三方模型。

圖41是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用展示從環境的模型生成的示例頂-底地圖;

圖41是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用展示從環境的模型生成的示例頂-底地圖。在該示例中,用戶已經完成映射過程。3D模型可以被平移和/或旋轉以提供不同的透視圖,例如,頂底視圖。模型中的各種平面的寬度(例如,牆)可以被擠壓,以方便視圖,諸如這裡所描繪的這個。還可以實行其它模型後處理操作,並且可以生成模型變體。一些實施例可以背面剔除3D模型的多邊形,以不再現背對用戶的多邊形,來允許用戶從外面「向模型裡面」看去。其它實施例(或具有用於該選項的標誌的一些實施例)可決策不背面剔除多邊形,使得3D模型從全部或大多數角度展示完整的立方體。

圖43是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的該示例應用提供了用於評估模型內的關係的模型和工具的3D表示。

使用所公開的技術產生的3D地圖可以是計量準確的,允許用戶容易地測量房間的尺寸(圖42)。使用本文中(例如,在具有數字標識符#25的部分和任何對應的子部分中)所描述的地板提取技術,可以自動計算房間的建築面積。在頂-底正投影視圖中所展示的,與可以通常由手建立的樓層平面圖相比,3D地圖提供更多信息的樓層平面圖(參見圖42)。

如此,既可以測量如屏幕截圖4205中所示的地圖上的距離,又可以測量如屏幕截圖4210中所示的在實時走過期間的地圖上的距離。屏幕截圖4205的正投影頂底視圖可以製作非常多的信息的樓層平面圖。

在一些實施例中,3D地圖建立可以是計量準確的。圖43是如可以在一些實施例中實施的提供用於評估個人計算機上的模型內的關係的模型和工具的3D表示的示例應用的影像圖像;

93.用戶界面和應用-購物

圖44是在圖5的示例設備上運行的示例應用的影像圖像,如可以在一些實施例中實施的,該示例應用展示用於放置合成對象例如合成家具的光標。

圖45是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用展示用於替換或調整合成對象(例如,電視屏幕)的特性的工具欄。

各種所公開的持續的AR技術還可以在購買家具、電子產品、裝飾品、家用電器和其它家居用品之外進行推測。代替嘗試由手測量家具件將適配到其中的空間,用戶可以簡單地將該件家具的虛擬模型放置在環境中(為了例示,參見圖46、圖47和圖48)。

如屏幕截圖4605和屏幕截圖4610中所示,虛擬標記4615沿著環境(例如,地板和/或其它家具、椅子等)中的表面移動。可以由AR設備的運動控制標記4615。用戶可以作出選擇,並且如屏幕截圖4705中所示的,櫥櫃4715可以被放置在標記位置處。用戶可以按下並保持「抓取」按鈕,以改變櫥櫃的位置(例如,跨越地板平移櫥櫃)。約束可以是基於不同的家具,使得其重新安置自然地發生在環境中。例如,大的物品,像梳妝檯可以沿著地板平移,而可以允許桌面燈跨越桌子、椅子等的表面平移。在該示例中,單擊櫥櫃可以打開它,例如,所以用戶可以為門和抽屜判斷空隙,如屏幕截圖4710中所示的。(e)、(f)很容易在不同的電視大小之間切換,以看到哪一個將最適合。

如果該件家具具有可移動的部分(例如,衣櫃),則單擊衣櫃可以打開衣櫃,例如,以允許用戶判斷所需要的空隙量和該物品的易用性。當購買TV時,可能很難確切想像60』TV將佔據多大空間(以及一旦到位評估TV的感官質量)。通過持續的AR,用戶可以循環通過不同的大小、顏色、尺寸、形狀因子等的家具,以為房間挑選最優的一個,如屏幕截圖4805(更小的TV模型)和屏幕截圖4810(更大的TV模型)中所示。

為了觀看環境中的任何物品,一些實施例提供了界面,以容易地放置和操縱新的虛擬對象。特別地,可以在購物期間使用以下UI操作,而且以下UI操作可以容易地推廣到其它應用:

「物品放置」:一些實施例在例如放置在環境的表面上的屏幕的中心處顯示3D箭頭標記。移動AR設備自然地移動標記,並且其保持跟隨環境的3D形狀(例如,標記可以跨越其穿過的環境表面的法線進行重定向-在一些實施例中,箭頭可以代替地仍舊在固定的取向上)。按下用於特定的一件家具的按鈕可以將該件家具放置在標記的位置處。

「調整位置」:為了調整對象的位置,在一些實施例中,用戶可以按下「抓取」按鈕。只要按下該按鈕,對象就可以隨著AR設備移動,好像用戶實際上物理地持有該對象(例如,在距對應於對象位置的用戶設備的偏移距離處)。可以由環境決定對象的垂直放置,例如,在地板上移動衣櫃可以保持其在地板上,並且在櫃檯上移動TV可以保持其在櫃檯上。在一些實施例中,還可以由環境推動對象,例如,將衣櫃推到拐角中將對其進行拉直,並且使其與牆對準。

「旋轉」:當用戶在物品周圍走時,按下「旋轉」按鈕可以固定物品的位置,並且就地旋轉物品。一些實施例還像方向盤一樣旋轉AR設備,並且使該旋轉轉化成對象的旋轉。

「操作」:單擊放置的物品(例如,在傳感器視場內使用觸控螢幕或手勢,將使用本文中所公開的技術識別該手勢)可以允許用戶操作物品。例如,系統可以接通或斷開TV、打開或關閉衣櫃、打開/關閉窗簾等。一些實施例還允許更詳細的操作,例如,單擊櫥櫃中的抽屜將僅打開/關閉那一個抽屜。如果物品具有旋鈕和按鈕,則按下這些按鈕可以使得虛擬物品實行相應的功能,像真實物品將例如切換TV上的頻道。

「調換」:單擊購物列表上的不同物品可以用新的物品更換當前物品。這可以允許用戶容易地在不同的顏色或大小的相同物品之間切換。

「頂視圖」:為了輔助用戶安置物品,一些實施例顯示具有圍繞將被放置的物品的頂底視圖的較小的窗口(或全屏)。這可以類似於本文中(例如,在具有數字標識符#92的部分和任何對應的子部分中)更詳細討論的頂-底樓層平面圖,但可以僅捕獲較小的關注區域,使得用戶可以容易地看到對象能多麼適配於周圍環境。用戶的位置還可以被標記在頂-底視圖上,使得用戶可以容易地看到相對於對象和環境他的/她的位置。

「購買」:在一些實施例中,一旦用戶放置物品,他/她可以按下「加入購物車」按鈕,以開始物品的購買。

「遞送」:由於在購買時知道用戶想如何將物品安置在用戶的房子中,所以可能訂購特殊類型的遞送服務,該遞送服務將不僅遞送和組裝物品,還將像用戶想要的那樣確切地放置該物品。一旦機器人技術變得足夠先進,甚至用機器人來完成該種類型的服務是可能的,從而使在用戶選擇之後的全部過程基本上自動化。在一些實施例中,可以基於由用戶選擇的優選的取向和放置,調整用於一件家具的組裝指令(例如,家具不再需要是固定的結構,而且變體可能夠適應不要的用戶的居住設施)。

圖49是如可以在一些實施例中實施的例示家具標記的位置的(為了解讀,同時例示真實觀點和虛擬觀點)一系列概念框圖。如所例示的,AR設備4910的取向可以確定標記4905的放置。例如,基於通過AR設備用戶的視場的中心,標記可以被投影到環境表面上(例如,無論標記距用戶近還是遠,標記可以仍舊在AR設備的視場的中心中-如此行動裝置將移動標記)。因此,AR設備的平移/旋轉可以導致跨越樓層平面圖標記4905或虛擬家具4915(在選擇之後)的平移。

94.用戶界面和應用-室內設計和重構

在房地產和購物應用中的思想上擴展,持續的AR可以被用於房間重構和室內設計。通過放置新的家具和裝飾品,更換地毯和窗簾,改變牆和地板覆蓋物的顏色,房間可以得到完整的改造,這可以預覽而不用對環境進行單個真實修改。

在本文中(例如,在具有數字標識符#25的部分和任何對應的子部分中)更詳細描述的平面提取技術可以被用於提取地板、牆和天花板。如此,在一些實施例中,根據需要,立在地板(或其他水平面)上的對象可以彼此分割,並且可以移除或重新安置立在地板(或其他水平面)上的對象。例如,可以部分地或完全去除房間之間的牆隔板,所以用戶可以得到通過這些改變房間將看起來像什麼樣子的預覽。此外,給用戶示出在牆和其它障礙後面的對象的輪廓的「x射線」視力是可能的。

用戶可能能夠回答關於新的設計的許多問題,在沒有持續的AR的情況下,很難查明這些問題。例如,廚房的新布局方便嗎?將有足夠的空隙打開門嗎?通道太窄嗎?將感覺房間太小或太大嗎?不同顏色的牆或裝飾品將搭配得好嗎?今天,必須看地板或窗簾的小樣本,並且以某種方式想像在現實中其將像什麼樣子(近乎不可能的任務)。然而,重構常常花費很多錢,所以應該通過儘可能多的信息逼近這些決策。

系統的各種實施例可以被用於由專業人士和消費者兩者進行設計和重構。用戶可以創建和共享新的在線設計,並且與朋友和家人合作。可以通過用AR設備走過房間,預覽大多數有前景的設計,所以用戶可以看到新近重新設計的空間將看起來像什麼樣子。然後,系統可以進行測量,並且估計每個材料將需要多少來實施改變,並且還可以確定成本將是多少。如此,不同的應用可以被下載到用戶設備,以完成不同的環境評估。

95.用戶界面和應用-家庭組織和存貨

今天人在它們的家庭中積累大量物品,並且變得很難保持跟蹤大量物品。出於該原因,家庭庫存應用變得非常受歡迎。這些應用要求你或手動錄入物品的細節,或掃描在其包裝上的條形碼。這些應用還要求用戶手動設置在房子中每個物品屬於哪裡。3D地圖可以將大量的信息提供給系統,這些信息可以被用於極大地簡化和改善家庭庫存應用。系統可以分割和識別家庭或辦公室中的對象,而不用任何手動錄入。系統還可以記住在哪裡其最後一次看到每個物品,或哪個位置通常用於特定的物品。通過該信息,系統可以充當3D搜尋引擎,幫助用戶將物品定位在他們的家庭、辦公室、倉庫、實驗室、手術室等中。系統還可以保持跟蹤物品庫存,並且當快要把(例如,瓶裝水或紙巾)用完時,警告用戶。如此,掃描數據可以跨越設備進行合併(例如,員工和管理者單獨的時間掃描可以被用於評估環境)。另外,對於每個物品,系統可以幫助用戶識別環境中物品的地方,並且如此幫助用戶組織例如他們的房子。

一些實施例可以使用3D模型檢測何時物品不在適當的地方。通過該信息,系統可以例如鼓勵孩子打掃他們的房間,如圖50中所例示的。一旦孩子已經打掃他的/她的房間,應用(例如,在充當AR設備的平板設備上運行的)就可以獎勵「點數」(點數可以被用於例如開鎖遊戲或用於孩子的其它期望的特徵)。如屏幕截圖5005中所示的,一個玩具(泰迪熊)不在適當的地方。以紅色強調玩具和其所屬於的地方。例如,可以強調被識別為對應於地圖中的差別的像素。如屏幕截圖5010和屏幕截圖5015中所示,孩子正打掃她的房間。在打掃之後,如屏幕截圖5020中所示,系統可以認識到房間為乾淨的。例如,每天晚上孩子(或父母)可以用AR設備掃描房間。設備將強調不在適當的地方的全部物品。通過打掃這些物品,孩子可以賺取點數,之後,他/她可以使用點數以購買遊戲、玩具或其它物品。系統還可以經配置用於向孩子顯示廣告(例如,根據將玩具放回到其適當的位置,系統可以通知孩子現在可用的最新版本的玩偶)。由於孩子的房間的不止一個配置可以是可接受的,所以系統的實施例可以允許父母批准幾種配置。無論何時這些配置中的任一個達到期望的程度,房間就可以被認為是乾淨的。

為了實施打掃模式,一些實施例重新使用來自本文中(例如,在具有數字標識符#34的部分和任何對應的子部分中)更詳細描述的LFI數據結構。給定數據掃描,使用LFI數據結構,基於到地圖的距離,每個掃描點可以被分類為「經打掃的」或「不在適當的地方」。閾值(在閾值之外的掃描點可以被認為「不在適當的地方」)可以與本文中(例如,在具有數字標識符#14的部分和任何對應的子部分中)更詳細描述的範圍間斷點閾值相同。

一些實施例將「不在適當的地方」的點標記為紅色(例如,作為在用戶設備中展示的真實世界圖像上的覆蓋物)。然後,系統可以按接近度將紅色點拆分成連接的部件。可以過濾掉具有非常少數量的點的集群,例如,因為它們可以構成由傳感器誤差引起的界外值。剩餘的集群可以被認為不在適當的地方的對象。為了將房間的具體配置標記為可接受的,用戶可以將相機指向房間的一部分,並且按下「標記為乾淨」的按鈕。來自在數據掃描中發現的紅色集群的點可以被添加到LFI。然後,系統可以重新計算在圍繞這些新近添加的點的某些半徑內的LFI柵格單元。

96.用戶界面和應用-遊戲和娛樂

持續的AR對於遊戲和娛樂應用具有巨大的潛力。在該部分中,各種實施例的許多示例遊戲使用展示被提供用於這些遊戲中的幾個遊戲的細節。

許多討論的應用集中於無生命的虛擬對象。然而,系統可能也能夠嵌入有生命的虛擬角色。使用本文中(例如,在具有數字標識符#71的部分和任何對應的子部分中)更詳細描述的技術,這些角色可以意識到真實周圍環境,並且可以用與真實角色將用的相同的方式對真實世界事件作出反應。虛擬角色可以利用環境中其它傳感器(例如,用戶設備上的麥克風),以通過來自其它環境傳感器的感官輸入(例如,經由麥克風檢測的門口中另一個用戶的語音,轉彎和走到門口以確認存在其他用戶),將它們的反應聯接到3D模型。

與今天的遊戲相比,與這些角色的交互可以更自然。因而,持續的AR可以允許遊戲更加令人投入和逼真。代替將用戶帶到遙遠的虛擬世界,現在遊戲角色可以棲居在用戶的家庭。

97.用戶界面和應用-遊戲和娛樂-虛擬寵物

今天,雖然很多孩子真地想有寵物,但是很多孩子不能有寵物。持續的AR可以促進將虛擬寵物引入到孩子的房間中(例如,孩子對其過敏的寵物,或虛構的寵物,諸如獅子)。這些寵物可以確切地舉止像真實寵物,例如:在門處迎接用戶、當孩子睡覺時捲縮在床上、圍繞房子追球,和孩子玩捉迷藏等。照顧寵物也可以更加現實。交互可以是環境指定的,例如,用戶可以在廚房裡餵養寵物、在浴盆裡給它們洗澡等。由於系統允許與寵物更自然的交互,所以可以實施許多新的UI和遊戲技術。

「餵養」:為了餵養寵物,用戶可以將虛擬食物倒到廚房中的真實或虛擬碗中。

「寵物」:用戶可以通過按屏幕並沿著寵物的背部或肚子輕輕地行動裝置來敲擊寵物。在一些實施例中,在深度傳感器的視場內實行的手勢還可以在寵物處產生反應。在一些實施例中,多個深度傳感器(例如,在用戶設備的外部,固定在環境中)可以被集成,使得寵物可以在用戶設備的即時視場外部作出反應和進行操作。

「玩球」:在一些實施例中,用戶可以致力於用AR設備投擲球(在一些實施例中,可以代替地跟蹤球以適應用戶的杯狀手)。飛行中球可以遵守物理定律(例如,重力、空氣阻力),並且可以從環境中的障礙(真實和虛擬兩者)彈回。球還可以像真正球一樣在水平面上滾動。寵物可以捉住球且將它帶回到你(例如,對於網球),或其可以將球擊打回到你(例如,對於沙灘球)。為了將球擊打回到寵物,用戶可以用AR設備「擊打」球。

圖51是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示合成角色(例如,寵物狗)。

圖52是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示通過環境中的真實世界對象(例如,沙發)遮擋的合成角色(例如,寵物狗)。

圖53是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示在幾個可用的真實世界表面中的一個表面(例如,沙發座)上操作的合成角色(例如,寵物狗)。

圖54是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用就地展示實行用戶路徑跟隨算法的合成角色(例如,寵物狗)。

圖55是在圖5的示例設備上運行的示例應用的攝影圖像,如可以在一些實施例中實施的,該示例應用展示可以與真實世界環境的模型交互的額外的示例合成對象(例如,電視和網球)。

圖56和圖57包括如可以在一些實施例中實施的例示虛擬寵物遊戲的屏幕截圖的集合;

在屏幕截圖5605,虛擬寵物準備好要玩。用戶可以例如輕敲平板電腦屏幕,以投擲球。投擲的球可以受重力和空氣阻力的影響。球還可以從牆和其它障礙彈回。在屏幕5610,當投擲時,寵物可以嘗試捉住球。在屏幕5615,一旦寵物捉住球,它可以將球帶回到用戶。在屏幕5705,寵物可以將球返回到用戶的手。在屏幕5710,寵物還可以與具有不同物理動力學的球(例如,沙灘球)玩。寵物可以嘗試將球擊打回到用戶。在屏幕5715,寵物還可以跳上環境中的家具上。

「用之前的遊戲操作」:寵物可以通過立即跳下TV屏幕進入你的起居室,來自你的之前寵物遊戲(例如,在控制臺上)中的一個。例如,視頻遊戲中的角色可以「進入」TV,以實行在其中它們的功能(例如,在平臺遊戲中運行)。一旦基於TV的操作完成,角色就可以好像走出電視,以重返AR體驗。

98.用戶界面和應用-遊戲和娛樂-第一人稱射擊

在一些示例第一人稱射擊(FPS)遊戲應用中,用戶可以在他們的房間或辦公室環境中操作(例如,保衛房間免受入侵者)。這可以將添加之前遊戲中從未見過的程度或現實性和沉浸感。其還可以提供非常自然的動機,因為其是你自己的房間,所以你必須除掉壞人。

在示例實施方式中,在整個房子內,壞人可以誕生在不同的位置中,並且尋找用戶(例如,系統可以知道用戶的位置,但是AI邏輯可以實施獨立於該知識的搜索算法)。AI可以利用環境「追蹤」用戶。用戶可必須要跑、躲,躲避來自他們的炮彈,並且射擊各種對象。在同一房間中,多人遊戲可以協作地或競爭性地玩。為了最好地利用新近可用的現實性,可以實施許多遊戲和UI技術。

「瞄準」:在一些實施例中,用戶可以通過用AR設備瞄準來瞄準它們的槍。設備的中心可以顯示示出被作為目標的點的十字準線。輕敲屏幕上(或特定按鈕上)的任何地方可以再給武器填裝彈藥和/或武器開火。將認識到,在一些實施例中,可以使用外圍設備而不是用戶設備十字準線。

「子彈」:子彈可以(例如,通過操縱它們的對應的紋理,產生覆蓋物等)在牆、家具以及其它真實和虛擬對象中留下虛擬彈孔。來自子彈的殼可以遵循物理定律,並且在環境中不同的對象上彈跳,或在它們上滾動。

「血」:來自被殺死的敵人的血濺出物(和殘骸)可以遵循物理定律散布在整個房間,並且可以結束於你的環境中的牆、地板或其它對象上。濺出物還可以降落在AR設備的屏幕上。布工具可以被提供用於擦拭屏幕。血跡還可以被用於跟蹤虛擬角色。

「門」:在虛擬壞人前面閉鎖門可以防止他們移動通過門口。然而,他們可能夠虛擬地毀掉門的全部或一部分,並且然後進入房間。

圖58和圖59如可以在一些實施例中實施的例示妖精第一人稱射擊遊戲的屏幕截圖。

在屏幕5805,用戶保衛他們的房間免受妖精。武器可以通過AR設備的十字準線瞄準。輕敲屏幕可以引起武器開火和/或再填裝彈藥。在屏幕5810,妖精死亡引起血濺出物爆炸,其中的一些結束於相機鏡頭上。在屏幕5815,血濺出物降落在環境中,並且隨著時間漸漸消失。一些血濺出物仍舊在相機鏡頭上。在屏幕5905,彈孔仍舊持續地在環境中,並且遵循它的幾何形狀。在屏幕5910,可以在房子的不同房間中誕生妖精,但是在一些實施例中,無論用戶在哪裡它們都可以發現用戶。

99.用戶界面和應用-遊戲和娛樂-即時戰略

在即時戰略(RTS)遊戲中,用戶可以控制大組的小的角色(還被稱為部隊)。角色可以是士兵、平民、魔法生物、車輛等。目標可以是使你的人口增長和發展、建立強壯的軍隊,然後攻取其餘的遊戲世界。通常,需要聚集資源、研究新的技術、構造新的建築物,以及建立新的部隊。

RTS遊戲已經存在了幾十年,但是通過持續的AR,它們可以變得更加個性化,因為現在需要攻得的遊戲世界可以是你自己的房間。你可以開始於你的臥室,然後,一旦你的部落足夠強大,就攻得起居室且然後廚房。如每個好結果一般知道的,後勤贏得戰爭。你需要仔細規劃和保衛你的供應線,並且接管戰略位置(例如,你的房間的走廊),以保持這些資源安全。環境可以被用於戰略優勢,例如,桌子和椅子可以充當高地,在高地上放置飛彈部隊。來訪其它用戶的房間和辦公室的用戶可以交易地圖模型,以促進快速參與到彼此的環境中。這樣的應用可以引起用戶以全新的視角重新評估它們的家具(類似地,在賽車應用中,可以考慮在家具上實行技巧的可能性)。

對於RTS,有一些實施例可以實施的幾種UI要素:

「選擇」:用戶可以選擇單個部隊或建築物。這可以通過使AR設備指向將被選擇的對象的方向來進行,並且然後輕敲對象。按住額外的按鈕(例如,用另一個手指)可以允許從所選擇的對象的當前列表添加/去除對象。

「設置目標」:類似地,用於部隊或建築物的目標可以通過使AR設備朝向目標位置指向且然後輕敲以設置目標來進行設置。

「組選擇」:在很多現有的RTS遊戲中,可以通過左鍵單擊和拖動圍繞一組的矩形,選擇成組的部隊。對於持續的AR,AR設備可以朝向將被選擇的一組指向。然後,用戶可以按下兩個拇指,以代表矩形的頂點。可以選擇在相機前面的梯形內和在該矩形內的全部部隊。

「組快捷鍵」:用戶可以通過將選擇的組分配給快捷按鈕,記住選擇的組。之後輕敲該按鈕可以再次選擇相同的組。

「架空地圖(Overhead Map)」:整個3D地圖的頂-底視圖可以被用作具有或不具有戰爭迷霧的世界的架空地圖。可以在小的窗口中示出架空地圖,所以用戶可以單擊在該地圖上的位置,以為部隊設置目標。

100.用戶界面和應用-遊戲和娛樂-各種各樣的

以下是用於每個具有簡潔的描述:「City」的遊戲和娛樂的許多額外的想法的列表:組合真實和虛擬以建立橫跨整個房子的繁華的城市。具有火車的虛擬鐵路可以連接不同的地區,而不會使成人被他絆倒。人物可以是充滿生機的。飛機可以飛過環境。具有超能力的人物可以虛擬地鍛鍊它們的能力等。「名人留宿」:用戶可以使用玩具茶具,與迪士尼公主喝茶。公主可以例如睡在拉拔床上或在城堡帳篷中。「球遊戲」:與當前遊戲中的不同,球每次不再直接飛到你。像在物理球遊戲中一樣,你必須圍繞房間移動,並且在球到達其它遊戲者之前攔截球。用戶可以與其它虛擬或真實遊戲者結成一隊。這可以將新的真實度帶到虛擬球遊戲。「童話國度」:用戶可以在他們的房子的任何牆中製作新的窗戶,並且使其打開進入童話國度。他們可以看童話生物做它們的生意。供選擇地,用戶的整個房子可以被轉化為童話國度。「派對遊戲」:用戶或系統可以將虛擬對象隱藏在他們的房子周圍,並且有客人去尋找它們。「偵探」:用戶可以在他們的房間中揭開謎團。例如,用戶可以已從先進文明獲得專用設備。該設備可以允許他們看到用肉眼不可視的事物。用戶可以破譯在他們的牆上的神秘的符號、搜索線索、搜尋虛假目標、時間旅行到過去或未來以觀看在他們的房子的不同部分中的事件發展。「噩夢」:可以創建特殊效果,例如,天花板可以「隆起」,並且然後猛然打開以展示巨大的蜘蛛。「Rube Goldberg設備」:用戶可以在他們的房子中建立不可思議的機器謎題(合併真實部件和虛擬部件兩者)。然後,他們可以邀請他們的朋友來解決它,或僅炫耀它。重新設置謎題且清掃可以輕而易舉。「在你的房子中的」:真人大小的模擬人(例如,著名的歷史角色或受歡迎的角色)可以生活在你的房子中。為了娛樂的目的,一些可以充當個人助理,而其它的可以充當生活模擬器。「電影導演」:工具箱可以被提供用於製作具有動畫角色(例如,上面思想的擴展)的電影。其可以類似於其他創作工具,例如,Garage但用於拍攝電影。撰稿/控制角色去做用戶想要做的,並且可以提供對相機的控制。用戶還可以添加旁白和聲音。

101.用戶界面和應用-教育

如在本文中各種實施例中討論的,有很多持續的AR的教育用途。本文中(例如,在具有數字標識符#5的部分和任何對應的子部分中)更詳細描述的映射技術可以被用於掃描博物館和其它關注的位置。然後,用戶可以虛擬地來訪這些位置,或可以在他/她自己的房間中圍繞用戶重新創建這些場景。還可以捕獲犯罪場景,並且模擬或重演犯罪事件以驗證證人的陳述。基於物理的模型可以與模擬的和真實世界環境結合使用,以檢驗所提供的事件的過程。

通過持續的AR,教育可以變得更加令人投入。想像,如果例如Julius Caesar來到你的房子告訴你關於他的最偉大的戰鬥,如同小士兵的軍隊在你的起居室地板上重現戰鬥。或者,例如,Isaac Newton可以拜訪你,來教你關於牛頓定律,並且就在你的房子中給你示出實驗。如此,持續的AR可以允許你參加歷史事件和科學發現,而不是你僅是被動的讀者/聽者。

102.用戶界面和應用-廣告

持續的AR允許全新形式的廣告:現實廣告。例如,早上櫃檯上一杯熱氣騰騰的虛擬的咖啡可以激發用戶在她們上班的路上停在星巴克(StarbucksTM)近旁。難以辨認的杯子和其它用具可以具有標識和投影在它們的表面紋理上的實時廣告。在晚餐時間,用戶可以看到在他們的桌子上的令人垂涎的虛擬的菜餚。簡單地單擊菜餚可以足以使菜餚被遞送到用戶的家庭。

如果正確地進行,則該廣告可以對用戶非常有幫助。例如,當用戶走過他們的房子時,系統可以建議緊挨著他們的沙發的邊桌或用於他們的地毯的不同的設計。涉及虛擬人、動物或卡通角色的動畫廣告也是可能的。

103.用戶界面和應用-3D列印

圖60是如可以在一些實施例中實施的從環境模型生成的3D彩印玩具屋的攝影圖像。本文中(例如,在具有數字標識符#5的部分和任何對應的子部分中)更詳細描述的3D映射技術可以允許將被列印的建築物的縮小版本。小的桌子頂面物品以及跨越整個建築物的大規模環境可以被掃描、可選地被縮小,以及被列印。在一些實施例中,由映射器產生的3D網格可以被修改用於3D列印。相同的技術可以被用於大的和小的對象。建築物的3D列印的模型對於架構和重構可以是有用的。它們還可以充當玩具屋,其與孩子自己的房間是相同的。例如,參見圖61。

104.用戶界面和應用-數據挖掘

由於建立3D地圖可以是計算密集型的,所以在計算機雲(例如,大的處理系統的集合)上進行這個可以是最容易的。在該情況下,多個用戶的房間的3D模型可用於提供該服務的供應商。雖然用戶的隱私可以是優先級,但是總的說來可以挖掘包含在這些3D模型中的大量信息。例如,通過審查人的房間的常見顏色方案,當設計下一個小地毯時,小地毯製造商可以選定特定的調色板和圖案。家具製造商可以使用該信息,以指導關於最優家具尺寸的決策。如此,可以監測和記錄由用戶使用本文中所描述的應用作出的廣告和選擇,以促進隨後的分析。

有關於不同的對象如何空間分布在我們的房間中,以及哪些對象彼此緊鄰的大量信息。該信息可以被用於創建新的有用的家具件,將房間組織想法建議給用戶,建議可以對用戶有用的其它物品,和很多其它目的。

105.用戶界面和應用-機器人技術

本文中(例如,在具有數字標識符#5和#26的部分和任何對應的子部分(總的來說METL)中)更詳細描述的,映射和姿態估計技術對於很多機器人應用可以是非常有用的。如果RGBD相機(和可選地IMU)被安裝到機器人上,則METL可以被用於機器人感知,這允許機器人理解周圍環境。本文中(例如,在具有數字標識符#76的部分和任何對應的子部分中)例如為虛擬角色更詳細描述的路徑規劃技術可以同樣很好地用於機器人,如此,使得能夠進行機器人導航。今天,機器人應用的數量快速增長。機器人可以充當房間處的自動吸塵器、博物館處的機器人導遊、辦公室中的遠程監控機器人、自主車輛和甚至保安。

所有這些應用可以採用機器人感知和導航,並且可以極大地受益於METL技術。通過METL,機器人可以自動建立房間、博物館、辦公建築物和其它結構的3D地圖(例如,同時實行一些其它功能,諸如清潔)。然後,這些3D模型可以被用於向用戶展示教育、架構和其它目的。在例如具有數字標識符#92到#104的部分中討論的許多應用還可以受益於機器人的使用。例如,機器人可以為房地產應用(例如,具有數字標識符#92的部分)自動建立房間的3D地圖。機器人還可以幫助遞送和裝配在購物應用中購買的物品(例如,如在具有數字標識符#93的部分中所討論的)。機器人還可以幫助房間組織(例如,如在具有數字標識符#95的部分中討論的),例如,繼續監測房間以保持跟蹤對象在哪裡,並且甚至將對象自動移動到它們的正確位置。

106.在傳感器停機之後校準

有時在數據日誌記錄期間,可能碰到傳感器停機。可以由於各種原因發生傳感器停機:傳感器失靈、布線問題、OS延遲(或由於調換)等。傳感器停機很難由映射器進行應對,因為實質上相機瞬間從一個位置跳躍到另一個位置(可能很遠),並且沒有辦法從該跳躍中恢復過來。因而,在數據收集期間需要處置傳感器停機。當數據記錄工具(通過看傳感器數據時間戳)檢測到停機時,其警告用戶,並且提供用於從停機開始的地方重錄的方法。為了這樣做,一些實施例暫停記錄直到相機姿態已經恢復。為了輔助用戶將相機姿態對準,一些實施例顯示兩個圖像的混合:(1)在停機開始之前的最後一個圖像和(2)最新的相機圖像(參見圖62)。這允許用戶四處移動相機,直到兩個圖像對齊。一旦相機姿態與數據日誌所離開之處對準,用戶推動按鈕,以重新開始記錄。

圖62是如可以根據一些實施例實施的數據連接中斷之後應用的校準透明度的屏幕截圖。還可以例如在圖31的框3140處實行這些操作。

計算機系統

圖63是如可以被用於實施實施例中的一些實施例的特徵的計算機系統的框圖。計算系統6300可以包括一個或多個中央處理單元(「處理器」)6305、存儲器6310、輸入/輸出設備6325(例如,鍵盤和/或定點設備和/或觸控螢幕設備、顯示器設備等)、儲存設備6320(例如,磁碟驅動器)和連接到互連6315的網絡適配器6330(例如,網絡接口)。互連6315被例示為表示任一個或多個單獨的物理總線、點到點連接或同時通過適宜的橋、適配器或控制器連接的抽象概念。因而,互連6315可以包括例如系統總線、外圍部件互連(PCI)總線或PCI-Express總線、超傳輸或工業標準架構(ISA)總線、小型計算機系統接口(SCSI)總線、通用串行總線(USB)、IIC(I2C)總線,或電氣和電子工程師協會(IEEE)標準1394總線(也叫「火線」)。

存儲器6310和儲存設備6320是可以儲存實施各種實施例的至少一部分的指令的計算機可讀儲存媒體。此外,可以經由數據傳輸介質(例如,通信鏈路上的信號)儲存或傳輸數據結構和消息結構。可以使用各種通信鏈路,例如,網際網路、區域網、廣域網或點到點撥號連接。如此,計算機可讀媒體可以包括計算機可讀儲存媒體(例如,「非暫時」媒體)和計算機可讀傳輸媒體。

儲存在存儲器6310中的指令可以被實施為軟體和/或固件,以對(多個)處理器6305進行編程,以完成上面所描述的動作。在一些實施例中,這樣的軟體或固件可以通過從遠程系統通過計算系統6300(例如,經由網絡適配器6330)下載這樣的軟體或固件,初始地將這樣的軟體或固件提供到處理系統6300。

可以由例如用軟體和/或固件編程的可編程的電路(例如,一個或多個微處理器),或完全在專用硬連線(不可編程的)電路中,或在這樣的形式的組合中實施本文中介紹的各種實施例。專用硬連線的電路可以是例如一個或多個ASIC、PLD、FPGA等的形式。

附註

上面描述和附圖是說明性的,並且不被解釋為限制性的。描述了許多具體細節,以提供本公開的徹底的理解。然而,在某些實例中,沒有描述眾所周知的細節,以便避免混淆描述。另外,在不偏離實施例的範圍的情況下,可以作出各種修改。

本說明書中提及的「一個實施例」、「實施例」意味著結合實施例所描述的特定的特徵、結構或特性包含在本公開的至少一個實施例中。在說明書中各個地方中短語「在一個實施例中」的出現既沒必要全指同一實施例,也並非是與其它實施例互斥的單獨或供選擇的實施例。而且,所描述的各種特徵可能在一些實施例中而非其它實施例中被呈現。類似地,描述了各種要求,其可能是一些實施例的要求但不是其它實施例的要求。

在本公開的上下文和使用每個術語的特定上下文內,在本說明書中使用的術語在本領域中一般具有它們的普通含義。下面或在本說明書中的別處討論了被用於描述本公開的某些術語,以向實踐者提供關於本公開的描述的額外的指導。為了方便,可以例如使用斜體和/或引號強調某些術語。強調的使用對術語的範圍和含義沒有影響;在相同的上下文中,無論是否強調,術語的範圍和含義是相同的。應當理解,相同的事物可以以不止一個方式敘述。將認識到,「存儲器」是「儲存器」的一種形式,並且術語有時可以互換使用。

因此,供選擇的語言和同義詞可以被用於本文中所討論的術語中的任一個或多個,無論術語是否在本文中詳細闡述或討論都沒有被賦予任何特定意義。提供了某些術語的同義詞。一個或多個同義詞的敘述並不排斥使用其它的同義詞。包含本文中討論的任何術語的示例在本說明書中任何地方的示例的使用僅是說明性的,並且不旨在另外限制本公開的範圍和含義或任何例證的術語的範圍和含義。同樣地,本公開並不局限於在本說明書中給定的各種實施例。

在不旨在另外限制本公開的範圍的情況下,上面給出根據本公開的實施例的儀器、裝置、方法和它們的相關的結果的示例。應當注意,為了方便讀者,標題或副標題可以被用於示例中,其決不應該以任何方式限制本公開的範圍。除非另有限定,本文中使用的全部技術術語和科學術語具有與本公開所屬領域的普通技術人員通常理解的相同的含義。在相衝突的情況下,以本申請文件(包括定義)為準。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀