张文天WENTIAN.XYZ
PROJECT / 04 · 3D RECONSTRUCTION

3DGS 建筑立面
三维重建

以叶卡捷琳堡库比雪夫街建筑立面为对象,用普通手机视频与开源/轻量工具,贯通视频采集、SfM 位姿恢复、3D Gaussian Splatting 训练、噪声清理和 Web 实时展示。

Python / OpenCVCOLMAP / SfM3D Gaussian SplattingBrushSuperSplat

项目重点是一条低成本三维数据生产链:采集策略、特征匹配、几何初始化和后期清理必须连起来,否则单纯增加训练迭代不能解决错误结构。

138输入图像
109,180COLMAP 稀疏点
2 FPS视频抽帧频率
>70%目标帧间重叠度

用可获得的设备,完成可浏览的立面场景

CAPTURE

低成本采集

使用手机视频而非专用阵列设备,通过移动路径和帧间重叠保障几何可恢复性。

RECONSTRUCT

相机与空间骨架

先用 SfM 恢复相机内外参与稀疏点云,为高斯场提供合理初始位置。

DELIVER

轻量 Web 展示

在 Brush 中完成训练和“雕刻式”清理,再导出到 SuperSplat 进行场景裁剪与网页浏览。

库比雪夫街建筑立面实景与摄影测量目标
重建对象库比雪夫街 48A / 71A 建筑立面。窗框、砖缝、玻璃反射和遮挡边界共同决定采集路线与后期清理难度。

采集决定了后续上限

路径设计

沿建筑立面平稳移动,保持连续视差,避免大幅度跳角度和突然改变曝光。

重叠与清晰度

目标重叠度高于 70%,让窗框、砖缝等稳定特征能跨多帧建立匹配。

OpenCV 抽帧

用 Python / OpenCV 按 2 FPS 生成图像序列,在视角变化与重复帧之间取平衡。

质量筛选

训练前需剔除明显模糊、重复或遮挡严重的帧,避免将采集问题带入几何恢复。

OpenCV 视频抽帧程序截图
OpenCV 抽帧逐帧读取视频,按目标时间间隔保存图像,为 COLMAP 创建稳定的输入序列。
Python · 2 FPS frame extraction
cap = cv2.VideoCapture(video_path)
fps = cap.get(cv2.CAP_PROP_FPS)
step = max(1, round(fps / 2))

while cap.isOpened():
  ok, frame = cap.read()
  if not ok: break
  if frame_id % step == 0:
    cv2.imwrite(output / f"{saved:04d}.jpg", frame)

先建几何骨架,再优化外观

特征检测与匹配

FEATURES

从 138 张图像中检测稳定局部特征,建立多视角对应关系;错误匹配会在后续表现为飘浮点或拉裂结构。

相机位姿估计

CAMERAS

通过束调整联合优化相机位姿和空间点,使同一特征在多张图像中的重投影误差收敛。

稀疏点云输出

109,180 PTS

输出 109,180 个稀疏点与已注册相机,这些几何结果成为 3DGS 中高斯位置与相机观测的初始条件。

关键判断

如果相机轨迹不连续或稀疏点云出现多个分裂群,应先回到帧质量、特征匹配和建图参数,而不是直接进入 3DGS 训练。

138完成筛选并进入重建的图像
109,180稀疏点云点数
> 70%目标连续帧重叠度
COLMAP 相机轨迹和稀疏点云重建界面
COLMAP / SfM 结果检查红色相机轨迹与稀疏点云共同用于判断注册完整性、分裂群和错误匹配。

以可微渲染优化高斯场

REPRESENTATION

场景表示

每个 3D 高斯包含位置 μ、协方差 Σ、透明度 α 与球谐颜色系数,用连续椭球代替传统三角网格表示外观。

OPTIMIZATION

可微渲染

将高斯投影到图像平面,按深度排序后 alpha blending;比较渲染图与真实帧,通过梯度更新位置、尺度、方向、透明度与颜色。

DENSIFICATION

自适应增密

Brush 在细节不足区域增加或分裂高斯,使窗框、砖缝和立面边界获得更密集的表达。

ITERATION

训练区间

原项目材料记录的训练迭代范围为 7k–30k。迭代数是计算预算,不能取代训练视图检查和噪声清理。

Brush 中的建筑 3D Gaussian Splatting 模型
Brush 训练视图蓝色高斯场已恢复建筑主体;周围散点与天空区域仍需通过视图检查和选择工具继续清理。

从可训练场景到可用 Web 资产

  • 噪声清理在 Brush 中选择并删除天空、前景遮挡和错误匹配产生的漂浮高斯。
  • 场景裁剪保留主要建筑立面与必要环境,减少无关空间和浏览端负担。
  • 格式交付导出 SuperSplat 兼容场景,检查初始视角、裁剪边界和浏览性能。
  • 实时表现材料记录清理后场景约 60 FPS 浏览,并保留玻璃反射、室内深度感与立面纹理。
建筑立面输入画面与 SuperSplat 重建结果对比
输入 / 重建对比用同一立面局部检查窗框位置、反射、室内深度与边缘完整度,而不是只看单一漂亮视角。
完整产出

手机视频 → OpenCV 抽帧 → COLMAP 位姿/点云 → Brush 3DGS 训练与清理 → SuperSplat Web 展示。这条流程同时覆盖摄影测量、神经渲染和三维数据交付。