人脸建模软件毕业论文(初稿).doc
《人脸建模软件毕业论文(初稿).doc》由会员分享,可在线阅读,更多相关《人脸建模软件毕业论文(初稿).doc(28页珍藏版)》请在三一办公上搜索。
1、目 录1 引言12 概述22.1 人脸建模软件概述22.2 本设计方案思路32.3 研发方向和技术关键32.4 主要技术指标43 软件设计53.1 软件框架的搭建63.2 特征点的选取63.3 OpenGL环境下3D模型的显示73.4 建模方法83.5 模型文件格式93.6 其他说明94 软件框架的实现104.1 框架概要104.2 图形用户界面的实现104.3 OpenGL环境的实现124.4 照片和特征点的实现155 核心算法的实现175.1 算法概要175.2 数学归化算法175.3 拉普拉斯变形算法185.4 Mask透明截图算法216 调试247 结论26致谢27参考文献281 引言
2、人脸是人类日常情感表达和交流最重要、最直接的载体。人脸的计算机建模应用非常广泛,比如说电影、广告人物动画、电脑游戏、视频会议、人机接口、面部外科手术、电视节目、计算机辅助手语教学以及心理学、认知科学等许多领域。 一个具有真实感的人脸模型能够丰富人机接口,增强系统非口语语言通信及表情信号的能力,使人机接口更令使用者感兴趣,且更易于使用。通过计算机生成具有真实感的三维人脸拥有广阔的应用前景,而且这项技术是近年来计算机图形学、计算机视觉、人工智能等领域中最具挑战性的问题之一。其实,早在20世纪70年代关于人脸建模及动画的研究便开始了。这个开创性的工作是由Parke起步的。接着Waters等人提出了广
3、泛应用的肌肉模型方法。Cohen和Massaro以及其他很多研究者对可视化语音合成进行了初步的尝试。随着网络技术的普及,世界上第一个网上虚拟播音员Ananova在伦敦发布,计算机合成的Ananova可以一天24小时发布新闻。人脸建模的应用现在已经非常广泛,模型的真实程度也较以前有了很大的飞跃。利用三维扫描仪获取三维形状数据和纹理信息是一种直接的人脸建模方法,通常具有较高的精度,但是存在硬件设备造价高、不灵活等不足,一般只适用于某些特殊场合;当前的研究热点主要集中在根据图像和视频序列进行人脸重建,现有基于多张图像的方法普遍存在特征点匹配复杂、效率低等不足。根据单张人脸照片上的少量特征点能够快速、
4、自动地实现特定人脸的建模,是目前三维人脸建模研究中一个极具潜力的研究方向。本设计就是制作一个基于单张人脸照片的快速、自动建立个性化人脸模型的应用软件。其目标是以较少的输入和交互操作,自动建立人脸3D数据模型,所建立的模型与人脸照片中的样本具有较高的相似度。2 概述2.1 人脸建模软件概述一般的,人脸建模软件的设计包括以下3个过程:脸部数据的获取、3D人脸几何建模、纹理图像的合成提取。通过人体测量学对相似的面部进行测量,对其结果进行统计,生成脸的统计学数据。这些统计学数据被当作对参数化表面的约束。对特定人脸的建模依然需要用户输入大量的数据,但现在也可以通过激光扫描仪和立体摄像机等自动实现。人脸几
5、何建模就是把真实人脸的框架标准化,然后用网格表示出来。这也是本次毕业设计的难点,因为真实人脸几何建模非常困难并且很耗时间,真实的人脸是高度光滑且形状复杂的,并且人们对它的每一个细节都非常熟悉.对于3D人脸几何建模,通常情况下,为了把脸表达得更加详细、生动,总是希望网格数越多越好,但是考虑到计算代价,又不可能把网格数无限制地增加.3D人脸几何建模的最基本要求是,能够表达清楚脸部的明显特征,同时希望网格数尽可能的少.脸部模型生成方法大致可以分为3种:多边形建模技术、曲面建模技术和体网格建模技术.人脸纹理图像的生成也是很重要的一个环节,对模型附加纹理可以极大的提高模型和真实源的相似度,因为纹理图像可
6、以表现出模型本身很难表达出的信息,比如说像睫毛这样细小的细节。通过人脸照片可以直接提取人脸的纹理特征,主要应用的技术有Mask图,Alpha透明度合成等。软件中的建模方法用到了标准人脸变形法,这个方法是将一个已经完成建模的3D人脸模型数据,根据特征化人脸照片及其特征点位置,利用一定的变形算法,通过一般化人脸到特征化人脸的变形来完成建模的。这个方法属于多边形建模法,而且理解起来比较容易,具备一定的可行性。但缺点是模型变形的控制有限,不能还原所有的3D数据。变形完成以后的模型,通过Mask图提取照片中的纹理特征,在提取照片之前还应注意照片中人脸大小的标准化。对提取的特征使用Alpha调节透明度,使
7、之融合在标准的人脸纹理上。本毕业设计中其他的工作点在于软件界面的设计和制作上。为了实现较好的人机交互功能,必须设计好软件的输入和输出操作。因为输入和输出操作是直接对用户可见的。而其他软件操作则是只有软件本身可见的,不对用户开放。所以用户可以不用关心模型的实际建模过程。2.2 设计方案思路本设计中最主要的要点在于1.软件界面的设计和制作;2.图片的导入;3.特征点的调整;4.3D模型的显示;5.对3D模型的交互;6.标准3D模型的变形算法;7.纹理特征图像的提取合成;8.特征点数据的三维化;9.模型文件和纹理文件的保存。1. 利用MFC的框架设计和制作软件界面;2. 利用文件的读取来完成照片图片
8、的导入;3. 通过建立特征点的数据结构,利用MFC提供的图形图像接口完成特征点的显示和控制;4. 建立OpenGL的图形环境,通过文件打开3D模型的OBJ文件,建立3D模型的数据结构,在OpenGL的环境中显示3D模型;5. 使用MFC提供的消息处理机制,完成OpenGL和消息的互动,由此对3D模型进行交互;6. 通过特征点的相对位置,采用拉普拉斯变形算法解决3D模型的变形问题;7. 通过特征点的相对位置,缩放原始照片图像,再用mask图对人脸照片的特征纹理进行提取和合成;8. 利用特征点的2维相对位置,寻找3维模型正面视图的边界点,通过寻找到的边界点完成2维数据的3维化。9. 在建模过程中生
9、成特征模型所需的数据,并建立临时文件,以便保存文件数据。2.3 研发方向和技术关键(1) 建立友好的图形用户界面,方便用户操作;(2) 面向对象的软件编程,MFC的API;(3) OpenGL的环境搭建和消息的传递;(4) 3D模型的显示、交互以及拉普拉斯变形;(5) 特征点2维数据的3维化;(6) 纹理特征的提取和合成。2.4 主要技术指标(1) 软件运行环境: 操作系统:Microsoft Windows XPMicrosoft Windows 7 内存:2GB 硬盘:50MB 软件环境:glmf32.dll; glu32.dll; glut32.dll(2) 模型顶点数:863个(3)
10、模型纹理顶点数:900个(4) 模型面片数:1630个3 软件设计人脸3D模型的建模过程主要包括3部分,第一步是用户输入人脸照片并调整特征点的位置,接着建立3D模型的数据结构和纹理合成,最后将建立好的人脸模型以文件的形式输出,保存到电脑上以便其他建模软件应用。根据建模过程可以将软件分为5个模块:输入模块;模型数据模块;纹理数据模块;核心算法模块(数据处理模块)和输出模块。具体的模块图可参见图3-1:图3-1 人脸建模软件模块图输入模块主要为用户提供人脸正面照片的导入功能,以及在导入照片后自动显示人脸特征点,并使用户可以执行修改这些特征点的操作。输入模块还提供给用户直接打开模型文件的功能。模型数
11、据模块的功能是保存用户导入的人脸模型数据和标准人脸模型数据,为这些数据建立数据结构。这些数据常驻内存,方便软件时刻对数据进行修改和保存。纹理数据模块为人脸模型的纹理图形建立数据结构,并且纹理数据包括用户输入人脸照片的图像数据。核心算法模块(数据处理模块)的功能是利用数学算法对模型数据和纹理数据进行操作。操作的依据是用户输入的照片图像以及用户调整后的人脸特征点的相对位置。由特征点相对位置调整人脸标准模型数据各个顶点的三维坐标,再由用户输入照片的图像数据合成人脸模型的纹理数据,并将这些数据保存至模型数据模块和纹理数据模块。输出模块的功能有OpenGL的显示及交互,它为用户提供良好的模型显示效果以及
12、对模型的控制功能,包括平移、旋转、缩放;还有用户导入照片以及人脸特征点的显示。输出模块的另一个作用是将模型文件(OBJ文件)保存到硬盘。3.1 软件框架的搭建人脸建模软件第一步需要的是一个具有较好交互性的图形用户界面。所有的输入和输出功能,必须体现在所设计的界面元素上。首先,输入功能包括:打开模型文件、建立模型文件、导入照片、对模型显示界面的控制操作、特征点的调整。其次,输出功能包括:保存模型文件、照片列表视图、显示3D模型的OpenGL视图、调整特征点用的照片视图。其中,打开模型文件、建立模型文件、保存模型文件作为软件界面的工具栏元素;导入照片和照片列表视图为照片列表元素;对模型显示界面的控
13、制操作和显示3D模型的OpenGL视图属于模型界面元素;特征点的调整和调整特征点用的照片视图属于特征点调整界面元素。对软件的界面设计如下图(图3-2)所示:图3-2 个性化真实感人脸建模软件界面最上面有两个图像按钮的一层为软件界面的工具栏元素,最左侧显示小照片和照片名称的列表为照片列表元素,中间显示3D人脸模型的就是模型界面元素,最右面用于调整特征点的即是特征点调整界面元素。3.2 特征点的选取人之所以能够通过视觉区别不同的人,主要是因为人面部的特征各有不同。经过专家计算分析,人面部光正面的关键特征点总数就达70个之多。这么多的特征点,对于如何从照片中提取是一个复杂的问题。本设计使用的方法是人
14、工调整这些特征点,那么太多数量的特征点势必增加用户的工作量,而且太多的特征点在数据结构的建立和计算上的难度很大。所以必须使用数量既少,又能较好表现人脸关键特征的特征点。在对其他人脸面部建模软件的调研中发现,FaceGen人脸建模软件使用了11个正面人脸的特征点。这些特征点的位置如下:颧骨的左右两个边界点,这两个特征点相当于是人脸部正面的左右两个边界,直接决定了人面部的宽度。下巴最下部的特征点,这个点即是人面部的下边界。两侧脸颊的中央拐点,这两个点确定了人面部的曲线由颧骨到下巴的趋势,是人面部形状的重点特征。两个眼睛的眼球中点,这两个点直接表示了人双眼的位置。左右两侧鼻翼的边界点,这两个特征点表
15、示了人鼻子的宽度和在面部的位置,通过人眼睛的两个特征点计算,还可以大致判断鼻子的长度。左右嘴角的两个边界点,同鼻翼两侧边界一样,这两点确定了嘴巴的宽度和位置。具体的特征取样如下图3-3所示(以软件中标准面部模型为例):图3-3 标准面部模型正面全部特征点,绿色亮点为特征点标记3.3 OpenGL环境下3D模型的显示为了较好的显示3D模型,软件使用了OpenGL作为3D模型绘制的接口。所以必须要配置OpenGL的图形环境,设置好该环境下的各项数据。首先设置OpenGL的显示环境,确定OpenGL的显示视图,视图的长、宽以及长宽比,还有显示的最小深度和最大深度,确定显示像素的属性。其次是导入模型数
16、据,调用OpenGL绘制函数,将模型的顶点、面片在图形显示视图上显示出来。最后打开纹理图像,为图形赋予纹理,同样须通过OpenGL的接口。其中需要注意的是,OpenGL的显示环境在配置好以后不宜任意改变,所以对于不可改变的显示环境,并不能匹配所有的模型文件。这样的话就不能提高软件的适用范围,而且局限了软件能够使用的模型文件。这样的话,我们在导入模型数据以后,为了使模型的数据适应到OpenGL的显示环境,必须对这些数据进行归化。本软件使用的归化方法是将所有的顶点坐标控制在-1, 1之间,这样OpenGL环境配置只需要考虑完全显示-1, 1之间的信息就可以了。3.4 建模方法本设计应用到的建模方法
17、是标准化模型变形建模法。软件自身含有一个标准的人脸模型,通过对这个标准模型的面部形状和纹理进行特征化的变形合成后,生成一个具备一定特征的人脸模型。这个方法中最重要的部分就是如何使用用户照片中的人脸数据。首先,通过用户自己完成对特征点的调整。具体的调整方法参照3.2中叙述的特征点位置的选取。之后,使用提取到的顶点坐标,将坐标值归化在-1, 1之间。如此是为了使2维坐标与3维坐标相对应。3维坐标在显示模型时已经进行了-1, 1之间的归化。这样的话就可以将2维的数据信息映射到3维视图中了,通过这些信息标定3维顶图形对应顶点的目标位置,通过这个位置,就可以对3维顶点进行操作了。最后,使用拉普拉斯变形,
18、将对应顶点移动到标定的位置即可。以上为3维模型的数据建模过程,建模方法中还应有一步,即提取和合成照片中人脸的纹理图像。提取纹理过程的前两步和建模时的相同,都是对特征点信息的操作,方法也是一样的。纹理提取还应注意的是特征点的划分,因为特征点的位置具有一般性,所以必须将每个特征点位置的含义了解清楚。比如,哪个特征点是眼睛,哪个是鼻子。将特征点划分好后就可以分块截图了。分块做的目的主要是为了准确的提取特征,因为每个人的面部特征都是不尽相同的,不可能用一个标准的模子提取出准确的特征。之后就可以提取具体特征了,使用制作好的mask图。每张mask图都对应一张分块截图,使用mask图提取的特征即可以合成到
19、纹理图像上了。这里的合成方法是半透明合成法,分别取特征和标准纹理的50%进行合成,这样合成的纹理既可以保持一定的特征性,又可以和标准纹理相融合,比较符合建模的要求。3.5 模型文件格式本软件支持的模型文件格式为OBJ格式的文件,OBJ格式为三维模型文件的一般格式。它主要保存的信息有:模型注释信息;3维点集;2维纹理点集;3维面片集;2维纹理面片集。OBJ文件是未经压缩的模型数据文件,这些数据的编码为ASCII码。一般来说,对于点、面片数量庞大的模型文件,OBJ格式的文件读取速度较慢。但就信息查询来说,它能直观的反应点和面片的数据信息,对调试程序有很大的帮助。而且本软件用到的高模人脸模型的总记录
20、数约在25200-27200之间。但就读取文件来说不会对性能造成太大的影响,所以本软件以OBJ文件作为模型的输入输出文件。下面介绍详细的文件格式:数据标识符介绍详细说明#注释信息注释信息o模型来源说明模型的制作软件g纹理名称纹理图像名称的前缀s分组信息将模型从1开始分组v模型顶点模型的空间坐标(x, y, z)vt纹理顶点模型的纹理图像坐标(x, y)f面片模型面片所含顶点的序号/面片分隔符左边为模型序号,右边为纹理序号表格3-1 标准面部模型正面全部特征点3.6 其他说明本软件使用的编程环境是visual studio 2008下的MFC,所用到的图像操作接口除了MFC提供的之外,还有CXI
21、mage。CXImage是一款免费的图像操作接口,它的功能非常强大,这里主要用到了它对图像数据的操作,如:图像裁剪,图像提取等等。需要注意的是CXImage中对于图像(0, 0)点的位置与MFC中窗口的默认原点不同,CXImage使用左下角第一个点作为它的原点。在CXImage与windows窗口进行图像数据传递时必须进行图像坐标的转换。4 软件框架的实现4.1 框架概要本软件的框架内容如第3章软件设计中介绍的那样,包含图形用户界面和基本的输入、输出功能。具体实现时,我们把它分开成3个模块:第一模块为界面模块,即软件的图形用户界面的实现;第二模块为OpenGL环境模块,它代理所有有关OpenG
22、L的接口调用;第三模块为照片和特征点模块,这个模块管理用户导入的人脸照片、并提供给用户调整特征点的接口。上述为了软件基础框架的实现所分成的3个模块与设计中依据功能划分的模块不同,这3个模块的划分主要是为了编程的实际操作的方便划分的,这3个模块在实现时会同时完成功能模块中提到的内容。那么下面就围绕具体实践来介绍这3大模块的编程实现。4.2 图形用户界面的实现对于现在的软件程序,图形用户界面的编写非常的容易,因为所有的接口都已经被设计好,并且我们只需要调用它的方法就好了。尤其对于基于MFC的程序来说,图形界面的编程非常的方便,很多方法visual studio 2008已经代劳。那么我在这里将不再
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人脸建模软件 毕业论文初稿 建模 软件 毕业论文 初稿
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3934516.html