当前位置: 首页 > news >正文

【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之如何控制高斯椭球

【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之如何控制高斯椭球

文章目录

  • 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之如何控制高斯椭球
  • 前言
  • 仿射变换(Affine Transformation)
  • 协方差矩阵控制椭球
  • 总结


前言

在详细解析3DGS代码之前,首要任务是成功运行3DGS代码【win11下参考教程】,后续学习才有意义。本博客讲解3DGS中如何控制高斯椭球,不涉及具体的模块代码。


仿射变换(Affine Transformation)

仿射变换是一种几何变换,是对两种简单变换进行叠加:线性变换(旋转、缩放等)和平移变换。仿射变换保留了直线和平行线的关系,即将直线映射为直线,且原本平行的线仍然保持平行;但面积、距离(长度)和角度可能会发生变化。
仿射变换的数学定义 公式表示:
y = A x + b y = Ax + b y=Ax+b
在三维空间中,其中:
x x x:输入向量(原始坐标),通常是一个3维向量 [ x 1 x 2 x 3 ] \left[ {\begin{array}{c} {{x_1}}\\ {{x_2}}\\ {{x_3}} \end{array}} \right] x1x2x3
y y y:输出向量(变换后的坐标),3维向量 [ y 1 y 2 y 3 ] \left[ {\begin{array}{c} {{y_1}}\\ {{y_2}}\\ {{y_3}} \end{array}} \right] y1y2y3
A A A:线性变换,一个 3 × 3 3×3 3×3 R S RS RS矩阵;
b b b:平移变换 T T T
平移(Translation)
平移操作通常通过向量加法来表示:
[ y 1 y 2 y 3 ] = [ x 1 x 2 x 3 ] + T = [ x 1 x 2 x 3 ] + [ t 1 t 2 t 3 ] \left[ {\begin{array}{c} {{y_1}}\\ {{y_2}}\\ {{y_3}} \end{array}} \right] = \left[ {\begin{array}{c} {{x_1}}\\ {{x_2}}\\ {{x_3}} \end{array}} \right] + T = \left[ {\begin{array}{c} {{x_1}}\\ {{x_2}}\\ {{x_3}} \end{array}} \right] + \left[ {\begin{array}{c} {{t_1}}\\ {{t_2}}\\ {{t_3}} \end{array}} \right] y1y2y3 = x1x2x3 +T= x1x2x3 + t1t2t3
旋转(Rotation)
旋转可以绕任意轴进行,但最常见的是绕坐标轴 x y z xyz xyz旋转,其旋转矩阵为:
R = R x ( γ ) R y ( β ) R z ( α ) = [ cos ⁡ α cos ⁡ β cos ⁡ α sin ⁡ β sin ⁡ γ − sin ⁡ α cos ⁡ γ cos ⁡ α sin ⁡ β cos ⁡ γ + sin ⁡ α sin ⁡ γ sin ⁡ α cos ⁡ β sin ⁡ α sin ⁡ β sin ⁡ γ + cos ⁡ α cos ⁡ γ sin ⁡ α sin ⁡ β cos ⁡ γ − cos ⁡ α sin ⁡ γ − sin ⁡ β cos ⁡ β sin ⁡ γ − cos ⁡ β cos ⁡ γ ] R = {R_x}\left( \gamma \right){R_y}\left( \beta \right){R_z}\left( \alpha \right) = \left[ {\begin{array}{c} {\cos \alpha \cos \beta }&{\cos \alpha \sin \beta \sin \gamma - \sin \alpha \cos \gamma }&{\cos \alpha \sin \beta \cos \gamma + \sin \alpha \sin \gamma }\\ {\sin \alpha \cos \beta }&{\sin \alpha \sin \beta \sin \gamma + \cos \alpha \cos \gamma }&{\sin \alpha \sin \beta \cos \gamma - \cos \alpha \sin \gamma }\\ { - \sin \beta }&{\cos \beta \sin \gamma }&{ - \cos \beta \cos \gamma } \end{array}} \right] R=Rx(γ)Ry(β)Rz(α)= cosαcosβsinαcosβsinβcosαsinβsinγsinαcosγsinαsinβsinγ+cosαcosγcosβsinγcosαsinβcosγ+sinαsinγsinαsinβcosγcosαsinγcosβcosγ

