论文部分内容阅读
摘要:随着交互式人体追踪技术已经在机器人、人机交互、游戏、远程呈现等行业得到了广泛的应用,交互式技术的研究也在不断地进行。为了提高交互式技术的研究和應用,本文提出了基于Kinect的人体三维姿势实时识别的方法,准确率较高,并将交互式识别技术在实际生活中进行应用。
关键词:Kinect;对比匹配;反馈;应用
引言
近几年来机器视觉领域的研究一个热点就是姿势识别,如可穿戴传感器和视觉捕捉技术都是利用人体轮廓作为特征表达。目前对人体姿势识别和分析较成熟的方法有模式识别,图像处理等技术,它们通过检测人体目标,区分人体部位,进而对人体姿势及动作进行识别。这些方法处于视觉识别中的中低级水平,随着技术的革新和时代的发展,以视频方式分析人体姿态得到了行业人士的推崇,随着Kinect的成熟,这项技术也在人机交互,人体运动分析,智能监控等多数领域得到了发展和应用。
1 Kinect交互式设备简介
微软发布的一个产品Kinect摄像机,它是一款可实时获取RGB彩色图像和可以提取物体的深度信息的设备,它由红外发射器,RGB彩色摄像头和3D传感器三部分组成(如图1所示)。在Kinect for windows SDK的环境下,研究者可以实时获取人体骨架中20个关节的三维数据点X,Y,Z,如图2所示。
经过关节三维数据点规则化处理,可以得到距离特征和角度特征在Kinect空间坐标系变化时,较好的保持姿态不变性,因此可以得到描述姿态的稳定模型。把这20个关节三维数据点转化成人体姿态的距离和角度特征,就能够对人体姿态做出准确的判断。
2 人体姿势库的建立
2.1常见姿势调查
在班里找了40名同学和老师作为受访者,让他们做出常见的站姿,坐姿,蹲姿,躺。经过筛选得到日常中常见的站姿有站立、跨立、金鸡独立、双手背后站、双手环抱站、踮脚、扎马步、左前弓步、右前弓步,交叉腿、稍息、投降姿势、双手掐腰;坐姿有二郎腿、盘腿、正坐、跪坐;蹲姿有深蹲、半蹲、单膝跪地;躺有平躺,侧身躺。将这些姿态作为常用姿态库,下一步进行姿态识别实验。
2.2姿势库的选择
由于只是实验,不用选择那么多姿势进行试验,也由于有些姿势在Kinect中存在骨骼数据估计点,也就是未跟踪点,因此需要选择20个骨骼点都可以得到三维数据的姿势作为建库姿势。经过采集数据,在MatLab中重现三维数据点结果后,选择了6种姿势作为姿势识别库,它们是站立,金鸡独立,左前弓步,马步,投降姿势,抬手等。
2.3姿势样本库的建立
邀请身高,体重,性别不同的同学25个人进行姿势模板的采集,每个人针对以上的6种姿势分别重复5次做出相应的动作,每个人的每个动作作为一个样本,每个样本是30帧骨骼数据。让采集者根据自己的理解情况在Kinect采集页面前做出自己的动作,摆好姿势后,自动采集30帧骨骼数据,并通过程序以文件流的形式写入.csv文件中,从而建立了姿势样本库。
3 姿势识别算法
3.1 静态姿势的表示
Kinect每秒大概产生30帧骨骼数据,由于静态时骨骼关节数据变化不大,所以可以将30帧骨骼数据取平均值,把计算完平均值的骨骼数据转化为距离特征来表示静态姿势。
其中F为距离特征向量集合,fi为其中的一个距离特征值,一个静态姿势样本由24维距离特征来表示。
3.2 .1 KNN分类器算法
如何设计一个好的分类器在kinect姿势识别中非常重要,它决定着目标对象所做的姿势与模板姿势成功匹配的概率,也是判定识别准确与否的核心。
有一个传统的分类器KNN,它的核心思想是如果一个样本空间中的 K个最相似的样本中的大多数属于某一类,那么该测试样本就属于那一类。该方法判断一个测试样本的类别依赖于距离测试样本最近的 K 个样本,计算距离的方法有欧式距离、闵科夫斯基距离、曼哈顿距离等。该分类器有一个参数 K取值与训练样本的大小有关,K 的最优取值可以通过交叉验证实验得到。
3.2.2 改进型NN分类器算法
由于K个样本太多,无法做到实时性,所以KNN分类器算法需要进行改进,这个实验我们采用最近邻(NN)姿势识别算法,就是把KNN中的K取值为1时的KNN。在NN姿势识别算法中需要测量待测样本和样本空间中的所有样本的欧氏距离,将距离待测样本最小的训练样本的类别作为分类识别的结果。假设有测试样本和已知姿势样本库,n为样本姿势库的大小。计算与之间的欧式距离,计算公式如下:
其中和分别表示测试姿态和已知姿态的距离特征向量集合,和表示某一个对应的距离特征值,越小,表示两个姿态样本相似度越大,反之,两个姿态样本的相似度越小。
计算测试姿态和样本库中的所有样本之间的欧式距离,将距离测试样本最小的样本对应的标签赋给测试样本,得到识别结果,测试样本的分类结果label()计算公式为:
m 表示测试样本距离样本库中最小的距离已知样本的序号,那么样本对应的类别,就是测试样本的类别。
通过实验分析,该识别算法准确率95%以上,识别效果较好。
4 姿势识别的应用
4.1 门锁信号
在生活中好多时候会忘记带钥匙,不得不叫上开锁公司去帮忙开锁。这样就会很麻烦,在科技进步那么快的时代,这种现象显然应该被避免,我们就可以利用kinect识别技术来解决这样的事情。
我们可以把Kinect设备嵌入到门当中,在主机上录入自己的身高,臂展,腿长,和两种固定的姿势。把一种姿势与门锁联系到一起,当检测到正确的身高,臂展,腿长之后,再做出事先设定好的姿势之后,就会产生一个开门信号,门就会打开。当同一个人做出另一个固定姿势之后,就会产生门锁信号,门就会自动锁上。通过这种方式,我们就不必担心门忘锁或者忘记带钥匙这种情况了。
4.2 智能家居
现在最流行的词之一“智能家居”算是一个,我们同样可以利用kinect设备以及网络实现智能家居,让我们的生活更加有趣味,更加便捷。
我们可以在自己的卧室安装一个Kinect设备,在主机中设置很多固定的姿势,他们分别通过网络连接着家中的各种设备,比如:热水器,灯,窗帘等。当我们在卧室看电视或者不方便出去时,我们可以通过对Kinect设备做特定的姿势,热水器就可以自动打开放出适宜温度的水,灯就可以自动的关闭和打开,窗帘就可以自动关上或者拉开,也可以打开音响音乐等。通过这种方式来改变我们的生活,提高生活的品质。
5 结束语
利用Kinect作为姿势识别开发平台是一个很不错的选择,我们也有很多不同的方法去设计姿势识别的方案,本文主要采用了距离特征识别。从实验角度讲,这只能算是初步,分类方案还是存在一定的误差,还需要继续完善,我们还可以从角度等其他方面入手等。通过对算法的优化,我相信要不了多久在人体姿势识别方向上会有更加完善的效果,给我们的生活带来方便。
基金项目:国家大学生创新项目(201512216035)
安徽新华学院校级重点教研项目(2016jy007)
关键词:Kinect;对比匹配;反馈;应用
引言
近几年来机器视觉领域的研究一个热点就是姿势识别,如可穿戴传感器和视觉捕捉技术都是利用人体轮廓作为特征表达。目前对人体姿势识别和分析较成熟的方法有模式识别,图像处理等技术,它们通过检测人体目标,区分人体部位,进而对人体姿势及动作进行识别。这些方法处于视觉识别中的中低级水平,随着技术的革新和时代的发展,以视频方式分析人体姿态得到了行业人士的推崇,随着Kinect的成熟,这项技术也在人机交互,人体运动分析,智能监控等多数领域得到了发展和应用。
1 Kinect交互式设备简介
微软发布的一个产品Kinect摄像机,它是一款可实时获取RGB彩色图像和可以提取物体的深度信息的设备,它由红外发射器,RGB彩色摄像头和3D传感器三部分组成(如图1所示)。在Kinect for windows SDK的环境下,研究者可以实时获取人体骨架中20个关节的三维数据点X,Y,Z,如图2所示。
经过关节三维数据点规则化处理,可以得到距离特征和角度特征在Kinect空间坐标系变化时,较好的保持姿态不变性,因此可以得到描述姿态的稳定模型。把这20个关节三维数据点转化成人体姿态的距离和角度特征,就能够对人体姿态做出准确的判断。
2 人体姿势库的建立
2.1常见姿势调查
在班里找了40名同学和老师作为受访者,让他们做出常见的站姿,坐姿,蹲姿,躺。经过筛选得到日常中常见的站姿有站立、跨立、金鸡独立、双手背后站、双手环抱站、踮脚、扎马步、左前弓步、右前弓步,交叉腿、稍息、投降姿势、双手掐腰;坐姿有二郎腿、盘腿、正坐、跪坐;蹲姿有深蹲、半蹲、单膝跪地;躺有平躺,侧身躺。将这些姿态作为常用姿态库,下一步进行姿态识别实验。
2.2姿势库的选择
由于只是实验,不用选择那么多姿势进行试验,也由于有些姿势在Kinect中存在骨骼数据估计点,也就是未跟踪点,因此需要选择20个骨骼点都可以得到三维数据的姿势作为建库姿势。经过采集数据,在MatLab中重现三维数据点结果后,选择了6种姿势作为姿势识别库,它们是站立,金鸡独立,左前弓步,马步,投降姿势,抬手等。
2.3姿势样本库的建立
邀请身高,体重,性别不同的同学25个人进行姿势模板的采集,每个人针对以上的6种姿势分别重复5次做出相应的动作,每个人的每个动作作为一个样本,每个样本是30帧骨骼数据。让采集者根据自己的理解情况在Kinect采集页面前做出自己的动作,摆好姿势后,自动采集30帧骨骼数据,并通过程序以文件流的形式写入.csv文件中,从而建立了姿势样本库。
3 姿势识别算法
3.1 静态姿势的表示
Kinect每秒大概产生30帧骨骼数据,由于静态时骨骼关节数据变化不大,所以可以将30帧骨骼数据取平均值,把计算完平均值的骨骼数据转化为距离特征来表示静态姿势。
其中F为距离特征向量集合,fi为其中的一个距离特征值,一个静态姿势样本由24维距离特征来表示。
3.2 .1 KNN分类器算法
如何设计一个好的分类器在kinect姿势识别中非常重要,它决定着目标对象所做的姿势与模板姿势成功匹配的概率,也是判定识别准确与否的核心。
有一个传统的分类器KNN,它的核心思想是如果一个样本空间中的 K个最相似的样本中的大多数属于某一类,那么该测试样本就属于那一类。该方法判断一个测试样本的类别依赖于距离测试样本最近的 K 个样本,计算距离的方法有欧式距离、闵科夫斯基距离、曼哈顿距离等。该分类器有一个参数 K取值与训练样本的大小有关,K 的最优取值可以通过交叉验证实验得到。
3.2.2 改进型NN分类器算法
由于K个样本太多,无法做到实时性,所以KNN分类器算法需要进行改进,这个实验我们采用最近邻(NN)姿势识别算法,就是把KNN中的K取值为1时的KNN。在NN姿势识别算法中需要测量待测样本和样本空间中的所有样本的欧氏距离,将距离待测样本最小的训练样本的类别作为分类识别的结果。假设有测试样本和已知姿势样本库,n为样本姿势库的大小。计算与之间的欧式距离,计算公式如下:
其中和分别表示测试姿态和已知姿态的距离特征向量集合,和表示某一个对应的距离特征值,越小,表示两个姿态样本相似度越大,反之,两个姿态样本的相似度越小。
计算测试姿态和样本库中的所有样本之间的欧式距离,将距离测试样本最小的样本对应的标签赋给测试样本,得到识别结果,测试样本的分类结果label()计算公式为:
m 表示测试样本距离样本库中最小的距离已知样本的序号,那么样本对应的类别,就是测试样本的类别。
通过实验分析,该识别算法准确率95%以上,识别效果较好。
4 姿势识别的应用
4.1 门锁信号
在生活中好多时候会忘记带钥匙,不得不叫上开锁公司去帮忙开锁。这样就会很麻烦,在科技进步那么快的时代,这种现象显然应该被避免,我们就可以利用kinect识别技术来解决这样的事情。
我们可以把Kinect设备嵌入到门当中,在主机上录入自己的身高,臂展,腿长,和两种固定的姿势。把一种姿势与门锁联系到一起,当检测到正确的身高,臂展,腿长之后,再做出事先设定好的姿势之后,就会产生一个开门信号,门就会打开。当同一个人做出另一个固定姿势之后,就会产生门锁信号,门就会自动锁上。通过这种方式,我们就不必担心门忘锁或者忘记带钥匙这种情况了。
4.2 智能家居
现在最流行的词之一“智能家居”算是一个,我们同样可以利用kinect设备以及网络实现智能家居,让我们的生活更加有趣味,更加便捷。
我们可以在自己的卧室安装一个Kinect设备,在主机中设置很多固定的姿势,他们分别通过网络连接着家中的各种设备,比如:热水器,灯,窗帘等。当我们在卧室看电视或者不方便出去时,我们可以通过对Kinect设备做特定的姿势,热水器就可以自动打开放出适宜温度的水,灯就可以自动的关闭和打开,窗帘就可以自动关上或者拉开,也可以打开音响音乐等。通过这种方式来改变我们的生活,提高生活的品质。
5 结束语
利用Kinect作为姿势识别开发平台是一个很不错的选择,我们也有很多不同的方法去设计姿势识别的方案,本文主要采用了距离特征识别。从实验角度讲,这只能算是初步,分类方案还是存在一定的误差,还需要继续完善,我们还可以从角度等其他方面入手等。通过对算法的优化,我相信要不了多久在人体姿势识别方向上会有更加完善的效果,给我们的生活带来方便。
基金项目:国家大学生创新项目(201512216035)
安徽新华学院校级重点教研项目(2016jy007)