基于扫描网格的3D建模

本文介绍了一种使用扫描网格数据生成精确的平面图和建筑内部 3D 模型的新方法。与以前从激光测距仪的高分辨率点云开始的方法不同,我们的方法从三角形网格数据开始,例如来自 Microsoft HoloLens。它生成两种类型的平面图,一种是保留细节的“笔墨”风格,另一种是减少混乱的绘图风格。它通过将 3D 模型与坐标轴对齐、注释重要对象、将其划分为楼层以及移除天花板来处理 3D 模型以供应用程序使用。它的性能在商业和住宅建筑上进行了评估,并通过实验来评估质量和尺寸精度。我们的方法展示了自动数字化和定向扫描网格数据的巨大潜力,使平面图和 3D 模型能够在导航、室内设计、家具摆放、设施管理、建筑施工和暖通空调设计等各种应用中生成。

1、简介

平面图可用于多种应用,包括建筑内部导航、改造、家具的有效摆放、管道的摆放、供暖、通风和空调 (HVAC) 设计以及制定紧急疏散计划。根据应用,不同类型的平面图是合适的。对于改造建筑内部或设计 HVAC 系统,用户可能更喜欢绘图式平面图,该平面图侧重于平面墙壁并移除家具和其他杂物。对于家具摆放、导航或疏散计划,用户可能更喜欢更详细的平面图,该平面图显示家具、橱柜、台面等的位置。无论哪种情况,制作平面图都很耗时,需要专业技能,例如测量距离和角度或将数据输入 CAD 程序。此外,可能需要多次制作平面图,因为当墙壁和家具被移动、添加或移除时,建筑物会发生变化。因此,能够在很少或没有培训的情况下自动生成平面图是很有价值的。

要生成平面图,从可以自动收集的准确数据开始会很有帮助。激光测距仪、智能手机、平板电脑和增强现实 (AR) 耳机等设备使以 RGBD 图像、点云和三角网格形式收集高分辨率建筑数据变得更加容易。在本文中,我们描述了一种通过利用不完整和不完美的三角网格数据来生成绘图风格和钢笔和墨水风格平面图的方法。这种方法可以高效准确地生成这两种类型的平面图,支持广泛的应用。

我们描述了一种使用 Microsoft HoloLens 2 中捕获不佳的三角网格数据生成准确平面图的新方法。主要贡献是:

  • 一种改进的基于密度的噪声应用空间聚类 (DBSCAN) 算法,使用块来捕获墙壁高度和厚度。
  • 一种基于方向的聚类方法,可找到任意角度的墙壁。
  • 使用 k 均值聚类将网格旋转到主轴并识别地板和天花板。
  • 从不完整的网格数据生成两种精确的平面图。

2、相关工作

平面图对于许多应用至关重要。平面图创建的软件方法取决于数据可用性和数据格式。我们的工作建立在先前的数据收集和平面图计算研究的基础上。

数据收集。室内环境可以以多种格式捕获,包括 RGBD 图像、点云和三角网格。Zhang 等人 [29] 使用全景 RGBD 图像作为输入,并使用结构语法重建几何图形,而 [21] 使用 3D 扫描提取平面图元并使用启发式方法生成模型。一些深度学习方法 [8,11,13,14,30] 使用单个图像来生成单个房间的长方体布局。完整房屋的详细半约束平面图计算需要处理房屋的 3D 扫描 [15];完整扫描提高了准确性,但增加了计算要求和时间。 Pintore 和 Gobbetti [23] 提出了一种使用 Android 设备摄像头创建平面图和 3D 模型的技术,利用传感器数据和统计技术。Chen 等人 [7] 介绍了一种利用 Microsoft Hololens 进行室内布局评估的增强现实系统,解决了直观评估和效率挑战。在我们的方法中,我们从 HoloLens 2 的三角形网格开始,使用其空间映射软件 [18],该软件已由 Weinmann 等人 [27] 进行了调查。