[ y 1 y 2 y 3 ] = R [ x 1 x 2 x 3 ] \left[ {\begin{array}{c} {{y_1}}\\ {{y_2}}\\ {{y_3}} \end{array}} \right] = R\left[ {\begin{array}{c} {{x_1}}\\ {{x_2}}\\ {{x_3}} \end{array}} \right] y1y2y3 =R x1x2x3

缩放(Scaling)
缩放操作可以是均匀的也可以是非均匀的。均匀缩放意味着沿所有轴按相同的比例缩放,非均匀缩放则允许沿不同轴按不同的比例缩放。
S = [ s 1 0 0 0 s 2 0 0 0 s 3 ] S = \left[ {\begin{array}{c} {{{\rm{s}}_1}}&0&0\\ 0&{{{\rm{s}}_2}}&0\\ 0&0&{{{\rm{s}}_3}} \end{array}} \right] S= s1000s2000s3

[ y 1 y 2 y 3 ] = S [ x 1 x 2 x 3 ] \left[ {\begin{array}{c} {{y_1}}\\ {{y_2}}\\ {{y_3}} \end{array}} \right] = S\left[ {\begin{array}{c} {{x_1}}\\ {{x_2}}\\ {{x_3}} \end{array}} \right] y1y2y3 =S x1x2x3

因此,线性变换A的矩阵为:
A = R S = [ ( cos ⁡ α cos ⁡ β ) s 1 ( cos ⁡ α sin ⁡ β sin ⁡ γ − sin ⁡ α cos ⁡ γ ) s 2 ( cos ⁡ α sin ⁡ β cos ⁡ γ + sin ⁡ α sin ⁡ γ ) s 3 ( sin ⁡ α cos ⁡ β ) s 1 ( sin ⁡ α sin ⁡ β sin ⁡ γ + cos ⁡ α cos ⁡ γ ) s 2 ( sin ⁡ α sin ⁡ β cos ⁡ γ − cos ⁡ α sin ⁡ γ ) s 3 ( − sin ⁡ β ) s 1 ( cos ⁡ β sin ⁡ γ ) s 2 ( − cos ⁡ β cos ⁡ γ ) s 3 ] A = RS = \left[ {\begin{array}{c} {(\cos \alpha \cos \beta ){s_1}}&{(\cos \alpha \sin \beta \sin \gamma - \sin \alpha \cos \gamma ){s_2}}&{(\cos \alpha \sin \beta \cos \gamma + \sin \alpha \sin \gamma ){s_3}}\\ {(\sin \alpha \cos \beta ){s_1}}&{(\sin \alpha \sin \beta \sin \gamma + \cos \alpha \cos \gamma ){s_2}}&{(\sin \alpha \sin \beta \cos \gamma - \cos \alpha \sin \gamma ){s_3}}\\ {( - \sin \beta ){s_1}}&{(\cos \beta \sin \gamma ){s_2}}&{( - \cos \beta \cos \gamma ){s_3}} \end{array}} \right] A=RS= (cosαcosβ)s1(sinαcosβ)s1(sinβ)s1(cosαsinβsinγsinαcosγ)s2(sinαsinβsinγ+cosαcosγ)s2(cosβsinγ)s2(cosαsinβcosγ+sinαsinγ)s3(sinαsinβcosγcosαsinγ)s3(cosβcosγ)s3

