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 關鍵字

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

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

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 的相關產品為主,包括了:

  • 直接支援 ASUS Xtion 系列感應器、以及 PrimeSense CARMINE、Capri 感應器
  • 透過 Kinect for Windows SDK 支援第一代 Kinect 感應器

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

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

  • Openni2-DepthSenseDriver
    • https://github.com/kaorun55/Openni2-DepthSenseDriver
    • 支援 SoftKinetic 的感應器
  • OpenNI 2 with Intel Perceptual Computing
    • https://github.com/vbystricky/OpenNI2/tree/PerCDevice/Source/Drivers/PerCDevice
    • 支援 Intel / Creative 的深度感應器
  • OpenNI2-FreenectDriver
    • 在非 Windows 環境下、透過 libfreenect 支援第一代 Kinect
    • https://github.com/OpenKinect/libfreenect/tree/master/OpenNI2-FreenectDriver
  • OpenNI2-Kinect2Driver
    • https://github.com/kaorun55/OpenNI2-Kinect2Driver
    • 支援 Microsoft Kinect for Windows v2,不過目前還是預覽版本

而如果是要針對其他裝置做測試話,也可以考慮用 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 的東西可以用啊…

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

  • Skeltrack
  • Point Clooud Libeart People

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


張貼者:heresy於2014/07/04 14:45 下午有26則回應,瀏覽次數:2,938次
JANESTAR 於 2014/08/22 15:39 下午 回應:
老师,您好,关于Kinect 深度图和彩色图对齐的问题,在OpenNI2中是不是已经自动给对齐了?感觉setImageRegistrationMode
(IMAGE_REGISTRATION_DEPTH_TO_COLOR )这个函数调用还是不调用都没有什么影响。我用的版本是OpenNI2.2.0.33,另外我还替换过你自己在一片blog中发
布的Kinect.dll,感觉和最新的版本效果差不多,对齐的效果比微软自带的sdk效果好很多的样子。麻烦老师给我指点一下
。
JANESTAR 於 2014/08/23 10:47 上午 回應:
另外,使用这个表达式的时候 status=mDevice.setImageRegistrationMode( IMAGE_REGISTRATION_DEPTH_TO_COLOR );status给出的结果是STATUS_ERROR,也就是说这个函数没有调用成功,那么我现在应该去怎样对齐depth image和color image呢?还是我得放弃使用Openni2,而换用Openni1,看到您在Openni1中也写了相关的文章,使用Ope
nni1才可以解决吗·
作者作者heresy 於 2014/08/25 09:11 上午 回應:
to JANESTAR

目前直接下載的 OpenNI 2 Binary 還是不支援,需要自行替換 Kinect .dll 才行。
或者,自行 clone GitHub 上的原始碼下來建誌也是一個方法。

如果更換後還是沒有任何改變,有可能是換錯檔案了。
請確認執行程式所在路徑下的 Kinect.dll 也是需要更換的。
JANESTAR 於 2014/08/25 09:46 上午 回應:
麻烦老师给我一个可以用的Kinect.dll 下载链接吧,因为之前我在您的blog上搜了好久,我不确定我是不是下载了正确的Kinect.dll,谢谢老师啦
作者作者heresy 於 2014/08/25 10:05 上午 回應:
to JANESTAR

在這篇文章裡面有提供連結了
http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&
SUB_ID=1&PAPER_ID=533


下載:
https://github.com/KHeresy/OpenNI2/releases/tag/
KinectOniFix
JANESTAR 於 2014/08/25 10:51 上午 回應:
老师,您好,刚刚我替换过来您提供的Kinect.dll文件,我把安装目录下C:Program Files (x86)
OpenNI2RedistOpenNI2Drivers下的Kinect.dll和copy至执行程序下的Redist文件夹
下的Kinect.dll都替换为您提供的Kinect.dll,结果我调试的时候,发现status=mDevice.set
ImageRegistrationMode( IMAGE_REGISTRATION_DEPTH_TO_COLOR );status的状态为STATUS_ERROR,这是为什么呢?感觉我替换的路径应该是没有错的。
作者作者heresy 於 2014/08/25 11:06 上午 回應:
to JANESTAR

請確認你的執行路徑下的檔案配置。
在執行檔所在目錄下,應該是要有一個 OpenNI2 的資料夾,其下會有 Drivers 的資料夾,底下才會是相關的 dll。

也就是相對於執行檔的路徑是:
\OpenNI2\Drivers\Kinect.dll
其中,並不包含 Redist 這層結構

另外,也請確認 32 / 64 位元是否正確。


要做測試的話,一個比較極端的方法,就是先把 dll 刪除,理論上就會不能建立出 device。
JANESTAR 於 2014/08/25 12:16 下午 回應:
老师,您好,我的执行程序下的替换路径为
C:UsersLLJDocumentsvisual studio 2010ProjectsOpenNI2OpenNI2OpenNI2DriversKinect.dll
我还尝试用64位元的dll,发现不能建立device,您刚说的档案配置我觉得我应该是没有弄错的。这让我有点疑惑,为什么
setImageRegistrationMode()函数的返回状态是STATUS_ERROR?求老师指导,太感谢了
作者作者heresy 於 2014/08/25 16:03 下午 回應:
to JANESTAR

