一种基于肤色识别的测光方法及测光系统的制作方法

文档序号:6525604阅读:325来源:国知局
一种基于肤色识别的测光方法及测光系统的制作方法
【专利摘要】本发明涉及一种基于肤色识别的测光方法及测光系统,其通过对摄像头捕获的图像数据进行人脸检测,并进行皮肤检测及肤色概率统计,将统计获取的肤色概率和最高的皮肤块的中心点位置与系统原始测光中心点进行比较,以确定最终的测光中心点;其针对性更强,能够消除背景、头发、眼睛等人脸非重点关注区域的影响,使测光效果更加稳定和更加自然。
【专利说明】—种基于肤色识别的测光方法及测光系统
【技术领域】
[0001]本发明涉及一种测光方法及测光系统,特别是一种基于肤色识别的测光方法及应用该方法的测光系统。
【背景技术】
[0002]目前现有的以人脸为主的测光方法中,为了保证人脸部分尽可能多的被包含在测光区域中,必须增加人脸框的大小,这样或多或少的在人脸测光区域中包含了背景和头发的数据,由于背景的亮度信息在不同场景和光照条件下变化较大,并且加之头发和眼睛颜色的影响,导致基于人脸为主的测光非常的不稳定,极大的影响了测光的效果。

【发明内容】

