人体检测装置及方法转让专利

申请号 : CN201711054393.4

文献号 : CN107816985B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 乔倚松

申请人 : 南京阿凡达机器人科技有限公司

摘要 :

本发明提供了一种人体检测装置,其检测过程包括:接收距离传感器采集到的距离数据st;对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对预设个数m的距离数据st进行除错处理得到第二数据组W';对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势;当变化趋势为不变,判断被检测对象处于静止状态;计算第二数据组W'的波动值;当波动值大于预设阈值时,判定被检测对象为人体。其能够实现静止状态下人体的检测,区分站立人体和静止物体,消除了原有人体检测中静止物体带来的判断干扰。

权利要求 :

1.一种人体检测装置,其特征在于,所述人体检测装置中包括:至少一个距离传感器,用于定期采集与被检测对象之间的距离数据st;

处理器,用于实现各指令;及

存储器,用于存储多条指令,指令适用于处理器加载并执行,所述多条指令中包括:接收所述距离传感器采集到的距离数据st;

对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理处理得到第二数据组W′;

对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势;

当所述变化趋势为不变,判断所述被检测对象处于静止状态;

计算第二数据组W′的波动值;

当所述波动值大于预设阈值时,判定所述被检测对象为人体;

在指令对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理得到第二数据组W′中,包括:对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt,其中,t表示距离数据的采样时刻,st表示t时刻采样的距离数据;

在指令对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt中,包括:若距离数据st>预设最大距离值,则第一距离数据dt=st-1,其中,t表示距离数据的采样时刻,st表示t时刻采样的距离数据,st-1表示t-1时刻采样的距离数据;

若距离数据st≤预设最大距离值且||st-st-1||<Δ,则第一距离数据dt=st-1,否则,第一距离数据dt=st,其中,Δ表示预设数据波动冗余最大值;

和/或,在指令对接收到的距离数据st进行除错处理得到第二距离数据d′t中,包括:若距离数据st>预设最大距离值,则第二距离数据d′t=st-1,其中,st-1表示t-1时刻采样的距离数据;

若距离数据st≤预设最大距离值且||st-st-1||<Δ,则第二距离数据d′t=st,否则,第二距离数据d′t=st,其中,Δ表示预设数据波动冗余最大值。

2.如权利要求1所述的人体检测装置,其特征在于,在指令对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势中,还包括:当所述变化趋势为变大或变小,直接判断所述被检测对象为人体。

3.如权利要求1或2所述的人体检测装置,其特征在于,在指令对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理处理得到第二数据组W′中,包括:对接收到的距离数据st进行除错和平滑处理处理得到第二距离数据d′t;

根据构造的滑动窗口依次将得到的第一距离数据dt添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第一数据组W;

根据构造的滑动窗口依次将得到的第二距离数据 添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第二数据组W′。

4.如权利要求3所述的人体检测装置,其特征在于,

在指令根据构造的滑动窗口依次将得到的第一距离数据dt添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第一数据组W中包括:在每次接收到距离数据st进行除错和平滑处理得到第一距离数据dt之后,判断当前用于存放处理结果的数据组中第一距离数据dt的数量是否小于m-Wstep,其中,Wstep为滑动窗口的滑动步长;若是,将第一距离数据dt添加入该数据组中;否则,将第一距离数据dt添加入该数据组中之后,进一步判断该数据组中添加第一距离数据dt的数量是否达到滑动步长Wstep;若是,得到第一数据组W并进入对所述第一数据组W进行拟合的操作;

和/或,在指令根据构造的滑动窗口依次将得到的第二距离数据 添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第二数据组W′中包括:在每次接收到距离数据st进行除错处理得到第二距离数据d′t之后,判断当前用于存放处理结果的数据组中第二距离数据d′t的数量是否小于m-Wstep,其中,Wstep为滑动窗口的滑动步长;若是,将第二距离数据d′t添加入该数据组中;否则将第二距离数据d′t添加入该数据组中之后,进一步判断该数据组中添加第二距离数据d′t的数量是否达到滑动步长Wstep;若是,第二数据组W′并进入对所述第二数据组W′进行拟合的操作。

5.一种人体检测方法,其特征在于,所述人体检测方法中包括:接收距离传感器采集到的距离数据st;

对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理得到第二数据组W′;

对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势;

当所述变化趋势为不变,判断所述被检测对象处于静止状态;

计算第二数据组W′的波动值;

当所述波动值大于预设阈值时,判定所述被检测对象为人体;

在步骤对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理得到第二数据组W′中,包括:对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt,其中,t表示距离数据的采样时刻,st表示t时刻采样的距离数据;

在步骤对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt中,包括:若距离数据st>预设最大距离值,则第一距离数据dt=st-1,其中,t表示距离数据的采样时刻,st表示t时刻采样的距离数据,st-1表示t-1时刻采样的距离数据;

若距离数据st≤预设最大距离值且||st-st-1||<Δ,则第一距离数据dt=st-1,否则,第一距离数据dt=st,其中,Δ表示预设数据波动冗余最大值;

