一种数字图像的快速美容方法

文档序号:6627873阅读:251来源:国知局
一种数字图像的快速美容方法
【专利摘要】一种数字图像的快速美容方法,通过对原始图像进行高斯模糊处理,提取绿色通道值,对绿色通道值进行线性光混合、强光混合,并重新计算混合后的绿色通道值,同时对原始图像进行皮肤识别与美白处理,最后将重新计算的绿色通道值与皮肤识别得到的概率值相乘的积作为透明度,对原始图像与美白图像进行透明度混合形成美容图像;本发明的图像美容方法不仅高效而且美容效果好,可以广泛应用于图像处理领域,可利用在目前的个人电脑或者是手机、平板等平台上的图像后期处理软件中,也可以用在带数码摄像头的一些设备的相机实时滤镜中;并且通过对原始图像进行肤色识别,使算法不对黑色像素进行处理,从而保留了头发、眼睛等关键部位不被处理,使得整个美容的效果更佳、更自然。
【专利说明】一种数字图像的快速美容方法

【技术领域】
[0001]本发明涉及一种图像处理方法,特别是一种数字图像的快速美容方法。

【背景技术】
[0002]随着科技的进步,越来越多载有高清或者微型摄像头或者图像获取装置的设备出现。如数码相机,手机,平板,甚至是笔记本等等。无论是摄像设备的像素、光圈或者是拍摄环境的光线、平稳度甚至是设备的I/o性能等都会对成像质量造成影响,带来的结果是成像与现实世界真实画面有差距。这种差距可能与设备使用者的意愿相违背,或者是达不到使用者的美观要求。由此衍生出来的各种图像后期处理软件,通过能图像进行色彩上的处理,使得图像在视觉上达到相比原始图像更加符合使用者审美观的效果。
[0003]但是许多处理方式由于在图像的智能检测方面做的不到位,或者处理方法不正确或者是处理过程复杂,耗时太久而造成图像达不到使用者要求,甚至是使处理后的图像往“丑”的方向进一步发展。
[0004]综上所述,目前的一些对图像美容方面的技术还远不能满足人们的需要,开发一种高效、有效的美容方法很有必要。


【发明内容】

