1、Kinect for Windows 2.0入门介绍2022-8-8提 纲 Kinect 体感传感器简介 Kinect 硬件结构 Kinect 基本接口与使用方法 Kinect 高级功能 Kinect 应用范围 Kinect 初体验基于Kinect的室内监控系统初识Kinect2010年,Kinect是微软推出的最新的基于体感交互的人机交互设备。Kinect最初作为Xbox360游戏机的外接设备发布,利用即时动态追踪、影像识别、麦克风输入、语音识别等功能让玩家摆脱传统游戏手柄的束缚,通过自己的肢体动作来控制游戏。2012年,微软并没有将这一先进的技术局限在游戏行业,而是紧接着将Kinect技术
2、推广到Windows平台,开发了Kinect for Windows,旨在鼓励众多开发者设计基于Kinect体感交互技术的应用,从而在各个行业领域里改变人们工作、生活和娱乐的方式。2014年,微软发布第二代Kinect for Windows,从硬件上对第一代做了很大改进。与此同时,Kinect for Windows SDK也在不断升级中。第一代 SDK1.8 第二代 SDK 2.0 Public PreviewKinect 的最大创新之处对人机交互方式的变革传统的人机交互方式:图形用户界面(传统的人机交互方式:图形用户界面(GUI)特点:特点:GUI要求用户必须先学习软件开发者预先设置好的
3、操作,要求用户必须先学习软件开发者预先设置好的操作,在传统的显示设备上进行交互。在传统的显示设备上进行交互。Kinect的人机交互方式:自然用户界面(的人机交互方式:自然用户界面(NUI)特点:特点:NUI只需要用户以最自然的方式(如动作、手势、语音等)只需要用户以最自然的方式(如动作、手势、语音等)与机器互动。直观地说,就是使用与机器互动。直观地说,就是使用NUI的计算机不需要键盘和鼠的计算机不需要键盘和鼠标。标。你就是控制器!(你就是控制器!(You are the controller!)!)Kinect宣言宣言第二代Kinect 系统架构Kinect DriversKinect Dri
4、versKinect RuntimeKinect Runtime.Net.NetAPIAPI.Net.NetAppsAppsNative APINative APINative Native AppsAppsWinRT WinRT APIAPIWindows Store AppsWindows Store AppsC#,VB,JS,C+/CXC#,VB,JS,C+/CXPhysical Kinect SensorPhysical Kinect Sensor硬件层硬件层驱动层驱动层接口层接口层应用层应用层提 纲 Kinect 体感传感器简介 Kinect 硬件结构 Kinect 基本接口与使用方
5、法 Kinect 高级功能 Kinect 应用范围 Kinect 初体验基于Kinect的室内监控系统Kinect v2硬件结构Power Power LightLightRGB RGB CameraCameraIR EmittersIR EmittersIR EmittersIR EmittersDepth Depth SensorSensorDepth Depth SensorSensorMicrophone Microphone ArrayArrayKinect v2 的“三只眼睛”和“四只耳朵”三只眼睛:彩色摄像头、深度(红外)摄像头、红外线投影机彩色摄像头:用于拍摄视角范围内的彩色视
6、频图像。红外投影机:主动投射近红外光谱,照射到粗糙物体、或是穿透毛玻璃后,光谱发生扭曲,会形成随机的反射斑点(称为散斑),进而能被红外摄像头读取。深度(红外)摄像头:分析红外光谱,创建可视范围内的人体、物体的深度图像。四只耳朵:四元线性麦克风阵列声音从4个麦克风采集,内置数字信号处理器DSP等组件,同时过滤背景噪声,可定位声源方向。提 纲 Kinect 体感传感器简介 Kinect 硬件结构 Kinect 基本接口与使用方法 Kinect 高级功能 Kinect 应用范围 Kinect 初体验基于Kinect的室内监控系统Kinect Data Sources 6种数据源AudioAudioC
7、olorColorInfraredInfraredDepthDepthBodyIndexBodyIndexBodyBody分辨率:1920 x 1080 30 or 15 fps(帧/秒)彩色图像有多种格式可以选择,如:Rgba,Yuv,Yuy2等ColorFrameSourceInfraredFrameSource分辨率:512 x 42430 fps(帧/秒)每个像素16-bit 测量范围:0.5-4.5米每一个像素为16-bit,该数据表示从深度(红外)摄像头到该物体的距离,单位毫米。DepthFrameSourceBodyIndexFrameSourceKinect用一个字节表示当前深
8、度坐标下该像素的人体编号。目前最大支持6人。每像素数据值 0-5:表示被跟踪的人体索引编号-1(0 xFF):未发现人体 测量范围:0.5-4.5 米 帧数据是一个人体25个关节点的集合,每个帧都包含关节的3D位置和方向 最多支持6个人体 30 fps(帧/秒)可以识别其中两个人体的手势 人体跟踪的三种状态:Not tracked Inferred TrackedBodyFrameSourceFrameFrameFrame RefFrame Ref获取并处理数据源的接口步骤:一种数据源(一种数据源(source)可以有多个阅读器()可以有多个阅读器(reader)代表一个物理上的传感器硬件实体
9、 一个应用程序可以调用多个传感器,默认为1个1.The KinectSensor classthis.sensor=KinectSensor.GetDefault();this.sensor.Open();/Make the world a better place with Kinectthis.sensor.Close();SensorSensorSourceSourceReaderReaderFrameFrameFrame RefFrame RefC#显示数据源的元数据并为阅读器(readers)提供获取途径 传感器每个数据类型提供一种数据源2.SourcesSensorSensorSo
10、urceSourceReaderReaderFrameFrameFrame RefFrame Ref 提供获取帧的途径 事件机制(触发模型)轮询机制(“拉”模型)同一个数据源可以创建多个阅读器(readers)阅读器(readers)可以被暂停3.ReadersSensorSensorSourceSourceReaderReaderFrameFrameFrame RefFrame RefC#InfraredFrameReader reader=sensor.InfraredFrameSource.OpenReader();reader.FrameArrived+=InfraredReaderF
11、rameArrived;.发送帧事件参数 AcquireFrame()函数提供了获得实际帧的方法 RelativeTime 属性提供了被引用帧的时间戳4.Frame referencesSensorSensorSourceSourceReaderReaderFrameFrameFrame RefFrame Ref 提供获取帧数据的途径 建立本地副本或直接访问底层缓冲区 包含了帧中的元数据 如:彩色帧:帧格式、宽度、高度等 更重要的是,它可以减少获取帧的时间 不会提供不需要处理的帧5.FramesSensorSensorSourceSourceReaderReaderFrameFrameFram
12、e RefFrame Ref坐标系映射转换AIP名称名称应用的应用的数据源数据源维数维数 单位单位范围范围原点原点ColorSpacePointColorSpacePointColorColor2 2维维像素像素1920 x10801920 x1080左上角左上角DepthSpacePointDepthSpacePointDepth,Depth,Infrared,Infrared,Body Body indexindex2 2维维像素像素512x424512x424左上角左上角CameraSpacePointCameraSpacePointBodyBody3 3维维米米 红外红外/深度摄像头深
13、度摄像头Kinect中的三种坐标系:中的三种坐标系:坐标映射坐标映射API提供了三种坐标系的转换方法提供了三种坐标系的转换方法提 纲 Kinect 体感传感器简介 Kinect 硬件结构 Kinect 基本接口与使用方法 Kinect 高级功能 Kinect 应用范围 Kinect 初体验基于Kinect的室内监控系统Kinect 高级功能 手势跟踪与识别 人脸识别 语音识别 3D建模:KinectFusion 第三方框架:Unity3D、MATLAB、OpenCV 附属开发工具 手势跟踪与识别 Body:Hand states手势跟踪与识别 Body:Hand states两种基本属性:Ha
14、ndLeftState,HandRightState Unknown Not tracked Open Closed Lasso(半握拳)两种置信度属性:HandLeftConfidence,HandRightConfidence High、Low手势跟踪与识别目前只支持两个人DEMO人脸识别探测探测校准校准定位定位表情表情 通过通过body帧检测人脸帧检测人脸 输出面部外围边框输出面部外围边框 标定面部标定面部5个关键点个关键点 返回各关键点之间的位置关系返回各关键点之间的位置关系 确定表情确定表情人脸识别 Body:Activities,Appearance,Expressions Act
15、ivities 面部活动 EyeLeftClosed EyeRightClosed MouthOpen MouthMoved LookingAway Appearance 外貌 WearingGlasses Expressions 表情 Happy NeutralDEMO语音识别 基本功能:声源定位采用四元线性麦克风阵列,4个麦克风从4个角度采集声源,经过音频处理后可以判断出声源的来源方向和大小。硬件设备灵敏度高,可以过滤背景噪声,对人的声音较敏感。语音识别 基本功能:声源定位采用四元线性麦克风阵列,4个麦克风从4个角度采集声源,经过音频处理后可以判断出声源的来源方向和大小。硬件设备灵敏度高,
16、可以过滤背景噪声,对人的声音较敏感。扩展功能:语言识别 安装相关插件和语言包:Speech Platform SDK v11、Speech Platform Runtime v11、K4W Language Models,可以根据已定义的语法识别出有限的词组或短语,然后根据语音指令控制应用程序。目前不支持汉语。3D建模-KinectFusionKinect 传感器是一种RGB-D 传感器,即可以同时获得环境颜色值(RGB)和深度值(depth)的传感器。KinectFusion 算法通过将Kinect 采集到的深度数据进行匹配定位与融合来实现3D场景重构。KinectFusion V1算法流程
17、:深度数据处理,是将传感器原始的深度数据转换成3D点云,得到点云中顶点的3维坐标和法向量;相机跟踪,是将当前帧3D 点云和由现有模型生成的预测的3D点云进行ICP(迭代最近点)匹配,计算得到当前帧相机的位姿;点云融合,是根据所计算出的当前相机位姿,使用TSDF点云融合算法将当前帧的3D 点云融合到现有模型中;场景渲染,是使用光线跟踪的方法,根据现有模型和当前相机位姿预测出当前相机观察到的环境点云,一方面用于反馈给用户,另一方面提供给相机跟踪进行ICP 匹配。第三方框架:Unity3D、MATLAB and OpenCVUnity3D是由Unity Technologies开发的一个让玩家轻松创
18、建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。微软的Kinect提供对Unity3D的支持。已经提供第三方工具包:Kinect.unityPackage微软的Kinect Common Bridge 项目团队致力于Kinect 与第三方框架的结合。目前,Kinect V2与MATLAB、OpenCV等框架的使用还在调试中待发布。附属开发工具 Kinect Studio v2.0、Visual Gesture Builder v2.0Kinect Studio可以像摄像机一样,记录原始的深度和彩色数据流,并在Kinect 应
19、用中重放。由此开发者可以使用预先记录的数据流,避免了每次都亲自站在Kinect 前测试的麻烦。具体功能:从Kinect v2设备录制样本剪辑 回放录制的样本剪辑 直接从连接的Kinect V2设备播放实时数据 从录制和播放的样本剪辑中查看二维、三维坐标和数据 新推出的Visual Gesture Builder是专门用于姿势(手势)开发的工具套件。Kinect Studio v2.0提 纲 Kinect 体感传感器简介 Kinect 硬件结构 Kinect 基本接口与使用方法 Kinect 高级功能 Kinect 应用范围 Kinect 初体验基于Kinect的室内监控系统Kinect 应用范围 计算机应用 机器人视觉与控制 3D建模 物联网智能化领域 医疗领域 教育领域 电子商务领域提 纲 Kinect 体感传感器简介 Kinect 硬件结构 Kinect 基本接口与使用方法 Kinect 高级功能 Kinect 应用范围 Kinect 初体验基于Kinect的室内监控系统