我国社会的老龄化问题日益加剧, 老年人由于摔倒产生的身心伤害已经成为一个重要的医疗问题. 每年, 65岁及以上的成年人中每3人就有1人摔倒过[1], 由摔倒引起的身心健康问题亟待解决. 因此, 对人体摔倒检测技术进行研究具有重要的意义.
目前, 国内外对摔倒检测的研究主要分为3类: (1)基于穿戴式传感器的摔倒检测系统[2]; (2)基于环境式传感器的摔倒检测系统[3]; (3)基于计算机视觉的摔倒检测系统[4]. 而市场上现有的摔倒检测系统大多是基于传感器的, 并且基本上是电子设备. 老年人需要佩戴或放入口袋中, 这些可穿戴式摔倒检测仪通常使用加速度计或手动帮助按钮作为传感器来检测摔倒[5]. 然而, 这些可穿戴式摔倒探测仪有一些缺点. 其缺点之一是老年人可能会忘记佩戴, 如果摔倒后失去知觉, 帮助按钮也会失效. 计算机视觉技术的最新进展为克服这些缺点带来了一种新的解决方案. 基于视觉的摔倒检测系统一个主要优点是, 这种系统不需要人佩戴任何东西, 与可穿戴传感器相比, 它的侵入性更小. 此外, 与普通的可穿戴传感器相比, 计算机视觉系统提供了更多关于人的行为的信息. 因此, 基于视觉的家庭监测系统能够提供有关摔倒的信息以及对家庭健康监测有用的日常生活行为的其他活动, 如药物摄入、进餐时间和睡眠时间. 本文设计的摔倒检测系统,首先, 改进Vibe算法, 提高前景检测的准确性, 避免鬼影问题带来的干扰, 然后采用阈值分析法与支持向量机(SVM)相结合的摔倒检测算法, 同时采用双摄像头进行检测, 避免了人体平行与摄像头摔倒, 其外接矩形框与站立类似而无法检测出的缺点. 实验结果显示, 该检测系统能够有效地区分摔倒与其他日常行为, 实时性好, 检测精度高.
1 Vibe算法 1.1 背景模型初始化Vibe算法使用第一帧图像初始化背景模型, 初始化时, 在第一帧图像中为每个像素点随机选取N个八领域像素值, 构成一个N维的样本空间[6]. 像素点的初始化背景模型可表示为:
$M({\rm{x}}) = \{ v_1,\;v_2,v_3,\cdots, v_N\} \;\;$ | (1) |
其中, vi表示背景样本空间中索引为i的像素值; N表示样本空间的大小.
1.2 前景检测当读取到视频的第2帧开始, Vibe算法开始进行前景检测. 设v(x)为像素点x在给定欧式颜色空间中的像素值, SR(v(x))为以v(x)为中心, R为半径的圆形区域, 统计M(x)与v(x)之间的欧式距离小于R的总数, 记为#R, 如果匹配样本总数#R小于阈值#min, 则判断该像素点为前景点, 否则为背景点[7], 如式(2)和式(3)所示.
${\rm{\# }}R = S_R[v(x)] \cap \{ v_1,v_2,v_3,\cdots,v_N\} $ | (2) |
$x = \left\{ {\begin{array}{*{20}{c}} {background}&{\# R \geqslant \# min} \\ {foreground}&{\# R < {\rm{\# }}min} \end{array}} \right.$ | (3) |
Vibe算法基于随机替换像素原则, 采用保守更新方法和前景点计数方法的组合来进行背景模型更新.在此策略中, 如果判定一个像素点为背景点, 则它拥有1/α (α为更新因子)的概率替换掉自己的样本集的值, 同时拥有等概率随机替换掉它邻域像素点的样本集的值.
2 改进的Vibe算法 2.1 鬼影区域的判断Vibe算法由于采用第一帧进行初始化建模, 若第一帧中存在运动目标时, 就会错误地将其初始化为背景模型, 在第一帧的位置处就会存在鬼影区域, 对目标检测产生影响.
为了解决鬼影问题, 本文选择帧间差分法的前景检测结果与Vibe算法的前景检测结果进行对比确定鬼影区域. 如式(4)所示, 设相邻两帧的差分结果记为Dk(x,y), 设定一个阈值T对Dk(x,y)进行二值化处理, 若Dk(x,y)大于阈值T, 则为前景点, 否则为背景点.
$R_k(x,y) = \left\{ {\begin{array}{*{20}{c}} {255}&{D_k(x,y) \ge T} \\ 0&{D_k(x,y) < T} \end{array}} \right.$ | (4) |
为每个像素点设立计数器T(x,y). 由于两帧相减不易产生鬼影, 差分结果与Vibe算法处理结果进行比较, 对于帧差后像素值为0的像素点以及Vibe算法处理后像素值为255的像素点, 将其计数器加1.
$T(x,y) = \left\{ {\begin{array}{*{20}{c}} {T(x,y) + 1}&{f_1(x,y) = 0\& f_2(x,y) = 255} \\ 0&{\rm {else}} \end{array}} \right.$ | (5) |
式中, f1(x,y)为帧间差分法后的像素值, f2(x,y)为Vibe算法处理后的像素值.
由于鬼影区域存在时间较长, 设定阈值Th, 若计数器大于阈值, 则认为该像素点为鬼影区域, 反之则为前景, 如式(6)所示.
$ status(x,y){\rm{ = }}\left\{ {\begin{array}{*{20}{c}} {ghost}&{T(x,y) \ge Th}\\ {foreground}&{\rm {else}} \end{array}} \right. $ | (6) |
原Vibe算法并没有对鬼影区域的判断机制, 且鬼影产生时, 鬼影区域与非鬼影区域的背景更新策略相同, 导致鬼影消除需要很长的时间. 因此, 本文通过实验确定合适的鬼影区域更新因子. 如图1所示, 分别为更新因子为2,5,16时的前景目标检测效果图, 可以看出原算法采用16的更新因子, 鬼影消除缓慢, 仍存在着鬼影; 当更新因子为2时, 由于更新因子太小导致像素点极大概率成为背景像素点, 导致人体有空洞产生, 检测效果不好. 因此, 本文对于鬼影区域选取更新因子为5进行背景更新策略.
2.3 改进的Vibe算法实现步骤
算法1. 改进的Vibe算法
(1) 首先通过视频首帧利用Vibe算法建立一个样本数为N的背景模型, 进行初始化;
(2) 从视频第2帧开始, 将当前帧与前一帧进行相减, 用式(4)进行二值化操作;
(3) 遍历Vibe算法与帧差后的像素值, 对每个像素点的计数器T(x,y)采用式(5)进行计数, 然后采用式(6)进行鬼影区域的判断;
(4) 对于鬼影的区域的每个像素点采用更新因子为5以加快更新周期, 同时也将该像素点随机更新到邻域背景模型中, 非鬼影区域仍采用原算法的更新因子16;
(5) 得到去除鬼影后的前景目标, 算法结束.
2.4 鬼影抑制实验本文采用运动目标检测算法的标准视频库
因需要视频第一帧中出现运动目标, 所以选取pedestrians 视频序列中带有运动目标的第317帧进行初始化, 实验结果如图2所示, 其中图2(c)、图2(d)分别为第333、345帧Vibe算法结果, 图2(e)、图2(f)分别为第333、345帧本文算法结果. 由此可以看出, 在第333帧时, 原算法与本文算法均存在鬼影, 但本文算法已经开始消除鬼影; 在第345帧时原算法仍存在鬼影, 而本文算法已完全消失. 实验结果表明, 本文算法对运动目标检测的效果明显优于原Vibe算法.
3 特征提取
特征提取的好坏直接影响后续摔倒行为判别的精确度, 目前常采用外接矩形或椭圆的方式对人体行为进行描述[8]. 本文采取外接矩形的方式将人体框定出来, 并在此基础上得到相关的几何特征数据. 在日常生活中, 人体的行为复杂多样, 而仅仅依靠一两个特征值, 难以进行区分, 容易造成误检, 因此本文采用多特征融合的方式. 分析人体摔倒过程中显著的特征变化, 选取的特征有高度特征、高宽比特征、Hu矩特征以及质心加速度特征.
3.1 高度特征无论人体的高矮胖瘦, 当人体摔倒时其高度必定在极短的时间内快速下降, 相比于下蹲、坐下等日常行为, 其高度下降值最大. 人体的高度采用外接矩形的高度来表示, 为了避免人体由近到远产生的高度差异, 对高度特征进行归一化, 归一化的公式如下:
$Value_i = \frac{{Height_i}}{{\displaystyle\sum\limits_{{{k = }}1}^{n{\rm{ - 1}}} {Height_k/\left( {n{\rm{ - 1}}} \right)} }}$ | (7) |
式中, Valuei为第i帧归一化的高度值, n为帧数, Heighti为第i帧的高度值. 图3给出了不同行为下人体高度特征值.
3.2 高宽比特征定义人体外接矩形4个顶点分别为R1(x, y), R2(x, y), R3(x, y), R4(x, y), 则外接矩形的高度H与宽度W可以通过以下公式计算:
$H = \sqrt {{{(x_{R1} - x_{R3})}^2} + {{(y_{R1} - y_{R3})}^2}} $ | (8) |
${{W = }}\sqrt {{{(x_{R1} - x_{R2})}^2} + {{(y_{R1} - y_{R2})}^2}} $ | (9) |
高宽比的计算公式如(10)所示, 图4给出了不同行为下人体高宽比特征值.
$rate = \dfrac{H}{W}$ | (10) |
3.3 Hu矩特征
Hu矩是在1962年由Hu提出的, Hu矩是基于统计学理论, 由于其具有平移、旋转、尺度变换不变性[9],又称为不变矩, 现已广泛应用于计算机模式识别领域. Hu矩计算形式简单, 相较于其他矩特征, 诸如Zernike矩、小波矩等, 其所消耗的时间在这几种矩消耗是最短的. 若能够将二值化后的图像看成二维或三维概率密度分布函数, 则矩就能用来分析图像的特征[10]. 对于Hu矩来说, 不同阶的Hu矩代表了不同的含义, 通过零阶矩能够获得图像的面积, 通过一阶矩可以获得图像的质心, 更高阶的矩则反映了图像更多的细节.
$\begin{split} & Hu1 = \eta _{20} + \eta _{02} \\ & Hu2 = {(\eta _{20} - \eta _{02})^2} + 4{\eta ^2}_{11} \\ & Hu3 = {(\eta _{30} - 3\eta _{12})^2} + {(3\eta _{21} - \eta _{03})^2} \\ & Hu4 = {(\eta _{30} + \eta _{12})^2} + {(\eta _{21} + \eta _{03})^2} \\ & Hu5 = (\eta _{30} - 3\eta _{12})(\eta _{30} + \eta _{12})[{(\eta _{30} + \eta _{12})^2} - \\ & 3{(\eta _{21} + \eta _{03})^2}] + (3\eta _{21} - \eta _{03})(\eta _{21} + \eta _{03})[3{(\eta _{30} + \eta _{12})^2} -\\ &{(\eta _{21} + \eta _{03})^2}] \\ & Hu6 = (\eta _{20} - \eta _{02})[{(\eta _{30} + \eta _{12})^2} - {(\eta _{21} + \eta _{03})^2}] + 4\eta _{11}(\eta _{30} + \\ & \eta _{12})(\eta _{21} + \eta _{03}) \\ & Hu7 = (3\eta _{21} - \eta _{03})(\eta _{30} + \eta _{12})[{(\eta _{30} + \eta _{12})^2} - 3(\eta _{21} + \\ & \eta _{03}{)^2}] + (3\eta _{12} - \eta _{30})(\eta _{21} + \eta _{03})[3{(\eta _{30} + \eta _{12})^2} - (\eta _{21} + \\ & \eta _{03}{)^2}] \end{split} \!\!\!\!\!\!\!$ | (11) |
其中,
$\eta _{pq} = \left[ {\displaystyle\sum\limits_{i = 0}^{M - 1} {\displaystyle\sum\limits_{j = 0}^{N - 1} {(i - \mathop {{\rm{ }}i}\limits^ - } {)^p}{{(j - \mathop {{\rm{ }}j}\limits^ - )}^q}} } \right]\Bigg/\left\{ {{{\left[ {\displaystyle\sum\limits_{i = 0}^{M - 1} {\displaystyle\sum\limits_{j = 0}^{N - 1} {I(i,j)} } } \right]}^{\dfrac{{(p + q)}}{2} + 1}}} \right\}$ | (12) |
$\mathop {{\rm{ }}i}\limits^ - = \left[ {\displaystyle\sum\limits_{i = 0}^{M - 1} {\displaystyle\sum\limits_{j = 0}^{N - 1} i } I(i,j)} \right]\Bigg/\left[ {\displaystyle\sum\limits_{i = 0}^{M - 1} {\displaystyle\sum\limits_{j = 0}^{N - 1} {I(i,j)} } } \right]$ | (13) |
$\mathop {{\rm{ }}j}\limits^ - = \left[ {\displaystyle\sum\limits_{i = 0}^{M - 1} {\displaystyle\sum\limits_{j = 0}^{N - 1} j } I(i,j)} \right]\Bigg/\left[ {\displaystyle\sum\limits_{i = 0}^{M - 1} {\displaystyle\sum\limits_{j = 0}^{N - 1} {I(i,j)} } } \right]$ | (14) |
I(i,j)表示像素点(i,j)处的亮度, M和N分别表示图像的宽度与高度.
表1显示了行走、下蹲、摔倒时的7个Hu矩特征. 从表中可以看出, 不同行为计算得到的Hu矩特征具有明显的差异性, 能够很好地描述出图像目标的具体细节, 且具有不变性的特点, 相同行为的Hu矩具有相似性, 能够准确区分出摔倒行为与日常行为. 故本文选取7个Hu矩作为图像的描述特征.
3.4 质心加速度特征
质心是几何物体的中心, 当人体运动时其质心也会相应地发生变化产生位移, 对于行走、下蹲活动, 质心在y轴方向下降缓慢, 当人体突发摔倒时, 质心在y轴方向迅速下降, 其质心加速度明显大于其他正常活动, 进而可以区分下蹲或坐下等行为, 定义相邻两帧的质心为(xi, yi)(xi–1, yi–1), 首先定义质心在y轴方向的速度为:
$ v_i = (y_i - y_{i - 1})/t $ | (15) |
其中, t为两帧图像的时间间隔, 定义第i帧时质心在y轴方向的加速度为:
$a_i = (v_i - v_{i - 1})/t$ | (16) |
通过获得质心在y轴方向的加速度值, 能够有效地区分人体摔倒与下蹲、躺下等行为.
4 摔倒检测算法据相关统计[11], 人体从站立到摔倒时持续时间约为0.4~0.8 s, 实验选用的视频帧率为30 fps, 因此一个摔倒周期内的视频帧数约为12~24帧, 为了更详细的描述摔倒行为, 本文选取25帧作为一个动作周期, 由于相邻几帧人体差异不大, 本文每隔4帧提取特征向量, 总共选取5个关键帧的特征向量进行融合, 对于视频的第i帧构成的特征向量为:
$\begin{split} &F_i = \\ &\{ Value_i,rate_i,Hu_i1,Hu_i2,Hu_i3,Hu_i4,Hu_i5,Hu_i6,Hu_i7,a_i\}\\ \end{split}$ | (17) |
对于完整的动作周期来说, 需要提取5个关键帧的特征向量, 构成5×10维的特征向量空间, 如式(18)所示:
$F{\rm{ = \{ }}F_1,F_2,F_3,F_4,F_5{\rm{\} }}$ | (18) |
本文通过对特征分析, 发现当人体摔倒时, 其归一化后的高度值远小于1, 而人体行走过程中高度值基本都在1附近, 且对于摄像头采集的视频或者视频序列, 行走状态占很大的一部分. 为了提高算法的效率, 减小计算量, 提高系统的实时性, 本文将阈值法与支持向量机结合, 基于双摄像头的摔倒检测算法具体如算法2.
算法2. 摔倒检测算法
(1) 首先同时读取两个不同视角的视频序列, 对于每一个视频采用改进的Vibe算法提取运动的人体目标并框选出人体;
(2) 提取人体的高度特征值, 采用阈值法进行判断.若高度比大于阈值0.9, 则可以排除日常生活中最常见的行走行为; 若高度比小于阈值0.9, 则提取5个关键帧构成的特征向量, 并利用支持向量机分类器进行区分摔倒与其他一些高度小于0.9的日常活动;
(3) 经SVM判别后, 若两个视频序列中存在摔倒行为, 则判定人体发生摔倒.
基于双摄像头的摔倒检测流程图如图5所示.
5 实验结果与分析
本实验在Windows10系统计算机上完成, 主机CPU为Inter(R) Core(TM) i5-9400, 主频为2.90 GHz, 使用Python语言进行编程, 并调用图像处理库OpenCV, 支持向量机选用台湾大学林智仁教授开发的Libsvm包, 其提供了Python、Matlab等接口, 能够满足大多数训练分类的情况.
实验数据集采用了加拿大蒙特利尔大学的一个公开视频库Multiple cameras fall dataset, 其中包括了24个视频段, 每个视频段包含了8个视频, 由布置在房间中不同位置的8个摄像头进行拍摄, 摄像头的视角均为俯视, 每个摄像头的视野能够覆盖到整个房间, 总共192个视频, 其中每个视频包含着1~4个动作, 摔倒行为包括向前摔倒、向后摔倒、左侧摔倒、右侧摔倒以及坐着时摔倒, 日常行为包括下蹲与坐下. 图6为8个摄像头下拍摄的摔倒事件.
本文选用敏感度(Sensitivity)与特异度(Specificity)作为算法的评价指标[12].
$\left\{ {\begin{array}{l} Sensitivity = \dfrac{{TP}}{{TP + FN}} \\ Specificity = \dfrac{{TN}}{{TN + FP}} \\ \end{array}} \right.$ | (19) |
其中, TP为包含摔倒的视频被检测为摔倒, FP为不包含摔倒的视频被检测为摔倒, TN为不包含摔倒的视频没被检测为摔倒, FN为摔倒的视频没被检测为摔倒. 对比结果如表2所示.
表2的方法均在同一摔倒数据集上进行实验.其中文献[13]采用8个摄像头重建人的3D形状, 获得了最高的特异度, 但其使用简单的阈值指标判断人是否摔倒, 敏感度最差; 文献[15]采用单一摄像头的视频, 通过PCANet进行单帧的训练, 再通过SVM进行摔倒识别, 而本文采用双摄像头检测的方法敏感度明显高于其算法; 文献[14]具有较高的敏感度, 但其采用了4个摄像头进行检测, 处理速度为5 fps, 实时性较差, 而本文方法为20 fps更具有实际应用价值.
6 结论与展望本文对采用双摄像头的人体摔倒检测技术进行研究. 采用改进的Vibe算法进行人体目标检测, 融合帧间差分法去除了鬼影的干扰. 对于每个摄像头拍摄的视频采取阈值法与支持向量机结合的方法进行识别, 从实验结果可以看出采用双摄像头的方法能够有效的提高识别的准确率, 在智能视频监控系统领域有着良好的应用前景. 在实验中发现, 对于人体快速地坐下或躺下仍有可能误检, 在未来工作中将该方案与深度学习相结合, 从而进一步提高摔倒行为识别的准确率.
[1] |
Chua JL, Chang YC, Lim WK. A simple vision-based fall detection technique for indoor video surveillance. Signal, Image and Video Processing, 2015, 9(3): 623-633. DOI:10.1007/s11760-013-0493-7 |
[2] |
刘鹏, 卢潭城, 吕愿愿, 等. 基于MEMS三轴加速度传感器的摔倒检测. 传感技术学报, 2014, 27(4): 570-574. DOI:10.3969/j.issn.1004-1699.2014.04.026 |
[3] |
Zhuang XD, Huang J, Potamianos G, et al. Acoustic fall detection using Gaussian mixture models and GMM supervectors. Proceedings of 2009 IEEE International Conference on Acoustics, Speech and Signal Processing. Taipei, China. 2009.69–72.
|
[4] |
宋菲, 薛质. 基于OpenCV的老人跌倒检测的设计和实现. 信息技术, 2015(11): 137-139. |
[5] |
郑娱, 鲍楠, 徐礼胜, 等. 跌倒检测系统的研究进展. 中国医学物理学杂志, 2014, 31(4): 5071-5076. DOI:10.3969/j.issn.1005-202X.2014.04.021 |
[6] |
丁哲, 陆文总. 基于Vibe背景建模的运动目标检测算法. 计算机系统应用, 2019, 28(4): 183-187. DOI:10.15888/j.cnki.csa.006869 |
[7] |
Barnich O, Van Droogenbroeck M. ViBe: A universal background subtraction algorithm for video sequences. IEEE Transactions on Image Processing, 2011, 20(6): 1709-1724. DOI:10.1109/TIP.2010.2101613 |
[8] |
禹明娟. 基于视频的室内老人摔倒检测研究[硕士学位论文]. 杭州: 杭州电子科技大学, 2016.
|
[9] |
刘非非. 基于视频监控的室内跌倒行为的检测与识别研究[硕士学位论文]. 山东: 山东大学, 2016.
|
[10] |
韩飞龙, 应捷. 基于贝叶斯网络的人体异常行为检测与识别. 软件导刊, 2018, 17(7): 9-13. |
[11] |
Yamato J, Ohya J, Ishii K. Recognizing human action in time-sequential images using hidden Markov model. Proceedings 1992 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Champaign, IL, USA. 1992. 379–385.
|
[12] |
Auvinet E, Rougier C, Meunier J, et al. Multiple cameras fall dataset. Quebec City: DIRO-Universide Montreal, QB, Canada. 2010. 1–24.
|
[13] |
Auvinet E, Multon F, Saint-Arnaud A, et al. Fall detection with multiple cameras: An occlusion-resistant method based on 3-D silhouette vertical distribution. IEEE Transactions on Information Technology in Biomedicine, 2011, 15(2): 290-300. DOI:10.1109/TITB.2010.2087385 |
[14] |
Rougier C, Meunier J, St-Arnaud A, et al. Robust video surveillance for fall detection based on human shape deformation. IEEE Transactions on Circuits and Systems for Video Technology, 2011, 21(5): 611-622. DOI:10.1109/TCSVT.2011.2129370 |
[15] |
Wang SK, Chen L, Zhou ZX, et al. Human fall detection in surveillance video based on PCANet. Multimedia Tools and Applications, 2016, 75(19): 11603-11613. DOI:10.1007/s11042-015-2698-y |