仿射变换通常使用齐次坐标来表示,并通过 4 × 4 4×4 4×4的复合变换矩阵来统一描述。将缩放、旋转和平移操作组合成一个 4 × 4 4×4 4×4的复合变换矩阵:
M = T R S = [ 1 0 0 t 1 0 1 0 t 2 0 0 1 t 3 0 0 0 1 ] [ cos ⁡ α cos ⁡ β cos ⁡ α sin ⁡ β sin ⁡ γ − sin ⁡ α cos ⁡ γ cos ⁡ α sin ⁡ β cos ⁡ γ + sin ⁡ α sin ⁡ γ 0 sin ⁡ α cos ⁡ β sin ⁡ α sin ⁡ β sin ⁡ γ + cos ⁡ α cos ⁡ γ sin ⁡ α sin ⁡ β cos ⁡ γ − cos ⁡ α sin ⁡ γ 0 − sin ⁡ β cos ⁡ β sin ⁡ γ − cos ⁡ β cos ⁡ γ 0 0 0 0 1 ] [ s 1 0 0 0 0 s 2 0 0 0 0 s 3 0 0 0 0 1 ] = [ ( cos ⁡ α cos ⁡ β ) s 1 ( cos ⁡ α sin ⁡ β sin ⁡ γ − sin ⁡ α cos ⁡ γ ) s 2 ( cos ⁡ α sin ⁡ β cos ⁡ γ + sin ⁡ α sin ⁡ γ ) s 3 t 1 ( sin ⁡ α cos ⁡ β ) s 1 ( sin ⁡ α sin ⁡ β sin ⁡ γ + cos ⁡ α cos ⁡ γ ) s 2 ( sin ⁡ α sin ⁡ β cos ⁡ γ − cos ⁡ α sin ⁡ γ ) s 3 t 2 ( − sin ⁡ β ) s 1 ( cos ⁡ β sin ⁡ γ ) s 2 ( − cos ⁡ β cos ⁡ γ ) s 3 t 3 0 0 0 1 ] M = TRS = \left[ {\begin{array}{c} 1&0&0&{{t_1}}\\ 0&1&0&{{t_2}}\\ 0&0&1&{{t_3}}\\ 0&0&0&1 \end{array}} \right]\left[ {\begin{array}{c} {\cos \alpha \cos \beta }&{\cos \alpha \sin \beta \sin \gamma - \sin \alpha \cos \gamma }&{\cos \alpha \sin \beta \cos \gamma + \sin \alpha \sin \gamma }&0\\ {\sin \alpha \cos \beta }&{\sin \alpha \sin \beta \sin \gamma + \cos \alpha \cos \gamma }&{\sin \alpha \sin \beta \cos \gamma - \cos \alpha \sin \gamma }&0\\ { - \sin \beta }&{\cos \beta \sin \gamma }&{ - \cos \beta \cos \gamma }&0\\ 0&0&0&1 \end{array}} \right]\left[ {\begin{array}{c} {{s_1}}&0&0&0\\ 0&{{s_2}}&0&0\\ 0&0&{{s_3}}&0\\ 0&0&0&1 \end{array}} \right] = \left[ {\begin{array}{c} {(\cos \alpha \cos \beta ){s_1}}&{(\cos \alpha \sin \beta \sin \gamma - \sin \alpha \cos \gamma ){s_2}}&{(\cos \alpha \sin \beta \cos \gamma + \sin \alpha \sin \gamma ){s_3}}&{{t_1}}\\ {(\sin \alpha \cos \beta ){s_1}}&{(\sin \alpha \sin \beta \sin \gamma + \cos \alpha \cos \gamma ){s_2}}&{(\sin \alpha \sin \beta \cos \gamma - \cos \alpha \sin \gamma ){s_3}}&{{t_2}}\\ {( - \sin \beta ){s_1}}&{(\cos \beta \sin \gamma ){s_2}}&{( - \cos \beta \cos \gamma ){s_3}}&{{t_3}}\\ 0&0&0&1 \end{array}} \right] M=TRS= 100001000010t1t2t31 cosαcosβsinαcosβsinβ0cosαsinβsinγsinαcosγsinαsinβsinγ+cosαcosγcosβsinγ0cosαsinβcosγ+sinαsinγsinαsinβcosγcosαsinγcosβcosγ00001 s10000s20000s300001 = (cosαcosβ)s1(sinαcosβ)s1(sinβ)s10(cosαsinβsinγsinαcosγ)s2(sinαsinβsinγ+cosαcosγ)s2(cosβsinγ)s20(cosαsinβcosγ+sinαsinγ)s3(sinαsinβcosγcosαsinγ)s3(cosβcosγ)s30t1t2t31
[ y 1 y 2 y 3 1 ] = M [ x 1 x 2 x 3 1 ] \left[ {\begin{array}{c} {{y_1}}\\ {{y_2}}\\ {{y_3}}\\ 1 \end{array}} \right] = M\left[ {\begin{array}{c} {{x_1}}\\ {{x_2}}\\ {{x_3}}\\ 1 \end{array}} \right] y1y2y31 =M x1x2x31


