Home People Research Blog Courses Links Search Download
NCHC

Blog

Blog 最新文章

  1. 提供新版 Edge 的 HoloLens 2 Insider Preview
    2021/01/20 08:55
  2. Facebook Oculus Quest 2 開箱文
    2021/01/13 14:19
  3. GitLab 手動執行 pipeline 的預輸入變數
    2021/01/04 11:14

Blog 最新回應

  1. 謝謝你提供的資訊...
    2021/01/17 17:40
  2. MSVC 也是有在進步的 XD...
    2020/12/24 15:55
  3. “如果不想另外定義一個 struct 的........
    2020/12/24 15:49

Keyword 關鍵字

MR Kinect javascript CUDA 資訊地圖 C++14 PHP Windows MR OpenCV Docker Java Valve Index git Pandas HTC Vive Focus svn C++11 ASUS Xtion OpenMP OpenXR xml OpenGL CubeX Vulkan C++14 3d print Pandas C++ Oculus Quest 2 開放資料 HoloLens 2 NiTE2 OpenVR GitLab C++17 OpenNI2 Python 3D立體 Python Oculus Docker iFlyover OpenNI C++20 HTC Vive Pro Qt Boost 開放資料 VR WebGL Oculus Rift S OpenCL 資料視覺化 VR HTC Vive

類別:技術相關 » 技術研究
文章發表|我要回應|RSS訂閱

OpenNI 大改版,OpenNI 2.0 推出!

OpenNI 這個深度感應器的開發框架,在今年五月更新到 1.5.4.0 unstable 之後,就一直沒有動作了;相較於微軟 Kinect for Windows SDK 的進化,說實話,還真的讓人滿擔心他的後續發展的。

