简介:三维重建是计算机视觉与空间智能的关键技术,而室内场景的实时重建更依赖深度传感器与位姿估计的协同。单目RGBD相机通过结构光或ToF获取深度图,但原始数据存在噪声、视差与时间戳不同步等问题,直接融合会引发漂移与重影。工程上常以TSDF(截断符号距离函数)作为多帧融合的数据结构,配合RGBD联合里程计实现帧间配准——几何ICP约束垂直方向,光度对齐拉住平面滑动,从而在低纹理墙面等挑战场景中保持稳定。该技术广泛应用于家装量房、机器人巡检与数字孪生,本文以Open3D为例,详细解析最小重建流程中体素尺寸、截断距离、金字塔迭代等参数调优,并梳理漂移、低纹理对齐、内存溢出等典型故障的排查思路,为追求实时性与精度平衡的开发者提供可落地的工程参考。
1. 单目RGBD做室内实时重建:不是“扫一扫出模型”,而是一场边走边拼的对齐游戏
单目RGBD相机的实时室内三维重建,听起来很像扫描仪——拿一台带深度头的相机在屋里走一圈,模型就出来了。真正做过的人都知道,决定一个室内重建项目成败的从来不是最后的融合那一下,而是帧与帧之间的位姿对齐。位姿一飘,后面所有深度图像都是废的。这个方向解决的是室内空间的快速数字化:用一台RGBD相机边走边采,边采边拼,实时输出可漫游的三维网格。它适合家装量房、机器人巡检、数字孪生等场景,也适合手里已经有一台RealSense或Kinect系列相机、想从采集到导出一整条流程都自己掌控的工程师。新手能照步骤跑通,老手则能在这套流程里找到值得优化的参数和边界。
2. RGBD实时重建的核心链路:从深度图到TSDF体素,帧间配准为什么是命门
2.1 单目RGBD相机的数据特性:深度噪声、视场角和室内测距边界
单目RGBD相机,指的是单个深度传感头同时输出彩色图与深度图,常见的有结构光方案和ToF方案两类。结构光在近距离精度高,但容易受环境红外光干扰;ToF在中等距离表现稳定,但边缘和半透明物体会产生飞点。室内场景的特点是距离近、墙面多、纹理弱,正好打在深度相机量程最舒服的区间:0.5米到3米。超过3米之后,深度噪声急剧上升,1σ误差从毫米级跳到厘米级,这也是为什么把截断距离设在3米以外基本没有工程意义。
深度图本身并不是干净的二维距离数组。传感器输出的是携带测量噪声的标量场,误差会随距离平方放大,同时物体边缘会出现“前景蔓延”现象——深度值在边缘处被前景物体拉近。RGBD相机的彩色图和深度图还有一个视差问题,特别是结构光方案中,红外投影中心和彩色镜头中心不重合,导致深度图与彩色图在边缘处存在数个像素的错位。所以拿到手的RGBD图像,第一步不是直接丢给重建算法,而是做时间戳对齐和空间对齐。时间戳对齐靠驱动层把HWPair同步好,空间对齐则需要标定两个传感器坐标系的外参。
这些数据特性直接决定了重建算法的选择。室内场景对实时性要求高,不可能每帧都做全局优化;深度噪声又限制了单纯几何对齐的稳定性。因此主流方案都绕不开一个组合:用TSDF体素做多帧融合来压制噪声,用RGB光度信息辅助几何配准来抵抗低纹理墙面带来的退化。这也是为什么标题里“单目RGBD相机”和“实时”两个词同时出现时,实现方案基本收敛到这套框架上,而不是用传统的多视角几何加稀疏特征点重建。
2.2 TSDF截断符号距离函数:把多帧深度压进一个体素空间的原理与精度代价
TSDF,全称Truncated Signed Distance Function,截断符号距离函数,是室内实时重建最核心的数据结构。它把相机周围的空间划分成均匀的体素网格,每个体素里存一个浮点值:这个体素到最近物体表面的有符号距离。正数表示体素在表面前方,负数表示在表面内部,零附近就是表面所在位置。重建表面时,用Marching Cubes算法从TSDF场里提取等值面,得到三角网格。这个思路的好处是天然支持多帧融合:新来一帧深度图,就把深度值投影到附近的体素上,和已有距离值做加权平均,噪声被平均掉,细节被保留下来。
融合时的权重是工程里第一个要关心的参数。常见的做法是给新测量值恒定权重或者递增权重,这样表面越采越稳定。但权重太高会引入拖影,权重太低又压不住噪声。Open3D的ScalableTSDFVolume里默认用常数权重,很多时候这足够了,但如果序列里有长时间静止观察同一块区域,建议改成随距离衰减的权重,避免近处体素的噪声积累。另一个关键参数是截断距离,它决定了多少范围之外的深度信息不参与融合。截断距离设太大会让体素场变得平滑,表面细节被糊掉;设太小又会造成融合空洞,表面出现裂缝。
TSDF的精度代价在体素尺寸上体现得最直接。室内场景常用2厘米体素,640x480深度图、2厘米分辨率下,一个20平方米的客厅大约需要几十百万个体素。体素越小表面越精细,但内存和计算量按立方增长,实时性立刻崩掉。这就是为什么很多实时重建项目宁可在深度图上做降采样,也要把体素尺寸控制在合理范围,而不是一味追求细节。精度从来不是独立指标,它是和内存、帧率绑在一起的选择题。
2.3 帧间配准的两条路线:几何ICP与光度RGB对齐,各自的适用场景
帧间配准要估计的是相机从上一帧到当前帧的刚体变换。室内场景里最常见的两条路线是几何ICP和光度RGB对齐。几何ICP把深度图转换成点云或者隐式几何,通过迭代最近点来最小化两帧之间的几何距离。它的优势是不依赖纹理,但问题也很明显:白墙在几何上是一个平面,沿平面方向没有约束,迭代过程中会漂移;深度噪声大时,误匹配数量急剧上升,收敛结果不稳定。
光度RGB对齐走的是另一条路,最小化两帧彩色图像对应像素的亮度差,本质上是稠密直接法的RGB版本。它不依赖角点或描述子,对低纹理墙面反而有一定优势,因为墙面亮度变化虽然弱,但相机在空间中移动时亮度保持不变这个约束依然成立。代价是它对照明变化和曝光差异非常敏感,室内开灯关灯、窗帘飘动都会让它翻车。工程里的默认解法是把两者联合起来,构成RGBD联合对齐:几何项负责提供垂直于wall平面的强约束,光度项负责拉住沿平面方向的滑动自由度。这种联合方式正是RGBD odometry的核心。
选择哪条路线还要看扫描方式。如果是手持相机慢慢走,帧间位移小,联合RGBD对齐会非常稳。如果是放在机器人上快速移动,帧间位移大,就需要多尺度金字塔加预测位姿做初值。最怕的是那种每帧之间转角和位移都很大的采集方式,帧间配准基本无解,必须借助IMU预积分或者额外的特征点匹配才能稳住。实时室内重建对帧间配准的依赖,怎么强调都不过分——位姿估计是整个重建的“地基”,地基偏一度,融合出来的墙面就是一层厚厚的水泥。
3. 跑通最小重建流程:从RGBD序列到完整三维网格的代码与参数
3.1 最小代码:RGBD odometry + TSDF 融合 + 网格提取
进入实操前先说数据准备。手头没有现成RGBD序列的,推荐先用Open3D仓库里的样例数据把流程跑通,再换自己相机录制的数据。要做的数据格式很简单:一个文件夹放彩色图,一个文件夹放深度图,图像尺寸一致,文件名字一一对应,深度图存成16位PNG,单位是毫米。Open3D读取后会自动换算成米。下面是完整的最小重建代码,帧间用RGBD odometry,融合用ScalableTSDFVolume。
import open3d as o3d import numpy as np # 相机内参,这里用640x480的默认值,实际项目必须换成自己标定的K intrinsic = o3d.camera.PinholeCameraIntrinsic( width=640, height=480, fx=525.0, fy=525.0, cx=319.5, cy=239.5) # TSDF体素场:2cm体素,8cm截断距离,适合室内场景 volume = o3d.pipelines.integration.ScalableTSDFVolume( voxel_length=0.02, sdf_trunc=0.08, volume_unit_resolution=3, depth_sampling_stride=1) # 位姿:保存的是世界到相机的变换矩阵,初始为单位阵 vio = np.eye(4) color_paths = ["path/to/color/%06d.png" % i for i in range(total_frames)] depth_paths = ["path/to/depth/%06d.png" % i for i in range(total_frames)] prev_rgbd = None prev_color = None prev_depth = None for frame_id in range(total_frames): color = o3d.io.read_image(color_paths[frame_id]) depth = o3d.io.read_image(depth_paths[frame_id]) rgbd = o3d.geometry.RGBDImage.create_from_color_and_depth( color, depth, depth_trunc=3.0, convert_rgb_to_intensity=False) if frame_id == 0: # 第一帧不做配准,直接登记到TSDF,把世界系挂在这帧上 volume.integrate(rgbd, intrinsic, np.linalg.inv(vio)) prev_rgbd = rgbd prev_color = color prev_depth = depth continue # RGBD联合里程计:同时利用几何和光度信息求解帧间位姿 odom_result = o3d.pipelines.odometry.compute_rgbd_odometry( prev_rgbd, rgbd, intrinsic, extrinsic_guess=vio, odom_option=o3d.pipelines.odometry.OdometryOption( iteration_number_per_pyramid_level=[10, 5, 5], maximum_depth_diff=0.1)) # 更新世界到相机的变换,注意是左乘 vio = odom_result.transformation @ vio volume.integrate(rgbd, intrinsic, np.linalg.inv(vio)) prev_rgbd = rgbd # 提取三角网格 mesh = volume.extract_triangle_mesh() o3d.io.write_triangle_mesh("reconstruct.ply", mesh)这段代码的核心逻辑是“配准一帧、融合一帧”。第一帧因为没有参考,直接定位为世界原点;从第二帧起,先把当前帧和上一帧做RGBD联合对齐,得到相对变换,再把相对变换累积到全局位姿里,最后用全局位姿把这一帧的深度投影到TSDF体素中。注意compute_rgbd_odometry返回的transformation是“把上一帧坐标系转到当前帧”的相对变换,因此更新世界位姿要用左乘vio = odom_result.transformation @ vio。这个方向搞反了,重建出来的模型会关于原点剧烈扭曲,而且很难通过调试发现,因为单看每一帧的融合效果并不明显。
depth_trunc=3.0表示舍弃3米以外的深度测量,室内可以设小一点,比如2.5,能显著减少远处噪声对体素场的污染。iteration_number_per_pyramid_level=[10, 5, 5]是三层图像金字塔各自的迭代次数,第一层原始分辨率迭代10次,后两层降采样迭代5次,这是一个精度和速度都比较平衡的配置。如果采集时相机移动过快,可以把这个数组整体上调到[20, 10, 10],代价是每帧耗时增加,实时帧率下降。
3.2 关键帧策略:为什么不能每帧都融合
新手拿到上面的代码,最容易犯的错误是把所有帧一股脑送进TSDF融合。每帧都融,TSDF的权重会持续积累,表面虽然是越来越稳,但位姿误差也在持续积累。一旦某一帧配准出了偏差,这一帧的表面就会被“焊”错位置,而且后续帧还会在错误位置继续叠加,最终形成明显的双层墙面或拖影。更严重的后果是融合权重越来越大,后面即使位姿被纠正过来,错误表面也已经被焊死,无法靠后续帧抹平。关键帧策略就是专门对付这个问题的。
常见做法是每隔N帧或者当相机位移超过阈值时,才把当前帧送入TSDF融合,其余帧只参与帧间配准。这样做的原理是:TSDF融合多帧的目的是压制深度噪声,不是记录全部测量。在室内静态场景里,一个位置被三五个关键帧覆盖,噪声已经压得很好,再增加帧数边际收益很低,反而放大位姿漂移。我一般会设定两个阈值:单帧位移超过5厘米,或者旋转超过3度,才插入关键帧。扫描慢的情况下,这样能去掉一大半冗余融合,重建表面反而更干净。
关键帧还可以配合局部滑动窗口使用。窗口里保留最近30个关键帧的位姿,每插入一个新关键帧,就对窗口内所有位姿做一次联合优化,类似视觉SLAM里的局部BA。这种方法需要在代码里维护一个位姿图,复杂度上了一个台阶,但换来的是明显更小的累积漂移。如果你的项目要求重建误差控制在厘米级,这一步省不掉。我这里不展开写位姿图优化的代码,但建议你在跑通上面最小流程并确认无大问题后,把它作为下一步优化项。
3.3 位姿初始化与第一帧陷阱:把相机坐标系定稳
最小代码里第一帧直接作为世界原点,这个约定在大多数室内场景够用。但有一个隐藏陷阱:一上来就把相机对着白墙或者空荡荡的地板,第一帧没有足够特征,后续帧怎么配都找不到锚点。更稳妥的做法是扫描前先把相机对准房间角落、门框、桌椅这类几何结构丰富的位置,停留两三秒,让TSDF把这一片区域焊结实,然后再开始移动。这个习惯能省掉大量调试时间,属于那种“看起来不写进代码、但比代码更影响结果”的细节。
另一个要注意的是内参问题。代码里的fx, fy, cx, cy如果是默认值,配准精度直接打折。RGBD相机的内参标定虽然出厂有标定值,但每个相机之间存在个体差异,而且深度图和彩色图的内参还涉及两个传感器的相对外参。Open3D的create_from_color_and_depth假设深度图和彩色图已经对齐,如果RGB和D的画面在边缘明显错位,首先要检查的是相机驱动里是否开启了深度与彩色对齐(对齐到彩色或对齐到深度)。没有对齐的数据直接用,重建模型会在物体边缘出现一圈“毛边”,那不是融合参数的问题,是输入数据本身的问题。
4. 实时性优化与参数调优:体素尺寸、截断距离、ICP收敛阈值怎么定
4.1 体素尺寸与分辨率:细节和内存的平衡点
体素尺寸是TSDF重建里最敏感的参数。它直接决定表面细节上限:2厘米体素能还原的细节就是2厘米级别,小于这个尺度的凹凸会被平滑掉;1厘米体素能保留更多细节,但体素数量变成原来的8倍,内存和计算量同步暴涨。室内场景做实时重建,我的经验是2厘米起步,先跑通流程,再根据实际内存余量降到1.5厘米或1厘米。不要一开始就上1厘米,否则帧率掉到个位数时,你会分不清是参数问题还是代码问题。
分辨率方面,不建议把640x480的深度图全分辨率送进融合。全分辨率融合虽然保留了更多深度读数,但相邻像素的深度相关性很高,投影到体素里大量重叠,计算浪费严重。ScalableTSDFVolume提供了一个depth_sampling_stride参数,含义是每隔几个像素采样一条深度射线。设成2,相当于把深度图横向纵向各降一半参与融合,即每4个像素取1个,速度提升接近线性,表面质量损失肉眼几乎不可见。如果目标是实时性优先,设成3也可以接受。配准用的深度图分辨率最好保持原始分辨率,因为配准对空间分辨率更敏感。
内存估算有一个简单公式可以直接套:体素数约等于场景体积除以体素体积。一个10米x10米x3米的房间,体积300立方米,2厘米体素体积8e-6立方米,约3750万个体素。ScalableTSDFVolume每个体素内部存储TSDF值和权重,按8字节算,单个体素场大约300MB。听起来还能接受,但如果扫描一栋几百平米的多房间楼层,体素场会到GB级别,这时候就必须靠分块调度了。Open3D的ScalableTSDFVolume内部做了分块,但不会主动淘汰离开视锥的块,所以空间释放得靠自己规划扫描路径,别指望代码替你管理内存。
4.2 截断距离和深度剪枝:室内近距离场景的黄金参数
截断距离sdf_trunc决定了TSDF场里“哪些体素认为自己在表面附近”。它的物理含义是当深度投影到体素后,距离该深度太远的体素一律不更新,这样既省计算量,又避免远距离噪声污染表面。室内扫描的场景,截断距离通常设为体素尺寸的4到6倍。2厘米体素对应8到12厘米,太小会让薄物体(墙面、门板)的背面融合出空洞,太大则会让表面变得模糊,锐利边缘被磨圆。
深度剪枝depth_trunc和截断距离是两个不同层面的参数。depth_trunc作用在输入深度图上,大于该值的深度像素直接丢弃。室内场景设2.5到3米是合理的,因为单目RGBD相机的深度噪声在3米外已经大到没有重建价值,而且远处的杂散深度点会被投影到当前位置附近的体素里,形成一团团悬浮噪点。剪枝对内存也有好处:深度范围越小,需要的体素深度范围越小。
还有一个容易被忽视的参数是maximum_depth_diff,它在配准阶段生效。当两帧深度图中同一个像素位置的深度差大于这个阈值时,该像素不参与几何约束。室内场景发生这种情况,多半是相机移动造成了遮挡变化,比如走动时身体挡到了墙面。设0.1米是比较通用的起始值,设太大会把遮挡和深度噪声一起放进约束里,设太小则会有大量有效像素被丢弃,低纹理墙面配准会更不稳定。
4.3 ICP收敛阈值与多尺度策略:让对齐在60ms内收敛
RGBD odometry本质是一个非线性优化问题,迭代策略直接决定实时性。Open3D的iteration_number_per_pyramid_level决定了多尺度金字塔每层迭代次数。图像金字塔的用意是先在低分辨率下快速逼近一个大致的变换,再回到高分辨率精修,这样可以避免陷入局部极小值。默认[10, 5, 5]在普通桌面CPU上单帧约30到60毫秒,基本能满足实时。如果把每层次数翻倍,误差可能降低十之一二,但耗时翻倍,性价比很低。
收敛阈值方面,Open3D的OdometryOption还有一个minimum_temperature,它是模拟退火里的残差阈值,一般不用动。真正值得关注的是事先对深度图做的预处理:对深度图做双边滤波,质的改善。双边滤波保留边缘,同时平滑内部噪声,能显著提高配准的稳定度。Open3D的RGBD odometry在内部会做梯度计算,深度噪声大的帧会产生梯度尖峰,导致联合优化的几何项和光度项互相打架。滤波之后,配准收敛速度往往快不少。
实时性还有一个大杀器是降采样配准。对RGB图做灰度化后缩小到320x240甚至160x120进行配准,位姿精度损失很小,但速度翻倍。如果你的扫描场景以静止墙面为主,这种方式很划算;如果场景里有大量细薄结构,比如栏杆、桌椅腿,高分辨率配准才能保住稳定。我的习惯是做两级策略:先用低分辨率配准预测一个初始位姿,再用全分辨率配准精修,这样既稳又快。里外里算下来,单帧配准能压到40毫秒以内。
5. 室内场景重建常见问题排查:漂移、重影、内存爆炸与墙面消失
5.1 重建到一半模型漂移:先查位姿,别急着调体素
现象:扫描前3米非常完美,越往后模型越歪,转角处尤其明显,本来应该是直角的墙角被拉成了圆弧,或者走廊尽头出现了两个错开的重叠墙面。原因:位姿累积误差。帧间配准每一步都会产生一点点误差,这些误差不会消失,而是逐帧累积。转角处如果转动过快,配准初值偏离真实位姿太多,误差会成倍放大。解决:首先确认扫描速度,转角处速度减半;其次增加金字塔迭代次数,让配准在小位移假设下更充分收敛;再不行就引入回环检测,扫描结束后回到起点做一次回环闭合,把首尾位姿对齐,再对整个位姿图做全局优化。没有回环闭合的实时重建,长走廊场景注定会漂移,这不是代码问题,是数学上的必然。
5.2 低纹理白墙导致对齐翻车:光度约束失效怎么办
现象:墙面本身没有花纹,扫到墙面前后,相机沿墙面水平移动时模型出现明显错层,墙面像被撕开再粘上。原因:几何ICP对平面只有法线方向约束,沿平面方向无约束;光度约束在这种情况下可以弥补,但如果采光不好或者墙面太白,光度的梯度也趋近于零,两帧之间什么都锁不住。解决:第一招是保证扫描时相机不要垂直正对墙面滑行,稍微带一点朝向房间内部的角度,让天花板、地板、对面墙同时进视野;第二招是打开RGBD odometry里的光度项并确认权重没有被误调到零;第三招是预备一个备份方案,在纯白房间场景改用半稠密或者特征点匹配初始化位姿,再用ICP精修。纯白墙是室内重建的第一杀手,千万别低估。
5.3 内存爆炸与体素溢出:大面积室内场景的资源边界
现象:扫到一半程序内存持续上涨,最后被操作系统杀掉,或者没有崩但整个系统开始swap,帧率掉到一帧几秒。原因:TSDF体素场覆盖范围过大。多数时候是因为扫描路径太发散,体素场不断往新区域扩张,之前扫过的区域体素又不会自动释放。解决:先确认体素尺寸是否合理,2厘米以上再考虑分块;再检查volume_unit_resolution,这个参数控制分块大小,数值越大单次分配内存越大,但管理开销越小,室内场景设3到4是平衡点。更彻底的办法是定期把距离相机很远的体素块序列化到磁盘,只保留当前视锥附近的体素块,类似虚拟纹理的分页策略。实测一个三室两厅的户型,如果不做淘汰,内存峰值轻易超过2GB;做了距离淘汰后稳定在500MB上下。
5.4 深度图时间戳不同步:RGB和D对不上时的玄学重影
现象:重建出的物体边缘出现彩色伪影,比如桌沿有一部分是桌面颜色、一部分是桌腿颜色,或者深度图和彩色图的边缘错开一到两个像素,形成“镶边”效果。原因:相机的彩色传感器和深度传感器物理位置不同,触发时间也有差异,如果驱动没有做好硬件同步,两帧数据对应的是不同时刻的场景。手持相机稍微一动,错位就变得明显。解决:先查驱动设置,确认深度图已经对齐到彩色相机坐标系;再查采集程序有没有用同一个时钟戳保存RGB和D,如果是一先一后两张图存下来的,要在采集端改成等待硬件同步信号;最后检查镜头有没有脏污,深度镜头上的指纹也会造成局部错位。这类问题看起来像融合参数不对,实际是输入数据没有对齐,改遍所有融合参数都不会有好转,玄学得很。
5.5 回环没闭合:累积误差让走廊在终点分叉
现象:扫描一个环形走廊,走完一圈回到起点时,起点和终点之间的墙面错开几厘米到十几厘米,模型里出现明显的“断口”。原因:帧间配准的累积误差让位姿“飞”了,虽然局部看每一步都正确,但全局首尾无法对齐。解决:扫描时在起点放置一个有明显几何特征的大型参照物,全程不要让它移出视野太远;路线规划上尽量让路径有重叠,走过的地方回头再带一遍,给回环检测创造机会。实现层面,需要记录关键帧位姿图,做全局回环闭合,用图优化把所有关键帧的位姿一起调优。回环闭合之后再做一次TSDF重融合,也就是用优化后的位姿重新投一遍深度图,表面通常能恢复得很干净。这一步是高质量室内重建的必经之路,只做帧间配准不闭合回环,大型场景早晚要翻车。
6. 进阶:验证重建质量与导出可用模型,从点云到可渲染网格的一步
6.1 三个数值指标:对齐误差、网格完整性、纹理清晰度
验证重建质量最常用的三个指标:对齐误差看的是TSDF场里曲面的连续性,一个简单办法是分段重投对比,同一块区域用两个不同方向的帧分别重建,比较两个表面的距离,1厘米以内算合格;网格完整性看的是有没有大面积空洞,室内场景主要检查墙角、天花板和家具底部;纹理清晰度直接渲染网格,看彩色信息有没有错位。这三个指标都不需要额外工具,Open3D的measure工具和肉眼即可完成初判。如果对齐误差超过2厘米,优先怀疑位姿而不是融合参数。
6.2 导出与后处理:TSDF网格的平滑、裁剪与纹理映射
从TSDF提取出来的网格通常带噪声,直接交付给下游是不行的。我一般按这个顺序处理:先做统计滤波,剔除孤立小面片;再做拉普拉斯平滑,迭代次数控制在10以内,太高会把细节磨光;最后用一个包围盒裁剪掉扫描范围外的杂点。纹理映射如果用的是Open3D,可以先把TSDF网格的顶点颜色提取出来,再对明显色差的区域做加权,效果已经足够预览。要交付到UE或者Unity里,统一导出成PLY或OBJ,注意PLY要带vertex color,OBJ要带MTL和纹理图,不然到了渲染引擎里还是灰模。
6.3 从TSDF走向3D高斯重建:要不要换路线
最近热度很高的3D高斯三维重建,确实在照片级真实感上超过传统TSDF,但它的时间成本和算力成本也高一个量级:需要几十张到几百张视角照片,离线训练几十分钟到几小时,室内场景实时性做不到。TSDF路线仍然是实时室内重建里性价比最高的选择。如果项目对真实感要求高、又不要求实时,可以一条管线同时输出TSDF网格和稀疏视角,后期用3D高斯渲染做展示;如果只求快速得到可用几何模型,继续用TSDF,稳得多。这是我做项目最深的体会:不要因为新方案热闹就换掉已经跑通的流程,先把现有链路的每一个坑都踩熟,再谈进阶。希望这些参数和执行细节能帮到你少走我走过的弯路。
本文还有配套的精品资源,点击获取