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

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

文章目录


前言

在详细解析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) x∼N(μ,Σ)。其中: 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) x∼N(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\[(X−E(X))(X−E(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[(Y−E(Y))(Y−E(Y))T]=E[(AX+b−Aμ−b)(AX+b−Aμ−b)T]=E[(AX−Aμ)(AX−Aμ)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Λ21⋅QT

将 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} Σ=R⋅S⋅I⋅ST⋅RT=A⋅I⋅AT
A A A矩阵包含了旋转和缩放的信息,标准高斯分布(单位矩阵 I I I)通过变换矩阵 A A A变成了具有特定形状和方向的椭球。因此,可以通过对标准高斯分布(球)进行仿射变换得到任意高斯分布(椭球)。 协方差矩阵可以拖过旋转和缩放来表达。

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


总结

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

相关推荐
m0_689618286 小时前
3D打印仿造+ AI大脑赋能,造出会思考的全景相机
笔记·科技·数码相机·3d
牙牙要健康9 小时前
【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之如何形成高斯椭球
人工智能·深度学习·3d
油丶酸萝卜别吃10 小时前
highCharts生成3D饼图
3d·信息可视化
球球和皮皮10 小时前
Babylon.js学习之路《七、用户交互:鼠标点击、拖拽与射线检测》
javascript·3d·前端框架·babylon.js
zhongqu_3dnest12 小时前
什么是VR场景?VR与3D漫游到底有什么区别
3d·vr·房产·沉浸式体验·实景漫游·区别联系·游戏娱乐
爱怪笑的小杰杰20 小时前
《Cesium全生态解析:从入门到精通的3D地理空间开发指南》
3d
瓦力wow1 天前
python 绘制3D平面图
开发语言·python·3d·matplotlib
kailp1 天前
云渲染技术解析与渲酷平台深度测评:如何实现高效3D创作?
人工智能·深度学习·3d·渲染·gpu算力
Tech Synapse1 天前
深度解析3D模型生成器:基于StyleGAN3与PyTorch3D的多风格生成工具开发实战
人工智能·pytorch·深度学习·3d