从‘抛雪球’到3D重建一文读懂3D Gaussian Splatting背后的图形学原理在计算机图形学领域实时渲染高质量三维场景一直是研究者们追求的目标。传统方法如多边形网格虽能高效渲染但在处理复杂几何和材质时往往力不从心而基于神经辐射场NeRF的技术虽能生成逼真图像其渲染速度却难以满足实时需求。3D Gaussian Splatting技术的出现巧妙地在渲染质量与速度之间找到了平衡点——它用数万个可学习的3D高斯椭球显式表达场景通过GPU加速的光栅化 pipeline 实现实时渲染成为当前最前沿的实时神经渲染方案之一。1. 三维场景表达的演进之路1.1 从显式到隐式表示三维场景的数字化表达经历了从显式到隐式再到混合表示的演进过程多边形网格显式传统图形学的基石用顶点、边和面片定义物体表面。其优势在于硬件加速成熟OpenGL/DirectX实时渲染性能优异易于编辑和动画控制但面对复杂几何如毛发、烟雾时建模和存储成本急剧上升。神经辐射场隐式NeRF开创性地用神经网络参数化场景的辐射场def nerf_forward(x, d): # x: 3D位置, d: 观察方向 sigma density_net(x) # 体密度 rgb color_net(x, d) # 视角相关颜色 return rgb, sigma虽然能重建高质量场景但存在明显瓶颈每次渲染需采样数百个点进行体积积分MLP查询计算密集难以实时运行30秒/帧1.2 3D高斯表示的核心思想3D Gaussian Splatting提出了一种混合表示范式——用可优化的3D高斯分布显式表达场景特征传统NeRF3D Gaussian Splatting场景表示隐式MLP显式高斯集合渲染方式体渲染光栅化存储介质神经网络权重显式属性参数典型速度分钟级/帧实时(100fps)几何编辑困难直接操作高斯每个3D高斯由以下参数定义 $$ \mathcal{G} (\mu\in\mathbb{R}^3, \Sigma\in\mathbb{R}^{3×3}, \alpha\in[0,1], \text{SH系数}) $$ 其中协方差矩阵通过旋转矩阵$R$和缩放矩阵$S$分解为$\SigmaRS(RS)^T$。2. 关键技术解析从数学到实现2.1 高斯投影的几何变换将3D高斯投影到2D图像平面需要经过精心设计的变换链世界坐标→相机坐标通过外参矩阵$[R|t]$实现刚体变换 $$ x_c Rx_w t \ \Sigma_c R\Sigma_w R^T $$透视投影的线性近似相机坐标到像素坐标的投影是非线性的z \begin{bmatrix} f_x\frac{x}{z} c_x \\ f_y\frac{y}{z} c_y \end{bmatrix}在点$\mu_c$处进行一阶泰勒展开得到雅可比矩阵 $$ J \left.\frac{\partial z}{\partial x_c}\right|_{\mu_c} \begin{bmatrix} \frac{f_x}{z} 0 -\frac{f_x x}{z^2} \ 0 \frac{f_y}{z} -\frac{f_y y}{z^2} \end{bmatrix} $$最终投影协方差投影后的2D高斯协方差为 $$ \Sigma J\Sigma_c J^T $$注意实际实现时会忽略第三行雅可比因为深度信息已包含在渲染排序中。2.2 可微分光栅化流程3DGS的渲染过程与传统图形学管线有显著差异分块处理将图像划分为16×16的tile每个tile独立处理for (auto tile : tiles) { // 1. 视锥体裁剪 auto visible_gaussians frustum_culling(gaussians); // 2. 按深度排序 sort_by_depth(visible_gaussians); // 3. Alpha合成 for (auto g : visible_gaussians) { splat_to_pixels(g, tile); } }α混合的数学本质从近到远叠加高斯的过程实际上是按透明度加权 $$ C \sum_{i\in N}c_i\alpha_i\prod_{j1}^{i-1}(1-\alpha_j) $$ 这与NeRF的体渲染公式在数学形式上完全一致但计算路径相反。2.3 自适应密度控制3DGS通过梯度分析动态调整高斯分布情况处理方式判断标准欠重构(under)克隆高斯梯度模值大且尺度小过重构(over)分裂高斯梯度模值大且尺度大冗余移除高斯透明度阈值或尺度阈值分裂操作的具体实现def split_gaussian(gaussian): # 沿最大方差方向分裂 max_eig_idx np.argmax(gaussian.scales) new_scale gaussian.scales.copy() new_scale[max_eig_idx] / 2 # 生成两个新高斯 g1 Gaussian(gaussian.pos 0.1*eig_vecs[max_eig_idx], new_scale, ...) g2 Gaussian(gaussian.pos - 0.1*eig_vecs[max_eig_idx], new_scale, ...) return g1, g23. 实战从SFM到实时渲染3.1 数据准备与初始化标准处理流程如下COLMAP重建获取稀疏点云与相机参数colmap automatic_reconstructor \ --image_path ./images \ --workspace_path ./sparse高斯初始化每个SFM点生成一个高斯位置SFM点坐标尺度最近邻距离的均值旋转随机初始化透明度0.5颜色对应图像像素均值参数优化配置典型训练参数设置参数值作用lr_position0.00016位置学习率lr_scale0.005尺度学习率lr_rotation0.001旋转学习率lr_sh0.0025球谐系数学习率iterations30k总迭代次数3.2 训练技巧与调优实际训练中需要注意学习率调度采用指数衰减策略def get_lr(iter, initial_lr): return initial_lr * (0.33 ** (iter / 10000))损失函数平衡L1损失与D-SSIM损失的权重需要调整\mathcal{L} 0.8 \cdot \mathcal{L}_1 0.2 \cdot \mathcal{L}_{D-SSIM}可视化监控实时查看以下指标高斯数量增长曲线平均透明度变化重建PSNR指标4. 技术边界与未来方向4.1 当前技术局限尽管3DGS表现出色仍存在以下挑战内存消耗复杂场景需要数百万高斯显存占用可达10GB解决方案探索高斯压缩参数量化动态加载机制动态场景处理现有方法针对静态场景设计改进思路# 为每个高斯添加时间相关参数 class DynamicGaussian: def __init__(self): self.position_net TinyMLP() # 预测轨迹 self.time_embedding torch.nn.Embedding(100, 4)材质与光照分离目前球谐系数耦合了材质和光照信息可能路径引入物理反射模型分离漫反射与高光分量4.2 行业应用前景3DGS已在多个领域展现潜力虚拟制作电影级实时场景预相比传统NeRF提速1000倍AR/VR手机端实现毫秒级3D重建graph LR A[手机拍摄] -- B[云端3DGS重建] B -- C[200KB高斯参数] C -- D[终端实时渲染]自动驾驶激光雷达与视觉融合的街景重建传感器融合方式优势相机提供颜色与细节高纹理质量LiDAR精准几何初始化改善深度估计在移动端部署时可采用高斯简化策略保留前10%权重最大的高斯其余用低分辨率备份实现200fps的实时渲染。
从‘抛雪球’到3D重建:一文读懂3D Gaussian Splatting背后的图形学原理(含α blending与协方差矩阵推导)
发布时间:2026/6/2 22:27:24
从‘抛雪球’到3D重建一文读懂3D Gaussian Splatting背后的图形学原理在计算机图形学领域实时渲染高质量三维场景一直是研究者们追求的目标。传统方法如多边形网格虽能高效渲染但在处理复杂几何和材质时往往力不从心而基于神经辐射场NeRF的技术虽能生成逼真图像其渲染速度却难以满足实时需求。3D Gaussian Splatting技术的出现巧妙地在渲染质量与速度之间找到了平衡点——它用数万个可学习的3D高斯椭球显式表达场景通过GPU加速的光栅化 pipeline 实现实时渲染成为当前最前沿的实时神经渲染方案之一。1. 三维场景表达的演进之路1.1 从显式到隐式表示三维场景的数字化表达经历了从显式到隐式再到混合表示的演进过程多边形网格显式传统图形学的基石用顶点、边和面片定义物体表面。其优势在于硬件加速成熟OpenGL/DirectX实时渲染性能优异易于编辑和动画控制但面对复杂几何如毛发、烟雾时建模和存储成本急剧上升。神经辐射场隐式NeRF开创性地用神经网络参数化场景的辐射场def nerf_forward(x, d): # x: 3D位置, d: 观察方向 sigma density_net(x) # 体密度 rgb color_net(x, d) # 视角相关颜色 return rgb, sigma虽然能重建高质量场景但存在明显瓶颈每次渲染需采样数百个点进行体积积分MLP查询计算密集难以实时运行30秒/帧1.2 3D高斯表示的核心思想3D Gaussian Splatting提出了一种混合表示范式——用可优化的3D高斯分布显式表达场景特征传统NeRF3D Gaussian Splatting场景表示隐式MLP显式高斯集合渲染方式体渲染光栅化存储介质神经网络权重显式属性参数典型速度分钟级/帧实时(100fps)几何编辑困难直接操作高斯每个3D高斯由以下参数定义 $$ \mathcal{G} (\mu\in\mathbb{R}^3, \Sigma\in\mathbb{R}^{3×3}, \alpha\in[0,1], \text{SH系数}) $$ 其中协方差矩阵通过旋转矩阵$R$和缩放矩阵$S$分解为$\SigmaRS(RS)^T$。2. 关键技术解析从数学到实现2.1 高斯投影的几何变换将3D高斯投影到2D图像平面需要经过精心设计的变换链世界坐标→相机坐标通过外参矩阵$[R|t]$实现刚体变换 $$ x_c Rx_w t \ \Sigma_c R\Sigma_w R^T $$透视投影的线性近似相机坐标到像素坐标的投影是非线性的z \begin{bmatrix} f_x\frac{x}{z} c_x \\ f_y\frac{y}{z} c_y \end{bmatrix}在点$\mu_c$处进行一阶泰勒展开得到雅可比矩阵 $$ J \left.\frac{\partial z}{\partial x_c}\right|_{\mu_c} \begin{bmatrix} \frac{f_x}{z} 0 -\frac{f_x x}{z^2} \ 0 \frac{f_y}{z} -\frac{f_y y}{z^2} \end{bmatrix} $$最终投影协方差投影后的2D高斯协方差为 $$ \Sigma J\Sigma_c J^T $$注意实际实现时会忽略第三行雅可比因为深度信息已包含在渲染排序中。2.2 可微分光栅化流程3DGS的渲染过程与传统图形学管线有显著差异分块处理将图像划分为16×16的tile每个tile独立处理for (auto tile : tiles) { // 1. 视锥体裁剪 auto visible_gaussians frustum_culling(gaussians); // 2. 按深度排序 sort_by_depth(visible_gaussians); // 3. Alpha合成 for (auto g : visible_gaussians) { splat_to_pixels(g, tile); } }α混合的数学本质从近到远叠加高斯的过程实际上是按透明度加权 $$ C \sum_{i\in N}c_i\alpha_i\prod_{j1}^{i-1}(1-\alpha_j) $$ 这与NeRF的体渲染公式在数学形式上完全一致但计算路径相反。2.3 自适应密度控制3DGS通过梯度分析动态调整高斯分布情况处理方式判断标准欠重构(under)克隆高斯梯度模值大且尺度小过重构(over)分裂高斯梯度模值大且尺度大冗余移除高斯透明度阈值或尺度阈值分裂操作的具体实现def split_gaussian(gaussian): # 沿最大方差方向分裂 max_eig_idx np.argmax(gaussian.scales) new_scale gaussian.scales.copy() new_scale[max_eig_idx] / 2 # 生成两个新高斯 g1 Gaussian(gaussian.pos 0.1*eig_vecs[max_eig_idx], new_scale, ...) g2 Gaussian(gaussian.pos - 0.1*eig_vecs[max_eig_idx], new_scale, ...) return g1, g23. 实战从SFM到实时渲染3.1 数据准备与初始化标准处理流程如下COLMAP重建获取稀疏点云与相机参数colmap automatic_reconstructor \ --image_path ./images \ --workspace_path ./sparse高斯初始化每个SFM点生成一个高斯位置SFM点坐标尺度最近邻距离的均值旋转随机初始化透明度0.5颜色对应图像像素均值参数优化配置典型训练参数设置参数值作用lr_position0.00016位置学习率lr_scale0.005尺度学习率lr_rotation0.001旋转学习率lr_sh0.0025球谐系数学习率iterations30k总迭代次数3.2 训练技巧与调优实际训练中需要注意学习率调度采用指数衰减策略def get_lr(iter, initial_lr): return initial_lr * (0.33 ** (iter / 10000))损失函数平衡L1损失与D-SSIM损失的权重需要调整\mathcal{L} 0.8 \cdot \mathcal{L}_1 0.2 \cdot \mathcal{L}_{D-SSIM}可视化监控实时查看以下指标高斯数量增长曲线平均透明度变化重建PSNR指标4. 技术边界与未来方向4.1 当前技术局限尽管3DGS表现出色仍存在以下挑战内存消耗复杂场景需要数百万高斯显存占用可达10GB解决方案探索高斯压缩参数量化动态加载机制动态场景处理现有方法针对静态场景设计改进思路# 为每个高斯添加时间相关参数 class DynamicGaussian: def __init__(self): self.position_net TinyMLP() # 预测轨迹 self.time_embedding torch.nn.Embedding(100, 4)材质与光照分离目前球谐系数耦合了材质和光照信息可能路径引入物理反射模型分离漫反射与高光分量4.2 行业应用前景3DGS已在多个领域展现潜力虚拟制作电影级实时场景预相比传统NeRF提速1000倍AR/VR手机端实现毫秒级3D重建graph LR A[手机拍摄] -- B[云端3DGS重建] B -- C[200KB高斯参数] C -- D[终端实时渲染]自动驾驶激光雷达与视觉融合的街景重建传感器融合方式优势相机提供颜色与细节高纹理质量LiDAR精准几何初始化改善深度估计在移动端部署时可采用高斯简化策略保留前10%权重最大的高斯其余用低分辨率备份实现200fps的实时渲染。