和/或,在步骤对接收到的距离数据st进行除错处理得到第二距离数据d′t中,包括:若距离数据st>预设最大距离值,则第二距离数据d′t=st-1,其中,st-1表示t-1时刻采样的距离数据;

若距离数据st≤预设最大距离值且||st-st-1||<Δ,则第二距离数据d′t=st,否则,第二距离数据d′t=st,其中,Δ表示预设数据波动冗余最大值。

6.如权利要求5所述的人体检测方法,其特征在于,在步骤对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势中,还包括:当所述变化趋势为变大或变小,直接判断所述被检测对象为人体。

7.如权利要求6或5所述的人体检测方法,其特征在于,在步骤对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理得到第二数据组W′中,包括:对接收到的距离数据st进行除错处理得到第二距离数据d′t;

根据构造的滑动窗口依次将得到的第一距离数据dt添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第一数据组W;

根据构造的滑动窗口依次将得到的第二距离数据 添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第二数据组W′。

8.如权利要求7所述的人体检测方法,其特征在于,

在步骤根据构造的滑动窗口依次将得到的第一距离数据dt添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第一数据组W中包括:在每次接收到距离数据st进行除错和平滑处理得到第一距离数据dt之后,判断当前用于存放处理结果的数据组中第一距离数据dt的数量是否小于m-Wstep,其中,Wstep为滑动窗口的滑动步长;若是,将第一距离数据dt添加入该数据组中;否则,将第一距离数据dt添加入该数据组中之后,进一步判断该数据组中添加第一距离数据dt的数量是否达到滑动步长Wstep;若是,得到第一数据组W并进入对所述第一数据组W进行拟合的操作;

和/或,在步骤根据构造的滑动窗口依次将得到的第二距离数据 添加入用于存放处理结果的数据组中,直到数量达到预设个数m,得到第二数据组W′中包括:在每次接收到距离数据st进行除错处理得到第二距离数据d′t之后,判断当前用于存放处理结果的数据组中第二距离数据d′t的数量是否小于m-Wstep,其中,Wstep为滑动窗口的滑动步长;若是,将第二距离数据d′t添加入该数据组中;否则将第二距离数据d′t添加入该数据组中之后,进一步判断该数据组中添加第二距离数据d′t的数量是否达到滑动步长Wstep;若是,第二数据组W′并进入对所述第二数据组W′进行拟合的操作。

说明书 :

人体检测装置及方法

技术领域

[0001] 本发明涉及电子技术领域,尤其涉及一种人体检测装置及方法。

背景技术

[0002] 机器人是近几十年发展起来的新兴综合学科,集中了机械工程、电子工程、信息科学、自动控制以及人工智能等多种学科的最新研究成果,代表了当前科学与工程学的最高成就,无疑是目前科技发展最活跃的研究领域之一,其中,服务型机器人得到了广泛的应用。
[0003] 目前,服务型机器人普遍存在于各行各业中,在应用中,往往都会有人体检测的需求,如,通过检测当前是否有用户存在、当前用户的动作或者运动状态等人体信息,实现自动开/关机器、自动反馈、交互等一系列人机交互操作。更具体来说,当检测到人体靠近时,主动跟用户打招呼;当检测到静止的人体发生移动时,自动开启机器或切换展示的内容;当检测到人体离开时,主动与用户说再见或关闭正在使用的机器等。
[0004] 当然,现在也有能够检测人体的技术方案,如中国专利CN105445812A公开的一种人体传感器检测方法及装置,其通过人体传感器实时监测红外传感器的信号强度值之后,将连续的两个红外信号强度组成一个信号组,如,等;之后,根据信号组判断人体的状态,具体,如果前一个红外信号强度值大于后一个红外信号强度值,并且每一个信号组中的差值累计之和大于第一阈值S1,则确定用户离开传感器;如果前一个红外信号强度值小于后一个红外信号强度值,并且每一个信号组中的差值累计之和大于第二阈值S2,则确定用户靠近传感器。
[0005] 但是,在上述人体传感器检测方法及装置中,人体检测的能力存在局限,其只能检测到运动状态下的人体,对于静止状态下的人体/物体缺乏判断能力,如,如果在传感器前放置一把椅子/凳子等处于静止状态的障碍物,传感器会将障碍物错误的识别为站立的人,不能区分。

发明内容

