一种基于显著性检测的皮肤识别方法

文档序号:6633944阅读:149来源:国知局
一种基于显著性检测的皮肤识别方法
【专利摘要】本发明公开了一种基于显著性检测的皮肤识别方法,其通过对待检测图像进行人脸识别和显著性检测,获取人脸皮肤区域,并对其进行计算获取平均肤色和肤色概率映射表,最后根据所述的肤色概率映射表对待检测图像进行肤色识别,并获得待检测图像的肤色概率的结果图;其不需要通过收集庞大的训练数据,识别结果也不会因训练数据的偏差而受到影响,并且由于进行了显著性检测,可以排除人脸区域内的非皮肤区域,使得识别的准确率更高,克服待检测图像过亮或过暗的情况下造成的误识别问题。
【专利说明】一种基于显著性检测的皮肤识别方法

【技术领域】
[0001] 本发明涉及图像识别方法,特别是一种基于显著性检测的皮肤识别方法。

【背景技术】
[0002] 皮肤识别的目标是从图像中自动地识别人体的皮肤区域,并且根据识别出的皮肤 区域进行美容美化操作。而现有技术中,对图像中人体的皮肤识别存在误识别率高、需要构 建数据库的时间久和步骤麻烦、实现复杂、程序运行效率低等不足。
[0003] 中国发明专利申请201110185739. 0公开了一种模式识别和图像处理【技术领域】中 的一种光照自适应的人体肤色检测方法,通过收集训练数据库,用训练数据库来训练基础 肤色模型和光照模型,并用基础肤色模型对待检测图像的像素点进行筛选,从光照模型中 找出一个和待检测图像最接近的光照模型,用该模型对待检测图像和基础肤色模型进行修 正,修正后的待检测图像经修正后的基础肤色模型检测后输出。
[0004] 但上述发明的技术方案主要是根据数据库来构建肤色模型,必然存在有很大的局 限性。当软件定义的数据库中的训练数据都偏于黑暗的情况时,偏亮的照片的皮肤检测得 到的较黑的部分就会被自动识别为皮肤,导致误识别率;当软件定义的数据库中的训练数 据都偏于明亮的情况时,偏暗的照片的皮肤检测得到的结果是会有很大部分不被识别,误 识别率更高;当软件定义的数据库中的训练数据偏平衡的时候,较暗或者较亮的皮肤都不 会被识别出来。


【发明内容】

