吴东艳,张凌志,冷爽,韩喜春 / 黑龙江工程学院 电气与信息工程学院摘 要:本文介绍了在 Matlab 开发环境中利用 Kinect 获取彩色图像和深度图像的具体操作步骤,以及利用 Kinect获取深度图像进行骨骼追踪的原理和实现方法。给出了 Kinect 摄像头获取深度信息和人体骨骼信息,将每个骨骼点的三维信息转换成深度图上的二维信息,通过滤波和人体像素分类、部位识别,骨骼跟踪系统的 20 个关节点坐标。

实践证明,这种方法不易受外界环境因素的干扰,能较好地克服部位遮挡问题,从而获得高质量的跟踪图像。

关键词:图像采集;Kinect;Matlab;深度图像;骨骼追踪一、引言Kinect 是一款性价比高的图像传感器,可用于目标跟踪,语音识别,动作识别,捕获彩色图像和深度数据。通过开发算法 Kinect 能推算出人的骨骼结构。基于 Matlab 的深度图像采集与处理给出了在 Matlab 开发环境中利用 Kinect 获取彩色图像和深度图的具体操作步骤;利用 Kinect 深度图像进行骨骼追踪的原理和实现方法[1] 。能较好地克服部位遮挡问

题,获得高质量的跟踪图像。

二、开发平台的构建

软件安装环境需要 Windows7 及以上版本的 x64 操作系统。对于 Kinect2 则需要安装 MATLAB2016a 以上版本,本文采用 MATLAB2018b,接着安装摄像头驱动程序和开发工具。如本文使用罗技摄像头,就安装罗技摄像头驱动程序。

再接着在 MATLAB 集成开发环境 IDE 中选择“附加功能管理器”,再选择“获取硬件支持包”, 在显示的图形界面中,选择 Image Acquisition Toolbox Support Package for OSGeneric Video Interface 和 Kinect for Windows SensorImage Acquisition Toolbox Support Package for KinectFor Windows Sensor 安装,将会同时下载 KinectSDK 进行安装[2-3] 。然后接上 Kinect 电源,插上 USB 接口。在命令行输入 imaqhwinfo,要是以上步骤没问题的话,命令行窗口会显示出 Kinec 和罗技摄像头 struct 信息。Matlab 中打开 app里面的 Image Acquisition,就可以看到 Kinect 和罗技摄像头在菜单选项里面,然后就可以开始 Kinect 彩色和深度图像以及逻辑摄像头彩色图像采集了。使用罗技摄像头的图像采集工具箱用户界面如图 1 所示[4] 。

三、利用图像采集工具箱采集彩色和深度图像

在 MATLAB 主菜单选择应用程序,在应用程序下选择Image Acquisition,进入图像采集工具箱。在 HardwareBrowser 窗口中列出本系统中安装和支持的所有摄像头。其中就有彩色传感器 Kinect V2 Color Sensor(kinect-1) 和深度传感器 Kinect V2 Depth Sensor(kinect-2)。彩色图像有 7 种格式,深度图像有 3 种格式。选择某一种图像格式并双击,则选择了该图像格式进行采集。然后在图像采集和预览窗口中选择采集或预览图像。预览是连续采集图像但不保存。图像可以按帧采集并保存。MATLAB 图像采集工具箱主用户界面如图 1 所示。利用此人机交互界面采集的彩色图像和深度图像如图 2 所示[5] 。

图 2 采集的彩色图像和深度图像

点击 Start Preview 启动图像预览,点击 Stop Preview停止图像预览。点击 Start Acquisition 启动图像采集,点击 Stop Acquisition 停止图像采集。在采集参数设置窗口可以设置如下参数:每次触发采集的帧数,颜色空间,摄像头高低角度,每秒帧数。在采集时可以设置导出数据,文件采用哪种格式保存,图像在显示器上显示的部分。

在信息窗口 Information 中显示正在使用的图像传感器配置的相关信息。在交互日志窗口 Session Log 中操作图像处理工具箱每一步对应的 MATLAB 命令。可以将其整理到自己设计的 MATLAB 命令文件中

[6] 。

图像采集常用命令:

hwInfo = imaqhwinfo('kinect'),识别出系统中两个图像传感器装置。

hwInfo.DeviceInfo(1) 和 hwInfo.DeviceInfo(2) 分 别显示出彩色和深度传感器详细信息。

