基于一次手势训练的kinect 3D 动态手势识别(提纲)
2015-03-19 19:14
543 查看
正在做kinect手势识别的项目,boss检查进度需要,特发一篇文章来记录所学顺便整理思路~~
基于一次手势训练是指一个手势的训练样本只有一个,无法使用SVM这种需要大量训练样本的模型
整体步骤有3个
一、手势分割
测试的视频中可能中不止一个手势,想将它们识别首先要做的是分割手势。可以用 Dynamic Time Warping(DTW),简单说原理就是时间上整合,消除手势挥动速度的影响。下面这个网址讲的很详细,就不复制了
http://blog.csdn.net/zouxy09/article/details/9140207点击打开链接
音频DTW和视频DTW原理相同,只是视频的纵坐标是向量,求距离的时候要求向量距离(差的平方和)而已。
二、视频图像特征提取
包括 关键点提取 和 关键点特征描述
基础知识:
(a)高斯金字塔、DOG金字塔的建立
(b) sift原理和代码
http://blog.csdn.net/xiaowei_cqu/article/details/8069548 http://blog.csdn.net/zddblog/article/details/7521424
sift算法要做两步:一是通过求局部极值提取兴趣点,二是计算兴趣点的梯度信息,运动信息(通过建立光流金字塔)
sift提取的兴趣点信息是xy轴的信息(每个特征点的维度=128维梯度信息+128运动信息),对于3D信息来说还要提取yz,,xz轴的信息(原理同xy轴一样),则每个特征点的维度=(128+128)X3=768维
其实sift的原理不用理解得很深入可以直接做2d识别项目,opencv简单地调用一两个函数就可以搞定,3D代码还需要自己修改一些东西。
三、手势分类
基于一次手势训练是指一个手势的训练样本只有一个,无法使用SVM这种需要大量训练样本的模型,这里可以采用K最近邻的方法来获取最终手势分分类。
具体步骤是:
1、对由训练样本获得的特征点向量信息通过聚类(kmean)训得到字典(codebook),计算出训练样本每一个特征点向量到哪个字典类心向量最近(欧式距离),最后得出代表这个训练样本特征的统计直方图(相当于稀疏编码)。
2、然后提取出测试样本的特征点向量信息,算出每一个特征点向量到那个字典类心向量最近(欧式距离),最后得出代表这个训练样本特征的统计直方图(相当于稀疏编码)。
3、对比所有训练样本统计直方图和测试样本统计直方图,用matlab的Knn分类的到最后手势识别的结果。。
全部流程推荐第一、第三大步骤用matlab编写,第二大步骤用opencv编写方便点
基于一次手势训练是指一个手势的训练样本只有一个,无法使用SVM这种需要大量训练样本的模型
整体步骤有3个
一、手势分割
测试的视频中可能中不止一个手势,想将它们识别首先要做的是分割手势。可以用 Dynamic Time Warping(DTW),简单说原理就是时间上整合,消除手势挥动速度的影响。下面这个网址讲的很详细,就不复制了
http://blog.csdn.net/zouxy09/article/details/9140207点击打开链接
音频DTW和视频DTW原理相同,只是视频的纵坐标是向量,求距离的时候要求向量距离(差的平方和)而已。
二、视频图像特征提取
包括 关键点提取 和 关键点特征描述
基础知识:
(a)高斯金字塔、DOG金字塔的建立
(b) sift原理和代码
http://blog.csdn.net/xiaowei_cqu/article/details/8069548 http://blog.csdn.net/zddblog/article/details/7521424
sift算法要做两步:一是通过求局部极值提取兴趣点,二是计算兴趣点的梯度信息,运动信息(通过建立光流金字塔)
sift提取的兴趣点信息是xy轴的信息(每个特征点的维度=128维梯度信息+128运动信息),对于3D信息来说还要提取yz,,xz轴的信息(原理同xy轴一样),则每个特征点的维度=(128+128)X3=768维
其实sift的原理不用理解得很深入可以直接做2d识别项目,opencv简单地调用一两个函数就可以搞定,3D代码还需要自己修改一些东西。
三、手势分类
基于一次手势训练是指一个手势的训练样本只有一个,无法使用SVM这种需要大量训练样本的模型,这里可以采用K最近邻的方法来获取最终手势分分类。
具体步骤是:
1、对由训练样本获得的特征点向量信息通过聚类(kmean)训得到字典(codebook),计算出训练样本每一个特征点向量到哪个字典类心向量最近(欧式距离),最后得出代表这个训练样本特征的统计直方图(相当于稀疏编码)。
2、然后提取出测试样本的特征点向量信息,算出每一个特征点向量到那个字典类心向量最近(欧式距离),最后得出代表这个训练样本特征的统计直方图(相当于稀疏编码)。
3、对比所有训练样本统计直方图和测试样本统计直方图,用matlab的Knn分类的到最后手势识别的结果。。
全部流程推荐第一、第三大步骤用matlab编写,第二大步骤用opencv编写方便点
(转载请注明作者和出处:http://blog.csdn.net/a1363901216未经允许请勿用于商业用途)
相关文章推荐
- kinect+ogre骨架追踪及手势识别(基于微软kinectSDK)
- 【图像识别】【读论文】基于Kinect手势识别的网页控制软件设计——陈建军
- SoundWave:基于声波的手势识别 笔记本一秒变Kinect
- kinect骨架追踪及手势识别(基于ogre引擎)
- 手势动态识别(基于opencv的简单实现)
- Kinect中动态手势的识别算法——倒序识别法
- 基于C++的Kinect手势识别实现
- 基于Kinect手势跟踪和识别
- 基于动态手势识别的酷狗音乐播放器控制
- 基于Kinect的手势识别的相关资讯
- 动态手势识别翻页以及计数
- 基于BP神经网络ANN的鼠标手势识别C#.NET实验程序
- 没有Kinect?摄像头+PC就能隔空玩3D手势游戏(附视频)
- Kinect开发教程三:利用OpenNI进行手势识别
- [译]Kinect for Windows SDK开发入门(十一):手势识别 下:基本手势识别
- Kinect--实现手势识别的三种基本的方法
- [译]Kinect for Windows SDK开发入门(十一):手势识别 下:基本手势识别
- 基于opencv2.0的haar算法以人脸识别为例的训练分类器xml的方法
- 基于opencv的haar算法以人脸识别为例的训练分类器xml的方法
- 基于Aforge的手势识别之一~~~简单的手写识别