Kinect入门介绍---Kinect V2开发学习(1)

Kinect 传感器的工作原理 

Kinect 传感器是美国微软公司 2010 年推出的一款体态感知设备,它不需要用借助任何手柄之类的控制即可完成人与机器的交流,它一经面世便成为了研究的热门。该传感器的核心芯片是 PrimeSense 公司设计的,该芯片尤其适合复杂计算与算法设计。

Kinect入门介绍---Kinect V2开发学习(1)
第一代产品

Kinect 传感器由四个扬声器,两个麦克风阵列,一个高速 Flash,一个USB2.0 总线接口,三个摄像头,左边为一个红外发射器,可以向周围发射红外激光;右边则为一个红外接收器,用以接收环境中的红外激光散斑,采集周围场景深度信息,通过其内部芯片转换可传送 320×240 分辨率的深度图像。通过插值方法,Kinect 能够提供接近同步的彩色图像和深度图像,且两者分辨率可达到相同,采用简单的校准处理,可将彩色图像与深度图像对齐。

Kinect入门介绍---Kinect V2开发学习(1)

彩色摄像头用来采集 RGB 图像,通过增量直方图算法计算增量直方图,并通过粒子滤波算法计算权值;另外两个摄像头构成了 3D 深度传感器,其中红外发射器像被测恩替发射激光,CMOS 摄影机通过对反射光的探测获得一个深度场,从而采集深度信息,这些采集到的深度信息可以通过内部芯片转换为深度图像,从而得到被测物体的位置和形状,并且采集到的深度图像以 320x240 的分辨率传送。Kinect 传感器的驱动可以提供几乎同步的 RGB图像流和深度图像流与采集到的 RGB 图像与深度图像的像素点对应起来,通过 Kinect 传感器可以采集到获得基本的影像资料,然后实现对影像资料的辨识。Kinect 的适用范围为 1.2m~3.5m 之间。 

Kinect 相对普通相机的独特之处在于其使用 TOF(Time of Flying)技术获得景深数据从而生成深度图像,深度图像的每个像素数值都代表Kinect 距离此像素实际对应区域与相机的深度距离,因此 Kinect 能够直接输出三维空间信息。

 利用 Kinect 传感器拍照时,对被测物体周围的环境要求很低,不会受到光照、阴影、物体遮挡等条件所影响。而之所以 Kinect 传感器会具有如此独特的优势,与 Kinect 传感器的成像原理有很大的关系,主要是由于 Kinect 传感器采集的是深度图像的像素灰度值仅与距离有关,换句话说,利用 Kinect 传感器采集的图像信息是被测物体的距离,与其它的外在因素无关,因此,通过深度图像可以得到物体的三维坐标。而灰度值仅与视场 Z 方向有关,正是由于深度图像的这些特性,使得运用深度图像成像的 Kinect 传感器具有很好的鲁棒性。

OpenNI(opennatural interface开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。可以到这里下载。从名字判断其终极目标大约是实现少数派报告的效果,从目前放出来的一些demo,恐怕已经超越了这个终极目标。它不是专为Kinect开发,但有Kinect的生产商PrimeSense的支持。这个感觉也是目前相对来说用的比较多的非官方组合:SensorKinect + NITE + OpenNI;其中SensorKinect是Kinect的驱动。NITE是PrimeSense提供的中间件,可以分析Kinect读取的资料,输出人体动作等等。

Kinect 的另一个重要软件开发工具即为 Kinect for Windows SDK。Kinect 的 SDK 中含有许多独特的接口,能实现多种功能,比如,可以让操作人员轻松的获取 Kinect 采集的图像信息流数据,并进行一系列的应用开发;还提供有人体骨骼提取和语音识别等功能。SDK 的这些功能使得 Kinect 传感器更为广泛的应用。