Kinect傳感器系統(tǒng)工作方案
PrimeSense技術(shù)是微軟(Microsoft)Kinect傳感器系統(tǒng)的基礎(chǔ),該傳感器系統(tǒng)被設(shè)計為與微軟Xbox 360控制臺游戲系統(tǒng)一起工作(圖1)。它的工作原理非常簡單,但執(zhí)行過程相當(dāng)復(fù)雜。PS1080系統(tǒng)級芯片(SoC)則是一款完美支持PrimeSense技術(shù)的產(chǎn)品。
這款芯片獨立地管理音頻和視頻信息,這些信息都可以通過USB連接進行訪問。USB僅為PrimeSense單元提供電源,Kinect還需要額外的電源供給它的伺服系統(tǒng)。
大多數(shù)設(shè)計工程師至少都非常熟悉Kinect與Xbox一起工作的方式。Kinect主要用來向游戲程序提供有關(guān)玩家的信息。玩家需要位于電視機前方,并且面對Kinect,然后通過移動和手勢與游戲發(fā)生交互。了解Kinect如何獲得這些信息是非常有趣的一件事。
在Kinect推出之前,像這類手勢識別是使用LIDAR(激光誘導(dǎo)差分吸收雷達)或激光雷達實現(xiàn)的。超聲波傳感器不能提供足夠的精度。另外一種方法是使用圖像分析,但非常復(fù)雜,運算要求很高。
PrimeSense使用截然不同的方法。它是從傳感器投射出紅外點陣圖案,然后使用帶紅外濾波器的傳統(tǒng)CMOS圖像傳感器進行檢測。圖案會根據(jù)反射光線的物體發(fā)生改變。那些點的大小和位置也會隨物體與發(fā)射源的距離變化而變化。
PS1080接收來自圖像傳感器的結(jié)果,然后通過判斷差異來產(chǎn)生深度景象。深度景象的分辨率是1024x758(VGA),但CMOS傳感器具有高得多的分辨率。能夠被硬件捕獲的圖像分辨率實際上是1600x1200,這是提供深度景象所必須的,否則就沒有足夠的分辨率來檢測投射出的紅外點陣的位置和大小。
PS1080芯片的主要工作是識別紅外點,將它們的狀態(tài)信息轉(zhuǎn)換成深度值。這不是一個簡單的任務(wù),也不是一般的微處理器能夠處理得了的。幸運的是,PS1080可以按30幀/秒的速率完成這一任務(wù)。在一個像素代表的區(qū)域內(nèi)一般能找到好幾個點。
最短距離在1米以下(0.8米),最大深度約3.5米。這個范圍正好適合位于高清電視機前面的游戲玩家??梢晠^(qū)域是一個矩形錐體,水平垂直方向分別是58度和45度。
分辨率和檢測質(zhì)量取決于物體相對傳感器的位置,但對于玩游戲以及機器人對象識別與碰撞避免而言上述指標(biāo)足夠應(yīng)付。在2米的距離處,深度分辨率是10毫米,而水平與垂直分辨率可達3毫米。
視頻傳感器和深度CMOS傳感器緊鄰放置,以方便深度景象和彩色圖像的合并。PS1080通過執(zhí)行一個注冊過程來正確地對齊彩色圖像(RGB)和深度(D)信息。RGBD信息就是需要傳送給主機的內(nèi)容。
對于需要避開某個物體的機器人來說僅僅深度信息就可以了。有時候在游戲中也足夠用了,具體要看在做什么動作,有多少個玩家要被跟蹤。而RGBD信息可以被進一步分析,使系統(tǒng)識別出物體以及它們之間的關(guān)系,比如手-臂-身體的關(guān)系。
主機完成更高層的對象和動作識別。OpenNI(自然交互)組織提供了框架和應(yīng)用編程接口(API),用于處理像Kinect這樣的設(shè)備。OpenNI支持包括視頻和音頻設(shè)備在內(nèi)的許多設(shè)備(圖3),還能通過更高端的中間件執(zhí)行對象跟蹤等功能。
Kinect在系統(tǒng)中集成了一對麥克風(fēng)。PS1080可以處理4個外部數(shù)字音頻源,并通過USB接口以同步方式提供可視視頻、深度和音頻信息。
微軟公司認(rèn)識到除了與Xbox一起工作外,Kinect應(yīng)該還能發(fā)揮更大的用處。Kinect接口早就已經(jīng)存在,如今微軟針對這個接口發(fā)布了一套軟件開發(fā)套件(SDK)。商用版可能已經(jīng)投入使用,而PrimeSense也擁有相應(yīng)的軟件開發(fā)套件。
PrimeSense技術(shù)具有很好的可擴展性,因此非游戲和可能的非機器人應(yīng)用對它也有興趣。例如,精確接近檢測可能不要求可視的視頻部分。PrimeSense技術(shù)無疑將改變我們的生活方式。