计算机的飞速普及,让人们将越来越多的工作放在计算机上去完成,各行各业,尤其是程序开发人员、文字工作者,在计算机上的工作时间越来越长,这种情况下不良的坐姿对颈肩腰椎都会产生很大影响,容易导致多种疾病的发生。青少年接触计算机的年龄越来越小,保持良好的坐姿对于青少年的成长发育以及保护视力都大有裨益。调查显示肩部腰部疾病的发病率越来越高,发病年龄越来越小,跟长期坐着工作有关,我们还发现有一些奇特的办公是站立办公甚至在跑步机上办公。这些问题都说明,坐姿正确与否对健康有很大影响。在工作强度越来越大、休息锻炼时间越来越少的今天,如何保持正确坐姿就变得非常有必要了。
本文首先介绍英特尔RealSense实感设备[1]的组成结构以及该设备是如何获得现实场景下的三维数据。针对本课题,利用英特尔RealSense官方SDK提取出用户面部大约70个特征点的三维数据。这些特征点的三维数据是本文坐姿检测算法的基础。在得到用户面部70多个点的三维数据之后,计算出用户此时头部的转动及俯仰角度、头部与计算机显示屏之间的距离,并使用支持向量机(SVM) [2]进行训练和识别实验,实现了对“歪头”“驼背”“仰视过大”“俯视过大”“距离屏幕过近”等不良坐姿的判定,并经过多次实验取得了较好的实验结果。通过与MySQL数据库[3] 结合,将坐姿特征、每日不同坐姿的时间长度记录下来,进行数据分析,生成报表给用户,从而达到完整的检测、提醒、矫正的目的。
1 实时坐姿检测算法
1.1 硬件及开发环境
RealSense是英特尔推出的深度摄像头,最新一代设备是全VGA分辨率(640 x 480 60fps)的深度摄像头,以及1080p分辨率的RGB摄像头,在拍摄1080p画面的时候传输速率为30fps。检测范围在0.2米至1.2米之间,根据不同的使用场景和使用的算法,检测的距离也不一样的。目前已经有多款笔记本电脑默认配备RealSense实感摄像头,本文采用的是开发版本的RealSense摄像头,用于开发人员进行开发,如图1。
开发款的基本尺寸是150mm x 30mm x 58mm,根据官方介绍,需要的环境配置如下,需要具备USB3.0接口,根据实际测试,台式机最好使用后置USB3.0接口,保证足够稳定的供电。官方声称需要使用Intel 第四代以及之后的酷睿系列CPU才能够完成开发,在本文开发过程中使用的是第三代的Core i5 CPU同样能够正常使用。
需要注意的是,目前Intel RealSense SDK仅支持Windows 8.1以及之后的Windows 64位操作系统,暂不支持Mac OS 以及Linux。
1.2 坐姿检测算法
1.2.1 坐姿检测系统设计
整套坐姿检测系统的设计流程如图2。
坐姿检测系统包括五个主要部分,分别是用户信息的录入,设备初始化以及图像预处理,实时坐姿检测、坐姿信息进行统计、内容结果展示与提醒。其中实时坐姿检测模块是本文的重点研究,设计流程如图3。
在实时坐姿检测当中,如果开启目光跟踪技术,则利用目光跟踪技术进行校正,进行辅助判断,以增强系统的稳定性和准确性。
1.2.2 算法判定
用户的头部运动以及头部状态是主要的特征提取空间,通过RealSense,在三维坐标中,对头部的仰角(PITCH,绕X轴旋转)、偏航角(YAW,绕Y轴旋转)、翻滚角(ROLL,绕Z轴旋转)、高度信息、空间位置信息进行坐标变换提取,将转换过的数据进行卡尔曼滤波[4],获得较为准确的数据进行坐姿比对,如果头部信息各项参数满足一定指标,则判定该用户的坐姿是端正的,如下图4。
当欧拉角[5]的翻滚角ROLL的绝对值大于10度时,可以认为用户头部左右歪头幅度过大,是错误的坐姿,需要进行提醒,更准确来说,当ROLL值为正的10度以上时,用户头部向右倾斜角度过大,当值小于负10度时,用户头部向左倾斜角度过大;当欧拉角的YAW的绝对值大于18度,可以认为用户头部的左右转头扭头的幅度过大,这样的错误坐姿经常出现在程序员群体中,因为很多程序员都是使用两台显示器或更多台显示器,由于桌子不足够大,用户与显示器之间距离过近,在观看显示器的时候需要大幅度的扭头,对颈部肩部造成了额外的负担,也属于不良坐姿,更确切的描述,当YAW值大于正18度时,用户头部向右旋转幅度过大,当YAW值小于负18度时,用户头部向左旋转的幅度过大;当欧拉角的PITCH值加5之后的绝对值大于25度,则可以判定用户的头部俯仰程度过大,属于不正确坐姿,通常情况下,用户在使用电脑的时候显示器都会略低于用户的头部高度,而且最适宜的坐姿也不是头部一定要平视显示器,而是稍微低一点点头,这样有助于减轻肩部脊椎等的压力,较适合长时间的工作,更准确地说,当欧拉角的PITCH值大于20度,用户是在仰起头在看显示器画面,这种情况的典型错误坐姿就是手托下巴抬头看显示器,如图5,在阅读长段文字或者浏览视频内容的时候经常会出现这样的坐姿,而当欧拉角的PITCH值小于负30度时,用户低头幅度过大,可以判定用户坐姿不正确,这种情况下对脊柱的损伤较为严重,出现这种不良坐姿的多为佩戴眼睛的用户;
另外一种典型的错误坐姿就是距离显示器过近,通过RealSense的深度信息,可以快速地获得到用户的头部、肩部相对于摄像头的距离,并且可以精确地获得到用户眼睛到摄像头的距离信息,因此可以快速地判断用户是否距离显示器过近,本文实验的显示器尺寸是17寸,用户与显示器的最佳距离在70厘米至80厘米,小于70厘米时距离显示器过近,通常这样的情况都是因为驼背造成的,而且反过来距离显示器过近,不但会对视力造成严重损伤,也会加重驼背的情况。正确坐姿如图-6。
1.2.3 实验结果分析
实验组数为4组,每组一名同学,共四人,实验结果数据如表1-表4。
通过对不同同学的测试数据进行分析,可以发现,算法的准确率在90%以上,相比于传统的智能硬件识别方法40%的准确率有了大幅度的提升,但是在实验中也发现,第二组的检测准确率较低,通过对测试同学的身高、视力等信息的咨询,还发现另外一个重要因素,用户平时使用的桌子大小、座椅高低对用户的坐姿会造成很大影响,一套合适的座椅书桌对健康也是非常有必要的。
2 总结
本文设计了一种利用Intel RealSense摄像头完成的实时坐姿检测算法,适用人群主要针对需要长时间坐在电脑前进行工作的白领或者程序员群体,综合分析用户头部、眼部的数据,准确的判断出用户当前坐姿是否端正,相比于传统的智能硬件[6]解决方案,省去了单独佩戴智能硬件设备的繁琐,并且极大地提高了检测准确度,达到了90%以上的准确率,同时极低的误警率也保证了在实际应用场景中不会干扰到用户的正常工作。在算法和整体系统软件的设计上仍有一定的优化改进空间,在对图像信息进行处理之前可以采用更好的图像降噪算法,用户面部特征数据在处理的时候可以进行滤波处理,以减少采集数据误差及跳变对检测造成的影响。