一种自动生成日漫肖像的方法与流程

文档序号:12864491阅读:1220来源:国知局
一种自动生成日漫肖像的方法与流程

本发明涉及图像处理的技术领域,尤其是指一种自动生成日漫肖像的方法。



背景技术:

近年来,随着数字媒体和媒介,日本漫画和动漫越来越广泛地为中国大众接触,也越来越受中国大众尤其是年轻人的喜欢和追捧,“二次元”文化蓬勃发展,其中一个重要的原因就是日本漫画不同于欧美风和中国风的漫画风格和技巧。但是,日漫的绘画需要一定的绘画天分和绘画技巧,没有绘画基础的人想画出满意的日漫往往需要耗费大量时间。除此之外,在移动终端照片美化和各色娱乐应用琳琅满目的今天,人脸的卡通化、素描化越来越受用户的喜欢,相关技术的研究也越来越多。

相关研究工作中,专利cn104077742a中将待合成人脸照片和素描样本划分为互不重叠的像素块,然后提取人脸各个部位的gabor特征,计算像素块的stein散度,采用最优权值的的方法合成各个素描像素块;专利cn104123741a中,通过计算二值边缘图像中的非边缘像素点到边缘像素点的距离变换值,来计算训练库中人脸图像和待生成素描人脸图像同一面部器官的距离变换,衡量他们之间的相似度,从而每个部位的人脸素描器官合成素描图像;但是以上方法往往保留了人脸的局部特征,而丢失了人脸全局关系,而且生成的都是素描效果或类似卡通的人脸素描,风格比较单一。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供了一种自动生成日漫肖像的方法,可以根据真实人脸生成日漫这种广受欢迎的二次元漫画形象,具有很高的娱乐性和应用价值。

为实现上述目的,本发明所提供的技术方案为:一种自动生成日漫肖像的方法,包括以下步骤:

s1、人脸和人脸特征点的检测及人脸部位的分割,步骤如下:

s1.1、利用基于haar特征训练得到的人脸分类器,对待生成日漫肖像的图片进行人脸检测;

s1.2、对s1.1中检测得到的人脸区域进行人脸特征点检测,得到包括左眼右眼各6个点,左眉右眉各5个点,鼻子9个点,嘴巴20个点,人脸轮廓17个点;

s1.3、用s1.2中得到的特征点,将左眼和右眼区域截取出来,获得人脸眼睛区域,将左眉和右眉区域截取出来,获得人脸眉毛区域;

s1.4、将s1.1中检测得到的人脸区域范围扩大到包括头发的区域,先做头发长短的判断,根据下颚以下是否有头发来判断是长发还是短发;

s1.5、在s1.4中判断出长短发的基础上,构造能量函数,使用图割法优化能量函数进行头发区域的分割定位;

s1.6、根据s1.2得到的左右两眼的特征点,找出两眼的中心位置,通过中心位置垂直方向的梯度变化来判断该人脸是否带眼镜;

s2、将日漫中辨识度达到要求的人脸区域,包括眼镜和头发,与数据集中对应的人脸区域进行匹配,数据集中每个人脸区域都有其对应的漫画人脸区域,步骤如下:

s2.1、对s1.3中得到的人眼区域,统计图像的梯度方向局部特征值,提取出图像的hog特征作为模板,再提取数据库中的候选人眼图像的hog特征,一一进行距离计算,找出距离最小的候选人眼图像,候选人眼图像对应的漫画人眼就是匹配得到的漫画图像;

s2.2、对s1.5中分割出来的头发掩模,及数据集中的头发漫画的掩模,一一计算图像的二阶和三阶矩,然后构造7维的hu矩特征向量,再计算它们之间的欧式距离,距离最小者为匹配结果;

s3、人脸其他部位漫画笔画的生成,步骤如下:

s3.1、用s1.2中得到的眉毛区域,计算图像垂直方向的梯度,浓密眉毛的垂直梯度总能量大于细眉毛的垂直梯度总能量,由此来区分浓眉和细眉,然后通过b样条曲线连接眉毛特征点来连接特征点得到眉毛的笔画;

s3.2、根据s1.2中得到的鼻子的位置,取其中两个点位置画一条短直线即可得到鼻子;

s3.3、通过嘴巴的特征点之前的对应关系,判断嘴巴的张闭状态,然后生成嘴巴漫画;

s3.4、根据s1.2中得到脸颊轮廓的特征点,将下巴最底端两边各两个特征点舍弃,用b样条曲线拟合剩余的点,使得连接得到的漫画脸颊轮廓下巴更加尖锐;

