具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1所示为根据本发明的一较佳实施例提供的人脸检测方法的流程图。
如图1所示,根据本发明的人脸检测方法主要包括以下三个步骤:
步骤102,输入待检测的图像。步骤104,对输入的图像进行肤色检测。步骤106,根据上一步骤的检测结果进行人脸定位。
上述步骤104是本发明的核心步骤,下面参考图2来进一步说明根据本发明的人脸检测方法。
如图2所示,本实施例中的人脸检测方法可以包括以下步骤:
步骤202,对接收的RGB图像分别采用基于类高斯模型的第一肤色检测方法和基于肤色模型的第二肤色检测方法进行肤色检测,分别得到第一检测结果和第二检测结果;
步骤204,结合所述第一检测结果和所述第二检测结果得到肤色检测图像;
步骤206,对所述肤色检测图像进行人脸识别,检测出人脸。
在上述步骤202中,所述第一肤色检测方法主要包括以下步骤:
将所述RGB图像转换到YCbCr颜色空间,得到YCbCr图像,将所述YCbCr图像输入所述类高斯模型中进行计算处理,对所述类高斯模型输出的结果进行高斯平滑处理,将经过高斯平滑处理的图像进行阈值化处理,得到二值化的所述第一检测结果。
在上述步骤202中,所述第二肤色检测方法主要包括以下步骤:
将所述RGB图像转换到YCbCr颜色空间,得到YCbCr图像,将所述YCbCr图像输入所述肤色模型中进行计算处理,对所述肤色模型输出的结果进行阈值化处理,得到二值化的所述第二检测结果。
其中,在将所述YCbCr图像输入所述类高斯模型中进行计算处理之前,还可以包括:
将所述YCbCr图像进行对比度拉伸,基于拉伸后的YCbCr图像得到经过拉伸的RGB图像;将经过拉伸的RGB图像转换至YCbCr颜色空间。
经过对比度拉伸之后,使各像素的R和G分量取值范围更小,聚合度更大,例如原本处于0~255之间,经过对比度拉伸之后,取值变为0~180。
具体地,将所述YCbCr图像进行对比度拉伸的过程包括:
对每个像素的Y分量按照如下公式进行拉伸:
其中,min_y是所述YCbCr图像中最小的Y分量,max_y是所述YCbCr图像中最大的Y分量,Y'是拉伸后的Y分量;
计算所述Y'分量的平均值;
根据所述Y'分量的平均值对所述RGB图像中红色R分量和绿色G分量进行拉伸,得到所述经过拉伸的RGB图像。
具体地,根据所述Y'分量的平均值按照以下公式对所述RGB图像中红色R分量和绿色G分量进行拉伸:
R'=Ralpha
G'=Galpha
其中,alpha为变换幂指数,当所述平均值小于第一预设值时,所述变换幂指数取值为第一系数,当所述平均值大于等于所述第一预设值且小于等于第二预设值时,所述变换幂指数取值为第二系数,当所述平均值大于所述第二预设值时,所述变换幂指数取值为第三系数,所述第一预设值小于所述第二预设值。
因为只对Y分量进行了拉伸,因此在对R、G分量进行拉伸之后,通过将经过拉伸的RGB图像转换至YCbCr颜色空间的方式来使Cb、Cr分量也能够进行拉伸。
在上述步骤204中,所述结合所述第一检测结果和所述第二检测结果得到肤色检测图像的过程具体可以包括:
将所述第一检测结果与所述第二检测结果进行按位与处理,得到所述肤色检测图像。
下面结合图3进一步详细说明根据本发明的人脸检测方法。
步骤302,将输入的RGB图像转换到YCbCr颜色空间,得到YCbCr图像。
接下来分别采用两种人脸检测方式来对该YCbCr图像进行肤色检测处理。
在本实施例中,提供了以下两种人脸检测方式来对YCbCr图像进行肤色检测:
第一种:
步骤304,对YCbCr图像进行对比度拉升。
1)对各像素的Y分量进行拉伸,得到Y’分量;
首先,求取各像素对应的Y分量中的最小值和最大值min_y,max_y;
其次,对各像素的Y分量按如下方式进行拉伸,得到拉伸后的Y’分量;
2)计算所有像素的Y’分量的平均值mean_y;
3)根据Y’分量的平均值mean_y对红色R和绿色G分量按照幂指数方式进行拉伸,得到R’,G’分量,即:
R'=Ralpha
G'=Galpha
式中,alpha为变换幂指数,当mean_y小于一个小的阈值low_thresh(例如,64)时,其取值为1.4;当mean_y大于一个较大的阈值high_thresh(例如,192)时,其取值块可以为0.6;当mean_y处于较小阈值和较大阈值之间时,其取值可以为1;
4)根据R’分量,G’分量以及B分量得到拉伸后的RGB图。
最后,将拉伸后的RGB图像转换到YCbCr颜色空间。
步骤306,将经过拉伸的YCbCr图像输入类高斯模型中。
类高斯模型为:
P(Cb,Cr)=exp(-alpha·(x-M)TC-1(x-M))
在上式中,P(Cb,Cr)表示YCbCr图像中Cb和Cr分量的相似程度,取值范围为[0,1];alpha为系数,可调,不是固定的数值,因此在此我们称之为类高斯模型;x为Cb,Cr分量组成的2×1维数组,M为Cb,Cr分量样本均值组成的2×1维数组,C为(x-M)的自相关系数。
这样就得到各像素的相似度值。
步骤308,将类高斯模型输出的结果进行高斯平滑处理,经过高斯平滑处理的图像更均匀。
步骤310,将各像素的相似度值与一个固定阈值T进行比较,如果P(Cb,Cr)大于T,则将对应像素置为1,否则置为0,因此得到一个二值化图像。
第二种:
步骤312,将YCbCr图像输入至肤色模型进行肤色检测。
利用得到的Cb,Cr分量建立肤色模型:
P(Cb,Cr)=Cb'2·cov(Cb,Cb)+Cr'2·cov(Cr,Cr)+2·Cb'·Cr'·cov(Cb,Cr)
在上式中,P(Cb,Cr)表示YCbCr图像中Cb和Cr分量的相似程度,取值范围为[0,1];alpha为系数,可调;cb’为Cb分量减去某一固定经验值所得分量,cr’为Cr分量减去某一固定经验值所得分量,cov(Cb,cb)为cb分量的自相关系数,cov(Cr,cr)为cr分量的自相关系数,cov(Cb,cr)为cb和cr分量的互相关系数。
步骤314,对得到的P(cb,cr)进行阈值化处理,得到二值化图像。
将得到的相似度P(Cb,Cr)与一个固定阈值T进行比较,如果P(Cb,Cr)小于T,则对应像素置为1,否则置为0。
步骤316,对上述第一种人脸检测方式和第二种人脸检测方式得到的两个二值化图像进行按位与处理,得到准确的肤色检测图像。即将两个二值化图像进行互相修正,得到准确的肤色检测图像。
在得到准确的肤色检测图像之后,进行人脸检测。对肤色检测图像中的连通域画框,如果框的宽和高之比大于某个值例如0.25并且小于另一个值例如1.5,则连通域中具有一定的孔洞,认为该区域为人脸。
图4所示为根据本发明的较佳实施例提供的人脸检测装置的框图。
如图4所示,根据本发明的人脸检测装置400可以包括:
第一检测单元402,对接收的RGB图像采用基于类高斯模型的第一肤色检测方法进行肤色检测,得到第一检测结果;
第二检测单元404,对接收的RGB图像采用基于肤色模型的第二肤色检测方法进行肤色检测,得到第二检测结果;
处理单元406,连接至所述第一检测单元402和所述第二检测单元404,结合所述第一检测结果和所述第二检测结果得到肤色检测图像;
识别单元408,连接至所述处理单元406,对所述肤色检测图像进行人脸识别,检测出人脸。
其中,所述第一检测单元402可以包括:
第一转换子单元,用于将所述RGB图像转换到YCbCr颜色空间,得到YCbCr图像;
类高斯模型计算子单元,用于将所述YCbCr图像输入所述类高斯模型中进行计算处理,
高斯平滑处理子单元,用于对所述类高斯模型输出的结果进行高斯平滑处理;
第一二值化处理子单元,用于将经过高斯平滑处理的图像进行阈值化处理,得到二值化的所述第一检测结果。
所述第一检测单元还包括:
对比度拉伸子单元,在将所述YCbCr图像输入所述类高斯模型中进行计算处理之前,将所述YCbCr图像进行对比度拉伸,基于拉伸后的YCbCr图像得到经过拉伸的RGB图像,将经过拉伸的RGB图像转换至YCbCr颜色空间。
所述第二检测单元404包括:
第二转换子单元,用于将所述RGB图像转换到YCbCr颜色空间,得到YCbCr图像,
肤色模型计算子单元,用于将所述YCbCr图像输入所述肤色模型中进行计算处理,
第二二值化处理子单元,用于对所述肤色模型输出的结果进行阈值化处理,得到二值化的所述第二检测结果。
根据本发明的人脸检测方法针对现有的人脸检测方法的不足,例如在光照较强时无法检测,或者在光照较弱时无法检测的问题,通过对图像建立类高斯模型和肤色模型,分别对其进行阈值化处理,得到相应的二值图像,将两幅二值图像进行相与,得到最终的肤色检测图像。因此,本发明克服了现有基于肤色的人脸检测方法中误将黑色或者红色检测为肤色的缺点或在强光或弱光下无法准确检测肤色的问题,使得肤色检测结果更加准确,从而提高人脸检测准确率。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。