一、MeshLab

1、简介

  MeshLab是一款功能强大的开源三维网格处理软件,主要用于编辑、修复、简化和可视化三维三角形网格和点云数据。它支持PLY、STL、OBJ、3DS、COLLADA等多种常用的3D文件格式,提供了网格清理、修复、简化、纹理映射、参数化、布尔运算等丰富功能,并支持通过插件和脚本扩展其功能。MeshLab具有跨平台性和开源性,在3D打印、3D重建、反向工程等领域得到了广泛应用。

2、 Windows安装

  • 自定义安装路径(建议纯英文)

默认安装路径为:C:\Program Files\VCG\MeshLab

3、Linux安装

  • 更新发行版中的包
sudo apt-get update
  • 根据更新后的软件包列表升级已安装的包到最新版本
sudo apt-get upgrade

==建议定期运行这两条命令来保持系统的更新==

  • 安装MeshLab

可以直接从 Ubuntu 官方软件仓库安装:

sudo apt-get install meshlab

  • 启动
meshlab

直接在终端中输入 meshlab 即可启动 MeshLab 程序

二、3D重建

1、步骤

1.1 感测设备(Sensing Devices)

  • 设备类型:包括扫描器、深度摄像头、常规摄像头、激光雷达(LiDAR)等。
  • 数据获取:根据设备的不同,可以获取到部分点云数据、深度数据或图像数据等。

1.2 生成部分点云(Partial Point Cloud)

  • 技术方法:当只有普通图像数据时,需要使用”Shape from X”技术(如Shape from Shading)或基于多视几何的方法从单张或多张图像中恢复出三维信息,生成部分的点云数据。

1.3 注册与整合(Registration and Consolidation)

  • 目的:由于数据常常来自不同视角或设备,因此需要将多个部分点云数据进行准确对齐和整合,获得完整的点云模型。
  • 方法:包括使用特征匹配和几何对齐技术来确保所有点云数据正确对齐。

1.4 点云重建(Reconstruction)

  • 过程:拥有完整点云后,需要将其重建为连续的三维曲面模型,常用的技术包括曲面拟合、网格化等,比如经典的泊松重建算法

1.5 后处理(Postprocessing)

  • 步骤:包括修复、平滑和简化三维模型,以提高模型的质量和实用性。
  • 目的:确保生成的三维模型符合最终应用的要求,如减少多边形数量以适应实时渲染需求。

1.6 三维模型的应用(Surface for Applications)

  • 应用领域:虚拟现实、游戏开发、城市规划、工业设计、文物保护等诸多领域。

  三D重建是一个系统的过程,每个环节都至关重要,需要Hard(硬件设备)和Soft(算法技术)两方面的支持和创新,才能获得令人满意的三维模型。目前,深度学习技术的引入,也正在推动这一领域的发展。

2、表面重建与体积重建

  • 表面重建:通过几何单元拼接拟合物体表面描述物体的三维结构,如基于深度图的表面重建、基于三维密度图的表面重建。
  • 体积重建:直接将体素以一定的颜色和透明度投影到显示平面上,体现物体内部结构。

三、表面重建

1、导入PLY文件

  PLY (Polygon File Format或Stanford Triangle Format)是一种用于存储三维数据的文件格式,主要用于描述由顶点构成的多边形模型。PLY文件通常包含以下几个部分:

  • Header:文件头部分,用于描述文件格式版本、数据编码方式(ASCII或二进制)、元素类型(如顶点、面等)及其属性等信息。
  • Element Specification: 元素说明部分,描述文件中包含的不同元素类型,如顶点(vertex)、面(face)等,以及每种元素的属性和数量。
  • Element Data: 元素数据部分,存储了各个元素的具体数值,如顶点坐标、面组成的顶点索引等。

此外,PLY格式还可以存储点云数据~三维重建,此时文件通常只包含顶点元素,每个顶点对应一个点的坐标。

import Mesh

2、泊松重建(Poisson Reconstruction)

1. 理论

  泊松重建(Poisson Reconstruction)是一种高效的三维表面重建方法,尤其适用于从散乱点云数据中创建光滑、封闭的三维表面

基本原理

  泊松重建方法基于假设:表面可以通过求解一个隐式函数的梯度场来恢复。这个隐式函数通常是一个指示函数(Indicator Function),定义了空间中一个点是否属于对象内部。

关键组成部分

  • 指示函数 $\chi_M(x)$
    • 对于在模型 $M$ 内部的点 $$x$$,$\chi_M(x) = 1$,否则为0。
  • 梯度场 $\nabla \chi_M$
    • 指示函数的梯度场,指向模型表面的法向量方向。
    • 梯度场在模型的边界上最强,用于识别和定义模型的表面。
  • 泊松方程
    • 利用散乱点云中的法线信息(通常是通过点云数据预处理得到的),构建梯度场,然后求解泊松方程,从而重建出表面。(该过程通常涉及到求解一个大型稀疏线性系统。)

具体步骤

  • 有向点:图中展示的有向点表示每个点的位置及其法向量方向。
  • 指示梯度:基于有向点计算得出的梯度场,指出每个点的表面法线方向。
  • 指示函数:通过对梯度场积分(通常使用离散化的泊松方程),计算得出的指示函数,它描述了空间中每一点是否属于对象内部。
  • 重建表面

优点

  • 泊松重建在处理带有噪声和不完整数据的点云时表现良好,能够生成光滑且封闭的表面。
  • 它广泛应用于计算机视觉、医学成像、机器人技术和数字媒体等领域,特别是从不完整数据中快速而准确地重建复杂模型

2. 实践

点击Filters——Remeshing, Simplification and Reconstruction——Surface Reconstruction: Screened Poisson

Apply后可能报错

原因是本点云没有给梯度信息,我们需要先重建梯度信息

重建梯度信息

Filters——Normals, Curvatures and Orientation——Compute normals for point sets

Apply后

泊松重建