一种用于检测老人跌倒的机器视觉方法与流程

文档序号:16432141发布日期:2018-12-28 20:13阅读:1043来源:国知局
一种用于检测老人跌倒的机器视觉方法与流程

本发明涉及一种用于检测老人跌倒的机器视觉方法。

背景技术

近年来,随着人口老龄化的加剧,老年人摔倒事件日益增多。跌倒是老年人独自生活的最大风险之一。每年跌倒事件至少造成数千老年人死亡。根据调查,跌倒是65岁以上人群的第六大死因,也是65-75岁特殊人群的第二大死因。有时老年人不慎跌倒可能会对脊髓和髋部区域造成严重伤害。在这种情况下,跌倒的老年人无法打电话给其他人寻求帮助,甚至可能会在跌倒事件发生后数小时内仍留在地面上,无法得到及时有效的治疗。

为了及时有效的避免此类事件的发生,有人利用各种非视觉传感器,如加速度计和陀螺仪等,来设计检测跌倒的方法。此方法要求被检测者通过佩戴可穿戴设备来积极配合,老年人经常会忘记佩戴此类设备导致事故发生,有时由于此类设备亲肤性差,导致被检测者佩戴不舒服,甚至造成皮肤过敏。不仅如此,加速度计和陀螺仪探测器的主要问题在于难以区分真正的跌落和突然的运动,这可能会产生错误的坠落警告。另外,有的在地板中嵌入振动传感器,通过振动区分活动,但是需要对老年人身处的环境进行大量修改。还有人使用红外感应设备来探测老年人身处的环境。但它们必须安装在几个房间中以覆盖整个活动区域。而基于机器视觉的方法来检测老人跌倒不会造成此类问题发生,所有信息都通过摄像机远程收集。然而,基于机器视觉的方法主要存在如下难点:1.如何区分场景中的哪些对象(人)正在下降而哪些不是;2.如何区分在地面上的人是躺着还是跌落;3.由于背景一直在变化,如何不受光照和场景的变化的影响减去背景,有效提取出人体轮廓。因此,如何通过相机来可靠、稳定的检测出老年人是否跌倒,达到较高的识别准确率和较低的误报率是预防此类事故的关键技术难题。



技术实现要素:

要解决的技术问题:本发明的目的是提供一种用于检测老人跌倒的机器视觉方法,基于一台微型计算机和至少一个摄像头的硬件设备,以及深度学习的方法分析采集到的图像信息,根据语义分割和knn二分类模型实时监控老年人的活动,检测是否出现跌倒动作。

技术方案:一种用于检测老人跌倒的机器视觉方法,包括以下步骤:

第一步:摄像头实时拍摄人体运动图像,图像实时的传送给微型计算机;

第二步:采用icnet模型来实现图像的语义分割,获取图像中每一个像素对应的标签,得到图像中人体的区域;

第三步:对icnet语义分割所得的人体区域进行条件判定,如果满足系统设定的阈值,则进入下一步继续进行判断,如果不满足,则回到上一步,重新获取新的图像进行语义分割;

第四步:输入第三步中生成的二值灰度图像,采用基于最小二乘法的椭圆拟合算法来快速的生成图像中人体的椭圆轮廓,并计算出椭圆方位角和长短轴比率;

第五步:使用knn算法,将椭圆方位角和长短轴比率作为输入对老年人当前状态进行分类,判断老年人是否跌倒,若是,则报警,若否,则重新开始。

进一步的,所述icnet模型是一种实时语义分割模型,该模型通过级联网络的设计,融合低分辨率图像的语义信息和高分辨率图像的细节信息,大大减少了计算机的运算量,在1024×2048的分辨率下可以每秒钟处理30帧图片,实现快速的高质量语义分割。

进一步的,所述icnet模型的运行过程如下:

(1)对移动摄像头采集到的图像进行预处理,将原始图像缩放到1/2和1/4,得到两张较低分辨率的图像;

(2)将缩放到1/4的图像输入icnet级联网络的第一个分支,经过卷积核将采样图片下采样到原始图像的1/8和1/32,紧接着有若干个空洞卷积层增大感受野,输出1/32的特征图;

(3)将缩放到1/2的图像输入icnet级联网络的第二个分支,经过两次卷积和下采样,降低到1/16的特征图。将1/16的特征图和第一个分支输出的1/32的特征图在级联特征融合单元进行特征融合,输出1/16的特征图;

