| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 基于穿戴设备的凌空手势轨迹重构(斜直线) -> 正文阅读 |
|
[人工智能]基于穿戴设备的凌空手势轨迹重构(斜直线) |
基于穿戴设备的斜直线凌空手势尺度识别最近在做一个 手势识别项目,手势为斜直线,目的是通过算法来计算斜直线手势的尺度。一开始用的是惯性导航算法来做计算,但是发现基于 可穿戴设备这类低精度的惯性传感器有着诸多的缺点,因此并不适合于用惯性导航算法来做计算。因此进而采用机器学习算法来对不同尺度的凌空手势尺度进行识别,发现识别效果良好,因此将过程分享给大家交流。 一、硬件系统搭建本项目是基于惯性传感器来收集手势数据。一般的,惯性传感器有分为消费电子级、车载级和航天级。当然的,他们价格就有着非常大的差距,消费电子级一般用于手机、可穿戴设备等上面,一般价格不超过100块。例如常用的MPU6050和MPU9250传感器,分别只有8块和20块左右,详细请见拼多多。但是这样的传感器一般用于计算物体的姿态角,很难用于计算物体在三维空间中的位移,因此还有的研究是用CH100高精度传感器,这类传感器是可以用于物体移动轨迹的追踪,且相对于MPU6050和MPU9250来说更加的稳定和可靠。言归正传,此处手势识别采用的是消费电子级MPU6050传感器,下面将介绍该传感器的硬件情况。 1、加速计一般的,加速计是用于测量物体自身受到的比力,市面上有单轴、两轴加速计或者三轴加速计,此处项目用的是三轴加速度计。在可穿戴设备中,三轴加速计的方向有着固定的指向。其中x轴的正方向指向手掌,y轴的正方向垂直于手掌,z轴垂直于上述两轴并指向天。随着手部的运动,加速计三轴的数据会随着手的姿态变动而变动。 2、陀螺仪陀螺仪一般指的是三轴,也有x、y和z轴,其中x轴的正方向指向手掌,y轴的正方向垂直于手掌,z轴垂直于上述两轴并指向天,跟加速计的坐标基本一致。陀螺仪主要可以测到手势的三个加速度信息,通过角速度进行积分也可以获得手势的三个欧拉角,但是这三个欧拉角并不准确,因此获取欧拉角的方法通常也不是这计算。 3、磁力计磁力计也有x、y和z轴,其中x轴的正方向指向手掌,y轴的正方向垂直于手掌,z轴垂直于上述两轴并指向天,跟加速计的坐标基本一致。磁力计一般用于测量物体所受磁场的磁强度,一般用磁力计的信息在惯性导航算法里面做坐标变换,用于去求取物体的偏航角信息。因此此处的手势识别暂时不需要用到。 4、手机的九轴数据获取当然了,我们可以直接利用手机获取加速计和陀螺仪信息,如果我们没有MPU6050传感器的话。利用手机获取传感器信息,一般需要搭建一个APP,但是对于非计算机专业的学生来说很费力,这里推荐一个快速制作手机APP的方法给大家使用。 APP inventor官网 5、采集频率一般的,采集频率设置为50Hz。在可穿戴设备中,采集频率过高都会造成过高的功耗,因此采集频率一般在25-50即可。 二、软件系统搭建数据收集系统大概如下图所示,将加速计和陀螺仪信息通过串口发送到上位机PC端或者ardunio端都可以。 1、数据预处理方法数据预处理指的是采用某种方法把原始数据里面一些杂质过滤,尽可能留下原始运动信息。因此过滤手势的运动噪声对于手势识别精准度来说显得十分重要。 (1)滑动窗口法在过滤数据前,一般先用滑动窗口法对手势活动端进行截取,该方法一般用于实时手势识别中。滑动窗口有两个参数,一个是窗口的大小,另一个是窗口每次移动的步长。根据手势活动的观察,可以知道手势活动的最大数据量,此处采用256个数据点作为窗口的大小,窗口每次移动的步长为128。 此时截取到窗口后,要对窗口里面的数据进行分析,判断是不是有效的活动段,一般有能量、均值、方差和波峰波谷等方法。通过上述方法便可获取到有效的活动段数据。 (2)小波降噪小波理论具有较好的时频信息处理,采用小波降噪可以有效的过滤手势在运动过程中的噪声,比如人体在运动过程在中一般会存在分形噪声。此处利用小波基db6进行4层分解,最终获得较为平滑干净的手势运动信息。蓝色线为原始数据,红色线为滤波后的数据。但是小波降噪往往需要很多的时间处理,实时性不是那么强,因此可以采用下面的组合:均值+低通滤波器。 (3)均值滤波和低通滤波均值滤波指的是利用一个定长的数据块在原始数据上进行滑动,将窗口里面的数据求和在平均,最后将平均值代替当前数据块中中值的数据值。低通滤波器是通过设定一个频率阈值,将高于这个频率阈值的频率分量置为0,从而达到滤波的作用。 采用均值+低通滤波来过滤手势运动中的噪声,其性能跟小波降噪相当,但是时间消耗却少了很多。因此该方式也是值得应用。 2、特征提取采用机器学习对手势进行识别,其特征选择显得十分重要。一般特征选的好,那么会有着较高的识别精度。本项目的手势几乎一致,只是在幅度上有着区别,因此选择特征需要在幅度和能量上做区分。 (1)时域在时域下,本项目主要选取了最大值、最小值、均值、方差、能量和、上四分位点和下四分位点。 (2)频域在频域中,主要选取峰值频率、标准差频率、方差频率、频率和等。 3、数据集设置在这个项目中,主要是收集了斜直线手势,每条斜直线代表一种尺度的矩形框大小。如下图所示,等边矩形框的边长间距从10cm至60cm,因此共计6条斜直线手势。我收集了五名志愿者的手势 4、手势识别算法(1)集成学习三、算法识别结果1、 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 9:44:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |