网格重建

网格重建,是指从三维点云出发,重建出三维网格。如图所示,左图是一个三维点云,右图是它重建出来的网格。网格与点云最大的区别是,网格有了曲面的概念,虽然它只是分片线性的曲面。最常见的网格是三角网格,这里讨论的网格重建也是三角网格的重建。

reconstructmesh

网格重建的方法

网格重建主要有两大类的方法:三角化方法和曲面拟合方法。

  • 三角化方法:这类方法把点云点当作网格顶点,然后直接三角化这些顶点。三角化的网格要满足一些性质,比如三角形尽量的好。常见的三角化方法有Delaunay三角化。
  • 曲面拟合方法:这类方法先用曲面去拟合点云数据,然后离散化曲面到网格。
  • 下面用一个点云线段化的例子来解释上面提到的两种方法。左上图是一个二维点云,它是一个线段的形状。要生成这个线段,有两类方法。一种是直接连接点得到线段,如右上图所示。一种是先用曲线拟合这些点,如左下图所示,然后再离散化这条曲线,得到线段,如右下图所示。

    point_line

    网格重建方法的比较

    三角化方法和曲面拟合方法各有优缺点,没有明显的谁比谁更好,适用于不同的应用场景:

  • 抗噪性:曲面拟合在一定程度上会光滑掉一些噪音,而三角化的方法保持点云坐标不变,所以曲面拟合的方法抗噪性要强一些。三角化方法在面对噪音数据时,需要先对点云进行去噪。
  • 保持几何细节:噪音和几何细节有时候是很难区分的,有些主观的东西在里面。抗噪性好的方法,在抹去噪音的同时,也会一定程度上抹去一些几何细节。
  • 补洞:曲面拟合的方法可以把一些小的数据缺失的部分给补上,并且数据曲率补洞的方式。曲率补洞在有些时候是很好的,但有时候也会产生不好的效果,比如需要平面补洞的地方。
  • 适普性:曲面拟合有个假设是点云是曲面形状,这个假设不满足的时候,曲面拟合的方法效果要打折扣。而三角化的方法并没有这个假设。不过点云如果是有厚度的,或者有重影,这两种方法处理的效果都不会很好。
  • 非均匀点云:有时候扫描的点云是非均匀的,在重点区域的密度大一些,比如扫描人体的时候,人脸部分的点云密度大一些。三角化的方法可以很好的处理这类情况。
  • 点云属性的传递:点云有些属性需要传递给网格,比如颜色。三角化的方法,网格顶点和点云点是对应的,可以天然的传递下来。而曲面拟合的方法,网格顶点与点云点没有对应关系,需要把点云的点投影到网格上进行属性传递,然后网格顶点再插值计算属性值,这样会引入误差。

  • LiDAR数据的网格重建

    LiDAR点云数据有很多特点,比如数据量大,分布严重非均匀,数据缺失严重,扫描对象复杂化等。这些特点使得LiDAR数据的网格重建具有一定的挑战。下图是一个LiDAR数据网格重建的例子。

    fitmesh_HeritageBuilding