尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

RaDe-GS行进四面体网格提取完全指南:从tetra_triangulation到二分搜索精化

RaDe-GS行进四面体网格提取完全指南:从tetra_triangulation到二分搜索精化 RaDe-GS行进四面体网格提取完全指南从tetra_triangulation到二分搜索精化【免费下载链接】RaDe-GSRaDe-GS: Rasterizing Depth in Gaussian Splatting项目地址: https://gitcode.com/gh_mirrors/ra/RaDe-GSRaDe-GSRasterizing Depth in Gaussian Splatting是一个在三维高斯溅射3D Gaussian Splatting框架中直接光栅化深度的3D重建项目。它不仅能渲染高质量的新视角图像更擅长把高斯云精确地提取为三角网格——其中行进四面体Marching Tetrahedra 二分搜索精化正是它的核心几何提取管线。本指南面向新手带你从安装tetra_triangulation模块开始一步步看懂网格提取的完整流程。一、为什么 RaDe-GS 要光栅化深度传统 3DGS 只渲染颜色和累积透明度深度只是间接推出来的因此提取出的网格往往毛糙。RaDe-GS 在光栅化过程中同时输出深度、法线等几何量深度比 0.5 用期望深度否则用中值深度这让它在网格提取阶段能拿到干净、一致的深度场为后续的行进四面体提取打下基础。二、一键安装准备 tetra_triangulation 模块行进四面体提取依赖 CGAL 库和一个 C 扩展tetra_triangulation负责 Delaunay 四面体化。只需两步git clone https://gitcode.com/gh_mirrors/ra/RaDe-GS.git --recursive conda install conda-forge::cgal pip install submodules/tetra_triangulation/ --no-build-isolation 注意submodules/tetra_triangulation/是随仓库附带的子模块安装前必须装好CGAL否则编译会直接失败。三、网格提取的两条路线先选对脚本RaDe-GS 提供了两套提取脚本新手先别急着跑先搞清楚区别脚本方法适合场景输出mesh_extract.pyTSDF 体素融合Open3DDTU 等室内小场景快速出结果recon.ply、recon_post.plymesh_extract_tetrahedra.py行进四面体 二分搜索追求表面精度的通用场景recon.plymesh_extract_tnt.pyTSDF 变体Tanks and Temples 大场景recon_post.plyTSDF 路线的原理很直观渲染每个训练视角的深度图与颜色用VoxelBlockGrid把深度融合进体素网格再切出三角面片并用连通域聚类剔除漂浮碎片。而本文重点讲的行进四面体路线精度更高下面拆开细看。四、拆解行进四面体提取全流程入口在mesh_extract_tetrahedra.py文件根目录的mesh_extract_tetrahedra.py主函数marching_tetrahedra_with_binary_search分五步完成4.1 第一步为每个高斯生成包围盒顶点scene/gaussian_model.py中的get_tetra_points()会把每个 3D 高斯膨胀成一个轴对齐小盒子8 个盒角点 1 个中心点共 9 个点。盒子的尺寸取高斯缩放系数含 3D 滤波器的3 倍保证高斯椭球被盒子包住。整朵高斯云就这样变成一片密集点云。4.2 第二步CGAL 四面体化tetra_triangulation调用cpp.triangulate(points)——这正是submodules/tetra_triangulation/子模块里的 C 扩展内部用CGAL 的三维 Delaunay 三角化把点云剖分成互不重叠的四面体单元cells并保存为cells.pt。这一步只跑一次之后可复用缓存。4.3 第三步多视角 α 积分生成 SDF 场evaluage_alpha()用gaussian_renderer/__init__.py中的integrate()对所有训练视角做光线积分取每个点上跨视角的最小累积透明度作为权重再换算成有符号距离场sdf 0.5 − α。α 越接近 1越不透明SDF 越负表示在物体内部。多视角取最小值可以显著压掉单视角的噪声。4.4 第四步查表三角化 二分搜索精化核心实现在utils/tetmesh.py的marching_tetrahedra()查表法根据四面体 4 个顶点的 SDF 符号组合16 种情况查预定义的triangle_table直接在边上插值出交点、连成三角形一步生成初始网格二分搜索精化初始交点只是夹在两个符号相反的点之间的近似。脚本随后执行8 轮二分每轮取左右两端点的中点重新求 SDF按符号保留正确一侧区间宽度以 1/2 指数级收缩。8 轮之后交点定位精度提升 256 倍表面明显更贴合真实几何。4.5 第五步尺度过滤与导出最后用distance scale的掩码剔除落在高斯尺度之外的孤立顶点与面片清漂浮物导出recon.ply。五、新手必读的常用参数与技巧显存不够行进四面体阶段内存开销大加--move_cpu参数把计算挪到 CPU速度变慢但更稳指定迭代数--iteration可从某个 checkpoint 提取不必等到训练结束TSDF 路线去噪mesh_extract.py的--num_cluster 1会按连通域只保留最大的聚类自动滤掉碎面片白背景DTU 等数据集建议配合白背景训练深度场边界更干净。六、提取完网格怎么评估提取只是上半场验证质量才是关键# DTU 数据集 python evaluate_dtu_mesh.py -m output_dir # Tanks and Temples 数据集 python eval_tnt/run.py --dataset-dir gt_tnt --traj-path sfm_log \ --ply-path output_dir/recon_post.ply --out-dir output_dir/mesh评估脚本会自动对齐、计算 Chamfer 距离等几何指标。想肉眼检查的话可以直接用仓库内置的 SIBR 查看器加载recon.ply七、常见问题速查 FAQ❓编译 tetra_triangulation 报错找不到 CGAL→ 先执行conda install conda-forge::cgal确认环境激活后再 pip 安装❓提取的网格有大量漂浮小碎片→ 换 TSDF 路线并设置--num_cluster 1或检查训练是否充分❓cells.pt 可以复用吗→ 可以。点云不变时三角化结果一致脚本会将其缓存在输出目录。小结RaDe-GS 的网格提取 高斯膨胀成包围盒 → CGAL 四面体化 → 多视角 α 积分得 SDF → 查表三角化 → 8 轮二分精化 → 尺度过滤。理解了这条流水线你就能把它迁移到任何隐式场 高斯表示的重建任务中。【免费下载链接】RaDe-GSRaDe-GS: Rasterizing Depth in Gaussian Splatting项目地址: https://gitcode.com/gh_mirrors/ra/RaDe-GS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表