s4、根据原来人脸的各个部位之间对应的几何关系,将s2和s3中匹配得到和生成的漫画进行组合,得到最终的日漫风格的人脸漫画。

在s1.4中,所述先做发型的判断,根据下颚以下是否有头发来判断是长发还是短发,具体如下:

对测试的人脸图像,利用s1.2中得到的人脸特征点,找出人脸区域中的三个点,分别为脖颈两侧与人脸的交界点和下颚底端,三个点的坐标为:p1(x1,y1),p2(x2,y2),p3(x3,y3),其中,x1,x2,x3为横坐标,y1,y2,y3为纵坐标;

将测试的人脸图像转化为灰度图像,因为头发的颜色相对皮肤和背景通常都是颜色较深的部分,所以利用训练数据通过大量实验,能够确定一个灰度阈值t,利用此阈值做图像二值化,小于t取0,大于t取1,得到的二值化图像,能够将头发这种灰度值达不到要求的区域与其他区域区分开;

统计每一行值为0的像素个数,从而得到每一行值为0的像素点个数,得到头发统计直方图histv,通过判断下颚底端及下颚底端设定距离中每一行是否存在像素为0的点,即下颚底端及下颚底端设定距离的histv是否大于0来判断下颚底端和下颚底端设定距离中是否存在头发,从而判断头发的长短。

在s1.5中,所述在s1.4中判断长短发的基础上,构造能量函数,使用图割法进行头发区域的定位,具体如下:

首先在已经标注好头发区域的训练集中,将训练数据分为长发和短发两种类型的图片,对长发和短发,分别统计人脸图像头发位置的先验分布,对于像素i对应的标记结果,用p(li)表示,li为标签,假设整幅图像的标签为l={l1,l2,...,li,...,ln},li为0表示头发区域,1表示非头发区域,p(li)能够通过计算训练图像中该像素位置属于头发区域的次数和训练图像数量之间的比值得到;

接着,要构造图割法的能量函数,图割法的能量函数主要由两部分组成,一部分为区域项r(l),一部分为边界项b(l):

e(l)=ar(l)+b(l)

其中,

其中,区域项r(l)利用训练集中的先验分布计算,p(li)为像素i分配标签li的概率,为图像中每个像素x分配使其概率最大的标签,为使能量最小,所以取负数;而在边界项b(l)中,p和q为邻域像素,ip和iq分别为p和q的像素值,n为图像所有像素集合,δ(lp,lq)为示性函数,lp和lq为像素p和q的标签,b<p,q>用来衡量像素p和q之间的相似性,σ2为像素的方差,b<p,q>越小表示像素p和q差别越大;

对于图割法的能量函数e(l),使用最大流法对能量函数进行优化,得到最终整幅图像的标签结果,从而得到分割出来的头发区域。

在s1.6中,所述找出两眼的中心位置,通过中心位置垂直方向的梯度变化来判断该人脸是否带眼镜,具体如下:

利用s1.2中得到的人眼特征点的位置,计算出两只眼镜的正中心位置,在正中心位置,取一块矩形区域,因为当存在眼镜的时候,眼镜正中间的镜框因为颜色相对皮肤都比较深,因此,镜框所在位置一整条横线的梯度都会比较大;

对这个矩形区域,转化为灰度图像,计算整幅图像在垂直方向上的梯度,然后获取这个矩形区域每一列上梯度最大的两个值,并且将最大值和第二大值的纵坐标分别记为ai∈a,bi=b,i=1,2,...,n,其中n为图像列数,a和b为坐标集合,a和b集合的均值分别为μa和μb,接着分别计算像素纵坐标a和b的方差var(a)、var(b):

若存在眼镜,眼镜正中间镜框处的梯度变化主要集中在同一个竖直坐标附近,所以这个竖直坐标的大小会比较集中,所以当竖直坐标集合a和b的方差var(a)、var(b)都小于设定的阈值的话,即可判定该人脸存在眼镜。

在s3.1中,所述用s1.2中得到的眉毛区域,计算图像垂直方向的梯度,浓密眉毛的垂直梯度总能量大于细眉毛的垂直梯度总能量,由此来区分浓眉和细眉,通过b样条曲线连接特征点来得到眉毛的笔画,而生成的浓眉和细眉的曲线具体如下:

对于细眉,直接通过b样条曲线连接s1.2中得到的眉毛的五个点;

对于浓眉,首先通过b样条曲线拟合s1.2中得到的眉毛的五个点,然后再连接第一个点和第五个点。

