http://cvrc.ece.utexas.edu/Publications/Xia_HAU3D12.pdf
View Invariant Human Action Recognition Using Histograms of 3D Joints
The HOJ3D computed from the action depth sequences are reprojected using LDA and then clustered into k posture visual words, which represent the prototypical poses of actions. The temporal evolutions of those visual words are modeled by discrete hidden Markov models (HMMs).
特征定义
In this representation, the 3D space is partitioned into n bins using a modified spherical coordinate system. We manually select 12 informative joints to build a compact representation of human posture. To make our representation robust against minor posture variation, votes of 3D skeletal joints are cast into neighboring bins using a Gaussian weight function.
we acquire the 3D locations of 20 skeletal joints which comprise hip center, spine, shoulder center, head, L/ R shoulder, L/ R elbow, L/ R wrist, L/ R hand, L/ R hip, L/ R knee, L/ R angle and L/ R foot.
we compute our histogram based representation of postures from 12 of the 20 joints, including head, L/ R elbow, L/ R hands, L/ R knee, L/ R feet, hip center and L/ R hip. We take the hip center as the center of the reference coordinate system, and define the x-direction according to L/ R hip. The rest 9 joints are used to compute the 3D spatial histogram.
要达到视不变(不同视角下相同姿态正确归类):We achieve this by aligning our spherical coordinates with the person’s specific direction。We define the center of the spherical coordinates as the hip center joint.Define the horizontal reference vector α to be the vector from the left hip center to the right hip center projected on the horizontal plane (parallel to the ground), and the zenith reference vector θ as the vector that is perpendicular to the ground plane and passes through the coordinate center.
partition the 3D space into n bins
The inclination angle is divided into 7 bins from the zenith vector θ: [0, 15], [15, 45], [45, 75], [105, 135], [165, 180]
Our HOJ3D descriptor is computed by casting the rest 9 joints into the corresponding spatial histogram bins.
To make the representation robust against minor errors of joint locations, we vote the 3D bins using a Gaussian weight function:


For each joint, we only vote over the bin it is in and the 8 neighboring bins. We calculate the probabilistic voting on θ and α separately since they are independent (see Fig. 4). The probabilistic voting for each of the 9 bins is the product of the probability on α direction and θ direction. Let the joint
location be

The vote of a joint location to bin

is

输入为20*3(20个关节点,xyz3维空间坐标),输出为84位HOJ3D特征
特征为84维向量,水平方向12,垂直方向7
1,12个关节点局部坐标的计算:1,根据L_HIP和R_HIP的连线方向计算转换后的坐标 ; 2,计算相对于HIP_CENTER的坐标
2,之后计算两个偏转角 vector α 和 vector θ
3,在每个关节所属的bin中的8个邻域内,按双方向的单高斯分布乘积投票
特征降维
Linear discriminant analysis (LDA) is performed to extract the dominant features.
降维的目的是得到区分度更大的9个维度信息
输入为84维HOJ3D特征,输出为9维降维特征
特征聚类
We cluster the vectors into K clusters (a K-word vocabulary) using K-means. Then each posture is represented as a single number of a visual word.
聚类是为了减少观察特征表示,训练阶段需要把所有观测数据(所有动作,每一个动作包含若干帧,每帧的20个骨骼节点经过LDA降维成9)在9维空间中聚类,可以得到25个聚类中心的坐标(9维),依次标号
在识别阶段,将LDA之后的特征,分配到最近邻的聚类中心,记录其标号,作为HMM的输入参数
训练阶段,输入为所有动作的9维特征,输出为25个聚类中心
识别阶段,输入为每一帧的动作特征(9维),输出为距其最近的聚类中心的标号
动作识别
the HMM gives a state based representation for each action. After forming the models for each activity, we take an action sequence

and calculate its probability of a model

for the observation sequence,

for every model, which can be solved using the forward algorithm. Then we classify the
action as the one which has the largest posterior probability.