[0005] 本发明为解决上述问题,提供了一种算法简单、运行效率高、识别率高的基于显著 性检测的皮肤识别方法。
[0006] 为实现上述目的,本发明采用的技术方案为:
[0007] -种基于显著性检测的皮肤识别方法,其特征在于,包括以下步骤:
[0008] 10.对待检测图像进行人脸识别,获取人脸区域,并对人脸区域进行显著性检测, 获取人脸最显著区域,即人脸皮肤区域;
[0009] 20.对所述的人脸皮肤区域进行均值计算,获取平均肤色;
[0010] 30.根据所述的平均肤色计算待检测图像的肤色概率映射表;
[0011] 40.根据所述的肤色概率映射表对待检测图像进行肤色识别,并获得待检测图像 的肤色概率的结果图。
[0012] 优选的,所述的步骤10中对人脸区域进行显著性检测,该显著性检测进一步包 括:
[0013] a.提取图像特征:采用高斯滤波器对待检测图像进行滤波和采样,形成以所述的 待检测图像为底层的高斯金字塔模型;然后对高斯金字塔模型中的每一层分别提取各种图 像特征,形成特征金字塔模型;再根据该特征金字塔模型进行计算得到所述的待检测图像 的特征图;
[0014] b.生成显著图:把每一个所述的特征图归一化处理,并将各个归一化处理后的特 征图进行综合计算,得到对应于所述的待检测图像的显著图。
[0015] 优选的,所述的显著图中采用白色和黑色对其进行标记以获取待检测图像的显著 性区域,其中,白色表示待检测图像中显著的区域,黑色表示待检测图像中不显著的区域。
[0016] 优选的,步骤20中获取平均肤色的方法进一步包括以下步骤:
[0017] 21?初始化原始皮肤模型;
[0018] 22.计算整个图像的颜色均值,作为初始皮肤的阈值;
[0019] 23.根据获取得的初始皮肤的阈值计算人脸区域的平均肤色。
[0020] 优选的,所述的步骤21中,初始化原始皮肤模型的步骤如下:
[0021] 211?创建肤色模型,大小为256*256;
[0022] 212.依次对肤色模型进行赋值,具体伪代码如下;
[0023] 预设临时变量AlphaValue、nMax、i、j为整数类型。
[0024]肤色模型变量为 SkinModel[256] [256]
[0025] For(i= 0;i< 256 ;i++)
[0026] {
[0027] 判断i是否大于128,如果大于128,则AlphaValue为255,否则为i*2;
[0028]计算获得 nMax的值,计算公式为 nMax= min(256,AlphaValue*2);
[0029] For(j= 0;j<nMax;j++)
[0030] {
[0031] 计算对应位置的肤色模型的值,计算公式为SkinModel [i][j]= AlphaValue-(j/2);
[0032] }
[0033] For(j=nMax;j< 256 ;j++)
[0034] {
[0035] 初始对应位置的肤色模型的值为0 ;
[0036] }
[0037] }
[0038] 。
[0039] 优选的,所述的步骤22进一步包括:
[0040] 221.遍历整个图像的像素点,将红色通道、绿色通道、蓝色通道的颜色值累加,得 到颜色累加值;
[0041] 222.将颜色累加值除以像素点的总数,得到红色通道、绿色通道、蓝色通道的均 值,作为初始皮肤的阈值。
[0042] 优选的,所述的步骤23进一步包括:
[0043] 231.根据如下公式计算平均肤色的灰度值:
[0044] GRAY 1 = 0. 299*RED+0. 587*GREEN+0. 114*BLUE
[0045] 其中,GRAY1为待检测图像的灰度图的当前像素点的灰度值;RED、GREEN、BLUE分 别为待检测图像的当前像素点的红、绿、蓝通道的颜色值;
[0046] 232.将所述的灰度值作为阈值,用来排除人脸区域非皮肤的部分;
[0047] 并依次遍历人脸区域里的像素点的颜色值,根据如下公式获得平均肤色:
[0048] skin = SkinModel[red][blue];
[0049] 其中,skin为经过皮肤模型的颜色映射后的皮肤值;SkinModel为步骤21的初始 化原始皮肤模型;red为人脸区域里的像素点的红色通道的颜色值;blue为人脸区域里的 像素点的蓝色通道的颜色值。
[0050] 优选的,所述的步骤30中的肤色概率映射表通过如下步骤获取:
[0051] 31.创建肤色概率映射表,大小为256*256 ;
[0052] 32.依次对肤色概率映射表进行赋值,具体伪代码如下;
[0053]预设临时变量 i、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue、Offsetj 为整数类型;
[0054] 肤色概率映射表的变量为SkinProbability[256] [256];
[0055] SkinRed为步骤222计算得到的红色通道的均值;SkinBlue为步骤222计算得到 的蓝色通道的均值;
[0056]预设 SkinRed_Left 的值,计算公式为:SkinRed_Left = SkinRed-128 ;
[0057] For(i = 0 ;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 = 0 ;j < 256 ;j++)
[0062] {
[0063]计算 OffsetJ 的值,公式为 OffsetJ = max (0, j-SkinBlue);
[0064]计算 TempA1 phaVa 1 ue 的值,公式为 TempA1 phaVa 1 ue = max(AlphaValue-(OffsetJ*2),0);
[0065]判断 TempAlphaValue 的值。如果大于 160 的话,则 SkinProbability [i] [j]的值 为 255 ;
[0066] 如果小于90的话,则SkinProbability[i] [j]的值为0 ;否贝丨J SkinProbability[i] [j]的值为 TempAlphaValue+30 ;
[0067] }
[0068] }
[0069] 。
[0070] 优选的,其特征在于,所述的步骤40通过如下公式进行实现:
[0071] skinColor = SkinProbability[red][blue]
[0072] 其中,skinColor为肤色概率结果图中的肤色概率值;SkinProbability为肤色概 率映射表;red为像素点的红色通道的颜色值;blue为像素点的蓝色通道的颜色值。
[0073] 优选的,所述的步骤10中对待检测图像进行人脸识别,当人脸区域识别失败时, 将整个图像定义为人脸皮肤区域。
[0074] 优选的,所述的待检测图像为数字图像文件、视频文件或gif动画文件。
[0075] 优选的,如果待检测图像为视频文件或gif动画文件,则将图像文件截取为单帧 图像,分别识别完各个单帧图像后,再还原为视频文件或gif动画文件。
[0076] 本发明的有益效果是:
[0077] 本发明的一种基于显著性检测的皮肤识别方法,其通过对待检测图像进行人脸识 别和显著性检测,获取人脸皮肤区域,并对其进行计算获取平均肤色和肤色概率映射表,最 后根据所述的肤色概率映射表对待检测图像进行肤色识别,并获得待检测图像的肤色概率 的结果图;其不需要通过收集庞大的训练数据,识别结果也不会因训练数据的偏差而受到 影响,并且由于进行了显著性检测,可以排除人脸区域内的非皮肤区域,使得识别的准确率 更高,克服待检测图像过亮或过暗的情况下造成的误识别问题。