平面图计算早期方法 [1,3,22,28] 依靠图像处理技术(例如直方图和平面拟合)从 3D 数据创建平面图。虽然 [22] 通过检测 3D 点云中的垂直平面来创建平面图,但 [3] 使用平面结构提取来创建平面图。这些技术依赖于启发式方法,并且容易因数据中的噪声而失败。

使用图形模型进行平面图计算已经取得了很大进展 [4,9,12]。此类模型 [10] 还用于从众包图像和位置数据中恢复布局和楼层平面图。一个交互式工具 [16] 通过符合设计约束来创建理想的楼层平面图。

Pintore 等人 [24] 描述了几个可用的输入源(包括我们使用的三角形网格)和输出模型,并讨论了重建流程的主要元素。它还确定了几个用于生成楼层平面图的系统,包括 FloorNet [15] 和 Floor-SP [6]。

Monszpart 等人 [19] 引入了一种算法,该算法利用远处墙壁通常是平行的观察结果,使用 k 均值识别主要墙壁方向。我们的方法也利用了 k 均值,但这样做是为了识别所有方向的墙壁,而不仅仅是主要方向的墙壁。

Cai 等人 [5] 使用几何先验,包括点密度、室内区域识别和法线信息,从原始点云重建楼层平面图。

与 Arikan 等人相比, [2] 采用贪婪算法在用户交互的帮助下找到平面法线方向并将平面拟合到点,而我们的方法是自动的。它也不同于 [20] 的工作,后者专注于消除杂乱并将内部划分为 3D 单元复合体;我们的方法专门将建筑物划分为单独的墙壁。

我们的工作与 [22] 和 [26] 相关。在 [22] 中,平面图生成从激光范围数据点云开始,然后使用高度直方图检测地板和天花板。其余点投影到地面上,在那里应用密度直方图和霍夫变换来生成形成平面图的线段。在投影到 2D 时,他们的方法可能会丢失可能对创建 3D 模型或详细平面图有用的信息。同样,[26] 采用基于直方图的方法来检测天花板和地板。他们的方法包括识别较高的墙段以创建 2D 直方图,然后采用基于直方图点密度的启发式方法来计算平面图。我们的方法与 [22] 和 [26] 不同,它将网格与全局坐标轴对齐,而不依赖于激光数据或点云。它主要处理整个管道中的 3D 数据,从增强的信息中受益,并生成 3D 模型和平面图。

3、方法论

我们通过四个主要步骤计算楼层平面图(参见算法 1)。首先,用户使用增强现实耳机将建筑物内部捕获为三角形网格。网格的方向与主轴对齐,并将建筑物分为多个楼层。移除地板和天花板,并根据需要检测平坦的墙壁。最后,通过切片和投影生成的 3D 模型生成两种楼层平面图样式之一。接下来我们将详细描述这些步骤。

数据收集可以使用不同的设备以各种格式捕获室内环境。我们使用 Microsoft HoloLens 2 耳机捕获三角形网格数据,并使用语音命令注释网格。

捕获三角形网格 HoloLens 提供硬件和软件,使用三角形创建室内环境的 3D 表示,如图 1 左所示。耳机将三角形叠加在用户对建筑物内部的视图上。虽然耳机捕捉到了大部分墙壁、地板和天花板,但某些区域的数据可能缺失,如图所示。

图 1. 左图:HoloLens 正在计算三角形网格。右图:黄色块标记传感器位置。粗黄线(称为探针)显示传感器或其他注释的建议位置和方向

注释网格为了捕获传感器、恒温器、窗户和门等物体的位置,我们开发了一个增强现实 (AR) 用户界面。该界面使用视线检测和语音命令,使用户能够将合成物体放置在所需位置,如图 1 右图所示,其中合成传感器物体被添加到沉浸式环境中,叠加在物理传感器上。

3.1 网格方向

捕获带注释的三角形网格后,执行几何处理。最初,网格的方向基于用户的起始位置和注视方向。要生成楼层平面图,我们必须确定楼层的位置和朝向。AR 头戴设备可以粗略估计重力方向,但额外的计算可以提高精度。

