專利名稱:檢測多功能傳感器設備的運動的制作方法
技術領域:
本發明涉及運動捕捉系統,尤其涉及檢測運動捕捉系統中的運動。
背景技術:
運動捕捉系統獲得關于人或其他主體在物理空間中的位置和移動的數據,并可使用該數據作為計算系統中的某一應用的輸入。可能有許多應用,如出于軍事、娛樂、體育和醫療目的。例如,人的運動可被映射到三維(3-D)人類骨架模型并用于創建動畫人物或化身。運動捕捉系統可包括包含使用可見和不可見(例如,紅外)光的系統在內的光學系統, 運動捕捉系統使用相機來檢測視野中的人的存在。然而,這樣的系統受到可影響音頻和視覺性能的振動、顛簸、搖晃、以及其他移動和擾動的損害。需要用于檢測并對這些移動進行響應的技術。
發明內容
提供了一種用于檢測運動捕捉系統中的3-D深度相機的運動的處理器實現的方法、運動捕捉系統和有形計算機可讀存儲。這樣的深度相機例如被用來檢測用戶在視野中的移動,并將這些移動解釋成對運動捕捉系統中的應用程序的控制輸入。例如,用戶可作出手的姿勢來導航菜單、在瀏覽或購物體驗中交互、選擇要玩的游戲、或訪問諸如向朋友發送消息等通信特征。或者,用戶可以使用手、腿、或整個身體來控制3-D虛擬世界中的化身的移動。深度相機在跟蹤用戶時的性能可被與該深度相機所處的環境相關的各種源擾亂。 擾亂可包括振動,例如由于揚聲器/亞低音揚聲器、卡車、火車或飛機在附近經過、地震或打雷、對諸如深度相機所處的小船或輪船等交通工具的擾動、以及用戶移動,如在深度相機所處的房間內跳躍、跑步、以及玩耍。擾亂還可包括深度相機的非有意移動,如在用戶或家養寵物意外地掃過并移動了深度相機的情況下,以及有意移動,如在用戶嘗試重新定位深度相機的情況下。為了檢測并考慮這些擾亂,可以使用用于高效準確地檢測深度相機的移動的技術來處理來自深度相機中的加速計的信號。在一個實施例中,提供了一種用于檢測3-D深度相機的運動的處理器實現的方法。該方法包括在連續的時間點從3-D深度相機中的三軸加速計獲取χ-軸、y-軸、以及 ζ-軸方向上的加速度讀數的處理器實現的步驟。該方法還包括,對于每一時間點(a)獲取在χ-軸、y_軸、以及ζ-軸中的每一個軸方向上的加速計讀數的短期和長期行進平均。短期行進平均是在W個時間點上求取的,而長期行進平均是在N2個時間點上求取的。在一種方法中,N2 = Nlxl. 5。在另一種方法中,1. 3χΝ1 < N2 < 1. 7x Ni。短期和長期平均的特定定義可造成在檢測移動時的最優準確度。該方法還包括(b)獲取χ-軸、y_軸、以及ζ-軸中的每一個軸的加速度讀數的短期和長期行進平均之間的差,(C)獲取與X-軸、y_軸、以及Z-軸中的每一個軸有關的差的絕對值,以及(d)基于這些絕對值來獲取總和。該方法還包括(e)確定該總和是否超過閾值水平。閾值水平的特定設置可造成在檢測移動時的最優準確度。如果該總和超過閾值水平,則該方法包括(f)提供檢測到3-D深度相機的移動的指示。類似地,如果該總和沒有超過閾值水平,則該方法還包括(g)提供沒有檢測到3-D深度相機的移動的指示。在一種可能的方法中,運動跟蹤過程響應于檢測到3-D深度相機的移動的指示而暫停,并且運動跟蹤過程隨后響應于不再檢測到3-D深度相機的移動的指示而恢復。響應于檢測到3-D深度相機的移動的指示,經由用戶界面提供指示3-D深度相機已 被擾動的消息也是可能的。提供本發明內容以用簡化形式介紹在下面的說明書中進一步描述的精選概念。本發明內容并不旨在標識出所要求保護的主題的關鍵特征或必要特征,也不旨在用于限定所要求保護的主題的范圍。
在附圖中,附圖標記相同的元素彼此對應。圖1描繪了運動捕捉系統的示例實施例。圖2A描繪了圖1的運動捕捉系統的示例框圖。圖2B描繪圖2A的運動捕捉系統的處理器的各處理框的示例。圖2C描繪圖2A的運動捕捉系統的處理器的各處理框的另一示例。圖3描繪了可以在圖1的運動捕捉系統中使用的計算環境的示例框圖。圖4描繪了可以在圖1的運動捕捉系統中使用的計算環境的另一示例框圖。圖5描繪了用于檢測運動捕捉系統中的相機移動的方法。圖6描繪了用于如圖5的步驟500所述地跟蹤個人的移動的示例方法。圖7A描繪了用于如圖5的步驟502所述地處理當前時間段的加速計讀數的示例方法。圖7B描繪了用于如圖5的步驟502所述地處理當前時間段的加速計讀數的另一示例方法。圖8描繪了如圖6的步驟608所述的用戶的示例模型。圖9描繪用于如圖7A和7B中所述的那樣來處理加速計讀數的示例坐標系統。圖IOA描繪了其中玩家正在跳躍的場景中的示例原始加速計讀數。圖IOB基于圖IOA描繪了長期和短期平均俯仰(pitch)值。圖IOC描繪了圖IOB的長期和短期平均俯仰值之間的差。圖IOD基于圖IOA中描繪的軸數據的平均值描繪了差的總和以及與閾值的比較, 從而指示何時檢測到不滿足閾值并且被過濾出的移動。圖IlA描繪了其中傳感器正在移動的場景中的示例原始加速計讀數。圖IlB基于圖IlA描繪了長期和短期平均俯仰值,以及長期和短期平均俯仰值之間的差。圖IlC基于圖IlA中描繪的軸數據的平均值來描繪了差的總和以及與閾值的比較,從而指示在檢測到移動時滿足或超過閾值并且被指示為檢測到移動的總和。
具體實施方式
提供了一種用于在配備有加速計的傳感器被擾動時準確地進行檢測的技術。在一示例中,傳感器是運動跟蹤系統中的深度相機。在一種方法中,處理來自三軸加速計的讀數以提供χ軸、y軸、以及ζ軸中的每一個軸的短期和長期移動平均。對于每一個軸,獲得短期和長期平均之間的差。通過對所有三個軸上的每一個差的絕對值求和來獲取差的總和。 隨后將差的總和與閾值進行比較以確定是否檢測到移動。在另一種方法中,加速計讀數的短期和長期平均被轉換成俯仰和搖晃(roll)值,并且俯仰和搖晃值單獨與閾值比較以確定是否檢測到移動。此外,盡管具體結合運動跟蹤系統中的深度相機解釋了對加速計的使用,但所提供的技術一般適用于檢測任何音頻或視覺傳感器外圍設備的移動以供計算機主機的需要, 該傳感器外圍設備可將它的與可影響音頻或視覺性能的振動、顛簸或其他物理位移等有關的物理狀態通信傳遞給主機。從該設備到主機的輸入可被用來確定何時自動地重新校準傳感器,警告用戶可影響性能的過度振動或移動,或提供用戶已經完成設置傳感器所需的特定任務的獨立確認。圖1描繪了其中個人8與應用交互的運動捕捉系統10的示例實施例。這示出了運動捕捉系統諸如在用戶家中的真實世界部署。運動捕捉系統10包括顯示器196、深度相機系統20、以及計算環境或裝置12。深度相機系統20可包括圖像相機組件22,其具有紅夕卜(IR)光發射器24、紅外相機26和紅-綠-藍(RGB)相機28。也稱為個人或玩家的用戶 8站在深度相機的視野6中。線2和4表示視野6的邊界。在該示例中,深度相機系統20 和計算環境12提供了其中顯示器196上的化身197跟蹤用戶8的移動的應用。例如,當用戶舉起手臂時,化身可舉起手臂。化身197在3-D虛擬世界中站在路198上。可定義笛卡爾世界坐標系,其包括沿著深度相機系統20的焦距(例如水平)延伸的ζ軸、垂直延伸的 y軸、以及橫向且水平延伸的χ軸。附圖的透視被修改成簡化表示,顯示器196在y軸方向上垂直延伸,ζ軸垂直于y軸和χ軸且與用戶8所站立的地平面平行地從深度相機系統延伸出來。一般而言,運動捕捉系統10用于識別、分析和/或跟蹤人類目標。計算環境12可包括計算機、游戲系統或控制臺等,以及執行應用的硬件組件和/或軟件組件。深度相機系統20可以包括相機,相機用于在視覺上監視諸如用戶8等的一個或多個人,從而可以捕捉、分析并跟蹤用戶所執行的姿勢和/或移動,來執行應用中的一個或多個控制或動作,如使化身或屏幕上人物活動起來或選擇用戶界面(UI)中的一菜單項。運動捕捉系統10可以連接到諸如顯示器196等可向用戶提供視覺和音頻輸出的視聽設備,如電視機、監視器、高清電視機(HDTV)等,或甚至是墻或其他表面上的投影。音頻輸出也可經由單獨的設備來提供。為驅動顯示器,計算環境12可包括提供與應用相關聯的視聽信號的諸如圖形卡等視頻適配器,和/或諸如聲卡等音頻適配器。顯示器196可經由例如,S-視頻電纜、同軸電纜、HDMI電纜、DVI電纜、VGA電纜等連接到計算環境12。用戶8可使用深度相機系統20來跟蹤,使得用戶的姿勢和/或移動被捕捉并用于使化身或屏幕上人物活動起來,和/或被解釋為對計算機環境12所執行的應用的輸入控制。用戶8的某些移動可被解釋為可對應于除控制化身之外的動作的控制。例如,在一實施例中,玩家可使用移動來結束、暫停或保存游戲、選擇級別、查看高分、與朋友交流等。玩家可使用移動來從主用戶界面選擇游戲或其他應用,或以其他方式導航選項菜單。由此,用戶8的全范圍運動可以用任何合適的方式來獲得、使用并分析以與應用進行交互。個人可在與應用交互時抓握諸如道具等物體。在此類實施例中,個人和物體的移動可用于控制應用。例如,可以跟蹤并利用玩家手持球拍的運動來控制模擬網球游戲的應用中的屏幕上球拍。在另一示例實施例中,可以跟蹤并利用玩家手持諸如塑料劍等玩具武器的運動來控制提供海盜船的應用的虛擬世界中對應的武器。運動捕捉系統10還可用于將目標移動解釋為游戲和出于娛樂和休閑目的的其他應用范圍之外的操作系統和/或應用控制命令。例如,操作系統和/或應用的基本上任何可控方面可由用戶8的移動來控制。圖2A描繪了圖1的運動捕捉系統的示例框圖。深度相機系統20可被配置成經由任何合適的技術,包括例如飛行時間、結構化光、立體圖像等,捕捉帶有包括深度圖像的深度信息的視頻,該深度圖像可包括深度值。深度相機系統20可將深度信息組織為“Z層”, 或可與從深度相機沿其視線延伸的Z軸垂直的層。深度相機系統20可包括圖像相機組件22,如捕捉物理空間中的場景的深度圖像的深度相機。深度圖像可包括所捕捉的場景的二維O-D)像素區域,其中該2-D像素區域中的每一像素具有代表距離圖像相機組件22的線性距離的相關聯的深度值。圖像相機組件22可包括可用于捕捉場景的深度圖像的紅外(IR)光發射器對、紅外相機26、以及紅-綠-藍(RGB)相機28。3-D相機由紅外發射器M和紅外相機沈的組合來形成。例如,在飛行時間分析中,頂光發射器M將紅外光發射到物理表面上,并且紅外相機沈檢測來自物理空間中的一個或多個目標和物體的表面的反向散射光。在某些實施例中,可以使用脈沖式紅外光,從而可以測量出射光脈沖與相應的入射光脈沖之間的時間并將其用于確定從深度相機系統20到物理空間中的目標或對象上的特定位置的物理距離。可將傳出光波的相位與傳入光波的相位進行比較來確定相移。然后可以使用相移來確定從深度相機系統到對象或目標上的特定位置的物理距離。飛行時間分析也可用于通過經由包括例如快門式光脈沖成像等各種技術來分析反射光束隨時間的強度,來間接地確定從深度相機系統20到目標或對象上的特定位置的物理距離。在另一示例實施例中,深度相機系統20可使用結構化光來捕捉深度信息。在這一分析中,圖案化光(即,被顯示為諸如網格圖案或條紋圖案等已知圖案的光)可經由例如頂光發射器M被投影到場景上。在撞擊到場景中的一個或多個目標或物體的表面時,作為響應,圖案可變形。圖案的這種變形可由例如紅外相機沈和/或RGB相機觀來捕捉,然后可被分析以確定從深度相機系統到目標或對象上的特定位置的物理距離。深度相機系統20可包括兩個或更多物理上分開的相機,這些相機可從不同角度查看場景以獲得視覺立體數據,該視覺立體數據可被解析以生成深度信息。深度相機系統20還可包括話筒30,話筒30包括例如接收聲波并將其轉換成電信號的換能器或傳感器。另外,話筒30可用于接收由個人提供的諸如聲音等音頻信號,來控制由計算環境12運行的應用。音頻信號可包括諸如說出的單詞、口哨、叫聲和其他話語等個人的口聲,以及諸如拍手或跺腳等非口聲。深度相機系統20可包括與圖像相機組件22進行通信的處理器32。處理器32可包括可執行指令的標準化處理器、專用處理器、微處理器等,這些指令包括例如用于接收深度圖像的指令;用于基于深度圖像來生成三維像素網格的指令;用于移除包括在三維像素網格中的背景以便隔離與人類目標相關聯的一個或多個三維像素的指令;用于確定隔離的人類目標的一個或多個骨端的位置或定位的指令;用于基于一個或多個骨端的位置或定位來調整模型的指令;或任何其他合適的指令,這些將在下文中更詳細描述。深度相機系統20還可包括存儲器組件34,存儲器組件34可存儲可由處理器32執行的指令、以及存儲3-D相機或RGB相機所捕捉的圖像或圖像幀、或任何其他合適的信息、 圖像等等。根據一示例實施例,存儲器組件34可包括隨機存取存儲器(RAM)、只讀存儲器 (ROM)、高速緩存、閃存、硬盤、或任何其他合適的有形計算機可讀存儲組件。存儲器組件34 可以是經由總線21與圖像捕捉組件22和處理器32進行通信的單獨組件。根據另一實施例,存儲器組件34可被集成到處理器32和/或圖像捕捉組件22中。深度相機系統20可包括用于將相機重新定位的定位電動機35以及用于檢測深度相機的移動的加速計33。關于電動機35,相機可以使用該電動機來在各種情況下自動地重新定位自己。例如,相機可具有調整上下/俯仰(即相機看得有多高)的傾斜電動機。例如,在不同玩家開始與運動捕捉系統中的應用進行交互時,在游戲應用程序的開始時,或在運動捕捉系統啟動并開始搜索以找出房間中的人時,可以發生這一重新定位。相機可以基于其自己的控制邏輯和/或從諸如計算環境12中的外部控制邏輯接收用于激活電動機的命令。相機可包括一個或多個加速計33。例如,加速計可被安裝到其上安裝有相機的其他電路的印刷電路板。本文提供的技術可用于兩軸加速計,其中第三軸被固定以防止移動。 一般而言,加速計可以是檢測三個正交軸(例如,χ軸、y軸、ζ軸)上的移動的三軸加速計。 典型的現代加速計使用只對管芯的平面中的方向敏感的微機電系統(MEMS)。通過將兩個器件垂直地集成在單個管芯上,可以造出兩軸加速計。通過添加附加的平面外器件,可以測量在三個軸方向上的加速度。加速計可以按指定的采樣速率來提供數據樣本。深度相機系統20可以經由通信鏈路36與計算環境12進行通信。通信鏈路36可以是有線和/或無線連接。根據一實施例,計算環境12可經由通信鏈路36向深度相機系統20提供時鐘信號,該信號指示何時從位于深度相機系統20的視野中的物理空間捕捉圖像數據。另外,深度相機系統20可經由通信鏈路36向計算環境12提供深度信息和由例如 3-D相機沈和/或RGB相機觀捕捉的圖像,和/或可由深度相機系統20生成的骨架模型。 計算環境12然后可使用該模型、深度信息和捕捉的圖像來控制應用。例如,計算環境12可包括諸如姿勢過濾器集合等姿勢庫190,每一姿勢過濾器具有關于可由骨架模型(在用戶移動時)執行的姿勢的信息。例如,可為各種手姿勢提供姿勢過濾器,如手的揮擊或投擲。 通過將檢測到的運動與每一過濾器進行比較,可標識個人執行的指定姿勢或移動。也可確定執行移動的范圍。可將由深度相機系統20捕捉的骨架模型形式的數據以及與其相關聯的移動與姿勢庫190中的姿勢過濾器進行比較來標識用戶(如骨架模型所表示的)何時執行了一個或多個特定移動。那些移動可與應用的各種控制命令相關聯。計算環境還可包括用于執行存儲在存儲器194中的指令以向顯示設備196提供音頻-視頻輸出信號并實現如此處所描述的其他功能的處理器192。
圖2B描繪圖2A的運動捕捉系統的處理器的各處理框的示例。例如,處理器32和 /或192可處理來自加速計33的讀數。這些讀數可包括分別在χ、y、ζ方向上的加速度讀數Ax、Ay、Az。這些讀數可以具有加速度單位,例如米/平方秒,或具有對應于加速度單位的其他單位,如電壓或電流。這一對應關系可以是線性的。加速度讀數Ax、Ay、Az是來自加速計的在讀數被如本文所述地處理之前的原始數據。處理器可包括如通過使用當前時間點和前N2-1個時間點來確定N2個時間點上的長期行進平均計算的功能框200。行進平均基本上是移動平均。框200的輸出包括x、y、z長期平均,也被稱為長平均。類似地,處理器可包括如通過使用當前時間點和前m-i個時間點來確定m個時間點上的短期行進平均計算的功能框202。框202的輸出包括x、y、ζ短期平均,也被稱為短平均。框204基于長平均和短平均來確定差的總和。具體而言,總和可以基于χ軸、y軸、ζ軸中的每一個軸的短平均和長平均之間的差。在框206將總和與閾值進行比較,以確定是否檢測到移動并提供對應的輸出信號來作為移動決策。輸出信號可由采取指定動作的過程來使用,該指定動作諸如臨時暫停運動跟蹤算法和/或經由顯示器向用戶提供指示已經檢測到相機的擾動的消息。 樣本數m和N2或相關聯的時間段可基于在實驗期間從相機計算得到的數據值來設置。圖2C描繪圖2A的運動捕捉系統的處理器的各處理框的另一示例。框210和212 分別類似于圖2B中的框200和202。在俯仰計算框214和搖晃計算框222處理長平均和短平均兩者。俯仰計算框214向差框216提供俯仰長期平均和俯仰短期平均,框216確定每一時間點的俯仰長期平均和俯仰短期平均之間的差并將這一差提供給比較框218。類似地,搖晃計算框222向差框220提供搖晃長期平均和搖晃短期平均,框220確定每一時間點的搖晃長期平均和搖晃短期平均之間的差并將這一差提供給比較框218。比較框218基于這些差中的一個或兩者來確定是否檢測到移動,并提供對應的輸出信號作為移動決策。圖 9描繪俯仰和搖晃的示例定義。 圖3描繪了可以在圖1的運動捕捉系統中使用的計算環境的示例框圖。計算環境可用于解釋一個或多個姿勢或其他移動并作為響應來更新顯示器上的視覺空間。上面描述的諸如計算環境12等計算環境可以是諸如游戲控制臺等多媒體控制臺100。多媒體控制臺 100包括具有一級高速緩存102、二級高速緩存104和閃存ROM(只讀存儲器)106的中央處理單元(CPU) 101。一級高速緩存102和二級高速緩存104臨時存儲數據并因此減少存儲器訪問周期數,由此改進處理速度和吞吐量。CPU 101可以設置成具有一個以上的核,以及由此的附加的一級和二級高速緩存102和104。諸如閃存ROM等存儲器106可存儲在多媒體控制臺100通電時在引導過程的初始階段期間加載的可執行代碼。圖形處理單元(GPU) 108和視頻編碼器/視頻編解碼器(編碼器/解碼器)114形成用于高速、高分辨率圖形處理的視頻處理流水線。數據經由總線從圖形處理單元108輸送到視頻編碼器/視頻編解碼器114。視頻處理流水線將數據輸出到A/V (音頻/視頻)端口 140以傳輸到電視機或其他顯示器。存儲器控制器110連接到GPU 108以便于處理器訪問各種類型的存儲器112,諸如RAM(隨機存取存儲器)。多媒體控制臺100包括較佳地在模塊118上實現的I/O控制器120、系統管理控制器122、音頻處理單元123、網絡接口 124、第一 USB主控制器126、第二 USB控制器128和前面板I/O子部件130。USB控制器126和128用作外圍控制器142 (1)-142 (2)、無線適配器 148、和外置存儲器設備146 (例如閃存、外置⑶/DVD ROM驅動器、可移動介質等)的主機。網絡接口(NW IF) IM和/或無線適配器148提供對網絡(例如,因特網、家庭網絡等)的訪問并且可以是包括以太網卡、調制解調器、藍牙模塊、電纜調制解調器等的各種不同的有線或無線適配器組件中任何一種。提供系統存儲器143來存儲在引導進程期間加載的應用數據。提供媒體驅動器 144且其可包括DVD/⑶驅動器、硬盤驅動器、或其他可移動媒體驅動器。媒體驅動器144對于多媒體控制臺100可以內置或外置的。應用數據可經由媒體驅動器144訪問,以由多媒體控制臺100執行、回放等。媒體驅動器144經由諸如串行ATA總線或其他高速連接等總線連接到I/O控制器120。系統管理控制器122提供涉及確保多媒體控制臺100的可用性的各種服務功能。 音頻處理單元123和音頻編解碼器132形成具有高保真度和立體聲處理的對應的音頻處理流水線。音頻數據經由通信鏈路在音頻處理單元123與音頻編解碼器132之間傳輸。音頻處理流水線將數據輸出到A/V端口 140以供外置音頻播放器或具有音頻能力的設備再現。前板I/O子部件130支持暴露在多媒體控制臺100的外表面上的電源按鈕150和彈出按鈕152以及任何LED(發光二極管)或其他指示器的功能。系統供電模塊136向多媒體控制臺100的組件供電。風扇138冷卻多媒體控制臺100內的電路。CPUlOl、GPU108、存儲器控制器110、和多媒體控制臺100內的各個其他組件經由一條或多條總線互連,包括串行和并行總線、存儲器總線、外圍總線、和使用各種總線架構中任一種的處理器或局部總線。當多媒體控制臺100通電時,應用數據可從系統存儲器143加載到存儲器112和/ 或高速緩存102、104中并在CPUlOl上執行。應用可呈現在導航到多媒體控制臺100上可用的不同媒體類型時提供一致的用戶體驗的圖形用戶界面。在操作中,媒體驅動器144中包含的應用和/或其他媒體可從媒體驅動器144啟動或播放,以向多媒體控制臺100提供附加功能。多媒體控制臺100可通過將該系統簡單地連接到電視機或其他顯示器而作為獨立系統來操作。在該獨立模式中,多媒體控制臺100允許一個或多個用戶與該系統交互、看電影、或聽音樂。然而,隨著通過網絡接口 1 或無線適配器148可用的寬帶連接的集成, 多媒體控制臺100還可作為較大網絡社區中的參與者來操作。當多媒體控制臺100通電時,保留指定量的硬件資源以供多媒體控制臺操作系統作系統使用。這些資源可以包括存儲器保留(例如,16MB)、CPU和GPU周期(例如,5%)、 網絡帶寬(例如,SlAs)等。因為這些資源是在系統引導時保留的,所以所保留的資源對應用而言是不存在的。具體地,存儲器保留較佳地足夠大,以包含啟動內核、并發系統應用和驅動程序。 CPU保留較佳地為恒定,使得若所保留的CPU用量不被系統應用使用,則空閑線程將消耗任何未使用的周期。對于GPU保留,通過使用GPU中斷來顯示由系統應用生成的輕量消息(例如,彈出窗口),以調度代碼來將彈出窗口呈現為覆蓋圖。覆蓋圖所需的存儲器量取決于覆蓋區域大小,并且覆蓋圖較佳地與屏幕分辨率成比例縮放。在并發系統應用使用完整用戶界面的情況下,優選使用獨立于應用分辨率的分辨率。定標器可用于設置該分辨率,從而無需改變頻率,也就不會引起TV重新同步。
在多媒體控制臺100引導且系統資源被保留之后,就執行并發系統應用來提供系統功能。系統功能被封裝在一組在上述所保留的系統資源中執行的系統應用中。操作系統內核標識是系統應用線程而非游戲應用線程的線程。系統應用優選地被調度為在預定時間并以預定時間間隔在CPU 101上運行,以便為應用提供一致的系統資源視圖。進行調度是為了把由在控制臺上運行的游戲應用所引起的高速緩存分裂最小化。當并發系統應用需要音頻時,則由于時間敏感性而異步調度音頻處理給游戲應用。多媒體控制臺應用管理器(如下所述)在系統應用活動時控制游戲應用的音頻水平 (例如,靜音、衰減)。 輸入設備(例如,控制器142(1)和142(2))由游戲應用和系統應用共享。輸入設備不是所保留的資源,但卻在系統應用和游戲應用之間切換以使其各自具有設備的焦點。 應用管理器較佳地控制輸入流的切換,而無需知曉游戲應用的知識,并且驅動程序維持有關焦點切換的狀態信息。控制臺100可從包括相機26和28的圖2A的深度相機系統20接收附加輸入。圖4描繪了可以在圖1的運動捕捉系統中使用的計算環境的另一示例框圖。在運動捕捉系統中,該計算環境可用于解釋一個或多個姿勢或其他移動并作為響應更新顯示器上的視覺空間。計算環境420包括計算機441,計算機441通常包括各種有形計算機可讀存儲介質。這可以是能由計算機441訪問的任何可用介質,而且包含易失性和非易失性介質、可移動和不可移動介質。系統存儲器422包括易失性和/或非易失性存儲器形式的計算機存儲介質,如只讀存儲器(ROM) 423和隨機存取存儲器(RAM) 460。基本輸入 /輸出系統424 (BIOS)包括如在啟動時幫助在計算機441內的元件之間傳輸信息的基本例程,它通常儲存在ROM 423中。RAM 460通常包含處理單元459可以立即訪問和/或目前正在操作的數據和/或程序模塊。圖形接口 431與GPU 429進行通信。提供了操作系統425、 應用程序426、其他程序模塊427和程序數據428。計算機441還可包括其他可移動/不可移動、易失性/非易失性計算機存儲介質, 如從不可移動、非易失性磁介質讀取或對其寫入的硬盤驅動器438,從可移動、非易失性磁盤454讀取或對其寫入的磁盤驅動器439,以及從諸如CDROM或其他光介質等可移動、非易失性光盤453讀取或對其寫入的光盤驅動器440。可以在示例性操作環境中使用的其他可移動/不可移動、易失性/非易失性有形計算機可讀存儲介質包括但不限于,磁帶盒、閃存卡、數字多功能盤、數字錄像帶、固態RAM、固態ROM等等。硬盤驅動器438通常由諸如接口 434等不可移動存儲器接口連接至系統總線421,磁盤驅動器439和光盤驅動器440通常由諸如接口 435等可移動存儲器接口連接至系統總線421。以上討論并在圖4中描繪的驅動器及其相關聯的計算機存儲介質為計算機441提供了對計算機可讀指令、數據結構、程序模塊和其他數據的存儲。例如,硬盤驅動器438被描繪為存儲操作系統458、應用程序457、其他程序模塊456和程序數據455。這些組件可以與操作系統425、應用程序426、其他程序模塊427,以及程序數據428相同,也可以不同。 操作系統458、應用程序457、其他程序模塊456和程序數據455在這里被標注了不同的標號是為了說明至少它們是不同的副本。用戶可以通過輸入設備,諸如鍵盤451和定點設備 452 (通常被稱為鼠標、跟蹤球或觸摸墊),向計算機441輸入命令和信息。其他輸入設備 (未示出)可以包括話筒、操縱桿、游戲手柄、圓盤式衛星天線、掃描儀等等。這些和其他輸入設備通常由耦合至系統總線的用戶輸入接口 436連接至處理單元459,但也可以由其他接口和總線結構,諸如并行端口、游戲端口或通用串行總線(USB),來連接。包括相機26和 28的圖2A的深度相機系統20可為控制臺100定義附加輸入設備。監視器442或其他類型的顯示器也經由接口,諸如視頻接口 432連接至系統總線421。除監視器以外,計算機也可以包括其他外圍輸出設備,諸如揚聲器444和打印機443,它們可以通過輸出外圍接口 433 連接。 計算機441可使用至一個或多個遠程計算機,諸如遠程計算機446的邏輯連接在網絡化環境中操作。遠程計算機446可以是個人計算機、服務器、路由器、網絡PC、對等設備或其他常見的網絡節點,且通常包括許多或所有以上相對于計算機441描述的元件, 但是在圖4中僅示出了存儲器存儲設備447。邏輯連接包括局域網(LAN)445和廣域網 (WAN)449,但也可以包括其他網絡。這樣的聯網環境在辦公室、企業范圍計算機網絡、內聯網和因特網中是常見的。當在LAN聯網環境中使用時,計算機441通過網絡接口或適配器437連接至LAN 445。當在WAN聯網環境中使用時,計算機441通常包括調制解調器450或用于通過諸如因特網等WAN 449建立通信的其他裝置。調制解調器450可以是內置或外置的,它可以經由用戶輸入接口 436或其他適當的機制連接至系統總線421。在網絡化環境中,相對于計算機 441所描述的程序模塊或其部分可被存儲在遠程存儲器存儲設備中。作為示例而非限制, 圖4示出了遠程應用程序448駐留在存儲器設備447上。可以理解,所示的網絡連接是示例性的,且可以使用在計算機之間建立通信鏈路的其他手段。該計算環境可包括其上具體化了計算機可讀軟件的有形計算機可讀存儲,該計算機可讀軟件用于對至少一個處理器進行編程來執行此處描述的方法。該有形計算機可讀存儲可包括例如,組件422、434、435、430、453、454中的一個或多個。此外,該計算環境的一個或多個處理器可提供一種處理器實現的方法,包括如本文所述的處理器實現的步驟。處理器可包括例如組件429和459中的一個或多個。圖5描繪了用于檢測運動捕捉系統中的相機移動的方法。步驟500包括跟蹤深度相機系統的視野中的用戶。參見例如圖6來獲得更多細節。步驟502包括處理加速計讀數。 參見例如圖7A和7B來獲得進一步的細節。決策步驟504確定是否檢測到相機移動。如果決策步驟504為真,則在步驟506采取適當的動作,如臨時暫停對用戶的跟蹤。這避免在盡管檢測到移動而繼續跟蹤的情況下發生的錯誤的跟蹤結果。有效的跟蹤一般需要相機基本上不動。當相機當前正在移動或當相機最近移動了的時侯,如在取平均的時間段期間(如結合圖2B和2C描述的),決策步驟504將為真。如果決策步驟504為假,則在步驟508,允許對用戶繼續進行跟蹤。步驟510包括基于該跟蹤來向應用提供控制輸入。例如,該控制輸入可被用來更新化身在顯示器上的位置,其中該化身表示該用戶。步驟512包括基于該跟蹤來更新顯示。在跟蹤算法臨時暫停時,數據不可用于基于正常更新速率來更新顯示器。一種方法是在檢測到移動之前繼續顯示最后圖像。當在步驟504檢測到移動時要采取的另一可能的動作是經由顯示器向用戶提供指示已檢測到相機的擾動的消息。這一消息可被顯示成文本,和/或如通過講出“請重新定位相機”或“相機被擾動了,,等合成說出的聲音來可聽地顯示。還可在檢測到移動的時間段期間且可任選地在檢測到移動之后的預定時間期間啟動諸如嘟嘟聲或蜂鳴聲等警報聲。該消息可以向用戶指示將來如何避免進一步擾動。例如可以通過關閉對深度相機的供電、或通過保持對深度相機的供電但在邏輯中提供一控制信號以臨時掛起特定跟蹤過程,來實現跟蹤算法的臨時暫停。圖6描繪了用于如圖5的步驟500所述地跟蹤個人的移動的示例方法。該示例方法可以使用例如結合圖2A-4討論的深度相機系統20和/或計算環境12、100或420來實現。可以掃描一個或多個人來生成模型,如骨架模型、網格人類模型、或個人的任何其他合適的表示。在骨架模型中,每個身體部位可被表征為定義骨架模型的關節和骨骼的數學向量。身體部位可以在關節處相對于彼此移動。該模型然后可用于與由計算環境執行的應用交互。進行掃描來生成模型可以在啟動或運行應用程序時發生,或如所掃描的個人的應用程序所控制的在其他時間發生。可掃描個人來生成骨架模型,可跟蹤該骨架模型使得用戶的物理移動或運動可用作調整和/或控制應用的參數的實時用戶接口。例如,所跟蹤的個人的移動可用于在電子角色扮演游戲中移動化身或其他屏幕上人物;在電子賽車游戲中控制屏幕上車輛;在虛擬環境中控制物體的構成或組織;或執行應用的任何其他合適的控制。根據一個實施例,在步驟600,例如從深度相機系統接收深度信息。深度相機系統可以捕捉或觀察可包括一個或多個目標的視野。在一示例實施例中,如所討論的,深度相機系統可使用諸如飛行時間分析、結構化光分析、立體視覺分析等任何合適的技術來獲得與捕捉區域中的一個或多個目標相關聯的深度信息。如所討論的,深度信息可包括具有多個所觀察的像素的深度圖像或圖,其中每一所觀察的像素具有所觀察的深度值。深度圖像可以被降采樣到較低處理分辨率,以使其可被更容易地使用且以更少的計算開銷來處理。另外,可從深度圖像中移除和/或平滑掉一個或多個高變度和/或含噪聲的深度值;可填入和/或重構缺少的和/或移除的深度信息的部分;和/或可對所接收的深度信息執行任何其他合適的處理,使得該深度信息可用于生成也結合圖8討論的諸如骨架模型等模型。在判定步驟604,判定深度圖像是否包括人類目標。這可包括對深度圖像中的每一目標或對象進行泛色填充,將每一目標或對象與模式進行比較來確定該深度圖像是否包括人類目標。例如,可以比較深度圖像的所選區域或點中的像素的各種深度值來確定可定義如上所述的目標或對象的邊。可基于所確定的邊來對Z個層的可能的Z個值進行泛色填充。例如,與所確定的邊相關聯的像素以及邊內的區域的像素可互相關聯來定義可與圖案進行比較的捕捉區域中的目標或對象,這將在下文中更詳細描述。如果判定步驟604為真,則執行步驟606。如果判定步驟604為假,則在步驟600 接收附加深度信息。對照其來比較每一目標或對象的模式可包括具有共同定義典型的人類身體的一組變量的一個或多個數據結構。與例如視野中的人類目標和非人類目標的像素相關聯的信息可以與各變量進行比較來標識人類目標。在一個實施例中,該組中的每一變量可基于身體部位來加權。例如,模式中諸如頭和/或肩等各個身體部位可具有與其相關聯的、可大于諸如腿等其他身體部位的權重值。根據一個實施例,可在將目標與變量進行比較來確定目標是否以及哪一目標可以是人類時使用權重值。例如,變量與目標之間的具有較大權重值的匹配可產生比具有較小權重值的匹配更大的該目標是人類的可能性。
步驟606包括掃描人類目標來尋找身體部位。可以掃描人類目標來提供與個人的一個或多個身體部位相關聯的諸如長度、寬度等度量,以提供該個人的準確模型。在一示例實施例中,可隔離該人類目標,并且可創建該人類目標的位掩模來掃描一個或多個身體部位。該位掩模可通過例如對人類目標進行泛色填充,使得該人類目標可以與捕捉區域元素中的其他目標或對象分離來創建。隨后可分析該位掩模來尋找一個或多個身體部位,以生成人類目標的模型,如骨架模型、網格人類模型等。例如,根據一實施例,可使用由所掃描的位掩模確定的度量值來定義骨架模型中的一個或多個關節。該一個或多個關節可用于定義可對應于人類的身體部位的一根或多根骨。 例如,人類目標的位掩模的頂部可以與頭的頂部的位置相關聯。在確定了頭的頂部之后,可以向下掃描該位掩模來隨后確定頸的位置、肩的位置等等。例如,在所掃描的位置處的位掩模的寬度可以與和例如頸、肩等相關聯的典型寬度的閾值進行比較。在替換實施例中,可以使用離位掩模中先前掃描的并與身體部位相關聯的位置的距離來確定頸、肩等的位置。諸如腿、腳等的某些身體部位可基于例如其他身體部位的位置來計算。在確定了身體部位的值之后,可創建包括身體部位的度量值的數據結構。該數據結構可包括從深度相機系統在不同時間點提供的多個深度圖像中平均的掃描結果。步驟608包括生成人類目標的模型。在一實施例中,可使用由所掃描的位掩模確定的度量值來定義骨架模型中的一個或多個關節。該一個或多個關節用于定義可對應于人類的身體部位的一根或多根骨。可調整一個或多個關節,直到這些關節在人類的關節和身體部位之間的典型距離范圍之內,以生成更準確的骨架模型。該模型可基于例如與人類目標相關聯的高度來進一步調節。在步驟610,通過每秒若干次更新個人的位置來跟蹤該模型。當用戶在物理空間中移動時,使用來自深度相機系統的信息來調整骨架模型,使得該骨架模型表示一個人。具體地,可向該骨架模型的一個或多個受力方面施加一個或多個力,來將該骨架模型調整成更接近地對應于物理空間中的人類目標的姿態的姿態。一般而言,可使用用于跟蹤個人的移動的任何已知技術。圖7A描繪了用于如圖5的步驟502所述地處理當前時間段的加速計讀數的示例方法。步驟700包括分別獲取x、y、和ζ軸的當前時間點的加速計讀數Ax、Ay、Az。例如, 對于當前時間點或樣本索引t = i,樣本可由Ax(i)、Ay(i)、Az(i)來表示。可以使用諸如15毫秒等采樣時間間隔,其中對每一采樣的時間點獲取附加樣本。所描繪的步驟應用于一個時間點并且對每一后續時間點重復。所描繪的步驟不必一定離散地發生,而是可至少部分地并發地發生。例如,步驟702、704、和706可至少部分地并發地發生。對于χ軸讀數,步驟702獲取m個時間點上的短期行進平均和N2個時間點上的長期行進平均。例
1 t— *
如,X軸的短期行進平均可以是=ΣΙΖΙ-ΝΙ + Ι^^) X軸的長期行進平均可以是
Wl。
^ Tit=i-N2+1 ^xW
ο對于y軸讀數,步驟704獲取m個時間點上的短期行進平均和N2個時間點上的長期行進平均。對于Z軸讀數,步驟706獲取m個時間點上的短期行進平均和N2個時間點上的長期行進平均。在該示例中,對于不同的軸,短期平均和長期平均是類似地定義的。 然而,對于這三個不同的軸中的每一個軸,對短期平均和長期平均使用不同數量的時間點/ 求平均時間段也是可能的。對于特定實現,對于每一軸并且對于長平均和短平均,可以使用實驗來確定最優數量個時間點或求平均時間點。此外,對于特定實現,可以使用實驗來確定N2/m的最優比率。在一些實現中,已發現N2/m = 1.5的比率是成功的。S卩,N2超過m大約50%。一般而言,可以使用ι. 3χΝ1 < N2 < 1. 7x Ni。此外,在15毫秒采樣時間間隔的情況下,成功地使用了 m = 40和N2 = 60,使得求取短平均和長平均的時間間隔(求平均時間段)分別是 600毫秒和900毫秒。m和N2是正整數,并且N2 > m。這是示例實現,并且如上所述,特定實現的最優值可通過實驗來確定。一般而言,如果N2超過m太多,則移動的指示被延遲的過長。如果N2和m過于接近,使得N2不充分超過Ni,則將丟失一些移動的指示。進一步的考慮事項是短平均的最小長度應當生成足夠穩定的時間線來消除大多數偽振動。步驟708基于|x軸長平均-χ軸短平均I+ |y軸長平均_y軸短平均|X縮放因子+Iz-軸長平均-Z軸短平均I來確定差的總和。Ix軸長平均-X軸短平均I表示當前時間點的X軸長期平均與X軸短期平均之間的差的絕對值。I y軸長平均_y軸短平均I表示當前時間點的y軸長期平均與y軸短期平均之間的差的絕對值。Y軸可表示垂直方向。在決定是否指示相機移動時,縮放因子可被用來縮小或削弱垂直移動的效果。由于諸如靠近相機的揚聲器、人在相機附近走路或跳躍等源而引起的振動或可通過相機所處的表面傳遞的任何其他擾動,大多數都表現在垂直軸上。使用縮放因子,相對于表示χ軸或ζ軸方向上的移動的加速計數據,表示在垂直軸方向上的移動的加速計數據被削弱。這可通過避免由于常見y軸振動而引起的假移動檢測而得到更好的結果。另一方面,由于相機被其電動機移動(如向上或向下傾斜)或被外部源移動(如由用戶)而引起的移動,往往在χ軸和 Z軸方向上表現得更多或在這兩個方向上大致相等。縮放因子可以與在垂直方向上的重力效果的校正分開,或與這一校正相組合。縮放因子可以是例如大約20% (0. 2),或例如大約 10-33% (0.10-0.33)。縮放因子可以通過實驗來優化。I ζ軸長平均-ζ軸短平均I表示當前時間點的ζ軸長期平均與ζ軸短期平均之間的差的絕對值。運動一般作為在所有三個軸方向上的振動來出現,使得來自所有三個軸的平均讀數有利地減少加速計內在的振動噪聲。此外,本文提供的技術不需要相機是水平的來進行移動檢測。基于超出在單個軸方向上的閾值的移動來指示運動的技術可能提供不一致的結果。在決策步驟710,如果總和大于閾值,則步驟712提供檢測到移動的指示。另一方面,在決策步驟710,如果總和不大于閾值,則步驟714提供未檢測到移動的指示。可任選地,可以在步驟712處不提供指示,直至對于一個或多個樣本中的指定數量的樣本檢測到移動為止。類似地,可以在步驟714處不提供指示,直至對于一個或多個樣本中的指定數量的樣本檢測到移動為止。決策步驟710中的最優閾值可以基于實驗來確定。該閾值應當足夠高,使得在移動水平可接受的情況下檢測不到移動并且跟蹤算法可以繼續在性能可接受的情況下跟蹤用戶。另一方面,該閾值應當足夠低,使得在移動水平不可接受的情況下檢測到移動并且跟蹤算法不能繼續在性能可接受的情況下跟蹤用戶。被用來確定最優閾值水平的實驗可以使用跟蹤性能的度量。
15
參見圖10A-11C可看到基于圖7A生成的示例數據。圖7B描繪了用于如圖5的步驟502所述地處理當前時間段的加速計讀數的另一示例方法。步驟720、722、724、以及726分別對應于圖7A的步驟700、702、704、以及706。 步驟7 基于步驟7M和7 的長期平均值來確定俯仰角度。使用圖9的約定,相機的俯仰角度等于ζ除以y的反正切,其中ζ和y分別是樣本索引i處的Az(i)和Ay(i)。因而,步驟7 確定長俯仰=atan(z軸長平均/y軸長平均)。長俯仰是基于當前樣本的Az和Ay 的長期平均的當前樣本的俯仰。atan是反正切。類似地,步驟730確定短俯仰=atan (ζ軸短平均/y軸短平均)。短俯仰是基于當前樣本的Az和Ay的短期平均的當前樣本的俯仰。 俯仰角度的變化△俯仰(Apitch)可基于分別是步驟7 和730的長期俯仰和短期俯仰之間的差來確定,Δ俯仰=I長俯仰-短俯仰|。類似地,使用圖9的約定,相機的搖晃角度等于χ除以y的反正切,其中χ和y分別是樣本索引i處的Ax(i)和Ay(i)。Ay (i)可被縮放以移除重力效果和/或削弱常見垂直運動。步驟734確定長搖晃=atan (χ軸長平均/y軸長平均)。長搖晃是基于當前樣本的Ax和Ay的長期平均的當前樣本的搖晃。類似地,步驟736確定短搖晃=atan (χ軸短平均/y軸短平均)。短搖晃是基于當前樣本的Ax和Ay的短期平均的當前樣本的搖晃。搖晃角度的變化△搖晃(Aroll)可基于分別是步驟734和736的長期搖晃角度和短期搖晃角度之間的差來確定,Δ搖晃=I長搖晃-短搖晃|。在一個實現中,決策步驟740將Δ俯仰和Δ搖晃兩者與角度閾值進行比較,以度或弧度為單位(與圖7Α的步驟710不同)。如果△俯仰和△搖晃之一或兩者超過閾值, 則在步驟742提供檢測到移動的指示。如果△俯仰和△搖晃沒有一個超過閾值,則在步驟744提供未檢測到移動的指示。在另一可能的實現中,只有在△俯仰和△搖晃兩者都超過閾值的情況下才指示移動。又一可能的實現將△俯仰與一個閾值進行比較并將△搖晃與另一閾值進行比較。在超過這些閾值之一或更多的情況下指示移動。可以使用實驗來設置最優閾值。這一方法將加速度讀數轉換成角度,以便基于角度而非原始加速度讀數(如圖7Α中)來進行與閾值的比較。可任選地,可以在步驟742處不提供指示,直至對于一個或多個樣本中的指定數量的樣本檢測到移動為止。類似地,可以在步驟744處不提供指示, 直至對于一個或多個樣本中的指定數量的樣本檢測到移動為止。在又一可能的實現中,決策步驟740將Δ俯仰和Δ搖晃的絕對值的總和與角度閾值進行比較,例如I Δ俯仰I+ I Δ搖晃I。如結合圖2提到的,相機具有用于對自身進行重新定位的電動機。又一方法整合了指示相機是否正在使用來自加速計的數據對自身進行重新定位的控制信號。一般而言, 在定位電動機正在操作時,加速計將指示移動。在一些情況下,在定位電動機不在操作時, 加速計也將指示移動。例如,在電動定位完成時,控制信號指示電動機不在操作。控制信號可以基于例如對定位電動機不在操作進行檢測的傳感器。然而,在控制信號指示電動機不再操作之后,由于定位電動機的某種運轉或由于它附連到相機,相機可能繼續移動一小段時間,例如幾分之一秒。在這種情況下,加速計可檢測這一移動并提供適當的動作,如延遲運動跟蹤。因而,定位電動機和加速計會提供相反的指示。在一種方法中,在檢測到定位電動機不在操作時,提供定位電動機不在操作的指示。即使在指示定位電動機不在操作期間,這一方法也響應于加速計檢測到深度相機的移動的指示而暫停運動跟蹤過程。因此,加速計指示有優先級。在另一種情況下,在檢測到定位電動機正在操作時,提供定位電動機正在操作的指示。即使在指示加速計沒有檢測到深度相機的移動期間,這一方法也響應于定位電動機正在操作的指示而暫停運動跟蹤過程。因此,定位電動機有優先級。一般而言,如果定位電動機和加速計之一或兩者指示存在移動,則可以斷定存在相機移動。這是尋求避免丟失實際移動的保守方法。
又一可能的方法使用多個加速計。一個實現跨該多個加速計來集體處理來自每一軸的讀數。例如,假定使用兩個加速計。對于每一時間點,從兩個加速計獲取Ax、Ay、和Az 樣本,例如 Axl (i)、Ax2 (i) ,Ayl (i)、Ay2 (i)、Azl (i)、以及 Az2 (i)。兩個 Ax 樣本 Axl (i)和 Ax2(i)可被求平均以獲取單個Ax(i)樣本,該單個Ax(i)樣本同在單個加速計的情況下那樣同等對待。類似地,兩個Ay樣本Ayl⑴和Ay2(i)可被求平均,并且兩個Az樣本Azl⑴ 和Az2(i)可被求平均。因而,通過跨來自多個三軸加速計的讀數來求平均,短期行進平均和長期行進平均是從來自該多個三軸加速計的讀數獲取的。在又一可能的實現中,來自每一加速計的讀數被用來確定是否檢測到運動,并且采取多數投票來確定是否提供運動的指示。例如,在這種情況下可以使用三個加速計,使得多數投票是決定性的。因而,如果這些加速計中的兩個或三個指示移動,則指示移動;否則, 不指示移動。圖8描繪了如圖6的步驟608所述的用戶的示例模型。模型800在ζ方向上面向深度相機,使得所示的截面是χ-y平面。注意,垂直的是y軸和橫向的是χ軸。在其他附圖中提供了類似的標記法。該模型包括多個參考點,如頭802的頂部、頭的底部或下巴813、 右肩804、右肘806、右腕808、和由例如指尖區域表示的右手810。右側和左側是從面向相機的用戶的觀點定義的。該模型還包括左肩814、左肘816、左腕818、以及右手820。還描繪了腰部區域822,以及右臀824、右膝826、右腳828、左臀830、左膝832和左腳834。肩線 812是在肩804和814之間的通常為水平的線。例如,還描繪了在點822和813的之間延伸的上軀干中心線825。圖9描繪如圖7A和7B中所述的那樣用于處理加速計讀數的示例坐標系。可以使用任何所需坐標系。在該示例中,y軸是垂直軸,ζ軸與相機的軸(例如相機所看的方向) 平行,并且χ軸同相機軸橫向地延伸。從原點伸出的向量表示給定讀數的加速度向量,其中加速度向量具有分別沿X、y、Z方向的分量Ax、Ay、Az。俯仰角度可以基于Az/Ay的正切來定義。搖晃角度可以基于Ax/Ay的正切來定義。偏航角度可以基于Ax/Az的正切來定義。 在一種方法中,χ軸在相機側面水平地延伸,y軸是垂直的,而ζ軸從相機的前方到后方水平地延伸。一般而言,可以檢測到俯仰、搖晃、以及偏航的變化。圖IOA描繪了其中玩家正在跳躍的場景中的示例原始加速計讀數。例如,一個或多個玩家可能正在深度相機所處的房間中跳躍、跑步、或進行其他游戲。在玩家跳躍時,相機處于接收來自該房間的地板的振動的表面上。波形1000、1002、以及1004分別描繪x、y、 以及ζ軸上的連續時間點的原始加速計讀數。水平軸指示從左到右進展的時間,而垂直軸指示幅度。在該示例中,Ay基本上比Ax和Az更高,因為尚未對重力進行校正。可以看到, 存在三個分開的擾動。在其他時間存在一些噪聲。
圖IOB基于圖IOA分別在波形1008和1006處描繪了長期和短期平均俯仰值。可以看到,波形1008中的各峰值中的一些由于長期平均對短期平均的性質而相對于波形1006 的對應峰值出現得更晚。圖IOC描繪了圖IOB的長期和短期平均俯仰值之間的差。搖晃和/或偏航的對應數據未被描繪,但在本質上將類似于圖IOC的波形。波形1010描繪波形1008和1006之間的差,并且閾值1016是諸如圖7B的步驟740中的角度閾值。波形1010不超過角度閾值 1016,從而指示未檢測到運動。比較圖IOC和圖IOD可以看到,這些結果在使用任一技術都未檢測到移動方面是一致的。圖IOD基于圖IOA描繪差的總和以及與閾值的比較,從而指示在何時檢測到移動。 波形1012描繪差的總和(圖7A,步驟708)。這是|x軸長平均-χ軸短平均| + |y軸長平均-y軸短平均I X縮放因子+ Iz-軸長平均-ζ軸短平均I。在該示例中,波形1012不超過閾值水平1014(圖7A,步驟710),所以在所描繪的時間段未檢測到移動。因而,在一種方法中,波形1012是三個波形的總和,這三個波形基于由波形1000、1002、以及1004所表示的各單獨軸的平均。圖10A-D在時間上彼此大致對齊。圖IlA描繪了其中玩家正在移動的場景中的示例原始加速計讀數。例如,用戶可能在深度相機正在運作時手動地更改深度相機的位置。波形1100、1102、以及1104分別描繪x、y、以及ζ軸上的連續時間點的原始加速計讀數。水平軸指示進展的時間,而垂直軸指示幅度。如前所述,在該示例中,Ay基本上比Ax和kz更高,因為尚未對重力進行校正。圖IlB基于圖IlA分別在波形1110和1108處描繪了長期和短期平均俯仰值,以及在波形1106處描繪了長期和短期平均俯仰值之間的差。搖晃和/或偏航的對應數據未被描繪,但類似于圖IlB的波形。波形1108和1110被示為在波形開始處在左手側稍微偏離零,以便可以看到它們的細節。還描繪了角度閾值1107(圖7B,步驟740)。波形1106的一部分1117超過閾值1107,從而指示檢測到移動。圖IlC基于圖IlB和搖晃和/或偏航的對應數據來描繪差的總和以及與閾值的比較,從而指示在何時檢測到移動。波形1012描繪差的總和(圖7A,步驟708)。波形1112 在波形部分1116、1118、1120、以及1122處超過閾值水平1114(圖7A,步驟710),所以對于這些波形部分和相應的時間范圍而言檢測到移動。因而,在一種方法中,波形1112是三個波形的總和,這三個波形基于由波形1100、1102、以及1104所表示的各單獨軸的平均。圖 IlA-C在時間上彼此大致對齊。比較圖IlB和圖IlC可以看到,這些結果在檢測到不同的時刻處的移動方面不同。 但是,搖晃和/或偏航的效果未被分開描繪。圖10A-11C是圖7A的實現的示例。可以通過根據圖7B的步驟處理圖IOA或IlA 的原始數據來提供圖7B的實現的對應波形。在此所述技術的上述詳細描述是為了說明和描述而提供的。并非旨在窮舉本技術或將其限于所公開的精確形式。鑒于上述教導,許多修改和變型都是可能的。選擇上述實施例來最好地解釋本技術的原理及其實踐應用,從而使本領域其他人能夠在各種實施例中并用各種適于所構想的特定用途的修改一起最好地利用本技術。本發明的范圍旨在由所附權利要求書來限定。
權利要求
1.一種用于檢測3-D深度相機中的運動的處理器實現的方法,包括以下處理器實現的步驟在連續時間點上從所述3-D深度相機(20)中的三軸加速計(33)獲取χ軸、y軸、以及 ζ軸方向上的加速度讀數(Ax、Ay、Az),并且對于每一時間點獲取在χ-軸、y_軸、以及ζ-軸中的每一個軸方向上的加速計讀數的短期和長期行進平均;獲取在χ-軸、y-軸、以及ζ-軸中的每一個軸的加速計讀數的短期和長期行進平均之間的差;獲取χ-軸、y_軸、以及ζ-軸中的每一個軸的差的絕對值; 基于所述絕對值來獲取總和; 確定所述總和是否超過閾值水平;如果所述總和超過所述閾值水平,則提供檢測到所述3-D深度相機的移動的指示;以及如果所述總和未超過所述閾值水平,則提供未檢測到所述3-D深度相機的移動的指
2.如權利要求1所述的處理器實現的方法,其特征在于,還包括所述總和是從Ix軸長平均-χ軸短平均| + {縮放因子X Iy軸長平均_y軸短平均|} + |z 軸長平均-ζ軸短平均I,其中0 <縮放因子< 1并且y軸是垂直軸,使得在所述垂直軸方向上的移動相對于在χ軸或ζ軸方向上的移動而言被削弱。
3.如權利要求1或2所述的處理器實現的方法,其特征在于,還包括 響應于指示檢測到所述3-D深度相機的移動來暫停運動跟蹤過程;以及隨后響應于指示不再檢測到所述3-D深度相機的移動來恢復所述運動跟蹤過程。
4.如權利要求1至3中的任一項所述的處理器實現的方法,其特征在于對于每一時間點,并且對于χ-軸、y-軸、以及ζ-軸中的至少一個軸,在m個時間點上求取短期行進平均,并且在N2個時間點上求取長期行進平均,其中1.3xm <N2 < 1.7x Ni。
5.如權利要求1至4中的任一項所述的處理器實現的方法,其特征在于對于每一時間點,并且對于χ-軸、y_軸、以及ζ-軸中的每一個軸,在m個時間點上求取短期行進平均,并且在N2個時間點上求取長期行進平均,其中1.3xm <N2 < 1.7x Ni。
6.如權利要求1至5中的任一項所述的處理器實現的方法,其特征在于,還包括 響應于檢測到所述3-D深度相機的移動的指示,經由用戶界面提供指示所述3-D深度相機已被擾動的消息。
7.如權利要求1至6中的任一項所述的處理器實現的方法,其特征在于 χ軸、y軸、以及ζ軸中的一個軸是垂直軸;所述絕對值之一是對于所述一個軸的;以及在獲取所述總和之前使用縮放因子來縮減所述絕對值中的所述一個。
8.如權利要求1至7中的任一項所述的處理器實現的方法,其特征在于,所述3-D深度相機包括定位電動機(35),所述方法還包括在檢測到所述定位電動機不在操作時,提供所述定位電動機不在操作的指示;以及即使在指示所述定位電動機不在操作期間,也響應于檢測到所述深度相機的移動的指示而暫停運動跟蹤過程。
9.如權利要求8所述的處理器實現的方法,其特征在于,還包括在檢測到所述定位電動機正在操作時,提供所述定位電動機正在操作的指示;以及即使在指示未檢測到所述3-D深度相機的移動期間,也響應于所述定位電動機正在操作的指示而暫停運動跟蹤過程。
10.一種其上包含有計算機可讀軟件的有形計算機可讀存儲,所述計算機可讀軟件用于對至少一個處理器編程來執行用于檢測3-D深度相機的運動的一種方法,所述方法包括從所述3-D深度相機00)中的三軸加速計獲取χ軸、y軸、以及ζ軸方向上的加速度讀數(Ax、Ay、Az)的各時間點,并且對于每一時間點獲取在χ-軸、y-軸、以及ζ-軸中的每一個軸方向上的加速計讀數的短期和長期行進平均;基于所述加速度讀數的短期和長期行進平均獲取所述3-D深度相機的俯仰值的短期和長期變化以及所述3-D深度相機的搖晃值的短期和長期變化; 獲取俯仰值的短期和長期變化之間的差(△俯仰); 獲取俯仰值的短期和長期變化之間的差的絕對值; 獲取搖晃值的短期和長期變化之間的差(△搖晃); 獲取搖晃值的短期和長期變化之間的差的絕對值;確定(a)俯仰值的短期和長期變化之間的差的絕對值以及(b)搖晃值的短期和長期變化之間的差的絕對值中的至少一個是否超過閾值;以及在超過所述閾值時提供檢測到所述3-D深度相機的移動的指示。
全文摘要
為了檢測運動捕捉系統中的深度相機的移動,處理來自深度相機中的加速計的讀數以提供x軸、y軸、以及z軸中的每一個軸的短期和長期移動平均。對于每一個軸,獲得短期和長期平均之間的差。通過對所有三個軸上的每一個差的絕對值求和來獲取差的總和。隨后將差的總和與閾值進行比較以確定是否檢測到移動。在另一種方法中,加速計讀數的短期和長期平均被轉換成俯仰和搖晃值,并且俯仰和搖晃值與閾值分開比較以確定是否檢測到移動。在檢測到移動時可以臨時暫停跟蹤算法。在垂直方向上的讀數可通過縮放因子來削弱。
文檔編號G06F3/01GK102289815SQ20111012520
公開日2011年12月21日 申請日期2011年5月3日 優先權日2010年5月3日
發明者S·阿德曼 申請人:微軟公司