【专利附图】

【附图说明】
[0078] 此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0079] 图1为本发明一种基于显著性检测的皮肤识别方法的流程简图。

【具体实施方式】
[0080] 为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结 合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用 以解释本发明,并不用于限定本发明。
[0081] 如图1所示,本发明的一种基于显著性检测的皮肤识别方法,其包括以下步骤:
[0082] 10.对待检测图像进行人脸识别,获取人脸区域,并对人脸区域进行显著性检测, 获取人脸最显著区域,即人脸皮肤区域;并且,当人脸区域识别失败时,将整个图像定义为 人脸皮肤区域;
[0083] 20.对所述的人脸皮肤区域进行均值计算,获取平均肤色;
[0084] 30.根据所述的平均肤色计算待检测图像的肤色概率映射表;
[0085] 40.根据所述的肤色概率映射表对待检测图像进行肤色识别,并获得待检测图像 的肤色概率的结果图。
[0086] 步骤10中涉及到的人脸识别,由于不涉及本发明的主要内容,因此不进行赘 述。本实施例中,人脸识别方法采用常规方法,比如文献"P. Viola and M. Jones. Rapid Object Detection using a Boosted Cascade of Simple Features, in :Computer Vision and Pattern Recognition,2001. CVPR 2001.Proceedings of the 2001 IEEE Computer Society Conference on"。根据定位获得人脸的大致区域位置。其中对人脸区域进行显著 性检测进一步包括:
[0087]a.提取图像特征:采用高斯滤波器对待检测图像进行滤波和采样,形成以所述的 待检测图像为底层的高斯金字塔模型;然后对高斯金字塔模型中的每一层分别提取各种图 像特征,形成特征金字塔模型;再根据该特征金字塔模型进行计算得到所述的待检测图像 的特征图;
[0088]b.生成显著图:把每一个所述的特征图归一化处理,并将各个归一化处理后的特 征图进行综合计算,得到对应于所述的待检测图像的显著图;所述的显著图中采用白色和 黑色对其进行标记以获取待检测图像的显著性区域,其中,白色表示待检测图像中显著的 区域,黑色表示待检测图像中不显著的区域。
[0089] 优选的,步骤20中获取平均肤色的方法进一步包括以下步骤:
[0090] 21?初始化原始皮肤模型;
[0091] 22.计算整个图像的颜色均值,作为初始皮肤的阈值;
[0092] 23.根据获取得的初始皮肤的阈值计算人脸区域的平均肤色。
[0093] 优选的,所述的步骤21中,初始化原始皮肤模型的步骤如下:
[0094] 211.创建肤色模型,大小为256*256 ;
[0095] 212.依次对肤色模型进行赋值,具体伪代码如下;
[0096] 预设临时变量AlphaValue、nMax、i、j为整数类型。
[0097] 肤色模型变量为 SkinModel[256] [256]
[0098] For(i= 0;i< 256 ;i++)
[0099] {
[0100] 判断i是否大于128,如果大于128,则AlphaValue为255,否则为i*2 ;
[0101]计算获得 nMax的值,计算公式为 nMax= min(256,AlphaValue*2);
[0102] For(j= 0 ;j<nMax;j++)
[0103] {
[0104] 计算对应位置的肤色模型的值,计算公式为SkinModel[i] [j]= AlphaValue-(j/2);
[0105] }
[0106]For(j=nMax;j< 256 ;j++)
[0107] {
[0108] 初始对应位置的肤色模型的值为0 ;
[0109] }
[0110] }
[0111]。
[0112] 如以程度代码形式表示,则初始化原始皮肤模型的公式如下:
[0113]