确定楼层方向 为了确定网格方向,我们测试了两种方法:(1) 计算网格边界框的最短边,(2) 使用球面 k 均值对网格三角形的朝向进行聚类。方法 (1) 适用于高度恒定且楼层面积较大的建筑物,但不适用于其他建筑物,因此我们主要使用算法 2 中描述的方法 (2)。

算法 2 适用于广泛的网格,包括具有垂直优势的多层建筑。它使用网格 M 中每个三角形 ∆ 的表面法向量,​​并过滤掉明显偏离正 y 方向的三角形,保留可能代表楼层 (∆ ′) 的三角形。

我们使用球面坐标 k 均值算法(k = 1)来查找这些三角形的主导方向 gm。我们丢弃与主导方向相差大于角度φ的三角形,并重复k均值算法,直到达到φmin(例如,从φ= 30度开始,到φmin = 3结束)。这给出了真实重力方向gt的估计值。

为了定位网格,我们计算gt和负y轴之间的角度θ,并通过取它们的叉积来确定旋转轴Y。我们围绕Y轴将网格旋转θ,确保地板水平。有关此地板定位方法的更多详细信息,请参阅算法2。

图2显示了一个模型,其中地板不是水平的,而是从近到远、从右到左向下倾斜。经过算法2后,地板是水平的。

查找地板的高度在将网格定位为具有水平地板后,我们找到地板在y方向上的高度:我们取每个网格三角形的质心,其朝向在正y轴的一个小角度内。我们创建了这些质心的 y 坐标的直方图,每个桶代表一个垂直范围,例如 2 英寸。我们考虑相邻的桶对,并寻找具有最高点数的桶对,例如 (0, 1)、(1, 2) 等。对于单层建筑,我们搜索两个大桶对,分别代表地板(靠近底部)和天花板(靠近顶部)。

图 2. 地板最初不平整的模型

如果建筑物的地板下沉或天花板升高,则直方图将显示相似但不完全相同的高度的峰值。为了确保我们找到真正的天花板和地板,我们会在低直方图峰值和高直方图峰值之间寻找几英尺的间隙(例如房间的预期地板到天花板的高度)。这个间隙以下的峰值可能是地板,上面的可能是天花板。

为了生成楼层平面图,我们分别选择最高的楼层和最低的天花板作为计算的楼层和天花板。将存储桶配对而不是单独使用可以确保我们不会忽略直方图中的峰值(如果网格三角形均匀分布在两个相邻的存储桶中)。

旋转网格和相关注释 我们的下一个目标是将网格模型的主要墙壁方向与欧几里得坐标的轴对齐。

一个可选步骤是消除表面法线与正或负 y 方向成小角度的网格三角形,因为这些三角形可能是天花板或地板三角形。此步骤不是强制性的,但可以减少要处理的三角形数量。此外,我们消除了所有低于计算的地板高度和高于计算的天花板高度的三角形。

然后,我们检查剩余三角形的表面法线。我们用球面坐标表示每个法线,并使用球面 k 均值聚类来识别主要的墙壁方向。假设建筑物的墙壁主要为垂直的,则墙壁将有四个主要方向,因此我们可以将 k 均值聚类设置为 k = 4。如果模型仍然有地板和天花板三角形,我们可以将 k = 6 设置为两个额外的主要方向。图 3 左图显示了办公楼网格在球坐标系中的表面法线方向热图。

图 3. 左图:球坐标系中三角形朝向方向的热图。横轴是围绕 y 轴的角度 θ。纵轴是从南极到北极的角度 ϕ。颜色越暖,表示每个方向桶中的三角形越多。右图:六个聚类中心分别显示天花板(顶部红点)、地板(底部红点)和四个主要墙壁方向(中等高度从左到右的点)的方向。

