【三维重建】Pixel-GS:三维高斯泼溅的像素感知的梯度密度控制(去除浮点,提升精度)

项目:https://pixelgs.github.io/
标题:Pixel-GS: Density Control with Pixel-aware Gradient for 3D Gaussian Splatting
来源:香港大学;腾讯AI Lab



提示:关注B站【方矩实验室】,查看视频讲解

摘要

  三维高斯溅射(3DGS)在提高实时渲染性能的同时,展示了令人印象深刻的新视图合成性能。然而,它的有效性在很大程度上依赖于初始点云的质量,导致在初始化点不足的区域出现模糊和针状伪影( needle-like artifacts)。这个问题主要是由于点云的增长条件,它只考虑了可观测视点的splats的平均梯度大小,因此对于许多只覆盖在边界内的可观测的大高斯值无法增长。

  为了解决这个问题,Pixel-GS将被覆盖的像素数,视为动态平均不同视角的梯度的权重,从而促进大高斯分布的增长。初始化点不足的区域内的点可以更有效地增长,从而导致更准确和详细的重建。此外,提出一策略,根据到相机的距离来缩放梯度场,以抑制相机附近floater的生长。实验在Mip-NeRF 360和Tanks & Temples。

  


提示:以下是本篇文章正文内容,下面案例可供参考

一、前言

  新视点合成(NVS)是计算机视觉和图形学中的一个基本问题。近年来,三维高斯溅射(3DGS)[21]因其基于点的三维场景的明确表示和实时渲染性能而受到越来越多的关注。

  3DGS利用运动结构(SfM)过程产生的稀疏点仔细初始化点云,并提出了一种自适应密度控制机制,在优化过程中对点进行分割或克隆。 然而,这种机制在很大程度上依赖于初始点云的质量,不能有效地在初始点云稀疏的区域增长点,导致合成图像中出现模糊或针状伪影。在实际应用中,SfM的初始点云不可避免地存在重复纹理区域的点不足,观测量很少。如图1的第一列和第二列所示,RGB图像中的模糊区域与初始化点很少的区域对齐,而3DGS无法在这些区域中生成足够的点

在这里插入图片描述

  在本质上,这个问题主要归因于何时分裂或克隆一个点的条件。3DGS通过检查 Normalized Device Coordinates(NDC)中的点的平均梯度大小是否大于一个阈值来决定它。梯度的大小在不同的视点上被平均,阈值是固定的。大高斯分布通常在许多视点中可见,其投影区域的大小在不同视图中差异显著,导致梯度计算所涉及的像素数量差异显著。根据高斯分布的数学形式,在高斯投影中心附近的几个像素,比远离中心的像素对梯度的贡献要大得多。 较大的高斯分布通常有许多视点,其中投影中心点附近的区域不在屏幕空间内,从而降低了平均梯度,使它们难以分割或克隆。这个问题不能仅仅通过降低阈值来解决,因为它更有可能鼓励 growing points in areas with sufficient points,,如图1的第三列所示,仍然在点不足的区域留下模糊的伪影。

  在本文中,我们提出从像素的角度来计算点的平均梯度大小。在计算高斯分布的平均梯度幅度时,我们考虑了每个视图中高斯分布覆盖的像素数,将视图的平均替换为视图的加权平均。这背后的动机是放大大高斯的梯度贡献,同时保持分裂或克隆小高斯的条件不变,这样我们就可以有效地在具有大高斯的区域中增长点。同时,对于小高斯分布,由于不同视点间覆盖像素数的变化最小,加权平均对最终梯度的影响很小。此外,Pixel-GS根据点的深度值来放大NDC空间中的梯度场,从而抑制摄像机附近“飞蚊”的生长

-1.分析了3DGS中模糊伪影的原因,并提出从像素的角度优化点的数量,从而在初始点不足的区域有效地增长点。

2.提出了一种简单而有效的梯度缩放策略,来抑制相机附近的“folater”伪影。

二、相关工作

1.新视图合成

   新视角合成的任务是指从不同于原始输入视角的角度生成图像的过程。最近,NeRF [35]通过使用神经网络来近似辐射场和使用体积渲染[10,27,32,33]技术来进行渲染,在新的视图合成方面取得了令人印象深刻的结果。这些方法使用隐式函数(如MLPs [2,3,35]、基于特征网格的表示[6,13,29,37,46]或基于特征点的表示[21,50])来拟合场景的辐射场,并利用渲染公式进行渲染。由于需要通过MLP处理沿着射线的每个采样点以获得其密度和颜色,在体渲染过程中,这些工作明显受到低渲染速度的影响。随后的方法[15,41,42,56,58]将预先训练好的NeRF细化为稀疏表示,从而实现了NeRF的实时渲染。虽然一些先进的场景表示[2-4、6、7、13、16、25、29、37、46]提出了改进网络的一个或多个方面,如训练成本、渲染结果,渲染速度,3D高斯飞溅(3DGS)[21]仍然吸引越来越多的关注由于其显式表示,高保真结果,和实时渲染速度。最近,NeRF [35]通过使用神经网络来近似辐射场和使用体积渲染[10,27,32,33]技术来进行渲染,在新的视图合成方面取得了令人印象深刻的结果。这些方法使用隐式函数(如MLPs [2,3,35]、基于特征网格的表示[6,13,29,37,46]或基于特征点的表示[21,50])来拟合场景的辐射场,并利用渲染公式进行渲染。由于需要通过MLP处理沿着射线的每个采样点以获得其密度和颜色,在体渲染过程中,这些工作明显受到低渲染速度的影响。随后的方法[15,41,42,56,58]将预先训练好的NeRF细化为稀疏表示,从而实现了NeRF的实时渲染。虽然一些先进的场景表示[2-4、6、7、13、16、25、29、37、46]提出了改进网络的一个或多个方面,如训练成本、渲染结果,渲染速度,3D高斯飞溅(3DGS)[21]仍然吸引越来越多的关注由于其显式表示,高保真结果,和实时渲染速度

