Automated 3D volumetric reconstruction of multiple-room building interiors for as-built BIM 论文阅读笔记

本文主要是介绍Automated 3D volumetric reconstruction of multiple-room building interiors for as-built BIM 论文阅读笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(学生党自写,可能存在错误,欢迎指正,侵删)

ABSTRACT

目前点云的全自动化建模面临的几个挑战:(1)包含多个房间的复杂室内环境(2)噪声滤波(3)门窗等体积大,细节丰富的物体表现困难

步骤:输入配准的三维点云数据并按房间进行分割;通过天花板高度附近的空间判断扫描点是杂波还是建筑构件,并将滤波后的点投影到二值图上来跟踪地板-墙壁边界;通过进一步的分割和正则化来细化;通过内部和外部墙壁构件建模来估计墙体体积;最后墙壁点被分割投影到逆二值图,检测中空区域并建模成窗户和门。

效果:与人工生成模型比较,发现两个生成模型均方根误差分别为0.089和0.074m。

INTRODUCTION

BIM模型

建筑信息模型(BIM)是一种设施的数字表示,它记录了从建造到拆除的建筑生命周期的所有相关信息,包括三维设计图纸、进度、材料属性、成本和安全规范。

BIM分为两种,as-designed BIM指的是设计好但未实现的BIM,as-built BIM指的是已建好部分的BIM。后者通常由激光扫描现场后的数据处理生成,可用作建筑方面的指导。

激光扫描获得的是点云数据,从点云数据自动创建as-built BIM是一个节省成本的方式。典型as-built BIM主要涉及三个方面:构件的建模,构件的类别,材质等属性,以及构件之间的相互关系。其中几何建模的构建是承载其它信息的主要介质,也是本文的重点。

文章主要贡献

(1)提供了一种过滤原始点云中噪声等受污染数据的方法;

(2)提供了一种创建细节丰富的墙壁构件的方法;

(3)调整最终的生成模型并通过定量分析评估该模型。

METHODOLOGY

输入数据的前提条件

(1)天花板和地板是平面,且相互平行,与垂直墙壁相交。

(2)不同房间由狭窄通道和共用墙壁连接

(3)所有结构均是直线形式,可以用平行或正交的直线建模。

(4)输入点云为配准后的点云,其“向上”的方向与Z轴平行。

大体步骤

(1)高度估计:计算沿z轴的点数直方图,找到代表天花板和地板的两个高密度点组。

(2)投影点云到XY平面的一个二值图(binary map)

(3)房间分割

(4)通过天花板偏移空间(offset space)来过滤噪声

(5)边界提取,并基于墙与墙之间的正交或平行这一特征做最小二乘调整。

(6)采用内外壁墙壁建模方式对墙体进行建模。内墙负责分割房间,外墙负责分割内部和外部环境。

(7)按墙线分割出点云,投影到逆二值图(inverse binary map),通过追踪中空区域并做规范化的方式进行门窗建模。

(8)输出3D模型

输出

由地板、天花板、体积墙、窗户和门的一组几何组件组成的3D模型。生成几何模型是LOD3级别的。

步骤图:

高度估计

视天花板和地板是平行结构且和垂直墙壁相交。在Z轴上区分点组,并分组统计该层次上点的数目构成直方图。分离两个最大的点组,计算各自的平均z值分别代表天花板和地板的高度。

房间分割

目的:分离出每个房间单独的点云,为后续工作做准备

思路:房间被定义为一个由垂直墙壁包围的区域,通过开放的门彼此相连。如果将开口关闭,就可以单独分离出一个房间。

具体步骤

(1)只保留天花板附近空间(这个空间范围由用户自定义,最好不包含窗户)的和地板上的点,这一步可以有效减少窗外环境导致的噪声。

(2)点云二维栅格化:将点云投影到XY平面的一个二值网格图上,其中1代表该区域有扫描点,而0代表没有。投影结果如下图b(a是未除噪前的点云投影)

(3)通过圆形检测窗口(circular-shaped detection window)的方式对房间进行分割:设置一个半径大于所有门口和通道宽度的半径r,以所有有点(为1)的网格为中心,检测其半径r内的全部栅格。若其中有一个栅格没有点(为0),则将该区域划入unsegmented area中;否则,划入initial segment中。下图是划分的具体过程图示,最终结果如上张图c(黑色部分是unsegmented area,白色部分是initial segment)

 (4)下面的操作是基于每一个被划分出的白色联通区域的(即每个房间):构建墙壁部分:使用新的检测窗口(半径推荐为之前圆形窗口的两倍),以每个白色区域的网格为中心,检测窗口内没有点(为0)的网格并记录,最终构成了下图中绿色的部分。

