三维重建(含代码)
原文作者:阿飞
链接:https://www.zhihu.com/question/29885222/answer/1242628310
来源:知乎
上一篇文章大部分回答介绍了对刚体的三维重建工作,但对非刚体三维重建的工作介绍还比较少,来做一点点补充吧。
高赞 @曹力科 博士的回答介绍了基于RGBD的实时三维重建工作,各种XXXFusion效果很是惊艳,而且可以实时重建出动态物体的三维模型。但是也有个问题,要是RGBD相机我也觉得贵怎么办,我就想用普通的RGB相机去进行动态三维,还想只用一个RGB相机去完成重建。
学术界那帮大佬也这么想,想用最最最简单的设备去解决某个复杂的问题,即采用单目的RGB相机去进行动态三维重建。大道至简嘛,不然怎么体现出大佬的水平,手动狗头。
同时问题也来了,单目RGB相机在投影时已经失去了深度信息,如何恢复深度和重建呢?有这么几类方案。
一、NRSfM(NonRigid Structure from Motion)
Bregler等人[1]首先提出了NRSfM的思想,他们提出将目标物体在每一帧上的三维变形形状表示为K个形状基的线性加权组合,然后通过分解刚性系数矩阵来得到随时间序列变化的形状基、组合系数和摄像机运动参数。基于低秩形状的约束是一个强大的约束,但是它的求解是一个病态不定问题。
这类重建方案我不是很熟,只介绍个做的比较好的。
Ravi Garg等人CVPR2013的工作,论文地址:
Dense Variational Reconstruction of Non-Rigid Surfaces from Monocular Video∗
重建可以得到稠密的结果,效果还是很不错的,就是需要得到完整的视频后才能重建。
重建结果:
二、SfT(Shape from Template)
另外一种方法是SfT。这种重建方法需要预先得到目标物体在刚性状态下的三维模型来作为模板,后面模型去追踪单目视频里目标物体的变化,得到每一帧图像对应的形变三维模型。这种方法具有实时重建的可能。
重建的时候一般使用网格来表示三维模型,大佬们发现物体在发生形变时对应的网格模型是存在着约束的:等距约束(相邻网格顶点之间的距离在变形过程中保持不变)、平滑先验(相邻顶点的变形应该相似)和尽可能的刚性先验(变形可以用局部刚体运动近似)。打个比方,吹气球气球变大的过程中,气球上的某个点和它附件的点变化的趋势是相似的,但是这些点变大时又保持着最开始的拓扑结构。
1.Adrien Bartoli团队的工作
SfT的理论由Adrien Bartoli等人总结提出,对平面进行了稀疏重建。论文地址:Bartoli_etal_SfTBartoli主页:http://igt.ip.uca.fr/~ab/index.html
重建结果:
后面他们团队拓展了这个方法,对稠密完整的物体进行了重建,而且给出了一个Demo。论文地址:http://igt.ip.uca.fr/~ab/Publications/Collins_Bartoli_ISMAR15.pdf论文中说好的会公开源码,但是我没找到。
重建结果:
他们组后续还有一些相关工作,都是对这个方法的改进:http://igt.ip.uca.fr/~ab/Publications/Parashar_etal_ICCV15.pdf
此外这个组在arxiv上挂了一篇用深度学习方法做的SfT,但是现在还没正式发表,实验结果并不能重建得到完整的动态三维模型,只针物体的一个面完成了重建。https://arxiv.org/pdf/1811.07791.pdf
2.Lourdes Agapito团队的工作
这方面的工作主要由@余瑞 博士做的,并且开源了源码。
论文地址:http://www0.cs.ucl.ac.uk/staff/R.Yu/direct_nrsfm/direct_nrsfm.pdf
项目主页:http://www0.cs.ucl.ac.uk/staff/R.Yu/direct_nrsfm/direct_nrsfm.html
代码:https://github.com/cvfish/PangaeaTracking
重建结果:
一年后在这个基础上又做出了改进,把shape-from-shading的方法加入到整个系统中,提高了重建的质量和精度。可以发现下图重建的结果更好了,多了很多细节。
论文地址:http://www0.cs.ucl.ac.uk/staff/Qi.Liu/bmvc16/better_together.pdf
项目主页:http://www0.cs.ucl.ac.uk/staff/Qi.Liu/bmvc16/better_together.html
代码:https://github.com/qilon/PangaeaTracking
重建结果
3.马普所团队的工作
马普所的Marc Habermann等人把@余瑞 博士的工作改进应用到了人体动态三维重建方面。论文地址:https://gvv.mpi-inf.mpg.de/projects/LiveCap/data/livecap.pdf项目地址:https://gvv.mpi-inf.mpg.de/projects/LiveCap/
重建结果:
三、基于模型的方法 (Model-based methods)
这一类方法主要代表是HMR等,主要针对于人体和动物,作者建立了两个模型库SMPL和SMAL,然后把人或动物的姿态给模型参数化了。这几个项目用到深度学习的方法。
作者Angjoo Kanazawa
主页:https://people.eecs.berkeley.edu/~kanazawa/
Github:https://github.com/akanazawa
四、其他
除此之外还有一些对于人脸的重建,如Face2Face等。也是输入单目视频得到重建结果,这块我没去了解过,就不多介绍了。
做单目动态三维重建的团队还有Mathieu Salzmann等人和 @戴玉超 老师在的团队,但是成果都是偏向稀疏的重建,而且近几年没有看到新的成果,感兴趣的小伙伴可以去找找相关资料。
国内西安交通大学的Wang Xuan博士在这个方向也做了部分工作,他在Mathieu Salzmann组做过访问学生。
论文链接:https://link.springer.com/chapter/10.1007/978-3-319-46478-7_40link.springer.com
戴老师的工作,论文链接:http://users.cecs.anu.edu.au/~hongdong/CVPR12_Nonrigid_CRC_17_postprint.pdfusers.cecs.anu.edu.au
这篇回答主要介绍了几个稠密的重建方案,采用的方法也比较传统,大多是基于优化的方式进行的重建,目前深度学习的方法应用在这个领域的方案还比较少,没看到什么令人惊艳的成果。
由于水平有限,这篇回答仅抛砖引玉一下。肯定存在着很多纰漏和错误,请小伙伴们多多补充和指正。
五、引用
[1]Recovering Non-Rigid 3D Shape from Image Streams.Christoph Bregler, Aaron Hertzmann and Henning Biermann.Proc. IEEE CVPR 2000