mesh网格生成算法
- 1. 简介
- 2. Points clouds Vs Meshes
- 3. 为什么要生成mesh网格以及生成mesh网格的难点
- 4. 常见的mesh网格生成算法
1. 简介
基于 3D视觉的新兴应用场景蓬勃发展,3D点云越来越受到人们的广泛关注。点云有着广泛的应用领域包括机器人技术、3D图形、自动驾驶、虚拟现实(AR/VR/MR)等。为了跟上不断增长的应用需要,研究和开发有效存储、处理的相关算法来处理点云的意义正显著上升。
3D点云数据的表述形式一般分为以下四种:
-
点云(Point cloud):由N个D维的点组成,当这个D=3的时候一般代表着(x,y,z)的坐标,当然也可以包括一些法向量、强度等别的特征。与网格、体素等数据形式类似,点云也常用作描述三维模型,其表现非常直观,且具有无序性和不规则性。点云定义为目标表面特性的海量点集合,可简单理解为众多特征点的集合,是在获取物体表面每个采样点的空间坐标后得到的。
-
网格(Mesh):由三角面片和正方形面片组成。
-
体素(Voxel):由三维栅格将物体用0和1表征。
-
多角度(Multi-view)的RGB图像或者RGB-D图像
下图分别展示以上四种表述形式
3D视觉的建模领域中有多种技术和方法用于创建对象、环境或结构的数字表示。两种常见的方法是使用点云 3D 模型(point cloud 3d models)和 3D 网格模型(3d mesh models)。
以上,我们仅介绍两种常见的方法:使用点云 3D 模型(point cloud 3d models)和 3D 网格模型(3d mesh models)。本文中先介绍下点云 3D 模型和 3D 网格模型之间的区别和应用,再对mesh生成算法进行一个大概的描述。
2. Points clouds Vs Meshes
点云 3D 模型是通过收集大量单独数据点创建的对象或场景的表示。这些数据点通常称为“点”,源自 LiDAR(光检测和测距)或结构光扫描仪等 3D 扫描设备。
点云 3D 模型的主要目的是捕获 3D 空间中点的精确空间位置。这些点可以表示对象或环境的表面、边缘或其他特征。
点云3D模型的特点:
-
高精度:点云模型最显着的优势之一是高精度。它们可以准确地表示扫描对象,非常适合测量、建筑和工业设计等应用。
-
详细的几何形状:点云模型捕获物体的精细细节,低至毫米级。这使得它们对于需要精确测量和分析的任务很有价值。
-
缺乏连通性:点云模型由各个点组成,它们不具有固有的连通性或表面结构。
-
数据量大:由于数据点数量庞大,点云模型的数据量可能相当大,这可能需要专门的软件和硬件来处理。
点云 3D 模型一般应用:
-
测绘:点云模型对于测绘应用来说非常宝贵,其中准确的测量和空间数据至关重要。
-
考古学和文化遗产:它们用于高精度地记录考古遗址和历史文物。
-
逆向工程:工程师使用点云模型对复杂对象进行逆向工程,提取精确的几何数据。
与点云模型相比,3D 网格模型 是通过连接这些单独的点以形成连续的表面来构建的。此过程通常称为“网格划分”。
3D 网格模型的特点:
-
表面表示:3D 网格模型使用顶点、边和面表示对象的表面,同时我们可以在表面上贴精细的纹理。这使得它们适合渲染和可视化,。
-
拓扑:网格模型具有明确定义的拓扑,这意味着它们具有清晰的结构,杂乱的错误点减少。这对于动画和游戏等应用程序至关重要。
-
减少数据大小:与点云模型相比,网格模型在数据大小方面通常更紧凑。这使得它们更容易处理和存储,且减少了渲染压力。
-
精度较低:虽然网格模型提供了对象的良好视觉表示,但在捕获精细细节方面它们可能不如点云模型精确。
应用上比如:
-
游戏和动画:网格模型广泛应用于游戏行业和 3D 动画,因为它们能够提供视觉吸引力和交互式表示。
-
产品设计:CAD 软件通常使用网格模型来设计产品和创建原型。
-
3D 打印:网格模型非常适合 3D 打印,因为它们可以轻松转换为物理对象。
3. 为什么要生成mesh网格以及生成mesh网格的难点
在三维重建中,通过深度传感器比如RGBD相机、雷达的方式,或者通过多张2D图片MVG的方式,都可以采集到大量稠密的点云数据。对于一个很复杂的目标物体,我们的精度要求不高,生成的点云可能就有几百万以至几千万个点,对于数据传输以及显示有比较大的困难,而且显示效果也比较差。
网格生成过程中有很多的难点,这些难点也是衡量网格生成算法的标准:
- 精度上:
A. 生成网格与原始点云的位置的差异性;
B. 对点云噪声的亢余度、点云分布不同密度的适应效果以及应对点云缺失的效果;
C. 对尖锐特征的保留效果,以及细节的保留效果
D. 网格三角面大小以及形状 - 硬件上:能够支持模型网格面积的大小
- 时间性能:网格生成速度
4. 常见的mesh网格生成算法
总的先说,目前网格生成算法可以分为两大类:连续曲面生成算法 和 非连续曲面生成算法(离散方法)
连续方法:利用点云去拟合某类分布函数,得到表面的函数表示,然后生成网格。
比如:TSDF、Wavelet(多用于医学图像)、Poisson、FSSR、SSD、GDMR、多级流式表面重建、marching cubes(严格说这并不是一个面生成算法,而是一个等值面提取算法)等
离散方法利用某些空间划分方法,直接从点云数据生成网格。
比如:PowerCrust、Greedy Projection、滚球法、alpha-shapes