那 Heresy 只能說也不確定了。
Heresy 這邊剛剛測試過是正常的。

還是,你有先建立出 Color 和 Depth 的 VideoStream 嗎?
你該不會是在建立出 VideoStream 之前就先去呼叫了吧?
JANESTAR 於 2014/08/25 18:17 下午 回應:
很高興 Heresy老师太厉害了,果然我在建立出 VideoStream 之前就先去呼叫了。。。。。换过来立马就好了。难怪我搞了好久都没出结果。我学得太粗糙了。谢谢Heresy老师了。以后要更细
心的学习。
Yao 於 2014/10/27 10:38 上午 回應:
想问一下老师,设备的选择,想尝试一下primesense的设备,那对比ASUS Xtion系列和PrimeSense CARMINE系列,应该如何选择呢~~
谢谢...
作者作者heresy 於 2014/10/27 11:23 上午 回應:
to Yao

Heresy 自己沒用過 PrineSense 的感應器,不過基本上 Asus Xtion Pro Live 和 PrimeSense CARMINE 1.08 應該是幾乎完全一樣的。
风霖雪 於 2014/12/22 10:20 上午 回應:
请问老师,在ubuntu上搭建kinect环境,用到的是openni和Sensor kinect驱动,我看到您之前的帖子,openni2.0以后的升级版支持linux arm,如果将kinect移植到arm Linux平台下,有无对应的sensor kinect可用,望不吝赐教!
作者作者heresy 於 2014/12/22 10:41 上午 回應:
to 风霖雪

如果要在 Linux 上搭配 Kinect 使用 OpenNI2 的話,可能要考慮使用 libfreenect
https://github.com/OpenKinect/libfreenect/tree/master/
OpenNI2-FreenectDriver
风霖雪 於 2014/12/22 11:31 上午 回應:
是不是sensor kinect驱动就不支持Openni2以上的SDK了?用libfreenect就可以?您再说的明白点,或者您把邮箱留个我
,我给您发份邮件,万分感谢!
作者作者heresy 於 2014/12/22 11:44 上午 回應:
to 风霖雪

建議請先參考這篇文章
http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&
SUB_ID=1&PAPER_ID=432
风霖雪 於 2014/12/22 15:30 下午 回應:
您的文章我看了,也就是说如果用openni2的话是通过Kinect官方的驱动程序来结合使用的是吧?要是在Linux中还是
用openni1 sensorKinect是比较稳定的选择。还有一个问题就是PC机的Ubuntu可以搭建Kinect开发环境,如果我在AR
M平台希望搭载Kinect是不是也需要将Ubuntu移植到ARM上才可以?
zoom1539 於 2014/12/22 20:19 下午 回應:
老师,您好
https://github.com/KHeresy/OpenNI2/releases/tag/
KinectOniFix里面Kinect32.dll下载不下来了吗,页面出错
能传我一份吗?谢谢。邮箱:zoom1539@gmail.com
作者作者heresy 於 2014/12/23 12:50 下午 回應:
to zoom1539

剛剛確認過,檔案還是好的,麻煩再試看看。

也請注意,下面的網址是連在一起、沒有分開的
https://github.com/KHeresy/OpenNI2/releases/tag/
KinectOniFix
作者作者heresy 於 2014/12/23 12:52 下午 回應:
to 风霖雪

抱歉,個人沒有在 ARM 上面開發的經驗,比較不確定。
hello 於 2015/03/18 18:11 下午 回應:
heresy老师好:我现在使用的是openni2.2.0.0.33,但convertDepthToColor()的对齐误
差
还是很大,点对点的映射,有没有行之有效的替代方案?谢谢
冯小包 於 2016/01/04 22:14 下午 回應:
你好,我按上面的步骤设置后,将下载来的Kinect.dll替换之前的后,提示找不到设备。查看了下载链接发现跟NITE2.
2有关。我是否还的安装NITE2.2呢?
作者作者heresy 於 2016/01/05 14:58 下午 回應:
to 冯小包
不確定你到底是要做什麼,不過建議你,先試試看用原始的 Kinect.dll 看看能不能正常使用,可以再試著更換。

另外,如果是 https://github.com/KHeresy/OpenNI2/releases/tag/
KinectOniFix
這個版本,它是用來修正錄影的問題的,詳細說明請參考
http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&
SUB_ID=1&PAPER_ID=533

呜呜呜 於 2016/04/01 17:12 下午 回應:
想要得到对齐的深度数据和彩色数据,原始的 Kinect.dll 有偏移,换了您的后同楼上提示找不到设备。因为想要用来三维重建,有没有有效的方法。或者我是否应该放弃OPENNI采用官方S
DK去对齐数据。在做毕设,遇到瓶颈了,希望老师给出指点。
作者作者heresy 於 2016/04/06 10:21 上午 回應:
to 呜呜呜

有稍微確認了一下。
如果到 http://structure.io/openni 下載新的 OpenNI 2.2 的話,Kinect 的對位問題就已經解決了,不需要另行更換 Kinect.dll。
呜呜呜 於 2016/04/07 16:24 下午 回應:
是可以了。使用CoordinateConverter::convertDepthToColor,只能一个一个点对应,写在
这希望能帮到别的同学。

-- TOP --

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

-- TOP --

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