在s3.4中,所述根据s1.2中得到脸颊轮廓的特征点,将下巴两边的部分特征点舍弃,使得连接得到的漫画脸颊轮廓下巴更加尖锐,具体如下:

对检测到的特征点,舍弃下巴最底端两边各两个点,用b样条曲线拟合剩余的点,即可得到日漫中人物下巴比较尖锐的效果。

本发明与现有技术相比,具有如下优点与有益效果:

1、与现有的生成卡通人脸具有明显的不同,本发明生成的是日漫风格的人脸漫画,日漫是现在最受欢迎的漫画风格,日漫风格人脸的生成娱乐性更高。

2、为生成的动漫肖像增加了头发区域,使生成的效果更栩栩如生。

3、简化了一些区分性并不明显的特征,处理特点最为突出的人脸部位,简化了算法整体结构。

附图说明

图1为本发明方法流程图。

图2为本发明步骤s1.6中所述的检测人脸是否带有眼镜的方法中所提及的示意图。

图3a为本发明步骤s3.1中所述的得到细眉漫画笔画的示意图。

图3b为本发明步骤s3.1中所述的得到浓眉漫画笔画的示意图。

图4为本发明步骤s3.4中所述的绘画人脸脸颊轮廓方法的示意图。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

如图1所示,本实施例所提供的自动生成日漫肖像的方法,可以使用软件编程技术自动实现人脸漫画生成的步骤,对输入的一张待生成漫画的人脸照片,具体步骤如下:

s1、人脸检测、人脸特征点检测和人脸部位分割:

s1.1、用基于haar特征的分类器,对输入的人脸照片进行人脸检测,找出照片中人脸的位置。

s1.2、对s1.1中检测得到的人脸区域,使用回归的局部二值特征的方法进行人脸特征点检测,得到68各特征点,包括左眼右眼各6个点,左眉右眉各5个点,鼻子9个点,嘴巴20个点,人脸轮廓17个点。

s1.3、用s1.2中得到的特征点,确定眼睛区域的位置,将左眼和右眼区域截取出来,获得人脸眼睛区域;确定眼睛区域的位置,将左眉和右眉区域截取出来,获得人脸眉毛区域。

s1.4、对s1.1中检测得到的人脸区域,扩展到包括头发的区域,先做发型的估计,根据下颚以下是否有头发来判断是长发还是短发,对测试的人脸图像,利用s1.2中得到的人脸特征点,找出人脸区域中的三个点,如图2所示,分别为脖颈两侧与人脸的交界点和下颚底端,三个点的坐标为p1(x1,y1),p2(x2,y2),p3(x3,y3),其中,x1,x2,x3为横坐标,y1,y2,y3为纵坐标;接着将测试的人脸图像转化为灰度图像,因为头发的颜色相对皮肤和背景一般都是颜色较深的部分,所以利用训练数据通过大量实验,本方法可以确定一个灰度阈值t,利用此阈值做图像二值化,小于t取0,大于t取1,得到的二值化图像,可以基本将头发这种暗色的区域与其他区域大致区分开。然后统计每一行值为0的像素个数,从而得到每一行值为0的像素点个数,得到头发统计直方图histv,通过判断下颚底端及下颚底端一段距离中每一行是否存在像素为0的点,即判断下颚底端及下颚底端一段距离中每一行距离的histv是否大于0来判断下颚底端和下颚底端一段距离中是否存在头发,从而判断头发的长短。

s1.5、在s1.4中判断长短发的基础上,构造能量函数,使用图割法进行头发区域的分割定位:

首先在已经标注好头发区域的训练集中,将训练数据分为长发和短发两种类型的图片,对长发和短发,分别统计人脸图像头发位置的先验分布,对于像素i对应的标记结果,用p(li)表示,li为标签,假设整幅图像的标签为l={l1,l2,...,li,...,ln},li为0表示头发区域,1表示非头发区域,p(li)可以通过计算训练图像中该像素位置属于头发区域的次数和训练图像数量之间的比值得到;

接着,要构造图割法的能量函数,图割法的能量函数主要由两部分组成,一部分为区域项r(l),一部分为边界项b(l):

e(l)=ar(l)+b(l)

其中,

其中,区域项r(l)利用训练集中的先验分布计算,p(li)为像素i分配标签li的概率,我们希望图像中每个像素x分配为其概率最大的标签,为使能量最小,所以取负数。