图 3 左侧包含许多远离任何聚类中心的浅蓝色矩形(例如,远离红色、橙色和白色的桶)。这些表示面向方向与任何主要墙壁、地板或天花板都不对齐的三角形。存在此类三角形的原因有两个:(1) 建筑物内部包含许多不是墙壁、地板或天花板的物体,例如家具、文件、办公设备、艺术品等。这些物体可以以任何角度放置。(2) AR 耳机生成跨多个表面(例如,接触多个墙壁)的三角形,因此指向中间方向。为了进行补偿,我们使用了球面坐标 k 均值聚类的改进版本,该版本忽略了异常三角形方向,如下所示:

以通常的方式计算球面 k 均值后,我们在每个聚类中查找所有朝向方向与聚类中心距离大于阈值 θ1 的三角形。我们丢弃所有这样的三角形。然后我们再次运行 k 均值,计算更新后的聚类中心。然后我们丢弃距离每个聚类中心大于 θ2 的所有三角形,其中 θ2 < θ1。我们重复此过程几次,直到达到所需的精度。例如,在我们当前的实现中,我们使用这个角度 θi 序列(以度为单位):[50, 40, 30, 20, 10, 5, 3]。一旦我们的改进 k 均值算法完成,我们就有 4 个(或 6 个)聚类中心。图 3 右侧显示了 k = 6 的示例结果。

图 4. 最初未对齐的建筑物 B1(左)的网格模型以及对齐墙壁后的网格模型(右)

计算出主要墙壁方向后,我们选择三角形数量最多的簇,取其方向(簇中心),将该方向投影到 x-z 平面上,并将其称为 θwall。我们将网格旋转 θwall 和 x 轴之间的角度。现在,主要墙壁将指向 x 轴。图 4 左侧显示了未与轴对齐的建筑物。图 4 右侧显示了墙壁旋转后的同一建筑物。添加 x 轴(红色)和 z 轴(蓝色),我们看到墙壁现在与轴对齐。

将网格划分为不同的级别 HoloLens 可以数字化多层建筑。给定一个多层模型,我们可以计算每个楼层的楼层平面图。该过程类似于 3.1 中用于确定楼层高度的过程。首先,我们的系统计算

一个直方图,如图 5 所示,并将建筑物划分为多个层次,如图 5 中间和右侧所示。

图 5。左:使用几乎垂直向上或垂直向下的三角形,绘制质心高度的直方图,按三角形表面积加权。直方图峰值可能是地板和天花板的高度。中间:一栋两层楼的建筑。右:该建筑的两层。

3.2 平面图计算

我们的平面图计算取决于所需的平面图类型以及网格是否相对于全局轴定向。如果我们想要一个钢笔画风格的平面图,并且网格是有方向的,我们可以简单地将网格 M 传递给 ComputeAndSuperimposeSlices() 函数,如算法 3.2 的第 14 行所示。

图 6。左:3D 模型。中间:通过 k=6 的球面 k 均值获得的平面图。右:来自支持更多墙面方向的改进 DBSCAN 的平面图

但是,如果网格方向不正确,我们会在计算平面图之前将其与全局轴对齐。如果需要绘图风格的平面图,我们利用算法 3.2 的第 2-13 行来计算平面墙。

计算平面墙 为了生成绘图式平面图,我们计算平面墙,并使用以下步骤将其与其他建筑内容分开:

DBSCAN 对于每个墙方向,我们执行修改后的 DBSCAN 算法:我们计算每个三角形 ∆i 的质心 C。对于 DBSCAN 期间的每个质心点 Ci,我们计算足够近以被视为邻居的其他质心点的数量。但是,我们不是像传统的 3D DBSCAN 那样在每个点周围的球体中寻找邻居,而是在以该点为中心的长度为 l、宽度为 w 和高度为 h 的矩形块中寻找邻居。这个块的高度足以在 y 方向上从地板延伸到天花板,在与拟议墙平行的方向上比门稍窄(例如 1.5 英尺),在墙方向上有几英寸(以允许墙略微偏离完全平坦)。根据国家建筑规范,墙的最小高度设定为 8 英尺,厚度为 8 英寸。 DBSCAN 之后,网格三角形被分组为墙段 W S。