(4)将原始图像输入到icnet级联网络的第三个分支,经过三个卷积层,下采样到1/8的特征图。将下采样后的特征图和第二个分支输出的1/16的特征图在cff单元中进行特征融合,输出1/8的特征图;

(5)将cff单元输出的1/8的特征图进行上采样,得到和原始图像相同分辨率的特征图。

进一步的,所述第三步中人体区域进行条件判定的具体步骤如下:

(1)给定一张语义分割图,将其转换为二值灰度图像;

(2)在图像下方1/3处,水平取一条阈值线;

(3)计算第一个阈值per;

(4)如果per>=50%,结束循环,重新回到1,否则向下执行;

(5)得到属于人体区域的二维包围框;

(6)计算高宽比r;

(7)如果r>=1/2,结束循环,重新回到1,否则向下执行。

有益效果:

1.本发明采用icnet模型,速度快,精度也相对较高,能够实现快速的高质量语义分割。

2.不会由于背景的变化,不受光照和场景的变化的影响,能够有效提取出人体轮廓。

3.能够有效判断站姿,临时姿势和卧姿三种姿态,以确定老人是否摔倒。

附图说明:

图1为本发明整体实施过程图。

图2为icnet模型运行过程图。

图3为对icnet语义分割所得的人体区域进行条件判定的步骤图。

图4为本发明第四步中计算出椭圆方位角和长短轴比率的算法流程图。

具体实施方式

一种用于检测老人跌倒的机器视觉方法,包括以下步骤:

第一步:摄像头实时拍摄人体运动图像,图像实时的传送给微型计算机;

第二步:采用icnet模型来实现图像的语义分割,获取图像中每一个像素对应的标签,得到图像中人体的区域,如图2所示;

所述icnet模型是一种实时语义分割模型,速度快,精度也相对较高,该模型通过级联网络的设计,融合低分辨率图像的语义信息和高分辨率图像的细节信息,大大减少了计算机的运算量,在1024×2048的分辨率下可以每秒钟处理30帧图片,实现快速的高质量语义分割,其运行过程如下:

(1)对移动摄像头采集到的图像进行预处理,将原始图像缩放到1/2和1/4,得到两张较低分辨率的图像;

(2)将缩放到1/4的图像输入icnet级联网络的第一个分支,经过卷积核将采样图片下采样到原始图像的1/8和1/32,紧接着有若干个空洞卷积层增大感受野,输出1/32的特征图;

(3)将缩放到1/2的图像输入icnet级联网络的第二个分支,经过两次卷积和下采样,降低到1/16的特征图。将1/16的特征图和第一个分支输出的1/32的特征图在级联特征融合单元进行特征融合,输出1/16的特征图;

(4)将原始图像输入到icnet级联网络的第三个分支,经过三个卷积层,下采样到1/8的特征图。将下采样后的特征图和第二个分支输出的1/16的特征图在cff单元中进行特征融合,输出1/8的特征图;

(5)将cff单元输出的1/8的特征图进行上采样,得到和原始图像相同分辨率的特征图。

第三步:对icnet语义分割所得的人体区域进行条件判定,如果满足系统设定的阈值,则进入下一步继续进行判断,如果不满足,则回到上一步,重新获取新的图像进行语义分割,具体步骤如下(数学描述),如图3所示:

(1)给定一张语义分割图,将其转换为二值灰度图像;

(2)在图像下方1/3处,水平取一条阈值线;

(3)计算第一个阈值per;

(4)如果per>=50%,结束循环,重新回到1,否则向下执行;

(5)得到属于人体区域的二维包围框;

(6)计算高宽比r;

(7)如果r>=1/2,结束循环,重新回到1,否则向下执行;

以上为人体区域条件判定方法的数学描述,具体到实现方法如下:

设集合{xi}(i=1,...,n)为经过语义分割后的图像点,语义分割图中的任意一点xi用四个分量表示(m,n,cp),其中,(m,n)表示该像素点的空间坐标,cp表示该像素点所属的类别。

a)将语义分割后的图像进行灰度化,即对于图像中的每一个点xi,如果该点属于人体,则将其灰度值取为0,否则将其灰度值取为255,得到每一个点的像素值pi;

b)记灰度图像下方1/3处水平线上的像素点集合为{li}(i=1,...,k),则li的垂直空间坐标均为ni;