[0005]本发明为解决上述问题,提供了一种效率较高的并且效果明显的数字图像的快速美容方法,可很大程度上对图像进行美化,使得图像更加符合使用者的审美观念,并且通过对原始图像进行肤色识别,使算法不对黑色像素进行处理,从而保留了头发、眼睛等关键部位不被处理,使得整个美容的效果更佳、更自然。
[0006]为实现上述目的,本发明采用的技术方案为:
[0007]—种数字图像的快速美容方法,其特征在于,包括以下步骤:
[0008]步骤1.从本地或远程读取原始图像;
[0009]步骤2.对原始图像进行高斯模糊处理,得到模糊图像;
[0010]步骤3.依次提取原始图像单个像素的绿色通道值G,该绿色通道与所述模糊图像的对应像素进行线性光混合,得到第一绿色通道值Gl ;
[0011]步骤4.所述经过线性光混合后的第一绿色通道值Gl与其自身Gl进行连续的强光混合,得到第二绿色通道值G2 ;
[0012]步骤5.将第二绿色通道值G2与高斯模糊后的红色通道值R和蓝色通道值B相结合,计算出第三绿色通道值G3 ;
[0013]步骤6.对原始图像进行颜色映射,得到美白图像;
[0014]步骤7.对原始图像进行肤色识别,得到对应的肤色概率值;
[0015]步骤8.以所述第三绿色通道值G3与对应的肤色概率值相乘得到的积作为透明度,对原始图像与所述美白图像进行透明度混合,形成美容图像。
[0016]作为优选,所述步骤3中线性光混合的公式为:
[0017]Gl = (2*G_2*fg+l)/2
[0018]其中,Gl是指单个像素经过线性光混合后的绿色通道的颜色值,G是指单个像素的原始图像的绿色通道的颜色值,fg是指步骤2中高斯模糊后的图像中对应相同位置的像素的绿色通道的颜色值。
[0019]作为优选,所述步骤4中的连续的强光混合,其连续次数为I至10次。
[0020]作为优选,所述步骤4中强光混合的公式为:
[0021]resultColor = ((base) <=128? (base)*(base)/128:255-(255-(base))*(255-(base) )/128)
[0022]其中,resultColor为强光计算后的结果,base为步骤3中线性光混合计算后得到的G1。
[0023]作为优选,所述步骤5中的计算方法为:
[0024]if (Red < 0.5)
[0025]{
[0026]alphaValue = 1.0- (0.5-Red) *2.0 ;
[0027]}
[0028]Else
[0029]{
[0030]alphaValue =1.0;
[0031]}
[0032]G3 = G2*max(0.0, alphaValue_Blue*0.0019608);
[0033]其中,G3为第三绿色通道值,G2的初始值为所述步骤4中强光混合计算的结果,Red为高斯模糊后的红色通道的值,Blue为高斯模糊后的蓝色通道的值。
[0034]作为优选,所述步骤6中,对原始图像进行颜色映射,得到美白图像;其中,颜色映射的公式为:
[0035]oralColor = arrayCurve[oralColor];
[0036]其中arrayCurve为预定的一组颜色映射,oralColor为原始图像中单个像素的红色通道、绿色通道、蓝色通道的颜色值。
[0037]作为优选,所述的步骤7中对原始图像进行肤色识别,得到对应的肤色概率值,进一步包括以下步骤:
[0038]步骤71.对图像进行人脸识别,获取人脸区域;
[0039]步骤72.对所述的人脸区域进行均值计算,获取平均肤色;
[0040]步骤73.根据所述的平均肤色计算当前图像的肤色概率映射表;
[0041]步骤74.根据所述的肤色概率映射表对当前图像进行肤色识别,并获得当前图像的肤色概率值。
[0042]作为优选,所述的步骤72进一步包括:
[0043]步骤721.初始化原始皮肤模型;
[0044]步骤722.计算整个图像的颜色均值,作为初始皮肤的阈值;
[0045]步骤723.根据获取得的初始皮肤的阈值计算人脸区域的平均肤色。
[0046]作为优选,所述的步骤722进一步包括:
[0047]步骤7221.遍历整个图像的像素点,将红色通道、绿色通道、蓝色通道的颜色值累力口,得到颜色累加和;
[0048]步骤7222.将颜色累加值除以像素点的总数,得到红色通道、绿色通道、蓝色通道的均值,作为初始皮肤的阈值。
[0049]作为优选,所述的步骤723进一步包括:
[0050]步骤7231.根据如下公式计算平均肤色的黑白值:
[0051]GRAY I = 0.299*RED+0.587*GREEN+0.114*BLUE
[0052]其中,GRAYl为灰度图的当前像素点的灰度值;RED、GREEN、BLUE分别为图像的当前像素点的红、绿、蓝通道的颜色值;
[0053]步骤7232.将所述的黑白值作为阈值,用来排除人脸区域非皮肤的部分;
[0054]步骤7233.依次遍历人脸区域里的像素点的颜色值,根据如下公式获得平均肤色:
[0055]skin = SkinModel[red][blue];
[0056]其中,skin为经过皮肤模型的颜色映射后的皮肤值;SkinModel为初始化原始皮肤模型;red为红色通道的颜色值;blue为蓝色通道的颜色值。
[0057]作为优选,所述的步骤73中根据所述的平均肤色计算当前图像的肤色概率映射表,所述的肤色概率映射表通过如下步骤获取:
[0058]步骤731.创建肤色概率映射表,大小为256*256 ;
[0059]步骤731.依次对肤色概率映射表进行赋值,具体伪代码如下;
[0060]预设临时变量1、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue、OffsetJ为整数类型;
[0061]肤色概率映射表的变量为SkinProbability[256] [256];
[0062]SkinRed为步骤7222计算得到的红色通道的均值;SkinBlue为步骤7222计算得到的蓝色通道的均值;
[0063]预设SkinRed_Left 的值,计算公式为:SkinRed_Left = SkinRed-128 ;
[0064]For(i = O ;i < 256 ;i++)
[0065]{
[0066]计算Offset 的值,公式为 Offset = max (0, min (255, i_SkinRed_Left));
[0067]判断Offset的值是否小于128,如果小于的,话则AlphaValue = 0ffset*2 ;如果大于等于128的话,则AlphaValue = 255 ;
[0068]For(j = O ;j < 256 ;j++)
[0069]{
[0070]计算OffsetJ 的值,公式为 OffsetJ = max (O, j-SkinBlue);
[0071]计算TempAlphaValue 的值,公式为 TempAlphaValue =max (AlphaValue-(OffsetJ*2),0);
[0072]判断TempAlphaValue 的值。如果大于 160 的话,则 SkinProbability [i] [j]的值为 255 ;
[0073]如果小于90的话,则SkinProbability [i] [j]的值为0;否贝丨JSkinProbability[i] [j]的值为 TempAlphaValue+30 ;
[0074]}
[0075]}
[0076]。
[0077]作为优选,所述的步骤74中根据所述的肤色概率映射表对当前图像进行肤色识另IJ,并获得当前图像的肤色概率值,计算方法如下:
[0078]skinColor = SkinProbability[red][blue];
[0079]其中,skinColor为当前图像的肤色概率值;SkinProbability为肤色概率映射表;red为像素点的红色通道的颜色值;blue为像素点的蓝色通道的颜色值。
[0080]作为优选,所述的步骤71中对图像进行人脸识别,获取人脸区域,当人脸区域识别失败时,则将整个图像定义为人脸区域。
[0081]作为优选,所述步骤8中以所述第三绿色通道值G3与对应的肤色概率值相乘得到的积作为透明度将原始图像与所述美白图像进行透明度混合的公式如下:
[0082]resultColor = oralColor*alpha+(1.0-alpha)^arrayColor ;
[0083]其中resultColor为处理后的美容图像的颜色值;oralColor为原始图像的颜色值;arrayColor为步骤6中得到的美白图像的颜色值;alpha为步骤5中得到的G3进行归一化的值乘以其对应的肤色概率值得到的积,所述归一化即做以下公式:G3/255.0。
[0084]本发明的有益效果如下:
[0085]本发明可以广泛应用于图像处理领域,可用在目前的个人电脑或者是手机、平板等平台上的图像后期处理软件中,也可以用在带数码摄像头的一些设备的相机实时滤镜中。总体来说,可以根据软件设计者的意愿用于不同的图像处理软件领域。并且通过对原始图像进行肤色识别,并以所述第三绿色通道值G3与肤色识别所得到的对应的肤色概率值相乘得到的积作为透明度将原始图像与所述美白图像进行透明度混合,从而形成美容图像,使算法不对黑色像素进行处理,从而保留了头发、眼睛等关键部位不被处理,使得整个美容的效果更佳、更自然。

