基于410c开发板和摄像头的人体姿态估计(预研分析)头条

ctolib 发布于11月前 阅读998次
0 条评论

     最近自己想用410c来做一个运动相关的DIY,用410c开发板搭载摄像头来实现对自己的姿态的跟踪,用到健身运动中,完成对自己所作的动作的定位和标准评判,实时提醒自己所作健身动作的标准程度,前期进行了一些调研和预研究,这里将和大家一起分享一下自己在初期的预研过程对人体姿态估计算法的理解。

图1 不同运动姿态示意图

        人体姿态估计算法近年来随着体感游戏、VR等热度的不断提升,这类用于估算人体姿态的计算机算法得到了这些领域的专家和相关机构的热捧,也成为了当前视频处理和动态感知领域研究的一个重点。在前期的研究和分析过程中,主要从已有的运动姿态跟踪算法和410c开发板支持的fastcv库及平台性能来进行综合考虑,最终确定人体姿态估计算法,为后续进一步利用摄像头来实现人体姿态估计和运动姿态识别。

        一、与人体姿态估计相关设备及算法分析

        目前在人体姿态估计应用方面,大家最为熟悉的可能就是微软的kinect体感摄像头和Xbox体感游戏套件这两款产品,其中xbox体感游戏机主要是利用微软开发的kinect摄像头实现的各种体感运动姿态识别,来实现各种游戏的交互,实现体感游戏运动,Kinect上集成了各种处理算法和骨骼算法,可以实现对人体运动过程总的骨骼识别,如下图2,是应用kinect来实现对人体骨骼捕捉的应用,目前很多体感设备厂家都开始选用这款摄像头来进行相关的体感游戏和设备的开发。

图2 kinect 人体骨骼识别

           还有一款设备是英特尔退出的realsense 3D摄像头,这款摄像头是英特尔专门推出的一款应用于体感设备、人脸识别、无人机甚至VR的视觉处理设备,依托这套设备也可以快速的对人体的运动骨骼进行跟踪和识别,在realsense中通过双摄像头可以快速的实现对拍摄的三维信息进行处理,包括色彩、深度和距离的计算等。如下图是使用realsense 3D摄像头实现的一个目标跟踪示意图。

图3 realsense 3D摄像头人体识别跟踪

         在人体姿态估计算法方面,主要涉及到了目标识别、提取、匹配、机器学习、模式识别等一系列算法技术,通过应用这些基础的算法进行融合,以实现对不同人体姿态的。其中人体的姿态参数的估计是人体运动识别的核心处理过程,在处理过程中,由于人体本身就是一个复杂多变的形体,并且在人体运动过程总,人体的各个部分之间通过关节相连,运动可以是多个维度的。目前常用的人体姿态估计方法主要有以下几个方面:

       1)基于多幅图像数据的人体姿态估计

        这类方法是目前用的比较多的方法,主要是利用摄像头采集到的多幅图像数据来自动初始化人体的对象模型,然后根据多幅图像中的近似人体形状信息来实现对人体姿态的跟踪和估计,部分还可以基于多幅图像信息对运动过程中的人体形状的变化过程来进行建模,使用基于模型的方法来提高人体姿态估计和识别的精度,常用的基础处理方法有侧影线索引、梯度下降法、空间姿态随机搜索匹配法等。

        2)基于单目图像的姿态估计

       这类方法主要是利用单个摄像头采集图像,然后根据图像数据对人体姿态进行估计,在估计过程中通常会将人体的姿态初始化成一个外观模型,采用图像子块分析或者混合颜色模型来实现外观模型的初始化,然后利用监督学习、RVM和检测算子等来完成对人体运动姿态的检测和识别。

       3)基于多目图像的姿态估计

        这类方法是目前最为流行的一种方法,特别是随着kinect和realsense等推出,采用夺目图像进行姿态估计得到了快速的发展,利用双目来模拟人眼观察世界,可以有效的解决单目处理过程中的对遮挡处理和空间三维处理的局限性。

       4)基于HMM的姿态估计

       这种方法是一种类似于神经网络的方法,来对固定间隔的上下文进行平滑,其常用的方法有Viterbi算法、Baum-Welch算法等,是人体姿态估计中常用的一种方法,在处理过程中可以将HMM中的隐状态定位为需要估计的人体姿态,将视频中的图像作为观察对象,然后通过它来推理三维人体姿态参数,实现对人体的姿态的估计。

       二、Dragonboard 410c平台分析及开发库的选择

       前面几篇博客介绍的相关工作都是基于Dragoboard 410c开发板的,对Dragonboard 410c开发板的具体软件和硬件性能可以参考以下博客内容:

       http://www.csdn.net/article/a/2015-06-04/15825040

图4 Dragoboard 410c开发板

       这里我们用这个平台来做人体运动姿态估计,这里首先要考虑到,需要接入摄像头,这里开发板提供了两个USB接口,通过这两个接口可以方便的接入USB摄像头,但是这两个USB都是2.0的接口,理论上速度没问题,但是实际的速度和理论速度往往有差别,其速度可能跟不上,因此在预研过程总我们要考虑到这个问题,后续研究过程中将需要进一步对其进行实际测试,但是综合考虑,由于使用kinect摄像头还涉及到微软的相关库的使用,这里就可能需要用开发板来跑win10,但是对win10 不是很熟悉,所以最终我们在研发过程总还是选择普通的摄像头,采用单目摄像头进行测试,具体的测试和调试过程,将在后续的博客中更新。同时考虑到处速度和效率问题,通过前面几个博客中介绍和实践的使用Opencv来实现的粒子滤波算法的实际运行处理效果来看,这个使用Dragonboard 410c开发板基本可以实现。

       在图形处理开发库方面,综合考虑到在Dragonboard 410c上可以使用高通专用的fastcv,同时使用linux和android系统的时候,还可以使用opencv开源的视觉处理库,其中这两个库的具体信息在以下链接上具有详细介绍。

       https://developer.qualcomm.com/software/fast-cv-sdk/tools

       http://opencv.org/

      通过对比分析,这两个库fastcv 在性能上远远高于opencv,但是fastcv提供的各种处理函数和算法没有opencv全面,为了实现交高性能的处理和确保整个处理能够满足Dragoboard 410c处理要求,后续测试过程中将以fastcv优先,先用fastcv采用HMM算法来测试,看实现是否稳定和可靠性,下期博客中,将同步更新,使用单目摄像头来进行人体姿态估计跟踪算法的测试。

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。