APP下载

基于计算机视觉的人体坐姿检测设计

2023-08-23任博金红

电子制作 2023年14期
关键词:坐姿人脸摄像头

任博,金红

(1.桂林理工大学信息科学与工程学院,广西桂林,541004;2.深圳星宸科技股份有限公司深圳分公司,广东深圳,518000)

0 引言

在高速发展的今天,大量的机械化和可视化脑力劳动代替了简单的体力活动。这也导致了办公室办公成为当下的主流。但是,随之发生的是久坐和长期的不良坐姿产生的脊椎病的产生,这无疑给人们敲响了警钟。此外,如果无法避免去久坐不如去及时地检测坐姿和给予自己一些提示来预防疾病,大多情况是,人们已经意识到了自己的坐姿不正确,或者久坐了。但是没有外部压力的驱使,大多数人就选择妥协和放任不管。所以目的不只是单单的提示也是让越来越多的人意识到不良坐姿和久坐的危害性。因此本设计就是为了减少不良姿势的久坐对人体的伤害和久坐提醒。

1 系统结构及硬件设计

本系统主要基于V831SOC处理器主板和SP2305摄像头,以OpenCV为平台设计视觉处理的任务,通过摄像头进行人的脸部的位置、鼻子位置、嘴巴位置,前额角度等进行坐姿判断和矫正人体坐姿,如果坐姿不正会发出警报和语音提示,系统结构图如图1所示。

图1 系统结构设图

系统硬件主要以主处理器V831SOC、SP2305摄像模块、SPI显示屏、蜂鸣器电路,语音模块电路,旋钮电位器电路,电源电路等构成。V831通过ADC接受旋钮电位器的数据来设定参数,通过SP2305拍摄像头检测,V831SOC处理器数据处理判断识别坐姿、控制语音播放和蜂鸣器提醒,总体电路连接框图如图2所示。

图2 总体电路连接框图

2 程序与算法设计

■2.1 程序设计

在V831 SOC处理器主板上安装Linux系统,设备树中加入SP2305摄像头、SPI显屏幕、蜂鸣器、定时器的驱动,主程序流程图如图3所示,先找人脸的位置再定位眼睛、鼻子和嘴巴的位置,通过它们的相对像素偏移求得人体是否为弯腰,通过整个人脸的像素区等比例的放大或者缩小判断是否为身体前倾进而判断出当前的坐姿角度,使用旋转电位器输入标准的坐姿角度范围和久坐时间,通过按键转换模式,实时检测过程中如果检测到的坐姿角度超出设定范围或者定时器达到的设定的久坐时间,通过蜂鸣器和语音进行提示。

图3 主程序流程图

■2.2 算法设计

在坐姿检测如图4所示,主要是对人脸特征点的运算和整个人脸面积的像素点变化作为主要依据,通过观察测量数据的变化和实际测试的效果确定各个部位的权重比。

图4 坐姿检测算图

首先需要先定义需要计算的数据量如表1所示。

表1 数据量定义表

坐姿起源于对人脸的检测,在整个系统的开始阶段会先进行一个标准坐姿的标定过程,以完成对后续算法的运行。

设采集到的基准数据如表2所示。

表2 基准表

在实际情况中,因为有测量误差和动态的识别错误所以在合理的判断范围中加入一定的误差阈值,整个阈值减少一些复杂情况下的误判失误,设误差阈值如表3所示。

表3 误差阈值表

需要根据测试数据确定数据融合的算法,在实际坐立过程中我们侧重是对弯腰和低头的测量,那么就需要选择对低头灵敏度最高的数据,所以在选择数据时候更多的符合运动变化一致的数据轴数据,但是目标不会一味的俯仰头,因此也需要降低其他动作对于测量的判断,减少误判,俯仰过程变化如图5所示。

图5 俯仰过程变化

图6 融合后动态图

综合上面的基本动作的数据变化图,就可以分析出不论是什么动作,嘴巴和鼻子数据的变化率均大于眼睛的数据变化,且在俯仰头过程中数据的变化率明显大于其他动作,所以可以达到设计预想的目标。但是仍需简化数据和提高灵敏度:

设融合变化值为P:(因为摄像头画面为固定大小所以不需要进行归一化处理),处理方式如式1所示。

可以看到数据融合后不仅方便代码的判断也提高了对上下俯仰头的灵敏度。但是目前还未加入误差阈值在其中所以最终的判断值P,如式2所示。

为了更加优化算法的正确率,需要引入人脸面积的数据来防止人脸贴近摄像头和直立上下时发生的误判。

图7验证了在弯腰时候数据的变化会更明显些,因此把融合数据和人脸面积变化一起作为判断条件,如图8所示。

图7 人脸面积变化

图8 坐姿判断方式

3 坐姿模型分析