[0006] 本发明的目的是提供一种人体检测装置及方法,有效解决现有技术中不能有效区分处于静止状态是人体还是物体的技术问题。
[0007] 为了解决上述技术问题,本发明提供了一种人体检测装置,包括:
[0008] 至少一个距离传感器,用于定期采集与被检测对象之间的距离数据st;
[0009] 处理器,用于实现各指令;及
[0010] 存储器,用于存储多条指令,指令适用于处理器加载并执行,所述多条指令中包括:
[0011] 接收所述距离传感器采集到的距离数据st;
[0012] 对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理处理得到第二数据组W';
[0013] 对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势;
[0014] 当所述变化趋势为不变,判断所述被检测对象处于静止状态;
[0015] 计算第二数据组W'的波动值;
[0016] 当所述波动值大于预设阈值时,判定所述被检测对象为人体。
[0017] 本发明还提供了一种人体检测方法,包括:
[0018] 接收所述距离传感器采集到的距离数据st;
[0019] 对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对所述预设个数m的距离数据st进行除错和平滑处理处理得到第二数据组W';
[0020] 对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势;
[0021] 当所述变化趋势为不变,判断所述被检测对象处于静止状态;
[0022] 计算第二数据组W'的波动值;
[0023] 当所述波动值大于预设阈值时,判定所述被检测对象为人体。
[0024] 在本发明提供的人体检测装置及方法中,有益效果在于:
[0025] 1.在本发明提供的人体检测装置及方法中,对距离传感器采集到的距离数据st进行预处理操作,包括除错和平滑处理,以此消除由于数据采集错误和环境背景噪声对人体检测带来的干扰和影响,大大提高了人体检测装置对被检测对象检测的灵敏度。
[0026] 2.在本发明提供的人体检测装置及方法中,对距离传感器采集到的距离数据st进行了预处理操作之后,根据数据拟合的结果判断被检测对象与距离传感器之间距离的变化趋势,进而判定被检测对象的运动状态并输出,简单方便。若判断输出结果为被检测对象处于静止状态,则进一步根据距离数据的波动值判定是否为处于静止状态的人体,实现静止状态下人体的检测,区分站立人体和静止物体,消除了原有人体检测中静止物体带来的判断干扰。
[0027] 3.本发明提供的人体检测装置和方法在检测人体的过程中,根据一段时间内连续的数据变化趋势和变化波动进行分析,而不是简单的距离数据本身的对比分析进行判断,大大提高了人体检测的准确率。

附图说明

[0028] 下面将以明确易懂的方式,结合附图说明优选实施方式,对上述特性、技术特征、优点及其实现方式予以进一步说明。
[0029] 图1为本发明中人体检测装置示意图;
[0030] 图2为本发明中存储器中存储的多条指令一种实施方式流程示意图;
[0031] 附图标号说明:
[0032] 100-人体检测装置,110-距离传感器,120-处理器,130-存储器

具体实施方式