协方差矩阵控制椭球

高斯分布 x ∼ N ( μ , Σ ) {\rm{x}} \sim N\left( {\mu ,\Sigma } \right) xN(μ,Σ)。其中:
x x x是随机变量向量;
μ = [ μ 1 , μ 2 , μ 3 ] \mu = \left[ {{\mu _1},{\mu _2},{\mu _3}} \right] μ=[μ1,μ2,μ3]是均值向量;
Σ = [ σ 1 2 σ 12 σ 13 σ 21 σ 2 2 σ 22 σ 31 σ 32 σ 3 2 ] \Sigma = \left[ {\begin{array}{c} {\sigma _1^2}&{{\sigma _{12}}}&{{\sigma _{13}}}\\ {{\sigma _{21}}}&{\sigma _2^2}&{{\sigma _{22}}}\\ {{\sigma _{31}}}&{{\sigma _{32}}}&{\sigma _3^2} \end{array}} \right] Σ= σ12σ21σ31σ12σ22σ32σ13σ22σ32 是协方差矩阵, x y z xyz xyz维度之间的协方差(相关性)和方差。
标准高斯分布 x ∼ N ( 0 → , I ) {\rm{x}} \sim N\left( {\overrightarrow 0 ,I} \right) xN(0 ,I)
0 → = [ 0 , 0 , 0 ] \overrightarrow 0 = \left[ {{0},{0},{0}} \right] 0 =[0,0,0]是均值向量;
I = [ 1 0 0 0 1 0 0 0 1 ] I = \left[ {\begin{array}{c} 1&0&0\\ 0&1&0\\ 0&0&1 \end{array}} \right] I= 100010001 是协方差矩阵(单位矩阵),各维度之间没有相关性,且每个维度的方差都为1。

高斯分布的仿射变换: x N ˜ ( μ , Σ ) ⇒ w N ˜ ( A μ + b , A Σ A T ) {\rm{x}}\~N\left( {\mu ,\Sigma } \right) \Rightarrow w\~N\left( {A\mu + b,A\Sigma {A^T}} \right) xN˜(μ,Σ)wN˜(Aμ+b,AΣAT)

证明
对于任意随机向量 Z Z Z,协方差矩阵定义为:
Σ = E [ ( X − E ( X ) ) ( X − E ( X ) ) T ] \Sigma= E\left[ {\left( {X - E(X) } \right){{\left( {X - E(X) } \right)}^T}} \right] Σ=E[(XE(X))(XE(X))T]
代入 Y = A X + b Y = AX + b Y=AX+b求期望:
E ( Y ) = E [ ( A X + b ) ] = A E [ X ] + b = A μ + b E(Y) = E\left[ {\left( {AX + {\rm{b}}} \right)} \right] = AE\left[ X \right] + b = A\mu + b E(Y)=E[(AX+b)]=AE[X]+b=Aμ+b
代入 Y = A X + b Y = AX + b Y=AX+b求协方差矩阵:
Σ ′ = E [ ( Y − E ( Y ) ) ( Y − E ( Y ) ) T ] = E [ ( A X + b − A μ − b ) ( A X + b − A μ − b ) T ] = E [ ( A X − A μ ) ( A X − A μ ) T ] = E [ A ( X − μ ) ( X − μ ) T A T ] = A E [ ( X − μ ) ( X − μ ) T ] A T = A Σ A T \Sigma \prime = E\left[ {\left( {Y - E(Y)} \right){{\left( {Y - E(Y)} \right)}^T}} \right] = E\left[ {\left( {AX + b - A\mu - b} \right){{\left( {AX + b - A\mu - b} \right)}^T}} \right] = E\left[ {\left( {AX - A\mu } \right){{\left( {AX - A\mu } \right)}^T}} \right] = E\left[ {A\left( {X - \mu } \right){{\left( {X - \mu } \right)}^T}{A^T}} \right] = AE\left[ {\left( {X - \mu } \right){{\left( {X - \mu } \right)}^T}} \right]{A^T} = A\Sigma {A^T} Σ′=E[(YE(Y))(YE(Y))T]=E[(AX+bAμb)(AX+bAμb)T]=E[(AXAμ)(AXAμ)T]=E[A(Xμ)(Xμ)TAT]=AE[(Xμ)(Xμ)T]AT=AΣAT