(5)对每块绿色部分使用骨架化算法(细化算法,一种图像处理算法,能够提取出二值图中某一块区域的大体结构,常被用于文字识别的预处理中,详细可见文章圖像細化(骨架化)算法 分析_Iam_Rocky的博客-CSDN博客_骨架化算法),提取出很多段的墙壁结构。

(6)连接各段墙壁:以墙壁结构的端点为首尾和距离计算标准,每次用直线连接两个距离最近的墙壁结构。连接采用的算法是Bresenham算法(一种在二维图像上画直线的算法,图形学的基础算法之一,详细可见文章直线绘制算法-Bresenham算法_着风少年的博客-CSDN博客)。最终获得的是一个仅有一个开口的墙壁结构,如下图d。

(7)闭合开口:对于墙壁结构每个端点,删除一定半径(取最大门窗大小就行)内的结构(图e中的橙色区域),在剩余的结构中取一个最长的结构,然后在原结构中当它不存在。此时墙体结构又变为两段,重新执行上一步中的连接,在执行一次连接(重新变为一段墙体结构)后恢复之前被删除的那段最长的墙体结构,这样就形成了一个闭合的墙壁切割(如图f)

(8)对每个白色区域执行一遍上述的操作,就能获得每个区域的墙壁切割线。

壁面线提取

目的:这一阶段主要是用来提取地板和墙壁相交的边界。

经观察,发现墙壁结构在垂直方向上覆盖的范围能达到天花板,而大多数杂波(就是家具等的点云)是无法达到这个高度的。可以利用这一点来去除杂波。

具体步骤:

(1)采用上一步投影到XY平面的二维栅格图(栅格大小也一样),对于每一个栅格中的所有点做一个z轴分布直方图。若在天花板附近有分布,则这个栅格中的所有点都归为墙壁的一部分(此处的一个trick是垂直分布直方图只限定范围在天花板附近空间内,若直方图里有点则判断改栅格为墙壁,这也是原文的方法)。最终结果如图a,蓝色的是属于墙壁的点,而红色则是不属于墙壁的。

(2)投影到XY平面的结果如图b所示,白色的为房间区域,灰色的为外围区域,而蓝色的为墙壁边界。图b可以看出墙壁线是断开的,这就需要通过之前的开口闭合算法连接墙壁线使其形成一个闭合区域。

(3)最后,利用边界跟踪算法(似乎有很多种,如可以搜索到一个满足条件的外围边界点然后以它为起点寻找图像边界)将投影墙体的最外层网格单元检测为地板-墙壁边界。

壁面线细化/规范化

目的:前一步提取后结果如下图a,从壁线可以看出边界并不是由直线组成,而这样的边界是不规范的,因此需要对其细化/规范化。

具体步骤:

