基于FPGA的视频监控摔倒检测报警系统
2019-10-31王鹏王慧孔凡宁姚刚
王鹏 王慧 孔凡宁 姚刚
摘要:当空巢老人独自居住发生摔倒事件时,如果长时间没有得到救助的话,伤害比较严重。为了快速获得老人摔倒信息,使其得到及时救助,设计和实现了结合家居照明灯并基于现场可编程门阵列(FPGA)的视频监控摔倒检测报警系统。通过帧间差分法提取出运动目标,结合人体高宽比和有效面积比2个条件进行摔倒判定,最后用人体中心变化对判定结果进行修正。当摔倒发生时触发声光报警定位老人摔倒的房间,并结合通用分组无线业务(GPRS)通信网络通知老人亲属及社区服务站,及时展开救助。经试验表明,系统帧处理速度为24.86fps,平均报警响应时间为0.51s,满足实时性要求;摔倒检测准确率达到96%,误报率低。
关键词:视频监控;摔倒检测;现场可编程门阵列;帧间差分法;通用分组无线业务
DoI:10.15938/j.eme.2019.08.015
中图分类号:TN919.85文献标志码:A 文章编号:1007-449X(2019)08-0122-07
0引言
随着中国老龄化趋势的加剧,老年人的安全问题受到社会各界的广泛关注,摔倒对老年人的安全造成了极大的威胁。尤其是对于子女均在外工作的空巢老人,摔倒发生后常导致失去意识、休克或者死亡等严重后果。因此,及时发现并救助摔倒的老人可以大大降低伤残率和死亡率。
摔倒检测技术大致可以分为3类:基于可穿戴式传感器的摔倒检测技术;基于环境检测的摔倒检测技术;基于视频监控的摔倒检测技术。第一类需要老年人随身佩戴传感器,老人容易遗忘且易产生不适感;第二类需要在房间内安裝复杂的检测设备,实现困难;第三类是在房间内安装摄像头,通过视频监控实现摔倒检测,安装方便,容易实现,相比前两类更适宜于对老年人的摔倒进行检测,是目前主流的摔倒检测技术。
对于基于视频监控的摔倒检测技术,国内外众多学者都进行了大量的研究。文献[6]中白云飞等人提出了基于嵌入式视频监控的摔倒检测系统,通过将采集到的视频信号压缩传输至Pc端,进行视频显示和姿态检测,尽管获得了较高的摔倒检测准确率,却没有考虑到保护被监测人的隐私,并且系统存在稳定性差、易死机等不足。文献[7]中Rougier等人提出了标定人体最小外接矩形框并通过人体高宽比来判断人体是否摔倒的算法,但无法准确地把老人的日常健身动作(压腿、俯卧撑等)和真实的摔倒事件区分开,误报率高。
近年来,随着图像处理技术和大规模集成电路的发展,FPGA(field programmable gate array)的可编程性和强大的处理能力使其可以灵活、高效地应用于各种领域。本文提出了一种基于FPGA的视频监控摔倒检测报警系统,稳定性好,处理速度快,误报率低。
1系统组成
本文采用FPGA作为摔倒检测报警系统的核心处理器件,系统组成如图1所示,包含CMOS数字图像传感器、FPGA摔倒检测核心平台、GPRS(generalpacket radio service)通信模块及声光报警模块。
首先通过CMOS数字图像传感器对老人的日常生活视频进行采集,然后将获得的视频数据传送到FPGA摔倒检测核心平台进行图像处理和摔倒判定,检测到老人摔倒后立即通过GPRS通信模块和声光报警模块完成摔倒事件的通知及报警。GPRS通信模块将摔倒事件的信息及时向老人亲属与社区服务站发送,通知医疗人员对老人进行及时救助。声光报警模块用于定位老人发生摔倒的房间,使医护救援人员能迅速地对老人摔倒位置定位,避免老人因救助延误导致的休克、失去意识等严重后果。
2摔倒检测算法设计
实现摔倒检测的前提先要对运动目标进行提取和标记,再对提取到的运动目标进行摔倒特征判定。通过对现有的摔倒检测算法的分析与研究,本文提出了一种改进的自动摔倒检测算法。本文提出的摔倒检测算法主要包含2个步骤:目标检测和摔倒判定,具体流程如图2所示。
2.1目标检测
运动目标检测算法主要有背景减除法、帧问差分法和光流法3种。背景减除法是利用当前图像和背景模型图像进行差分来检测运动目标,背景模型的选取比较重要,容易受到外界光线的干扰。帧问差分法主要思想是将图像序列中的连续两帧或三帧进行差分来提取出运动目标,这种方法的原理简单,能快速地实现运动目标检测,且对环境变化不敏感,受外界噪声干扰较小。光流法是通过将每帧图像中的每个像素点附于一个速度矢量,形成一个光流场从而动态分析出运动目标,此种方法计算复杂、非常耗时并且抗噪声的能力差。
通过比较分析上述3种算法的实现难度和实时性,可以得到:相比较于光流法,帧问差分法更适合应用在实时性要求高的场合;相比较于背景减除法,帧问差分法计算简单,处理速度快,更利于硬件实现,适用于视频监控中的实时目标检测。因此本文选取帧问差分法实现运动目标的检测和提取。
2.2摔倒判定
当老人正常行走时,人体高度比宽度大得多,如果摔倒,则人体宽度比高度大得多;当老人进行压腿、弯腰等健身运动时,人体有效面积会比其他情况小。针对以上摔倒特征分析,本文在提取出人体目标后,标定出人体目标的最小外接矩形框,如图4所示,通过式(2)、式(3)进行人体高宽比和有效面积比的摔倒判定。
式(2)中日为外接矩形框的高(即人体的高度),W为外接矩形框的宽(即人体的宽度),T1为人体高宽比的判断阈值;式(3)中s1为人体目标的实际面积,S2为外接矩形框的面积,T2为有效面积比的判断阈值。根据式(2)和式(3)可以判定图4(a)、图4(b)为正常行为,图4(c)为摔倒。
由于老人在进行下蹲、俯卧撑等动作时,如图5所示,仅通过人体高宽比与有效面积比2个判决条件进行摔倒判定,容易导致误报警。为了提高系统的准确率,本文引入人体中心变化作为修正条件对摔倒进行判断。因为老人在下蹲、俯卧撑或正常的行走时,动作较缓慢,中心变化不明显,而摔倒是一种剧烈与突变的动作,人发生摔倒时,其人体中心会突然降低,中心变化会随之骤变。
因此在提取出运动目标后,使用最小外接矩形框对其标记,如图5所示,计算人体中心位置O(X,Y),),利用式(4)修正摔倒判定结果。
首先比较相邻的两帧图像人体中心坐标值OK(X,Y),)和OK-1(X,y)的纵坐标值,再计算两点的欧氏距离与阈值T3比较,若第K帧图像的人体中心点纵坐标值比第K-1帧图像低,且两幅图像的人体中心点之间的欧式距离大于阈值T3时,则判定为摔倒,反之判定为非摔倒。
通过式(4)可以修正图5中2种行为的判定结果为正常运动,因此系统结合式(2)、式(3)、式(4)3个条件进行摔倒判定,有效降低了误报率,算法实现简单,并且提高了整个摔倒报警系统的检测精度。
3系统的FPGA实现
FPGA具有强大的并行处理能力,采取流水线进行设计,能极大提高系统的处理速率,尤其对于数据量巨大的图像,更能发挥其快速处理数据的能力。另外FPGA不需要操作系统嵌入,使用数字逻辑即可实现比较复杂的算法,这也能解决系统稳定性方面的问题。如图6所示,本文以FPGA作为核心处理器搭建了视频处理平台,并使用Verilog HDL对FPGA内部逻辑功能进行配置。
FPGA内部各模块的功能描述如下:
1)T2C配置模块。
系统上电后,FPGA首先要通过T2C总线对CMOS图像传感器的内部寄存器进行配置,包括分辨率、内部时钟、亮度、色差等。
2)视频流采集模块。
FPGA将CMOS图像传感器配置完毕后开始进行视频流的采集,采集的流程如图7所示。
3)RGB格式转灰度图像。
帧问差分法的原理是将相邻两帧图像中像素点的灰度值相减,所以需要将采集到的彩色视频流图像进行颜色空间的转换,即从RGB转为YCbCr,在ITU-RBT.601标准中给出了RGB与YCbCr的转换关系,具体公式为:
4)中值滤波。
无论是直接采集到的灰度图像,还是由彩色图像间接转换的灰度图像,或多或少都会存在一定的噪声,而噪声是影响图像质量存的主要因素。对图像中值滤波可以很好地抑制孤立点噪声,同时能较好地保护图像的边界特性,图像也不会产生显著的模糊,比较适用于本文帧问差分法的处理。本文采用3×3像素阵列实现中值滤波,其中快速排序算法实现过程如图8所示。
3×3像素阵列快速排序的步骤如下:
a)首先将3×3像素阵每一行的3个像素排序;
b)接着对3行像素取得的排序结果进行处理,提取每行中3个最大像素值中的最小值,每行中3个最小像素值中的最大值,以及3个中值像素的中值;
c)最后将步骤b)得到的3个像素值再排序后取中值,即得出3×3像素阵中9个像素的中值。
5)4端口SDRAM控制模块。
基于数字视频监控的图像采集与处理系统中,需要对实时高速的数据缓冲处理。由于本文采用帧问差分法实现人体运动目标的提取,需要对相邻的两帧图像完成差分操作,为此设计了基于FPGA的4端口SDRAM控制模块(2个输入端口和2个输出端口),通过乒乓操作在单片SDRAM中实现相邻两帧图像数据操作,完成图像数据在不同Bank的缓存。读出两帧图像数据进行差分处理,具体实现流程如图9所示。
6)帧差处理与目标提取。
对相邻两帧图像完成读取和差分,并将差分得到图像中的像素值与预设的像素阈值相比较,大于预设阈值的像素点为运动目标并赋值为1,否则赋值0。运用图像腐蚀和膨胀等形态学处理去除小的噪声点,得到人体目标的二值图。
7)摔倒判定。
得到人体目标的二值图像后,再对每帧二值图像做行扫描,选出像素值为1的像素点,计算这些像素点中最小和最大的横坐标值Xmin和Xmax,同样地计算这些像素点中最小和最大的纵坐标值Ymin和Ymax,使用(Xmin,Ymin)、(Xmax,Ymin)、(Xmin,Ymax)和(Xmax,Ymax)这4个坐标点标定人体的最小外接矩形框,标定流程如图10所示。
8)报警控制模块。
当检测到摔倒事件的发生即满足上述3个摔倒判定条件后,FPGA立即产生报警信号,触发蜂鸣器与LED照明灯进行声光报警;同时发送AT指令到GPRS通信模块,向老人亲属及社区服务站的手机号码发送摔倒短信。
4实验结果及分析
本实验中CMOS图像传感器选用OmniVision公司的OV7725Sensor;FPGA采用Altera公司Cy-clone IV系列的EP4CEl5F17C8N芯片;GPRS模块选用SIM900a芯片。通过Verilog HDL实现FPGA内部逻辑功能,使用2012a版本的MATLAB软件平台对同样的摔倒检测算法进行仿真和验证,搭载MATLAB软件的计算机CPU型号为Intel i3-4170,主频为3.70GHz,内存大小为4G。
4.1系统准确率分析
由于本实验对于老人存在很高的危险,所以选择青壮年代替老人进行实验。图11为实验视頻流中的图像,分别是在不同的角度,以不同的姿态进行的摔倒实验,同时也模仿老人的日常健身动作,并进行摔倒误报率的对比测试。经大量实验得到:阈值T选10,T1选1.18,T2选0.46,T3选6.5系统性能最佳。
当仅用人体高宽比和有效面积比2个条件判定摔倒时,图11中的12帧图像均被判定为摔倒,其中图11(a)、11(b)、11(c)、11(d)、11(e)、11(f)这六帧分别对应压腿、踢腿、扩胸、弯腰、俯卧撑和扭秧歌的日常健身动作,存在较大的误判。增加人体中心变化率对判定结果进行修正后,由于图11(a)、11(b)、11(c)、11(d)、11(e)、11(f)的中心变化均小于阈值6.5,此时判定结果为非摔倒,得知通过中心变化能够有效地减少系统误判。同时分别在FP-GA硬件平台与MATLAB软件平台进行摔倒准确率测试,摔倒检测的准确率对比如表1所示。
表1中TPR为摔倒检测准确率,FNR为摔倒漏检率,TNR为正常活动检测准确率,FPR为摔倒误判率。1)TPR=正确检测出摔倒的次数/实际摔倒总次数;2)FNR=没有检测出摔倒的次数/实际摔倒总次数;3)TNR=检测为正常活动的次数/正常活动总次数;4)FPR=误判为摔倒的次数/正常活动总次数。
由表1得出使用FPGA平台摔倒检测的准确率比MATLAB平台低1%,造成该结果的原因应该是由于FPGA的处理速度过快,导致一部分的图像帧的缺失。
4.2系统实时性分析
该实验使用的CMOS数字图像传感器采集到的图像分辨率为640×480,输出的视频帧率为25fps。FPGA硬件平台的帧率通过测试系统的算法处理完一帧图像所需要的时钟周期数,从而计算出处理后的视频帧速率,同时使用相同的视频流在MATLAB软件平台上测试系统的算法处理图像的帧速率。表2给出了本文算法分别在FPGA和MATLAB 2个实验平台上得到的帧处理速率,表3为该系统的报警响应时间。
表2给出了本文设计的系统进行视频流摔倒检测时的帧处理速率为24.86fps,与CMOS数字图像传感器输出的视频流帧率基本保持一致,大约为MATLAB软件平台处理速度的2.4倍。表3中得到平均声光报警响应时间为0.51s,实时性满足要求;GPRS短信的平均发送时间为4.97s,会受到手机网络信号或者运营商的影响。实验结果证明了基于FPGA的摔倒检测报警系统的图像处理速度快,摔倒报警响应及时,有很好的实时性。
5结论
本文设计了一种基于FPGA的视频监控摔倒检测报警系统,在FPGA平台实现图像处理与摔倒监测,通过Verilog HDL配置FPGA内部逻辑功能,实现摔倒检测并自动报警。实验结果表明,该系统稳定性好,误报率低。同时将摔倒检测系统应用于家用照明灯,在不增加额外设备的前提下,能够完成摔倒后室内灯光闪烁、蜂鸣器发声与摔倒短信发送的主动报警,构建了一个成本低、功耗小、误报低且满足实时性要求的摔倒检测报警系统,符合智能家居市场的潮流趋势。