第五章跌倒检测算法剖析(含跌到检测源码)
第五章跌倒检测算法剖析
⼀、跌倒特征的研究
跌倒检测步骤⼀般包含为:1)⼈体特征检测:此阶段需要把⼈从背景中提取出来,并处理得到需要的⼈体特征,⼀般包括⾻骼坐标点和⼈体姿态等;2)动作识别:对⼈体的特征进⾏分析和处理,本⽂是分析⼈体中⼼点的速度和⾼度特征,从⽽检测是否发⽣跌倒事件,排除误检和漏检,提⾼准确率。
跌倒是瞬间动作,⼈体的动作、⾼度和速度等会快速的改变。⼈体在跌倒过程中,⼀般是从站着到坐到地板上或者躺倒地板上,⼈体的中⼼点从较⾼的位置快速下降到了地⾯或者接近地⾯的⾼度。第⼀个特征可以选择从⾼度[10-17]⼊⼿,在[10]中作者将头部,颈部,脊椎,臀部,膝盖等⾻骼点连线,检测连线与地⾯是否平⾏以及脊椎的⾼度是否⼩于给定阈值且超过10s。在[11]中作者实时检测头部的⾼度变化,当头部的⾼度⼩于给定阈值时,表明发⽣了跌倒事件。除了头部,脊椎、⾝体质⼼、两髋中⼼点等⾻骼点也是常考虑的点。刘国帅等⼈[17]根据三个特征点(头部、⾝体质⼼、⼩腿中⼼)相对位置的变化和特征向量与⽔平地⾯的夹⾓来检测⼈体跌倒事件。跌倒过程⼈体的中⼼点从⽐较⾼的位置快速下降到了地⾯或者接近地⾯的⾼度,第⼆个检测特征即检测速度。通过连续的视频帧,来计算⾝体质⼼或者⾻骼点的速度,如果该速度超过给定阈值,跌倒事件发⽣。可以检测⽬标⼈体的质⼼下降速度[12][16]和
头部的运动速度[10][11]以及多个⾻骼点实时速度值的加权平均[14][15]等等,另外[16]中的作者对快速摔倒和慢速摔倒2种情况分别检测,检测的阈值条件有所不同。
⼆、系统⽅案的最终选择
(1)利⽤Kinect体感器的实时⾻骼跟踪技术,选取⼈体的中⼼点(spinemid)、两髋中⼼(spinebase)、右脚掌(rightfoot)等3个⾻骼点,实时计算⼈体中⼼点的空间位置、运动速度,以及两髋中⼼点的空间位置、离地⾯的⾼度以及在较低⾼度下停留的时间等参数。
(2)如果⼈中⼼点的下降速度超过V(阈值速度),同时两髋中⼼点离地⾯⾼度低于H且停留时间⼤于T,则判定跌倒事件发⽣,系统会⾃动发出警报并切换到RGB画⾯,以及⾃动保存当前时刻的具体时间、深度图、⾻骼图和所有⾻骼坐标,并⾃动把现场重要信息通过邮件通知监护⼈。
(3)实验结果表明:该检测系统的检测准确率可以达到91%以上。该系统正常⼯作时,只会显⽰深度图和⾻骼图⽽没有RGB图,保护被监护⼈的个⼈隐私,Kinect不受光照影响,系统晚上也可以实时检测。Kinect⽆需穿戴,实⽤性和舒适性较好,不会影响⽼年⼈的⽇常活
动,Kinect价格不⾼,⽐较容易和适合推⼴和使⽤。
跌倒事件
本检测系统只适⽤于空间不⼤的房间,该限制由Kinect的深度识别范围是0.5-4.5⽶所决定的,如果⽬标不在这个范围,则Kinect的精度将急剧下降,导致检测系统的准确度急剧下降。先获取⾻骼数据,通过获取的⾻骼数据来分析和判断⽬标⼈体的运动状态,主要检测特征是⽬标⼈体的中⼼点(JointType_SpineMid)的下降速度和两髋中⼼点(JointType_SpineBase)离地⾯的⾼度。
第⼀个检测特征
通过对⽬标⼈体监测,对返回的⾻骼数据实时处理,在每相邻10帧求⼀次⼈体中⼼点的下降速度spineV。当spineV>VT(临界值),则认为检测到了第⼀个跌倒特征。根据⽂献[19]⾥⾯的结果,VT⼀般在1.21m/s-2.05m/s,结合实验测试结果,本⽂选取1.37m/s做为⼈体中⼼点下降速度的阈值。⼀旦超过该阈值,则认为检测到第⼀个跌倒特征。部分代码如下:
tin = GetTickCount(); //获取时间间隔
float  SpineHeightin = joints[spinemid].Position.Y;//获取⼈体中⼼点的⾼度。
if (framenumber % 10==1)
{
tout = GetTickCount();
float  SpineHeightout = joints[spinemid].Position.Y;
//求得当前速度
float  SpineV = 1000 * (SpineHeightout - SpineHeightin) / (tout - tin);
if (SpineV > 1.37) //当前速度和阈值⽐较
{
vDetection = true;
cout << "⾝体中⼼向下的速度是:  " << vDetection << "m/s" << endl;
}
朱茵个人资料else
vDetection = false;
}
2022年放假第⼆个检测特征
检测⽬标⼈体中⼼点的下降速度是第⼀个检测特征,如果检测到了第⼀个检测特征,将进⼀步检测第⼆个特征,即两髋中⼼点离地⾯的⾼度。地⾯检测的难度⽐较⼤,通过查询Kinect SDK可以发现在IBodyFrame类⾥⾯有⼀个get_FloorClipPlane⽅法,函数的参数
是vector4 *floorClipPlane,返回值是HRESULT类型。vector4结构体⾥有4个float类型的数据成员,分别是x,y,z,w,这4个参数即为地⾯⽅程的系数(x,y,z)和常数项(w),将这四个数分别赋值给A,B,C,D,则可得地⾯⽅程为
(4-4)
此处的地⾯⽅程是在Kinect的深度相机坐标系下得到的,常数项表⽰Kinect的深度相机的中⼼点到地⾯的距离。知道⾻骼点的三维坐标和地⾯⽅程,则可计算两髋中⼼离地⾯的距离baseH
(4-5)
当baseH<HT(临界值),则认为检测到第⼆个检测特征。通过实验测试发现,这4个参数并不总是能准
确获取,常数项(w)经常⽆法正确获取,系统⾃动⽤0代替,显然这样是不对的,这将对⾼度特征检测带来致命错误。当不能正确检测到地⾯⽅程时,本⽂近似采⽤右脚掌代表地⾯作为备选⽅案,因为在⽇常⽣活中,⼈的脚掌⼀般都是在地⾯上,这样只要计算两髋中⼼点距离右脚掌的⾼度baseH。当baseH<HT(临界值),则认为检测到第⼆个检测特征。
⼀般情况下,⼈体跌倒后,⾝体⼀般是仰卧式、俯卧式和侧卧式,这时两髋中⼼点离地⾯的⾼度⾮常⼩,⼤概只有⼈⾝体腰厚⼤⼩或臀宽⼤⼩的⼀半。根据⽂献[20]对⽼年⼈⾝体尺⼨的研究调查结果,第95百分位的男性腰厚⼤⼩和⼥性腰厚⼤⼩分别为330mm和300mm,男性臀宽⼤⼩和⼥性臀宽⼤⼩分别为370mm和380mm。考虑到⾐服的厚度或⾝体接触地⾯不充分等因素,结合实验测试结果,该⾼度阈值需要设置更⼤⼀点才能准确检测到跌倒事件,本⽂选取0.22m做为第⼆个检测特征的阈值。当baseH<0.22m,则判定检测到第⼆个检测特征。
3.语⾳询问和确认跌倒事件
当检测到了上述2个特征,且第⼆个特征持续了5s,则表明跌倒事件很有可能发⽣了,系统⾃动向外界发出询问,“请问您跌倒了吗”,并以每2秒的频率连续发送3次。本系统把此处的语⾳询问函数写到⼦线程⾥,这样系统不会在语⾳播报时⽽阻塞了系统的实时检测功能。如果在询问的这段时间⾥⾯识别到了“NO”或者做出某指定动作(本系统的解除警报动作是双⼿的⾼度同时⾼于头部),则表明没有⼈跌倒,退出警报;如果识别到了“Yes”或者什么都没有识别到,则表明有⼈跌倒了,启动警报。
4. 对跌倒事件的处理
当系统成功检测到跌倒事件,系统会⾃动做出⼀系列处理。⾸先,系统⾃动切换到RGB画⾯,对于后台监控可以不必时刻关注监控画⾯,发⽣跌倒事件后系统会⾃动切换到RGB画⾯,监护⼈员只需通过RGB画⾯确认是否有⼈跌倒即可,极⼤减少了⼯作量,并很好地保护被监护
⼈的隐私,因为在正常情况下,本系统只会显⽰深度图和⾻骼图。然后,系统⾃动记录当前时间和保存深度图、⾻骼图及⾻骼点坐标等数据,这给医护⼈员判断跌倒⽼⼈的病情时提供了⼀定的线索和依据,同时可以记录跌倒瞬间的画⾯,为进⼀步研究跌倒特征提供数据基础,也可⽤作机器学习的数据源。最后,系统通过邮件服务器⾃动向指定联系⼈发送邮件,邮件内容包含被监护⼈姓名、跌倒事件发⽣的时间以及现场RGB图⽚等重要信息,确保相关监护⼈会在第⼀时间收到⽼年⼈发⽣跌倒的通知,以便提供及时有效救助,减少损失和伤害。
四、跌倒检测核⼼算法流程图
这篇⽂章⼤部分是我毕业论⽂⾥⾯的部分,内容⽐较偏向理论,读起来可能不是很容易,或者不感兴趣,这也没办法,我尽量写的⼝语化⼀点了。每个东西都会要有⾜够的理论⽀撑,不然让⼈难以信服。⽂中讲了这么多,最主要的是那个算法流程图,写了这么多也是想把这个算法降低通俗易懂⼀点。
参考⽂献:
梦见钱包被偷[1] 丛丽,王卫红,何彩云.住院⽼⼈⽣存质量的研究现状[J].中国⽼年学杂志,2015,1:142.
[2] 王颖,何国平,贺达仁.空巢⽼⼈的健康问题及对策思考[J]. 中国医学伦理学,2007, 20(3):106-107.
[3] Noury N,Remeau P,Bourke A K,et al.A Proposal for the classification and evaluation of fall detectors[J].IRBM,2008,29 349.
[4] Mathie M J,Coster A C F, Lovell N H,et al.Accelerometry:providing an integrated,practical method for long-
term,ambulatory monitoring of human movement[J].Physiological Measurement,2004,volume 25(2):R1-R20(20).
[5] Litvak D,Zigel Y,Gannot I.Fall Detection of Elderly through Floor Vibrations and Sound[C]// Conference proceedings:Annual International Conference of the IEEE Engineering in Medicine and Biology Society.IEEE Engineering in Medicine and Biology 4632 - 4635.
奚梦瑶身高
[6] Rougier C,Meunier J,St-
Arnaud A, et al. Robust video surveillance for fall detection based on human shape deformation[J].Circuits and Systems for Video Technology
[7] Shotton J,Sharp T,Kipman A,et al.Real-
time human pose recognition in parts from single depth images[J].Communications of the ACM,2013,56(1):116-
124.
[9] ⽑星云.Opencv3 编程⼊门[M].电⼦⼯业出版社,2015.
[10] Planinc R,Kampel M.Introducing the use of depth data for all detection[J].Personal and ubiquitous computing,2013,1072.
[11] Zhang Z, Liu W,Metsis V,et al.A viewpoint-
independent statistical method for fall detection[C]//Pattern Recognition(ICPR),2012 21st International Conference on.IEEE,20 3626-3630.
[12] Igual R,Medrano C,Plaza I.Challenges,issues and trends in fall detection systems[J].Biomed. Eng.Online,2013,1
1-66.
[13] Zhang C,Tian Y.Capezuti E.Privacy preserving automatic fall detection for elderly using RGBD cameras[M].Springer
[14] Bian Z P,Chau L P,Magnenat-
Thalmann N.A depth video approach for fall detection based on human joints height and falling velocity[J].International Coferenc
[15] Kawatsu C,Li J,Chung C J.Development of a fall detection system with Microsoft Kinect[M]//Robot Intelligence Techn网上火车票放票时间
623-630.
辽国是现在的哪里[16] 王君泽,朱⼩龙,瞿畅.基于Kinect⾻架追踪的⼈体摔倒⾃动检测[J].上海交通⼤学学报,2015,49(9):1359-1365.
[17] 刘国帅,熊平.基于三个特征点的⼈体跌倒检测[J].科技视界, 2015(21):5-6.
[18] 蒋成林.霍尔特指数平滑法参数的优选[J].统计教育,2004(4):13-15.
[19] Kobayashi J,Abdulrazak L,Mokhtari M.Inclusive Society:
Health and Wellbeing in the Community,and Care at Home[M].Springer Berlin Heidelberg,2013:238-244.
[20] 胡海滔,李志忠,肖惠,等.北京地区⽼年⼈⼈体尺⼨测量[J].⼈类⼯效学,2006,12(1):39-42.
[21] 吴天昊.基于3轴加速度传感器及陀螺仪的⽼年⼈摔倒识别[D].北京⼯业⼤学,2013.
The end~下偏见
超跑开起来