Analytic Marching:一种基于解析的三维物体网格生成方法
点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者:Karbo
链接:https://arxiv.org/abs/2002.06597
来源:https://zhuanlan.zhihu.com/p/107658473
作者已授权,未经许可请勿二次转载。
摘要
1.探讨的问题:如何从三维物体的隐函数(implicit functions)表示,来尽可能精确地恢复出该物体的三维网格(mesh)?
2.传统方法:最常见的网格化方法是Marching Cubes(MC),但是它需要事先从三维空间中采样很多样本,即具有离散化的性质。并且只有当采样的分辨率很高时(例如 的采样数量),才有可能较为精确地恢复出隐函数所表示的三维物体网格。
3.本文做了什么:基于ReLU based MLP所具有的内在特殊性质,我们引入了analytic cells、analytic faces的概念,并给出了在何种条件下analytic faces会形成封闭的、分块线性的表面。并提出Analytic Marching(AM)算法,它可以绝对准确地恢复出被MLP学习得到的物体表面。
基本概念
1. 三维物体表示法:
显式:明确地表示三维物体的表面,例如mesh,它使用共面的顶点来显式地定义物体的一块表面。或者使用分块的参数曲面,曲面的性质就描述了物体的表面。
隐式:使用隐函数来描述物体的表面,例如隐函数: ,其 就定义了一个球体的表面,并且 定义了物体的外部, 定义了物体的内部。最常用的隐函数是Signed Distance Field(SDF),其数值是该点到物体表面的符号距离。
2. SDF在Deep Learning中的使用
目前主流的三维物体网格重建的流程如下:将物体图片输入到CNN,而CNN输出描述物体形状的shape feature;将3D coordinate(点P)与shape feature输入到MLP,而MLP输出物体在该点P处的SDF值。重建时,从MLP采样 个点,并使用等值面提取算法(例如MC)得到三维物体的网格表面。
但是这样就使得重建的精度与所选择的分辨率有关了。分辨率低了则精度低,分辨率高了则速度慢。并且MC得到的surface往往会丢失局部的尖锐细节。
方法
在此仅十分简单地介绍Analytic Marching的基本原理,此处的介绍十分不严谨,但是便于理解。形式化的数学描述和定理的证明请参见原文。
为了讨论简单起见,现考虑一个3层的MLP:其各层的结构为3-20-20-1,其中**函数使用ReLU,而输出层不使用任何非线性函数,暂不考虑bias。
记输入为 ,第一个隐藏层的输出为 ,第二个隐藏层的输出为 ,则预测的sdf为
不难发现,其中 可以替换成对角矩阵的形式,即 与 ,这里的 与 是描述第一层和第二层神经元**状态的向量,例如 。简记 为描述整个MLP**状态的向量。
那么给定 ,MLP则退化成一个线性的模型。其各层的输出均可以线性地计算:
、 以及 。
而MLP退化必须要满足一些条件约束,即 必须给定不变,换言之,隐藏层神经元的**状态要与 相符合: 且 ,也就是需要满足40个(2层隐藏层,每层20个神经元)不等式,我们简记为
实际上,一般情况下,不等式组 定义了一个在3D空间中的凸多面体,我们称之为analytic cell;注意到 实质上可能是analytic cell内部的零值面,所以 定义了analytic face所以接下来的问题就是依据analytic face的定义式,求解出plane 与多面体 相交的顶点。所得的顶点实质上就是mesh的顶点。
根据求解出的顶点,我们其实可以推理出与该analytic face相邻的analytic cell的 值,举例说明如下:如果当前 ,并且当前的analytic face上的某条边,实际上是由第1个不等式约束所在平面 与等式约束平面 相交所得的,那么与其相邻的analytic cell的 (仅改变第一位,因为是“第1个”不等式约束)。
既然已知另一个新的 ,那么便可以循环求解,直到没有新的 出现并且所有的 都已经求解完毕,就算求解完成了。
结果
如上是定性的效果图,与之相对比的方法GM为GreedyMeshing、MC为MarchingCubes、MT为MarchingTetrahedra,DC为DualContouring。它们都依赖于采样的分辨率。而我们的Analytic Marching是绝对精确的,不依赖于参数设定。(更多的结果请参见原文)
我们的方法具有精度高、能恢复出尖锐细节、速度快等优点,具备一定的理论和实用价值。
推荐阅读:
那些精贵的3D视觉系统学习资源总结(附书籍、网址与****)
机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划
重磅!3DCVer-论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-论文写作与投稿 微信交流群,目前已满2000+人,旨在交流顶会(ICRA/IROS/ROBIO/CVPR/ICCV/ECCV等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号