c)统计出灰度图中所有垂直空间坐标大于ni的像素点个数,记为a,再统计出灰度图中所有垂直空间坐标小于ni的像素点个数,记为b;

d)根据a和b计算阈值per,per=a/b*100%,若per<=50%,则进入下一步继续判断,否则结束循环;

e)统计出集合{xi}中水平空间坐标的最大值和最小值,分别记为mmax和mmin,然后统计出集合{xi}中垂直空间坐标的最大值和最小值,分别记为nmax和nmin,建立属于人体区域的二维包围框,记height=nmax-nmin,width=mmax-mmin;

f)根据height和width得到二维包围框高宽比r,r=height/width。若r<1/2,则进入下一步进行椭圆拟合,否则结束循环。

第四步:输入第三步中生成的二值灰度图像,采用基于最小二乘法的椭圆拟合算法来快速的生成图像中人体的椭圆轮廓,并计算出椭圆方位角和长短轴比率,算法流程图如图4所示;

具体算法说明:

基于最小二乘法的椭圆拟合算法是图像处理领域的经典问题之一,它可以将椭圆拟合到测量数据,将服从正态分布的观测误差的平方和调整至最小,通过最小二乘法,目标函数中的参数集合将会被不断调整,使得给定数据和椭圆之间的距离收敛于最小。

基于最小二乘法的椭圆拟合算法的具体过程如下:

(1)采用canny边缘检测算法提取二值图像中人体的边界图像;

(2)取边界,取出canny边缘检测算法提取的边界像素点,若边界点个数大于阈值tc,利用最小二乘法拟合出椭圆;否则,重新选择边界;

最小二乘法得到椭圆方程的计算步骤为:

将椭圆表示为两个向量相乘的方程:

其中为椭圆方程的系数(a,b,c,d,e,f),

到方程的距离平方和为:

由极值原理,必有:

求得a,b,c,d,e,f的值,即可得到椭圆方程;

(3)遍历由canny边缘检测算法提取的边界像素点,记各个点到拟合得到的椭圆之间的距离为d,记成功匹配点个数为pc,如果d小于某个阈值td,则将p加1,记拟合得到的椭圆的像素点个数为pe,则拟合率为:

(4)记椭圆长半轴为a,短半轴为b,则椭圆率为:

(5)若求得的拟合率和椭圆率大于相应的阈值,则该椭圆加入椭圆集合{ei}(i=1,...,k);

(6)记a0为理想人体椭圆面积,记ai(i=1,...,k)为椭圆集合中椭圆的面积,选择面积差最小的椭圆为最终的人体边界椭圆;

(7)计算该椭圆的椭圆方位角α(即:椭圆长轴与x轴之间的夹角),并计算该椭圆长短轴比率β。

第五步:使用knn算法,将椭圆方位角和长短轴比率作为输入对老年人当前状态进行分类,判断老年人是否跌倒,若是,则报警,若否,则重新开始;

knn分类器算法是一种用于从训练数据中学习函数表示的有监督机器学习技术,根据特征空间中和训练数据的欧式距离,来对新的对象进行分类。空间中的一个没有标签的点的标签将被定义为k个离它最近的训练样本中最频繁的类别标签,因此参数k在knn分类中起重要作用。knn分类器应该预先确定参数k,k的最佳选择取决于训练数据。通常,较大的k值将减少噪声对分类的影响,但会导致类之间的边界不太明显,因此使用交叉验证来找出最好的k值。

knn算法的具体过程如下:

(1)将老人室内活动分为3类:站姿,临时姿势和卧姿,在训练阶段前,准备15000个数据,每个数据包括椭圆方位角、长短轴比率以及对应的类别;

(2)交叉验证过程被用来找出最好的分类值k。原始样本被分成k个子样本。在k个子样本中,保留一个子样本作为用于测试模型的验证数据,剩余的k-1个子样本用作训练数据;然后将交叉验证过程重复k次,k个子样本均会被用作验证数据验证一次,统计出采用不同的k值时,knn分类器在验证数据上的准确率,得到准确率最高时的k值,训练过程结束。

(3)将第四步中的椭圆方位角和椭圆长短轴比率输入knn分类器,判断属于哪个类别;

(4)如果knn分类器的结果是临时姿势,则设置一个时间阈值tc,如果在时间阈值tc内knn分类器输出的结果包含卧姿,则判定老人出现跌倒,并发出警报,如果在时间阈值tc外的第一个knn分类器输出的结果为卧姿,则判定是躺下动作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1