多张人脸照片进行3D人脸重建
====一种开源方法VisualS+Meshlab======================
目前的主流是VisualSFM(找出各张照片中的特征点,进行两两匹配,根据匹配的结果,利用射影定理计算得到相机位置等场景信息,将场景信息与原始照片结合在一起得到照片中物体的三维点云)
+ CMVS-PMVS(创建稠密点云)
+ Meshlab(进行网格处理,利用三维点云创建三维模型)
VisualSFM官网:
http://ccwu.me/vsfm/
Meshlab官网:
http://www.meshlab.net/#description
多版本下载
https://sourceforge.net/projects/meshlab/files/meshlab/
源码分析:
https://blog.csdn.net/jz_x/article/details/78899050
3D重建英文教程:
https://wedidstuff.heavyimage.com/index.php/2013/07/12/open-source-photogrammetry-workflow/
中文教程:
https://blog.csdn.net/moneyhoney123/article/details/78454837
https://blog.csdn.net/xujie126/article/details/83108669
====3D人脸重建资料=====================
3D人脸重建学学习笔记(对多种3D人脸重建方法进行了概述)
https://blog.csdn.net/u011681952/article/details/82623328
使用深度卷积神经网络方法进行3D人脸重建(使用3DMM结合CNN。)
https://zhuanlan.zhihu.com/p/24316690
论文:Regressing Robust and Discriminative 3D Morphable Models With a Very Deep Neural Network
论文链接:https://talhassner.github.io/home/publication/2017_CVPR
源码:https://github.com/anhttran/3dmm_cnn
该作者另一篇论文,提供详细极端条件下的三维重建面,平面外旋转和闭塞,不止适用于近正面、无障碍的视点。
论文:Extreme 3D Face Reconstruction
源码:https://github.com/anhttran/extreme_3d_faces
LSFM(大规模人脸)介绍LSFM模型应用的论文介绍 使用全卷积网络还原“in-the-wild”人脸
https://36kr.com/p/5073179.html
论文:Face Normals “in-the-wild” using Fully Convolutional Networks (未找到源码)
3DMM python写的face3d(PRNET同作者)
(This project implements some basic functions related to 3D faces.You can use this to process mesh data, generate 3D faces from morphable model, reconstruct 3D face with a single image and key points as inputs, render faces with difference lightings(for more, please see examples))
github地址:https://github.com/YadiraF/face3d
face3d博客讲解:
https://blog.csdn.net/likewind1993/article/details/81455882
face3d下有大量关于3d重建的相关论文:
https://github.com/YadiraF/face3d/blob/master/3D%20Face%20Papers.md#surveys--doctoral-thesis
MVSNet:多视点三维重建(Mult-view Stereo)
提出了一个端到端的深度神经网络MVSNet来进行多视点三维重建。
为给定从不同视角拍摄的图像以及其对应的相机几何,通过稠密匹配的方式恢复出物体以及场景的三维结构。传统的MVS算法(例如PMVS,COLMAP)基于handcrafted像素匹配算法具有相当高的重建准确度,但对于纹理稀疏、非漫反射的物体表面难以得到令人满意的重建效果。
blog:https://blog.csdn.net/qq_38425638/article/details/84876481
论文链接:https://arxiv.org/abs/1804.02505
项目地址:https://github.com/YoYo000/MVSNet
MVS算法 从多视图的密集重建
blog简单的解析:https://blog.csdn.net/qq_28053189/article/details/74898110
https://blog.csdn.net/xuangenihao/article/details/78731377
MVS推荐书:Multiple View Geometry in Computer Vision
====开源========================================
3DMM三维人脸模型:
① 不带表情:BFM数据库matlab开源。(可以改写然后生成不同姿势,不同光照模型的彩色图)
② 带表情的3DMM模型:https://github.com/fengju514/Expression-Net
https://github.com/anhttran/3dmm_cnn
====3D人脸重建几种重要模型===============================================================
1.初版3DMM,三维形变模型(3DMM)《A Morphable Model For The Synthesis Of 3D Faces》
2.带表情3DMM,初版3DMM虽然解决了人脸变形模型的表达,但其在人脸表情表达上面明显不足,在2014年时,FacewareHouse这篇论文提出并公开了一个人脸表情数据库,使得3DMM有了更强的表现力。
FaceWarehouse: a 3D Facial Expression Database for Visual Computing
(VCG2014, Cao, C., Weng, Y., Zhou, S., Tong, Y., & Zhou, K., Zhejiang)
3.BFM模型,BFM模型中有对应的68个3D特征点X3d,如我们有单张人脸图像,以及68个人脸特征点坐标X,根据这些信息便可求出α,β系数,将平均脸模型与图像的脸部进行拟合,3D求解过程又转化为求解满足以下能量方程的系数。
A 3D Face Model for Pose and Illumination Invariant Face Recognition一种用于姿态和照明不变人脸识别的三维人脸模型
https://faces.dmi.unibas.ch/bfm/
4.LSFM大规模的人脸模型
这是一个3维形变模型(3DMM),从9663个独特的脸部标志中自动地搭建。LSFM 是迄今为止被构建出来的最大规模的形变模型,包含了从一个巨大的人口变量中提取的统计信息。为了搭建出这样一个模型,研究者创造了一个全新而且全自动且稳定的形变模型搭建管道,通过对目前最好的密集(dense)通信技术进行评估来获得信息。
论文:《Large Scale 3D Morphable Models》
https://link.springer.com/article/10.1007/s11263-017-1009-7
要将所有人脸与平均人脸的偏差都存储下来,3DMM 需要集成许多面部的信息。目前为止所采用的方法是扫描大量人脸,然后人工仔细标记所有的特征。也因此,目前最好的模型也只是基于几百张人脸——大部分还都是白人,而且模型在模仿不同年龄和种族人脸方面的能力十分有限。
5.利用 LSFM 合成的 100,000 张人脸训练了一个人工智能程序,将任意2D快照转换为精确的 3D 人脸模型
论文:《Face Normals “in-the-wild” using Fully Convolutional Networks》
基于LSFM提出了一种数据驱动型的方法,解决如何从一张单独的浓缩照片中预测整个一般平面,特别聚焦于人脸。论文创造了一种新的方法,探索将可用的人脸数据集用于数据库建设的可行性。研究者特意设计了一个深度卷积神经网络来评估人脸“in-the-wild”状态下的正常表面。还训练了一个全卷积的网络,能够精确地从多样化的表情的图片中还原正常表情
LSFM是有史以来最大规模的三维可变形面部模型(3dmm),它基于从大量性别、年龄和种族组合中获得的大约10000种不同面部特征的数据集。
该模型是使用一个特别设计的全自动系统建立的,该系统精确地建立了三维面部扫描之间的密集对应关系,并且对人脸中显示的大形状变化具有鲁棒性。LSFM不仅包括全球3DMM模型,还包括为特定年龄、性别或种族群体量身定制的模型。这是由于使用的数据集拥有极其丰富的人口统计信息而得以实现的。6.Nonlinear-3DMM
由于训练数据的类型和数量,以及线性基础,3DMM的表示能力是有限的。所以提出了Nonlinear-3DMM,更好地表达人脸信息。
论文:《On Learning 3D Face Morphable Model from In-the-wild Images》
Nonlinear-3DMM项目:
https://github.com/tranluan/Nonlinear_Face_3DMM
7. 端到端3D人脸重建方法,是近年新起的方法;它们绕开像3DMM的人脸模型,设计自己的3D人脸表示方法,采用CNN结构进行直接回归,端到端地重建3D人脸,现下主要代表有VRNet和PRNet。
https://github.com/AaronJackson/vrn
https://github.com/YadiraF/PRNet
======================================================
123D Catch 受限
1.照片数目限制 iPhone最多40
2.照片被缩小。照片被缩小以限制其细节
3.有限的纹理贴图大小:返回的纹理贴图以给定的大小返回,无法控制大小
4.全黑盒:没有用于指导三维重建或操作结果的控件
5.轻量级输出设计:并不意味着是一个专业的解决方案,这意味着三维化小饰品,并为您提供三维打印的东西,而不是创建高REZ模型。
2013 VisualSFM代表了FOSS摄影测量技术的最新水平。
meshlab下泊松重建的参数:
1.Reconstruction Depth
[--depth <reconstruction depth>]
This integer is the maximum depth of the tree that will be used for surface reconstruction. Running at depth d corresponds to solving on a voxel grid whose resolution is no larger than 2^d x 2^d x 2^d. Note that since the reconstructor adapts the octree to the sampling density, the specified reconstruction depth is only an upper bound.
The default value for this parameter is 8.
[--深度<重建深度>]
此整数是用于曲面重建的树的最大深度。在深度d处运行对应于在分辨率不大于2^d x 2^d x 2^d的体素网格上求解。请注意,由于重建器将八叉树自适应于采样密度,因此指定的重建深度仅为上限。
此参数的默认值为8。
2.Adaptive Octree Depth
[--minDepth <adaptive octree depth>]
This integer specifies the depth beyond depth the octree will be adapted. At coarser depths, the octree will be complete, containing all 2^d x 2^d x 2^d nodes.
The default value for this parameter is 5.
这个整数指定八叉树将被调整的深度之外的深度。在较粗的深度,八叉树将是完整的,包含所有2^d x 2^d x 2^d节点。
此参数的默认值为5。
3.Conjugate Gradients Depth
共轭梯度深度
4.scale factor
[--scale <scale factor>]
This floating point value specifies the ratio between the diameter of the cube used for reconstruction and the diameter of the samples' bounding cube.
The default value is 1.1.
[--比例<比例因子>]
该浮点值指定用于重建的立方体直径与样本边界立方体直径之间的比率。
默认值为1.1。
5.Minimun Number of Samples
[--samplesPerNode <minimum number of samples>]
This floating point value specifies the minimum number of sample points that should fall within an octree node as the octree construction is adapted to sampling density. For noise-free samples, small values in the range [1.0 - 5.0] can be used. For more noisy samples, larger values in the range [15.0 - 20.0] may be needed to provide a smoother, noise-reduced, reconstruction.
The default value is 1.0.
[--samplespernode<最小样本数>]
该浮点值指定了当八叉树结构适合于采样密度时,八叉树节点中应包含的最小采样点数。对于无噪声样品,可以使用范围[1.0-5.0]内的小值。对于噪声更大的样本,可能需要更大范围的值[15.0-20.0]来提供更平滑、降噪、重建。
默认值为1.0。
6.Interpolation Weight
[--pointWeight <interpolation weight>]
This floating point value specifies the importants that interpolation of the point samples is given in the formulation of the screened Poisson equation.
The results of the original (unscreened) Poisson Reconstruction can be obtained by setting this value to 0.
The default value for this parameter is 4.
[--点权重<插值权重>]
该浮点值规定了点样本插值在筛选泊松方程公式中的重要性。
通过将此值设置为0,可以获得原始(未屏蔽)泊松重建的结果。
此参数的默认值为4。
7.Gauss-Seidel Relaxations
[--solverDivide <solver subdivision depth>]
This integer argument specifies the depth at which a block Gauss-Seidel solver is used to solve the Laplacian equation. Using this parameter helps reduce the memory overhead at the cost of a small increase in reconstruction time. (In practice, we have found that for reconstructions of depth 9 or higher a subdivide depth of 7 or 8 can greatly reduce the memory usage.)
The default value is 8.
此整数参数指定块高斯-赛德尔解算器用于求解拉普拉斯方程的深度。使用这个参数有助于以稍微增加重建时间为代价减少内存开销。(在实践中,我们发现,对于深度9或更高的重构,细分深度7或8可以大大减少内存使用。)
默认值为8。
8.Confidence Flag
[--confidence]
Enabling this flag tells the reconstructor to use the size of the normals as confidence information. When the flag is not enabled, all normals are normalized to have unit-length prior to reconstruction.
启用此标志将告诉重构器使用法线的大小作为置信度信息。如果未启用该标志,则在重建之前,所有法线都将标准化为单位长度。