← 返回新闻列表
BIM · Scan-to-BIM

点云还原成能改的墙:CRAB 把墙厚误差压到 2.8 厘米

深圳大学与圭尔夫大学的这篇 SIGGRAPH Asia 论文换了个做法——不让模型输出户型线和平面,直接输出带 IFC 参数的构件长方体。墙厚平均误差 2.80 厘米,门洞高度误差 2.86 厘米。

CRAB 从室内点云重建 BIM 构件长方体的示意
2026-10-25 栏目:技术前沿 · BIM 约 2400 字

改造项目里最费的环节不是扫描。一天的架站、扫站,能把一栋老楼扫得清清楚楚;难的是扫完之后,要把那堆点云变成一份能改、能出图、能进 IFC 的模型。现在的做法基本是人工重画:拉墙、切洞口、量厚度、对关系,一栋几万平方米的楼要几个月。10 月 21 日挂上 arXiv 的 CRAB 想动的就是这个瓶颈,而它改的不是扫描精度,是「用什么表示重建结果」。

一、Scan-to-BIM 卡在表示,不是精度

点云是表面测量:一堆带坐标的点,没有构件概念。BIM 是另一套东西:墙是一个有厚度、有高度、有材料、有承重属性的构件实例,门附着在某面墙上,洞口属于墙,柱和梁有结构关系。两者之间隔着的不是坐标变换,是「把面重新组织成体」这件事。

现有的自动重建方法大致走三条路。一条是规则管线:先分割,再拟合平面,再做拓扑优化,最后人工修。它的问题是每一步都要人调参数,换一类建筑就得重来。一条是学习类方法,多数输出二维户型线或者三维平面——房间分得对,但墙有多厚、门窗洞口有多高、这个构件是什么身份,都没有。第三条是把户型或平面结果在后处理里「挤出」成体量,这条路在简单住宅上还行,到了非标准结构就开始错。

深圳大学与圭尔夫大学这篇论文的判断是:问题出在表示上。只要中间结果不是「带参数的构件体积」,后面怎么后处理都补不回来。

二、CRAB 的两段结构

CRAB 的做法是把重建结果直接定义成「构件长方体」:墙、门、窗、梁、柱,每一个都是一个带语义的长方体,参数是中心线、厚度、高度、洞口尺寸,语义和参数对齐 IFC。墙用中心线参数化而不是通用有向盒,是这篇文章的关键设计——理由后面再说。

整个流程分两段。ProposalNet 先看图,用自回归的方式吐出一批粗长方体:哪面墙、哪扇门、在什么位置、大概多大。AssemblyNet 负责精修,它把每个长方体编码成一个带语义、关系和编辑标记的 token,通过三种注意力——构件内部、构件之间、构件与点云之间——来修正几何,同时用一个关系头预测结构依赖:哪两面墙相邻、门属于哪面墙。修正用的是关系感知的 Flow Matching。

输出之后还有一步工程化处理:同一张「长方体加关系」的图,可以拼成三种建模习惯——角部有独立节点的、十字交叉有独立节点的,以及把节点并进整面墙的。意思是重建结果不是一张死模型,按国内与国外的建模规范都能落地。

训练数据是这篇文章的另一半工作。团队把公开的 Structured3D 补上了构件级长方体标注,又程序化生成了 3,000 个带模拟扫描噪声的场景,合起来叫 CrabSet,已经放在 HuggingFace 上。训练用 8 张 RTX 4090,50 个 epoch,输入点云按 2.5 厘米体素下采样。

三、数字:墙厚和洞口高度是差距所在

对比对象里最有参考价值的是 SpatialLM——目前公开的、用三维平面表示场景的方法。两者在同一份测试集上的差距,集中体现在体积参数上,而不是轮廓上。

指标SpatialLM(三维平面)CRAB(构件长方体)
外墙构件匹配 Match-F192.40%93.78%
内墙构件匹配 Match-F191.48%92.57%
内墙中心线偏差3.10 cm3.01 cm
内墙厚度平均误差3.89 cm2.80 cm
墙厚误差在 3 厘米以内占比24.98%79.50%
门洞高度误差77.36 cm2.86 cm
窗洞高度误差122.86 cm9.23 cm
门/窗匹配 Match-F189.03% / 77.90%91.14% / 88.97%

这组数字里最值得看的是第五行。墙厚误差的平均值两者只差 1 厘米,但「误差落在 3 厘米以内」的比例从 25% 跳到 79.5%——意思是计划方法虽然平均下来还行,但多数墙是错的,只是错得不多;CRAB 是多数墙对了,少数墙错得厉害。对建模交付来说,这是两种完全不同的返工体验。

门洞高度那一行差距更大。平面方法本质上不表达洞口高度,后处理里只能靠推断,误差到几十厘米甚至一米以上;长方体表示里高度是显式参数,误差降到 2.86 厘米,这个量级已经接近现场用激光测距仪复核的水平。

合成数据之外,论文还在两个真实扫描数据集上做了对比:BIMNet 上墙体匹配从 68.6% 到 72.5%,门从 49.6% 到 68.8%,窗从 37.4% 到 48.5%。真机上提升幅度比合成集小,门窗的绝对水平也不高——这是这篇文章最诚实的地方。

真实扫描场景上的重建结果对比:点云、SpatialLM、CRAB
真实扫描场景的定性对比。从左到右:输入点云、SpatialLM 的三维平面结果、CRAB 的构件长方体结果,每一行是一个不同场景。实数差距见上文表格。图片来源:论文项目页(SIGGRAPH Asia 2026)
2.80 cm内墙厚度平均误差
79.50%墙厚误差在 3 厘米以内的比例
3.60 cm扰动实验中墙端点误差(平面方法 30.29 cm)
48.5%真实扫描上的窗匹配 Match-F1

四、为什么「中心线长方体」比「有向盒」强

墙是一种长细比极端的构件:长度可能十几米,厚度只有二十厘米。通用的有向盒用一个中心点、三个边长、一个转角来描述,长度和厚度在数学上被平等对待,噪声沿着长方向一放大,厚度就跟着飘。中心线参数化把两件事拆开:一条中心线决定走向和长度,一个厚度值单独管厚薄。

消融实验给出了代价:换成通用有向盒,内墙「厚度误差在 3 厘米以内」的比例从 79.50% 掉到 71.74%。门和窗上两者差不多,甚至通用盒略好——因为门窗本来就是紧凑构件,不存在长细比问题。这也解释了为什么这个设计是给墙量身定做的。

第二个结论更反直觉:长方体不只是更好的输出格式,它也是更好的优化目标。团队做了一个扰动实验,把真值墙移一点、缩一点,再让模型修正回来。用平面表示修正,端点误差是 30.29、13.07、33.21 厘米;用长方体表示修正,是 3.60、5.18、5.66 厘米。原因不难理解:平面的小偏差在墙提取和后处理里会被放大,而长方体每个构件自带范围与厚度,改一个构件不会牵动邻居。

局限也写在论文里。只能处理单层室内场景;以正交布局为主,曲线和极不规则结构会被简化;整块缺失的构件仍要人先粗放地摆一个位置,模型再修;梁的匹配只有 57.83%(柱是 97.15%),因为梁在真实测试集里出现太少;真实数据只覆盖 BIMNet 与 ISPRS 两个集。

五、对 BIM 工程师意味着什么

可以开始准备的几件事

  1. 改造项目的工作结构会变。现在的活是「画」,这类方法成熟之后是「核」——检查构件对不对、改错的地方。同一份工时,从建模转到审模,签字的人要能看懂点云偏差在哪儿。
  2. 点云质量仍是前置条件。论文把输入按 2.5 厘米体素下采样,说明源数据得比这更细。站距、遮挡、玻璃与镜面反射,还是得靠现场控制,算法补不了。
  3. IFC 语义是硬要求。墙厚、洞口高度能进参数,重建结果才有交付价值。只追求渲染好看的重建,在审查和算量环节用不了。
  4. 注意「可编辑」这件事的复利。构件级表示把重建和编辑合成一件事,改造项目多轮变更时省下的是返工,不是首次建模的时间。
  5. 别把演示当生产工具。CrabSet 与在线 demo 都放出来了,可以试,但训练分布是住宅式室内场景,厂房、机房、医院这些管线密集的空间没有验证。

六、行业含义

国内 Scan-to-BIM 真正有人付钱的场景很集中:既有建筑改造、城市更新、竣工模型补测、历史建筑测绘。共同点是「没有原始模型」,所以重建这件事绕不过去。这类研究往前走一步,先影响的是工具,接着影响的是计价方式——按平方米收建模费的报价单,迟早要改成按合格构件数和修改轮次来算,因为模型的价值本来就在构件上,不在面积上。

另一个变化在交付口径。过去点云交付和模型交付是两件事,前者给测量队,后者给建模组,中间靠人转译。如果重建结果本身带 IFC 参数和关系,两者可以合成一条链:扫描、重建、复核、出图。这条链真正跑起来之后,改造项目最贵的那段人工就少了一半。至于什么时候能跑起来,取决于真实场景上的准确率能不能再往上走一截——门窗 48.5% 这个数字,还不足以让人放心签字。

这篇研究要打折扣的地方

信息来源:arXiv:2610.29257《CRAB: Cuboid-based Representation for As-built BIM from Point Clouds》(2026-10-21 提交,SIGGRAPH Asia 2026 录用);项目页 vcc.tech/research/2026/CRAB;CrabSet 数据集与演示(HuggingFace)。文中两张配图均取自论文项目页。本文为智曦知行原创分析,基于公开论文整理,不构成工具选型建议。