赞
踩
感谢B站意の茗的讲解。
论文地址:https://arxiv.org/abs/2308.04079
项目主页:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/
一维高斯分布的概率密度函数:x服从均值μ方差σ2的高斯分布
扩展到三维高斯分布的概率密度函数:假设a,b,c均服从0,1正态分布,且相互独立
对于一般的情况(注意粗体是向量,斜体是标量) 给出一个3*1向量x=[x,y,z]T,其中想,y,z可能并不是独立同分布,因此做线性变换。
把均值不一定为0的,方差不一定为1(不满足上述N(0,1))的[x,y,z]T,变换到均值为μ方差为1的[a,b,c]T。 矩阵表示:
其中,均值向量的E(x)为x的均值。 (x-μ)表示x,y,z减去各自的均值,即将数据分布中心化。
变换矩阵A对[x,y,z]进行线性组合,让[x,y,z]变成[a,b,c] 变换后带入到上式p(v)中,即
转化为x的概率密度函数 两边积分
dv换成dx:求雅克比矩阵,把dv里的v换成包含x的表达式
so,向量x的概率密度函数
1维高斯用均值和方差表示->多维高斯用均值向量(μ)和协方差矩阵表示。
把变换矩阵A转化成协方差矩阵(对称矩阵,能进行特征值分解)。
矩阵U的每一列都是相互正交的特征向量,单位向量。Λ矩阵对角线元素是协方差矩阵的特征值(矩阵论内容)。
一组正交基乘一个对角阵,构成线性变换
变换矩阵A=UΛ{1/2},协方差矩阵Λ=AT(UU^T=I)
完整的3D高斯概率密度函数(椭球,形状有Σ决定)
从CG角度,梳理了基于点的渲染方法
与NeRF相关的两个工作:
需要选择一种图元能够在拥有场景表达能力的同时可微,而且显式地支持快速渲染。3D高斯点云里的参数可以再迭代优化的过程中更新,并且能够容易地用splat的方法投影到2D图像,做很快的α混合(渲染)。
其他人构建辐射场的方法:把每个点视为带方向的小平面,但方向需要准确的表面法向量信息,难以从稀疏的sfm模型中得到精确地法向量。(3DGS不需要法向量)
相较于前面推导的表达式:
协方差矩阵的物理含义:为什么这个矩阵能够控制3DGS的形状(下面例子是二维的,实际是三维)
A为线性变换,把任意一个分布变换到均值μ方差1的范围内,如图所示(二维分布,先y方向压缩,再绕原点旋转一定角度)
因此矩阵A构造:变换矩阵A=旋转矩阵R*缩放(尺度变换)矩阵S
优化:在迭代优化过程中,优化矩阵A的内容,即可改变高斯椭球的形状、大小、方向等几何外观(点里存储的数据),从而使它在Splatting的时候投影出正确的效果。
旋转矩阵的优化:不适合直接让3*3的旋转矩阵参与优化,因此用四元数参与优化并转化。将参数从9个降低到4个,而且能保持协方差矩阵的半正定性质,同时四元数方便插值。
求导:如何让矩阵A对尺度s和四元数q求偏导?论文附录有推导过程。
渲染:椭球怎样投影成平面的图像?CG有深入研究,对协方差矩阵做变换即可,文中引用的01年文献有说明。
小实验:用3DGS这种紧凑的表达方式,确实能在优化之后拟合复杂的几何细节。
渲染了一张图像后把3DGS Shrink,收缩到原来的60%,细节仍然在(但也可能是点云的功劳)。
总结流程:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。