
目标理解 3DGS 的核心表示和训练渲染流程能跑通官方实现能准备自定义数据集能排查常见重建问题并能回答面试常问问题。目录1. 3DGS 是什么2. 3DGS 解决什么问题3. 3DGS 和 NeRF、Mesh、点云的区别4. 3DGS 核心表示一个 Gaussian 里有什么5. 3D Gaussian 的数学直觉6. 从 3D Gaussian 到 2D Splat7. 3DGS 渲染流程8. 3DGS 训练流程9. Densification 和 Pruning10. 颜色表示Spherical Harmonics11. 相机内外参在 3DGS 中的作用12. 3DGS 数据链路图片到模型13. 环境安装与验证14. 实操一跑通官方预训练模型15. 实操二训练官方示例或自定义场景16. 实操三渲染和评估17. 实操四自定义图片数据集准备18. 实操五检查 COLMAP 输出19. 3DGS 输出文件和 PLY 结构20. 常用训练参数和调参经验21. 常见问题排查22. 进阶方向23. 面试常问问题24. 练习任务25. 参考资料1. 3DGS 是什么3DGS全称 3D Gaussian Splatting是一种用于新视角合成和三维场景表示的方法。它把场景表示为大量可优化的 3D 高斯椭球并通过高效的 splatting rasterization 进行实时渲染。一句话理解3DGS 用很多带颜色、透明度、大小、方向的 3D 高斯椭球来表示场景 再把这些高斯快速投影到屏幕上进行 alpha blending得到新视角图像。它的典型输入多张图片 相机内参 相机外参 稀疏点云它的典型输出一个 .ply 高斯模型 可从新相机视角实时渲染的场景3DGS 论文核心贡献可以概括为使用 3D Gaussians 表示连续辐射场。从 SfM 稀疏点初始化并在训练中动态 densify/prune。使用可微、可见性感知的高效 splatting 渲染。在较高画质下实现实时或接近实时的新视角渲染。2. 3DGS 解决什么问题3DGS 主要解决给定一个真实场景的多视角图片如何训练出一个能快速渲染任意新视角的 3D 表示。应用方向新视角合成。实景三维重建。VR/AR 场景浏览。数字孪生。机器人和自动驾驶仿真资产。文物、建筑、室内空间数字化。影视和游戏资产采集。与传统 mesh 重建不同3DGS 并不直接追求显式表面网格而是追求从不同视角看起来真实。3. 3DGS 和 NeRF、Mesh、点云的区别3.1 和 NeRF 的区别对比NeRF3DGS场景表示隐式 MLP 辐射场显式 3D Gaussians渲染方式沿射线采样 体渲染高斯投影 rasterization训练速度通常较慢通常更快渲染速度原始 NeRF 较慢实时性强可编辑性较弱高斯是显式对象较易编辑几何表面隐式密度不直接是 mesh高斯椭球集合不直接是 mesh一句话NeRF 像是在空间中查询一个神经网络 3DGS 像是在空间中放了很多可渲染的半透明小椭球。3.2 和 Mesh 的区别Mesh 表示显式表面vertices faces texture3DGS 表示体积感的半透明高斯position covariance opacity colorMesh 更适合物理仿真。碰撞检测。传统游戏引擎资产。CAD/建模。3DGS 更适合快速真实感新视角渲染。从图片直接学习场景外观。不容易得到干净表面的真实场景。3.3 和点云的区别普通点云通常只有xyz rgb3DGS 每个点是一个可投影的 3D 椭球还包含尺度。旋转。不透明度。视角相关颜色。可优化参数。因此 3DGS 可以看成“可渲染、可优化、带体积和透明度的点云扩展”。4. 3DGS 核心表示一个 Gaussian 里有什么一个 3D Gaussian 通常包含mean / position: μ [x, y, z] covariance: Σ scale: s [sx, sy, sz] rotation: q or R opacity: α color / SH features: c4.1 position表示高斯中心点在世界坐标系中的位置。初始 position 通常来自 COLMAP 稀疏点云。4.2 covariance协方差控制高斯在三维空间中的形状、大小和方向。为了保证协方差正定通常不直接优化任意矩阵而是用 scale 和 rotation 构造Σ R S S^T R^T其中R旋转矩阵。S由 scale 构成的对角矩阵。4.3 opacityopacity 控制高斯的不透明度。渲染时多个高斯按深度排序或 tile 顺序进行 alpha blending。4.4 color / SH颜色通常用 spherical harmonics 表示以支持视角相关外观例如高光。如果只用 RGB视角变化时颜色表达能力较弱。5. 3D Gaussian 的数学直觉一个 3D Gaussian 可以写成G(x) exp(-1/2 * (x - μ)^T Σ^-1 (x - μ))含义离中心μ越近值越大。协方差Σ控制影响范围和方向。各向同性高斯像球。各向异性高斯像椭球。3DGS 使用各向异性高斯因为真实场景中的表面常常是片状、边缘状或细长结构。各向异性高斯比球状高斯更容易贴合表面。6. 从 3D Gaussian 到 2D Splat渲染时3D 高斯会被投影到相机图像平面。流程3D Gaussian in world - world-to-camera - perspective projection - 2D Gaussian / ellipse on screen由于透视投影是非线性的实际会在高斯中心附近用一阶近似把 3D 协方差变换成屏幕空间 2D 协方差。直觉空间中的一个小椭球从相机看过去会变成屏幕上的一个椭圆 splat。7. 3DGS 渲染流程典型渲染流程输入相机内外参 - 视锥裁剪剔除不可见高斯 - 将 3D Gaussians 投影成 2D splats - 按 tile 分桶 - 按深度排序或近似排序 - alpha compositing - 输出 RGB 图像7.1 Alpha Compositing从前到后混合颜色C Σ T_i * α_i * c_i T_i Π(1 - α_j), j i其中α_i第 i 个高斯在当前像素的透明度贡献。c_i颜色。T_i到达第 i 个高斯前剩余透过率。7.2 为什么快3DGS 快的原因显式高斯不需要 MLP 逐点查询。不沿每条 ray 做大量采样。使用 GPU rasterization 思路。tile-based splatting 提升并行效率。只处理对当前视角有贡献的高斯。8. 3DGS 训练流程训练目标让渲染图像尽可能接近真实训练图像。典型训练循环读取 COLMAP 相机和稀疏点云 - 初始化 3D Gaussians - 随机选择一个训练相机 - 从该相机视角渲染当前 Gaussians - 与真实图片计算 loss - 反向传播优化高斯参数 - 周期性 densify / prune - 输出最终 .ply 模型8.1 常见优化参数优化内容包括高斯中心位置。scale。rotation。opacity。SH color coefficients。通常不直接优化相机位姿除非是某些扩展方法。8.2 Loss原始 3DGS 常见图像损失包含L1 loss SSIM-related loss直觉L1 保证像素级颜色接近。SSIM 强调结构相似性。9. Densification 和 Pruning3DGS 的一个关键点是训练过程中动态调整高斯数量。9.1 为什么需要 densification初始稀疏点云通常不够密无法表示细节。训练时如果某些区域误差大或梯度大说明当前高斯表达能力不够就需要增加高斯。常见操作clone复制高斯。split把一个大高斯拆成多个小高斯。9.2 为什么需要 pruning训练过程中有些高斯可能没用或有害opacity 很低。贡献很小。尺寸异常。形成漂浮噪声。pruning 会删除这些高斯控制模型规模和噪声。9.3 直觉densification 负责补细节 pruning 负责删垃圾。两者交替进行让场景表示逐渐变得紧凑且高质量。10. 颜色表示Spherical HarmonicsSpherical Harmonics简称 SH球谐函数常用于表示方向相关的颜色。为什么需要 SH同一个空间点从不同方向看可能颜色不同例如高光、反射、视角相关亮度变化。简单 RGB 只能表示固定颜色。SH 可以表示color(view_direction)SH 阶数越高表达能力越强。参数更多。训练更复杂。原始 3DGS 会逐步增加 SH degree让模型先学低频颜色再学习更复杂的视角相关外观。11. 相机内外参在 3DGS 中的作用3DGS 强依赖相机参数。11.1 内参内参决定如何从相机坐标投影到像素fx, fy, cx, cy如果内参错高斯投影大小不对。位置对不齐。边缘和纹理发糊。训练 loss 难以下降。11.2 外参外参决定每张图片的相机位置和朝向。训练时用第 i 张图片的外参渲染预测图 再和第 i 张真实图比较如果外参错真实图和渲染图不是同一个视角。高斯会被优化到错误位置。模型可能散掉或漂浮物很多。11.3 COLMAP 约定COLMAP 中images.txt/images.bin的qvec/tvec通常表示 world-to-cameraX_cam R * X_world t相机中心C -R^T * t这是 3DGS 数据排查中的高频点。12. 3DGS 数据链路图片到模型典型自定义数据流程采集图片或视频抽帧 - COLMAP SfM - 得到相机内参、外参、稀疏点云 - 图像去畸变 - 3DGS 读取 COLMAP 数据 - 训练 - render.py 渲染 - metrics.py 评估 - viewer 查看结果12.1 数据质量比调参更重要好的输入通常比复杂调参更重要。采集建议相邻图片有足够重叠。围绕目标或沿路径平滑移动。避免运动模糊。避免纯白墙、玻璃、镜子、大面积水面。曝光尽量一致。不要频繁变焦。拍摄主体和背景最好有纹理。动态物体越少越好。13. 环境安装与验证官方实现依赖 CUDA GPU训练通常需要 NVIDIA 显卡。13.1 克隆仓库gitclone https://github.com/graphdeco-inria/gaussian-splatting--recursivecdgaussian-splatting注意--recursive因为官方仓库包含子模块。如果忘记加gitsubmodule update--init--recursive13.2 创建 Conda 环境官方仓库通常提供environment.ymlcondaenvcreate--fileenvironment.yml conda activate gaussian_splatting如果环境创建失败常见原因CUDA/PyTorch 版本不匹配。Visual Studio Build Tools 缺失。子模块没有拉取。Windows 路径或编译环境问题。13.3 验证 Python 和 CUDApython -PY import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else cpu) PY13.4 安装 COLMAP 和 ImageMagick处理自定义数据通常需要COLMAP估计相机和稀疏点云。ImageMagick部分脚本用于图像缩放。验证colmap-hmagick-version有些系统中 ImageMagick 命令可能是convert-version14. 实操一跑通官方预训练模型官方仓库提供预训练模型或示例数据时可以先跑渲染和 viewer确认环境没问题。假设模型目录output/model_name/ point_cloud/ cameras.json cfg_args渲染python render.py-moutput/model_name查看输出output/model_name/train/ours_30000/renders/ output/model_name/test/ours_30000/renders/如果官方 viewer 编译好了可以启动实时查看器。不同平台 viewer 路径略有差异按官方仓库 README 说明运行。15. 实操二训练官方示例或自定义场景15.1 数据目录格式常见 scene 目录scene/ input/ image_001.jpg image_002.jpg sparse/ 0/ cameras.bin images.bin points3D.bin images/不同脚本会生成或要求不同目录。原始官方流程通常使用python convert.py-sscene来调用 COLMAP 并整理数据。15.2 使用 convert.py 准备数据把原始图片放入scene/input/运行python convert.py-sscene它通常会完成COLMAP 特征提取。特征匹配。稀疏重建。去畸变。生成训练需要的图像目录和 sparse 模型。如果你的机器没有 GPU 或 COLMAP GPU SIFT 不可用可能需要查看convert.py -h或手动运行 COLMAP 并关闭 GPU--SiftExtraction.use_gpu0--SiftMatching.use_gpu015.3 开始训练python train.py-sscene-moutput/scene常用python train.py-sscene-moutput/scene--iterations30000训练输出通常包含output/scene/ cameras.json cfg_args input.ply point_cloud/ iteration_7000/ point_cloud.ply iteration_30000/ point_cloud.ply15.4 查看训练过程训练时关注loss 是否下降。高斯数量是否增长到合理范围。是否出现 CUDA OOM。中间保存的 PLY 是否越来越合理。viewer 中是否出现大量漂浮物。16. 实操三渲染和评估16.1 渲染python render.py-moutput/scene指定迭代python render.py-moutput/scene--iteration3000016.2 评估指标python metrics.py-moutput/scene常见指标PSNR像素误差相关越高越好。SSIM结构相似性越高越好。LPIPS感知距离越低越好。注意指标高不一定视觉完美指标低也不一定完全不可用。 最好结合渲染图、视频和新视角观察。16.3 渲染视频官方实现常基于相机集合渲染。如果要自由轨迹视频可以使用 viewer 录制。自己生成相机轨迹。读取训练相机位姿并插值。使用第三方工具或扩展脚本。17. 实操四自定义图片数据集准备17.1 图片采集推荐图片数量小物体 50 到 200 张室内/大场景可更多。重叠率相邻视角 60% 到 80%。相机运动平滑移动避免大跳变。焦距尽量固定。分辨率不要太低太高会增加训练成本。17.2 视频抽帧ffmpeg-iinput.mp4-vffps2scene/input/frame_%05d.jpg如果运动快可以提高 fpsffmpeg-iinput.mp4-vffps5scene/input/frame_%05d.jpg17.3 先跑 COLMAP 检查训练 3DGS 前建议先用 COLMAP GUI 或 CLI 看注册了多少张图片。稀疏点云是否覆盖主体。相机轨迹是否合理。是否有明显错误匹配。如果 COLMAP 都很差3DGS 往往也不会好。17.4 手动 COLMAP 流程mkdir-pscene/distorted/sparse colmap feature_extractor\--database_pathscene/distorted/database.db\--image_pathscene/input colmap exhaustive_matcher\--database_pathscene/distorted/database.db colmap mapper\--database_pathscene/distorted/database.db\--image_pathscene/input\--output_pathscene/distorted/sparse colmap image_undistorter\--image_pathscene/input\--input_pathscene/distorted/sparse/0\--output_pathscene\--output_typeCOLMAP具体目录和参数要和你使用的 3DGS 实现匹配。18. 实操五检查 COLMAP 输出18.1 转文本mkdir-pscene/sparse_txt colmap model_converter\--input_pathscene/sparse/0\--output_pathscene/sparse_txt\--output_typeTXT检查cameras.txt images.txt points3D.txt18.2 Python 读取相机中心保存为check_colmap_cameras.pyfrompathlibimportPathimportnumpyasnpdefqvec_to_rotmat(qvec):qw,qx,qy,qzqvecreturnnp.array([[1-2*qy*qy-2*qz*qz,2*qx*qy-2*qz*qw,2*qx*qz2*qy*qw],[2*qx*qy2*qz*qw,1-2*qx*qx-2*qz*qz,2*qy*qz-2*qx*qw],[2*qx*qz-2*qy*qw,2*qy*qz2*qx*qw,1-2*qx*qx-2*qy*qy],])defmain():images_txtPath(scene/sparse_txt/images.txt)linesimages_txt.read_text(encodingutf-8).splitlines()centers[]names[]i0whileilen(lines):linelines[i].strip()ifnotlineorline.startswith(#):i1continuepartsline.split()qvecnp.array([float(x)forxinparts[1:5]])tvecnp.array([float(x)forxinparts[5:8]])nameparts[9]Rqvec_to_rotmat(qvec)C-R.T tvec centers.append(C)names.append(name)i2centersnp.array(centers)print(registered images:,len(centers))print(center min:,centers.min(axis0))print(center max:,centers.max(axis0))print(first 5:)forname,centerinzip(names[:5],centers[:5]):print(name,center)if__name____main__:main()重点COLMAP 的 tvec 不是相机中心。 相机中心 C -R^T t。19. 3DGS 输出文件和 PLY 结构训练后的核心模型通常是point_cloud.ply里面保存的是高斯参数不是普通点云。常见字段可能包括x, y, z nx, ny, nz f_dc_* f_rest_* opacity scale_* rot_*含义x, y, z高斯中心。f_dc_*SH 的 DC 颜色分量。f_rest_*更高阶 SH 系数。opacity不透明度参数。scale_*尺度参数。rot_*旋转参数常用四元数。不要把它简单当作只有 RGB 的普通点云。20. 常用训练参数和调参经验不同实现参数可能略有差异以下以官方实现思路为主。20.1 iterations训练迭代次数。常见--iterations30000小场景可少一些大场景或复杂纹理可更多。20.2 resolution控制训练图像分辨率。如果显存不足python train.py-sscene-moutput/scene-r2或使用更低分辨率图片。20.3 densification 相关影响高斯增长。现象高斯太少细节不够。高斯太多显存大、渲染慢、可能噪声多。20.4 opacity reset训练中周期性重置 opacity有助于控制高斯透明度和 densification。如果不了解原理初学不建议乱改。20.5 SH degreeSH 阶数越高视角相关颜色表达越强。但过高也可能增加训练难度和过拟合。20.6 白背景如果数据是白底物体可能需要设置白背景相关选项具体看实现--white_background否则背景颜色假设不一致会影响训练。21. 常见问题排查21.1 convert.py 失败检查COLMAP 是否安装并在 PATH 中。ImageMagick 是否可用。图片是否放在scene/input。路径是否有特殊字符。COLMAP GPU 是否可用。处理手动运行 COLMAP 看具体错误。关闭 SIFT GPU。删除模糊或异常图片。换英文路径。21.2 训练 CUDA OOM处理降低图像分辨率。使用-r 2或更低分辨率。减少训练图片数量。调整 densification 参数。使用显存更大的 GPU。21.3 结果一团糊优先检查COLMAP 位姿是否正确。注册图片数量是否足够。图像是否去畸变。图片和 sparse 模型是否对应。训练图像是否模糊。相机是否有大幅曝光变化。21.4 漂浮物很多可能原因动态物体。反光、玻璃、水面。COLMAP 点云噪声。视角覆盖不足。densification 产生噪声高斯。处理清理输入图片。删除动态物体严重图片。增加视角覆盖。调整 pruning/densification。21.5 新视角露洞原因训练视角没有覆盖该区域。高斯不够密。背面没有被拍到。场景被遮挡区域没有观测。解决补拍视角。增加数据覆盖。延长训练或调整 densification。21.6 颜色闪烁或高光异常可能原因曝光不一致。白平衡变化。反光材质。SH 表达或训练不稳定。处理固定曝光和白平衡采集。清洗异常图片。尝试降低复杂反光区域影响。21.7 相机路径方向反了可能原因W2C 和 C2W 混用。OpenCV/OpenGL 坐标系转换错误。自定义渲染轨迹矩阵方向错。检查COLMAP qvec/tvec 是 world-to-camera。 如果需要 camera-to-world要取逆。22. 进阶方向3DGS 之后有很多扩展方向动态 3DGS处理动态场景。4D Gaussian Splatting加入时间维度。可编辑 3DGS删除、分割、语义编辑。压缩 3DGS降低模型体积。SLAM 3DGS在线建图和渲染。COLMAP-free 3DGS弱化或移除 COLMAP 依赖。Mesh extraction从高斯提取表面。语义 3DGS给高斯附加语义标签。Avatar / human Gaussian人体和头像建模。学习路线建议先跑通官方静态场景 - 理解 COLMAP 和相机参数 - 理解 Gaussian 参数和渲染 - 学习动态/压缩/语义等扩展23. 面试常问问题23.1 3DGS 是什么3DGS 是一种显式三维场景表示方法用大量可优化的 3D 高斯椭球表示场景并通过高效 splatting 渲染实现高质量实时新视角合成。23.2 3DGS 和 NeRF 有什么区别NeRF 使用隐式 MLP 表示辐射场渲染时沿射线采样并查询网络3DGS 使用显式 3D Gaussians渲染时把高斯投影到屏幕并 alpha blending因此训练和渲染通常更快。23.3 一个 3D Gaussian 包含哪些参数通常包含中心位置、尺度、旋转、透明度和颜色特征。颜色常用 spherical harmonics 表示以支持视角相关颜色。23.4 为什么 3DGS 使用各向异性高斯各向异性高斯可以形成不同方向和尺度的椭球更容易贴合表面、边缘和细长结构表达能力比球状高斯更强。23.5 3DGS 中 covariance 如何保证正定通常不直接优化任意协方差矩阵而是用 scale 和 rotation 构造协方差例如Σ R S S^T R^T这样可以保证正定。23.6 3DGS 渲染流程是什么给定相机参数后把 3D 高斯变换到相机视角投影成屏幕空间 2D splats按 tile 分组并按深度进行 alpha compositing最终得到渲染图像。23.7 3DGS 为什么渲染快因为它是显式表示不需要 MLP 查询也不需要沿每条 ray 大量采样它使用 GPU 友好的 splatting/rasterization 流程只处理对当前视角有贡献的高斯。23.8 3DGS 为什么需要 COLMAPCOLMAP 提供相机内外参和稀疏点云。相机参数用于训练视角监督稀疏点云用于初始化高斯位置。23.9 3DGS 一定需要 COLMAP 吗不一定。只要能提供准确相机内外参和合理初始点云也可以来自 SLAM、仿真、深度相机或其他 SfM 系统。但 COLMAP 是最常见流程。23.10 相机内参在 3DGS 中有什么作用内参决定高斯从相机坐标投影到像素平面的方式包括焦距和主点。内参错误会导致投影错位和训练质量下降。23.11 相机外参在 3DGS 中有什么作用外参决定每张训练图像的相机位置和朝向。训练时会按对应外参渲染图像并与真实图像计算损失。23.12 3DGS 是否优化相机位姿原始常见流程通常固定 COLMAP 相机位姿主要优化高斯参数。一些扩展方法会联合优化相机位姿。23.13 Densification 是什么Densification 是训练过程中根据梯度、误差或尺度等信号增加高斯数量的过程用于补充细节和提高表达能力。23.14 Pruning 是什么Pruning 是删除无效或低贡献高斯的过程例如 opacity 太低、尺寸异常或贡献很小的高斯以减少噪声和模型冗余。23.15 3DGS 中 opacity 有什么作用opacity 控制高斯的不透明度。渲染时多个高斯会按透明度和深度进行 alpha blending。23.16 Spherical Harmonics 在 3DGS 中有什么用SH 用于表示视角相关颜色让同一个高斯在不同观察方向下能呈现不同颜色或亮度增强高光和反射等外观表达。23.17 3DGS 的输出 PLY 是普通点云吗不是。3DGS 的 PLY 保存的是高斯参数包括位置、SH 颜色、opacity、scale、rotation 等不只是普通 xyz/rgb 点云。23.18 3DGS 常见伪影有哪些常见伪影包括漂浮物、模糊、露洞、颜色闪烁、视角错位、边缘破碎和透明云雾状噪声。23.19 3DGS 结果差优先排查什么优先排查 COLMAP 位姿质量、注册图片数量、稀疏点云覆盖、图像是否去畸变、图片和相机参数是否对应、输入图片是否模糊或动态物体过多。23.20 3DGS 和 Mesh 哪个更适合工程部署取决于任务。3DGS 更适合真实感新视角渲染Mesh 更适合物理交互、碰撞检测、传统引擎资产和几何编辑。23.21 3DGS 如何处理动态场景原始 3DGS 主要面向静态场景。动态场景需要扩展方法例如给高斯加入时间维度、形变场、动态分解或 4D Gaussian 表示。23.22 3DGS 为什么可能模型很大因为高质量场景可能包含数十万到数百万个高斯每个高斯又包含位置、尺度、旋转、opacity 和 SH 系数参数量较大。23.23 如何压缩 3DGS常见方法包括 pruning、量化、低阶 SH、聚类、码本、哈希编码、重要性筛选和专门的压缩高斯表示。23.24 面试中如何概括 3DGS 项目经验可以这样回答我用 3DGS 做过多视角场景的新视角合成。 流程是先采集有足够重叠的图片用 COLMAP 恢复相机内外参和稀疏点云 然后用稀疏点初始化 3D Gaussians训练时随机选择相机视角进行可微 splatting 渲染 渲染图和真实图通过 L1/SSIM 类损失优化高斯的位置、尺度、旋转、透明度和 SH 颜色。 训练过程中通过 densification 补细节通过 pruning 删除低贡献高斯。 排查质量问题时我会优先看 COLMAP 注册数量、相机轨迹、点云覆盖、去畸变和输入图片质量。24. 练习任务24.1 跑通官方仓库完成git clone --recursive conda env create train.py render.py metrics.py记录训练时间、显存占用和输出模型大小。24.2 自己采集一个小物体拍 80 到 150 张图片要求图片清晰。相邻视角有重叠。不变焦。背景有一定纹理。跑convert.py和train.py。24.3 检查 COLMAP 输出把 sparse 模型转成 txt查看cameras.txtimages.txtpoints3D.txt计算相机中心并检查轨迹是否合理。24.4 调整分辨率训练分别用原图、-r 2、-r 4训练比较训练速度。显存占用。渲染质量。模型大小。24.5 观察 densification记录不同 iteration 的 PLYiteration_7000 iteration_30000比较高斯数量、视觉效果和漂浮物。24.6 和 NeRF 做对比选择同一组图像用一个 NeRF 实现和 3DGS 分别训练比较训练时间。推理速度。新视角质量。模型大小。几何可编辑性。25. 参考资料3D Gaussian Splatting 官方项目https://github.com/graphdeco-inria/gaussian-splatting3D Gaussian Splatting 论文页面https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/论文3D Gaussian Splatting for Real-Time Radiance Field Renderinghttps://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/3d_gaussian_splatting_high.pdfCOLMAP 官方文档https://colmap.github.io/COLMAP Output Formathttps://colmap.github.io/format.htmlOpenCV 相机标定https://docs.opencv.org/4.x/dc/dbb/tutorial_py_calibration.htmlNeRF 原论文https://www.matthewtancik.com/nerfInria 介绍文章https://www.inria.fr/en/creating-stunning-real-time-3d-scenes-breakthrough-3d-gaussian-splatting