colorVid = videoinput('kinect',1) 和 depthVid =videoinput('kinect',2) 生成两个视频输入的数据流。

triggerconfig([colorVid depthVid],'manual') 设置为手动触发模式。

colorVid.FramesPerTrigger = 100 和 depthVid.

FramesPerTrigger = 100设置每次触发采集多少帧图像数据。

start([colorVid depthVid]) 和 trigger([colorViddepthVid]) 启动图像采集并记录数据。

[colorFrameData,colorTimeData,colorMetaData] =getdata(colorVid) 和 [depthFrameData,depthTimeData,depthMetaData] = getdata(depthVid) 重复采集图像数据。

stop([colorVid depthVid]) 停止彩色和深度图像采集。

骨骼追踪常用命令:

depthSrc = getselectedsource(depthVid) 从深度装置得到视频对象。

depthSrc.TrackingMode = 'Skeleton' 打开骨骼追踪。

anyPositionsTracked = any(metaDataDepth(95).

IsPositionTracked ~= 0) 和 anySkeletonsTracked =any(metaDataDepth(95).IsSkeletonTracked ~= 0) 从 深 度流检查追踪的骨骼。

trackedSkeletons = find(metaDataDepth(95).

IsSkeletonTracked) 显示那些骨骼被追踪了。

jointCoordinates = metaDataDepth(95).

JointWorldCoordinates(:, :, trackedSkeletons) 和j o i n t I n d i c e s = m e t a D a t a D e p t h ( 9 5 ) .

JointImageIndices(:, :, trackedSkeletons) 用彩色显示关节和关节的坐标

[7] 。

四、骨骼追踪的实现

深度图像对人体进行识别主要包括人体部位的静态识别、对骨骼、关节位置的判定以及人体动作的动态识别等。

Kinect 的骨骼追踪技术是通过处理深度图像建立起人体各个关节的坐标,而 Kinect 的突出功能就是处理深度图像,通过骨骼追踪技术来确定人体的各个部位。深度图像指从观察者角度看,图像所包含信息与场景物体表面距离相关的一种图像。深度图像能直接反映物体表面的三维特征 ,且不受光照、阴影和色度等因素的影响。分析深度图像比较接近 Kinect 的区域,逐点扫描这些深度区域,判断是否是“人体”目标,图 3 所示就是根据深度图像识别出人体的 20 个骨骼点:头部(head)、双肩中央 (shoulder center)、脊柱中段 (spine)、臀部中央 (hip center)、左臀部 (hip 1eft)、右臀部 (hipright)、左手 (hand left)、右手 (hand right)、左腕关节(wrist left)、右腕关节 (wrist right)、左肘关节 (elbowleft)、右肘关节 (elbow right)、左肩 (shoulder left)、右 肩 (shoulder right)、 左 膝 盖 (knee left)、 右 膝 盖(knee right)、左踝关节 (ankle left)、右踝关节 (ankleright)、左脚 (foot left) 和右脚 (foot right) [8-9]。

图 3 深度图像的骨骼追踪图像

Kinec 可以将这 20 个关节位置是通过(x,y,z)三维坐标表示出来,Kinect 通过这些关节的坐标来识别人所做的各种动作。坐标系满足右手螺旋规则,Kinect 处于原点位置,y 轴正向往上延伸 ,x 轴正向往左延伸 ,z 轴则与 Kinect摄像头的方向相同,这个空间被称为骨架空间。深度数据由16 位组成,利用后 3 位信息 (index) 锁定人体目标,将前 13位深度数据统一转换为 8 位的距离信息,并对人体目标和背景做不同的二值处理,即将人物的 8 位深度距离信息 (depthdata) 全部转换为 1,显示为白色,将环境的深度数据转换为0,显示为黑色,实现深度图像的二值化

[10] 。

将 Kinect 的骨骼追踪功能应用于视频监控,只要在侦测视角范围,即使在夜间也可以侦查到是否有人在侦测视角范围内就可以被辨别。Kinect 还可以识别人的动作,如果被监控的对象有可疑动作,将会实时报警,对一些特定的动作作出报警反应。

