一种基于人脸框提取图像中人脸部肤色的方法
技术领域
本发明涉及图像处理技术领域,特别涉及一种基于人脸框提取图像中人脸部肤色的方法。
背景技术
一般业界提取肤色的方法,是得到人脸检测技术输出的人脸部的外接矩形框后,计算该帧图像中人脸框中所有像素的色彩平均值(RGB色域分别计算R/G/B三分量的均值,YUV色域分别计算U/V分量的均值,HSV色域则计算S/V分量的均值),以此均值作为提取到的人脸部分的肤色。
然而,这种方法仅在人脸矩形框位置非常精准,而且矩形大小和人脸面积非常接近时,提取到的色彩才与实际人脸的色彩较为接近。如果人脸框位置稍大,或者稍稍偏向一边,此时人脸框中包含了较多背景、头发,甚至衣领的非人脸部分的像素在内,再计算色彩平均值,因为非人脸部分色彩的干扰,获取到的肤色则与实际真实肤色有较大差距。而业界当前主流的人脸检测技术,受到人脸方向、姿态的影响,输出的人脸矩形框,往往会稍大且位置有偏,所以用该方法提取的肤色并不能够做到稳定准确。
发明内容
基于此,本发明的目的是提供一种基于人脸框提取图像中人脸部肤色的方法。
根据本发明实施例的一种基于人脸框提取图像中人脸部肤色的方法,该方法的步骤包括:
采集人脸图像,并确定图像中待提取脸部肤色的人脸提取框;
在RGB色域中,统计人脸提取框中的像素的RGB三分量,获取每一分量的直方图分布,分别计算人脸提取框中的像素RGB三分量直方图的累积直方图;
对RGB三分量直方图分别进行多项式曲线拟合,获得近似的包络曲线;
对拟合曲线分别求一阶导数,找出一阶导数零点位置,且确定其中处于波谷位置的零点;根据累积直方图,计算RGB三分量直方图的包络曲线中相邻波谷之间的像素分布数,波谷之间像素分布数量最大区域作为皮肤像素分布区域,以像素数为权重,计算皮肤像素分布区域的色彩加权平均值;
根据皮肤像素分布区域的色彩加权平均值计算RGB三分量的加权平均值,作为图像人脸提取框中皮肤的色彩值。
其中,在通过拍照设备以预设时间间隔采集N张图像的步骤之前,包括将采集到的图像存储于图像缓冲池中的步骤。
其中,在对RGB三分量直方图分别进行多项式曲线拟合的步骤中,多项式的次数选取为8-12次,以使包络曲线与直方图的高低起伏分布越贴合、接近。
其中,对RGB三分量直方图分别进行多项式曲线拟合的多项式次数选取为12次。
其中,计算获得三个直方图近似的包络曲线公式表达为:
其中,系数ai可由最小二乘法计算得到。
其中,在分别计算人脸提取框中的像素RGB三分量直方图的累积直方图的步骤之前,还包括对各个直方图分布进行均值滤波的步骤,且滤波的方式为1x5向量核滤波。
其中,在得到去除目标的结果图的步骤之后,还包括将结果图缩放合成轨迹图像的步骤。
其中,在对拟合曲线分别求一阶导数,找出一阶导数零点位置,且确定其中处于波谷位置的零点的步骤中,根据包络曲线中零点值前后的数值的正负情况,确定零点对应像素RGB三分量直方图中的波峰或波谷位置。
其中,确定图像中待提取脸部肤色的人脸提取框是通过人脸识别的方式进行识别,识别完成后通过在图像的人脸区域设置矩形框作为人脸提取框;若识别失败,则将整个图像作为人脸提取框。
其中,如果识别的图像为视频文件或gif动画文件,则将视频文件或者gif动画文件截取为单帧图像,分别识别完每一单帧图像,再将单帧图像还原为视频或者gif动画文件。
区别于现有技术,本发明的基于人脸框提取图像中人脸部肤色的方法的步骤包括:采集人脸图像,并确定图像中待提取脸部肤色的人脸提取框;在RGB色域中,统计人脸提取框中的像素的RGB三分量,获取直方图分布,分别计算累积直方图;对RGB三分量直方图进行多项式曲线拟合,获得包络曲线;对拟合曲线求一阶导数,找出一阶导数零点位置,且确定其中处于波谷位置的零点;计包络曲线中相邻波谷之间的像素分布数,以像素数为权重,计算皮肤像素分布区域的色彩加权平均值;根据皮肤像素分布区域的色彩加权平均值计算RGB三分量的加权平均值,作为图像人脸提取框中皮肤的色彩值。本方法能够更加稳定和准确的获得图像中的人脸部分的皮肤颜色。
附图说明
图1为本发明提供的一种基于人脸框提取图像中人脸部肤色的方法的流程示意图。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
需要说明的是,当元件被称为“固设于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
参阅图1,图1是本发明提供的一种基于人脸框提取图像中人脸部肤色的方法的流程示意图。该方法的步骤包括:
采集人脸图像,并确定图像中待提取脸部肤色的人脸提取框。
在RGB色域中,统计人脸提取框中的像素的RGB三分量,获取每一分量的直方图分布,分别计算人脸提取框中的像素RGB三分量直方图的累积直方图。
对RGB三分量直方图分别进行多项式曲线拟合,获得近似的包络曲线。
对拟合曲线分别求一阶导数,找出一阶导数零点位置,且确定其中处于波谷位置的零点;根据累积直方图,计算RGB三分量直方图的包络曲线中相邻波谷之间的像素分布数,波谷之间像素分布数量最大区域作为皮肤像素分布区域,以像素数为权重,计算皮肤像素分布区域的色彩加权平均值。
根据皮肤像素分布区域的色彩加权平均值计算RGB三分量的加权平均值,作为图像人脸提取框中皮肤的色彩值。
其中,在通过拍照设备以预设时间间隔采集N张图像的步骤之前,包括将采集到的图像存储于图像缓冲池中的步骤。
其中,在对RGB三分量直方图分别进行多项式曲线拟合的步骤中,多项式的次数选取为8-12次,以使包络曲线与直方图的高低起伏分布越贴合、接近。
其中,对RGB三分量直方图分别进行多项式曲线拟合的多项式次数选取为12次。
其中,计算获得三个直方图近似的包络曲线公式表达为:
其中,系数ai可由最小二乘法计算得到。
其中,在分别计算人脸提取框中的像素RGB三分量直方图的累积直方图的步骤之前,还包括对各个直方图分布进行均值滤波的步骤,且滤波的方式为1x5向量核滤波。
其中,在得到去除目标的结果图的步骤之后,还包括将结果图缩放合成轨迹图像的步骤。
其中,在对拟合曲线分别求一阶导数,找出一阶导数零点位置,且确定其中处于波谷位置的零点的步骤中,根据包络曲线中零点值前后的数值的正负情况,确定零点对应像素RGB三分量直方图中的波峰或波谷位置。
其中,确定图像中待提取脸部肤色的人脸提取框是通过人脸识别的方式进行识别,识别完成后通过在图像的人脸区域设置矩形框作为人脸提取框;若识别失败,则将整个图像作为人脸提取框。
其中,如果识别的图像为视频文件或gif动画文件,则将视频文件或者gif动画文件截取为单帧图像,分别识别完每一单帧图像,再将单帧图像还原为视频或者gif动画文件。
示例的,在本发明的方法中,对图像进行人脸识别,获取人脸区域,一般的,人脸区域会表示成照片上包含人脸的一个矩形框。
对人脸提取框中的像素,进行RGB三个分量的直方图统计,分别获得RGB三个直方图HR,HG,HB。
对RGB三分量的直方图进行一维均值滤波,如下,得到滤波后的平滑直方图
作为优选,滤波核具体为K=[0.2,0.2,0.2,0.2,0.2]。
然后对滤波后的三分量的平滑直方图分别累加,得到三分量的累积直方图
对滤波后的三个分量的直方图,分别进行曲线拟合,获得直方图的包络曲线CR,CG,CB。
作为优选,具体采用8到12次方的多项式曲线拟合,如下,计算获得三个直方图近似的包络曲线。
其中,系数ai可由最小二乘法计算得到,且多项式的次数越高,包络曲线与直方图的高低起伏分布越贴合、接近,描述的越逼真细致,次数越低,包络曲线对直方图的起伏描述越简单、误差越大,本发明以12次多项式作为优选。
针对RGB三分量直方图的包络曲线,分别求一阶导数,记录各自的一阶导数曲线DR,DG,DB。
分别查找一阶导数曲线中的零点位置,并且根据零点前后值的正负,判断出当前零点是对应直方图的波峰还是波谷位置,然后分别记录出RGB三分量的所有波谷的位置V1,V2,V3...。
根据获得的波谷位置和前述得到的累积直方图,分别计算出RGB三分量直方图中,两两相邻波谷之间的像素分布值S1,S2,S3...,比较出最大Smax值,记录对应Smax值的波谷位置Vmax1,Vmax2。
具体的,RGB三分量各自的两个波谷位置Vmax1,Vmax2,对应到RGB三分量的直方图中,以色彩值Gi(i=1,256)上分布的像素数Pi为权重,分别计算出直方图中,两个波谷之间直方图的加权平均值此时,得到的R/G/B三个分量各自的加权平均值,记做
获取到的Skin_Red,Skin_Green,Skin_Blue值,即为当前照片中人脸皮肤的标准色彩值。
区别于现有技术,本发明的基于人脸框提取图像中人脸部肤色的方法的步骤包括:采集人脸图像,并确定图像中待提取脸部肤色的人脸提取框;在RGB色域中,统计人脸提取框中的像素的RGB三分量,获取直方图分布,分别计算累积直方图;对RGB三分量直方图进行多项式曲线拟合,获得包络曲线;对拟合曲线求一阶导数,找出一阶导数零点位置,且确定其中处于波谷位置的零点;计包络曲线中相邻波谷之间的像素分布数,以像素数为权重,计算皮肤像素分布区域的色彩加权平均值;根据皮肤像素分布区域的色彩加权平均值计算RGB三分量的加权平均值,作为图像人脸提取框中皮肤的色彩值。本方法能够更加稳定和准确的获得图像中的人脸部分的皮肤颜色。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。