• 1.81 MB
  • 2022-04-22 11:25:44 发布

杜冬_基于二维图像的实时表情动画

  • 47页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'南京理工大学毕业设计说明书(论文)作者:杜冬学号:1011590112学院(系):理学院专业:数学与应用数学题目:基于二维图像的实时表情动画指导者:张正军副教授评阅者:(姓名)(专业技术职务)2014年5月 毕业设计说明书(论文)中文摘随着人脸识别技术的研究发展,人脸表情捕捉与动画逐渐成为计算机视觉、计算机图形学领域的研究热点和难点。为了使数字对象表情传神逼真并与相应人脸表情保持一致,通常的做法是基于特殊设备、“建立3D人脸模型和人脸表情库”来进行实时动画,但数据预处理复杂,实际应用性差,于是提出了一种只基于普通摄像头和单幅图像,无需做任何数据预处理的实时表情动画方法。它首先对人脸和动画对象脸部进行同胚的三角剖分,然后随着表情变化,将人脸网格三角面片的变形矩阵映射到动画对象网格上,从而保持表情的一致性。在总结学习了现有表情动画方法的优缺点及基于视频流的人脸检测跟踪、AAM特征点检测、三角剖分和纹理映射等理论知识后,利用VisualStudio2010,辅以OpenCV、OpenGL、OpenMesh、Triangle开源库,开发了基于视频流或普通摄像头,通过三角网格变形变换的方法来进行表情动画的软件,并实验验证了其具有良好的实时性和鲁棒性。关键词人脸检测视频人脸跟踪特征点检测三角网格变形表情动画 毕业设计说明书(论文)外文摘要TitleReal-timeFacialAnimationbasedon2DImageAbstractWiththedevelopmentoffacerecognitiontechnologyandrelatedresearchprogress,thecaptureoffacialexpressionsandfacialanimationhavebecomecommonresearchinterestsandalsoproblemstosolveincomputervisionandcomputergraphics.Inordertomaketheexpressionsofdigitalobjectsvividandconsistentwiththecorrespondingfacialexpressions,itiscommontobaseonbuilding3Dfacemodelsandfacialexpressionlibraries,butthedatapreprocessingistoocomplex.Thispaperpresentsareal-timefacialanimationmethodmerelybasedonanordinarycameraandasingleimagewithoutanydatapreprocessing,todrivenavatars.Itfirstlytriangulatesthefacesofpeopleandavatars,andguaranteesthemesheshomeomorphous.Thenmappingthedeformationmatricesoffacetriangularmeshestomeshesofavatars’faces,tomakethemconsistentwhenfacialexpressionschange.Afterinvestigatingandsummarizingtheadvantagesanddisadvantagesofexistingfacialanimationmethods,knowledgeoffacedetectionandtrackingbasedonvideo,featurepointsdetectionbasedonAAMalgorithm,triangulation,texturemapping,andsoon,wedevelopedareal-timefacialanimationsoftwarebasedonvideostreamingoranordinarycameraunderthedevelopmentenvironmentofVisualStudio2010,poweredbysomeexternalopensourcelibraries,suchasOpenCV,OpenGL,OpenMeshandTriangle.Finally,wedidexperimentstotestandverifythereal-timepropertyandrobustnessofthesoftware.KeywordsFacedetectionVideofacetrackingFeaturepointsdetectionDeformationtransferfortrianglemeshesFacialanimation 本科毕业设计说明书(论文)第I页共I页目录1绪论............................................................................................................................11.1课题的研究背景和意义..................................................................................11.2表情动画的简单介绍及应用前景..................................................................11.3表情动画的难点问题......................................................................................21.4表情动画的研究发展......................................................................................31.5本文的主要工作及内容安排..........................................................................42人脸检测与跟踪概述................................................................................................62.1人脸检测..........................................................................................................62.2人脸跟踪..........................................................................................................92.3本章小结........................................................................................................123人脸特征点检测......................................................................................................133.1AAM简介.......................................................................................................133.2基于AAM的建模与拟合.............................................................................153.3本章小结........................................................................................................184基于三角网格的变形变换......................................................................................194.1变形变换........................................................................................................204.2三角剖分........................................................................................................254.3纹理映射........................................................................................................264.4本章小结........................................................................................................275基于二维图像的实时表情动画软件设计..............................................................285.1软件运行环境................................................................................................285.2软件整体框架介绍........................................................................................285.3软件主要模块设计........................................................................................305.4软件设计中遇到的问题与解决方案............................................................325.5本章小结.......................................................................................................336总结与展望..............................................................................................................356.1本次毕业设计的成果....................................................................................356.2软件的优缺点................................................................................................356.3展望................................................................................................................36致谢..........................................................................................................................41参考文献......................................................................................................................42 本科毕业设计说明书(论文)第1页共43页1绪论1.1课题的研究背景和意义2010年Outfit7公司开发了一款名为“TalkingTom”——“会说话的Tom猫”的手机宠物应用类游戏,受到广大消费者的喜爱。这只名为Tom的宠物猫可以在用户触摸时做出反应,用滑稽的声音完整复述用户所说的话,用户也可以用其录制视频,上传至网络或发送给好友来带来欢乐。然而,在录制的视频中Tom猫的表情动作都是程序设定好的,不能随人的表情变化而变化,实际上只是录制了音频,趣味性大大降低,市场得不到推广。基于“TalkingTom”软件的不足,本次毕业设计拟编写一款小软件,可以在二维图片上实现Tom猫(或其他卡通人物)脸部表情动作随镜头捕捉到的人脸表情改变而变化,且表情变化一致。既可以基于普通摄像头实时动画,也可以基于视频流动画。这样Tom猫的表情变化便和人一样丰富,可应用到如QQ等视频聊天工具上,使得对方看到的“我”是一个表情夸张怪异的卡通人物,增加了趣味性。后期通过美工设计各种各样可爱的卡通模型,想必会受到青年消费者的喜爱。此外,这种动画结果可应用到人脸图像的处理中,达到“让其笑便笑,让其哭便哭”的效果,也可应用到电影制作、游戏角色开发中,使得虚拟人物有了人类丰富多样的表情,传达内心情感。1.2表情动画的简单介绍及应用前景2009年,一部名为《阿凡达》的美国科幻史诗式电影给全世界人民带来了一场视觉盛宴,表情丰富传神的纳威人向世人展示了表情捕捉技术的神奇。此部电影技术上的一大创新便是运用面部表情动画技巧。为了进行表情捕捉,演员会各自带上一顶装有小型摄像机的便帽,摄像机正对演员的面部,将收集到的面部表情和眼睛动作等信息传送给计算机,同时多台摄像机从不同角度展开拍摄并传输数据,从而将演员的表情动作完整地复制到数字替身上,通过表情表现人物的情 本科毕业设计说明书(论文)第2页共43页感世界,逼真传神。自此,表情动画走进了普通大众的生活。表情动画,即通过摄像头捕捉到的现实人物表情驱动虚拟卡通人物等的面部表情,并使二者保持一致。该概念最早由LanceWilliam在1990年Siggraph计算机图形学会议上提出,并给出了实现方法:构建带有逼真纹理的高分辨率人物头[2]部3D模型;追踪现实人物表情动作并应用表现在已建立的模型上.在这开创性方法中,模型脸部的扭曲变形随追踪到的脸部标记点的变化而变化,但在此前,脸部检测追踪及脸部特征检测技术并不成熟。随后,SimGraphics公司成功开发出面部表情动画系统,并在1992年Siggraph会议中展示。该系统利用带有传感器的特制头盔,在人脸布置标记点,通过追踪标记点的运动轨迹来反映脸部肌肉的运动。早期的表情捕捉系统大抵如此,依赖硬件(如传感器)设备,脸部标记点越多捕捉到的表情越全面越逼真,但这无疑给使用者带来不便和不适,因而之后的研究重点转化为如何利用软件精确捕捉人脸表情并获得很好的动画效果。作为表情动画的前提,高效鲁棒的人脸检测与跟踪、特征点检测提取算法也在不断发展。目前,表情捕捉、动画已经逐步应用到3D动画、游戏、虚拟影视中,它通过人体机能和数字性艺术的完美结合,将作品中角色的内心情感真实地还原于观众、玩家面前,是最被认可的人物情感传达方式,应用市场广阔。1.3表情动画的难点问题计算机无法像人一样轻易识别出图像或者视频中的人脸,更无法轻易捕捉表达出各种人脸表情数据,存在很多困难,主要有:1、数据采集:人脸是非刚性的三维对象,一种表情牵动着面部多块肌肉,存在皮肤褶皱、拉伸等多种情况,如何将这些细微数据捕捉处理,完整传送到数字对象上,对数据采集设备提出了很高的要求。2、检测的正确率:人脸特征检测的正确与否直接决定了表情动画效果的好坏。3、数据处理:人脸皮肤褶皱拉伸等信息如何精确表现在数字对象上,使其逼真,需要建立三维模型进行精细处理。4、实时性:检测速度和数据处理速度直接决定了算法的实行性,想要将表 本科毕业设计说明书(论文)第3页共43页情动画应用到游戏或虚拟视频中,必须要加速,达到良好的实时效果。5、鲁棒性:人脸特征的检测效果会受环境变化,如光照、运动等的影响,如何处理这些外界干扰,使算法更加鲁棒,也是困扰学者们的一大问题。1.4表情动画的研究发展生活中各种各样的人物表情随处可见,因为熟悉,数字对象上一点细微的差别便会失真,如何精确捕捉脸部表情并完美呈现在数字对象上一直是计算机图形[2][3]学中的难题。为此,学者们给出不同的解决方案,例如Williams、Huang等[4][5][6][7]利用脸部标记点,Bradley等、Beeler等利用摄像机阵列,Zhang等、Weise等利用结构光投影仪,但这些方法都过于依赖众多硬件设备来重构人物头部及脸[8]部3D模型。不久,Weise等又提出了一种更可行的解决方案,利用Kinect相机获取人脸深度图,基于视频实时驱动数字对象,展示了极好的效果,然而Kinect[9]相机属于特殊设备,受众面很窄,为了面向一般用户,KunZhou、ChenCao等于2013年开发出基于计算机网络摄像头实时捕捉表情并驱动数字对象的系统,通过让用户按照预先定义好的脸部姿势和表情,获取60幅包括标准脸(即正面、[10]不做任何表情的人脸)的人脸表情图片,利用2D人脸对齐算法(2Dfacialalignmentalgorithm)对每幅图自动定位标记出75个人脸特征点,对于检测不准确的特征点进行人工拖拉调整,然后回归计算出这些标记点的3D坐标,再利用[11]FaceWarehouse数据库找出对应的3D模型,训练数据集,获得特定用户的融合变形模型。基于该模型,只需改变每个头部姿势和脸部表情的系数便可线性组合出用户的任何表情动作,精细逼真,实时效果好。随后他们又将该系统简化(直接从2D视频中回归计算得出脸部表情参数,省去之前先要找到对应的3D坐标及模型的步骤),移植到了手机端,并对不同的光照环境及运动状态(均会严重[12]影响特征点的检测)进行了处理,使得实时表情动画的结果更鲁棒。遗憾的是,无论是PC端还是手机端的系统,数据预处理很繁琐(总共约40分钟),这对于一般用户来说是无法接受的,但这也是既要脱离对硬件的依赖又要保证动画的精确逼真所不得不面对的问题。本文权衡后,舍弃了少许的精度,给出了一种 本科毕业设计说明书(论文)第4页共43页只基于普通摄像头和单幅图片进行实时表情动画、无需任何数据预处理的方法,简洁高效,效果良好。1.5本文的主要工作及内容安排近年来,表情动画研究已经取得了很大进展。本文查阅了大量相关国内外文献,学习研究了人脸检测与跟踪、特征点提取和表情动画方法的基本理论和关键技术,重点讨论了基于视频的人脸检测、人脸跟踪、特征点检测提取和三角网格变形变换等问题并设计表情动画软件。本软件在Windows系统下,通过普通摄像头(笔记本自带)获取图像,或是通过软件接口读取视频,检测跟踪人脸并进行实时表情动画,同时可录制保存视频。具体采用VisualStudio2010、Qt框架、OpenCV、OpenGL、OpenMesh和Triangle开源库进行软件编程,生成Tom猫等卡通人物的脸部二维网格,再纹理贴图,通过AAM算法检测人脸特征点变化,运用基于三角网格变形变换的方法进行实时表情动画,并处理了期间遇到的问题。软件运行流程如下:读取视频动画软件运行读取网格载入纹理基于摄像头动画基于摄像头动画并录制视频图1.1软件运行流程图本文将以如下六章分别论述所做的工作:第一章,绪论部分,介绍本课题研究的背景、意义,表情动画的应用前景、研究难点及发展概况,简单分析了现有技术的成功和不足之处。第二章,概述基于视频的人脸检测与跟踪技术。第三章,简单概括人脸特征点提取方法,并重点介绍AAM算法。第四章,重点介绍本文所采用的利用三角网格变形变换进行2D图像表情动 本科毕业设计说明书(论文)第5页共43页画的方法,简单介绍动画对象三角网格的生成、处理及纹理映射方法。第五章,讨论软件的编程实现,实验中遇到的问题及解决方案。第六章,总结与展望。 本科毕业设计说明书(论文)第6页共43页2人脸检测与跟踪概述人脸检测是一种在任意数字图像中判断是否存在人脸并确定人脸位置和大小的计算机技术,它能忽略其他事物的干扰,检测出人脸姿态特征。人脸跟踪多指在视频流下实时捕捉人脸的位置和特征信息,可以理解为实时的人脸检测。人脸检测与人脸跟踪问题既相互独立又密不可分,并且前者是一切的前提,只有人脸检测得准确才可能跟踪上,才能准确提取脸部特征信息。问题最初来源于人脸识别的研究,可追溯到20世纪70年代,从单一背景下的标准脸检测到复杂背景,如场景变化、光照变化下的多姿态人脸检测,经过几十年的发展已经趋于成熟并应用到身份识别、视频监测等诸多领域。下面将概括介绍现有的人脸检测与跟踪方法。2.1人脸检测随着人脸识别技术趋于成熟,诞生了很多人脸检测的方法,主要可分为两大[13]类:基于人脸知识的方法和基于统计、机器学习的方法。其中,基于人脸知识的方法主要有基于先验知识的方法、基于肤色模型的方法和基于模板匹配的方法等;而基于统计及机器学习的方法则包括基于支持向量机的方法、基于特征脸[14]法、基于隐马尔科夫模型法、人工神经网络法和基于Adaboost的方法等。下面将分别介绍这些方法。2.1.1基于先验知识的方法人脸通常是对称的,具有一双眼睛、一对眉毛、一个鼻子和一张嘴等主要特征,而且在灰度图中眼睛部位要比其他部分暗……利用这些总结出的对称性、灰度差异等先验知识来在图像中检测人脸。虽然此类方法简单易于理解,但是好的经验规则很难制定,因为人脸是非刚性的,表情千变万化,规则制定得严格会导致较高的漏检率,制定得简单又会导致误检,所以该方法只适合检测标准脸,不适用于多姿态人脸的检测。2.1.2基于肤色模型的方法 本科毕业设计说明书(论文)第7页共43页在一幅彩色图像中,不同人种的肤色显然是区分人脸和非人脸的一个显著特征,自然可以利用肤色差异检测彩色图像中的人脸区域。基于常用的RGB颜色空间、YCbCr(或YCgCr)颜色空间和HSV颜色空间,建立的肤色模型主要有:[14]高斯模型、混合高斯模型和直方图模型。这种方法的优点是对人脸姿态(表情)变化不敏感,具有较好的稳定性,但又局限于肤色模型的优劣、相似环境颜色及光照变化的影响。2.1.3基于模板匹配的方法基于模板匹配的方法一般采用“归一化互相关”后,在图像灰度层次上,比较被检测图像区域与目标模板之间的相似程度,通过设定合适的阈值来判定是否为人脸区域。这种方法比较简单,但只使用眼睛、眉毛、鼻子、嘴巴这些主要特征子模板来建模去检测人脸,与基于先验知识的方法一样,因为人脸表情姿态的多变性,会造成漏检,改进的方法是利用层次模板或者可变模板进行匹配。总之,基于模板匹配法的精度受限于模板本身的品质,且计算量较大。2.1.4基于支持向量机的方法[15]支持向量机(SupportVectorMachines,SVM)最初是由Vapnik等提出的用于回归和分类问题的统计学习理论,它基于结构风险最小化原理,主要利用内积函数定义的非线性变换将初始的非线性空间变换到一个高维的线性空间,然后[15][16]在该高维线性空间中求解出最优分类面。随后,Osuna等将SVM用于人脸检测,通过对被检测图像中每个1919像素的区域使用SVM分类来确定人脸和非人脸区域,检测结果很好,但SVM的训练需要大量内存,求解速度慢。也有[17]学者提出加速训练的方法,比如Platt提出的最小最优化(SMO)支持向量机的训练方法,将初始的大型二次规划问题划分为一个个尽可能小的二次规划问题来减少求解时间,从而提高训练速度。2.1.5基于特征脸法特征脸法主要利用主成分分析(PCA)和机器学习方法获得图像中人脸和非人脸区域相应的主要特征,然后建立分布模型和判别函数(设定阈值)来进行人脸检测。简单、快速、实用,但又与基于模板的方法类似,局限于对训练样本集及测试集图像灰度相关性的依赖。 本科毕业设计说明书(论文)第8页共43页2.1.6基于隐马尔科夫模型法隐马尔科夫模型(HiddenMarkovModel,HMM)一般用来描述一个含有隐含未知参数的马尔科夫过程,是一种统计分析模型。Nefian等将其应用到人脸检测中,通过计算检测区域中每个子区域的Karhun-Loeve变化系数并作为观察矢量,利用Viterbi分割算法和Baum-Welch算法获得隐马尔科夫模型参数,最后根[18]据观察序列的输出概率(设定阈值)来判定该检测区域是否为人脸区域。2.1.7人工神经网络法人工神经网络(ArtificialNeuralNetwork,ANN)通过模仿生物神经网络的结构功能,有效处理不确定性信息,即使该信息不完整、不准确,只要信息模式类似于训练集样本,模型就能得出几乎正确的结论。对于非刚性人脸这类复杂、难以准确表述的情形,神经网络法无疑是一种有效的模式识别方法。具体将不同的图像样本和其理想输出输入到神经网络系统中,利用神经网络的自学习功能和分类能力进行样本训练,逐步将人脸区域和背景区分开来,确定出模型,从而用于其他图像的人脸检测。然而其计算量大,学习时间长,无法应用到实时系统中。2.1.8基于Adaboost的方法[19]Viola、Jones在使用积分图像的基础上,通过利用级联检测器和Adaboost算法来训练人脸检测分类器,大大提高了人脸检测速度,建立了第一个真正意义上的实时人脸检测系统。该方法不需要知道图像样本空间的准确分布,通过反复迭代自适应地调整弱学习算法的错误率,最终使整体的错误率低于某个合适的阈值。具体是在每次弱学习后更新每个样本的权重——减小正确分类的样本权重,增大错误分类的样本权重,调整样本空间,使得下次更加针对这些错误分类的样本进行学习和调整,直到得到正确的分类。实际应用中一般可分为三步:一,利用基于积分图像方法计算出的哈尔特征(Haar-likefeature,是一种用于物体识别的数字图像特征,也是第一种实时人脸检测算子。它首先检测出窗口中指定位置的相邻矩形,计算每一个矩形的像素和并取其差值,然后用这些差值来对图像的子区域进行分类)来表示人脸;二,利用AdaBoost算法获得人脸特征矩形区域构造弱分类器,再对它们进行训练学习、修改权重,组合构造强分类器;三,利用训练得到的若干强分类器对目标图像进行分层检测(级联分类器)。其中,[20]AdaBoost算法训练过程具体如下: 本科毕业设计说明书(论文)第9页共43页给定训练样本集(x,y),,(x,y),其中xXy,Y1,1,y1、11nniiiy1分别表示负样本与正样本,n为训练集的样本数目。i权值初始化:Di()1/n.1重复下列过程T次,其中t1,,T:wtj,1、权值归一化:w.tj,nj1wtj,对于每个特征j,构造弱分类器h,并使h的错误率最小,其中为错误jjjj样本的权值之和,并定义jiwhxi|j()iyi|,当pfxjj()pjj时,hxj()1,否则hx()0.其中,p为方向指示符,fx()为样本中第j个特征,为第j个jjjj[14]特征对左右的判断阈值,处在特征分布的极大值和极小值之间。2、令argmin,并令其对应的弱分类器为h.tjt3、更新样本权值:ww1ei.t1,iti,tt若样本图像被正确分类,则e0,否则e1,且.iit1t4、获得强分类器hx().T1T1[14]当t1tthx()t1t时,hx()1,否则hx()0.其中,tlog.2t该方法大大提高了人脸检测的检测速度和正确率,满足实时性的要求,本文软件设计中的人脸检测部分便是基于该算法。2.2人脸跟踪人脸跟踪,基于视频流或图像序列,通过人脸检测确定每一帧图像人脸的位置、大小、姿态等信息,从而确定人脸的运动轨迹。经过多年的研究发展,已经形成了很多基于视频的人脸跟踪算法,下面将分别介绍。2.2.1基于肤色信息的人脸跟踪 本科毕业设计说明书(论文)第10页共43页类似于人脸检测,在保持光照一定的条件下,彩色图像序列中的人脸肤色特征明显且基本保持不变,因而肤色特征也被广泛应用在人脸跟踪算法中。同样的,基于肤色信息的人脸跟踪速度快,不受人脸姿势和表情变化的影响,但是背景中相近颜色及光照变化会影响检测效果。2.2.2基于人脸局部特征的人脸跟踪基于人脸局部特征的跟踪类似于人脸检测中的特征脸法,一般利用眼睛、眉毛、鼻子和嘴巴等人脸主要部位特征信息进行跟踪定位,依赖于训练样本集的优劣和测试集图像灰度相关性大小。2.2.3基于运动信息的人脸跟踪基于运动信息的人脸跟踪方法主要分为光流法和差分图像法。1、光流(OpticalFlow)指“空间运动物体在被观测面上像素运动的瞬时速度”。光流法通过图像序列中像素在时间域上的变化以及相邻帧间的相关性来确定是否存在运动物体。但其计算复杂、需要保持空间一致性、抗干扰性差,很难应用到实时性系统中。2、差分图像法(DifferenceImageMethod)是根据当前帧图像与背景帧图像对应像素点的灰度值之差或当前连续两帧图像间的灰度值之差来判断图像序列中是否存在运动物体。通常设定合适阈值,若对应像素灰度值之差小于阈值,则认为此处物体静止;若差值大于阈值,则认为是由图像中物体运动引起,然后求出运动物体在图像中的位置。差分图像法计算简单、速度快,但对光照条件敏感,只适用于背景固定且简单的情况下。2.2.4基于CamShift算法的人脸跟踪CamShift(ContinuouslyApativeMean-Shift)算法是目前最常用的运动物体跟踪算法,它以Mean-Shift算法为核心,通过追踪视频图像中运动物体的颜色信息变化来达到跟踪物体的目的。在基于视频的人脸跟踪中,它分别对每帧图像作Mean-Shift运算,自动调整搜索窗的位置和大小,检测出图像中人脸的中心位置和大小,并能将本次检测的结果作为下一帧检测的起始值,如此迭代运行实现人脸跟踪。算法流程图如图2.1所示。具体处理过程分为:1、直方图反投影(HistogramBack-Projection)直方图反投影先根据视频中图像的色彩直方图计算出各色度值的概率分布, 本科毕业设计说明书(论文)第11页共43页再将图像中每点像素值重置为该点对应的概率值。而在各类色彩空间中,只有HSV(或类似的色彩空间)中的H(色度)分量可以表示颜色信息,所以首先要将RGB图像转化成HSV格式,再计算获得H分量的直方图。2、Mean-Shift算法Mean-Shift算法首先计算出搜索窗中心的偏移值,并将此值置为搜索窗中心的移动量,如此迭代运行,不断移动更新搜索窗,直到满足设定条件时结束。处理过程分为以下几步:(1)在直方图反投影法得到的色彩概率分布图中设置搜索窗的位置和大小。(2)计算搜索窗的质心搜索窗的零阶矩:M00Ixy(,)(1)xy沿水平方向的一阶矩:M10xfxy(,)(2)xy沿垂直方向的一阶矩:M01yfxy(,)(3)xyMM1001从而,搜索窗的质心为:(x,y),x,y(4)ccccMM0000其中,Ixy(,)为(,)xy点的像素值,fxy(,)为(,)xy点对应的概率值。(3)将本次计算得到的质心设置为搜索窗新的中心。[14](4)重复(2)、(3)两步,直到相邻两次搜索窗质心距离小于设定的阈值。3、CamShift算法CamShift搜索可认为是连续自适应的Mean-Shift处理,步骤与Mean-Shift相同,只是在第三步更新搜索窗新的中心位置的同时设置其大小,具体如下:首先,计算搜索窗的二阶矩:2M20xIxy(,)(5)xy2M02yIxy(,)(6)xyM11xyIxy(,)(7)xy令M202M11M022ax,b2xy,cy(8)ccccMMM000000 本科毕业设计说明书(论文)第12页共43页计算22(ac)b(ac)11bl,tan(9)22ac[14]最后,令新搜索窗的大小为2l2l,移动方向为.[14]图2.1CamShift算法流程图2.3本章小结本章简单介绍了现有人脸检测与跟踪的主要方法,并对相应优缺点作出分析,重点介绍了可应用到实时系统中的基于Adaboost的人脸检测方法和基于CamShift算法的人脸跟踪方法。经过近十多年的发展,虽然人脸检测和跟踪技术已经有很大突破,但由于人脸是非刚性对象,多姿态的人脸在复杂背景下的检测精度和效率依旧是个挑战,在实际应用中应统筹各种方法的利弊,做出选择、改进和整合。 本科毕业设计说明书(论文)第13页共43页3人脸特征点检测在检测出视频中人脸的位置和大小后,还需要获取脸部特征点的位置改变来捕捉表情变化。近年来,国内外学者已经提出许多脸部特征定位的方法,主要可分为五类:“基于先验规则、基于几何形状信息、基于色彩信息、基于外观信息[21]和基于关联信息”等。其中,先验规则包括镶嵌图、几何投影、二值化定位、广义对称等方法;几何信息包括Snake(主动轮廓模型)、可变形模板、ASM(主动形状模型)、AAM(主动外观模型)等方法;外观信息包括神经网络、PCA(主成分分析)、SVM(支持向量机)等方法;关联信息包括概率网络、DLA(动态链接)、GWN(Gabor小波网络)等方法。为了满足实时人脸表情动画的要求,所采用算法检测的效率、准确率和稳定性尤为重要。基于这样的考虑,本文选择了效果优良、可实时检测标定人脸特征点的AAM算法,并在本章剩余部分对其进行详细介绍。3.1AAM简介AAM(ActiveAppearanceModel,主动外观模型)作为一种准确快速的特征信息检测提取方法,被广泛应用于模式识别领域。基于AAM的人脸特征点检测定位方法不仅利用了人脸形状及局部特征信息,还利用了人脸纹理信息。它通过统计分析人脸形状及纹理特征信息,建立混合人脸模型,利用该模型不断进行“拟合——比较——调整”的图像拟合过程,直到某次迭代中比较的误差小于设定阈值,确定出人脸位置、大小并提取特征点信息。关于AAM算法的研究发展主要分为以下四个阶段:3.1.1Snake算法AAM的思想最早可追溯到1987年Kass等人提出的用于边界检测与图像分割的Snake算法,在图像中给定大致的轮廓区域后,利用Snake算法可自动逼近并求得我们所感兴趣的目标区域。它首先基于输入的图像和给定的初始轮廓,定义基于轮廓本身特征的内部能量和基于图像特征的外部能量,构造能量函数,然后针对每个轮廓点,在其领域点中搜索让能量最小的点并将其作为新的轮廓点, 本科毕业设计说明书(论文)第14页共43页反复迭代直到整体能量最小,匹配度最高。AAM算法正借鉴了这种利用模板和能量函数进行匹配的思想。3.1.2可变模板基于Snake算法,Yuille等人于1989年提出了改进,利用可参数化的可变模板匹配来获得目标区域。它基于给定的初始区域,不断改变模板的位置、大小和形状等,最终使得能量最小化。3.1.3ASM算法1995年由Cootes等人提出的ASM(ActiveShapeModel,主动形状模型)是AAM的前身,它首先搜集训练样本,手动标识记录每个样本上的关键点来构造形状向量并做归一化处理,再将对齐后的形状向量进行PCA处理,为每个关键点构建局部特征,最后迭代搜索,不断更新形状向量参数及关键点位置,提高匹配度。ASM是比较好的基于统计学习模型进行特征点提取的方法,但只利用了[24]目标脸的形状信息,准确率不够高。3.1.4AAM算法及其改进基于ASM算法的不足,1998年,Cootes等人在又提出了AAM(ActiveAppearanceModel,主动外观模型)算法,不仅利用了目标对象的形状,还利用了相应的纹理信息,大大提高了检测的准确率。和ASM一样,该算法也是通过统计分析对图像样本集进行训练,获得人脸模型并与被检测图像进行匹配。然而,在实际应用中,初始的AAM算法也遇到了困难,比如在实时系统中效率低,在识别系统中识别率低,在变化环境中鲁棒性差等。近年来,学者们已给出了不少解决方案,例如:利用图像压缩、局部纹理的方法减小纹理的维度,采用线性回归、分析法、非线性拟合的方法改进优化算法,从而提高检测效率;利用形状先验、纹理表述、纹理模型、非线性模型、适应拟合等方法来提高识别率;通过弥补丢失的特征信息、组合应用ASM与AAM算法、将变化的环境(光照变化、[22]背景变化等)加入到训练集中等来提高算法的鲁棒性等等。如今,基于AAM的人脸特征标定已经应用在人机交互、人脸识别、人脸表情分析、人脸三维动画建模、人脸图像编码等领域,并不断得到发展完善。 本科毕业设计说明书(论文)第15页共43页3.2基于AAM的建模与拟合3.2.1AAM建模AAM同时利用了目标对象的形状和纹理信息,其中形状是通过联立标记特征点坐标得到的向量,纹理通常用像素点的亮度或颜色来表示。带有标记特征点的样本图像如图3.1所示,基于特征点的纹理如图3.2所示。[21]图3.1人脸特征点图3.2自由形状面片实际上,AAM建模主要分为建立形状模型和纹理模型两部分,相应地有单独建模和组合建模两种方法,下面将分别介绍形状模型和纹理模型的建立。1、形状模型形状模型是利用人脸检测出的特征点建立的。在2D情形下,若{(,)}xy表ii示一幅图像中人脸的特征点向量集,则令Ts(,xx,,xyy,,,,y)(10)12n12n[23]表示该n个特征点构成的形状向量,再利用普氏分析标准化s,并利用PCA方法提取s的主要特征信息构建形状模型子空间,然后将每个s映射到该子空间中,表示成ssPb(11)0ss其中,s为形状向量均值,P{}s是由标准正交基向量s组成的矩阵,表示由0sii 本科毕业设计说明书(论文)第16页共43页训练集得到的形状变量,而b为相应的形状参数集。通过对形状向量进行线性组s[22]合产生“自由形状面片”,如图3.2所示。2、纹理模型通过对自由形状面片光栅化,纹理可表示成向量g,再通过参量u(,)标准化,如下:(g1)ig(12)T其中,、分别为纹理g的均值和方差,1[1,1,,1]的维数与g相同。与形i状模型类似,通过PCA方法,将g映射到纹理子空间中ggPb(13)0gg其中,g为纹理均值,P{}g是由标准正交基向量g组成的矩阵,表示由训0gjj练集得到的纹理变量,而b为相应的纹理参数集。g3、组合模型利用形状和纹理之间的耦合关系,通过PCA方法,人脸形状和外观可以表示成ssQc(14)0sggQc(15)0g其中,c为外观参量(同时控制形状和纹理),Q、Q分别为由训练集得到的形sg状和纹理变量。3.2.2AAM拟合基于已经建立好的模型来拟合新图像,实则为寻找对于该图像而言最准确的模型参数,使得误差最小。这是一个无约束优化问题,一般通过梯度下降法来解。TTTT令pp,(c|t|u),表示AAM的参数向量,其中c是外观参数,t是姿态参数,u是纹理变换参数;g为投影到纹理模型框架下的当前样本图像的纹理向c量;g为模型的纹理向量。可以认为g、g之间存在某种线性关系,图像和模mcm 本科毕业设计说明书(论文)第17页共43页型间p的变化量和纹理差定义如下:Rrp()(16)prp()gg(17)cm其中,是p的一个小的变化量,R是和r间的线性关系(或者是梯度矩阵)。ppAAM算法假设R是固定的,且可预先通过多元线性回归技术计算得到。则AAM拟合的迭代过程如下:1、选取图像纹理样本,映射到纹理模型空间中,得到g;i22、计算纹理误差向量rgg,并利用E|r|评价拟合的准确率,其中||im为范数(一般为2范数);3、预测模型参数向量p的变化,Rrp();p4、更新模型参数ppk,k初始值为1;p""5、根据新的模型参数,计算新的模型纹理g,并重新获得纹理样本g;mi"""""26、计算新的纹理误差和评价量,rgg,E|r|;im"7、若EE,则接受对p的更新,否则,返回第4步,尝试令k0.5,0.25,""重新计算,直到EE.若|EE|,则返回第1步,否则结束迭代。"这里,是预先设定的一个很小的阈值,当|EE|时,表示p几乎没有什么更新,此时退出迭代。最后,模型拟合的正确性可以通过模型点和人工标记点间点点误差的平均值来估计,公式如下:n122Eptpt(,XXgt)(xixgti,)(yiygti,)(18)ni1其中,n表示形状模型中标记点的数目,X(x,y)是当前拟合结果的形状,X(x,y)是人工标记的实际形状。E(,XX)越小表示拟合的结果越好。gtgtgtptptgt 本科毕业设计说明书(论文)第18页共43页3.3本章小结本章在简单提及现存人脸特征提取算法后,重点介绍了检测准确率高且高效鲁棒的AAM算法,详细阐述了该模型形状和纹理的建模及拟合过程,是一种典型的机器学习过程,模型结果的好坏取决于训练样本集的选取。由于网络上有该算法的实现源码,因而这部分并不是本次毕业设计的重点,但值得一提的是,在具体的实时系统中,为了满足特定需求,需要结合后来的改进方案来提高算法的效率、准确率及鲁棒性。 本科毕业设计说明书(论文)第19页共43页4基于三角网格的变形变换在第一章绪论中已经提到,目前效果良好的表情动画都是基于数据库和机器学习的方法,训练样本集步骤繁多,时间长,这对于普通用户来说是不实际的。本文提出的动画方法是基于三角网格的2D图片变形变换方法,它不依赖特殊设备,也不需要数据预处理。具体过程如下:首先,利用AAM算法检测提取人脸特征点;然后将这些特征点三角网格化,这样每次表情的变化转化为三角面片的变形,而每个三角面片的变形对应一个仿射矩阵;最后将要动画的对象脸部三角网格化,对应的三角面片作用与之前相似的仿射矩阵,这样目标对象便做出相应的表情动作。如图4.1-4.10显示的是一个以图3.1为动画目标的张嘴动画效果。本文采用的动画方法最大的优点是简单快捷,消耗的资源少,可移植到手机端,但受限于2D图像变形的限制,动画的效果显然没有基于3D人脸模型的效果好。下面将详细介绍此方法。图4.1抿嘴时人脸特征点图4.2张嘴时人脸特征点图4.3抿嘴时基于特征点的网格图4.4张嘴时基于特征点的网格 本科毕业设计说明书(论文)第20页共43页图4.5抿嘴时基于特征点的纹理贴图图4.6张嘴时基于特征点的纹理贴图图4.7目标脸网格图4.8变形前纹理贴图图4.9变形后网格图4.10变形后纹理贴图4.1变形变换4.1.1问题表述变形变换是指基于三角网格的变形,将源网格的变化变换到目标网格中。我们知道,每个三角面片的变形都对应一个仿射变换矩阵,所以该方法的主要问题"是如何根据源网格变形的仿射变换F求出目标网格对应的仿射变换F,从而得 本科毕业设计说明书(论文)第21页共43页"到目标网格的变形。在此之前,我们首先要弄清楚F和F之间的关系,如图4.11所示。F源网格S变形后S"M?F"?目标网格T变形后T"?图4.11变形变换的主要问题为了表述方便,我们将变换矩阵表示成Qd,其中Q是22的仿射变换矩阵,表示非平移部分,而d是维数为2的平移向量,则有Qvdv,i1,2,3.(19)ii其中,v和v分别为三角面片变形前后的顶点坐标。ii由于决定形状变化的是仿射矩阵Q,我们首先关注Q的解法。将(19)式改~写为QVV,其中Vvvvv,Vvvvv.21312131则有1QVV(20)对于源网格S的|S|个三角面片,分别有仿射变换矩阵S,,S,为了将源网1|S|格S的变形与目标网格T联系起来,假设源网格与目标网格拥有相同的顶点数和三角面片数,即S与T同胚,则可定义S与T三角面片之间的映射:M{(s,t),(s,t),,(s,t)}.(21)1122|S||S|其中,(s,t)表示目标网格中第i个三角面片t的变形应该像源网格中第i个三角iii面片s的变形一样。易知,M是双射。i我们的想法是通过映射的一致性将源网格的变形转换到目标网格,其中S,,S是源网格变形非平移部分的仿射矩阵,但是我们并不能直接将它们作用1|S|到目标网格上,因为它们只反映了变形的方向、大小,并没有反映三角面片相对 本科毕业设计说明书(论文)第22页共43页其邻域的位置信息,而且源网格的平移向量也不能作用到目标网格中,因为它的大小是由源网格的大小和位置决定的。否则,直接作用的结果如图4.12A、B所示,网格会出现分裂的情形,这是因为同一顶点(共享点)在不同的三角面片中作用后点的位置可能不一样,显然,这是不对的。我们需要给出约束条件,使得分裂的三角形融合起来,即每个顶点在其邻域三角面片中作用后的位置是相同的,如图4.12C所示。[1]图4.12变形效果图4.12说明:根据三角面片的一一对应性质,我们将源网格每个三角面片变形后的仿射变换作用到目标网格上。其中,图A仅用到源网格仿射变换的非平移部分,即Q,但没有根据邻域关系调整三角面片的位置;图B将源网格平移向量直接应用到目标网格,导致三角面不连续;图C为增加约束条件后重新解得变换矩阵及其作用后的结果,使得相邻三角面片连续。为了使作用在目标网格上的仿射变换能保证三角面片的连续性,必须要求共享的顶点在其邻接三角面片中变换后的位置要相同,如图4.13C.对于目标网格上的仿射变换Td,,Td,有11||T||TTvdTvd,i,j,kp(v)(22)jijkiki其中,p(v)为顶点v的邻接三角面片。问题转化为求解一个有约束的最优化问ii题,如下:|M|2min||SjTj||F(23)T1d1T||Td||Tj1st.TvdTvd,i,j,kp(v)jijkiki 本科毕业设计说明书(论文)第23页共43页其中,||||是F范数,指矩阵元素平方和的开方。该优化问题的结果使得源网格F和目标网格的变形尽可能保持一致且网格不分裂。4.1.2解决问题虽然(23)式描述的变形变换问题可以通过二次规划技术来解,但是表述麻烦,且非线性全局最优解问题的求解相比线性问题要困难许多,速度较慢,影响系统的实时性。一种简化问题的方法是将公式(23)改写成基于顶点坐标的线性形式。该方法的核心步骤是基于三角网格的顶点定义变换矩阵,将求解目标网格的仿射变换矩阵转化成求解目标网格变形后的坐标位置。显然,它保证了约束条件(22),因为求解得到的坐标位置是固定的,即共享的顶点在不同的邻接三角面片变换下位置一致。下面将详细讲解如何简化问题。由(20)式,我们知道,源网格在变形时对应的仿射变换的非平移部分可以1用变形前后网格点的坐标位置来表达,且S是已知的。同理,目标网格有TVV.1其中,V是已知的,由目标网格变形前的顶点坐标构成,而V是要求解的未知量,由变形后的顶点坐标构成。这样,T的元素便表示成目标网格变形后顶点坐标的线性组合。从而将(23)式改写成|M|2min||SjTj||F(24)v1vnj1最优化问题的解即是该线性方程的解。进一步,将问题改写成下列形式:min||cAX||2(25)2v1vn其中,X是所要求的目标网格变形后的顶点坐标向量,c是由源网格变形矩阵S的元素重排后组成的向量,A是由目标网格变形前顶点坐标决定的,它将c和X联系起来。为了求解上述问题的解,通常使目标函数的梯度为零,从而得到常见的标准线性方程组:TTAAXAc(26)T其中,AA是半正定的,一般情况下,(26)式有唯一解。通过构造矩阵A和向量c,分别求得目标网格变形后的顶点坐标x、y分量。 本科毕业设计说明书(论文)第24页共43页下面将介绍编程实现时如何构造大型稀疏系数矩阵A及向量c:设源网格和目标网格共有n个顶点、m个三角面,且下标分别按1,2,,n、11,2,,m依次排列。由于TVV,未知量左乘已知量,与公式(25)中形式相"1""反,故需对(24)式中S和T进行转置运算,即得T(V)V.又因为二维平jj面坐标有x、y分量,所以a11a12a1nx1y1c11c12aaaccA21222n,x2y2,C2122(27)Xa2,1ma2,2ma2,nm2mnxnynn2c2,1mc2,2m2m2其中,A中每两行元素对应同一三角面片非平移部分的变形矩阵。以目标网格中第i个三角形为例,设v、v、v为其顶点,则变形前顶点矩123阵为:1xxyybb1""121211112(V)([vvvv])(28)2131xxyybb31312122其构成A中第2i1行和第2i行元素。变形后顶点矩阵为:1xxyyV"[vvvv]"2121(29)2131xxyy3131则对应顶点v、v、v的下标j,j,j得A中第2i1、2i行非零元素:123123abb,ab,ab(30)21,ij1112121,ij21121,ij321abb,ab,ab(31)2,ij112222,ij2122,ij222以此方法,分别计算目标网格每个三角面片的变形矩阵,构造得A.同理,构造源网格变形前矩阵B,则有2mnCBD(32)2m22mnn2其中,D的第1、2列元素分别为源网格变形后的x、y坐标。至此,矩阵构n2造完毕。 本科毕业设计说明书(论文)第25页共43页4.2三角剖分由前文可知,利用AAM检测出人脸特征点后需要基于这些特征点对人脸图像进行三角剖分,同样,卡通图片脸部也需要进行三角剖分来得到网格图。下面将简单介绍三角剖分的定义及Delaunay三角剖分法。4.2.1三角剖分的定义集合V是二维实数域上的有限点集,E是由该点集中的点构成的封闭线段e的集合,则该点集V的一个三角剖分T(V,E)是一个平面图G,若满足下列条[25]件:1、每条边都不包含除端点以外的其他点;2、不存在相交边(交点只有边的端点);3、只含三角形面,且三角面的全体构成散点集V的凸包。4.2.2Delaunay三角剖分三角剖分也有很多种方法,实际运用最多的是Delaunay三角剖分,因为其获得的平面图具有很多优良的性质,下面将具体介绍。1、Delaunay边若存在一条边eE,经过该边的端点a、b的圆内部不包含点集V中任何其他点,则称边e为Delaunay边。2、Delaunay三角剖分若三角剖分T中的所有边都是Delaunay边,则称三角剖分T为Delaunay三[25]角剖分。3、Delaunay三角剖分的准则(1)空圆特性:Delaunay三角网格中,任意三角形的外接圆中都不包含点集中的其他点(圆上只有三角形的三个顶点)。(2)最大化最小角特性:在散点集所有可能的三角剖分中,Delaunay三角剖分通过不断交换两个相邻三角形构成的凸四边形的对角线,选取六个内角中最[25]小角最大的情形来使其形成的三角形的最小角最大。4、Delaunay三角剖分的特性 本科毕业设计说明书(论文)第26页共43页(1)最接近:总是以点集中距离最近的三点构成三角形,且各边互不相交。(2)唯一性:对于同一点集,Delaunay三角剖分的结果唯一,不受起始构造点的变化而改变。(3)最优性:在点集所有可能的三角剖分中,其最小角最大。(4)最规则:在所有可能的三角剖分中,其三角形的内角大小最均匀,尽可能避免角度过小及过大的情形。(5)区域性:改变网格中的某一顶点(新增、删除或移动)只影响与该点相邻的三角形。[25](6)具有凸多边形外壳:剖分所得的三角形全体构成点集的凸包。5、Delaunay三角剖分的实现Delaunay三角剖分的算法主要有分治算法和逐点插入法等,已经有很多开源代码,OpenCV里也封装了Delaunay三角剖分功能。本文采用开源的三角剖分库Triangle,输入二维坐标点信息,输出各种条件下的Delaunay三角网格。如图4.3、4.4、4.7、4.9均为基于87个特征点人脸三角剖分,图4.13为与人脸网格同胚(87个特征点)的Tom猫脸部三角剖分。图4.13Tom猫脸部网格图4.14Tom猫脸部网格纹理贴图4.3纹理映射仅有三角网格的变形结果既不形象也不容易辨别效果的好坏,所以需要给网格加载原图片信息,即纹理映射。[26]纹理映射是将纹理空间中的纹理像素信息映射到屏幕空间中的过程,俗称纹理贴图。通过纹理映射能够大大提高物体的真实感,实际应用中通常利用 本科毕业设计说明书(论文)第27页共43页OpenGL提供的纹理对象管理技术来实现,大致步骤可分为:载入纹理图,创建纹理对象并为其指定一个纹理;确定纹理映射的方式;启动纹理贴图功能;绘制场景,并指定纹理坐标和相应几何图形坐标。另外,需要注意的是纹理坐标的范围为[0,1].如图4.5、4.6、4.8为基于人脸网格的纹理贴图,而图4.14为基于Tom猫脸部网格的纹理贴图。4.4本章小结本章重点介绍了2D情形下基于三角网格的变形变换方法,提出问题、简化问题并给出了该问题的解决方法,然后又简单介绍了Delaunay三角剖分和纹理映射的基础知识及实现方法,这些都将在下一章软件的具体实现中有所体现。 本科毕业设计说明书(论文)第28页共43页5基于二维图像的实时表情动画软件设计前面的章节已经介绍了基于视频的人脸检测与跟踪、特征点检测以及基于三角网格的变形变换等方法,本章将基于这些理论知识具体设计基于二维图像的实时表情动画软件。5.1软件运行环境基于视频的表情动画软件的开发环境如下:1、视频图像采集设备:普通摄像头2、CPU:Intel(R)Core(TM)i3-2310M@2.10GHz双核3、内存:2.00GB4、硬盘:320GB5、操作系统:Win732位6、软件:以Qt为开发平台,在VisualStudio2010编程环境下,辅助OpenCV、OpenGL、OpenMesh、Triangle等开发源库,配合基于MFC编程的特征点标记UI获取Tom猫等卡通人物脸部网格。5.2软件整体框架介绍图5.1软件整体框架 本科毕业设计说明书(论文)第29页共43页图5.2运行界面(歪脖)图5.1为本次软件设计的主要界面,下面将对工具栏和标签栏按钮的功能、软件的使用作简单介绍。5.2.1工具栏介绍按从左到右的顺序分别介绍工具栏上的按钮功能:1、realtimeAnimation:基于电脑摄像头捕捉人脸图像并实时动画卡通脸。2、readAVI:读取已有的AVI人脸视频并实时动画卡通脸。3、tapeAVI:基于电脑摄像头录制人脸视频并实时动画卡通脸。4、readAvatarMesh:读取卡通脸网格。5、loadTexture:为卡通脸网格载入纹理图像。6、background:选择背景颜色,默认的背景颜色为灰黑色,为了方便打印选择白色,如图5.1。5.2.2标签栏介绍1、Point:绘制并显示网格顶点。2、Edge:绘制并显示网格边。3、Triangle:绘制并显示网格三角面。4、Texture:绘制并显示纹理。5、Light:光照。6、Axes:绘制坐标轴。5.2.3软件使用介绍软件运行后,先点击readAvatarMesh按钮读取动画目标网格,读取成功后界面最下方会显示网格点、边、面信息;然后点击loadTexture载入相应的纹理图 本科毕业设计说明书(论文)第30页共43页像,通常勾选Point、Texture标签显示网格点和纹理图像;最后可选择realtimeAnimation通过摄像头捕捉人脸图像并实时动画,选择readAVI来读取一段录制好的人脸AVI视频进行实时动画,或者选择tapeAVI通过摄像头捕捉人脸图像进行实时动画,同时录制视频。其他按钮或标签选项可根据使用者需求和喜好来选择。软件运行界面如图5.2所示。5.3软件主要模块设计该软件主要分为人脸特征点实时检测模块、脸部三角网格生成模块、网格读取显示模块、基于网格的变形变换模块。下面将分别介绍这四个模块。5.3.1人脸特征点实时检测模块利用OpenCV开源库中的函数通过摄像头捕捉或从视频中获取一帧图像,检测出人脸位置并利用AAM算法标记出特征点位置。下面介绍几个主要函数及其功能:1、CvCaptureOpenCV里定义的视频获取结构,可以为它初始化具体的获取视频接口。(1)cvCaptureFromCAM通过摄像头获取视频,如CvCapture*pCapture=cvCaptureFromCAM(0).(2)cvCreateFileCapture从文件读取视频,如CvCapture*pCapture=cvCreateFileCapture(filename.data()).(3)cvReleaseCapture释放CvCapture结构,具体用来释放申请的cvCaptureFromCAM或cvCreateFileCapture结构。2、CvVideoWriterOpenCV里定义的视频存写结构,可以为它初始化具体的视频存写结构。(1)cvCreateVideoWriter创建存写视频对象,如cvCreateVideoWriter(fname,CV_FOURCC("P","I","M","1"),30,cvGetSize(pImg),1);定义将摄像头捕捉的每帧图像存为常用的AVI视频格式,每秒30帧。 本科毕业设计说明书(论文)第31页共43页(2)cvReleaseVideoWriter释放CvVideoWriter结构。3、cvQueryFrame从摄像头或文件中获取一帧,解压并返回这一帧图像。如IplImage*cvQueryFrame(CvCapture*capture);4、EiGetExpression基于AAM算法检测人脸表情,获得特征点。5.3.2脸部三角网格生成模块利用Triangle开源库对检测出的人脸特征点进行三角剖分。为了使每次剖分后的三角网格同胚以满足变形变换的要求,这里不仅输入了特征点的坐标信息,还规定了特征点集的凸包,利用函数triangulate("-p",&in,&out,(structtriangulateio*)NULL),获得约束的Delaunay三角剖分(CDT),其中,-p是众多开关中的一种。由于Tom猫等卡通脸的特征点信息无法通过基于人脸样本集训练的AAM算法检测出来,所以我们需要额外获得卡通脸网格。本文用MFC编写了一个小UI,它可以读取并显示网格点、边、面信息,拖动调整网格点位置,得到新网格点位置并保存;还可以添加删减点,重新生成网格并保存成obj文件。该UI的运行界面如图5.3所示。通过试验,分别生成了Tom猫、狮子、老虎、狗、熊猫、猩猩、纳威人等一系列卡通脸网格。图5.3FacialFeaturePointsSet软件界面及网格绘制为了加快程序运行,满足实时性要求,在软件实现中,人脸模板和猫脸模板 本科毕业设计说明书(论文)第32页共43页都预先生成好并保存成obj文件,在程序运行时直接载入,提高了软件的实时性。5.3.3网格读取显示模块开源库OpenMesh里定义了所能用到的一切网格处理函数,OpenGL里也定义好了点、线、面的绘制,光照处理,旋转操作等,使用都很方便,由于细节很多且不是本文重点,这里不作详述。5.3.4基于网格的变形变换模块本模块将变形变换的相关操作封装成Transfer类,主要接口有:getRverseV(Mesh3D*mesh,SparseMatrix&V);getSDeformationMx(Mesh3D*source,Mesh3D*deform);这两个函数用来获得变形时对应的仿射变换矩阵,并重新排列元素得到第四章线性优化问题中的稀疏系数矩阵A和向量c.getTransformMesh(Mesh3D*source,Mesh3D*target,Mesh3D*deform);该函数用来获得变形变换后,目标网格随源网格变形后的特征点坐标,即新网格。实验中我们发现,仅仅通过87个特征点纹理贴图后,头部信息少,动画对象不够生动,如图4.14.所以我们通过FacialFeaturePointsSet软件增加了耳朵、头顶等部位的特征点并生成新网格,如图5.3.由于额外添加的特征点在人脸网格(源网格)中没有对应点,其变形需要单独处理,具体通过下面的函数:getRTdeformation(Mesh3D*mesh,vectorpList,MatrixXd&R,VectorXd&d);来获取整个头部的刚体变化矩阵(旋转和平移),让耳朵、头顶等部分随整个人脸位置的改变而改变。5.4软件设计中遇到的问题与解决方案5.4.1加速处理我们知道,在大型稀疏矩阵方程组问题的求解中,主要时间消耗在对系数矩阵的分解上,而在视频处理中,如果每相邻两帧图像都按第四章所述方法计算得到一个变换矩阵,那么稀疏矩阵A和向量c都在变,这样不仅十分影响软件的运行速度,而且上一帧的图像信息可能不完整,如侧脸、部分遮挡等情况特征点检测不准,这会导致基于这一帧与下一帧的变形结果异常甚至矩阵求解失败。为了 本科毕业设计说明书(论文)第33页共43页解决这一问题,我们把实时处理中获得的每一帧图像都和第一帧图像作比较,这里要求获取的第一帧图像必须是标准脸,这时脸部信息最完整。同样地,动画目标网格的变形都基于初始网格(动画目标标准脸网格),因为矩阵A的元素都由变形前的顶点坐标决定,即由初始网格顶点位置决定,所以A是不变的,只有cT在变,于是我们可以只对AA做一次LU分解,然后将分解后的结果应用到每次的矩阵求解中,大大减少矩阵求解时间,从而提高软件的实时性。5.4.2放大眼部变形效果处理当表情快速变化时会导致某些部位特征点检测不准,如脸部、下巴轮廓,而且眼部上下特征点一直会保持一定距离,即使人眼闭合,相应特征点也不闭合(特征点检测情况可在最后一章结果展示中看到,图6.1表情动画序列),这对基于特征点网格变形的表情动画来讲,会导致动画对象双眼也不闭合,动画失败。经过反复试验,发现双眼张合时,基于AAM检测的特征点会随着眼睑上下运动,只是变化不明显。于是我们可以通过计算变形程度(上下眼睑对应特征点的欧式距离),放大变形效果(上下拉伸眼睑特征点),并尝试设定阈值,当变形程度超过阈值时,判定为闭眼(使上下眼睑对应特征点纵坐标相等),实验效果良好。5.4.3特征点检测异常的处理前文已经提到,当表情快速变化或者人脸不在镜头内时,特征点检测会出错,部分点可能离散出去或者完全检测不到,导致动画变形失败。如图5.4通过追踪特征点的运动轨迹发现嘴部中间的特征点离散出去,导致图5.5猫嘴部变形异常。又如图5.6所示,当头部扭动过大,本来(正脸时)分散开来的特征点可能重叠在一起或者相距很近,导致动画完全失败,可能的原因是这种情况下特征点检测失败,或者矩阵求解失败。解决方案是基于先验知识给出判断条件:如当动画对象嘴部特征点在鼻子或者眼睛特征点之上时,当左脸的特征点运动到右脸时等等,这些情况均说明动画失败,此时取最近一次正确动画的结果作为本次动画效果,并显示和保存下来。具体修改后的结果见最后一章图6.1或程序演示视频。5.5本章小结本章主要介绍了基于二维图像三角网格的变形变换方法的实时动画软件的 本科毕业设计说明书(论文)第34页共43页编程环境、总体框架及主要模块设计,给出了实现过程中遇到的问题及解决方案。关于本软件的运行效果,优点及不足之处将在下一章作出总结。图5.4张嘴特征点轨迹图5.5张嘴对应的动画效果图5.6大幅度扭头时特征点检测及动画效果 本科毕业设计说明书(论文)第35页共43页6总结与展望6.1本次毕业设计的成果本文受市面上流行软件“会说话的Tom猫”表情单一、不能随用户表情变化而变化这一不足的启发,学习了解了表情动画研究所取得的成果和现有系统的优缺点,经过对基于视频的人脸检测与跟踪、人脸特征点检测提取、三角网格处理等知识的学习,提出了一种基于三角网格变形变换的表情动画方法,它只需基于普通摄像头捕捉到人脸表情,便可对二维图像中的卡通脸进行实时动画。通过学习MFC编程、Qt编程以及OpenCV、OpenGL、OpenMesh、Triangle库的使用,设计出实时表情动画软件。经实验,该软件动画效果良好,实时性好(每秒至少可处理30帧图像),具有较好的稳定性,可被一般用户使用。本次设计对各种卡通脸进行了表情动画实验并选取部分结果进行了展示,如文章的最后图6.1所示动画序列,其中实验图片均来自网络。6.2软件的优缺点6.2.1软件的优点本软件最大的优点是软件本身小、运行速度快、无需任何数据预处理、对系统要求低且动画效果良好,比较鲁棒。基于这些特性,它完全可以移植到手机端,用户只需下载后便可使用。6.2.2软件的不足由于本软件只是基于2D图像的扭曲变形来表达实际对象的空间信息(3D),不可避免地会存在信息丢失的情况,即动画表情不自然不逼真甚至怪异,无法表现出如皮肤的褶皱、嘴巴的鼓动等面部信息,一是由于特征点相对较少,无法表达精细的表情变化,二是初始图像没有这些面部信息,基于它的纹理映射结果自然无法表现出这些信息。除此之外,嘴巴的张合也不自然,嘴中没有牙齿、舌头等纹理信息,只是通过图像的拉伸、像素的简单填补来表现,虽然也可以基于一张有张嘴后信息的图像进行纹理映射,但处理的效果不够好。由于实验的动画素 本科毕业设计说明书(论文)第36页共43页材有限——直接从网上搜索的2D图像,初始表情脸不是很好,影响了动画效果,后期需要设计自己的动画素材。另外,因为眼部特征点变化小,放大处理后,变形变得十分敏感。在实验过程中,发现特征点检测本身的抖动(可能是光照不稳定、基于AAM算法对每帧图像迭代拟合的结果有少许偏差)、撇嘴时牵动眼部特征点变动等情况会导致动画对象闭眼,这是不想要的,如何寻找设定更好的判断条件和阈值是需要进一步思考和实验的。在处理特征点检测异常或者检测不到的情形方面,本文只是单纯地舍弃本次结果,并选取最近一次正确的结果替代,虽然简单,但无疑舍弃了本次的表情信息,这也不是想要的,如何找出这些异常点或者缺失点并将其归正,从而保留本次表情信息,还需要进一步的研究。最后,在软件运行时环境光照变化方面,本文没有做出好的处理,所以当光照过暗或过强时,基于AAM算法检测特征点会不准,从而导致动画失败,这直接影响了其实用性,因为无法保证软件运行时环境光照刚刚好,尤其是移植到手机端之后。关于光照的处理,多基于机器学习,在AAM模型建立和拟合过程中,需加入不同光照情况下的处理,即训练集中的图像亮度各不相同而且很丰富,并对每次拟合结果进行纠错,然后再迭代学习。这样处理后的软件才能在光照变化下保持鲁棒。6.3展望在本章上一节分析了软件的优点和不足,并针对不足给出了可能的解决方案,由于本科设计时间的限制,无法及时实践,暑期会继续进行软件优化,美化软件界面,改进算法,增加对光照变化和运动时场景变化的学习处理,提高效率和准确率,同时考虑使用的便利度及用户感受。另外为了不损失空间信息,让动画效果更逼真和鲁棒,必须要设计动画对象头部(包括脸部)的3D网格,取代目前的2D网格,这样就需要找到某种映射关系,将AAM算法检测到的特征点对应到3D网格上,这和数码相机拍照的原理相似。最后,精简代码,将其移植到手机端,发布到网上供一般用户使用。相信在不久的将来,表情动画会摆脱对特殊硬件设备的依赖,去除繁琐的数据预处理过程,并且保持动画效果的传神逼真,更好地应用到动画、游戏、虚拟 本科毕业设计说明书(论文)第37页共43页影视和人们日常的交流娱乐中。 本科毕业设计说明书(论文)第38页共43页 本科毕业设计说明书(论文)第39页共43页 本科毕业设计说明书(论文)第40页共43页图6.1表情动画序列图6.1说明:第一行序列为人脸表情序列,第二行为Tom猫动画序列,第三行为纳威人动画序列,第四行为卡通女动画序列,第五行为猩猩动画序列。 本科毕业设计说明书(论文)第41页共43页致谢感谢我的导师——中国科学技术大学数学院刘利刚教授,在本次毕业设计的选题、开题以及后期完成过程中,从宏观结构框架及细节问题方面给予极大的指导和鼓励,在学习方法和生活方式上也给了很多有益的建议,对我今后的成长有很大帮助。在此,向刘老师致以崇高的敬意。感谢我的学长——中国科学技术大学数学院计算机图形学专业研一学长王士玮等,在毕业设计编程问题上给予了一定的指导和鼓励,让我从他们身上学到了很多经验和技巧,在此,表示由衷的感谢。感谢我的毕业设计指导老师——南京理工大学理学院张正军副教授,在毕业设计的具体进展和论文写作上给予了指导和监督,让我得以按学校要求顺利完成毕业设计。在此,特向张老师表示由衷的感谢。最后,感谢我生命中的每一个人,我的成长离不开你们的参与,更感谢我的女朋友,在过去23年的生活中始终坚持不出现,直至今日都让我专心学习,更好地完成毕业设计,谢谢! 本科毕业设计说明书(论文)第42页共43页参考文献[1]SumnerRW,PopovićJ.Deformationtransferfortrianglemeshes[C].ACMTran-sactionsonGraphics(TOG).ACM,2004,23(3):399-405.[2]WilliamsL.Performance-drivenfacialanimation[C].ACMSIGGRAPHComputerGraphics.ACM,1990,24(4):235-242.[3]HuangH,ChaiJ,TongX,etal.Leveragingmotioncaptureand3Dscanningforhigh-fidelityfacialperformanceacquisition[J].ACMTransactionsonGraphics(TOG),2011,30(4):74.[4]BradleyD,HeidrichW,PopaT,etal.Highresolutionpassivefacialperformancecapture[J].ACMTransactionsonGraphics(TOG),2010,29(4):41.[5]BeelerT,HahnF,BradleyD,etal.High-qualitypassivefacialperformancecaptu-reusinganchorframes[C].ACMTransactionsonGraphics(TOG).ACM,2011,30(4):75.[6]ZhangL,SnavelyN,CurlessB,etal.Spacetimefaces:highresolutioncaptureformodelingandanimation[C].ACMTransactionsonGraphics(TOG).ACM,2004,23(3):548-558.[7]WeiseT,LiH,VanGoolL,etal.Face/off:Livefacialpuppetry[C].Proceedingsofthe2009ACMSIGGRAPH/EurographicsSymposiumonComputeranimation.A-CM,2009:7-16.[8]WeiseT,BouazizS,LiH,etal.Realtimeperformance-basedfacialanimation[J].ACMTransactionsonGraphics(TOG),2011,30(4):77.[9]CaoC,WengY,LinS,etal.3Dshaperegressionforreal-timefacialanimation[J].ACMTOG(Proc.SIGGRAPH),2013,32(4):41.[10]CaoX,WeiY,WenF,etal.Facealignmentbyexplicitshaperegression[C].Co-mputerVisionandPatternRecognition(CVPR),2012IEEEConferenceon.IEEE2012:2887-2894.[11]CaoC,WengY,ZhouS,etal.FaceWarehouse:A3DFacialExpressionDatabaseforVisualComputing[J].IEEEtransactionsonvisualizationandcomputergraph-ics,2014,20(3):413.[12]WengY,CaoC,HouQ,etal.Real-timefacialanimationonmobiledevices[J].Gr-aphicalModels,2013.[13]严严,章毓晋.基于视频的人脸识别研究进展[J].计算机学报,2009,05:878-886.[14]林天威.基于视频流的人脸识别系统研究[D].哈尔滨:哈尔滨工程大学,2010. 本科毕业设计说明书(论文)第43页共43页[15]BoserBE,GuyonIM,VapnikVN.Atrainingalgorithmforoptimalmargincla-ssifiers[C].ProceedingsofthefifthannualworkshoponComputationallearningtheory.ACM,1992:144-152.[16]OsunaE,FreundR,GirosiF.Trainingsupportvectormachines:anapplicationtofacedetection[C].ComputerVisionandPatternRecognition,1997.Proceedings.,1997IEEEComputerSocietyConferenceon.IEEE,1997:130-136.[17]PlattJ.Sequentialminimaloptimization:Afastalgorithmfortrainingsupportvectormachines[J].Internationaljournalofcomputervision,1998.[18]左登宇.基于Adaboost算法的人脸检测研究[D].合肥:中国科学技术大学,2009.[19]ViolaP,JonesM.Rapidobjectdetectionusingaboostedcascadeofsimplefeatu-res[C].ComputerVisionandPatternRecognition,2001.CVPR2001.Proceedingsofthe2001IEEEComputerSocietyConferenceon.IEEE,2001,1:I-511-I-518vol.1.[20]ViolaP,JonesMJ.Robustreal-timefacedetection[J].Internationaljournalofcomputervision,2004,57(2):137-154.[21]林维训,潘纲,吴朝晖,等.脸部特征定位方法综述[J].中国图象图形报,2003,8(8):849-859.[22]GaoX,SuY,LiX,etal.Areviewofactiveappearancemodels[J].Systems,Man,andCybernetics,PartC:ApplicationsandReviews,IEEETransactionson,2010,40(2):145-158.[23]GoodallC.Procrustesmethodsinthestatisticalanalysisofshape[J].JournaloftheRoyalStatisticalSociety.SeriesB(Methodological),1991:285-339.[24]OpenCV中文网站,主动外观模型(AAM)[EB/OL],2010.12.6.http://wiki.ope-ncv.org.cn/index.php/主动外观模型(AAM).[25]百度百科,Delaunay三角剖分算法[EB/OL],2014.5.19.http://baike.baidu.com/view/1691145.htm.[26]百度百科,纹理映射[EB/OL],2013.12.11,http://baike.baidu.com/view/405073.htm.'