本发明一种基于人脸照片的简笔画生成方法属于图像处理领域。
背景技术:
由计算机生成人脸卡通肖像或称为漫画肖像,它主要包括两种方法:一是对照片人脸的轮廓进行夸张变形方法,二是对人脸纹理的卡通化处理方法。
对照片人脸的轮廓进行夸张变形主要是通过人脸轮廓提取,获得表示人脸的线条特征,然后对线条进行一些变形,从而生成人脸的“卡通线条画”。比如文献1,孙红玉、屠长河、孟祥旭,基于形状演化的线条画风格转换与变形。公开自:计算机辅助设计与图形学学报,vol.18,no.3。
第二种方法通过对人脸的额纹理进行处理,可以进一步丰富卡通效果的表达,比如油画效果、铅笔画和其他效果等。比如文献2,陈洪,郑南宁,梁林,徐迎庆,沈向洋,基于样本学习的肖像画自动生成算法。公开自:计算机学报,2003年2期。
由于处理结果带有人脸阴影,所以目前已有的人脸处理方法无法将其结果直接用到巧克力3d打印机中,这将会使打印出来的效果无法满足客户的要求。并且已有的技术处理时间较长。
技术实现要素:
针对上述问题,本发明提供了一种基于人脸照片的简笔画生成方法。
本发明的目的是这样实现的:
一种基于人脸照片的简笔画生成方法,包括以下步骤:
步骤a、人脸数据库的收集,利用网上开源的数据库作为训练对象;
步骤b、利用收集到的数据库对人脸识别和关键点检测模型进行训练;
步骤c、对真实人脸图片进行特征点提取;
步骤d、将输入的图片素描化;
步骤e、基于所提取的特征点,对人脸、五官、头发、服饰等进行定位和分割;
步骤f、对分割后的图像进行平滑、强化、灰度化、二值化操作;
步骤g、将处理完的部件重新组合,形成最终结果。
进一步地,所述一种基于人脸照片的简笔画生成方法,所述步骤c中对真实人脸图片进行特征点提取,包括以下步骤:
步骤c1、使用hog特征检测和一个线性分类器或线性svm实现一个人脸检测模型;
步骤c2、利用hog特征检测算法,找到人脸的hog特征或者梯度特征,通过hog特征和线性分类器,找到一部分的人脸边缘,也就是人脸的位置;用一个方框去框出图片中的人脸,称此方框为人脸方框;
步骤c3、选择一个已训练好的开源形状预测模型,存于dat文件中,将人脸方框内的图片输入到开源形状预测模型,得到68个关键点。
进一步地,所述一种基于人脸照片的简笔画生成方法,所述步骤d中将输入的图片素描化,包括以下步骤:
步骤d1、用一个小的真实人脸数据库和人脸素描库进行素描化模型的训练;
步骤d2、真实人脸与人脸素描存在一一对应的关系,利用haar特征检测算法分别对两者进行haar特征检测,使用k近邻算法找到素描图的特征周围最近的k个像素的信息,包括位置、灰度值,并记录下来,找到素描图与真实人脸之间的隐性关系;
步骤d3、将训练好的模型运用到输入的图片上,从而进行素描化。
进一步地,所述一种基于人脸照片的简笔画生成方法,所述步骤e中基于所提取的特征点,对人脸、五官、头发、服饰等进行定位和分割,是利用特征点在坐标系中的坐标,我们能够找到近似于某个五官中心的点,以这个点作为五官中心,向四个方向扩展不同的参数作为方框的边界所在,由此形成能够框选出人脸、五官的长方形方框,用于后续的图像强化;对于头发服饰定位和分割,通过实际实验,确定2号通道能够较好地与后续代码配合,得到头发和服饰的边缘,实现了定位和分割,为了方便编写代码,也将头发和服饰的灰度化、二值化放到了get_cloth_hair模块中,对应的结果便被放到了一张新的画板中。
进一步地,所述一种基于人脸照片的简笔画生成方法,所述步骤f中对分割后的图像进行平滑、强化、灰度化、二值化操作,操作如下:
平滑:
使用开源库opencv的代码能快速地将bgr通道中的图像进行平滑,降低灰度图的边缘梯度,得到更好的效果,方便找出边缘,因为有些部位的梯度过高,会使模型认为是边缘,其实只是一些由于光线导致的错误结果;
强化、二值化:
在五官的定位、分割操作得到的方框中,对五官进行各别的二值化,由于照片的采集效果,想要使五官的二值化效果得到最佳,需要对各个五官使用不同的阈值进行二值化;
灰度化:
使用开源库opencv的代码便能快速地得到灰度图。
进一步地,所述一种基于人脸照片的简笔画生成方法,所述步骤g中将处理完的部件重新组合,形成最终结果,是能够将各个强化的五官,加深各个五官的边缘,分别放到已有头发和服饰的画板中,并且位置与输入图片相对应。
有益效果:
本发明一种基于人脸照片的简笔画生成方法,与现有技术相比,具有以下优势:
1、五官定位更加准确;
2、本发明不需要大量的样本用于训练,所需要的图片数据更少;
3、本发明训练所需时间更短,而且对硬件要求低,不会导致成本提高;
4、本发明训练模型非常充分,规避了容易出错的细节环节;
5、能够提供给巧克力3d打印机打印,且能够广泛应用。
附图说明
图1是一种基于人脸照片的简笔画生成方法流程图。
图2是真实人脸图片提取特征点图。
图3是真实人脸转换灰度图。
图4是真实人脸图片提取衣服轮廓图。
图5是真实人脸图片转缩小灰度图。
图6是真实人脸图片转缩小灰度图中提取人脸图。
图7是真实人脸图片转换素描图。
图8是五官效果图。
图9是期望结果图。
具体实施方式
下面结合附图对本发明具体实施方式作进一步详细描述。
一种基于人脸照片的简笔画生成方法,如图1所示,包括以下步骤:
步骤a、人脸数据库的收集,利用网上开源的数据库作为训练对象;
步骤b、利用收集到的数据库对人脸识别和关键点检测模型进行训练;
步骤c、对真实人脸图片进行特征点提取;
步骤d、将输入的图片素描化;
步骤e、基于所提取的特征点,对人脸、五官、头发、服饰等进行定位和分割;
步骤f、对分割后的图像进行平滑、强化、灰度化、二值化操作;
步骤g、将处理完的部件重新组合,形成最终结果。
具体地,所述一种基于人脸照片的简笔画生成方法,所述步骤c中对真实人脸图片进行特征点提取,包括以下步骤:
步骤c1、使用hog特征检测和一个线性分类器或线性svm实现一个人脸检测模型;
步骤c2、利用hog特征检测算法,找到人脸的hog特征或者梯度特征,通过hog特征和线性分类器,找到一部分的人脸边缘,也就是人脸的位置;用一个方框去框出图片中的人脸,称此方框为人脸方框;
步骤c3、选择一个已训练好的开源形状预测模型,存于dat文件中,将人脸方框内的图片输入到开源形状预测模型,得到68个关键点。
具体地,所述一种基于人脸照片的简笔画生成方法,所述步骤d中将输入的图片素描化,包括以下步骤:
步骤d1、用一个小的真实人脸数据库和人脸素描库进行素描化模型的训练;
步骤d2、真实人脸与人脸素描存在一一对应的关系,利用haar特征检测算法分别对两者进行haar特征检测,使用k近邻算法找到素描图的特征周围最近的k个像素的信息,包括位置、灰度值,并记录下来,找到素描图与真实人脸之间的隐性关系;
步骤d3、将训练好的模型运用到输入的图片上,从而进行素描化,由于数据库较小,但是数据较为优秀,所以能够快速、杰出地完成素描化。
具体地,所述一种基于人脸照片的简笔画生成方法,所述步骤e中基于所提取的特征点,对人脸、五官、头发、服饰等进行定位和分割,是利用特征点在坐标系中的坐标,我们能够找到近似于某个五官中心的点,以这个点作为五官中心,向四个方向扩展不同的参数作为方框的边界所在,由此形成能够框选出人脸、五官的长方形方框,用于后续的图像强化;对于头发服饰定位和分割,通过实际实验,确定2号通道能够较好地与后续代码配合,得到头发和服饰的边缘,实现了定位和分割,为了方便编写代码,也将头发和服饰的灰度化、二值化放到了get_cloth_hair模块中,对应的结果便被放到了一张新的画板中。
具体地,所述一种基于人脸照片的简笔画生成方法,所述步骤f中对分割后的图像进行平滑、强化、灰度化、二值化操作,操作如下:
平滑:
使用开源库opencv的代码能快速地将bgr通道中的图像进行平滑,降低灰度图的边缘梯度,得到更好的效果,方便找出边缘,因为有些部位的梯度过高,会使模型认为是边缘,其实只是一些由于光线导致的错误结果;
强化、二值化:
在五官的定位、分割操作得到的方框中,对五官进行各别的二值化,由于照片的采集效果,想要使五官的二值化效果得到最佳,需要对各个五官使用不同的阈值进行二值化;
灰度化:
使用开源库opencv的代码便能快速地得到灰度图。
所述一种基于人脸照片的简笔画生成方法,所述步骤g中将处理完的部件重新组合,形成最终结果,是能够将各个强化的五官,加深各个五官的边缘,分别放到已有头发和服饰的画板中,并且位置与输入图片相对应。
本发明组合了照片素描化、特征提取、灰度化、二值化、平滑处理、图像分割等步骤,生成了人物简笔画,为了能够准确提取人脸的特征,本发明对输入的人脸图片数据提取特征点的数目至少为64,收集的数据库中至少包括88幅。
本次实施方式本发明以88幅图片作为训练集,训练了提取64和198个特征点的模型。
对于真实人脸照片的处理过程如下:
步骤1、将训练完成的模型应用到输入的真实人脸图片上,得到特征点;如图2所示,是输入的真实图片和提取出来的特征点。
步骤2、将输入的图像和背景转换成灰度图,如图3所示,是转换后的灰度图;
步骤3、通过特定算法,将人和衣服进行平滑处理、灰度化、二值化,然后将边缘提取出来,如图4所示,是提取出来的衣服轮廓;
步骤4、将输入的图片进行缩小,提取出人脸后转换成素描图;如图5所示,是转缩小后的灰度,图6是从图5中提取的人脸,如图5所示,如图7所示,是转换后的素描图;
步骤5、根据得到的特征点,将所需要重点处理的五官:眼睛、鼻子、眉毛、嘴巴等提取出来并进行强化,然后作相应的灰度化和二值化处理,如图8所示,五官处理的效果图;
步骤6、将得到的轮廓、五官等进行处理,得到最终结果,如图9所示,是最终效果图。