[0033] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0034] 为使图面简洁,各图中的只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。
[0035] 如图1所示为本发明提供的人体检测装置示意图,从图中可以看出,在该人体检测装置100中包括:用于定期采集与被检测对象之间的距离数据st的至少一个距离传感器110(在检测过程中,一个距离传感器检测一个被检测对象),用于实现各指令的处理器120,以及用于存储适用于处理器加载并执行的指令的存储器130,其中,存储器和距离传感器分别与处理器连接。
[0036] 如图2所示,存储器中存储的多条指令中包括:S10接收距离传感器采集到的距离数据st;S20对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对预设个数m的距离数据st进行除错和平滑处理得到第二数据组W';S30对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势;S40当变化趋势为不变,判断被检测对象处于静止状态;S50计算第二数据组W'的波动值;S60当波动值大于预设阈值时,判定被检测对象为人体。
[0037] 在本实施方式中,在使用该人体检测装置对被检测对象进行检测之前,首先对第一数据组W和第二数据组W'进行构建,设定数据组长度m,同时设定数据波动冗余最大值Δ。之后,使用距离传感器定期(如,每0.1s检测一次、每0.2s检测一次等)检测距离数据st(距离传感器在t时刻检测到的原始的距离数据)并将其即时发送至处理器中进行处理。处理接收到距离传感器上传的距离数据st之后,随即对其进行预处理操作,并将预处理之后的距离数据添加入相应的第一数据组W和第二数据组W'。
[0038] 在预处理操作过程中,对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt,对接收到的距离数据st进行除错和平滑处理得到第二距离数据d't;之后根据构造的滑动窗口依次将第一距离数据dt添加入第一数据组W、将第二距离数据d't添加入第二数据组W'。具体:
[0039] 在对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt的过程中,包括以下步骤:将接收到的距离数据st与预设最大距离值(距离传感器最大探测距离,由管理人员预先设定)进行比较,若当前时刻获取的距离数据st大于预设最大距离值,判定当前获取的距离数据st出错,将其删除,并将当前时刻(t时刻)的第一距离数据dt值设定为前一时刻(t-1时刻)获取的距离数据st-1,即设定dt=st-1。若距离数据st不大于预设最大距离值,则进一步判断当前时刻获取的距离数据st与前一时刻获取的距离数据st-1的差值,若||st-st-1||<Δ,说明t时刻的测量值与t-1时刻的测量值之差在波动范围Δ之内,同样将当前时刻(t时刻)的第一距离数据dt值设定为前一时刻(t-1时刻)获取的距离数据st-1,即设定dt=st-1;否则(不是以上两种情况),将当前时刻的第一距离数据dt值设定为当前时刻获取的距离数据,即dt=st。
[0040] 在对接收到的距离数据st进行除错和平滑处理得到第二距离数据d't的过程中,包括以下步骤:将接收到的距离数据st与预设最大距离值进行比较,若当前时刻获取的距离数据st大于预设最大距离值,判定当前获取的距离数据st出错,将其删除,并将当前时刻(t时刻)的第二距离数据d't值设定为前一时刻(t-1时刻)获取的距离数据st-1,即设定d't=st-1。若距离数据st不大于预设最大距离值,则进一步判断当前时刻获取的距离数据st与前一时刻获取的距离数据st-1的差值,若||st-st-1||<Δ,将当前时刻的第二距离数据d't值设定为当前时刻获取的距离数据st,即设定dt=st;否则(不是以上两种情况),同样将当前时刻的第二距离数据d't值设定为当前时刻获取的距离数据,即d't=st。
[0041] 根据以上规则完成对探测到的原始距离数据st的预处理操作之后,根据构造的滑动窗口依次将第一距离数据dt添加入存储该处理结果的数据组中、将第二距离数据d t添加入存储该处理结果的数据组中,积累了预设数量m个数据后,得到第一数据组W和第二数据组W',便于后续的数据拟合。
[0042] 在另一实施方式中,由于检测到的距离数据st会持续更新添加入两个数据组中(两个数据组在时间轴上都不断向前移动,抛弃旧的距离数据),而在实际应用中,相邻第一数据组W/第二数据组W'之间的差距往往非常小(相邻数据组之间仅有一个距离数据的偏移,检测结果相似),并不需要对每一个新构造的第一数据组W/第二数据组W'进行检测,因此在进行进一步处理之前,预先设定每一个被检测数据组(第一数据组W/第二数据组W')之间的检测间隔Wstep,即滑动窗口的滑动步长Wstep(根据实际情况设定,如设定为10、20、30等),表示每隔Wstep个距离数据st之后,才会将新构造的第一数据组W/第二数据组W'放入后续检测步骤中进行检测。具体,在该过程中:如果当前两个数据组中数据的个数小于m-Wstep,则将第二距离数据dt′添加进第二数据组W′,将第一距离数据dt添加进第一数据组W,并跳转至步骤S10,进入处理新采集到的距离数据st的步骤。如果当前两个数据组中数据的个数不小于m-Wstep,继续将第二距离数据d't添加进第二数据组W′,将第一距离数据dt添加进第一数据组W,并判断第一数据组W中添加的第一距离数据dt/第二数据组W'中添加的第二距离数据d't的数量是否达到滑动步长Wstep,如果是,则将当前的第一数据组W送入下一个动态检测步骤;否则,跳转至步骤S10,进入处理新采集到的距离数据st的步骤。当然,在其他实施方式中,根据实际情况确定滑动步长Wstep的取值,这里不做具体限定。
[0043] 根据以上方法得到第一数据组W和第二数据组W'之后,随即对第一数据组W进行拟合,判断被检测对象与距离传感器之间距离的变化趋势。具体,在该过程中,使用最小二乘法曲线拟合法对第一数据组W(检测窗口)中的m个第一距离数据dt进行直线拟合,得到形如y=ax+b的直线,以此根据斜率值a判断被检测对象与距离传感器之间距离的变化趋势,并根据变化趋势判断当前检测窗口中被检测物体所处的状态。具体,当变化趋势为不变(这里的不变并不是指第一数据组W中包括的每个一距离数据dt绝对的相等,在进行拟合之后,只要其变化的趋势在预先设定的范围内,即拟合得到的斜率值a在设定的阈值范围内,都可以称之为不变),判断在当前检测窗口中被检测对象处于静止状态;相反,若判断出变化趋势为变大或变小(即拟合得到的斜率值a大于或小于预先设定的阈值),则直接判定被检测对象为人体(被检测对象的处于运动状态,离开或靠近)。
[0044] 在另一实施方式中,在一些情况下,通过当前检测窗口的变化趋势并不能准确判断被检测对象是否真的处于静止状态,因此,为了提高判断的精确度,当根据当前检测窗口中第一数据组W的拟合结果判断被检测对象与距离传感器之间距离的变化趋势为不变,进一步判断前一检测窗口中第一数据组的拟合结果是否也为被检测对象与距离传感器之间距离的变化趋势为不变;若是,判断当前检测窗口中被检测对象处于静止状态(即连续两次根据第一数据组W拟合得到的结果都是处于静止状态);否则,直接判定被检测对象为人体(即前一检测窗口拟合得到的结果为处于运动状态)。当然,这里只是示例性的给出被检测对象是否处于静止状态的判断方法,在其他实施方式中,可以根据实际情况任意设定根据多次判断结果进行综合判断的规则。
[0045] 在另一实施方式中,根据以上方法判断出被检测对象处于静止状态之后,进一步将当前被检测对象与距离传感器之间的距离与预先设定的被检测对象与距离传感器之间的最小距离进行比较,若当前被检测对象与距离传感器之间的距离小于最小距离,判断被检测对象为人体(正常情况下,如果不是人体,不会长时间与距离传感器距离过近);否则,进入后续计算当前检测窗口第二数据组W'波动值的步骤。
[0046] 在一实例中,将第一数据组W的拟合结果分为四种:“无”,“靠近”,“离开”以及“停留”,且为了提高判断结果的准确度,将单一检测窗口的判断结果作为整个动态检测判断的一部分。具体,在判断之前,预先设定表示被检测对象与距离传感器之间的最小距离ClosestRange,若被检测对象与传感器之间的距离小于此最小距离ClosestRange,发出告警,距离过近;同时,预先设定第一预设斜率阈值δ1、第二预设斜率阈值δ2、第三预设斜率阈值δ3以及第四预设斜率阈值δ4,并设定大小关系:第一预设斜率阈值δ1<第二预设斜率阈值δ2<第三预设斜率阈值δ3<第四预设斜率阈值δ4。
[0047] 基于以上设定,在单一检测窗口判断的过程中,若斜率值a小于第一预设斜率阈值δ1(a<δ1),判定当前检测窗口的结果为靠近;若斜率值a在第二预设斜率阈值δ2和第三预设斜率阈值δ3之间(δ2δ4),判定当前检测窗口的结果为远离;不是以上情况时,则判定当前检测窗口的结果为“无”。此外,若当前检测窗口的判断结果为“无”,则跳转至步骤S10,进入处理新采集到的距离数据st的步骤;如果当前检测窗口的判断结果不为“无”,则保存此次判断结果,清空检测窗口第一数据组W和第二数据组W′中的数值,跳转至步骤S10,进入处理新采集到的距离数据st的步骤,等待下一次判断结果。在该例中,将第一预设斜率阈值δ1设定为-0.5,将第二预设斜率阈值δ2设定为-0.1,将第三预设斜率阈值δ3设定为0.1,将第四预设斜率阈值0.7,在其他实例中,可以根据实际情况将其设定为其他值。最后要说明的是,以上仅示例性的给出了判断的过程,包括设定的4个斜率阈值,在其他实例中,还设定其他数量的斜率阈值,如,设定3/5个等,在此均不作具体限定,原则上来,只要设定的斜率阈值的数量/具体值、斜率阈值与判断结果之间的关联关系能够实现本实施方式的目的,都包括在本实施方式的内容中。
[0048] 为了精确输出结果,在得到当前检测窗口的判断结果Wnow之后,结合前一次检测窗口的判断结果综合判定被检测对象的运动状态并输出。具体,如表1所示的动态检测规则表,若当前检测窗口的结果Wnow为停留(被检测对象与距离传感器之间距离的变化趋势为不变),且前一次检测窗口的判断结果Wlast为靠近,则进一步判断当前第一距离数据dt是否小于预设最小距离ClosestRange;若是,判定检测到人体,且距离过近,发出告警;否则,判定检测到处于靠近状态的人体;若当前检测窗口的结果Wnow为停留,且前一次检测窗口的判断结果Wlast也为停留,则进一步判断当前第一距离数据dt是否小于预设最小距离ClosestRange;若是,判定检测到人体,且距离过近,发出告警;否则,判定检测到处于停留状态的人体或物体(即被检测对象处于静止状态);若当前检测窗口的结果Wnow为远离,且前一次检测窗口的判断结果Wlast为靠近,则判定检测到处于通过状态的人体;若当前检测窗口的结果Wnow为远离,且前一次检测窗口的判断结果Wlast为停留,则判定检测到处于远离状态的人体;若都不是以上情况,输出结果“无”。
[0049] 表1:动态检测规则表
[0050]
[0051]
[0052] 根据以上规则判定被检测对象处于静止状态(上述停留状态的人体或物体)之后,为了进一步确定处于静止状态的是否为人体,进一步通过计算第二数据组W'波动值V的方法进行判断(静态检测),具体包括以下步骤:计算第二数据组W'的波动值;当该波动值大于预设阈值时,判定所述被检测对象为人体;否则判定为静止的物体。
[0053] 第二数据组W'波动值V可以采用多种方式计算的来,如,通过计算第二数据组W'中最大值与最小值之差得到;又如,通过计算第二数据组W'中最大值与最小值的绝对差值得到;再如,通过统计第二数据组W'中所有数值的平均值得到。在一实例中,选用的方式计算得到,其中,μ是第二数据组W'中所有距离数据值的平均值,m为滑动窗口的长度。更具体来说,当第一数据组W(动态检测)的判断结果不是“被检测对象处于静止状态”时,设定V=0(判断结果不为“静止状态”时,不对波动值V进行计算,预先将波动值V设定为0),且每计算一次波动值V,对其进行保存,Vlast=V。
[0054] 预设阈值可以根据实际情况进行设定,如将预设阈值设定为30cm(厘米),以此,当根据第二数据组W'计算得到的波动值大于30cm,则判定待检测对象为人体;否则判定其为静止的物体。
[0055] 对上述实施方式进行改进得到本实施方式,在本实施方式中,为了更精确的判断处于静止状态是否为人体,在判断过程中,计算得到第二数据组W'的波动值(当前检测窗口的波动值)之后,得到前一检测窗口的波动值,并将两个波动值进行相加得到波动值之和Vsum;之后,判断两次检测窗口波动值之和是否大于预设波动阈值θ1;若是,判定当前处于静止状态的是人体;否则,进一步判断在当前检测窗口之前的检测窗口中将处于静止状态的被检测对象判定为人体的次数是否大于预设统计阈值;若是,判定当前处于静止状态的是人体;否则,判定为物体。
[0056] 在本实施方式中,当前检测窗口和前一检测窗口中都包括两个数据组,分别为第一数据组和第二数据组;且每个检测窗口中包括的两个数据组是由预设个数m的距离数据st进行不同的预处理操作分别得来的(即两个数据组原始距离数据st是相同的)。但是对于前一检测窗口来说,进行预处理操作的原始距离数据与当前检测窗口中的不同(由距离传感器在不同时刻采集得到),即得到的第一数据组和第二数据组与当前检测窗口中的第一数据组W和第二数据组W'不同,因而根据当前检测窗口中第二数据组W'计算得来的波动值与根据前一检测窗口中第二数据组计算得来的波动值不同。对于前一检测窗口中波动值的获取,若前一检测窗口中第二数据组的波动值存在(在前一检测窗口中已经计算并存储),则直接读取即可;若前一检测窗口中第二数据组的波动值不存在,则采用与当前检测窗口中波动值相同的方法计算前一检测窗口中第二数据组的波动值。
[0057] 另外,由于静态检测结果的输出分为“人体”和“物体”两种,为了更方便的对检测结果进行统计,预先设定静态结果为“人体”的统计值为Counthuman。当动态检测的输出结果为被检测对象处于静止状态时,为了分辨被检测物是人体还是物体,首先使用统计值Counthuman对静态结果为“人体”的次数进行统计,具体,若上一次动态检测的结果为“静止状态”且上一次静态检测的结果为“人体”,则Counthuman=Counthuman+1,否则Counthuman=0。
[0058] 基于此,在判断的过程中,计算两次相邻检测窗口波动值之和Vsum(Vsum=Vlast+Vnow,其中,Vlast为上一次静态检测计算得到的波动值,Vnow为当前静态检测计算得到的波动值)。之后,将计算得到的波动值之和Vsum与预设波动阈值θ1进行比较,若Vsum>θ1,则直接判定当前处于静止状态的为“人体”;若Vsum<θ1,说明被检测对象的波动很小,进一步判断统计值Counthuman是否大于统计阈值θ2,若是,则判定当前处于静止状态的为“人体”,否则判定为“物体”。通过上述动态检测和静态检测之后输出结果之后,返回步骤S10,进入处理新采集到的距离数据st的步骤,获得新的距离数据st,重新构建检测窗口,对新构建的数据数组进行检测,以此循环。
[0059] 在一实例中,将上述波动阈值θ1设定为30cm(厘米),统计阈值θ2设定为1(如果前一检测窗口中通过波动值的计算最终将处于静止状态的被检测对象判定为人体,则在当前检测窗口中,仍然将处于静止状态的被检测对象判定为人体),在其他实例中,还可以将波动阈值θ1和统计阈值θ2设定为其他值,如将波动阈值θ1设定为20cm、40cm等,将统计阈值θ2设定为2、3等。
[0060] 相对应地,本发明还提供了一种人体检测方法,包括:S10接收距离传感器采集到的距离数据st;S20对预设个数m的距离数据st进行除错和平滑处理得到第一数据组W,对预设个数m的距离数据st进行除错和平滑处理得到第二数据组W';S30对第一数据组W进行拟合操作,根据拟合结果判断被检测对象与距离传感器之间距离的变化趋势;S40当变化趋势为不变,判断被检测对象处于静止状态;S50计算第二数据组W'的波动值;S60当波动值大于预设阈值时,判定被检测对象为人体。
[0061] 在本实施方式中,在使用该人体检测装置对被检测对象进行检测之前,首先对第一数据组W和第二数据组W'进行构建,设定数据组长度m,同时设定数据波动冗余最大值Δ。之后,使用距离传感器定期(如,每0.1s检测一次、每0.2s检测一次等)检测距离数据st(距离传感器在t时刻检测到的原始的距离数据)并将其即时发送至处理器中进行处理。处理接收到距离传感器上传的距离数据st之后,随即对其进行预处理操作,并将预处理之后的距离数据添加入相应的第一数据组W和第二数据组W'。
[0062] 在预处理操作过程中,对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt,对接收到的距离数据st进行除错和平滑处理得到第二距离数据d't;之后根据构造的滑动窗口依次将第一距离数据dt添加入第一数据组W、将第二距离数据d't添加入第二数据组W'。具体:
[0063] 在对接收到的距离数据st进行除错和平滑处理得到第一距离数据dt的过程中,包括以下步骤:将接收到的距离数据st与预设最大距离值(距离传感器最大探测距离,由管理人员预先设定)进行比较,若当前时刻获取的距离数据st大于预设最大距离值,判定当前获取的距离数据st出错,将其删除,并将当前时刻(t时刻)的第一距离数据dt值设定为前一时刻(t-1时刻)获取的距离数据st-1,即设定dt=st-1。若距离数据st不大于预设最大距离值,则进一步判断当前时刻获取的距离数据st与前一时刻获取的距离数据st-1的差值,若||st-st-1||<Δ,说明t时刻的测量值与t-1时刻的测量值之差在波动范围Δ之内,同样将当前时刻(t时刻)的第一距离数据dt值设定为前一时刻(t-1时刻)获取的距离数据st-1,即设定dt=st-1;否则(不是以上两种情况),将当前时刻的第一距离数据dt值设定为当前时刻获取的距离数据,即dt=st。
[0064] 在对接收到的距离数据st进行除错和平滑处理得到第二距离数据d't的过程中,包括以下步骤:将接收到的距离数据st与预设最大距离值进行比较,若当前时刻获取的距离数据st大于预设最大距离值,判定当前获取的距离数据st出错,将其删除,并将当前时刻(t时刻)的第二距离数据d't值设定为前一时刻(t-1时刻)获取的距离数据st-1,即设定d't=st-1。若距离数据st不大于预设最大距离值,则进一步判断当前时刻获取的距离数据st与前一时刻获取的距离数据st-1的差值,若||st-st-1||<Δ,将当前时刻的第二距离数据d't值设定为当前时刻获取的距离数据st,即设定d't=st;否则(不是以上两种情况),同样将当前时刻的第二距离数据d't值设定为当前时刻获取的距离数据,即d't=st。
[0065] 根据以上规则完成对探测到的原始距离数据st的预处理操作之后,根据构造的滑动窗口依次将第一距离数据dt添加入存储该处理结果的数据组中、将第二距离数据d't添加入存储该处理结果的数据组中,积累了预设数量m个数据后,得到第一数据组W和第二数据组W',便于后续的数据拟合。
[0066] 在另一实施方式中,由于检测到的距离数据st会持续更新添加入两个数据组中(两个数据组在时间轴上都不断向前移动,抛弃旧的距离数据),而在实际应用中,相邻第一数据组W/第二数据组W'之间的差距往往非常小(相邻数据组之间仅有一个距离数据的偏移,检测结果相似),并不需要对每一个新构造的第一数据组W/第二数据组W'进行检测,因此在进行进一步处理之前,预先设定每一个被检测数据组(第一数据组W/第二数据组W')之间的检测间隔Wstep,即滑动窗口的滑动步长Wstep(根据实际情况设定,如设定为10、20、30等),表示每隔Wstep个距离数据st之后,才会将新构造的第一数据组W/第二数据组W'放入后续检测步骤中进行检测。具体,在该过程中:如果当前两个数据组中数据的个数小于m-Wstep,则将第二距离数据d't添加进第二数据组W′,将第一距离数据dt添加进第一数据组W,并跳转至步骤S10,进入处理新采集到的距离数据st的步骤。如果当前两个数据组中数据的个数不小于m-Wstep,继续将第二距离数据d't添加进第二数据组W′,将第一距离数据dt添加进第一数据组W,并判断第一数据组W中添加的第一距离数据dt/第二数据组W'中添加的第二距离数据d't的数量是否达到滑动步长Wstep,如果是,则将当前的第一数据组W送入下一个动态检测步骤;否则,跳转至步骤S10,进入处理新采集到的距离数据st的步骤。当然,在其他实施方式中,根据实际情况确定滑动步长Wstep的取值,这里不做具体限定。
[0067] 根据以上方法得到第一数据组W和第二数据组W'之后,随即对第一数据组W进行拟合,判断被检测对象与距离传感器之间距离的变化趋势。具体,在该过程中,使用最小二乘法曲线拟合法对第一数据组W(检测窗口)中的m个第一距离数据dt进行直线拟合,得到形如y=ax+b的直线,以此根据斜率值a判断被检测对象与距离传感器之间距离的变化趋势,并根据变化趋势判断当前检测窗口中被检测物体所处的状态。具体,当变化趋势为不变(这里的不变并不是指第一数据组W中包括的每个一距离数据dt绝对的相等,在进行拟合之后,只要其变化的趋势在预先设定的范围内,即拟合得到的斜率值a在设定的阈值范围内,都可以称之为不变),判断在当前检测窗口中被检测对象处于静止状态;相反,若判断出变化趋势为变大或变小(即拟合得到的斜率值a大于或小于预先设定的阈值),则直接判定被检测对象为人体(被检测对象的处于运动状态,离开或靠近)。
[0068] 在另一实施方式中,在一些情况下,通过当前检测窗口的变化趋势并不能准确判断被检测对象是否真的处于静止状态,因此,为了提高判断的精确度,当根据当前检测窗口中第一数据组W的拟合结果判断被检测对象与距离传感器之间距离的变化趋势为不变,进一步判断前一检测窗口中第一数据组的拟合结果是否也为被检测对象与距离传感器之间距离的变化趋势为不变;若是,判断当前检测窗口中被检测对象处于静止状态(即连续两次根据第一数据组W拟合得到的结果都是处于静止状态);否则,直接判定被检测对象为人体(即前一检测窗口拟合得到的结果为处于运动状态)。当然,这里只是示例性的给出被检测对象是否处于静止状态的判断方法,在其他实施方式中,可以根据实际情况任意设定根据多次判断结果进行综合判断的规则。
[0069] 在另一实施方式中,根据以上方法判断出被检测对象处于静止状态之后,进一步将当前被检测对象与距离传感器之间的距离与预先设定的被检测对象与距离传感器之间的最小距离进行比较,若当前被检测对象与距离传感器之间的距离小于最小距离,判断被检测对象为人体(正常情况下,如果不是人体,不会与距离传感器距离过近);否则,进入后续计算当前检测窗口第二数据组W'的第一波动值的步骤。
[0070] 根据以上规则判定被检测对象处于静止状态(上述停留状态的人体或物体)之后,为了进一步确定处于静止状态的是否为人体,进一步通过计算第二数据组W'波动值V的方法进行判断(静态检测),具体包括以下步骤:计算第二数据组W'的波动值;当该波动值大于预设阈值时,判定所述被检测对象为人体;否则判定为静止的物体。
[0071] 第二数据组W'波动值V可以采用多种方式计算的来,如,通过计算第二数据组W'中最大值与最小值之差得到;又如,通过计算第二数据组W'中最大值与最小值的绝对差值得到;再如,通过统计第二数据组W'中所有数值的平均值得到。在一实例中,选用的方式计算得到,其中,μ是第二数据组W'中所有距离数据值的平均值,m为滑动窗口的长度。更具体来说,当第一数据组W(动态检测)的判断结果不是“被检测对象处于静止状态”时,设定V=0(判断结果不为“静止状态”时,不对波动值V进行计算,预先将波动值V设定为0),且每计算一次波动值V,对其进行保存,Vlast=V。
[0072] 预设阈值可以根据实际情况进行设定,如将预设阈值设定为30cm(厘米),以此,当根据第二数据组W'计算得到的波动值大于30cm,则判定待检测对象为人体;否则判定其为静止的物体。
[0073] 对上述实施方式进行改进得到本实施方式,在本实施方式中,为了更精确的判断处于静止状态是否为人体,在判断过程中,计算得到第二数据组W'的波动值(当前检测窗口的波动值)之后,得到前一检测窗口的波动值,并将两个波动值进行相加得到波动值之和Vsum;之后,判断两次检测窗口波动值之和是否大于预设波动阈值θ1;若是,判定当前处于静止状态的是人体;否则,进一步判断在当前检测窗口之前的检测窗口中将处于静止状态的被检测对象判定为人体的次数是否大于预设统计阈值;若是,判定当前处于静止状态的是人体;否则,判定为物体。
[0074] 在本实施方式中,当前检测窗口和前一检测窗口中都包括两个数据组,分别为第一数据组和第二数据组;且每个检测窗口中包括的两个数据组是由预设个数m的距离数据st进行不同的预处理操作分别得来的(即两个数据组原始距离数据st是相同的)。但是对于前一检测窗口来说,进行预处理操作的原始距离数据与当前检测窗口中的不同(由距离传感器在不同时刻采集得到),即得到的第一数据组和第二数据组与当前检测窗口中的第一数据组W和第二数据组W'不同,因而根据当前检测窗口中第二数据组W'计算得来的波动值与根据前一检测窗口中第二数据组计算得来的波动值不同。对于前一检测窗口中波动值的获取,若前一检测窗口中第二数据组的波动值存在(在前一检测窗口中已经计算并存储),则直接读取即可;若前一检测窗口中第二数据组的波动值不存在,则采用与当前检测窗口中波动值相同的方法计算前一检测窗口中第二数据组的波动值。
[0075] 另外,由于静态检测结果的输出分为“人体”和“物体”两种,为了更方便的对检测结果进行统计,预先设定静态结果为“人体”的统计值为Counthuman。当动态检测的输出结果为被检测对象处于静止状态时,为了分辨被检测物是人体还是物体,首先使用统计值Counthuman对静态结果为“人体”的次数进行统计,具体,若上一次动态检测的结果为“静止状态”且上一次静态检测的结果为“人体”,则Counthuman=Counthuman+1,否则Counthuman=0。
[0076] 基于此,在判断的过程中,计算两次相邻检测窗口波动值之和Vsum(Vsum=Vlast+Vnow,其中,Vlast为上一次静态检测计算得到的波动值,Vnow为当前静态检测计算得到的波动值)。之后,将计算得到的波动值之和Vsum与预设波动阈值θ1进行比较,若Vsum>θ1,则直接判定当前处于静止状态的为“人体”;若Vsum<θ1,说明被检测对象的波动很小,进一步判断统计值Counthuman是否大于统计阈值θ2,若是,则判定当前处于静止状态的为“人体”,否则判定为“物体”。通过上述动态检测和静态检测之后输出结果之后,返回步骤S10,进入处理新采集到的距离数据st的步骤,获得新的距离数据st,重新构建检测窗口,对新构建的数据数组进行检测,以此循环。
[0077] 在一实例中,将上述波动阈值θ1设定为30cm(厘米),统计阈值θ2设定为1(如果前一检测窗口中通过波动值的计算最终将处于静止状态的被检测对象判定为人体,则在当前检测窗口中,仍然将处于静止状态的被检测对象判定为人体),在其他实例中,还可以将波动阈值θ1和统计阈值θ2设定为其他值,如将波动阈值θ1设定为20cm、40cm等,将统计阈值θ2设定为2、3等。
[0078] 应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。