Kinect開發學習筆記之(一)Kinect介紹和應用
【原文:http://blog.csdn.net/zouxy09/article/details/8145592】
Kinect開發學習筆記之(一)Kinect介紹和應用
一、Kinect簡介
Kinectfor Xbox 360,簡稱 Kinect,是由微軟開發,應用於Xbox 360 主機的周邊裝置。它讓玩家不需要手持或踩踏控制器,而是使用語音指令或手勢來操作 Xbox360 的系統介面。它也能捕捉玩家全身上下的動作,用身體來進行遊戲,帶給玩家“免控制器的遊戲與娛樂體驗”。其在2010年11月4日於美國上市,建議售價149美金。Kinect在銷售前60天內,賣出八百萬部,目前已經申請金氏世界記錄,成為全世界銷售最快的消費性電子產品。
2012年2月1日,微軟正式釋出面向Windows系統的Kinect版本“Kinect for Windows”,建議售價249美金。而在2012年晚些時候,微軟還將釋出面向“教育使用者”的特別版Kinect。(以上來自wiki百科)
1.1、硬體
Kinect有三個鏡頭,中間的鏡頭是 RGB 彩色攝影機,用來採集彩色影象。左右兩邊鏡頭則分別為紅外線發射器和紅外線CMOS 攝影機所構成的3D結構光深度感應器,用來採集深度資料(場景中物體到攝像頭的距離)。彩色攝像頭最大支援1280*960解析度成像,紅外攝像頭最大支援640*480成像。Kinect還搭配了追焦技術,底座馬達會隨著對焦物體移動跟著轉動。Kinect也內建陣列式麥克風,由四個麥克風同時收音,比對後消除雜音,並通過其採集聲音進行語音識別和聲源定位。
1.2、軟體開發環境
1.2.1、非官方組合
一開始微軟對Xbox 360推出Kinect的時候,並沒有在windows的開發包。而由於Kinect強大的功能和相對低廉的價格,geeks們紛紛表示希望能在電腦上用它。於是就有多位大牛開發了驅動,目前我瞭解到的有三個:
1)CL NUI Platform
由NUI的大牛AlexP開發(他開發的其他著名產品包括PS3的windows驅動),可以到這裡下載,目標平臺是windows7,能夠獲取彩色攝像頭,深度感測器以及加速度感測器資料,使用簡單方便。
2)OpenKinect/libfreenect
由號稱第一個破解Kinect的Hector Martin發起,可以到這裡下載,目標平臺是Linux and Mac,據說有人成功移植到了windows上。因為很多geek都是Mac的擁躉,所以開發參與者眾多,不僅僅是個可以獲得資料的driver,geek們還寫了其他高階的東西,比如我前面提到的骨骼化,將彩色攝像頭作為紋理貼在深度資料上等等,很吸引人啊。
3)OpenNI
OpenNI(opennatural interface開放自然互動)是一個多語言,跨平臺的框架,它定義了編寫應用程式,並利用其自然互動的API。可以到這裡下載。從名字判斷其終極目標大約是實現少數派報告的效果,從目前放出來的一些demo,恐怕已經超越了這個終極目標。它不是專為Kinect開發,但有Kinect的生產商PrimeSense的支援。這個感覺也是目前相對來說用的比較多的非官方組合:SensorKinect + NITE + OpenNI;其中SensorKinect是Kinect的驅動。NITE是PrimeSense提供的中介軟體,可以分析Kinect讀取的資料,輸出人體動作等等。
1.2.2、微軟官方SDK
Kinect體感遊戲在Xbox 360 上獲得很好的評價,但是對於 Windows 平臺上的開發卻一直只能使用非官方的解決方案(上面所說),例如NKinect 配合CL NUI SDK;但是微軟終於在2011 年 6 月推出了 Kinect forWindows SDK Beta,特別是可以使用 C# 與.NETFramework 4.0 來進行開發。Kinect for Windows SDK主要是針對Windows7設計,內含驅動程式、豐富的原始感測資料流程式開發介面、自然使用者介面、安裝檔案以及參考例程。Kinect for Windows SDK可讓使用C++、C#或VisualBasic語言搭配MicrosoftVisualStudio2010工具的程式設計師輕易開發使用。目前最新是V1.6 。
Kinectfor Windows SDK的下載地址:
http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx
Kinect SDK目前只支援Windows 7,分為x86和x64兩個版本。開發工具方面還需要.NET Framework 4.0和Visual Studio 2010 (最低Express版本)的支援。這個在後面的開發環境的配置中再做介紹。
1.2.3、非官方和官方開發包的優缺點
1)官方SDK:
優點:
提供了音訊支援、調整傾角的轉動電機、在全身跟蹤骨骼跟蹤方面:非標準姿勢檢測(相對於OpenNi的投降姿勢…),頭部、手、腳、鎖骨檢測以及關節遮擋等細節上的處理更為細緻(但精度是否更高還不能確定)。此外,支援多感測器(多臺Kinect);
缺點:
微軟對非商業使用的限制。此外,未提供手勢識別和跟蹤功能,未實現RGB影象/深度影象的互對齊,只是提供了對個體座標系的對齊。在全身骨骼跟蹤中,SDK只計算了關節的位置,並未得出其旋轉角度。從可移植的角度來看,SDK beta只能用於Kinect/Win7平臺,而OpenNi還至少支援華碩的WAVI Xtion體感裝置,今後支援的硬體平臺還可能更多。相比較而言SDK beta不支援Unity3D遊戲引擎、不支援記錄/回放資料寫入磁碟、不支援原始紅外視訊資料流、也不支援像OpenNi一樣的角色入場和出場的事件響應機制。
2)非官方OpenNI/NITE:
優點:
可用於商業開發、包含手勢識別和跟蹤功能、可自動對齊深度影象和RGB影象,全身跟蹤、關節旋轉角度計算、看起來效能較好、已有眾多遊戲產品應用、支援記錄/回放資料寫入磁碟、支援原始紅外視訊資料流、支援角色入場和出場的事件響應機制。支援Primesense和華碩的WAVI Xtion硬體平臺和windows、Linux和Mac等軟體平臺。自帶的程式碼全面支援Unity3D遊戲引擎。
缺點:
未提供音訊功能、不支援調整傾角的轉動電機、在全身跟蹤骨骼跟蹤方面:無法跟蹤頭部、手、腳和鎖骨的旋轉動作,需要標準姿勢檢測(即著名的投降姿勢…),關節遮擋等細節上的處理似乎存在演算法bug。不能自動安裝並識別Kinect多機環境。安裝過程較為繁瑣,特別是NITE還要申請開發證書編碼。OpenNi也沒有提供可用視訊和深度圖輸入的事件觸發機制(但OpenNI提供了類似功能的函式可使用,雖然不是回撥函式,但是也很好用)。
總結:
OpenNI最大的優勢就是允許跨平臺多裝置,以及商業應用。但從原始資料的採集和預處理技術上看,微軟的SDK似乎更穩定一些,況且還提供了不錯的骨骼和語音支援。對於部分身體部位識別方面的功能,SDKbeta沒有提供區域性識別和跟蹤,這需要自己的後續開發(至少在相當一段時期內微軟可能都不會提供此類功能)。OpenNi/NITE雖然提供了手勢識別和跟蹤,然而在全身骨骼姿勢識別和跟蹤上還要更多借鑑微軟的產品。
因此,按照目前在社群中的表現,SDK beta和OpenNi/NITE孰優孰劣還真無法一下子確定。而且隨著越來越多的開發者加入微軟這一方,SDK beta的普及可能會更快,但在更高層次的應用上,對二者的選用往往是需要一定智慧的。
(這部分參考:http://www.hanyi.name/blog/?p=330)
二、Kinect應用開發彙總
本文(百度文庫上面的內容,來源未知)彙總了當前使用Kinect SDK for Windows 開發出的各種各樣的應用,點選相應的連結可以看到對應Kinect應用的Demo視訊。
虛擬應用
Kinect試衣鏡,這款基於kinect體感技術的神奇的試衣鏡,讓客戶可以快速的試穿衣服,提高銷售效率和企業形象。
http://v.youku.com/v_show/id_XMjU4MjExNjgw.html
Kinect自制應用3D試衣間
http://v.youku.com/v_show/id_XMjg0MDA3MDYw.html
3D建模
3D攝像機, 用兩個KINECT實現3D攝像機的基本效果。
http://v.youku.com/v_show/id_XMjI3MDQ2MjEy.html
雕塑工具,立等可取Kinect成街頭快速人像雕塑工具,利用Kinect對人體進行3D建模,然後根據人體的3D資訊,連線相應的塑模裝置,塑造出人體塑像。
http://v.youku.com/v_show/id_XMjU2Njg2MzE2.html
機械控制
用Kinect 操控遙控直升機
http://v.youku.com/v_show/id_XMjgzOTYxODk2.html
Kinect Robo,使用Kinect作為機器人的頭,通過kinect檢測周圍環境,並進行3D建模,來指導機器人的行動。
http://v.youku.com/v_show/id_XMjIzNDMyMjg0.html
Kinect控制高達機械人
http://v.youku.com/v_show/id_XMjM3NDUxMjg4.html
虛擬樂器
空氣吉他,通過Kinect手勢操作虛擬吉他彈奏音樂。
http://v.youku.com/v_show/id_XMjI5NjM3NzMy.html
Kinect彈奏中國古代樂器,通過手勢的改變可以演奏出不同中國古代樂器的聲音。
http://v.youku.com/v_show/id_XMjI1MDA4MTM2.html
虛擬娛樂
Kinect破解“初音”,將體感控制應用到漫畫人物——初音上。
http://v.youku.com/v_show/id_XMjMxNjQ5MzAw.html
變身奧特曼,捕捉玩家骨架資料,虛擬為奧特曼的形態與之隨動,並且附加一些特技效果。
http://v.youku.com/v_show/id_XMjM1MTY1NDY4.html
Kinect破解玩光劍,Kinect檢測玩家的動作,虛擬出光劍的影像,與之隨動。
http://v.youku.com/v_show/id_XMjI0NTIzOTIw.html
計算機相關應用
Kinect手勢操作瀏覽器,通過Kinect手勢對瀏覽器進行翻頁,下拉,放縮等操作。
http://v.youku.com/v_show/id_XMjI1MjczMzg4.html
Air Presenter,讓你的演講從此與眾不同,用kinect進行演講的軟體。
http://v.youku.com/v_show/id_XMjU1MTMyNzky.html
Kinect多點觸控,使用kinect實現隔空多點觸控,瀏覽圖片、地圖等。
http://v.youku.com/v_show/id_XMjM1MzE2MTY0.html
Kinect體感控制看片,第四軍醫大學西京醫院骨科的醫生們將破解的kinect應用在手術室,在術中,手術者可通過體感控制檢視患者的影像資料。大大方便了醫生手術,減少了手術室的人員流動。
http://v.youku.com/v_show/id_XMjM2Nzg2NDky.html
虛擬實驗
Kinect蠟筆物理,使用Kinect手勢繪圖,通過體感控制所繪圖形,並使之具有物理特性,比如重力,吸引力等。
http://v.youku.com/v_show/id_XMjI4MDMwMzM2.html
用Kinect控制閃電(特斯拉線圈)
http://v.youku.com/v_show/id_XMjY5NjE2MzQ0.html
遊戲
Kinect破解玩馬克思佩恩
http://v.youku.com/v_show/id_XMjM2NjYxNDg0.html
kinect破解玩求生之旅2 體感打殭屍
http://v.youku.com/v_show/id_XMjM3Mjk5MjQw.html
Kinect破解玩魔獸世界
http://v.youku.com/v_show/id_XMjMzMDM1MzI0.html
Kinect破解玩街頭霸王
http://v.youku.com/v_show/id_XMjM4MjkzNjA0.html
Kinect破解玩超級馬里奧兄弟
http://v.youku.com/v_show/id_XMjI1NzY1OTM2.html
Kinect破解玩兵者詭道
http://v.youku.com/v_show/id_XMjM0NDk2MDg4.html
Kinect破解玩 現代戰爭
http://v.youku.com/v_show/id_XMjM1NjU4NjE2.html
一群來自卡內基梅隆的學生使用Kinect的互動特點實現了18個各種各種的有趣的想法。他們僅僅用了兩週的時間,從大二學生到研究生不等。讓我們來看一下他們實現的奇思妙想吧!
原文及視訊資訊連結http://golancourses.net/2011spring/projects/project-3-interaction/
1. Comic Kinect
此示例主要應用了Kinect的骨架跟蹤技術和玩家分段資料,將拳擊和腳踢的互動通過可視的漫畫效果表現出來,並且同步發出一些擬聲效果。
2. Mario Boo
當Kinect感測器檢測到有人出現在視野內時,會出現一個幽靈保持在人的背後,隨著人的運動而運動,並且會根據深度資訊的遠近而改變自身大小。
3. Magrathea
Magrathea使用Kinect根據桌上的任何物體動態的產生地形圖。攝像頭讀取桌上物體的不斷變化深度資訊,可以展現出類似地球地形逐漸進化的過程。
4. We be Monsters
從中午舞獅中獲取靈感,運用Kinect的骨架跟蹤技術,兩個人分別同坐自己的四肢操縱虛擬怪獸的四肢和頭尾。
5. Mix&Match Interaction Toy
使用了Kinect/OpenNI 骨架技術,使得3張卡片組成的人體可以跟玩家隨動,並且通過手的滑動更換圖片。
6. Kinect Flock
作者建立了一個微粒系統,當使用者移動時,像棉絮一樣的東西會隨之湧動,當使用者靜止時,則聚集到參與者的深度區域。
7. roboScan
roboScan是一個3D模型+掃描器,將一個Kinect裝置固定在一個ABB 4400機械手上。設定好的動作和操作者同時控制機器人和攝像機的3D位置。Kinect的深度資料用來產生一個精確的外部環境的模型。
8. Neurospasta
Neurospasta是一個需要全身投入的自由形態遊戲平臺。參與者可以控制他們各自基於Kinect的木偶,也可以通過功能設定控制別人的化身。
9. Will-o-the-Wisp
這個設計充滿了神祕色彩,玩家可以控制一個發光的球體,球體根據玩家手的運動而動,根據深度資訊變大或變小。
10. Balloon Grab
通過檢測手掌張開還是握緊的手勢,作者開發了一個基於模擬氣球飛行的簡易小遊戲。
11. Hand-Tracking Visualization
該軟體使用手勢控制音訊的視覺化效果,結合檢測到場景中手距Kinect的深度資訊。參與者手的位置,速度以及其他引數被用來建立一個互動式的聲音的視覺化效果。
感覺Kinect的應用也應景一句話:Kinect的應用取決於你的想象空間!
相關文章
- 【轉】Kinect嚐鮮(1)——第一個程式
- ROS入門 TX2+Turtlebot+Kinect2.0配置記錄ROS
- Jenkinsant介紹(學習筆記五)Jenkins筆記
- Gif開發筆記(一):gif介紹、編譯和工程模板筆記編譯
- 設計模式學習筆記(八)介面卡模式介紹及其應用設計模式筆記
- uboot-uboot介紹-學習筆記boot筆記
- [PyTorch 學習筆記] 5.1 TensorBoard 介紹PyTorch筆記ORB
- webpack 學習筆記:入門介紹Web筆記
- kinect2.0 Self-Learning (1) - recycling disconnect (solved)
- VisionPro學習筆記(1)——軟體介紹和基本使用筆記
- libzip開發筆記(一):libzip庫介紹、編譯和工程模板筆記編譯
- PHP - 《高效能php應用開發》學習筆記PHP筆記
- UI自動化學習筆記- PO模型介紹和使用UI筆記模型
- Spring框架學習筆記(一):官方文件介紹,IoC與AOP概念學習Spring框架筆記
- this和super的區別和應用 學習筆記筆記
- WebGL three.js學習筆記 6種型別的紋理介紹及應用WebJS筆記型別
- Flutter 學習筆記(一):第一個 Flutter 應用Flutter筆記
- Harmony 應用開發常用元件介紹元件
- es筆記一之es安裝與介紹筆記
- (一) 機器學習和機器學習介紹機器學習
- laravel學習筆記之開發環境搭建Laravel筆記開發環境
- celery筆記六之worker介紹筆記
- Java學習筆記:Javaweb的伺服器介紹Java筆記Web伺服器
- 學習筆記-React的簡單介紹&工作原理筆記React
- Python學習系列之十大Web開發工具介紹!PythonWeb
- Web 開發學習筆記——關於網際網路和網際網路應用Web筆記
- ArkTS開發HarmonyOS應用目錄介紹
- 應用模型開發指南上新介紹模型
- 《筆記》之學習高併發筆記
- Android 開發學習筆記Android筆記
- Adaptive AUTOSAR 學習筆記 7 - 應用設計和 ManifestAPT筆記
- 線段樹進階應用學習筆記(二)+普通資料結構進階應用學習筆記(一)(2024.10.1)筆記資料結構
- 【學習筆記】並查集應用筆記並查集
- golang 學習筆記:第 1 節:GO 語言介紹Golang筆記
- 《Flask Web開發:基於Python的Web應用開發實戰》學習筆記(二)FlaskWebPython筆記
- Django筆記十九之manager用法介紹Django筆記
- 飛機的 PHP 學習筆記之應用技術篇PHP筆記
- flutter學習日記(一)————文章以及flutter介紹Flutter
- RK3568開發筆記(一):瑞芯微RK3568晶片介紹,入手開發板的核心板介紹筆記晶片