基于三维骨骼的动作识别

1. 简介

2. 识别步骤

2.1 建立人体空间坐标系(归一化)

  • 由于人体正方向不一定与深度摄像头(如Kinect)平面垂直,则需要对人体进行方向归一化操作

  • 使人体“头部”、“左肩”、“右肩”、“颈部”和“臀部中心”五个关节所在平面 p p p x − y x - y xy 平面平行, z z z 轴正方向为面向深度摄像头正前方,如下图 所示

  • 然后,再以“臀部中心”为原点,以 p p p 平面为 x − y x - y xy 平面, z z z 轴方向不变建立人体空间坐标系

  • 下图中的旋转矩阵 R R R 使五关节所在平面以 π π π 为法向量旋转成以 e z e_z ez 为法向量,设旋转轴为 A = ( a x , a y , a z ) A = (a_x,a_y, a_z) A=(ax,ay,az),旋转角度为 θ θ θ 。用 p 1 , p 2 , p 3 , p 4 , p 5 p_1,p_2,p_3,p_4,p_5 p1,p2,p3,p4,p5 分别代表以上 5 5 5个关节点的三维坐标,由于法向量 π π π 与五个关节点所在平面垂直,则运用法向量与平面中任意两点组成的向量乘积为0 的原理得到向量 π = ( π x , π y , π z ) π = (π_x,π_y,π_z) π=(πx,πy,πz)
    在这里插入图片描述

  • π ′ , e z ′ \pi ', e_z' π,ez为单位法向量,则:
    π ′ = ( π x , π y , π z ) ∣ ∣ ( π x , π y , π z ) ∣ ∣ \pi' = \frac{(\pi_x, \pi_y, \pi_z)}{||(\pi_x, \pi_y, \pi_z) ||} π=(πx,πy,πz)(πx,πy,πz)
    e z ′ = ( 0 , 0 , 1 ) e_z'=(0, 0, 1) ez=(0,0,1)

  • 计算旋转矩阵 R R R的旋转轴(垂直于两个法向量)和旋转角度(两个法向量的夹角) θ \theta θ
    A = ( a x , a y , a z ) = π ′ × e z ∣ ∣ π ′ × e z ∣ ∣ A = (a_x, a_y, a_z) = \frac{\pi' \times e_z}{|| \pi' \times e_z ||} A=(ax,ay,az)=π×ezπ×ez
    θ = a r c c o s ( π ⋅ e z ∣ ∣ π ∣ ∣ ⋅ ∣ ∣ e z ∣ ∣ ) \theta = arccos(\frac{\pi \cdot e_z}{||\pi|| \cdot ||e_z||}) θ=arccos(πezπez)

  • 旋转矩阵
    R = A ^ + c o s θ ⋅ ( I − A ^ ) + s i n θ ⋅ A ∗ R = \hat A + cos\theta \cdot (I- \hat A) + sin \theta \cdot A^* R=A^+cosθ(IA^)+sinθA
    A ^ = [ a x a x a x a y a x a z a y a x a y a y a y a z a z a x a z a y a z a z ] A ∗ = [ 0 − a z a y a z 0 − a x − a y a x 0 ] \hat A= \begin{bmatrix} a_xa_x & a_xa_y & a_xa_z \\ a_ya_x & a_ya_y & a_ya_z \\ a_za_x & a_za_y & a_za_z \\ \end{bmatrix} \quad A^* = \begin{bmatrix} 0 & -a_z & a_y \\ a_z & 0 & -a_x \\ -a_y & a_x & 0 \\ \end{bmatrix} A^=axaxayaxazaxaxayayayazayaxazayazazazA=0azayaz0axayax0

  • P为深度摄像头坐标系下的坐标,P’为人体空间坐标系下的坐标(以臀部中心为原点)
    P ′ = P ⋅ R T − P h P' = P \cdot R^T - P_h P=PRTPh

    • P h P_h Ph:为深度摄像头坐标系下的臀部中心坐标
  • 因为人体个体的大小身高比例各不相同,所以需要用统一的方法进行度量,则使用立方体网格作为单位度
    量来描述
    在这里插入图片描述

    • 上图为11×11×11 的三维空间模型示意图,以臀部中心为原点,x 轴正负方向比例为5.5∶5.5(即1∶1),y 轴正负方向比例为5∶6,z 轴正负方向为5.5∶5.5(即1∶1)
    • 二维平面示意图如下图所示。根据个体相对身高比例定义网格边长d = h/10 。其中,h 为个体在坐
      标系中的相对高度
      在这里插入图片描述

2.2 关节坐标滤波

  • 采用加权递推平均滤波算法对人体关节点的坐标进行滤波,去除坐标的抖动

2.2 特征提取

  • 对关节点进行特征提取
    • 生成空域:关节点的坐标向量所形成的角度特征
    • 生成时域:每个关节的运动轨迹