本发明涉及一种基于人脸识别及图像处理的注意力评估方法。
背景技术:
目前在线教育在国内外应用都已经变得越来越广泛,各种各样的学习网站也是层出不穷,学员可以随时访问网站进行远程学习,具有实时性高等优点。但是如何有效的检验学员的学习效果和评估学习绩效成为一个值得探讨的问题。目前常用的手段主要是通过在线作业以及在线考试来实现,但这种手段注重学习结果却忽视了学习过程的评估。学员在学习过程中的分神,开小差情况很难被现有的检测手段所发现从而降低了评估的准确性。
技术实现要素:
为了克服目前在线教育无法监测学习过程中学员学习注意力是否集中的技术问题,本发明提供一种能够实现在线学习效率评估,提高在线学习绩效评估的准确性的基于人脸识别及图像处理的注意力评估方法。
为了实现上述技术目的,本发明的技术方案是,
一种基于人脸识别及图像处理的注意力评估方法,包含如下步骤:
a)首先使用肤色检测规则对图像进行处理,过滤掉非肤色区域;
b)对图像进行腐蚀和膨胀操作,去除掉图像中的噪声区域,并过滤掉过小的肤色区域,将处于图像相对中心位置的肤色区域定义为人脸区域;
c)对人脸区域进行二值化处理,从而将肤色区域转变为白色,五官区域转变为黑色;
d)接着将人脸区域分为上下两个部分,分别用来获取双眼的位置和嘴部的位置;
e)根据获得的双眼和嘴部的位置,进一步使用计算图像梯度的方法获得鼻子的位置;
f)根据获得的眼睛、鼻子和嘴巴坐标位置,计算出脸部和头部的偏转系数,根据这两个偏转系数计算最终的集中度指标判断学习者状态:集中或者不集中。
所述的方法,所述的步骤a)中,通过RGB,YCbCr以及HSV三个颜色空间的相应规则进行像素筛选以得到肤色区域,筛选公式如下:
(R>95)AND(G>40)AND(B>20)AND(max{R,G,B}-min{R,G,B}>15)AND(|R-G|>15)AND(R>G)AND(R>B)
上式中的R、G、B分别代表红、绿、蓝三个颜色通道;
Cr≤1.5862×Cb+20AND Cr≥0.3448×Cb+76.2069AND Cr≥-4.5652×Cb+234.5652AND Cr≤-1.15×Cb+301.75AND Cr≤-2.2857×Cb+432.85
上式中的Cb、Cr分别代表蓝色色度分量和红色色度分量;
H<25OR H>230
上式中的H为色调值。
所述的方法,所述的步骤b)中,过滤掉过小的肤色区域,是将占图像总像素比例不大于0.1的肤色区域过滤掉。
所述的方法,所述的步骤c)中,进行二值化处理的步骤为,将图像的每一个像素的灰度值与预设的阈值作比较,如果灰度值大于阈值则转化为白色,小于或等于则转化为黑色。
上式中x、y分别表示的是图像中某一个像素点的横、纵坐标,src(x,y)表示的是该像素点当前的灰度值,thresh表示的是阈值,dst(x,y)表示的是该像素点将要设置的灰度值。
所述的方法,所述的步骤d)中,将人脸区域分为上下两个部分,是以人脸区域的高度为H,上半部分的高度范围是从H*0.102到H*0.488,下半部分的高度范围是从H*0.530到H*0.909。
所述的方法,所述的步骤d)中,获取双眼位置的步骤为,首先对上半部分人脸区域进行逐行扫描,如果遇到黑色像素组成的区域,则计算该区域的面积大小并记录下该区域的位置,待扫描完毕之后,对已经获得的区域进行过滤,这些区域需要满足如下条件:
1)区域的像素个数与上半部分人脸区域像素个数的比值为0.0032到0.167之间;
2)区域的高度与整个图像区域的高度的比值需要在0.64以下;
3)区域的宽度与整个图像区域的宽度的比值需要在0.5以下;
最终,最符合条件的两个区域会被认定为双眼区域。
所述的方法,所述的步骤d)中,获取嘴部位置的步骤为,首先对下半部分人脸区域进行逐行扫描,如果遇到黑色像素组成的区域,则计算该区域的面积大小并记录下该区域的位置,待扫描完毕之后,对已经获得的区域进行过滤,这些区域需要满足如下条件:
1)区域的高度与下半部分人脸区域高度的比值要在0.092以下;
2)区域的宽度与下半部分人脸区域宽度的比值要在0.33到0.72之间。
最终,该区域内相对最长的一个区域将被认定为嘴部,同时该区域的中心位置坐标被认定为嘴部坐标。
所述的方法,所述的步骤e)中,获取鼻子坐标的步骤为,首先依据已经获取到的双眼和嘴部的位置,以双眼和嘴部所围成的区域为界,从原始的RGB彩色图像中提取出一块矩形区域作为用来进一步处理的区域,将该区域转换为灰度图片,然后计算这个区域内每一个像素的水平和垂直方向的梯度,方法为计算改坐标点的灰度值在x和y两个方向上的偏导数,公式如下:
上式中x、y分别表示该像素点的横纵坐标;
接着根据水平和垂直方向的梯度的偏导数计算梯度的幅度,公式如下:
上式中x、y分别表示该像素点的横纵坐标;
接下来找出所有的像素中梯度幅度的最大值Gmax,然后对该区域内的像素点做一个过滤:
1)梯度幅度大于或等于Gmax/2;
2)灰度值小于90;
过滤掉不符合要求的像素点,得到鼻孔的像素点,再计算这些像素点的平均中心位置,将中心位置认为是鼻子的中心位置。
所述的方法,所述的步骤e)中,以双眼和嘴部所围成的区域为界,从原始的RGB彩色图像中提取出一块矩形区域作为用来进一步处理的区域,是将矩形区域的左上顶点的横坐标设为为左眼横坐标与嘴部横坐标的较小值,纵坐标为左眼纵坐标与右眼纵坐标的较小值,矩形区域右下顶点的横坐标为右眼横坐标与嘴部横坐标的较大值,纵坐标为嘴部的纵坐标。
所述的方法,所述的步骤f)的具体步骤如下:
1)根据双眼的位置计算出双眼之间连线的中心E,将E与嘴部的中心点M相连,然后计算EM这条直线的偏转角度,公式如下:
OH=90-tan-1K(EM)
上式中,K(EM)表示的是双眼之间连线的中心E与嘴部的中心点M相连的直线的斜率;
2)接下来先计算鼻子的中心点N到脸部的垂直中线的距离NC,然后计算NC与脸部区域宽度的比值,公式如下:
上式中NC表示的是鼻子的中心点N到脸部的垂直中线的距离NC,W表示的是抽取出的脸部图片的宽度;
3)然后将求得的OH与OF两个系数代入公式计算集中度指标,公式如下:
Dis=1.286*OH+1.048*OF-0.0963
上式中,OH表示的计算出的头部偏转系数,OF表示的是计算出的脸部偏转系数;
将求得的集中度指标Dis与一个阈值0.3203相比较,如果Dis大于改值则认为是非集中状态,否则是集中状态。
本发明的技术效果在于:
1.本发明将人脸识别技术与远程学习监控相结合,从摄像头获取直观的图像信息并进行图像分析,监控过程贯穿在学习者的学习过程中,具有很强的抗干扰性和反欺骗性;
2.本发明所使用的监控方法,不仅可以用于远程学习监控,还可以用于其他场合比如在线考试监考或者安全驾驶监控,具有较好的通用性;
3.本发明的软件层面使用的是免费开源图形库OpenCV,硬件层面使用的是简单USB摄像头,因此具有良好的经济性,可以很方便地进行推广。
附图说明
图1是本发明的流程示意图。
图2是肤色检测后的结果。
图3是抽取出来的面部图像。
图4是对图像进行二值化后的结果。
图5是检测眼部坐标的结果。
图6是检测嘴部坐标的结果。
图7是检测鼻孔坐标的结果。
图8是计算头部和脸部偏移系数的示意图。
图9是最终的检测结果示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,本实施例包括如下步骤:
步骤1:首先使用肤色检测规则对图像进行处理,过滤掉非肤色区域;通过RGB,YCbCr以及HSV三个颜色空间的相应规则进行像素筛选以得到图片中的肤色区域。其筛选公式如下:
(R>95)AND(G>40)AND(B>20)AND(max{R,G,B}-min{R,G,B}>15)AND(|R-G|>15)AND(R>G)AND(R>B)
上式中的R、G、B分别代表红、绿、蓝三个颜色通道;
Cr≤1.5862×Cb+20AND Cr≥0.3448×Cb+76.2069AND Cr≥-4.5652×Cb+234.5652AND Cr≤-1.15×Cb+301.75AND Cr≤-2.2857×Cb+432.85
上式中的Cb、Cr分别代表蓝色色度分量和红色色度分量;
H<25OR H>230
上式中的H为色调值。
肤色检测的结果如图2所示。
步骤2:对图像进行腐蚀和膨胀操作,去除掉图像中的噪声区域。并过滤掉一些过小的肤色区域,即将占图像总像素比例不大于0.1的肤色区域过滤掉。将处于屏幕相对中心位置的肤色区域定义为人脸区域;步骤3:对面部图像进行二值化处理,从而将肤色区域转变为白色,五官区域转变为黑色;具体过程是将图像的每一个像素的灰度值与一个阈值作比较。如果灰度值大于阈值则转化为白色,小于或等于则转化为黑色。二值化的效果如图4所示:
步骤4:接着将面部图像分为上下两个部分,分别用来获取双眼的位置和嘴部的位置;本步骤中,使用经过试验验证的高度范围进行上下两个部分的划分。假设面部的高度为H,上半部分的高度范围是从H*0.102到H*0.488。下半部分的高度范围是从H*0.530到H*0.909。
步骤5:在上半部分,系统会扫描出每一个由黑色像素组成且联通的对象,并根据他们的相对位置和尺寸大小筛选出最符合眼睛特征的对象;首先对上半部分人脸区域进行逐行扫描,如果遇到黑色像素组成的区域,则计算该区域的面积大小并记录下该区域的位置,待扫描完毕之后,对已经获得的区域进行过滤,这些区域需要满足如下条件:
a)区域的像素个数与上半部分人脸区域像素个数的比值为0.0032到0.167之间;
b)区域的高度与整个图像区域的高度的比值需要在0.64以下;
c)区域的宽度与整个图像区域的宽度的比值需要在0.5以下。
最终,最符合条件的两个区域会被认定为双眼区域,如图5所示。
步骤6:在下半部分,系统会扫描出每一个由黑色像素组成且联通的对象,并尝试定位一个相对最为细长并为条状的对象,其特征符合嘴唇的外型特征;首先对图像进行逐行扫描,如果遇到黑色像素组成的区域,则计算该区域的面积大小并记录下该区域的位置。待扫描完毕之后,对已经获得的区域进行过滤,这些区域需要满足如下条件:
a)区域的高度与下半部分人脸区域高度的比值要在0.092以下;
b)区域的宽度与下半部分人脸区域宽度的比值要在0.33到0.72之间。
最终,该区域内相对最长的一个区域将被认定为嘴部,同时该区域的中心位置坐标被认定为嘴部坐标,如图6所示。
步骤7:根据已获得的双眼和嘴部的位置,进一步使用计算图像梯度的方法获得鼻子的位置;首先依据已经获取到的双眼和嘴部的位置,以双眼和嘴部所围成的区域为界,从原始的RGB彩色图像中提取出一块矩形区域作为用来进一步处理的区域,其中该矩形区域是将矩形区域的左上顶点的横坐标设为为左眼横坐标与嘴部横坐标的较小值,纵坐标为左眼纵坐标与右眼纵坐标的较小值,矩形区域右下顶点的横坐标为右眼横坐标与嘴部横坐标的较大值,纵坐标为嘴部的纵坐标。
将该区域转换为灰度图片,然后计算这个区域内每一个像素的水平和垂直方向的梯度,方法为计算改坐标点的灰度值在x和y两个方向上的偏导数,公式如下:
上式中x、y分别表示该像素点的横纵坐标;
接着根据水平和垂直方向的梯度的偏导数计算梯度的幅度,公式如下:
上式中x、y分别表示该像素点的横纵坐标;
接下来找出所有的像素中梯度幅度的最大值Gmax,然后对该区域内的像素点做一个过滤:
a)梯度幅度大于或等于Gmax/2;
b)灰度值小于90。
这样可以得到大致的鼻孔的像素点,再计算这些像素点的平均中心位置,将中心位置认为是鼻子的中心位置,如图7所示。
步骤8:根据获得的眼睛、鼻子和嘴巴坐标位置,计算出脸部和头部的偏转系数,根据这两个偏转系数计算最终的集中度指标判断学习者状态:集中或者不集中;具体包括如下步骤:
a)根据双眼的位置计算出双眼之间连线的中心E,将E与嘴部的中心点M相连,然后计算EM这条直线的偏转角度,公式如下:
OH=90-tan-1K(EM)
b)接下来先计算鼻子的中心点N到脸部的垂直中线的距离NC,然后计算NC与脸部区域宽度的比值,公式如下:
c)然后将求得的OH与OF两个系数带入公式计算集中度指标,公式如下:
Dis=1.286*OH+1.048*OF-0.0963
d)将求得的集中度指标Dis与一个阈值0.3203相比较,如果Dis大于改值则认为是非集中状态,否则是集中状态,如图8所示。
为了进一步评估学习者在整个学习过程中的学习绩效,可以采用如下步骤:
步骤9:计算单位时间内学习者处于集中状态的比例,计算学习绩效指标;在学习者学习的过程中,每三秒从摄像头截取一张图片。最后计算学习者在学习时间内处于集中状态的图片的比例,并将该比例RC作为评判学习绩效的标准,最终结果如图9所示:
a)RC>=0.8:优;
b)0.6<=RC<0.8:良;
c)0.4<=RC<0.6:合格;
d)RC<0.4:不合格。