0%

PointNet-Based-Hand-Gesture-Recognition

A PointNet-Based Solution for 3D Hand Gesture Recognition

Mirsu R, Simion G, Caleanu C D, et al. A pointnet-based solution for 3d hand gesture recognition[J]. Sensors, 2020, 20(11): 3226.

  1. 在Kaggle上公开了手势数据集
  2. 使用PCA进行手前臂分割
  3. 使用基于直方图的邻域策略规范化点云大小
  4. 使用PointNet架构完成3D DRGB图的手势识别

多级手部分割

多级分割流程图

预处理

由于分类时直接对3D点云使用了深度学习,因此预处理好点云数据也很重要。详细工作可参考之前的paper[28]。

过滤平滑:使用中值滤波来去除斑点噪声。

(a)未平滑原始深度图 (b)平滑过滤后

筛选出手部区域:默认手部是屏幕最近的物体。因此从最近点开始,选取一个深度区间7cm左右的所有点。同时进行计数。若这个区间的点总数小于阈值,则说明最近的点是一个离群点,不可靠。因此将区间往后移动重新划分。

区域内聚类: 通过区域,中心,等方式进行计算聚类。如果有多个类,则选择左上方的作为手部区域。

手前臂分割:通过PCA找到数据的对称轴。

(a)(b)PCA找到的手前臂轴和手部区域轴,(c)PCA无效的状态

并且利用一个手部检测窗口,一个手腕检测窗口来找到手腕分界线:计算两个窗口内点数的比例,找到一个比例极值处作为手腕分界线。

红框为手部检测窗口,每一轮增大一点。绿框为手腕检测窗口,大小固定。

采样压缩点云:移除邻居最多的点,或者保留邻域最小的点

点云采样示意图

参考文献

[28] Simion, G.; Caleanu, C. Multi-stage 3D segmentation for ToF based gesture recognition system. In Proceedings of the 2014 11th International Symposium on Electronics and Telecommunications (ISETC), Timisoara, Romania, 15–16 November 2014; pp. 1–4.