在确定了坐姿算法的条件下,对于坐姿的物理模型就更加容易判断和分析。根据人体骨骼的运动方式,可以将坐姿中弯角分为以下两个部分,以颈椎处设为节点。一种情况是颈椎以上的头部发生弯曲所产生的不良坐姿,图9为躯干分解示意图。

图9 躯干分解图

设当前的躯干弯曲角度为90°-α,头部弯曲角度为90°-β。因为在弯腰的时候,躯干并不会发生太大的变化,经过实际情况的测量,躯干弯曲角度大都不超过10°。头部的弯曲角度由上述的坐姿检测算法求得。躯干的弯曲角度则有图像中的肩部像素点确定,图10是人体坐姿判断点图。

图10 人体坐姿判断点图

肩部的像素点位置需要靠人体肤色与背景色的差异产生二值化的阈值图,再根据头部数据和人体骨骼分布比例计算出躯干的位置,具体方法是通过头部宽度计算出肩膀的宽度,再通过扫描二值化图像,发现出连续像素点大概等于宽度的区域就是肩部位置。现设上半身高度为H,身体前倾角度为θ,则人体肩部X轴方向前倾距离为X。

人体肩部Y轴向下距离为Z。

再根据公示1中的距离推算公式,求得摄像头画面像素点的变化进而得出坐姿倾角。

4 测试结果

系统利用人物对象对整体功能的运行状况和坐姿识别的效率和精度进行测试。整体运行是对各个元器件的驱动情况测试,分别由摄像头、显示屏、蜂鸣器、旋钮开关和语音模块组成。观察同时运行时是否发生冲突和时序的运行稳定。

■4.1 运行时间测试

启动的整个流程为Linux启动-自动运行代码-摄像头初始化-ADC初始化-显示屏初始化-人脸识别模型加载。因为设计完成功能对系统启动时间也有一定的要求,表4是每一个流程启动所需要的时间表(根据Linux系统时间所得)。

表4 运行时间测试表

机器开机进入功能运行的时间大概为五秒,符合实际需求。

■4.2 对比测试

目前国内外的坐姿检测的技术在摄像头方面大概分为依靠头部和骨骼分析两大类型,本设计是依据于头部判断的算法升级。相较于骨骼运动判断来说,本设计在测量精度上无法达到,但是因为本设计所用的模型是人脸模型,算法和模型都较为成熟,模型的占用内存更小,启动时间也更快,可以适用于运算条件有限的系统。相较于头部算法判断的精度减少了很多情况的误判。

■4.3 坐姿识别测试

因为在摄像头的摆放位置不同,人体距离摄像头的距离不同,人体的身高不同,摄像头的对立角度不同,这些对于系统的都会产生影响所以也是本设计的一个缺陷。但是根据测试发现,当摄像头垂直于桌面摆放且以45°的倾角拍摄人脸效果最佳因为大部分驼背的角度为15°左右,根据人体平均身高当人脸距离桌面0.5m,摄像头距离桌面0.5m距离时即可满足要求如图11所示。

图11 位置摆放图

测试对象为本人,坐姿判断条件设定为15°(人体倾角为手机陀螺仪测量),久坐时间设定为1min,测试数据如表5所示。

表5 角度测试表

5 结论

因为主处理板已经可以完成主要的功能,但是为了集成性和实物的可测量性依然要对系统进行电路的焊接,在整个焊接过程中需要小心,尤其是在供电的部分如果发生短路或者是接反,会发生烧毁整个系统的结果。每个元器件的摆法也需要注意,旋钮开关需要符合人体工学。软件方面可以把写好的程序放在启动文件中自动执行可以提高整个系统的快速启动能力,关闭其板载的不要用功能,节省CPU资源。

此设计的目标是通过摄像头图像处理完成对不良坐姿的检测和提醒,通过以上的测试发现,通过融合判断值和角度的换算,可以做到3°左右的浮动误差,符合要求。但是也发现,该设计有一定的局限性,一是在位置的摆放问题,不能做到任意位置检测,如果人体前有很大的遮挡时就无法测量,二是在低头超过35°时人脸已经消失了一半,这种情况可能与摄像头的架设角度有关,也和坐姿角度算法本身的局限有关。如果可以做到人体骨骼的识别或者搭配陀螺仪设备在人体结合运算,那么精度将大幅提升也可以减少外界环境的误差。但是本设计依然可以完成大部分场景的测试,在室外强光的环境下依然可以正常运行,且整个算法的运行可以保证图像帧率在30FPS左右,如果产生了久坐也可以进行提示。整个系统的可扩展性比较高,可以继续添加其他功能。

猜你喜欢

坐姿人脸摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
有特点的人脸
坐姿好习惯
学生作业坐姿及台灯控制器
基于坐姿感应的智能视力保护台灯设计
三国漫——人脸解锁
基于太赫兹技术的新一代摄像头及其在安防领域的应用探讨
“长跪”与谢罪无关
奔驰360°摄像头系统介绍