图形处理(十三)基于可变形模板的三维人脸重建-学习笔记
来源:互联网 发布:怎样成为淘宝直播 编辑:程序博客网 时间:2024/04/27 17:41
基于可变形模板的三维人脸重建-学习笔记
原文地址:http://blog.csdn.net/hjimce/article/details/50331423
作者:hjimce
一、数据库处理:
我们通过扫瞄得到的数据,每个人脸模型的网格顶点个数各不相同,也就是拓扑结构不同,因此我们需要对我们的训练数据,做一个归一化处理。使得每个模型的顶点一一对应,拓扑结构相同,这一步采用的算法是,参数化的方法,进行网格重构划分。
1、首先采用柱面参数化的方法,把网格参数化到圆柱上,对应到二维平面。
2、然后在参数空间采用光流法进行稠密对齐,并对网格进行重新划分
3、采用重心坐标放射不变性的方法,进行网格重建。
这个算法流程,刚好跟我研究生的课题搞的算法,很类似。这样我们的数据库中的每个人脸模型的顶点、拓扑结构都是相同的,我们可以得到一个平均脸,包好了:
这个平均脸,将后续使用。
二、人脸重建主要公式
基于形变模型的人脸重建的主要思想,是利用数据库的人脸模型,作为基底向量,表示出任何一个人脸模型(我们即将重建的人脸的三维模型):
其中Savg、Tavg就是我们上面第一步求得的平均脸模型。Si表示人脸数据库样本i的形状向量、Ti则表示纹理向量,α、β是未知的系数。因此假设我们输入一张用户人脸,我们要重建其三维人脸模型,我们的目标就是要求解α、β,只要这两个系数知道了,我们就可以利用上面的公式,求解出其对应的三维模型了。当然上面的计算公式,我们后面将会使用PCA进行简化降维。
三、优化求解
上面我们说到我们的目标是求解未知的系数:α、β,说是这么说,说起来简单,做起来难,因此接着我们要讲解的α、β求解,也是paper算法的灵魂了。那么具体要怎么解呢?我们有如下已知条件:
1、用户输入的一张人脸图片
2、人脸数据库平均脸(包含了贴图)
3、人脸数据库
OK,没了,这就是我们目前所知道的已知条件了。那么到底是怎么从2D重建出3D?也就是怎么求解α、β?算法的总体思路是采用迭代优化的方法,先随机初始化α、β,然后我们可以得到3D的模型,然后我们把这个3D模型,投影到2D平面,得到一张新的人脸图片。然后采用这张人脸图片与用户输入的人脸图片构建损失函数:
使得用户输入的图片与我们投影到二维的图片,差值最小化。然后对上面的式子α、β进行求导,最后采用梯度下降法,更新参数α、β,如此一直循环迭代,直到收敛。因为我们从三维投影到二维的过程中,涉及到相机等相关的参数,这些参数也是未知数,所以统一用:ρ表示,然后梯度下降的过程中α、β、ρ这三个参数一起更新。
参考文献:
1、《A Morphable Model For The Synthesis Of 3D Faces》
**********************作者:hjimce 时间:2015.12.15 联系QQ:1393852684 地址:http://blog.csdn.net/hjimce 原创文章,版权所有,转载请保留本行信息(不允许删除)********************
- 图形处理(十三)基于可变形模板的三维人脸重建-学习笔记
- 基于RGBD视频的三维人脸重建
- 图像处理学习笔记(深度学习+三维图形+机器学习+图像处理)
- matlab学习笔记(二)---三维图形的绘制
- 图形处理(五)基于旋转不变量的网格变形-Siggraph 2007
- 图形处理(五)基于旋转不变量的网格变形-Siggraph 2007
- vrn:基于直接体积回归的单幅图像大姿态三维人脸重建
- 基于立体视觉的三维图像重建
- matlab学习笔记(十三)---基于对象的操作
- (基于视频的三维形状和纹理重建)什么是互联网图形?——首席研究员童欣
- C++学习笔记(六)可变形参函数
- 基于PCL三维曲面重建
- 基于Leap Motion+openGL的三维手重建
- 基于轮廓的三维骨架重建方法和核心代码
- 三维人脸重建和表情仿真
- 三维人脸重建和表情仿真
- OpenCV学习笔记(十三)——模板匹配
- OpenCV学习笔记(十三)——模板匹配
- 图形处理(十二)拉普拉斯网格优化、最小二乘网格模型光顺
- iOS-OC-APP后台持续运行
- mysql的in选择结果过,按照in里面的排序排序
- 10019---初探JVM
- iOS程序猿之Git@OSC使用教程汇总
- 图形处理(十三)基于可变形模板的三维人脸重建-学习笔记
- python自学笔记--内嵌函数
- Drawable——VectorDrawable
- 总结使用Unity 3D优化游戏运行性能的经验
- iOS备忘录之XCode插件
- android5.0适配——轻松实现acitivty跳转View无缝过渡动画
- 88.Min Stack
- socket套接字
- mongodb 如何追踪集群数据