对于任意高斯分布的协方差矩阵 Σ \Sigma Σ进行特征值分解:
Σ = Q ⋅ Λ ⋅ Q T = Q ⋅ Λ 1 2 Λ 1 2 ⋅ Q T \Sigma = Q \cdot \Lambda \cdot {Q^T} = Q \cdot {\Lambda ^{\frac{1}{2}}}{\Lambda ^{\frac{1}{2}}} \cdot {Q^T} Σ=QΛQT=QΛ21Λ21QT
R R R替换成 Q Q Q Λ 1 2 {\Lambda ^{\frac{1}{2}}} Λ21替换成 S S S
Σ = R ⋅ S ⋅ I ⋅ S T ⋅ R T = A ⋅ I ⋅ A T \Sigma = R \cdot S \cdot I \cdot {S^T} \cdot {R^T} = A \cdot I \cdot {A^T} Σ=RSISTRT=AIAT
A A A矩阵包含了旋转和缩放的信息,标准高斯分布(单位矩阵 I I I)通过变换矩阵 A A A变成了具有特定形状和方向的椭球。因此,可以通过对标准高斯分布(球)进行仿射变换得到任意高斯分布(椭球)。 协方差矩阵可以拖过旋转和缩放来表达。

协方差矩阵控制了椭球的形状和方向,其对角线元素决定椭球的伸缩程度,非对角线元素决定椭球的倾斜角度。


总结

尽可能简单、详细的介绍了高斯椭球的大小形状的控制原理。

相关文章:

  • 详解osgb的顶点,纹理,索引,UV读取与存储
  • PyQt学习系列04-多线程与异步编程
  • 3362. 零数组变换 III
  • Honeywell CV-DINA-DI1624-2A 数字输入模块
  • 【Web前端】JavaScript入门与基础(一)
  • 【软件测试】第三章·软件测试基本方法(逻辑覆盖、路径覆盖)
  • Redis 缓存使用的BigKey问题
  • Cesium基础对象介绍
  • MySQL别名规则与应用场景
  • 矩阵详解:线性代数在AI大模型中的核心支柱
  • 【ICL】上下文学习
  • 英语写作中“假设”suppose, assume, presume 的用法
  • Arthas(阿尔萨斯)
  • C++高效求解非线性方程组的实践指南
  • 第一个Python程序
  • 主类网络和无类网络,什么是主类网络边界
  • 5.23 打卡
  • 淘宝卖家评价等级如何区分?如何提升信誉等级?
  • centos原系统安装了Python3.7.9兼用在安装一个python3.8
  • 【JS】vue3具名导出与默认导出
  • 做调研的网站一般有哪些/关键词优化如何
  • 外贸网站建设经验/产品推广渠道有哪些方式
  • 官方网站、门户网站是什么意思?/专业做灰色关键词排名
  • 杭州网站改版公司电话/人工智能培训师
  • 沧州南皮网站建设公司/西安整站优化
  • 如何办理医药网站icp备安的前置审批/最基本的网站设计