[0003]本发明为解决上述问题,提供了一种基于肤色识别的测光方法及测光系统,其测光更有针对性,测光效果更稳定、更自然。
[0004]为实现上述目的,本发明采用的技术方案为:
[0005]一种基于肤色识别的测光方法,包括以下步骤:
[0006]A.捕获由摄像头获取的图像数据;
[0007]B.对所述图像数据进行人脸检测;
[0008]C.判断是否检测到人脸,如果是,则进入步骤D,否则跳转至步骤A ;
[0009]D.根据检测到的人脸位置进行皮肤检测及肤色概率统计,并获取肤色概率和最高的皮肤块的中心点位置;
[0010]E.将步骤D中获取的中心点位置与系统原始测光中心点进行比较并判断是否需要重新测光,如果是,则进入步骤F,否则跳转至步骤A ;
[0011]F.根据步骤D中获取的中心点位置自动测光,并将该中心点位置保存为新测光中心点后跳转至步骤A。
[0012]作为一种较佳的实施例:所述步骤D进一步包括:
[0013]Dl.对图像数据进行人脸识别,获取人脸区域;
[0014]D2.对获取的人脸区域进行均值计算,获取平均肤色;
[0015]D3.将人脸区域的数据进行分块,对每个数据块进行肤色概率的统计,并根据获取的平均肤色计算当前数据块的肤色概率映射表;
[0016]D4.根据获取的肤色概率映射表对当前数据块进行肤色识别,并获取肤色概率和最高的数据块的中心点。
[0017]作为一种较佳的实施例:所述步骤D2进一步包括:
[0018]D2.1.初始化原始皮肤模型;
[0019]D2.2.计算整个图像的颜色均值,作为初始肤色的阈值;
[0020]D2.3.根据获取的初始肤色的阈值计算人脸区域的平均肤色。
[0021]作为一种较佳的实施例:所述步骤D2.1进一步包括:[0022]D2.1.1.创建皮肤模型,大小为256*256 ;
[0023]D2.1.2.依次对皮肤模型进行赋值,具体伪代码如下:
[0024]预设临时变量AlphaValue、nMax、1、j为整数类型。
[0025]皮肤模型变量为SkinModel [256] [256]
[0026]For(i = O ;i < 256 ;i++)
[0027]{
[0028]判断i是否大于128,如果大于128,则AlphaValue为255,否则为i*2 ;
[0029]计算获得nMax 的值,计算公式为 nMax = min (256, AlphaValue*2);
[0030]For(j = O ;j < nMax ;j++)
[0031]{
[0032]计算对应位置的皮肤模型的值,计算公式为SkinModel [i] [j]=AlphaValue-(j/2);
[0033]}
[0034]For (j = nMax.j < 256 ; j++)
[0035]{
[0036]初始对应位置的皮肤模型的值为O ;
[0037]}
[0038]}。
[0039]作为一种较佳的实施例:所述步骤D2.2进一步包括:
[0040]D2.2.1.遍历整个图像的像素点,将红色通道、绿色通道、蓝色通道的颜色值累加,得到颜色累加值;
[0041]D2.2.2.将颜色累加值除以整个图像的像素点的总数,得到红色通道、绿色通道、蓝色通道的均值,作为初始肤色的阈值。
[0042]作为一种较佳的实施例:所述步骤D2.3进一步包括:
[0043]D2.3.1.根据如下公式计算平均肤色的灰度值:
[0044]GRAYl = 0.29肿RED+0.587*GREEN+0.114祁LUE
[0045]其中,GRAYl为图像的当前像素点的灰度值;RED、GREEN、BLUE分别为图像的当前像素点的红、绿、蓝通道的颜色值;
[0046]D2.3.2.将所述灰度值作为阈值,用来排除人脸区域非皮肤的部分;
[0047]D2.3.3.依次遍历人脸区域里的像素点的颜色值,根据如下公式获得平均肤色:
[0048]skin = SkinModel[red][blue];
[0049]其中,skin为经过皮肤模型的颜色映射后的肤色值;SkinModel为步骤D2.1的初始化原始皮肤模型;red为红色通道的颜色值;blue为蓝色通道的颜色值。
[0050]作为一种较佳的实施例:所述步骤D3的肤色概率映射表通过如下步骤获取:
[0051]D3.1.创建肤色概率映射表,大小为256*256 ;
[0052]D3.2.依次对肤色概率映射表进行赋值,具体伪代码如下;
[0053]预设临时变量1、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue、OffsetJ为整数类型;
[0054]肤色概率映射表的变量为SkinProbability[256] [256];[0055]SkinRed为步骤D2.2.2.计算得到的红色通道的均值;SkinBlue为步骤D2.2.2计算得到的蓝色通道的均值;
[0056]预设SkinRed_Left 的值,计算公式为:SkinRed_Left = SkinRed-128 ;
[0057]For(i = O ;i < 256 ;i++)
[0058]{
[0059]计算Offset 的值,公式为 Offset = max (0, min (255, i_SkinRed_Left));
[0060]判断Offset的值是否小于128,如果小于的,话则AlphaValue = 0ffset*2 ;如果大于等于128的话,则AlphaValue = 255 ;
[0061]For(j = O ;j < 256 ;j++)
[0062]{
[0063]计算OffsetJ 的值,公式为 OffsetJ = max (O, j-SkinBlue);
[0064]计算TempAlphaValue 的值,公式为 TempAlphaValue =max(AlphaValue-(OffsetJ*2),0);
[0065]判断TempAlphaValue 的值。如果大于 160 的话,则 SkinProbability [i] [j]的值为 255 ;
[0066]如果小于90的话,则SkinProbability [i] [j]的值为0;否贝丨JSkinProbability[i] [j]的值为 TempAlphaValue+30 ;
`[0067]}
[0068]}。
[0069]作为一种较佳的实施例:所述步骤D4通过如下公式实现:
[0070]skinColor = SkinProbability[red][blue]
[0071]其中,skinColor为结果图的肤色概率值;SkinProbability为肤色概率映射表;red为像素点的红色通道的颜色值;blue为像素点的蓝色通道的颜色值。
[0072]作为一种较佳的实施例:所述步骤D3中将人脸区域的数据分为N*N块,其中N大于等于10。
[0073]作为一种较佳的实施例:所述步骤E将所述的中心点与原始测光中心点进行比较,判断所述的中心点与原始测光中心点之间的距离是否大于预定值?如果是,则进入步骤F,否则跳转至步骤A。
[0074]作为一种较佳的实施例:所述的中心点与原始测光中心点之间的距离的计算公式为:
[0075]N = ^ji xNew - xOld i * I xNew - xOld ) + I vNew - vOld ) * I yNew - yOld )
[0076]其中,N为所述预定值,且N的取值范围为I~50个像素;所述的中心点的坐标为
Y(xNew, yNew),所述原始测光中心点的坐标为X(x01d, yOld)。
[0077]另外,本发明还提供一种应用上述测光方法的基于肤色识别的测光系统,其特征在于,其包括:
[0078]图像获取单元,其用于捕获由摄像头获取的图像数据;
[0079]图像检测单元,其用于对所述图像数据进行人脸检测;
[0080]肤色计算单元,其用于根据人脸的位置计算肤色概率并最终确定其相应的中心占.[0081]自动测光单元,其用于根据所述的中心点对图像进行自动测光。
[0082]作为一种较佳的实施例:所述自动测光单元将所述的中心点与原始测光中心点进行比较,当所述的中心点与原始测光中心点之间的距离大于预定值时,所述自动测光单元进行自动测光,并将所述的中心点保存为新的测光中心点。
[0083]作为一种较佳的实施例:所述的中心点与原始测光中心点之间的距离的计算公式为:
[0084]
【权利要求】
1.一种基于肤色识别的测光方法,其特征在于,包括以下步骤: A.捕获由摄像头获取的图像数据; B.对所述图像数据进行人脸检测; C.判断是否检测到人脸,如果是,则进入步骤D,否则跳转至步骤A; D.根据检测到的人脸位置进行皮肤检测及肤色概率统计,并获取肤色概率和最高的皮肤块的中心点位置; E.将步骤D中获取的中心点位置与系统原始测光中心点进行比较并判断是否需要重新测光,如果是,则进入步骤F,否则跳转至步骤A ; F.根据步骤D中获取的中心点位置自动测光,并将该中心点位置保存为新测光中心点后跳转至步骤A。
2.根据权利要求1所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D进一步包括: Dl.对图像数据进行人脸识别,获取人脸区域; D2.对获取的人脸区域进行均值计算,获取平均肤色; D3.将人脸区域的数据进行分块,对每个数据块进行肤色概率的统计,并根据获取的平均肤色计算当前数据块的肤色概率映射表; D4.根据获取的肤色概率映射表对当前数据块进行肤色识别,并获取肤色概率和最高的数据块的中心点。`
3.根据权利要求2所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D2进一步包括: D2.1.初始化原始皮肤模型; D2.2.计算整个图像的颜色均值,作为初始肤色的阈值; D2.3.根据获取的初始肤色的阈值计算人脸区域的平均肤色。
4.根据权利要求3所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D2.1进一步包括: D2.1.1.创建皮肤模型,大小为256*256 ; D2.1.2.依次对皮肤模型进行赋值,具体伪代码如下: 预设临时变量AlphaValue、nMax、1、j为整数类型。 皮肤模型变量为SkinModel [256] [256]
For(i = O ;i < 256 ;i++)
{ 判断i是否大于128,如果大于128,则AlphaValue为255,否则为i*2 ; 计算获得nMax的值,计算公式为nMax = min (256, AlphaValue*2);
For(j = 0 ;j < nMax ;j++)
{ 计算对应位置的皮肤模型的值,计算公式为SkinModel [i] [j] = AlphaValue-(j/2);
}
For (j = nMax.j < 256 ; j++)
{初始对应位置的皮肤模型的值为O ;
}
1
5.根据权利要求3所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D2.2进一步包括: D2.2.1.遍历整个图像的像素点,将红色通道、绿色通道、蓝色通道的颜色值累加,得到颜色累加值; D2.2.2.将颜色累加值除以整个图像的像素点的总数,得到红色通道、绿色通道、蓝色通道的均值,作为初始肤色的阈值。
6.根据权利要求3所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D2.3进一步包括: D2.3.1.根据如下公式计算平均肤色的灰度值:
GRAYl = 0.299*RED+0.587*GREEN+0.114祁LUE 其中,GRAYl为图像的当前像素点的灰度值;RED、GREEN、BLUE分别为图像的当前像素点的红、绿、蓝通道的颜色值; D2.3.2.将所述灰度值作为阈值,用来排除人脸区域非皮肤的部分; D2.3.3.依次遍历人脸区域里的`像素点的颜色值,根据如下公式获得平均肤色: skin = SkinModel[red][blue]; 其中,skin为经过皮肤模型的颜色映射后的肤色值;SkinModel为步骤D2.1的初始化原始皮肤模型;red为红色通道的颜色值;blue为蓝色通道的颜色值。
7.根据权利要求5所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D3的肤色概率映射表通过如下步骤获取: D3.1.创建肤色概率映射表,大小为256*256 ; D3.2.依次对肤色概率映射表进行赋值,具体伪代码如下; 预设临时变量 1、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue> OffsetJ 为整数类型; 肤色概率映射表的变量为SkinProbability [256] [256]; SkinRed为步骤D2.2.2计算得到的红色通道的均值;SkinBlue为步骤D2.2.2计算得到的蓝色通道的均值; 预设 SkinRed_Left 的值,计算公式为:SkinRed_Left = SkinRed-128 ;
For(i = O ;i < 256 ;i++)
{ 计算 Offset 的值,公式为 Offset = max (0, min (255, i_SkinRed_Left)); 判断Offset的值是否小于128,如果小于的,话则AlphaValue = 0ffset*2 ;如果大于等于 128 的话,则 AlphaValue = 255 ;
For (j = O ;j < 256 ;j++)
{ 计算 OffsetJ 的值,公式为 OffsetJ = max (O, j-SkinBlue); 计算 TempAlphaValue 的值,公式为 TempAlphaValue = max (AlphaValue- (0ffsetJ*2),O); 判断TempAlphaValue的值。如果大于160的话,贝丨J SkinProbability[i] [j]的值为.255 ; 如果小于 90 的话,则 SkinProbability [i] [j]的值为 O ;否则 SkinProbability [i] [j]的值为 TempAlphaValue+30 ;
}
}o
8.根据权利要求7所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D4通过如下公式实现:
skinColor = SkinProbability[red][blue] 其中,skinColor为结果图的肤色概率值;SkinProbability为肤色概率映射表;red为像素点的红色通道的颜色值;blue为像素点的蓝色通道的颜色值。
9.根据权利要求2所述的一种基于肤色识别的测光方法,其特征在于:所述步骤D3中将人脸区域的数据分为N*N块,其中N大于等于10。
10.根据权利要求1所述的一种基于肤色识别的测光方法,其特征在于:所述步骤E将所述的中心点与原始测光中心点进行比较,判断所述的中心点与原始测光中心点之间的距离是否大于预定值?如果是,则进入步骤F,否则跳转至步骤A。
11.根据权利要求10所述的一种基于肤色识别的测光方法,其特征在于:所述的中心点与原始测光中心点之间的距离的计算公式为:
N = -y/( xNew — xOld ) * I xNe'v - xOld ) + ( yNew - yOld ) * ( yNew - yOld ) 其中,N为所述预定值,且N的取值范围为I~50个像素;所述的中心点的坐标为Y(xNew, yNew),所述原始测光中心点的坐标为X(x01d, yOld)。
12.一种基于肤色识别的测光系统,其特征在于,其包括: 图像获取单元,其用于捕获由摄像头获取的图像数据; 图像检测单元,其用于对所述图像数据进行人脸检测; 肤色计算单元,其用于根据人脸的位置计算肤色概率并最终确定其相应的中心点; 自动测光单元,其用于根据所述的中心点对图像进行自动测光。
13.根据权利要求12所述的一种基于肤色识别的测光系统,其特征在于:所述自动测光单元将所述的中心点与原始测光中心点进行比较,当所述的中心点与原始测光中心点之间的距离大于预定值时,所述自动测光单元进行自动测光,并将所述的中心点保存为新的测光中心点。
14.根据权利要求13所述的一种基于肤色识别的测光系统,其特征在于:所述的中心点与原始测光中心点之间的距离的计算公式为:
N = xNew - xOld ) * I xNew - 'Old ) + I yNew — yOld I * ( vNew - yOld ) 其中,N为所述预定值,且N的取值范围为I~50个像素;所述的中心点的坐标为Y(xNew, yNew),所述原始测光中心点的坐标为X(x01d, yOld)。
【文档编号】G06K9/62GK103729624SQ201310726930
【公开日】2014年4月16日 申请日期:2013年12月25日 优先权日:2013年12月25日
【发明者】张伟, 张长定, 傅松林, 叶志鸿 申请人:厦门美图移动科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1