(1)用Douglas-Peucker算法(一种将点拟合成数条直线的方法,可参考文章https://blog.csdn.net/xhtchina/article/details/113829959)将边界分割成单独的墙壁表面线,重复这个过程,最终得到如图b所示的分割线。

(2)基于壁面线之间的关系只有正交和平行的假设,使用约束最小二乘法(关于最小二乘法的思想可参考文章如何理解最小二乘法?_马同学图解数学的博客-CSDN博客_最小二乘法)对结果进行正则化。通过Hessian线模型(表示形式是xcosα+ysinα = r,α是相对于原点的方向,r是相对于原点的距离)来表示最后的直线。

(3)根据墙壁的连接关系进行直角提取。但有时由于过分割的缘故,两条相交的线是相互平行的(如图b中下侧黄色和紫色的线)。因此在执行角提取前,需要对相连的两条线是平行还是正交做一次判断。如果是平行的则不进行角提取,并根据它们之间参数r的差值来决定是否合并(一般是差值小于网格单元大小时合并),若不合并则只保留较长的一条用于下次角提取。图c展现了整个流程后的结果。

伪代码如下:

墙壁建模

目的:用高度,长度和厚度三要素定义的长方体来表示墙体。其中高度都是统一的,因此只需定义墙体的位置,长度和厚度。墙壁分为内墙(房间内的墙)和外墙(隔离房子和外部环境的墙)两种,两种要分别建模。

内墙建模

内墙建模是要先于外墙的。因为外墙线实际上就是不满足内墙线条件后剩下的墙线。

(1)选择某个房间的一条墙线a,确定该墙面的数个垂足;寻找其它房间与该线平行的墙线b,若有a的垂足能落在这个墙线b上,则判断b在a的面向范围内。加入集合B。如下图a,蓝色为选中墙线,红色则是其正对应的墙面。

(2)对B中所有候选墙线做一个筛选,保证其之间的区域不会和另一个房间重叠(如下图d中黄色区域)若筛选后集合B中没有元素了,则判断选中墙线为外墙线。

(3)若是内墙线,则继续处理:找到与其相连的两条正交墙线确定墙壁长度(如下图b中紫色部分),通过对应平行墙线确定墙壁厚度,最终形成如下图c中黄色区域的墙壁。

外墙建模

由于点云数据只反映了室内数据,因此需要用户自己定义外墙壁厚度。

(1)根据墙壁长度和厚度生成六个候选分量(如图a),两个长的代表墙壁,四个小正方形代表墙角

(2)判断并去除和房间重叠的分量,结果如图b。

 门窗建模

目的:提取细节丰富的门窗开口。主要分为三个阶段:壁点分割,开口提取和细化。

壁点分割:根据壁面线对壁点进行分割。若某点满足如下两个条件:(1)该点垂线(可能用的是法向量)落在壁面线上(2)与壁面线的正交距离小于一个阈值,则该点分配给该壁面线。图a是分割后所属某个壁面线的所有点,可以看出其中有中空区域,这些中空区域来自窗户和门。

开口提取:将分割后的壁点投影到逆二值图上,追踪空心区域的边界,并根据周长平方与面积之比的性质判断是否为矩形。(此处的两篇参考文章分别为Productive modeling for development of as-built BIM of existing indoor structures和Road sign detection using image processing & re-cognition,前者的大概原理猜测是通过在逆二值图上执行外边界追踪算法来求空心区域的边界,后者的目的是为了去除一些噪声空心边界,但我想不到是怎么做的,若有需要可以看看原论文)将判断为矩形的部分判定为内部开口。

细化:对内开口边界再次执行Douglas-Peucker算法,分割出直线段边界如图b;将分割边界再次分为上下左右四个部分,对于每个部分根据其中各直线段之间的距离和连接关系进行合并,最终每个区域提取出一条直线段如图c。根据直线段间正交和平行关系对其进行限制性最小二乘调整,最终结果如图d。

将细化后的窗口投影到对应的墙壁建模上。注意内墙中一个真实窗口往往对应着其上两个平行墙线各自检测出的一个窗口,需要判断对应关系,并调整小的开口使其对应大的开口。

RESULT AND DISCUSSION

研究地点和数据采集

 数据采集地点包括一所学校和一个公寓。学校由一条长廊和两边的教书构成,公寓相对较小,但内部结构更复杂。示意图如下:

采用FARO的配准软件进行配准,用Matlab作为实现方式。

(省略中间调参部分,我写了但这部分感觉对于理论学习没啥实际作用就不发了)

结果

以人工建立的两个场所的模型为groundtruth,与机器自动生成的模型作比较求偏差来展示算法效果。将生成的模型采用CAD格式重建,导入到AutoCAD并采样不同特征位置(如角落等)在两个模型中的坐标。测量方式采用了欧氏平均距离误差(EADE)、均方根误差(RMSE)和球面精度标准(SAS)三种不同的方法。结果如下表:

EADE公式如下,n为测点总数,ai为本方法自动建模的特征点位置,bi为人工模型的对应点,R和T为三维Helmert变化的旋转和平移参数,本测量方法中假设两个模型是1:1的,因此没有放大缩小参数。旋转和平移参数是通过训练获得的:

RMSE是一种常用的测量方法,表示估计值与观测值之间的差异,而SAS表示球半径在90%置信水平下的位置精度。公式如下,其中ait表示转换到人工模型坐标系的点。

 存在的问题

1.倾斜的墙壁和楼梯无法通过本方法重建(下图a,b),一些扫描时被其它物体阻塞的开口也无法提取(下图c,d)。

2.扫描途中透明玻璃门的折射效果可能会导致在另一个相连房间形成类似墙壁的噪声点云,导致房间分割的错误(下图a,b);而玻璃门帘等的折射效果也可能导致房间两侧门窗建模时有一边不能提取出门窗,这时需要将另一边的开口复制到该侧(下图c,d)。

 CONCLUSION

本文的亮点:

1.房间分割和噪声滤波部分是采用了较少约束的输入。

2.本文提出的墙体构件模型尤其适用于具有不同厚度和开口的墙体建模(此处的“不同厚度”指的是下图中红色圈圈出部分这样的,简单来说就是同一段墙分出了厚度)。

 

3.建模过程的全自动化。

存在的缺陷:

1.需要高密度均匀点云

2.仍会受某些空间噪声影响

3.无法建模不规则房间

4.个人认为输入参数仍然很多(如网格的大小,Douglas参数等),而且其中某些参数是需要一定计算机专业知识去理解且需要实际使用者不断调整的。这是自动化的阻碍。

这篇关于Automated 3D volumetric reconstruction of multiple-room building interiors for as-built BIM 论文阅读笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299415

相关文章

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX