Scan2BIM(1):文献阅读笔记(1):《将3D点云数据自动转换为建筑信息模型的研究》、《自动构建模型的研究现状》
《将3D点云数据自动转换为建筑信息模型的研究》阅读笔记
本文提出了一种算法框架将点云数据处理为AB-BIM。该算法的输入应该是彩色的点云数据(从Leica BLK 360获取)或没有颜色信息的点云数据(从Zebrevo获取)。【已有算法的使用,先走通再说】
软件:Autodesk Recap处理获取的点云、Autodesk Revit 2018用于建模,算法用C++、
Point Cloud Library (PCL): PCL(PointCloudLibrary)其实就是一个开源的c++代码库,它实现了大量点云相关的通用算法和高效的数据管理结构,不仅涉及****领域,其还在模式识别,机器人视觉,计算机图形学,虚拟现实等众多领域大显神威。基于以下第三方库:Boost,Eigen,FlANN,VTK,OpenNI,QHull,实现了点云获取,滤波,分割,精简,配准,特征提取......
计算几何算法库(CGAL):计算几何算法库(CGAL)是另一个开源C ++库,可用于处理几何数据。与PCL不同,CGAL可用于更一般的计算几何问题。本文使用CGAL实现凸包[ 6]和alpha形状算法。
前处理:在Autodesk Recap或Cloud Compare中对输入点云数据进行预处理,以消除明显的离群值并将点云数据的主平面与笛卡尔坐标的主轴对齐系统。处理后的点云数据导出到.ply格式,以便将点云数据输入到算法中。【去除噪点】
假设:平面、矩形、墙与xy轴对齐
下采样:在Cloud Compare中进行下采样:对点云数据进行下采样,以使点之间的最小距离为1mm
分割算法:将点云划分为不同的段,每个段代表一个可能的点组,将在Revit中表示为墙、洞、天花板、楼板。区域生长算法:将点云数据分段为相交的准平面分段。先选择一个随机种子S i。从数据集中,选择距离阈值内满足曲率和角度阈值的所有点。将这些点添加到区域R i。从数据集中排除这些点。运行步骤2-4,直到没有新点添加到R i。从数据集中选择一个新的随机种子S i +1。运行步骤2-5。
平面拟合:应用平面假设,将段中的所有点都投影到最适合的平面上。使用RANSAC算法可以找到最适合的平面。具体:选择具有最小基数的随机数据切片以估计模型参数。查找模型参数。查找满足假定的距离公差阈值d th的所有数据。这些数据被声明为inliers。如果在线数与所有可用数据条目的数之比超过公差阈值,则从所有现有的在线数重新计算模型参数,并且算法终止。否则,请转到步骤1并继续。从此算法可获得的平面是具有无限面积的三维平面。
边界提取:选择凸包算法。查找具有最小和最大坐标的边界点(因为模型已经摆正)。制定一条通过上述边界点的线。对于线的每一侧,选择距线最远的点。现在点和线形成三角形。删除三角形内的所有点,然后重复步骤3-4。停下来,直到剩下的所有点都在边界上。简明的说,在平面中给出N个点,找出一个由其中某些点作为顶点组成的凸多边形,恰好能围住所有的N个点。Alpha形状算法也可以进行边界提取。
平面过滤:为了将平面识别为结构元素的一部分,必须具有最小面积A min,将不符合此标准的平面过滤掉。【将碎片平面删掉】
平面分类:具有垂直法线并且在潜在的地板/天花板标高附近具有质心的平面被分类为地板/天花板候选。具有近似水平法线并且在潜在的地板高度和天花板高度之间具有质心的平面被分类为墙候选。
墙内线轮廓提取:单独的算法用于提取墙内线轮廓。由于所有墙壁元素都必须彼此连接,因此墙壁的轮廓形成了一个闭合环。根据角度标准和距离将alpha形状分为多个子段。当该点与上一个点之间的角度大于角度阈值θwall或该点与上一个点之间的距离大于距离阈值dist wall时,(则认为是新的墙面)所以将创建一个新截面。然后根据x min,x max,y min和y max计算每个段的范围,最接近该线段的线由该范围限定。在范围之间不相交的地方(例如轮廓右侧的小凹痕),与凹痕方向用平行线(补充墙体拐角)连接这些线。最终轮廓结果如图3.9(b)所示。
开口检测:生成候选墙壁的Alpha形状后,通过尝试确定边界内是否存在一个矩形区域来确定开口的可能位置,该矩形区域的周长大于预定区域(识别窗户)。
提取参数:为了应用矩形形状假设,从边界中选择了四个节点。通过计算点之间的角度变化找到节点,并选择角度变化90度的节点作为边界节点(墙的长度参数)。
Revit中集成:在上一步中获得的节点坐标将导入到Autodesk Revit中,并使用Python脚本和Dynamo图形编程界面从坐标中生成BIM模型。由于扫描仅在室内进行,因此生成的墙轮廓(例如,图 3.9(b))将不是墙元素中心线的轮廓,而是墙元素内侧的轮廓。注:Dynamo,中文翻译为发电机,每个项目文件为一个电池组,由各种电池模块依照一定的排列连接起来的。Dynamo也是一种编程工具。
参数优化:为了校准算法,从手动BIM模型中对无噪声的伪点云(图3.11)进行了反采样,并作为自动算法的输入。然后将根据算法生成的BIM模型与手动BIM模型进行比较。并计算关键边界节点之间的点对点距离(公式 2.1),作为算法的损失函数。这样,校准的目标便是找到可以使损失函数最小化的一组参数。选择5组参数并将其代入算法,求得损失函数最小的一组。
其他:
《自动构建模型的研究现状》笔记,理解AS-built BIM
BIM模型分类:事后建模as-built BIM (AB BIM) 、事前建模as-designed BIM (AD BIM) 。历史上AD BIM先出来,因为没有很好的采集数据的工具,比如点云扫描机器来支撑AB BIM。
问题陈述: 给定原始点云作为输入,竣工建模过程的目标是生成设施的语义丰富的3D模型,该模型由以几何形状,关系和属性为特征的对象组成。理想情况下,结果将是AB BIM文件,并使用标准语言(例如,对于建筑物为IFC)进行编码。【还是得用IFC】
问题进一步分析:竣工建模过程受到几个客观因素的限制,因此,即使最好的竣工建模方法也无法期望输出与AD BIM一样丰富的AB BIM。比如:AD BIM包含与设计者的高级知识有关的语义信息、无法捕获不可见且部分被遮挡的建筑元素。因此考虑到这些限制,我们将竣工建模过程的期望输出定义为有效的BIM模型,该模型表示完整BIM的简化版本。