基于阅读姿态视觉识别与自适应调整的智能阅读架①
2020-06-20张永亮安超群潘必超陈榕福
张永亮,安超群,潘必超,陈榕福,李 凌
1(广东机电职业技术学院 电子与通信学院,广州 510515)
2(苏州先进技术研究院,苏州 215123)
根据最新调查显示,目前小学生、初中生、高中生的近视率分别达到了39.05%、64.3%和72.8%,我国青少年近视率居世界之首[1].而读写姿势不正确、视距过近是造成青少年近视的主要原因;同时中小学阶段是孩子成长发育的关键时期,坐姿和读写姿势不正确,会影响到孩子骨骼的健康成长,容易造成驼背等不良后果.国内外有很多企业在研究并已投入生产视力保护仪,大部分基于红外传感器、超声波测距的原理实现[2-4],产品功能比较单一,不能从多个角度保护青少年的视力.
除了保护视力以外,纠正坐姿也是预防近视的有效办法.目前,市场上用于矫正学生坐姿的产品主要有坐姿矫正器、背背佳等.首先,这类产品需要用户将仪器设备穿戴在身上,从使用者的舒适性、方便性等方面来讲具有很差的用户体验.其次,市场上的该类产品在功能上具有局限性和单一性等缺点,其功能已经无法满足当前“互联网+”的经济社会发展形式,以及人们对智能化产品的需要和追求.
因此,本文提出了一种基于阅读姿态视觉识别与自适应调整的智能阅读架,该阅读架能够利用采集的图像信息实现对读者阅读姿态的实时监控与识别,并根据识别到的阅读姿态智能调控阅读架的高低、倾斜、角度等参量,自适应用户的坐姿.此外,智能阅读架能够将用户使用时间、阅读姿态等信息上传云端服务器,组建用户档案库,供用户访问.调研发现,该智能阅读架不仅能够帮助阅读者端正坐姿,挺直腰背,养成良好的读写习惯,提高学习效率,还能有效防止驼背、脊椎弯曲,保护青少年的身心健康.
1 系统硬件及功能设计
智能阅读架主要由阅读架终端、云端服务器和应用端用户平台3 部分构成,整机架构如图1所示.其中,阅读架终端采用ARM Cortex-A53 树莓派微型电脑平台架构,搭载四核高性能处理器,运行主频可达 1.2 GHz,运行Raspbian系统,扩展摄像头、步进电机驱动模块,实现摄像头模块实时采集并处理读者的阅读姿态,并通过3 组步进电机实现读书架前后、左右、上下调节,以适应读者前倾、后仰、左偏、右偏、抬头、低头等坐姿.扩展LED 照明模块、光线传感器,以调节LED 照明亮度到合适阅读亮度.此外,扩展4G、WiFi 模块,将阅读状态数据实时送到云端,建立读者阅读档案,供用户访问.
图1 智能阅读架整机架构图
智能阅读架的工作流程主要包括训练、工作、休眠、上传4 个阶段.
(1)训练:阅读架首次开机时,根据系统提示,读者在阅读架单目摄像头前保持标准及前倾、后仰、左偏、右偏、抬头、低头这7 种主要坐姿,机器将各种姿态的特征参数存储到阅读架系统模板库,完成训练.
(2)工作:在智能阅读架工作时,摄像头实时监控读者的坐姿,当读者身体前倾、后移姿态变化时,摄像头捕捉并识别到读者姿态,并通知系统控制前后步进电机1 动作,智能阅读架向前或后移动,保持读者与阅读架之间的健康距离;同样,当读者抬头或低头阅读时,摄像头也会通过识别读者姿态,通知系统控制转动步进电机2 动作,智能阅读架向上或向下转动,保持读者与阅读架之间的健康角度.当读者出现左偏、右偏等不正确的坐姿时,系统将控制步进电机3 动作,智能阅读架向左或向右,保持读者与阅读架之间的健康角度.
(3)休眠:如果系统检测到长时间无人使用实时,自动进入休眠状态.
(4)上传:智能阅读架实时将读者的阅读时间、阅读姿态等信息上传到云端数据库,建立读者阅读档案,用户可以通过手机进行访问和控制,方便家长或老师对学生阅读姿势的监控、提醒和纠正.
1.1 阅读架终端设计
1.1.1 树莓派主控系统
智能阅读架终端基于树梅派/Raspberry Pi 3B 平台设计,运行Raspbian 操作系统.树莓派3 相比树莓派2 在CPU 上做了全方位的升级,从32 位A7 升级到64 位A53 BCM2837 芯片,主频从900 MHz 升级到1.2 GHz;GPU 主频从250 MHz 提升到400 MHz;功能上增加了WiFi/BLE,方便对智能产品的开发;供电电路升级到2.5A@5V,增加了扩展更多模块的可能性.支持浮点计算,BCM2837 核心电路核心电路如图2所示.
图2 BCM2837 核心电路
1.1.2 摄像头电路
Raspberry Pi 3B 扩展索尼IMX219 800 万像素摄像头,静态图片分辨率为3280×2464,支持1080p 30,720p 60 以及640×480p 90 视频录像,并具有夜视功能,可以实时检测并识别阅读者前倾、后仰、左偏、右偏、抬头、低头以及标准的阅读坐姿.摄像头模组通过CSI 接口与树梅派连接如图3所示.
1.1.3 扩展GPIO 接口
Raspberry Pi 3B 扩展了40 个引脚接口,其端口明细如图4所示.通过安装Wiring Pi 库函数,可实现对GPIO 管脚的控制,此外,Wiring Pi 中包含了I2C、SPI、UART 库,可以配置并使用树莓派上的特殊功能接口.
由图4可见,树莓派扩展的40 个引脚中,有13 个普通输入和输出管脚,一个I2C、两个SPI 和一个UART 接口.如果不使用I2C,SPI 和UART 等复用接口,那么树莓派总共具有26 个普通IO.
1.1.4 电机控制及角度检测电路
Raspberry Pi 3B 通过9 个IO 口连接步进电机控制器,控制3 组步进电机转动,分别实现对阅读架前后、左右、上下等姿态的精确控制.其中,步进电机采用山社SS1102A10A 型号,尺寸为28 mm 的二相电机,静力矩150 mNm,定位精度高,动态特性好;驱动器采用山社MD-2522 型号,内置有PID 电流控制算法,具有过压、欠压,相电流过流保护功能.每个驱动器的STEP+,DIR+,EN+与树梅派的3 个IO 连接,如图5所示.其中,GPIO5、6、12 连接步进电机驱动器1;GPIO13、16、19 连接步进电机驱动器2;GPIO20、21、26 连接步进电机驱动器3.
图3 扩展摄像头模块接口电路
图4 扩展GPIO 口的连接关系
采用ADXL345 三轴加速度传感器,实现加速度的测量,并通过计算得到X、Y、Z 3 个方向的倾角值,与步进电机控制实现闭环系统.ADXL345 三轴加速度传感器具有在16 GB 下高分辨率(13 Bit)测量能力,允许测量小于1 度的倾角.ADXL345 模块上电后,加速度使惯性质量偏转、差分电容失衡,使传感器输出与加速度成正比的电压值.模块对得到的电压值进行模数转换后进行数字滤波,再存入FIFO 存储器,最后根据中断指令将数字信号通过4 线SPI 接口输出,如图6所示.这里,ADXL345 通过SPI 总线连接到树梅派SPI 接口.
1.1.5 LED 智能照明电路
为了实时采集阅读架工作环境的光线强度,并实现自动照明功能.采用BH1750FVI 进行环境光强度测量,该芯片是日本RHOM 推出的一款内置16 Bit AD 转换器的不区分环境光源的光电转换芯片,具有接近于视觉灵敏度的分光特性,分辨率可达1 LX,采用标准IIC 通信接口,连接至树莓派SDA1(GPIO2)、SCL1(GPIO3),如图7所示.
LED 照明调节电路采用LED 大功率照明恒流驱动芯片AMC7150,AMC7150 具有4~40 V 的宽工作电压,驱动电流最高可达1.5 A,可以驱动24 W 的高功率LED.AMC7150 内建PWM(脉冲宽度调变)与功率晶体管,只需5 颗外部零件,工作频率由外部电容控制可达200 KHz.LED 照明调节电路电路图8所示,AMC750 芯片5 脚,即LED_Ctrl 信号连接至树莓派GPIO25,如图8所示.当输出为高电平(2-3.3 V)时,芯片内部驱动器被关断;当输出为低电平时,芯片内部驱动器导通.因此,通过调节GPIO25 控制信号的占空比,则可以调节LED 的亮度,满足阅读架智能照明的需求.
图5 树梅派与步进电机驱动器接口电路
图6 ADXL345 与树莓派接口电路
图7 BH1750FVI 与树莓派接口
1.2 云服务器功能设计
云服务器软件能接收读者的阅读状态数据,并建立读者阅读档案,供用户访问.为了方便移动端用户的高并发访问,有效利用Web 服务器的,防止服务器线程阻塞,云服务器采用Memcached 高效内存缓存技术+RabbitMQ 作为消息队列服务,提供更快的访问速度和更高的并发访问能力.以Web API 的形式同时面向设备上传与数据下载,提供基于Restful API 的接口,如图9所示.
1.3 用户端手机功能设计
用户移动端APP 功能包括注册,登陆、信息浏览、数据监测、数据查询、互动讨论等.在用户使用过程中,手机APP 通过监听云服务器的信息,实时显示用户信息、设备信息、阅读时间、阅读姿态等阅读信息,以方便用户体验,监测和分析用户的阅读习惯.智能阅读架使用一段时间后,系统将自动的给出整体的评价参数、注意事项,建立用户阅读习惯档案,供用户查阅.
图8 LED 照明调节电路与树莓派接口
图9 云服务器框图
2 系统软件设计
2.1 基于Wiring Pi 库函数的控制系统软件设计
控制系统软件主要包括3 组步进电机驱动、阅读架XYZ 方向三轴角度检测、阅读架光强度信息采集、LED 控制照明等4 部分.通过安装WiringPi 控制库函数,基于C 语言编程,调用树莓派板载的 GPIO、UART、IIC、SPI 等资源的驱动,由gcc 编译器生成文件,并用sudo 调用执行文件,实现阅读架控制系统的软件设计,具体流程如图10所示.
树莓派默认是将SPI 和I2C 功能关闭的,因此需要先开启SPI 和IIC 接口功能.然后,通过轮询方式每隔一个固定时间,查询读者的阅读坐姿,阅读架三轴的角度,并根据检测到的数据,控制3 组步进电机运动,适应读者坐姿的要求.同时,查询环境光强度,通过GPIO25 控制LED 照明装置,实现阅读架亮度的智能调节.
2.2 基于OpenCV 视觉库的阅读姿态训练和分类识别
OpenCV 是一个基于发行的跨平台计算机视觉库,可以运行在Linux、Windows 和Mac OS 操作系统上,由一系列 C 函数和少量 C++ 类构成.这里,采用OpenCV 及其Python 接口实时读取摄像头数据,并完成阅读姿态训练和分类算法移植和软件系统搭建.首先在树莓派中安装OpenCV 库,为了能够利用VideoCapture、cvtColor、imshow 等命令调用CSI 接口的摄像头,需要打开/etc/下面的modules-load.d/ rpicamera.conf,在最后添加一行bcm2835-v4l2,即在系统启动之后加载bcm2835-v4l2 这个模块.
图10 控制系统软件流程
为了保证智能阅读架可靠、稳定的工作,读者阅读姿态的实时监控与识别是系统的关键技术,其系统框图如图11所示.
阅读架的单目摄像头实时收集阅读者的标准、前倾、后仰、左偏、右偏、抬头、低头等姿态数据,并对收集到的实时图片数据进行灰度二值化处理,提取特征参数,构建读者基本姿态模板库,最后将读者的姿态和模板库姿态实时对比,进行读者姿态动作的识别.
2.2.1 姿态图像加权灰度处理
摄像头获取的读者姿态实时RGB 图像,具有丰富的形变,运动以及纹理特征,因此,为了降低识别的复杂度,减小计算工作量,保证识别的正确率,需要进行灰度化处理.这里采用加权平均进行灰度化处理,如式(1)所示.
大量的实验表明,取Wr=0.30,Wg=0.59,Wb=0.11 时,能得到最合适的灰度图像.
图11 阅读姿态识别流程图
2.2.2 姿态图像二值化
读者姿态的边缘分割是系统稳定工作的关键技术之一[5,6],这里采用分块自适应阈值设定法,即对图像按区域分成16×16 小块,然后取每一小块灰度平均值的1/8 作为阈值进行二值化,实验表明,采用分块自适应阈值设定法,读者姿态图像边缘提取效果好,能满足识别的要求.
2.2.3 特征提取和姿态识别
姿态图像经二值化后,阅读姿态轮廓已经基本呈现出来.观察分析发现,左偏、右偏阅读姿态图中,主要边缘成分具有明显的偏离中心线的特征,因此,为了保证识别的效果,采用两级识别法,第一级先识别左右偏阅读姿态;第二级再识别其他阅读姿态.
第一级识别过程如下:
(1)以二值图片中心点为界,将图片分为左右两侧;
(2)分别统计二值图像左、右两侧的黑色像素点的总数量;
(3)若左侧像素点明显大于右侧像素点,则读者阅读姿态为左偏;反之,读者阅读姿态为右偏.
大量的实验表明,步骤3 中,左右两侧黑色像素点差异超过20%,能保证识别的精度.
第二级识别采用模板匹配技术[7,8],即将待识别阅读者的二值姿态图与预先存储的各种姿态模板进行匹配,通过测量两者之间的欧式距离,如式(2)所示,最小距离值所对应的模板姿态即为当前阅读姿态.
2.3 云服务器和数据库设计
服务器软件主要负责读者阅读姿态数据接收、存储,阅读姿态分析等功能.包含3 个功能模块:Web API接口、数据存储和阅读姿态统计分析平台.Web API使用 Java 语言、Tomcat 容器、MyBatis-Spring 技术框架来构建.用户的智能手机 APP 和阅读习惯分析平台均通过 Web API 来访问数据.此外,与 Web API 的通讯采用 HTTPS 加密通道,以确保数据的安全性.阅读数据在服务器后台采用MySQL+MongoDB 数据库实现存储功能.阅读架终端数据上传后,MySQL 数据库主要保存读者的个人基本信息、阅读时间,阅读次数、7 种阅读姿态时间统计,MongoDB 用于在线坐姿特征分析的存储等,阅读数据E-R 图如图12所示.
2.4 手机APP 设计
用户Android 手机或平板可以通过Wifi 或移动网络接入因特网来访问阅读架云端服务器.Android 版采用Java 语言、Android Studio 工具开发.手机或平板APP 由注册/登录、用户信息、阅读信息、阅读姿态统计、阅读分析报告5 个模块构成.APP 的数据接口采用JSON 技术与数据接口交换数据.访问前,读者首先通过智能手机 APP 注册用户账号,注册成功并登录后,可以修改用户信息、浏览阅读时间、阅读姿态等信息,查看阅读姿态统计图等阅读习惯档案.
3 测试结果及分析
用户阅读姿态的正确识别是确保整个系统可靠工作的关键.因此,在实验室环境下,选取了50 个读者,每个读者的7 种阅读姿态各拍摄了10 次,建立了读者姿态库,其中,姿态库中的图片大小均为320×180 像素,RGB 格式.图13所示为某一读者的阅读姿态图.
图12 阅读数据E-R 图
图13 阅读姿态图
将图13中RGB 图,按照式(1)进行加权灰度处理以及分块二值化处理,结果如图14所示.
对比图13、图14可见,图像二值化后,背景图像得到了有效的过滤,读者的7 种阅读姿态凸显出来.由于读者坐在阅读架的正中间,左偏和右偏具有明显的偏离中心线的特征,另外5 种阅读姿态边缘轮廓清晰,肉眼可以直观的进行辨别.
随机选取25 人进行标准、前倾、后仰、抬头、低头、左偏、右偏7 种阅读姿态训练;剩余的25 人,采用两级识别技术进行读者阅读姿态识别,其中摄像头每隔2 s 捕捉一次读者的坐姿,其识别正确率如表1所示.
分析表1数据发现,标准、前倾、后仰、抬头、低头5 种阅读姿态识别率在90%以上,但是左偏和右偏识别率稍低于90%,究其原因发现,由于摄像头每隔2 s 采集一次读者的坐姿,在采集该坐姿瞬间,可能处于姿态过渡阶段,因此造成了识别的误判.此外,采集读者阅读姿态的时候,个别读者没有坐到阅读架的正中间,也造成了左偏和右偏的识别稍微偏低.但是,7 种阅读姿态的识别率整体在88%以上,仍然能够满足智能阅读架日常使用的要求.
4 结束语
本文提出的智能阅读架通过集成视频模组,利用图像识别算法实现对人体姿态的监控,在用户不需要可穿戴设备的情况下就可以对使用者的姿态进行识别.通过识别到的用户姿态,智能阅读架可以进行智能调节,主动满足使用者的姿态需求.同时,阅读架与云端数据库相连,能够将用户的使用时间、阅读姿态等信息实时上传组建用户信息档案库,用户可以随时通过手机APP 访问档案库,了解相关信息或进行远程控制.
该设计产品可以广泛推广到幼儿园及中小学、高校、图书馆阅览室、普通家庭,帮助阅读者端正坐姿,挺直腰背,养成良好的阅读习惯,提高学习效率,有效防止驼背、脊椎弯曲,保护青少年的身心健康,社会和经济效益显著.
图14 灰度二值化后图
表1 各阅读姿态下系统的识别正确率