201407、OpenNI 現況


在 2013 年底,Apple 正式收購了 OpenNI 的主導廠商、PrimeSense;而到了 2014 年的四月底、OpenNI 的官方網站也正式關閉,其後又過了一段時間後、連 PrimeSense 的官方網站也都停止運作了。而這也看得出來,所謂的 OpenNI 聯盟,其實只是靠 PrimeSense 玩起來的…

那現在,OpenNI 的狀況是怎樣呢?

首先,之前針對 iPad 推出外掛深度感應器「Structure Sensor」的公司 Occipital(官網),已經決定接手繼續維護 OpenNI 2 的 SDK 了!他也為此建立了一個專頁、提供了 OpenNI 2 相關的資源下載;其網址是:

http://structure.io/openni

而原始碼的部分,由於 Github 上、OpenNI 帳號下的 repository(連結)所有權還在 PrimeSense 的人那(其實 Heresy 有試著連絡,但是沒有回應),所以之後基本上很難繼續維護;所以 Occipital 也在 Github 上 fork 了一份、並持續維護,其網址是:

https://github.com/occipital/openni2

雖然目前還沒有釋出新版本,不過他的 develop branch(連結)目前也已經做了不少修改;其中,Heresy 自己也有貢獻一些、修正一些問題。

所以,如果只是要透過 OpenNI 2 來存取深度影像的問,基本上還不用擔心會斷頭。至於感應器的支援部分,OpenNI 2 本身能直接支援的感應器,基本上還是以 PrimeSense 的相關產品為主,包括了:

而其他能支援的,應該也包括了像是 Occipital 的 Structure Sensor 這類直接採用 PrimeSense 方案的感應器。

但是由於 PrimeSense 已經被收購了,所以以後應該也難以取得新的感應器了,那如果有需要的話,該怎麼辦呢?基本上,目前也有不少第三方的驅動模組,可以用來讓 OpenNI 2 可以支援其他廠商的深度感應器,包括了:

而如果是要針對其他裝置做測試話,也可以考慮用 Heresy 寫的 Virtual Device for OpenNI 2,自己餵資料進去做測試。


實際上,問題比較大的,應該還是 PrimeSense NiTE 這個為了 OpenNI 開發的人體骨架分析/追蹤軟體了。

因為不管是 OpenNI 1 或是 OpenNI 2,雖然 OpenNI SDK 本身都是免費、OpernSource 的,但是真正要開發體感程式的話,都還是需要 NiTE 這個非 OpenSource 的函式庫,來做深度影像的分析、以擷取出人體的骨架、並加以分析。

而實際上,NiTE 應該也算是 OpenNI 環境下、唯一個可以免費使用的人體骨架追蹤的函式庫;但是在 PrimeSense 被收購的現在,他不但不會再有更新,甚至連散佈的機會都消失了…

如果早期開始玩的人,手邊都還有備份的話,要繼續使用問題還不大;但是礙於其授權協議,他不但不能用於非 PrimeSense 的感應器、而且也不能自行散佈。這也就是為什麼 Occipital 沒有提供 NiTE 的備份下載的原因了。

不過雖然按照授權協議,是不能自行散布的,不過拜偉大的 Google 大神所賜,其實網路上要找到可以下載的地方,還不算太難(例如);但是有沒有可能下載到有問題的檔案,就比較難確定了。

說實話,以這部分來說,個人是希望可以有足以取代 NiTE 的開源方案可以使用。但是之前有認真找了一下,雖然並非沒有,不過好像還沒有真的可以取代 NiTE 的東西可以用啊…

真的有興趣的話,或許可以試試看下面這兩個:

不過 Heresy 自己還沒真的玩過,也不確定是否可以搭配 OpenNI 使用。如果有人知道有比較好的函式庫可以用,也歡迎提供資訊了。


附帶一提,其實這篇 Heresy 應該算是早就有打算寫了,不過因為之前有段時間,一直希望狀況可以有點改變,所以就一拖再拖、沒有寫這篇…而現在看來,應該是確定沒啥變化了,所以還是稍微整理一下吧。

OpenNI / Kinect 相關文章目錄

對「201407、OpenNI 現況」的想法

    • 目前狀況基本上就如同本文所述,是否算活著…請自行判斷。

      至於其他深度感應器,Heresy 只能說自己沒玩過。不過實際上,願意花錢的話,有不少更專業的 3D 掃描器可能可以考慮,但是售價通常不低,也不見得符合使用條件。

      基本上,Kinect 應該算是在一般人可以負擔的價位裡最好的。

  1. heresy老师,那么现在应该放弃使用openNI了吗?我现在在做基于kinect的手势识别的创新训练,是一个本科生,如果使用kinect SDK+openCV,来获取kinect的原始数据(据说sdk1.7后增加了对原始数据的支持),进行研究,可行吗?(似乎kinect SDK主要为了帮助开发应用程序,但我并不是为了开发应用程序,而是利用深度信息进行手势识别的一点研究。)希望能够获得您的建议,谢谢。

    • 如果只是要讀取深度圖的話,基本上 OpenNI 還是沒有問題的。
      但是如果希望有人幫忙做好人體骨架追蹤的話,在沒有非 Windows 平台的需求下,Kinect for Windows SDK 應該會是比較好的選擇。

  2. 關於PCL就有內建Kinect的範例,不過是base on OpenNI 1.5跟sensor driver。
    另外還有openFramework本身也支援kinect,是吃libfreenect的driver。
    說真的,自從OpenNI只支援官方driver以後,大概就失去它的發展性了。

    • 個人覺得這樣的說法不完全正確。
      OpenNI 其實從頭開始,就沒有正式地支援 Kinect 感應器;不要忘了,SensorKinect 實際上也是第三方的套件、而非 OpenNI 直接提供的。
      這部分應該是顧慮到微軟方面的硬體使用授權的關係,只是當時由於微軟尚未推出 Windows 版的驅動程式,所以才是透過 PrimeSense 的公版驅動程式做修改的。
      而到了 OpenNI 2 的時候,由於 KInect for Windows SDK 已經發布,也有了完整的使用授權,所以才改由透過 Kinect for Windows SDK 做支援。

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料