ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

openNI入门简介

2020-02-23 17:01:45  阅读:2069  来源: 互联网

标签:入门 Generator 简介 openNI 感应器 Production 产生器 节点 OpenNI


内容来源:https://bbs.csdn.net/topics/380221036

 

OpenNI 简介
         首先,什么是 OpenNI?他是「Open Natural Interaction」的缩写,大致上可以翻译为「开放式自然操作」;而所谓的 NI 又包含哪些东西呢?OpenNI 对自然操作(Natural Interaction,以下简称 NI)的定义包含了「语音」、「手势」、「身体动作」等等,基本上就是比较直接、操作者身上不需要其它特殊装置的操作方式了。

         OpenNI 本身则是定义了撰写自然操作程序所需要的 API,提供一个多语言(主要是 C/C++)、跨平台的 framework;藉此提供了一个标准的接口,让程序开发者要使用视觉、声音相关感应器,以及对于这些数据、分析的中介软件(middleware)时,可以更为方便。
下方则是 OpenNI 的基本架构图:

 

 

 

上面的架构图基本上分为三层,最上层是应用程序(Application),也就是我们这些程序开发者自己要撰写的部分;最下方的一层则是硬件的部分,目前 OpenNI 支持的硬件,包含了:3D Sensor、RGB Camera、IR Camera、Audio Device 这四类。不过以目前来说,会用 OpenNI 的人,主要应该就是用 Kinect 以及Xtion了~而如果能有对应的驱动程序的话,其它类似的装置,应该也是有机会可以让 OpenNI 来存取的。
而中间这层就是 OpenNI 的部分,他除了负责和硬件的沟通外,也在自身内部预留了加上中介软件(middleware)的空间,可以用来做手势辨识、或是追踪之类的处理。OpenNI 目前在 middleware 的部分,定义了下面四种组件:

      • 全身分析(Full body analysis)
由感应器取得的数据,产生身体的相关信息,例如关节、相对位置与角度、质心等等。

      • 手部分析(Hand point analysis)
追踪手的位置。

      • 手势侦测(Gesture detection)
辨识预先定义好的手势,例如挥手。

      • 场景分析(Scene Analyzer)
        分析场景内的信息,例如:分离前景和背景、地板的坐标轴、辨识场景内的不同物体。
目前 PrimeSense 也已经提供了一套 NITE 当作最主要的 middleware、提供上面所列的功能;而如果有更进一步的需求的话,应该也可以自己写一套兼容于 OpenNI 的 middleware 来使用。当然,也希望以后会有其它软件厂商投入这块来开发了。

节点(Node)
在 OpenNI 里,他定义了所谓的「Production Node」来代表内部的基本单元,包括了硬件部分的感应器,以及 OpenNI 所提供的功能;这些 production node 分为下面三大类/层:
 1. 感应器相关(Sensor Related)Production Nodes
       o 装置(Device) :代表实体装置的节点,主要是用来做这些设备的设定。 

        o 深度产生器(Depth Generator):产生深度信息图(depth-map)的节点。 

        o 影像产生器(Image Generator):产生彩色影像图(colored image-maps)的节点。 

        o 红外线影像产生器(IR Generator):产生红外线影像图(IR image-maps)的节点。 

        o 声音产生器(Audio Generator):产生声音串流(audio stream)的节点。

2. 中介软件相关(Middleware Related)Production Nodes

       o 手势通知产生器(Gestures Alert Generator):当辨识到特定的手势时,呼叫应用程序的 callback。 

        o 场景分析器(Scene Analyzer):分析场景,包括分离前景与背景、识别场景内的不同物体、侦测地板。他主要的输出会是标记过的深度信息图(labeled depth map)。 

        o 手部位置产生器(Hand Point Generator):支持手部侦测与追踪,当侦测到手、或追踪手的位置时,会产生一个通知讯息。 
        o 使用者产生器(User Generator):产生一个 3D 场景中完整、或局部的身体信息。 
3.录制/拨放
       o 录制器(Recorder):用来记录数据用的。 
        o 拨放器(Player):读取记录下来的数据,并拨放出来。 
        o 编译码器(Codec):用来压缩、解压缩纪录数据。 

        上面这些 Production Node 基本上都是会由不同的模块各自实作的。像是以感应器相关的部分,就是会由 OpenNI 兼容的装置提供,以目前来说,主要就是 Kinect (以及 Xtion)的驱动程序会提供这深度、影像产生的功能。而中介软件相关的部分,则是由不同的 middleware 各自提供;不过目前的来源应该也只有 NITE 就是了。
         在层级上,感应器相关的 production node 算是最底层的,由于去直接存取设备的数据,所以应用程序可以直接使用这类的 production node。而中介软件相关的 production node 由于是靠感应器的资料来做处理的,所以他们的层级则比感应器的高一层、必须要在有感应器相关的 production node 的情况下才可以使用。

         而在有了上面的这些 Production Node 后,就可以透过组合这些节点来建立所谓的「Production Chain」,并以此进行数据的处理流程。比如说要产生使用者的数据的话,就是会透过「使用者产生器」(User Generator)去存取更低层的「深度产生器」(Depth Generator);而这样的一个节点序列,就是所谓的「Production Chain」。

能力(Capability)
OpenNI 的「Capability」机制是用来增强中介软件和硬件装置的弹性的;这些不同的能力都是非必要性的,各家厂商所提供的不同的中介软件和装置,可以自己决定要提供那些能力。而 OpenNI 则是负责定义好一些可以使用的 capability,让程序开发者可以快速地找到符合自己需求的中介软件或装置。
而目前版本的 OpenNI 所支持的 capability 则如下:
        • 替换视角(Alternative View)
让各类型的 map generator(深度、影像、红外线) 可以转换到别的视角,就好像摄影机在别的位置一样。这个功能可以快速地替不同的感应器产生的内容作对位。
        • 裁切(Cropping)
让各类型的 map generator(深度、影像、红外线) 输出结果可以被裁切、降低分辨率;例如:VGA 可以裁切成 QVGA。这对效能的增进很有用。
        • 画面同步(Frame Sync)
让两个感应器产生结果同步化,借此可以同步取得不同感应器的数据。
        • 镜像(Mirror)
把产生的结果镜像(左右颠倒)。
        • 姿势侦测(Pose Detection)
让「使用者产生器(User Generator)」可以侦测出使用者特定的姿势。
        • 骨架(Skeleton)
让「使用者产生器(User Generator)」可以产生使用者的骨架资料。包含骨架关节的位置、并包含追踪骨架位置和使用者校正的能力。 
        • 使用者位置(User Position)
让「深度产生器(Depth Generator)」可以针对指定的场景区域、最佳化输出的深度影像。 
        • 错误状态(Error State)
让节点可以回报他本身的错误状态。 
        • Lock Aware
让节点可以在 context 范围外被锁定。

 

 

 

标签:入门,Generator,简介,openNI,感应器,Production,产生器,节点,OpenNI
来源: https://www.cnblogs.com/AriesDeen/p/12350469.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有