训练阶段,输入为每一类动作的时序标号,输出为HMM模型参数
识别阶段,输入为某一动作的时序标号,输出为前向概率即模型匹配度最大的动作模型 —— 识别结束
- 基于ROS的运动识别
#!/usr/bin/env python # -*- coding: utf-8 -*- import rospy import cv2 import numpy as np from sensor ...
- HanLP中人名识别分析
HanLP中人名识别分析 在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: 名字识别的问题 #387 机构名识别错误 关 ...
- leap motion
体感控制器: 识别:手,手指和工具,获取位置,手势,动作 范围:倒金字塔,塔尖在设备中心,2.5cm~0.6米 坐标系统:采用右手笛卡尔积坐标系,返回的数值:毫米 摆放:绿灯朝向自己,z轴距离屏幕越来 ...
- paper 92:图像视觉博客资源2之MIT斯坦福CMU
收录的图像视觉(也包含机器学习等)领域的博客资源的第二部分,包含:美国MIT.斯坦福.CMU三所高校 1)这些名人大家一般都熟悉,本文仅收录了包含较多资料的个人博客,并且有不少更新,还有些名人由于分享 ...
- paper 86:行人检测资源(上)综述文献【转载,以后使用】
行人检测具有极其广泛的应用:智能辅助驾驶,智能监控,行人分析以及智能机器人等领域.从2005年以来行人检测进入了一个快速的发展阶段,但是也存在很多问题还有待解决,主要还是在性能和速度方面还不能达到一个 ...
- (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU
首页 视界智尚 算法技术 每日技术 来打我呀 注册 OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...
- 第六十四篇、OC_计步器
计步器的实现方式主要有那么两种 1.通过直接调用系统的健康数据,基于HealthKit框架的,但是貌似是一小时更新一次数据.如果要实时获取步数,这种方式并不是最佳. 2.基于CoreMotion框架, ...
- Kinect for Windows SDK开发入门(15):进阶指引 下
Kinect for Windows SDK开发入门(十五):进阶指引 下 上一篇文章介绍了Kinect for Windows SDK进阶开发需要了解的一些内容,包括影像处理Coding4Fun K ...
- iOS获取健康步数从加速计到healthkit
计步模块接触了一年多,最近又改需求了,所以又换了全新的统计步数的方法,整理一下吧. 在iPhone5s以前机型因为没有陀螺仪的存在,所以需要用加速度传感器来采集加速度值信息,然后根据震动幅度让其加入踩 ...
随机推荐
- MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止
这几天因为工作需求,需要把MySQL请出来,所以将尘封已久的MySQL进行启动.可是事与愿违,兴许是许久没有访问MySQL了,MySQL生气的不理我,并向外抛出一阵阵报错.1.其中一个是:Window ...
- 题解 P2195 【HXY造公园】
天哪这道题竟然只有一篇题解! emm,首先读题看完两个操作就已经有很明确的思路了,显然是并查集+树的直径 一波解决. 并查集不多说了,如果不了解的可以看这里. 树的直径的思路很朴实,就是两边DFS(B ...
- 【Educational Codeforces Round 37 F】SUM and REPLACE
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 那个D函数它的下降速度是很快的. 也就是说到最后他会很快的变成2或者1 而D(2)==2,D(1)=1 也就是说,几次操作过后很多数 ...
- 安卓Gallery配合ImageSwitcher不显示图片
Gallary装的是缩略图(thumb),ImageSwitcher装的是大图. 不显示图片的一个可能原因是gallery没设置代理器,另一个原因是没使用相对布局. GalleryActivity.j ...
- POJ 1088: 滑雪(经典 DP+记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 74996 Accepted: 27818 Description ...
- 用eclipse 检索SVN 上 myEclipse 建的web项后,成java项目解决方法
用eclipse 检索SVN 上 myEclipse 建的web项后,成java项目解决方法 在网上找了非常多,都无论用. 说添加.project 文件几个属性.但我发现里面都有,在我这里无论什么用. ...
- 为OLED屏添加GUI支持2:2D图形库
为OLED屏添加GUI支持2:2D图形库 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:S ...
- linux(debian/ubuntu)下连接安卓手机--小米4为例
更改:如今小米连接Ubuntu等Linux系统,直接改动手机上的连接方式就可以. --------------------------------------------- 因为安卓手机底层就是lin ...
- 大型网站架构之JAVA中间件
中间件就是在大型网站中,帮助各子模块间实现互相访问,消息共享或统一访问等功能的软件产品.常见的有: 远程服务框架中间件:主要解决各子模块之间互相访问的问题. 消息队列中间件:主要解决各子模之间消息共享 ...
- 118.类包装器与lambda函数包装器(伪函数实现)
#include <iostream> #include <list> using namespace std; //函数包装器,左边参数右边函数 template<cl ...