而在边界项b(l)中,p和q为邻域像素,ip和iq为像素值,n为图像所有像素集合,δ(lp,lq)为示性函数,lp和lq为像素p和q的标签,b<p,q>用来衡量像素p和q之间的相似性,σ2为像素的方差,b<p,q>越小表示像素p和q差别越大。边界项b(l)表示如果两邻域像素差别很小,那么它属于同一个目标或者同一背景的可能性就很大,如果它们的差别很大,那说明这两个像素很有可能处于目标和背景的边缘部分,则被分割开的可能性比较大。

然后对于图割法的能量函数e(l),可以使用最大流法对能量函数进行优化,得到最终整幅图像的标签结果,从而得到分割出来的头发区域。

s1.6、根据s1.2得到的左右两眼的特征点,由左右两只眼睛的特征点计算两眼的中心位置,取一块如图2中所示10×30大小的矩形区域,参见图2可以看出,当存在眼镜的时候,眼镜正中间的镜框因为颜色一般相对皮肤都比较深,因此,镜框所在位置一整条横线的梯度都会比较大。

提取出这个矩形区域,转化为灰度图像,计算整个矩形图像在垂直方向上的梯度值,然后获取这个矩形区域每一列上梯度最大的两个值,并且将最大值和第二大值的纵坐标分别记为,ai∈a,bi=b,i=1,2,...,n,n为图像列数,接着分别计算像素纵坐标a和b的方差var(a)、var(b):

假如存在眼镜的话,眼镜正中间镜框处的梯度变化主要集中在同一个竖直坐标附近,所以这个竖直坐标的大小会比较集中,所以当竖直坐标集合a和b的方差var(a)、var(b)小于设定的阈值的话,可以判定该人脸存在眼镜。

s2、将日漫中辨识度比较高的人脸区域与数据集中对应的人脸区域进行匹配,数据集中每个人脸区域都有其对应的漫画人脸区域,具体步骤为:

s2.1、对s1.3中得到的人眼区域,统计图像的梯度方向局部特征值,提取出图像的hog特征作为模板,再提取数据库中的候选人眼图像的hog特征,一一进行欧式距离计算,找出距离最小的候选人眼图像,候选人眼图像对应的漫画人眼就是匹配得到的人眼漫画图像。

s2.2、对s1.5中分割出来的头发掩模,由图像的二阶和三阶归一化中心矩构造7个不变矩,由这7个不变矩构造7维的形状特征向量,对数据集中的每一个头发,同样计算对应的hu矩构造7维特征向量,然后将分割出来的头发掩模和数据集中的头发漫画的掩模一一计算特征向量的欧式距离,距离最小者为匹配结果。

s3、人脸其他部位漫画笔画的生成:

s3.1、计算图像垂直方向的梯度,浓密眉毛的垂直梯度总能量大于细眉毛的垂直梯度总能量,由此来区分浓眉和细眉,通过b样条曲线连接特征点来连接特征点得到眉毛的笔画,生成的浓眉和细眉的曲线的具体为:

对于细眉,直接通过b样条曲线连接s1.2中得到的眉毛的五个点,如图3a所示;

对于浓眉,首先通过b样条曲线拟合s1.2中得到的眉毛的五个点,然后再连接第一个点和第五个点,如图3b所示。

s3.2、由于日漫中的鼻子比较简单,基本都是由简单的短斜线作为表示,因此根据s1.2中得到的鼻子的位置,取鼻子正中心的一个点和其旁边的一个点,连接两个点画一条短直线就可以得到鼻子。

s3.3、嘴巴漫画的生成首先要判断嘴巴是闭上的还是张开的,本发明通过闭嘴和张嘴时候嘴角和中间嘴唇的关系来判断嘴巴状态,对张嘴的,通过连接上嘴唇和下嘴唇的特征点来得到漫画嘴巴,对于闭嘴的,上下嘴唇重合,因此只连接上嘴唇的特征点。

s3.4、脸颊轮廓线的生成也要考虑日漫特有的风格,根据s1.2中得到脸颊轮廓的特征点,如图4所示,对检测到的特征点,舍弃下巴最底端两边各两个点,用b样条曲线拟合剩余的点,可以得到日漫中人物下巴比较尖锐的效果,这样做可以使得连接得到的漫画脸颊轮廓下巴更加尖锐,更像日漫人物连接轮廓的特征,同时保留了原来人脸的基本脸型姿态特征。

s4、根据原来人脸的各个部位之间的关系,将s2和s3中匹配得到和生成的漫画按照原来人脸各个区域之间的位置关系进行组合,得到最终的日漫风格的人脸漫画。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1