【权利要求】
1. 一种基于显著性检测的皮肤识别方法,其特征在于,包括以下步骤:
10.对待检测图像进行人脸识别,获取人脸区域,并对人脸区域进行显著性检测,获取 人脸最显著区域,即人脸皮肤区域;
20. 对所述的人脸皮肤区域进行均值计算,获取平均肤色;
30.根据所述的平均肤色计算待检测图像的肤色概率映射表;
40.根据所述的肤色概率映射表对待检测图像进行肤色识别,并获得待检测图像的肤 色概率的结果图。
2. 根据权利要求1所述的一种基于显著性检测的皮肤识别方法,其特征在于:所述的 步骤10中对人脸区域进行显著性检测,该显著性检测进一步包括: a. 提取图像特征:采用高斯滤波器对待检测图像进行滤波和采样,形成以所述的待检 测图像为底层的高斯金字塔模型;然后对高斯金字塔模型中的每一层分别提取各种图像特 征,形成特征金字塔模型;再根据该特征金字塔模型进行计算得到所述的待检测图像的特 征图; b. 生成显著图:把每一个所述的特征图归一化处理,并将各个归一化处理后的特征图 进行综合计算,得到对应于所述的待检测图像的显著图。
3. 根据权利要求2所述的一种基于显著性检测的皮肤识别方法,其特征在于:所述的 显著图中采用白色和黑色对其进行标记以获取待检测图像的显著性区域,其中,白色表示 待检测图像中显著的区域,黑色表示待检测图像中不显著的区域。
4. 根据权利要求1所述的一种基于显著性检测的皮肤识别方法,其特征在于,步骤20 中获取平均肤色的方法进一步包括以下步骤:
21. 初始化原始皮肤模型;
22. 计算整个图像的颜色均值,作为初始皮肤的阈值;
23. 根据获取得的初始皮肤的阈值计算人脸区域的平均肤色。
5. 根据权利要求4所述的一种基于显著性检测的皮肤识别方法,其特征在于,所述的 步骤21中,初始化原始皮肤模型的步骤如下:
211. 创建肤色模型,大小为256*256 ;
212. 依次对肤色模型进行赋值,具体伪代码如下; 预设临时变量AlphaValue、nMax、i、j为整数类型。 肤色模型变量为SkinModel[256] [256] For(i = 0 ;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++) { 初始对应位置的肤色模型的值为0 ; } } 〇
6. 根据权利要求4所述的一种基于显著性检测的皮肤识别方法,其特征在于,所述的 步骤22进一步包括:
221. 遍历整个图像的像素点,将红色通道、绿色通道、蓝色通道的颜色值累加,得到颜 色累加值;
222. 将颜色累加值除以像素点的总数,得到红色通道、绿色通道、蓝色通道的均值,作 为初始皮肤的阈值。
7. 根据权利要求6所述的一种基于显著性检测的皮肤识别方法,其特征在于,所述的 步骤23进一步包括:
231. 根据如下公式计算平均肤色的灰度值: GRAY 1 = 0. 299*RED+0. 587*GREEN+0. 114*BLUE 其中,GRAY1为待检测图像的灰度图的当前像素点的灰度值;RED、GREEN、BLUE分别为 待检测图像的当前像素点的红、绿、蓝通道的颜色值;
232. 将所述的灰度值作为阈值,用来排除人脸区域非皮肤的部分; 并依次遍历人脸区域里的像素点的颜色值,根据如下公式获得平均肤色: skin = SkinModel[red][blue]; 其中,skin为经过皮肤模型的颜色映射后的皮肤值;SkinModel为步骤21的初始化原 始皮肤模型;red为人脸区域里的像素点的红色通道的颜色值;blue为人脸区域里的像素 点的蓝色通道的颜色值。
8. 根据权利要求6所述的一种基于显著性检测的皮肤识别方法,其特征在于,所述的 步骤30中的肤色概率映射表通过如下步骤获取:
31. 创建肤色概率映射表,大小为256*256 ;
32. 依次对肤色概率映射表进行赋值,具体伪代码如下; 预设临时变量 i、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue、OffsetJ 为 整数类型; 肤色概率映射表的变量为SkinProbability[256] [256]; SkinRed为步骤222计算得到的红色通道的均值;SkinBlue为步骤222计算得到的蓝 色通道的均值; 预设 SkinRed_Left 的值,计算公式为:SkinRed_Left = SkinRed-128 ; For(i = 0 ;i < 256 ;i++) { 计算 Offset 的值,公式为 Offset = max (0, min (255, i_SkinRed_Left)); 判断Offset的值是否小于128,如果小于的,话则AlphaValue = 0ffset*2 ;如果大于 等于 128 的话,则 AlphaValue = 255 ; For(j = 0 ;j < 256 ;j++) { 计算 OffsetJ 的值,公式为 OffsetJ = max(0, j-SkinBlue); 计算 TempAlphaValue 的值,公式为 TempAlphaValue = max (AlphaValue- (OffsetJ*2), 〇); 判断TempAlphaValue的值。如果大于160的话,则SkinProbability[i] [j]的值为 255 ; 如果小于 90 的话,则 SkinProbability [i] [j]的值为 0 ;否则 SkinProbability [i] [j] 的值为 TempAlphaValue+30 ; } } o
9. 根据权利要求1至8中任一项所述的一种基于显著性检测的皮肤识别方法,其特征 在于,所述的步骤40通过如下公式进行实现: skinColor = SkinProbability[red][blue] 其中,skinColor为肤色概率结果图中的肤色概率值;SkinProbability为肤色概率映 射表;red为像素点的红色通道的颜色值;blue为像素点的蓝色通道的颜色值。
10. 根据权利要求1至8中任一项所述的一种基于显著性检测的皮肤识别方法,其特征 在于,所述的步骤10中对待检测图像进行人脸识别,当人脸区域识别失败时,将整个图像 定义为人脸皮肤区域。
11. 根据权利要求1至8中任一项所述的一种基于显著性检测的皮肤识别方法,其特征 在于,所述的待检测图像为数字图像文件、视频文件或gif?动画文件。
12. 根据权利要求11所述的一种基于显著性检测的皮肤识别方法,其特征在于,如果 待检测图像为视频文件或gif动画文件,则将图像文件截取为单帧图像,分别识别完各个 单帧图像后,再还原为视频文件或gif动画文件。
【文档编号】G06K9/62GK104392211SQ201410638233
【公开日】2015年3月4日 申请日期:2014年11月12日 优先权日:2014年11月12日
【发明者】张伟, 傅松林, 张长定, 叶志鸿 申请人:厦门美图网科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1