2.基于点的辐射场

   基于点的表示(如点云)通常使用固定大小的、非结构化的点来表示场景,并使用gpu[5,43,45]进行栅格化渲染。虽然这是解决拓扑变化的一个简单而方便的解决方案,但它通常会导致孔洞或异常值,从而导致渲染过程中的伪影。为了缓解不连续的问题,研究人员提出了基于点的可微渲染,利用点来建模局部域[14,18,21,28,48,50,57]。在这些方法中,[1,23]使用神经网络来表示点特征,并利用二维CNNs进行渲染。Point-NeRF [50]使用神经三维点对三维场景进行建模,并提出了修剪和生长点的策略,以修复基于点的辐射场中的常见孔和异常值。3DGS [21]使用光栅格化方法进行渲染,这大大加快了渲染过程。它从SfM的稀疏点云初始化开始,分别使用三维高斯分布和球谐函数拟合每个点的影响区域和颜色特征。为了增强这种基于点的空间函数的表征能力,3DGS引入了一种基于每个点的NDC(归一化设备坐标)坐标和不透明度梯度的密度控制机制,管理点云的增长和消除。最近[8]在3DGS上的工作,通过结合深度和法线改进了点云增长过程,提高了低纹理区域的拟合能力。相比之下,我们的Pixel-GS不需要任何额外的先验或信息资源,例如深度和法线,并且可以直接在初始化点不足的区域增长点,减少模糊和针状伪影

3.Floater 的消除

  大多数辐射场场景表示方法都遇到伪影,主要出现在摄像机附近,稀疏输入视图更严重。一些论文[9,44]通过引入深度先验,解决漂浮物的问题。NeRFshop [19]提出了一种删除飞蚊蚊的编辑方法。Mip-NeRF 360 [3]通过增加一个沿每个射线的密度分布是单峰的先验,引入了失真损失,有效地减少了相机附近的floaterNeRF in the Dark[34]提出权重的 a variance loss以减少floater。FreeNeRF [52]为接近相机的点的密度引入了一个惩罚项,以减少相机附近的漂浮物。大多数这些方法抑制飞蚊通过将先验通过损失或编辑方法,而 “Floaters No More”[40]试图探索发生飞蚊出现的根本原因,指出飞蚊主要是因为,两个区域相同的 volume 和shape,参与计算的像素数量,与每个区域的相机的距离平方的倒数成正比。在相同的学习速率下,靠近摄像机的区域迅速完成优化,优化后,阻止其后面区域的优化,从而增加了在摄像机附近漂浮的可能性 Pixel-GS则根据到相机的距离来缩放梯度场

三、方法

首先回顾了3DGS中“自适应密度控制”的点云生长条件。然后,我们提出了一种从象素的角度计算点云增长条件下的平均梯度幅度的方法,显著提高了初始点不足区域的重建能力。

在这里插入图片描述

3.1 GS的自适应密度控制

  在三维高斯溅射中,视点 k k k下的高斯 i i i会生成一个二维协方差矩阵 Σ Σ Σ,并确定相应的影响范围半径 R k i R^i_k Rki<

### 配置 VTK 中高斯网格化参数 对于配置 VTK 中的高斯 (Gaussian Splatting) 网格化参数,主要涉及的是创建项目以及链接必要的库文件。具体来说,在 `CMakeLists.txt` 文件中的配置如下: ```cmake cmake_minimum_required(VERSION 2.6) PROJECT(GaussianSplat) FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE}) ADD_EXECUTABLE(GaussianSplat GaussianSplat.cxx) TARGET_LINK_LIBRARIES(GaussianSplat ${VTK_LIBRARIES}) ``` 上述代码片段用于初始化 CMake 最低版本需求并定义项目名称为 `GaussianSplat`[^1]。 针对具体的高斯操作及其参数设定,通常是在源码内部完成。由于 VTK 官方文档并没有直接提供关于 “gaussian splatting”的特定函数接口说明,因此这可能涉及到自定义算法或者第三方扩展模块的应用。如果要调整与高斯有关的具体属性(比如点云密度、颜色映射等),则需查阅所使用的具体实现方式的相关资料或API手册。 为了更好地理解如何处理此类问题,可以考虑以下几个方面来探索解决方案: - 查看是否有适用于目标平台上的现成插件或工具包支持该功能; - 参考社区贡献者分享的经验贴和技术博客获取灵感; - 如果基于某种特定框架开发,则深入研究其官方指南中是否存在间接提及的内容。 #### 关于平滑Mesh的方法 值得注意的是,在 VTK 中存在多种平滑 Mesh 的技术方案可供选择,例如采用 `vtkWindowedSincPolyDataFilter` 进行高质量表面重建和平滑处理[^2]。虽然这不是直接关联到高斯的操作,但在某些情况下可能会作为预处理步骤被应用以优化最终效果。 #### GPU 加速的支持情况 考虑到性能因素,了解 VTK 对 GPU 渲染的支持也是重要的考量之一。通过实例化像 `vtkWin32OpenGLRenderWindow` 和 `vtkOpenGLRenderer` 类的对象能够开启硬件加速渲染路径[^3]。然而,这种做法更多地影响到了可视化阶段而非数据结构本身的变化过程。 #### Mask 转换为 Mesh 的实践案例 最后,当涉及到将图像掩模转换为三维模型时,也有相应的 Python 实践例子展示了从二维二值图生成三角形面片的过程[^4]。尽管这些内容并非直接解决当前提问的核心议题,但对于构建完整的图形流水线而言仍然是非常有价值的参考资料。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值