【专利附图】

【附图说明】
[0086]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0087]图1为本发明数字图像的快速美容方法的具体流程图。

【具体实施方式】
[0088]为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0089]如图1所示,本发明的一种数字图像的快速美容方法,其特征在于,包括以下步骤:
[0090]步骤1.从本地或远程读取原始图像;
[0091]步骤2.对原始图像进行高斯模糊处理,得到模糊图像;
[0092]步骤3.依次提取原始图像单个像素的绿色通道值G,该绿色通道与所述模糊图像的对应像素进行线性光混合,得到第一绿色通道值Gl ;
[0093]步骤4.所述经过线性光混合后的第一绿色通道值Gl与其自身Gl进行连续的强光混合,得到第二绿色通道值G2 ;
[0094]步骤5.将第二绿色通道值G2与高斯模糊后的红色通道值R和蓝色通道值B相结合,计算出第三绿色通道值G3 ;
[0095]步骤6.对原始图像进行颜色映射,得到美白图像;
[0096]步骤7.对原始图像进行肤色识别,得到对应的肤色概率值;
[0097]步骤8.以所述第三绿色通道值G3与对应的肤色概率值相乘得到的积作为透明度,对原始图像与所述美白图像进行透明度混合,形成美容图像。
[0098]步骤2中的高斯模糊是用正态分布计算图像中每个像素的变换,
[0099]在N维空间的正态分布方程为:
[0100]C?|r) =....................-................................................................—ζ~* 扉*.I
[0101]在二维空间的正态分布方程为:

