【翻譯】Kinect v1和Kinect v2的徹底比較
【原文:http://www.cnblogs.com/TracePlus/p/4136297.html】
本連載主要是比較Kinect
for Windows的現行版(v1)和次世代型的開發者預覽版(v2),以C++開發者為背景介紹進化的硬體和軟體。本文主要是對感測的配置和執行條件進行徹底的比較。
本連載介紹的Kinect for Windows Developer Preview是暫定的,軟體、硬體以及API有可能因為最終的產品版發生變更,還請諒解。
關於本連載
本連載主要是比較次世代型的Kinect for Windows(後面稱作Kinect
v2預覽版)和現行型的Kinect for Windows(後面稱作Kinect
v1)的同時,介紹面向c++開發者而進化的硬體和軟體。(本網站也釋出了對應C#/Visual Basic開發者的內容,.NET開發者可以同時參考[新型Kinect
for Windows v2 Developer Preview programing入門])
次世代型的Kinect for Windows
2012年美國微軟發售的Kinect v1,因為可以很方便就能取得Depth(深度)和 skeleton(人物姿勢)等資訊,被全世界的開發者和研究人員關注。
2014年預定發售的Kinect v2,預測在硬體和軟體上會做很大的進化,在銷售前,開發者向的預覽版的Kinect
v2(感測器)和SDK v2(軟體開發套件)很早就釋出了出來。
還有,因為這個開發者向的早期提供程式是必須簽訂NDA(密碼保持契約),本稿有不能公佈的事項也事先請各位諒解。
Kinect v1和Kinect v2預覽版的外觀比較
Kinect v1(圖1)和Kinect v2 預覽版(圖2)的外觀的照片。
圖1 Kinect for Windows v1(現行型)
Kinect v1的Depth感測器,採用了「Light
Coding」的方式,讀取投射的紅外線pattern,通過pattern的變形來取得Depth的資訊。為此,Depth感測器分為投射紅外線pattern的IR
Projector(左)和讀取的這個的IR Camera(右)。還有Depth感測器中間還搭載了Color Camera。
Light Coding是以色列的PrimeSense公司的Depth感測器技術,於2013年被美國蘋果公司收購。
圖2 Kinect for Windows v2(次世代型)預覽版
Kinect V2預覽版的Depth感測器,採用的是「Time of Flight(TOF)」的方式,通過從投射的紅外線反射後返回的時間來取得Depth資訊。Depth感測器看不到外觀,不過Color Camera旁邊是紅外線Camera(左)和投射脈衝變調紅外線的Porjector(右)。
微軟過去收購過使用TOF方式處理Depth感測器技術的公司(注:應該是指的3DV),已經在使用這個技術,不過沒有詳細的公佈。
Kinect v1和Kinect v2預覽版的配置比較
Kinect v1和Kinect v2預覽版的感測器的配置比較在表1顯示。
Kinect v1 | Kinect v2預覽版 | ||
---|---|---|---|
顏色(Color) | 解析度(Resolution) | 640×480 | 1920×1080 |
fps | 30fps | 30fps | |
深度(Depth) | 解析度(Resolution) | 320×240 | 512×424 |
fps | 30fps | 30fps | |
人物數量(Player) | 6人 | 6人 | |
人物姿勢(Skeleton) | 2人 | 6人 | |
関節(Joint) | 20関節/人 | 25関節/人 | |
手的開閉狀態(Hand State) | △(Developer Toolkit) | ○(SDK) | |
檢測範囲(Range of Detection) | 0.8~4.0m | 0.5~4.5m | |
角度(Angle)(Depth) | 水平(Horizontal) | 57度 | 70度 |
垂直(Vertical) | 43度 | 60度 | |
(Tilt Motor) | ○ | ×(手動) | |
複數的App | ×(単一的App) | ○ |
表1是Kinect v1和Kinect v2預覽版的感測器的配置比較
Kinect v1的Color Camera的解析度是640x480較低,不能取得非常漂亮的影象,Kinect v2預覽版的解析度大幅提高,能取得1920×1080非常漂亮的影象(圖3)。
(注:v1的要求是USB2.0理論傳輸速率是60MB/s,v2是USB3.0理論傳輸速率是500MB/s。可以計算一下,以XRGB Color為例,30fps,那麼每秒所需傳輸的資料大小為640
x 480 x 4 x 30約為35M;再加上USHORT格式的Depth Color,30fps,大小為320 x 240 x 2 x 30約為4M。總計約為40MB/s,因為頻寬有限,所以在保證畫面幀率穩定的情況下,解析度只能如此,而且基本上必須獨佔一個USB
Controller。再算算v2的情況,Color = 1920 x 1080 x 4 x 30 約為237M,Depth = 512 x 424 x 2 x 30約為12M,總計約為250M/s。所以非USB3.0不可,否則傳輸不了這麼大的資料量。顯而易見,Color
Map是最佔頻寬的,其實可以通過一些其他格式,比如I420或MJPG來減少資料量,然後通過CPU或GPU來進行解壓和回放。)
圖3 Kinect v1和Kinect v2預覽版的Color
Kinect v2預覽版的Depth感測器的解析度也提高到512×424,而Kinect v1是可以取640×480解析度的Depth資料,乍一看規格好像下降了,其實Kinect v1的Depth感測器的物理解析度是320x240,Up
Sacling到640x480而已(注:猜測是Runtime處理的)。另外,Depth感測器的方式也是從Light Coding變更為Time of Flight(TOF)。
不能詳細敘述,不過Kinect V2預覽版Depth資料的精度也提高了(圖4),關於精度還敬請等待產品版。
圖4 Kinect v1和Kinect v2預覽版的Depth
Kinect v1,v2預覽版可以取得Player(可識別的人體)數量都是6人。Kinect v2預覽版因為Depth感測器的解析度提高了,用Player資料只需要簡單的剪下就可以很漂亮得把背景和人物分離。
Kinect v1可以取得全部關節(Joint)的skeleton的數量是2人,隨著Depth感測器的解析度上升和視角的寬廣,Kinect v2預覽版變得能取得6人。
還有,Kinect v1能取得的Joint是20個Joint每人,Kinect v2預覽版變為能取得25個Joint。具體的如圖5所示,頭(Neck),指尖(HAND_TIP_LEFT,HAND_TIP_RIGHT),大拇指(THUMB_LEFT,THUMB_RIGHT),增加了這5個Joint。不僅僅是手的位置,大拇指和指尖的細小資訊也可以獲取到。
Hand State(手的開閉狀態)的識別,Kinect
v1是靠Developer Toolkit裡的「Kinect Interaction」庫來支援,不過在Kinect
V2預覽版SDK裡是標準支援。
Kinect v1和Kinect v2預覽版可以取得的Joint
Kinect v1為了搖頭裝載了傾斜電機(Tilt motor),也有視角擴充套件,Kinect v2預覽版沒有搭載Tilt
motor,靠手動來搖頭。
Kinect v1不能多個應用程式同時連線到一個感測器。Kinect v2預覽版通過「Kinect Service」,可以讓多個應用程式同時從感測器取得資料(參考圖6)
現在,Kinect Service作為常駐程式被提供, 一般認為產品版裡會成為Windows的服務(Service)。
圖6 通過Kinect Service,對應多個應用程式
Kinect v1和Kinect v2 預覽版的執行環境的比較表(表2)。
Kinect v1 | Kinect v2預覽版 | |
---|---|---|
OS | Windows 7以後 | Windows 8以後 |
編譯器(Compiler) | Visual Studio 2010以後 | Visual Studio 2012以後 |
接続端子(Connector) | USB 2.0 | USB 3.0 |
CPU | Dual-Core 2.66GHz | Dual-Core 2.66GHz |
GPU | DirectX 9.0c | DirectX 11.0 |
RAM | 2.0GBytes | 2.0 GBytes |
Kinect v1要在Windows 7以後的版本上執行,Kinect v2要求是在Windows 8 執行。關於Visual Studio也要求是2012以後的版本。
Kinect v1要求USB 2.0(或更快的USB)來執行,因為Kinect 2預覽版感測器的解析度也提高了,需要更快的USB 3.0來執行。Kinect v1和Kinect v2預覽版的專有USB匯流排頻寬都沒有變化。
Kinect v1和Kinect v2預覽版都有與部分USB Host Controller不相容而導致不能正常執行的情況,現在是Renesas和Intel的USB
3.0 Host Controller可以執行。臺式PC也可以增加USB3.0擴充套件卡來對應。
CPU方面,和Kinect
v1一樣,要求Dual Core 2.66 GHz以上。「時脈頻率較低」一類的執行環境也稍微下降了,不是特別差的情況都可以執行,不過注意感測器解析度提高,取得的資料的處理消耗也上升了。
Kinect v1要求的是支援DirectX 9.0c的GPU(Kinect Fusion除外),Kinect
v2預覽版要求支援DirectX 11.0以後的GPU,像筆記本這種沒有裝載NVIDIA
GeForce和AMD Radeon外接GPU(獨立顯示卡)的很多無法執行,而像有Intel HD Graphics這種支援DirectX
11.0以後的處理器內建的GPU(整合顯示卡)是可以執行的。
如上展示了Kinect v2預覽版的必要執行環境,和前述一樣在產品版中有變更的可能性,現在還不需要著急準備對應環境。關於USB Host
Controller的相容性今後也有解決的可能,希望起到參考的作用。
總結
這次徹底的比較了Kinect v1和Kinect v2預覽版的感測器配置和必要執行環境,下一回是關於使用Kinect
SDK v2.0預覽版的C++的程式設計方法在v1和v2預覽版上的比較和介紹。
相關文章
- Kinect for Windows SDK開發入門:Kinect FusionWindows
- Kinect開發學習筆記之(一)Kinect介紹和應用筆記
- Kinect開發學習筆記之(三)Kinect開發環境配置筆記開發環境
- Kinect V2 開發專題(2)專案配置與API概況API
- 微軟開源 Kinect 挽留開發者微軟
- Kinect開發學習筆記之(二)Kinect開發學習資源整理筆記
- Kinect V2 開發專題(1)軟硬體需求與安裝測試
- Kinect影象 骨骼點夾角處理
- 【轉】Kinect嚐鮮(1)——第一個程式
- 翻譯-Salt與Ansible全方位比較
- 卡內基梅隆大學:研究顯示Kinect教育遊戲比普通教育遊戲更有效遊戲
- Windows 10官方中文宣傳片:神翻譯徹底看醉Windows
- Kinect Fusion Basics-WPF C# Sample程式碼解析C#
- Kinect體感機器人(二)—— 體感識別機器人
- Kinect體感機器人(一)—— 整體設計機器人
- ROS入門 TX2+Turtlebot+Kinect2.0配置記錄ROS
- Kinect開發學習筆記之(七)骨骼資料的提取筆記
- 【譯】徹底理解 Android 中的陰影Android
- Kinect SDK v1.7 新特性、互動框架與新概念框架
- ubuntu14.04 and ros indigo install kinect driver--16UbuntuROSGo
- ROS下Kinect2的驅動安裝及簡單應用ROS
- Kinect體感互動解決方案——體感漫畫拍照遊戲遊戲
- 從 webpack v1 遷移到 webpack v2Web
- js 深比較和淺比較JS
- 翻譯的未來:翻譯機器和譯後編譯編譯
- [譯] 原生 iOS(Swift) 和 React-Native 的效能比較iOSSwiftReact
- 徹底搞懂Object和Function的關係ObjectFunction
- 揭秘iPhone X臉部識別攝像頭:就是一個新版KinectiPhone
- Kinect For Windows2.0開發第一篇之搭建環境Windows
- Kinect開發學習筆記之(八)彩色、深度、骨骼和使用者摳圖結合筆記
- 比譯 for mac - 便捷的翻譯和詞典應用 支援M1晶片Mac晶片
- CMM編譯器和C編譯器過程呼叫實現的比較編譯
- ejb 和 javabean的比較JavaBean
- 索引的分析和比較索引
- ImageMagic 和 GraphicsMagick 的比較
- Kinect開發學習筆記之(六)帶遊戲者ID的深度資料的提取筆記遊戲
- Kinect體感機器人(三)—— 空間向量法計算關節角度機器人
- Go和Python比較的話,哪個比較好?GoPython