而現在,OpenNI 終於有大動作了!他不但推出了新的 OpenNI 2.0(Beta 中),在整個程式介面上做了相當大的改變,更把官方網站(http://www.openni.org/)做了大幅度的調整、並把官方論壇由 Google Group(連結)搬到自己的環境(連結)了~

根據官方的說法,OpenNI 2.0 主要的改進包括了(參考):

  • 支援新一代 3D 感應器(短距離版等、應該還包括之前介紹過的 PS1200、Capri 1.25)
  • 提供了大量的第三方(third party)Middleware 函式庫,包括了身體追蹤(Body Tracking)、3D 重建(3D Reconstruction)、物體辨識(Object Recognition)、分析(Analytics)等功能
  • 允許事件導向(event-driven)的程式開發
  • 更好的向下相容性(backwards compatibility)
  • 每一個程式都有 OpenNI 和 middleware 函式庫的獨立副本
    (原文:Private copy of OpenNI and Middleware Libraries for each application)
  • 更好的多感應器支援,middleware 函式庫現在提供個別的 API

而在 release note(連結)裡,則也有提到一些新的變化,包括了:

  • 支援將深度像素轉換到彩色影像的座標系統
  • 在 PS1080 裝置上,可以把彩色感應器的自動曝光和自動白平衡關閉
  • 新的發布模式:現在每一個程式可以有各自獨立的 OpenNI 2.0 runtime binary 副本
    (以前應該是強制一台電腦都用同一份)
  • 在 Windows 下可以透過 Kinect for Windows SDK 支援 Microsoft Kinect 感應器

新的下載頁面現在是:http://www.openni.org/openni-sdk/,目前有提供 2.0.0 的 Windows 和 Kinux 的 beta 版,Mac OS X 的版本則還沒有出來;根據 release note(連結)的資訊,目前支援的作業系統包括了 Windows XP SP2 以後的  Windows,以及 Ubuntu 12.04 ,32/64 位元都可以使用。而開發環境目前則是可以使用 Microsoft Visual Studio 2008 and 2010 和 GCC 4.x。

在左邊也可以切換到其他的下載項目,除了 OpwnNI SDK 本身外,還包括了「Middleware Libraries」、「Tools & Wrappers」、「Applications」 三大類;包含 PrimeSense NITE 2 在內,目前也算是有不少內容了~某方面來說,以後開發體感程式的彈性應該會更大了。

但是相對的,其實在 OpenNI 2.0 裡,他是把本來 OpenNI 1.x 的 plug-in 架構,徹底捨棄了;以後使用者必須個別去控制各個不同 middleware,來完成自己想做的工作。

下圖是 OpenNI 1 的架構圖:

可以看到,OpenNI SDK 在 1.x 的時候,除了去處理和硬體的溝通外,也把應用程式和 middleware 的溝通做了一層轉換,讓介面統一化;所以在這個框架下,開發者可以只學習 OpenNI 的介面,就來完成程式的開發,而不需要去管 middleware 是怎麼實作、要怎麼控制,因為這部分都被 OpenNI SDK 做掉了。

而下圖則是 OpenNI 2 的架構圖:

在 OpenNI 2 的架構裡,OpenNI 不再去管 middleware 怎麼玩了~他只專心去處理硬體、以及來自應用程式的控制;而 middleware 除了會透過 OpenNI 的 API 來讀取硬體產生的資料外,就像一個獨立的函式庫一樣,程式開發者需要自己去控制他,來做到自己想做的事。

這樣的好處是 OpenNI 本身變得更加地單純(2.0 的 Windows 版 SDK 大小剩不到 8MB),而 middleware 的開發也會更簡單、更彈性,不再受限於 OpenNI 框架的功能限制。但是相對的,應用程式的開發者就需要針對不同的 middleware,去學習他們各自的用法了…所以這個改變到底是好是壞?其實 Heresy 個人是覺得滿難認定的。


至於要怎麼開始進行開發呢?針對舊版的 OpenNI 開發者,OpenNI 有提供一份《OpenNI Migration Guide》,來告訴使用者要怎麼把舊有、OpenNI 1.x 的程式開發架構,轉移到 2.0 上。而針對新的開發者,OpenNI 除了提供新的《OpenNI Programmer's Guide》外,也還有提供《Get Started》等資源,可以做開發上的參考。

而以《OpenNI Migration Guide》裡的說法,OpenNI 2.0 主要的架構改變,包括了:

  • New OpenNI Design Philosophy
  • Simplified Middleware Interface
  • Simplified Data Types
  • Transition from Data Centric to Device Centric
  • Easier to Learn and Understand
  • Event Driven Depth Access

Heresy 自己還沒真得下去測試 OpenNI 2.0 的程式開發,以範例程式來看,最顯著的變化,應該就是 header 和 namespace 都從 xn 正名為 openni 了~而由於架構差異非常大,所以舊的程式如果要修改成使用 OpenNI 2.0 的話,基本上要修改的幅度會非常大…不過,以目前的測試看來,OpenNI 1.x 和 OpenNI 2.0 應該是可以並存、同時安裝的,所以短時間內,應該可以同時使用這兩者,慢慢來做移植了~

接下來…Heresy 應該會開始針對新版 OpenNI 和 NITE 來相關的教學文件。而至於其他的 middleware 呢,Heresy 應該也會在選幾個有興趣的來研究,如果覺得夠好玩的話,應該也會寫一些介紹或教學吧~ :)

張貼者:heresy於2012/12/19 14:42 下午有1則回應,瀏覽次數:2,699次
shiming 於 2012/12/23 22:24 下午 回應:
2.0变换确实蛮大的,期望OpenNI越变越好~

-- TOP --

我要回應
* 身份  訪客 (暱稱:)
 本篇文章作者 (帳號:密碼:)
* 內容      
很高興 悲傷 震驚 疑惑 大笑 發瘋 傷心
* 留言密碼 (請輸入下方圖片中去除前、後位數的數字,共五碼。)
說明 1. * 表示必填欄位。
2. 不支援HTML Tag。
   

-- TOP --

© Visualization and Interactive Media Laboratory of NCHC, 2007 - 2021, All Rights Reserved. Contact E-mail