matlab 图像采集,基于 Matlab 的深度图像采集与处理相关推荐

  1. Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别

    Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别 目录 车牌图像数据集 视频动态演示 核心代码 相关文章 Matlab:基于Matlab通过GUI实现自动驾驶的车牌智能识别 Matl ...

  2. Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机GA遗传算法PSO粒子群优化算法)、案例应用之详细攻略

    Matlab:基于Matlab实现人工智能算法应用的简介(SVM支撑向量机&GA遗传算法&PSO粒子群优化算法).案例应用之详细攻略 目录 1.SVM算法使用案例 1.1.Libsvm ...

  3. Matlab:基于Matlab实现人工智能算法应用的简介(BP神经网络算法NN、SOFM神经网络)、案例应用(基于Matlab的GUI的方式创建/训练/预测神经网络)之详细攻略

    Matlab:基于Matlab实现人工智能算法应用的简介(BP神经网络算法NN.SOFM神经网络).案例应用(基于Matlab的GUI的方式创建/训练/预测神经网络)之详细攻略 目录

  4. matlab指纹图像采集,基于MATLAB实现的指纹图像预处理

    西南民族大学学报·自然科学版第 34 卷第 4 期 Journal of Southwest University for Nationalities⋅Natural Science Edition ...

  5. spwm逆变器双极性matlab教程,基于MATLAB/Simulink的SPWM逆变电源的建模与仿真

    Electrical Automation 变流技术 Converter Techniques <电气自动化>2014 年第 36 卷 第 3 期 基于 MATLAB/Simulink 的 ...

  6. 图像有损压缩matlab程序,基于Matlab的灰度图像DCT与RLE的混合有损压缩

    人工智能及识别技术本栏目责任编辑:唐一东第5卷第21期(2009年7月)基于Matlab 的灰度图像DCT 与RLE 的混合有损压缩 朱玲芳,刘任任 (湘潭大学信息工程学院,湖南湘潭411105) 摘 ...

  7. 码分复用的matlab仿真,基于matlab的多路时分复用仿真.doc

    基于matlab的多路时分复用仿真 通信系统原理综设实验报告 多路时分复用matlab仿真系统 教师评语: 引言 在实际的通信系统中,为了扩大通信链路的容量,提高通信系统的利用率,需要在一条链路上传输 ...

  8. matlab rltool,基于Matlab工具箱Rltool的控制系统校正设计

    山西电子技术2018 年第 4 期 软件技术 收稿日期:2018 -04 -10 作者简介: 乔永凤( 1975-) ,女,山西左云人,讲师,硕士研究生,主要研究方向: 语音信号处理,自动控制原理及其 ...

  9. 用matlab相关分析,基于matlab的逐像元偏相关分析

    本文介绍基于matlab的逐像元的三者间的偏相关,以产水,NPP和土壤保持为例进行说明 具体代码如下: %将三者多年的数据放在三个不同的矩阵中 [a,R]=geotiffread('F:\校级课题项目 ...

最新文章

  1. Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version o
  2. GDOP定位算法的MATLAB仿真
  3. javaWeb服务详解(含源代码,测试通过,注释) ——Dept的Service层
  4. python代码命令行tab补齐_Python语言交互模式下命令tab补全
  5. idea 一键部署 cloudtoolkit
  6. linux改键盘映射
  7. 为archlinux选择国内镜像
  8. 搜索关键词采集YouTube视频字幕
  9. Win10搭建gym运行atari游戏pong
  10. OpenCV之图像轮廓
  11. 阻容感基础01:从宇宙起源到阻容感(1)
  12. 如何快速上线、部署javaweb项目
  13. SpringCloud Alibaba 实战之《服务门户:Spring Cloud Gateway 如何把好微服务的大门》
  14. Python 利用 turtle画出樱花树
  15. Dell服务器组建阵列-Raid(无阵列卡)
  16. hdoj 4544 贪心
  17. Airport Simulation (数据结构与算法 – 队列 / Queue 的应用)
  18. 一起学英语第二季第六期
  19. PHP开发一个小型商务网站
  20. 回顾苹果操作系统Mac OS的发展历史

热门文章

  1. Android Studio 开发–微信APP门户界面设计
  2. 『跟着雨哥学AI』系列之八:趣味案例——有关NLP任务数据预处理的那些事儿...
  3. 《数字图像处理第二版》第一、二章部分习题
  4. 关于系统对接,你需要关注的点都在这里
  5. 拼题---求链式线性表的倒数第K项(两种算法的比较)
  6. Mozilla发布最大的人类语音数据集(Common Voice)
  7. 高级搜索算法之迭代加深
  8. matlab中计算标准差std函数
  9. 安卓学习日记——在线支付
  10. MySQL燕十八老师课程笔记:第九课:having筛选