过滤 我们丢弃不适合的墙段,例如太小、离地板较远或离天花板较远的墙段。

平面拟合 对于每个墙段,我们找到一个与墙方向具有相同朝向且与该墙段中的三角形质心非常吻合的平面。考虑到这些点紧密地集中在这个方向上,只需让平面穿过任何质心,效果就会出奇地好。但是,也可以更仔细地选择一个点,例如在墙方向的中间位置找到一个点。

矩形构造 对于每个剩余的墙段,我们构造位于拟合平面中的矩形 R,其宽度与墙段三角形一样宽,高度与墙段三角形一样高。

网格替换 对于平面图构造,我们丢弃原始网格三角形,并用新的平面墙矩形替换它们,以用作整理后的网格。如果后续步骤使用的库需要三角形网格,我们将使用两个相邻的直角三角形代替每个矩形。

图 7. 在多个高度切片的建筑物网格

对于每个 i,0 ≤ i ≤ n。对于每个 yi,我们计算网格与平面 y = yi 的交点。我们最终得到一堆切片(见图 7)。

图 8. 左:建筑物部分的定向网格。中间:DBSCAN 的结果。每种颜色代表不同的墙段。右:计算出的平墙。

我们可以使用相同的方法来生成绘图式平面图。在这种情况下,我们从平墙模型开始,而不是完整的网格。此模型在多个高度进行切片时需要捕捉的细节较少,因此我们可以选择在单个中间高度进行切片。

绘制平面图对于任何一种平面图样式,我们都可以通过忽略所得线段的 y 坐标并将所得 (x, z) 坐标绘制为二维图像,将切片投影到平面

。我们还发现,用半透明的颜色绘制每个切片的线条既有信息量,又美观,这样出现在多个高度的特征看起来比只出现在一个高度的特征更暗。

例如,图 8 左图显示了从商业建筑收集的网格。图 8 中图显示了我们对该数据进行 DBSCAN 的结果。图 8 右图显示了网格替换后得到的平墙。图 9 右图显示了切片平墙得到的绘图式平面图。图 9 左图显示了通过在多个高度切片定向网格而制作的钢笔和墨水平面图。

图 9. 图 8 模型中的钢笔和墨水平面图(左)和绘图平面图(右)

绘制合成对象 因为我们的数据来自 AR 头戴式设备,所以我们可以添加合成对象来标记房间中物体的位置,例如传感器和窗户。我们可以在我们的 3D 模型和平面图中显示这些对象。对于上面描述的网格处理步骤,我们注意到应用于网格的几何变换,并将相同的变换应用于合成对象,然后这些合成对象会出现在 3D 视图和平面图中的正确位置。例如,图 8 左中的黑色对象表示用户放置的对象,以显示传感器和窗户的位置。同样,图 9 左的平面图中的红色对象也是相同的对象,投影到与网格切片相同的平面上

4、实验

我们评估了使用 AR 耳机捕获 3D 扫描的方法。我们将平面图尺寸与实际建筑尺寸进行了比较,并提供了中间结果:平面图和 3D 模型。我们还计算了算法步骤所需的时间。为了证明该方法的稳健性,我们使用多种建筑类型进行了评估,包括商业建筑 B1 和 B3 以及住宅建筑 B3。此外,我们在 Matterport2D 数据集 [25] 上验证了我们的平面图生​​成。

图 10。(a):建筑物测量。(b):建筑物的扫描 S1。(c):扫描 S2

扫描数据分析我们通过将房间的实际尺寸与计算出的平面图进行比较来评估平面图生成的精度。图 10(a)展示了使用我们的 AR 扫描两次的建筑物的测量结果。我们将这些扫描称为 S1 和 S2(见图 10(b) 和图 10(c))。对于每个扫描,都会计算平面图并使用几何建模软件 Rhino [17] 计算​​尺寸。然后,我们将计算出的尺寸与实际房间尺寸进行了比较,如表 1 所示。这些结果表明我们的方法适用于多种建筑类型。

