论文部分内容阅读
基于人体动作识别技术的人机交互与机械臂控制在医疗康复、虚拟现实以及工业及民用领域有广泛的应用。由于基于二维彩色图像的人体动作识别受环境噪声如光照、复杂背景、阴影等的影响,识别精度与准度不高,因此其推广与应用受到极大的限制。随着Kinect的出现,其基于深度图像的模式识别技术逐渐成为主流。由于深度图像能够直接反应三维物体的特征,并且不受物体纹理、背景、及光照的影响,解决了基于二维图像的模式识别难题。本文围绕着Kinect深度图像的人体动作识别技术,并且满足机械臂随动控制的实时性。首先,通过Kinect相机进行了必要数据的采集,并针对所获取的彩色数据与深度数据,对Kinect进行了摄像机的标定,将骨骼数据与彩色数据进行过了映射。并利用该映射,对骨骼节点数据进行了特征的提取。然后,提出了基于骨骼节点特征的两种人体动作识别算法。机械臂的随动的含义分为两种,一种是对人体动作语义指令做出反馈,另一种是将人体关节点映射为机械臂关节点。对于前者,首先通过数据源的获取,分析了人体动作的特点,在人体骨骼网络图的基础上,提取上肢骨骼空间向量夹角作为特征向量,并借助SVM支持向量机算法获得分类器。此外,提取人体骨骼节点相对位置信息,利用阈值判别法,快速获得的单个动作的识别结果。对于后者,直接将手臂关节点映射到机械臂关节点,通过计算骨骼节点处骨骼向量角度,控制机械臂仿人体手臂运动。最后,针对上述算法,利用开源的单片机Arduino与自制的舵机机械臂,在Windows平台上编写WPF程序,并编写Arduino单片机程序,实现了 Kinect实时采集人体数据,对机械臂进行控制的最终目标。论文最后对两种算法分别做出了验证,对比与文中提出的基于隐马尔科夫模型的人体动作识别与基于彩色图像的人体动作识别等相关算法。本文所设计算法实时性较高,Kinect能够以每秒20到25帧的识别速率对人体进行识别,并且识别的准确率在95%以上,算法复杂度低。