J1.\? -.!*.
[0102]CIitI, P) =
% - #
[0103]其中r是模糊半径r2 = u2+v2, σ是正态分布的标准偏差,u是原像素点在χ轴上的位置偏移值,V是原像素点在y轴上的位置偏移值。
[0104]步骤3中线性光混合的公式为:
[0105]Gl = (2*G_2*fg+l)/2
[0106]其中,Gl是指单个像素经过线性光混合后的绿色通道的颜色值,G是指单个像素的原始图像的绿色通道的颜色值,fg是指步骤2中高斯模糊后的图像中对应相同位置的像素的绿色通道的颜色值。
[0107]步骤4中的强光混合步骤主要是为了将图像颜色的差异拉大,从而达到美容的效果;连续的强光混合的次数为I至10次之间,连续的强光混合的次数较少时,美容效果较不明显;连续的强光混合的次数较多时,美容效果容易失真;但都能够实现美容的目的;本实施例中,连续的强光混合的次数为3次,其能够更好地解决技术问题并达到更好的美容效果;本领域技术人员很可能根据不同的图像美容方案选择不同的混合次数。其强光混合的公式为:
[0108]resultColor = ((base) <=128? (base)*(base)/128:255-(255-(base))*(255-(base) )/128)
[0109]其中,resultColor为强光计算后的结果,base为步骤3中线性光混合计算后得到的G1。
[0110]步骤5中的计算方法的公式为:
[0111]if (Red < 0.5)
[0112]{
[0113]alphaValue = 1.0- (0.5-Red) *2.0 ;
[0114]}
[0115]Else
[0116]{
[0117]alphaValue =1.0;
[0118]}
[0119]G3 = G2*max(0.0, alphaValue_Blue*0.0019608);
[0120]其中,G3为第三绿色通道值,G2的初始值为步骤4中强光混合计算的结果,Red为高斯模糊后的红色通道的值,Blue为高斯模糊后的蓝色通道的值。
[0121]步骤6中,对原始图像进行颜色映射,得到美白后的图像;颜色映射的公式为:
[0122]oralColor = arrayCurve[oralColor];
[0123]其中arrayCurve为预定的一组颜色映射,oralColor为原始图像中单个像素的红色通道、绿色通道、蓝色通道的颜色值。
[0124]步骤7中,所述的步骤7中对原始图像进行肤色识别,得到对应的肤色概率值,进一步包括以下步骤:
[0125]步骤71.对图像进行人脸识别,获取人脸区域;当人脸区域识别失败时,将整个图像定义为人脸区域;
[0126]步骤72.对所述的人脸区域进行均值计算,获取平均肤色;
[0127]步骤73.根据所述的平均肤色计算当前图像的肤色概率映射表;
[0128]步骤74.根据所述的肤色概率映射表对当前图像进行肤色识别,并获得当前图像的肤色概率值。
[0129]步骤71中涉及到的人脸识别,由于不涉及本发明的主要内容,因此不进行赘述。本实施例中,人脸识别方法采用常规方法,比如文献“P.V1la and M.Jones.RapidObject Detect1n using a Boosted Cascade of Simple Features,in:Computer Vis1nand Pattern Recognit1n,2001.CVPR 2001.Proceedings of the 2001IEEE ComputerSociety Conference on”。根据定位获得人脸的大致区域位置。
[0130]所述的步骤72进一步包括:
[0131]步骤721.初始化原始皮肤模型;
[0132]步骤722.计算整个图像的颜色均值,作为初始皮肤的阈值;
[0133]步骤723.根据获取得的初始皮肤的阈值计算人脸区域的平均肤色。
[0134]步骤721中,初始化原始皮肤模型的步骤如下:
[0135]步骤7211.创建肤色模型,大小为256*256 ;
[0136]步骤7212.依次对肤色模型进行赋值,具体伪代码如下;
[0137]预设临时变量AlphaValue、nMax、1、j为整数类型。
[0138]肤色模型变量为SkinModel [256] [256]
[0139]For(i = O ;i < 256 ;i++)
[0140]{
[0141]判断i是否大于128,如果大于128,则AlphaValue为255,否则为i*2 ;
[0142]计算获得nMax 的值,计算公式为 nMax = min (256, AlphaValue*2);
[0143]For(j = 0 ;j < nMax ;j++)
[0144]{
[0145]计算对应位置的肤色模型的值,计算公式为SkinModel [i] [j]=AlphaValue-(j/2);
[0146]}
[0147]For (j = nMax.j < 256 ; j++)
[0148]{
[0149]初始对应位置的肤色模型的值为O ;
[0150]}
[0151]}
[0152]。
[0153]如以程度代码形式表示,则初始化原始皮肤模型的公式如下:
[0154]BYTE SkinModel[256][256];
[0155]BYTE AlphaValue = 255 ;
[0156]for(i = O ;i < 256 ;i++)
[0157]{
[0158]AlphaValue = (i < 128 ? (i << I):255);
[0159]int nMax = min(256, (AlphaValue << I));
[0160]for (j = 0 ;j < nMax ;++j)
[0161]{
[0162]SkinModel [i] [j] = AlphaValue- (j > > I);
[0163]}
[0164]for (j = nMax ; j < 256 ;++j)
[0165]{
[0166]SkinModel [i] [j] = 0 ;
[0167]}
[0168]}。
[0169]所述的步骤722进一步包括:
[0170]步骤7221.遍历整个图像的像素点,将红色通道、绿色通道、蓝色通道的颜色值累力口,得到颜色累加和;
[0171]步骤7222.将颜色累加值除以像素点的总数,得到红色通道、绿色通道、蓝色通道的均值,作为初始皮肤的阈值。
[0172]所述的步骤723进一步包括:
[0173]步骤7231.根据如下公式计算平均肤色的黑白值:
[0174]GRAY I = 0.299*RED+0.587*GREEN+0.114祁LUE
[0175]其中,GRAYl为灰度图的当前像素点的灰度值;RED、GREEN、BLUE分别为图像的当前像素点的红、绿、蓝通道的颜色值;
[0176]步骤7232.将所述的黑白值作为阈值,用来排除人脸区域非皮肤的部分;
[0177]步骤7233.依次遍历人脸区域里的像素点的颜色值,根据如下公式获得平均肤色:
[0178]skin = SkinModel [red] [blue];
[0179]其中,skin为经过皮肤模型的颜色映射后的皮肤值;SkinModel为初始化原始皮肤模型;red为红色通道的颜色值;blue为蓝色通道的颜色值。
[0180]所述的步骤73中根据所述的平均肤色计算当前图像的肤色概率映射表,所述的肤色概率映射表通过如下步骤获取:
[0181]步骤731.创建肤色概率映射表,大小为256*256 ;
[0182]步骤731.依次对肤色概率映射表进行赋值,具体伪代码如下;
[0183]预设临时变量1、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue、OffsetJ为整数类型;
[0184]肤色概率映射表的变量为SkinProbability[256] [256];
[0185]SkinRed为步骤7222计算得到的红色通道的均值;SkinBlue为步骤7222计算得到的蓝色通道的均值;
[0186]预设SkinRed_Left 的值,计算公式为:SkinRed_Left = SkinRed-128 ;
[0187]For(i = O ;i < 256 ;i++)
[0188]{
[0189]计算Offset 的值,公式为 Offset = max (0, min (255, i_SkinRed_Left));
[0190]判断Offset的值是否小于128,如果小于的,话则AlphaValue = 0ffset*2 ;如果大于等于128的话,则AlphaValue = 255 ;
[0191]For(j = O ;j < 256 ;j++)
[0192]{
[0193]计算OffsetJ 的值,公式为 OffsetJ = max (O, j-SkinBlue);
[0194]计算TempAlphaValue 的值,公式为 TempAlphaValue = max (AlphaValue-(OffsetJ*2),O);
[0195]判断TempAlphaValue 的值。如果大于 160 的话,则 SkinProbability [i] [j]的值为 255 ;
[0196]如果小于90的话,则SkinProbability [i] [j]的值为O;否贝丨JSkinProbability[i] [j]的值为 TempAlphaValue+30 ;
[0197]}
[0198]}
[0199]。
[0200]如以程度代码形式表示,所述的肤色概率映射表具体通过如下公式获取:
[0201]BYTE SkinModel[256][256];
[0202]BYTE AlphaValue = 255 ;
[0203]int SkinRed_Left = SkinRed-128 ;
[0204]for (int i = 0 ;i < 256 ;i++)
[0205]{
[0206]int Offset = max (0, min (255, (i_SkinRed_Left)));
[0207]if (Offset < 128)
[0208]{
[0209] AlphaValue = (Offset << I);
[0210]}
[0211]else
[0212]{
[0213]AlphaValue = 255 ;
[0214]}
[0215]for (int j = 0 ; j < 256 ; j++)
[0216]{
[0217]int OffsetJ = max(0, (j-SkinBlue));
[0218]int TempAlphaValue = max (AlphaValue-(Off set J >> 1),0);
[0219]if (TempAlphaValue > 160)
[0220]{
[0221]SkinModel [i] [j] = 255 ;
[0222]}
[0223]el se if (TempAlphaValue < 90)
[0224]{
[0225]SkinModel [i] [j] = 0 ;
[0226]}
[0227]else
[0228]{
[0229]SkinModel[i][j] = TempAlphaValue+30 ;
[0230]}
[0231]}
[0232]}
[0233]其中,SkinRed和SkinBlue为步骤7222中获取的红色通道和蓝色通道的均值。
[0234]所述的步骤74中根据所述的肤色概率映射表对当前图像进行肤色识别,并获得当前图像的肤色概率值,计算方法如下:
[0235]skinColor = SkinProbability[red][blue]
[0236]其中,skinColor为当前图像的肤色概率值;SkinProbability为肤色概率映射表;red为像素点的红色通道的颜色值;blue为像素点的蓝色通道的颜色值。
[0237]所述步骤8中以所述第三绿色通道值G3与对应的肤色概率值相乘得到的积作为透明度将原始图像与所述美白图像进行透明度混合的公式如下:
[0238]resultColor = oralColor*alpha+(1.0-alpha)^arrayColor ;
[0239]其中resultColor为处理后的美容图像的颜色值;oralColor为原始图像的颜色值;arrayColor为步骤6中得到的美白图像的颜色值;alpha为步骤5中得到的G3进行归一化的值乘以其对应的肤色概率值得到的积,所述归一化即做以下公式:G3/255.0。
[0240]下面结合附图1对整个美容方法的各个步骤进行详细说明,其包括:
[0241]步骤1:从本地或远程读取原始图像,图像包括单张图像或从视频上截取的单帧图像或GIF动画里的单帧;
[0242]步骤2:对原始图像进行高斯模糊,其中,初始值i = 0,j = 0,w为原始图像的宽,h为原始图像的高;若i < h,判断是否j < W,否则程序结束;若j < W,进入下一步程序,否则进行i = ++计算,并重新判断是否i < h;
[0243]步骤3:依次提取原始图像高斯模糊后像素点的绿色通道值G与fg,对其进行线性光混合得到第一绿色通道值Gl ;这里使用绿光是为了避免计算亮度的时间,提高了运算速度。
[0244]步骤4:对步骤3得到的Gl与自身进行连续3次的强光混合,得到第二绿色通道值G2 ;这个步骤的作用是拉大对比度,亮的更亮,暗的更暗;
[0245]步骤5:将第二绿色通道值G2与高斯模糊后的红色通道值R和蓝色通道值B相结合,根据一种新的计算方法重新计算出第三绿色通道值G3 ;
[0246]步骤6:将原始图像进行美白的颜色映射,得到美白图像。
[0247]步骤7.对原始图像进行肤色识别,得到对应的肤色概率值;
[0248]步骤8.以所述第三绿色通道值G3与对应的肤色概率值相乘得到的积作为透明度将原始图像与所述美白图像进行透明度混合,形成美容图像。
[0249]通过以上的实施方式的描述,数字图像处理领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以借助软件及必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
[0250]上述说明示出并描述了本发明的优选实施例,如前,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
【权利要求】
1.一种数字图像的快速美容方法,其特征在于,包括以下步骤: 步骤1.从本地或远程读取原始图像; 步骤2.对原始图像进行高斯模糊处理,得到模糊图像; 步骤3.依次提取原始图像单个像素的绿色通道值G,该绿色通道与所述模糊图像的对应像素进行线性光混合,得到第一绿色通道值Gl ; 步骤4.所述经过线性光混合后的第一绿色通道值Gl与其自身Gl进行连续的强光混合,得到第二绿色通道值G2; 步骤5.将第二绿色通道值G2与高斯模糊后的红色通道值R和蓝色通道值B相结合,计算出第三绿色通道值G3; 步骤6.对原始图像进行颜色映射,得到美白图像; 步骤7.对原始图像进行肤色识别,得到对应的肤色概率值; 步骤8.以所述第三绿色通道值G3与对应的肤色概率值相乘得到的积作为透明度,对原始图像与所述美白图像进行透明度混合,形成美容图像。
2.根据权利要求1所述的一种数字图像的快速美容方法,其特征在于:所述步骤3中线性光混合的公式为:
Gl = (2*G-2*fg+l)/2 其中,Gl是指单个像素经过线性光混合后的绿色通道的颜色值,G是指单个像素的原始图像的绿色通道的颜色值,fg是指步骤2中高斯模糊后的图像中对应相同位置的像素的绿色通道的颜色值。
3.根据权利要求1所述的一种数字图像的快速美容方法,其特征在于:所述步骤4中的连续的强光混合,其连续次数为I至10次。
4.根据权利要求3所述的一种数字图像的快速美容方法,其特征在于:所述步骤4中强光混合的公式为:
resultColor = ((base) < = 128 ? (base) * (base)/128:255-(255-(base)) * (255-(base))/128) 其中,resultColor为强光计算后的结果,base为步骤3中线性光混合计算后得到的Gl0
5.根据权利要求1所述的一种数字图像的快速美容方法,其特征在于:所述步骤5中的计算方法为:
if (Red < 0.5)
{
alphaValue = 1.0- (0.5-Red) *2.0 ;
}
Else
{
alphaValue = 1.0;
}
G3 = G2*max(0.0, alphaValue_Blue*0.0019608); 其中,G3为第三绿色通道值,G2的初始值为所述步骤4中强光混合计算的结果,Red为高斯模糊后的红色通道的值,Blue为高斯模糊后的蓝色通道的值。
6.根据权利要求1所述的一种数字图像的快速美容方法,其特征在于:所述步骤6中,对原始图像进行颜色映射,得到美白图像;其中,颜色映射的公式为:
oralColor = arrayCurve[oralColor]; 其中arrayCurve为预定的一组颜色映射,oralColor为原始图像中单个像素的红色通道、绿色通道、蓝色通道的颜色值。
7.根据权利要求1所述的一种数字图像的快速美容方法,其特征在于:所述的步骤7中对原始图像进行肤色识别,得到对应的肤色概率值,进一步包括以下步骤: 步骤71.对图像进行人脸识别,获取人脸区域; 步骤72.对所述的人脸区域进行均值计算,获取平均肤色; 步骤73.根据所述的平均肤色计算当前图像的肤色概率映射表; 步骤74.根据所述的肤色概率映射表对当前图像进行肤色识别,并获得当前图像的肤色概率值。
8.根据权利要求7所述的一种数字图像的快速美容方法,其特征在于,所述的步骤72进一步包括: 步骤721.初始化原始皮肤模型; 步骤722.计算整个图像的颜色均值,作为初始皮肤的阈值; 步骤723.根据获取得的初始皮肤的阈值计算人脸区域的平均肤色。
9.根据权利要求8所述的一种数字图像的快速美容方法,其特征在于,所述的步骤722进一步包括: 步骤7221.遍历整个图像的像素点,将红色通道、绿色通道、蓝色通道的颜色值累加,得到颜色累加和; 步骤7222.将颜色累加值除以像素点的总数,得到红色通道、绿色通道、蓝色通道的均值,作为初始皮肤的阈值。
10.根据权利要求8所述的一种数字图像的快速美容方法,其特征在于,所述的步骤723进一步包括: 步骤7231.根据如下公式计算平均肤色的黑白值:
GRAY I = 0.299*RED+0.587*GREEN+0.114祁LUE 其中,GRAYl为灰度图的当前像素点的灰度值;RED、GREEN、BLUE分别为图像的当前像素点的红、绿、蓝通道的颜色值; 步骤7232.将所述的黑白值作为阈值,用来排除人脸区域非皮肤的部分; 步骤7233.依次遍历人脸区域里的像素点的颜色值,根据如下公式获得平均肤色: skin = SkinModel[red][blue]; 其中,skin为经过皮肤模型的颜色映射后的皮肤值;SkinModel为初始化原始皮肤模型;red为红色通道的颜色值;blue为蓝色通道的颜色值。
11.根据权利要求7所述的一种数字图像的快速美容方法,其特征在于,所述的步骤73中根据所述的平均肤色计算当前图像的肤色概率映射表,所述的肤色概率映射表通过如下步骤获取: 步骤731.创建肤色概率映射表,大小为256*256 ; 步骤731.依次对肤色概率映射表进行赋值,具体伪代码如下; 预设临时变量 1、j、SkinRed_Left、AlphaValue、Offset、TempAlphaValue> OffsetJ 为整数类型; 肤色概率映射表的变量为SkinProbability [256] [256]; SkinRed为步骤7222计算得到的红色通道的均值;SkinBlue为步骤7222计算得到的蓝色通道的均值; 预设 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 ;
}
}
ο
12.根据权利要求7所述的一种数字图像的快速美容方法,其特征在于,所述的步骤74中根据所述的肤色概率映射表对当前图像进行肤色识别,并获得当前图像的肤色概率值,计算方法如下:
skinColor = SkinProbability[red][blue] 其中,skinColor为当前图像的肤色概率值;SkinProbability为肤色概率映射表;red为像素点的红色通道的颜色值;blue为像素点的蓝色通道的颜色值。
13.根据权利要求7所述的一种数字图像的快速美容方法,其特征在于,所述的步骤71中对图像进行人脸识别,获取人脸区域,当人脸区域识别失败时,则将整个图像定义为人脸区域。
14.根据权利要求1所述的一种数字图像的快速美容方法,其特征在于:所述步骤8中以所述第三绿色通道值G3与对应的肤色概率值相乘得到的积作为透明度将原始图像与所述美白图像进行透明度混合的公式如下:
resultColor = oralColor氺alpha+(1.0-alpha)^arrayColor ; 其中resultColor为处理后的美容图像的颜色值;oralColor为原始图像的颜色值;arrayColor为步骤6中得到的美白图像的颜色值;alpha为步骤5中得到的G3进行归一化的值乘以其对应的肤色概率值得到的积,所述归一化即做以下公式:G3/255.0。
【文档编号】G06T5/00GK104282002SQ201410488602
【公开日】2015年1月14日 申请日期:2014年9月22日 优先权日:2014年9月22日
【发明者】张伟, 傅松林, 张长定, 李志阳 申请人:厦门美图网科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1