图 11。第一张:B3 号建筑的 3D 模型。第二张:计算出的平墙。第三张:绘图式平面图。第四张:钢笔画式平面图

我们的方法甚至可以从相对不完整的网格数据中计算出平面图。使用更高质量的 HoloLens 扫描,生成的平面图更精确。图 11 显示了 S1 结果:两种类型的平面图和 3D 模型。

定位地板和墙壁 我们必须正确定位网格。球面 k 均值需要大量计算,因此我们对其进行了优化以获得良好的性能。在图 4 中,我们可以看到对齐前后的 B1 网格,这耗时 12.4 秒,其中 10.6 秒用于使用球面 k 均值对齐墙壁。

划分楼层 我们可以检测多层建筑,并通过额外的步骤将其划分为楼层。该算法将三角形投影到正 y 轴上,并创建一个显示水平峰值的直方图。通过分析直方图中的峰值,我们可以确定楼层数。图 5 和图 12 显示了 Matterport3D 数据集 [25] 中划分为楼层的 2 层住宅建筑和多层模型。

图 12. Matterport3D 的三层模型(左上)及其三角形高度直方图(右上)。下图显示了建筑物的层数

查找平面墙 为了生成绘图式平面图,我们消除了细节并识别平面墙。修改后的 DBSCAN 算法是最耗时的步骤。在图 13 的模型中,有 79,931 个顶点和 134,235 个面,准备数据和运行 DBSCAN 需要 27.4 秒,从生成的集群构建平面墙需要 3.79 秒。对于图 14 的住宅建筑,有 173,941 个顶点和 285,840 个面,准备和运行 DBSCAN 需要 76 秒,计算平面墙需要 23.36 秒。 Matterport3D 模型的结果如图 15 所示。

图 13。第一张:B2 号楼的 DBSCAN 聚类结果。第二张:平面贴合的平墙。第三张:绘图式平面图。第四张:钢笔画式平面图

生成平面图 我们生成平面图的最后一步是将网格切成不同的高度并叠加切片。图 13、14 和 15 显示了使用我们的方法生成的平面图。

我们进行了实验,以评估在渲染钢笔画平面图时更改图形设置的效果。每个设置都由不同的线段不透明度和切片数组合组成。我们发现,不透明度设置为 0.5 可以生成符合我们预期的平面图。我们还发现,包含 100 个切片的平面图在细节水平和减少杂乱之间实现了良好的平衡。最佳数量取决于用例。

图 14。第一:B2 的 DBSCAN 聚类结果。第二:平面贴合的平墙。第三:绘图式平面图。第四:(c)钢笔画式平面图
图 15。第一:Matterport3D 模型的 DBSCAN 聚类结果。第二:平面贴合的平墙。第三:绘图式平面图。第四:钢笔画平面图。

5、结论和未来工作

总之,我们利用增强现实 (AR) 耳机收集的三角形网格数据生成平面图的新方法产生了两种风格:详细的钢笔和墨水风格和简化的绘图风格。我们的算法将网格数据与主坐标轴对齐,以生成具有垂直和水平墙壁的整洁平面图,同时还允许移除天花板和地板并将多层建筑分成单独的楼层。我们的方法与 AR 集成,支持将合成对象添加到物理几何图形中并提供详细的 3D 模型和平面图。

潜在应用包括导航、室内设计、家具摆放、设施管理、建筑施工和 HVAC 设计。展望未来,我们计划支持倾斜天花板,自动检测墙壁和门,并与能量模拟器等其他工具集成。最后,我们计划在准确性和计算时间方面将我们的方法与现有的最先进方法进行比较。我们还计划探索基于块的 DBScan 对不完整扫描进行 3D 重建的适用性。我们的方法有可能彻底改变我们生成和可视化平面图的方式。


原文链接:Using Scanned Mesh Data for Auto-Digitized 3D Modeling: Abstract and Introduction

BimAnt翻译整理,转载请标明出处