本发明涉及计算机视觉技术领域,具体而言,尤其涉及一种基于计算机视觉的洗手及消毒流程规范性自动检测方法。
背景技术:
目前判断洗手是否合格的方法主要是对手部进行微生物学采样检测致病菌:洗前涂抹荧光物质,洗后通过荧光灯照射采集手部图片判断是否洗净,进而判断洗手是否合格,该方法存在的问题包括:
1)成本高,需要制作操作台,荧光灯、摄像头等设备;
2)缺点是检测周期长;
3)检测结果易受其它因素干扰。
技术实现要素:
根据上述提出现有的微生物学采样检测洗手是否合格的方法成本高周期长结果易受干扰的技术问题,而提供一种基于计算机视觉的洗手及消毒流程规范性自动检测方法。本发明主要利用计算机视觉的方法对洗手及消毒过程中的各个流程依次进行检测并将各步骤的检测结果实时的反映到显示界面上,从而起到实施监督洗手过程规范性的作用。
本发明采用的技术手段如下:
基于计算机视觉的洗手及消毒流程规范性自动检测方法,包括如下步骤:
s1:将摄像头固定于能够保证完整拍摄到水池区域的位置,水池区域内包括水龙头出水口、排水口和洗手液按压头且摄像头能拍摄到由出水口至排水口的完整水流;
s2:将摄像头拍摄的视频中每隔4帧取一帧图像作为待处理图像进行流程规范性自动检测:
(1)流动水洗手规范性检测:
①检测水龙头是否出水;
②检测手是否正在水中冲洗及手在水中冲洗的时间;
(2)洗手液使用规范性检测:
①检测是否采集了洗手液;
②检测手在搓洗过程中是否产生了足够的泡沫;
(3)洗手动作规范性检测:
①检测双手在搓洗过程中是否有相互搓洗的动作;
②检测双手在搓洗过程中是否有十指交叉相互搓洗的动作;
③检测双手在搓洗过程中是否有搓洗左右手背的动作;
s3:将s2中的各项规范性检测结果显示在显示界面。
进一步地,s1中,固定好摄像头后,将摄像头拍摄的视频中的第一帧图像作为参考帧图像,参考帧图像中没有人且水龙头关闭;
打开水龙头,截取摄像头拍摄的视频中的一帧图像,手动选取图像中的6个roi区域并分别确定各区域的坐标数据,用于进行s2中的流程规范性自动检测,6个roi区域具体包括:
a1:出水口水流的位置区域,选定区域宽度大于出水口水流宽度;
a2:位于整个水流的中下部分的在水流中冲手的区域;
a3:水流落入排水口的位置区域,选定区域宽度为水流宽度的4倍;
a4:洗手液按压头区域;
a5:泡沫检测区域,选定区域包括洗手过程中双手的活动区域;
a6:洗手姿势判断区域,选定区域大于泡沫检测区域,用于判断洗手过程中左右手背搓洗情况。
进一步地,检测水龙头是否出水具体包括如下步骤:
(1)根据a1区域的坐标数据提取参考帧图像和待处理图像的a1区域;
(2)采用水流垂直边缘检测方法检测待处理图像中是否存在垂直边缘,若存在垂直边缘,对应的检测结果为水龙头出水,否则对应的检测结果为水龙头未出水;根据检测结果更新显示界面上的显示内容,当检测结果为水龙头出水时,对当前待处理图像继续进行s2中其他规范性检测;否则结束对当前待处理图像的规范性检测。
进一步地,当待处理图像对应的水龙头是否出水的检测结果为水龙头出水时,检测手是否正在水中冲洗及手在水中冲洗的时间,具体包括如下步骤:
(1)根据a2区域的坐标数据提取待处理图像的a2区域;
(2)对a2区域图像进行色彩增强,再对增强后的图像用肤色检测算法区分出a2区域二值图像中的手的部分和非手部分,其中,手的部分的像素值为1,非手部分的像素值为0;
(3)判断a2区域二值图像中手的部分的最小列是否处于第一列;若处于,则表示手处在水流落下的区域,记rflow1=1;否则,记rflow1=0;
(4)根据a3区域的坐标数据提取参考帧图像和待处理图像的a3区域,并采用水流垂直边缘检测方法检测a3区域图像中是否存在垂直边缘,若存在垂直边缘,则说明排水孔位置有水流垂直落下,记rflow2=1,否则,记rflow2=0;
(5)当rflow1=1且rflow2=0时,对应检测结果为手正在水中冲洗,记rwash=1;否则,检测结果为手未在水中冲洗,记rwash=0;根据检测结果更新显示界面上的显示内容;
(6)根据(5)中的检测结果rwash,计算并在显示界面显示手在水中冲洗的时间t′:
t′=t+rwash/fps
其中,t为当前待处理图像之前的视频中手在水中的累计时间,fps为摄像头每秒采集图像帧的数量。
进一步地,采用的水流垂直边缘检测方法包括:
(1)对参考帧图像和待处理图像的roi区域图像进行灰度化并做差分取绝对值,得到差分图像;
(2)对差分图像进行倾斜矫正;
(3)对倾斜矫正后的差分图像使用sobel算子进行垂直边缘检测及二值化处理,得到二值图像;
(4)统计二值图像中相邻2列的像素点像素值总和的最大值
(5)将e与阈值ⅰ进行比较,其中,阈值ⅰ为roi区域图像高度的70%至85%;若e大于阈值ⅰ,则表示存在垂直边缘,否则不存在垂直边缘。
进一步地,当待处理图像对应的水龙头是否出水的检测结果为水龙头出水时,检测是否采集了洗手液,具体包括如下步骤:
(1)根据a4区域的坐标数据提取待处理图像的a4区域;
(2)对a4区域图像进行色彩增强,再对增强后的图像用肤色检测算法区分出a4区域二值图像中的手的部分和非手部分,其中,手的部分的像素值为1,非手部分的像素值为0;
(3)采用下列公式计算a4区域二值图像中手的部分所占比例:
其中,psij表示a4区域二值图像中第i行j列的像素值,hs表示a4区域图像的高,ws表示a4区域图像的宽;
(4)比较ssoap与阈值ⅱ的大小,其中,阈值ⅱ为0.8:
①若ssoap>阈值ⅱ,则表示当前待处理图像中手处于a4区域;
进一步对先前各帧图像是否完成了洗手液采集进行具体判断:
若在当前待处理图像进行检测之前有连续n1帧图像的检测结果均为正在采集洗手液,其中n1为预设值,则记rsoap=1,对应的检测结果为已完成采集洗手液但手未离开;
若当前待处理图像的前一帧的检测结果为采集洗手液的动作未开始,则记rsoap=2,对应的检测结果为正在采集洗手液;
②若ssoap≤阈值ⅱ,则表示当前待处理图像中手不在a4区域;
进一步判断当前待处理图像检测前各帧图像的是否采集了洗手液的检测结果:
若当前待处理图像的前一帧的检测结果为已完成采集洗手液但手未离开,则记rsoap=3,对应的检测结果为完成洗手液采集且手已离开;
若当前待处理图像的前一帧的检测结果为采集洗手液的动作未开始,则记rsoap=4,对应的检测结果为采集洗手液的动作未开始;
(5)根据检测结果更新显示界面上的显示内容。
进一步地,当当前待处理图像对应的是否采集了洗手液的检测结果为rsoap=3时,检测手在搓洗过程中是否产生了足够的泡沫,具体包括如下步骤:
根据手在水中冲洗的时间,判断冲手时间是否足够;
若足够,则继续进行检测;
若不足,则保持显示界面上的检测结果不变并结束对当前待处理图像的检测;
(1)根据a5区域的坐标数据提取待处理图像的a5区域;
(2)根据由场景的光照条件预设的阈值ⅲ区分待处理图像的灰度直方图中的泡沫部分和非泡沫部分,将a5区域图像转化为二值图像后,泡沫部分的像素值为1,非泡沫部分的像素值为0;
(3)采用下列公式计算a5区域二值图像中泡沫部分所占比例:
其中,pfij表示a5区域二值图像中第i行j列的像素值,hf表示a5区域图像的高,wf表示a5区域图像的宽;
(4)比较sfoam与预设的阈值ⅳ的大小,并将比较结果保存:
①若sfoam>阈值ⅳ,则表示当前待处理图像中泡沫量达到要求;
②若sfoam≤阈值ⅳ,则表示当前待处理图像中泡沫量未达到要求;
(5)统计当前待处理图像及之前的n2帧图像对应的是否产生了足够的泡沫检测结果,其中n2为预设值;若统计的所有检测结果中泡沫量达到要求的数量大于阈值ⅴ,对应的检测结果为产生了足够的泡沫,否则检测结果为未产生足够的泡沫;其中,阈值ⅴ的取值为7~15;
(6)根据检测结果更新显示界面上的显示内容。
进一步地,当待处理图像对应的是否使用了洗手液的检测结果为rsoap=3时,检测双手在搓洗过程中是否完成相互搓洗的动作,具体包括如下步骤:
根据手在水中冲洗的时间,判断冲手时间是否足够;
若足够,则继续进行检测;
若不足,则保持显示界面上的检测结果不变并结束对当前待处理图像的检测;
(1)根据a6区域的坐标数据提取待处理图像的a6区域;
(2)对a6区域图像进行色彩增强,再对增强后的图像用肤色检测算法区分出a6区域二值图像中的手的部分和非手部分,并统计手的部分的位置坐标,其中,手的部分的像素值为1,非手部分的像素值为0;
(3)统计a6区域二值图像中并拢的双手总长:
①将二值图像第一列像素点的像素值置零;
②统计二值图像中像素值为0的每一个连通区域的面积和位置坐标,连通区域的面积为连通区域内的像素点个数;
③步骤②中的连通区域中面积最大的区域为b1,面积第二大的区域为b2;
④采用下列公式计算并拢的双手总长:
l=minxb2-minxhand
其中,xb2表示b2的横坐标,xhand表示图像中手的部分的横坐标,l表示图像中双手相对靠前的指尖与相对靠后的手腕之间的距离;
(4)采用下列公式计算当前待处理图像与前一帧图像的l的差的绝对值:
dln=|ln-1-ln|
其中,dln表示两帧图像的l的差的绝对值,ln表示第n帧图像的并拢的双手总长,ln-1表示第n-1帧图像的并拢的双手总长;
(5)统计包括当前待处理图像的连续的5帧图像内双手相对运动的总路程
其中,阈值ⅵ为预设值,用于区分连续5帧图像内双手进行了相互搓洗与双手并拢没有相互搓洗两种情况;
(6)统计当前待处理图像及之前的n3帧图像对应的rmove=1的数量,其中n3为预设值;若数量超过预设的阈值ⅶ,对应的检测结果为互相搓洗动作已完成,否则检测结果为互相搓洗动作未完成;
(7)根据检测结果更新显示界面上的显示内容,其中,若检测结果为互相搓洗动作已完成,对当前待处理图像继续进行后续其他规范性检测;否则结束对当前待处理图像的规范性检测。
进一步地,检测双手在搓洗过程中是否完成十指交叉相互搓洗的动作,具体包括如下步骤:
若当前待处理图像的前一帧图像的双手在搓洗过程中是否完成十指交叉相互搓洗的动作的检测结果为已经完成十指交叉相互搓洗的动作,则结束检测,否则继续判断当前待处理图像是否有双手在搓洗过程中有相互搓洗的动作,若rmove=1则继续检测,否则结束检测:
(1)提取待处理图像的a6区域;将a6区域图像二值化,得到得到泡沫检测二值图像ffoam和手部检测二值图像fhand;根据公式fcross=fhand∪ffoam,得到泡沫补偿后的手部检测二值图像fcross(填补因泡沫覆盖无法检测出的手部);
(2)手指数量检测:
①将手部检测二值图像fcross中像素值为0的连通区域中面积第二大的区域b2中横坐标值最小的像素点所在列至fcross最右侧一列区间内所有像素点的像素值置零,得到图像f′cross;
②计算图像f′cross的重心的横坐标xg;
③用半径大小为0.08l的圆盘型结构元素对f′cross图像进行ferode=f'crossθb运算,其中b为结构元素;然后用同样的结构元素对ferode做
④对二值图像fopen的像素值取反得到f′open,将f′nepo中第xg列及其右侧的所有列全部置零,得到fdl;
⑤根据公式ffinger=f′cross∩fdl得到ffinger;
⑥统计ffinger中连通域数量即为手指数量nfinger;
(3)比较手指数量nfinger与4大小:
①若nfinger≥4,表示在当前待处理图像中双手在搓洗过程中十指处于交叉状态,记rcross=1;
②若nfinger<4,表示在当前待处理图像中双手在搓洗过程中十指未处于交叉状态,记rcross=0;
(4)统计当前待处理图像及之前的n4帧图像对应的rmove=1的数量是否大于预设的阈值ⅷ,其中n4为预设值;若大于阈值ⅷ,对应的检测结果为已经完成十指交叉相互搓洗的动作;否则检测结果为未完成十指交叉相互搓洗的动作;
(5)根据检测结果更新显示界面上的显示内容。
进一步地,检测双手在搓洗过程中是否完成搓洗左右手背的动作,具体包括如下步骤:
若当前待处理图像的前一帧图像的双手在搓洗过程中是否完成搓洗左右手背的动作的检测结果为已完成左手背搓洗且已完成右手背搓洗,则结束检测,否则继续判断当前待处理图像是否有相互搓洗的动作,若rmove=1则继续检测,否则结束检测:
(1)提取待处理图像的a6区域;将a6区域图像二值化,得到得到泡沫检测二值图像ffoam和手部检测二值图像fhand;根据公式fcross=fhand∪ffoam,得到泡沫补偿后的手部检测二值图像fcross(填补因泡沫覆盖无法检测出的手部);
(2)对fcross用半径大小为5的圆盘型结构元素进行
(3)统计f′close中的各连通域的面积和位置坐标,并保存n帧内的连通域信息;
(4)比较当前待处理图像的连通域数量与2的关系:
若大于等于2,则进入(5);
若小于2,则表示手没有处于手背搓洗状态,保持所有结果不变,对应检测结果为否;
(5)比较当前待处理图像的所有连通域中面积第二大的连通域的面积sarea2与预设的阈值ⅸ的关系,其中,阈值ⅸ为手部检测二值图像fcross中像素值为0的连通区域中面积第二大的区域b2的面积的1.5倍:
若sarea2>阈值ⅸ,则进入(6);
若sarea2≤阈值ⅸ,则判断手没有处于“手背搓洗”状态,保持所有结果不变,对应检测结果为否;
(6)比较当前待处理图像和前n帧图像的所有的sarea2的最大值与最小值的差ds与预设的阈值ⅹ的大小:
若ds>阈值ⅹ,则表示此时正在搓洗手背,进入(7)进行检测搓洗的是左手背还是右手背;
若ds≤阈值ⅹ,则判断手没有处于“手背搓洗”状态,保持所有结果不变,对应检测结果为否;
(7)统计(5)中第二大的连通域内像素点中纵坐标最小值minyarea2,并保存n5帧内的minyarea2,其中,n5为预设值;
(8)计算前一帧图像的上一帧图像与当前待处理图像对应的minyarea2的差值dy,判断dy与预设的阈值ⅺ的关系:
若dy>阈值ⅺ,表示当前待处理图像中左手在大幅度上下移动,即正在搓洗右手背,记rright=1;
若dy≤阈值ⅺ,表示左手基本没有在进行动作,即右手在搓洗左手背,记rleft=1;
(9)统计rleft=1和rright=1的数量:
若rleft=1的数量大于预设的阈值ⅻ,则对应的检测结果为已完成左手背搓洗,否则对应的检测结果为未完成左手背搓洗;
若rright=1的数量大于预设的阈值ⅻ,则对应的检测结果为已完成右手背搓洗,否则对应的检测结果为未完成右手背搓洗;
(10)根据检测结果更新显示界面上的显示内容。
较现有技术相比,本发明具有以下优点:
1、本发明提供的基于计算机视觉的洗手及消毒流程规范性自动检测方法,从计算机视觉的角度模拟人的监督方式对洗手流程进行监督,对硬件要求很低,不需要昂贵的检测仪器和传感器,只需要一台摄像机和计算机。
2、本发明提供的基于计算机视觉的洗手及消毒流程规范性自动检测方法,对各种结果的显示基本能够达到实时,便于监督。
3、本发明提供的基于计算机视觉的洗手及消毒流程规范性自动检测方法,不需要被监督人多余的配合操作,如洗手前提前涂抹荧光物质,洗完放到检测仪下检测;实际应用的适应性很高。
综上,应用本发明的技术方案利用计算机视觉的方法对洗手及消毒过程中的各个流程依次进行检测并将各步骤的检测结果实时的反映到显示界面上,从而起到实时监督洗手过程规范性的作用。因此,本发明的技术方案解决了现有技术中的微生物学采样检测洗手是否合格的方法成本高周期长结果易受干扰的技术问题。
基于上述理由本发明可在洗手规范性检测等领域广泛推广。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所述基于计算机视觉的洗手及消毒流程规范性自动检测方法的流程图。
图2为摄像头拍摄的水池区域的图像。
图3为选择了6个roi区域的图像。
图4为检测双手在搓洗过程中是否完成相互搓洗的动作时a6区域的二值图像。
图5为检测双手在搓洗过程中是否完成搓洗左右手背的动作时a6区域的二值图像。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
如图1-2所示,本发明提供了一种基于计算机视觉的洗手及消毒流程规范性自动检测方法,包括如下步骤:
s1:将摄像头固定于能够保证完整拍摄到水池区域的位置,水池区域内包括水龙头出水口、排水口和洗手液按压头且摄像头能拍摄到由出水口至排水口的完整水流;
s2:将摄像头拍摄的视频中每隔4帧取一帧图像作为待处理图像进行流程规范性自动检测:
(1)流动水洗手规范性检测:
①检测水龙头是否出水;
②检测手是否正在水中冲洗及手在水中冲洗的时间;
(2)洗手液使用规范性检测:
①检测是否采集了洗手液;
②检测手在搓洗过程中是否产生了足够的泡沫;
(3)洗手动作规范性检测:
①检测双手在搓洗过程中是否有相互搓洗的动作;
②检测双手在搓洗过程中是否有十指交叉相互搓洗的动作;
③检测双手在搓洗过程中是否有搓洗左右手背的动作;
s3:将s2中的各项规范性检测结果显示在显示界面。
进一步地,s1中,固定好摄像头后,将摄像头拍摄的视频中的第一帧图像作为参考帧图像,参考帧图像中没有人且水龙头关闭;
如图3所示,打开水龙头,截取摄像头拍摄的视频中的一帧图像,手动选取图像中的6个roi区域并分别确定各区域的坐标数据,用于进行s2中的流程规范性自动检测,6个roi区域具体包括:
a1:出水口水流的位置区域,选定区域宽度大于出水口水流宽度;
a2:位于整个水流的中下部分的在水流中冲手的区域;
a3:水流落入排水口的位置区域,选定区域宽度为水流宽度的4倍;
a4:洗手液按压头区域;
a5:泡沫检测区域,选定区域包括洗手过程中双手的活动区域;
a6:洗手姿势判断区域,选定区域大于泡沫检测区域,用于判断洗手过程中左右手背搓洗情况。
进一步地,检测水龙头是否出水具体包括如下步骤:
(1)根据a1区域的坐标数据提取参考帧图像和待处理图像的a1区域;
(2)采用水流垂直边缘检测方法检测待处理图像中是否存在垂直边缘,若存在垂直边缘,对应的检测结果为水龙头出水,否则对应的检测结果为水龙头未出水;根据检测结果更新显示界面上的显示内容,当检测结果为水龙头出水时,对当前待处理图像继续进行s2中其他规范性检测;否则结束对当前待处理图像的规范性检测。
进一步地,当待处理图像对应的水龙头是否出水的检测结果为水龙头出水时,检测检测手是否正在水中冲洗及手在水中冲洗的时间,具体包括如下步骤:
(1)根据a2区域的坐标数据提取待处理图像的a2区域;
(2)对a2区域图像进行色彩增强,再对增强后的图像用肤色检测算法区分出a2区域二值图像中的手的部分和非手部分,其中,手的部分的像素值为1,非手部分的像素值为0;
(3)判断a2区域二值图像中手的部分的最小列是否处于第一列;若处于,则表示手处在水流落下的区域,记rflow1=1;否则,记rflow1=0;
(4)根据a3区域的坐标数据提取参考帧图像和待处理图像的a3区域,并采用水流垂直边缘检测方法检测a3区域图像中是否存在垂直边缘,若存在垂直边缘,则说明排水孔位置有水流垂直落下,记rflow2=1,否则,记rflow2=0;
(5)当rflow1=1且rflow2=0时,对应检测结果为手正在水中冲洗,记rwash=1;否则,检测结果为手未在水中冲洗,记rwash=0;根据检测结果更新显示界面上的显示内容;
(6)根据(5)中的检测结果rwash,计算并在显示界面显示手在水中冲洗的时间t′:
t′=t+rwash/fps
其中,t为当前待处理图像之前的视频中手在水中的累计时间,fps为摄像头每秒采集图像帧的数量;
计算手在水中冲洗的时间t′时,假设视频第一帧图像的检测结果为rwash=1,fps为30,则t'=0+1/30=1/30,显示界面上手在水中冲洗的时间更新为1/30s;第二帧图像的检测结果为rwash=0,则t'=1/30+0/30=1/30;第三帧图像的检测结果为rwash=1,则t'=1/30+1/30=2/30,显示界面上手在水中冲洗的时间更新为2/30s,以此类推……。
进一步地,采用的水流垂直边缘检测方法包括:
(1)对参考帧图像和待处理图像的roi区域图像进行灰度化并做差分取绝对值,得到差分图像;
(2)对差分图像进行倾斜矫正;
(3)对倾斜矫正后的差分图像使用sobel算子进行垂直边缘检测及二值化处理,得到二值图像;
(4)统计二值图像中相邻2列的像素点像素值总和的最大值
(5)将e与阈值ⅰ进行比较,其中,阈值ⅰ为roi区域图像高度的70%至85%,具体的:在检测水龙头是否出水时,阈值ⅰ为a1区域图像高度的70%至85%;在检测手是否正在水中冲洗时,阈值ⅰ为a2区域图像高度的70%至85%;
若e大于阈值ⅰ,则表示存在垂直边缘,否则不存在垂直边缘。
进一步地,当待处理图像对应的水龙头是否出水的检测结果为水龙头出水时,检测是否采集了洗手液,具体包括如下步骤:
(1)根据a4区域的坐标数据提取待处理图像的a4区域;
(2)对a4区域图像进行色彩增强,再对增强后的图像用肤色检测算法区分出a4区域二值图像中的手的部分和非手部分,其中,手的部分的像素值为1,非手部分的像素值为0;
(3)采用下列公式计算a4区域二值图像中手的部分所占比例:
其中,psij表示a4区域二值图像中第i行j列的像素值,hs表示a4区域图像的高,ws表示a4区域图像的宽;
(4)比较ssoap与阈值ⅱ的大小,其中,阈值ⅱ为0.8:
①若ssoap>阈值ⅱ,则表示当前待处理图像中手处于a4区域;
进一步对先前各帧图像是否完成了洗手液采集进行具体判断:
若在当前待处理图像进行检测之前有连续n1帧图像的检测结果均为正在采集洗手液,其中n1为预设值,则记rsoap=1,对应的检测结果为已完成采集洗手液但手未离开;
若当前待处理图像的前一帧的检测结果为采集洗手液的动作未开始,则记rsoap=2,对应的检测结果为正在采集洗手液;
②若ssoap≤阈值ⅱ,则表示当前待处理图像中手不在a4区域;
进一步判断当前待处理图像检测前各帧图像的是否采集了洗手液的检测结果:
若当前待处理图像的前一帧的检测结果为已完成采集洗手液但手未离开,则记rsoap=3,对应的检测结果为完成洗手液采集且手已离开;
若当前待处理图像的前一帧的检测结果为采集洗手液的动作未开始,则记rsoap=4,对应的检测结果为采集洗手液的动作未开始;
(5)根据检测结果更新显示界面上的显示内容。
进一步地,当当前待处理图像对应的是否采集了洗手液的检测结果为rsoap=3时,检测手在搓洗过程中是否产生了足够的泡沫,具体包括如下步骤:
根据手在水中冲洗的时间,判断冲手时间是否足够;
若足够,则继续进行检测;
若不足,则保持显示界面上的检测结果不变并结束对当前待处理图像的检测;
(1)根据a5区域的坐标数据提取待处理图像的a5区域;
(2)根据由场景的光照条件预设的阈值ⅲ区分待处理图像的灰度直方图中的泡沫部分和非泡沫部分,将a5区域图像转化为二值图像后,泡沫部分的像素值为1,非泡沫部分的像素值为0;
(3)采用下列公式计算a5区域二值图像中泡沫部分所占比例:
其中,pfij表示a5区域二值图像中第i行j列的像素值,hf表示a5区域图像的高,wf表示a5区域图像的宽;
(4)比较sfoam与预设的阈值ⅳ的大小,并将比较结果保存:
①若sfoam>阈值ⅳ,则表示当前待处理图像中泡沫量达到要求;
②若sfoam≤阈值ⅳ,则表示当前待处理图像中泡沫量未达到要求;
其中,用户根据实际应用中用户划定的a5区域面积大小预设阈值ⅳ的值;
(5)统计当前待处理图像及之前的n2帧图像对应的是否产生了足够的泡沫检测结果,其中n2为预设值;若统计的所有检测结果中泡沫量达到要求的数量大于阈值ⅴ,对应的检测结果为产生了足够的泡沫,否则检测结果为未产生足够的泡沫;其中,阈值ⅴ的取值为7~15;
(6)根据检测结果更新显示界面上的显示内容。
进一步地,当待处理图像对应的是否使用了洗手液的检测结果为rsoap=3时,检测双手在搓洗过程中是否完成相互搓洗的动作,具体包括如下步骤:
根据手在水中冲洗的时间,判断冲手时间是否足够;
若足够,则继续进行检测;
若不足,则保持显示界面上的检测结果不变并结束对当前待处理图像的检测;
(1)根据a6区域的坐标数据提取待处理图像的a6区域;
(2)如图4所示,对a6区域图像进行色彩增强,再对增强后的图像用肤色检测算法区分出a6区域二值图像中的手的部分和非手部分,并统计手的部分的位置坐标,其中,手的部分的像素值为1,非手部分的像素值为0;
(3)统计a6区域二值图像中并拢的双手总长:
①将二值图像第一列像素点的像素值置零;
②统计二值图像中像素值为0的每一个连通区域的面积和位置坐标,连通区域的面积为连通区域内的像素点个数;
③步骤②中的连通区域中面积最大的区域为b1,面积第二大的区域为b2;
④采用下列公式计算并拢的双手总长:
l=minxb2-minxhand
其中,xb2表示b2的横坐标,xhand表示图像中手的部分的横坐标,l表示图像中双手相对靠前的指尖与相对靠后的手腕之间的距离;
(4)采用下列公式计算当前待处理图像与前一帧图像的l的差的绝对值:
dln=|ln-1-ln|
其中,dln表示两帧图像的l的差的绝对值,ln表示第n帧图像的并拢的双手总长,ln-1表示第n-1帧图像的并拢的双手总长;
(5)统计包括当前待处理图像的连续的5帧图像内双手相对运动的总路程
其中,阈值ⅵ为预设值,用于区分连续5帧图像内双手进行了相互搓洗与双手并拢没有相互搓洗两种情况;
(6)统计当前待处理图像及之前的n3帧图像对应的rmove=1的数量,其中n3为预设值;若数量超过预设的阈值ⅶ,对应的检测结果为互相搓洗动作已完成,否则检测结果为互相搓洗动作未完成;
其中,阈值ⅶ根据需要预设,例如用户要求相互搓洗的时间大于等于5s,fps为30帧/秒,则阈值ⅶ=5/5*30=30,式中第一个5为用户要求相互搓洗的时间5s,第二个5为采用该方法进行检测时每5帧采集一张图片;
(7)根据检测结果更新显示界面上的显示内容,其中,若检测结果为互相搓洗动作已完成,对当前待处理图像继续进行后续其他规范性检测;否则结束对当前待处理图像的规范性检测。
进一步地,检测双手在搓洗过程中是否完成十指交叉相互搓洗的动作,具体包括如下步骤:
若当前待处理图像的前一帧图像的双手在搓洗过程中是否完成十指交叉相互搓洗的动作的检测结果为已经完成十指交叉相互搓洗的动作,则结束检测,否则继续判断当前待处理图像是否有双手在搓洗过程中有相互搓洗的动作,若rmove=1则继续检测,否则结束检测:
(1)提取待处理图像的a6区域;将a6区域图像二值化,得到得到泡沫检测二值图像ffoam和手部检测二值图像fhand;根据公式fcross=fhand∪ffoam,得到泡沫补偿后的手部检测二值图像fcross(填补因泡沫覆盖无法检测出的手部);
(2)手指数量检测:
①将手部检测二值图像fcross中像素值为0的连通区域中面积第二大的区域b2中横坐标值最小的像素点所在列至fcross最右侧一列区间内所有像素点的像素值置零,得到图像f′cross;
②计算图像f′cross的重心的横坐标xg;
③用半径大小为0.08l的圆盘型结构元素对f′cross图像进行ferode=f'crossθb运算,其中b为结构元素;然后用同样的结构元素对ferode做
④对二值图像fopen的像素值取反得到f′open,将f′nepo中第xg列及其右侧的所有列全部置零,得到fdl;
⑤根据公式ffinger=f′cross∩fdl得到ffinger;
⑥统计ffinger中连通域数量即为手指数量nfinger;
(3)比较手指数量nfinger与4大小:
①若nfinger≥4,表示在当前待处理图像中双手在搓洗过程中十指处于交叉状态,记rcross=1;
②若nfinger<4,表示在当前待处理图像中双手在搓洗过程中十指未处于交叉状态,记rcross=0;
(4)统计当前待处理图像及之前的n4帧图像对应的rmove=1的数量是否大于预设的阈值ⅷ,其中n4为预设值;若大于阈值ⅷ,对应的检测结果为已经完成十指交叉相互搓洗的动作;否则检测结果为未完成十指交叉相互搓洗的动作;
其中,阈值ⅷ根据需要预设,例如用户要求相互搓洗的时间大于等于5s,fps为30帧/秒,则阈值ⅷ=5/5*30=30,式中第一个5为用户要求相互搓洗的时间5s,第二个5为采用该方法进行检测时每5帧采集一张图片;
(5)根据检测结果更新显示界面上的显示内容。
进一步地,检测双手在搓洗过程中是否完成搓洗左右手背的动作,具体包括如下步骤:
若当前待处理图像的前一帧图像的双手在搓洗过程中是否完成搓洗左右手背的动作的检测结果为已完成左手背搓洗且已完成右手背搓洗,则结束检测,否则继续判断当前待处理图像是否有相互搓洗的动作,若rmove=1则继续检测,否则结束检测:
(1)提取待处理图像的a6区域;将a6区域图像二值化,得到得到泡沫检测二值图像ffoam和手部检测二值图像fhand;根据公式fcross=fhand∪ffoam,得到泡沫补偿后的手部检测二值图像fcross(填补因泡沫覆盖无法检测出的手部);
(2)对fcross用半径大小为5的圆盘型结构元素进行
(3)统计f′close中的各连通域的面积和位置坐标,并保存n帧内的连通域信息;
(4)比较当前待处理图像的连通域数量与2的关系:
若大于等于2,则进入(5);
若小于2,则表示手没有处于手背搓洗状态,保持所有结果不变,对应检测结果为否;
(5)比较当前待处理图像的所有连通域中面积第二大的连通域的面积sarea2与预设的阈值ⅸ的关系,其中,阈值ⅸ为手部检测二值图像fcross中像素值为0的连通区域中面积第二大的区域b2的面积的1.5倍:
若sarea2>阈值ⅸ,则进入(6);
若sarea2≤阈值ⅸ,则判断手没有处于“手背搓洗”状态,保持所有结果不变,对应检测结果为否;
(6)比较当前待处理图像和前n帧图像的所有的sarea2的最大值与最小值的差ds与预设的阈值ⅹ的大小:
若ds>阈值ⅹ,则表示此时正在搓洗手背,进入(7)进行检测搓洗的是左手背还是右手背;
若ds≤阈值ⅹ,则判断手没有处于“手背搓洗”状态,保持所有结果不变,对应检测结果为否;
其中,阈值ⅹ根据需要预设,略小于实际拍摄情况中在手背搓洗的时候sarea2的最大值与最小值的差;
(7)统计(5)中第二大的连通域内像素点中纵坐标最小值minyarea2,即图5中的y,并保存n5帧内的minyarea2,其中,n5为预设值;
(8)计算前一帧图像的上一帧图像与当前待处理图像对应的minyarea2的差值dy,判断dy与预设的阈值ⅺ的关系:
若dy>阈值ⅺ,表示当前待处理图像中左手在大幅度上下移动,即正在搓洗右手背,记rright=1;
若dy≤阈值ⅺ,表示左手基本没有在进行动作,即右手在搓洗左手背,记rleft=1;
其中,阈值ⅺ根据需要预设,根据实际的拍摄场景,统计在拍摄时搓洗单手手背及在做其他动作时dy的值的变化范围,阈值ⅺ的取值大于在做其他动作时的dy值;
(9)统计rleft=1和rright=1的数量:
若rleft=1的数量大于预设的阈值ⅻ,则对应的检测结果为已完成左手背搓洗,否则对应的检测结果为未完成左手背搓洗;
若rright=1的数量大于预设的阈值ⅻ,则对应的检测结果为已完成右手背搓洗,否则对应的检测结果为未完成右手背搓洗;
其中,阈值ⅻ根据需要预设,例如用户要求相互搓洗的时间大于等于5s,fps为30帧/秒,则阈值ⅻ=5/5*30=30,式中第一个5为用户要求相互搓洗的时间5s,第二个5为采用该方法进行检测时每5帧采集一张图片;
(10)根据检测结果更新显示界面上的显示内容。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。