【原文:http://www.sigvc.org/why/book/3dp/chap5.3.2.htm】
5.3.2 基于多视角照片的3D人脸重建
多视角三维重建的技术原理请详见第6章6.3节“立体视觉重建:将照片转成3D数字模型”,本节主要介绍如何具体地操作和应用。Autodesk(欧特克)公司发布了一个建模软件 Autodesk 123D Catch,有了它,你只需要简单地为物体拍摄多张照片,不需复杂的专业知识。利用云计算的强大能力,123D Catch可以将用户拍摄的照片迅速转换为逼真的3D模型。官方下载地址:http://www.123dapp.com/catch,下载安装注册都很容易。
在实际使用时,用户一般需要拍摄至少20张左右不同角度的照片。比如你可以让朋友对着你的头部拍摄一组照片,然后用123D Catch生成你头部的3D模型。如果可能,最好围绕着物体拍摄两圈,每圈照片错开角度、高度和间隔,如图5.3.2-1所示。
图5.3.2-1 拍摄至少20张左右不同角度的照片 (图片来源:Autodesk)
再举一个例子,如图5.3.2-2所示的这组照片是先以约60度环拍一圈,再以约15度的角度环拍一圈。在拍摄之前,先计划好如何移动,如何从不同角度拍摄。记住一点,先围绕着物体转一圈拍摄,然后再拍些细节。围绕物体拍摄时,多少度角照一张,取决于你想拍的物体。有些物体25度角就可以。有些样子复杂的物体,需要更密集,比如转10度就需要照一张,转一圈下来共需要排36张。
图5.3.2-2 拍摄的路径规划以及所拍摄的多角度照片 (图片来源:3dprintime)
根据Autodesk的官方说明,要想用这个软件做出理想的3D模型,你还必须掌握如何去拍照,需要注意的地方如下。
² 整个拍摄过程,要保持在同样的光照下,有专业的环境最好。光线不能太亮和太暗。拍摄时也不能用闪光灯。拍摄时还要注意相机不能抖动以免照片模糊。
² 要连续拍完,不能今天拍了几张,明天再拍几张。
² 避免拍摄透明、反光、或平坦光滑的物体。
² 拍摄时,也要避免有对称特征的物体。
² 相邻照片之间最好有50%的场景重合。这样软件才能根据相同部分,把其他不同部分加进来。
² 如果拍摄活的动物或人,要确保他们在拍摄过程中不动。此外,不停的乱动也会使快门速度不够高的普通相机拍出模糊的运动图像来。
² 拍物品时,也不能把物品翻过来拍。把想拍的物体放好后,围着它转着拍。拍摄中只能你动,不能移动物体。
123D Catch采用的是多视角立体匹配重建(Multi-View Stereo:MVS)技术,原理建立在以特征匹配为基础的三角测距。因此,拍照时尽量使物体放置在有特征的背景里,否则软件很难在多张照片之间找到匹配,导致无法生成3D模型。比如,要避免拍摄没有特征的背景墙,软件非常难识别这样的背景照片。你可以添加一些特征到墙上,例如贴一些画是个好办法。又比如,你想拍一只恐龙,不要把它放在光滑的地板上。可以找块有特征的地毯或铺一张报纸(如图5.3.2-3左边所示),把恐龙放在地毯/报纸上面再拍摄。当然,你也可以在背景里粘贴一些特征纸条,如图5.3.2-3右边所示。同理,也不能拍摄那些平行、相似度太高(特征模糊的)物体,例如有很多一模一样窗户的楼房。
图5.3.2-3 将物体放置在有特征的背景里。左:报纸;右:画有特征的纸条
拍完照片之后,你就可以上传了。注意在上传前,你最好不要修改原始照片。因为原始照片带有照相机的参数,软件需要这些参数进行标定。上传照片后,软件会自动找到和匹配照片中物体的共同特征。以这些共同特征为基点,把不同照片中物体的特征整合在一起,以便生成3D模型。如图5.3.2-4所示,这是所生成的3D模型和它的三角网格。你可导出为3D文件,以便输出到3D打印机进行打印。
图5.3.2-4 生成的3D模型和它的三角网格
通过阅读前面的拍摄注意事项,可能有的读者心里会犯嘀咕:拍照难道要这么讲究啊?非也!你当然也可以有不那么讲究的套路,但前提是需要加钱购置设备。如图5.3.2-5所示,我们可以绕顾客一圈上下架设多台照相机(比如20台),以毫秒级的精度控制它们同步拍摄。这样,你就不用费时费力地端着相机绕顾客拍了。
图5.3.2-5 架设多台照相机同步拍摄人像 (图片来源:NUS)
然后,使用3D智能数字化算法,比如利用多视角立体视觉、Visual Hull技术(见第6章6.3.2节“基于立体视觉、SFM和Visual Hull的三维重建”)以及几何细节形变技术(见第6章6.2.3节“个性化形状的编辑与合成”),我们就可以获得瞬间的3D形状。如图5.3.2-6所示,因为拍摄在毫秒级的时间内完成,这时顾客就不再需要保持一个姿势几分钟不动了。
图5.3.2-6 使用3D智能数字化算法重建出瞬间的3D形状 (图片来源:MIT)
除了同步拍摄人体,我们当然也可以同步拍摄人脸。如图5.3.2-7所示,我们可利用多台同步拍照的高清单反相机,基于多视角重建技术来获取“毛孔级精度”的精细3D重建。
图5.3.2-7 利用多台同步拍照的高清单反相机来获取“毛孔级精度”的精细3D人脸(图片来源:ETH Zurich)
有的读者会说,上面的技术确实很酷,连毛孔都能拍出来。但这么多三脚架摆在顾客面前确实吓人(有种“大刑伺候”的感觉?),而且多台单反相机成本也不低,此外还有很多顾客脸上痘痘什么的也不少啊,毛孔级精度似乎太精细了(正所谓:架起大炮找蚊子)。没关系!创客们最大的优点就是乐于成为普通大众的“贴心小棉袄”,比如牛津大学就研制出一款手持式3D扫描仪Fuel3D,任何人都能通过它快速获得现实物体的3D模型。像普通相机一样,只需对准目标,按下快门,Fuel3D就能在数秒内帮你抓取3D人脸模型。如图5.3.2-8所示,左右安装有两个摄像头,也是基于计算机视觉立体成像的原理。
图5.3.2-8 Fuel3D的外形图 (图片来源:牛津大学)
与5.4节的Kinect相比,Fuel3D精度更高,如图5.3.2-9所示,这得益于它更高的拍摄分辨率。
图5.3.2-9 Fuel3D与Kinect的扫描结果对比。每个小图的左边为Fuel3D的结果,右边为Kinect的结果。