【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之3D高斯椭球
【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之3D高斯椭球
文章目录
- 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之3D高斯椭球
- 前言
- 高斯函数
- 一维高斯
- 多维高斯
- 椭球
- 基本定义
- 一般二次形式
- 3D高斯椭球
- 3D高斯与椭球的关系
- 各向同性(Isotropic)和各向异性(Anisotropic)
- 总结
前言
在详细解析3DGS代码之前,首要任务是成功运行3DGS代码【win11下参考教程】,后续学习才有意义。本博客讲解3DGS的理论基础知识之3D高斯椭球,不涉及具体的模块代码。
参考:3D高斯的理论理解
参考:3d gaussian splatting全解 捏雪球
高斯函数
一维高斯
标准一维高斯函数:
f ( x ) = 1 2 π σ e − x 2 2 f\left( x \right) = \frac{1}{{\sqrt {2\pi\sigma} }}{e^{ - \frac{{{x^2}}}{2}}} f(x)=2πσ1e−2x2
其中的 σ \sigma σ表示高斯函数的方差, μ \mu μ表示高斯函数的均值;标准高斯函数的方差 σ \sigma σ为1,均值 μ \mu μ为0,概率密度之和为1。
import numpy as np
import matplotlib.pyplot as plt
# 定义高斯函数
def gaussian(x, mean=0, std=1):return (1 / (std * np.sqrt(2 * np.pi))) * np.exp(-((x - mean) ** 2) / (2 * std ** 2))# 生成x轴数据
x = np.linspace(-4, 4, 500)# 均值和标准差
mean = 0 # 均值 μ
std = 1 # 标准差 σ# 计算对应y值
y = gaussian(x, mean, std)
# 绘制图形
plt.plot(x, y, label='Standard Gaussian')# 在均值处标注峰值点
peak_y = gaussian(mean)
plt.plot(0, peak_y, 'ro') # 红色圆圈标记
plt.text(0+0.1, peak_y, 'Peak', fontsize=9)# 标注均值、±1σ, ±2σ, ±3σ的位置
plt.axvline(x=mean, color='g', linestyle='--', label='Mean')
plt.axvline(x=mean - std, color='y', linestyle='--', label='-1 STD')
plt.axvline(x=mean + std, color='y', linestyle='--')# 添加图例
plt.legend()# 图像标题与坐标轴标签
plt.title('Standard Univariate Gaussian Function')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.grid(True)# 保存图像(文件名中包含均值和标准差)
filename = f'standard_gaussian_distribution.jpg'
plt.savefig(filename, dpi=300, bbox_inches='tight')
# 显示图像
plt.show()
不限制均值和方差,一维高斯函数:
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f\left( x \right) = \frac{1}{{\sqrt {2\pi\sigma} }}{e^{ - \frac{{{{\left( {x - \mu } \right)}^2}}}{{2{\sigma ^2}}}}} f(x)=2πσ1e−2σ2(x−μ)2
在数学上的意义为将标准高斯函数向右平移 μ \mu μ个单位,函数宽度延展了 σ \sigma σ倍,分别决定了分布的位置和宽度,同时为了保证概率密度函数积分为1, f ( x ) f\left( x \right) f(x) 的高度会下降,因为系数 1 2 π σ \frac{1}{{\sqrt {2\pi\sigma} }} 2πσ1。
import numpy as np
import matplotlib.pyplot as plt# 定义高斯函数
def gaussian(x, mean=0, std=1):return (1 / (std * np.sqrt(2 * np.pi))) * np.exp(-((x - mean) ** 2) / (2 * std ** 2))# 均值和标准差
mean = 1.5 # 均值 μ
std = 5 # 标准差 σ# 生成x轴数据(根据均值和标准差适当调整范围)
x = np.linspace(mean - 4*std, mean + 4*std, 500)# 计算对应y值
y = gaussian(x, mean, std)
# 绘制图形
plt.plot(x, y, label=f'Gaussian({mean},{std}$^2$)')# 在均值处标注峰值点
peak_y = gaussian(mean)
plt.plot(mean, peak_y, 'ro') # 红色圆圈标记
plt.text(mean + 0.05, peak_y, 'Peak', fontsize=9)# 标注均值、±1σ, ±2σ, ±3σ的位置
plt.axvline(x=mean, color='g', linestyle='--', label='Mean')
plt.axvline(x=mean - std, color='y', linestyle='--', label='-1 STD')
plt.axvline(x=mean + std, color='y', linestyle='--')
plt.axvline(x=mean - 2*std, color='b', linestyle='--', label='-2 STD')
plt.axvline(x=mean + 2*std, color='b', linestyle='--')
plt.axvline(x=mean - 3*std, color='m', linestyle='--', label='-3 STD')
plt.axvline(x=mean + 3*std, color='m', linestyle='--')# 添加图例
plt.legend()# 图像标题与坐标轴标签
plt.title('Univariate Gaussian Function')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.grid(True)# 保存图像(文件名中包含均值和标准差)
filename = f'gaussian_mu{mean}_sigma{std}.jpg'
plt.savefig(filename, dpi=300, bbox_inches='tight')
# 显示图像
plt.show()
多维高斯
1. n n n个服从正态分布且互不相关的独立变量 x = [ x 1 , x 2 , . . . , x n ] T x = {\left[ {{x_1},{x_2},...,{x_n}} \right]^T} x=[x1,x2,...,xn]T,其均值为 μ ( x ) = [ μ 1 , μ 2 , . . . , μ n ] T \mu\left( x \right) = {\left[ {{\mu _1},{\mu _2},...,{\mu _n}} \right]^T} μ(x)=[μ1,μ2,...,μn]T,方差为 σ ( x ) = [ σ 1 , σ 2 , . . . , σ n ] T \sigma\left( x \right) = {\left[ {{\sigma_1},{\sigma_2},...,{\sigma_n}} \right]^T} σ(x)=[σ1,σ2,...,σn]T,根据概率论中的概率密度公式有:
f ( x ) = p ( x 1 , x 2 , . . . , x n ) = p ( x 1 ) p ( x 2 ) . . . p ( x n ) = 1 ( 2 π ) n σ 1 σ 1 . . . σ n e − ( x 1 − μ 1 ) 2 2 σ 1 2 − ( x 2 − μ 2 ) 2 2 σ 2 2 . . . − ( x n − μ n ) 2 2 σ n 2 f\left( x \right) = p\left( {{x_1},{x_2},...,{x_n}} \right) = p\left( {{x_1}} \right)p\left( {{x_2}} \right)...p\left( {{x_n}} \right) = \frac{1}{{{{\left( {\sqrt {2\pi } } \right)}^n}{\sigma _1}{\sigma _1}...{\sigma _n}}}{e^{ - \frac{{{{\left( {{x_1} - {\mu _1}} \right)}^2}}}{{2{\sigma _1}^2}} - \frac{{{{\left( {{x_2} - {\mu _2}} \right)}^2}}}{{2{\sigma _2}^2}}... - \frac{{{{\left( {{x_n} - {\mu _n}} \right)}^2}}}{{2{\sigma _n}^2}}}} f(x)=p(x1,x2,...,xn)=p(x1)p(x2)...p(xn)=(2π)nσ1σ1...σn1e−2σ12(x1−μ1)2−2σ22(x2−μ2)2...−2σn2(xn−μn)2
- 将 ( x 1 − μ 1 ) 2 2 σ 1 2 + ( x 2 − μ 2 ) 2 2 σ 2 2 . . . + ( x n − μ n ) 2 2 σ n 2 \frac{{{{\left( {{x_1} - {\mu _1}} \right)}^2}}}{{2{\sigma _1}^2}} + \frac{{{{\left( {{x_2} - {\mu _2}} \right)}^2}}}{{2{\sigma _2}^2}}... + \frac{{{{\left( {{x_n} - {\mu _n}} \right)}^2}}}{{2{\sigma _n}^2}} 2σ12(x1−μ1)2+2σ22(x2−μ2)2...+2σn2(xn−μn)2分解表示:
[ x 1 − μ 1 , x 2 − μ 2 . . . x n − μ n ] [ 1 σ 1 2 0 . . . . 0 0 1 σ 2 2 . . . . 0 . . . . . . . . . . . . . . . . 0 0 . . . . 1 σ n 2 ] [ x 1 − μ 1 , x 2 − μ 2 . . . x n − μ n ] T \left[ {{x_1} - {\mu _1},{x_2} - {\mu _2}...{x_n} - {\mu _n}} \right]\left[ {\begin{array}{c} {\frac{1}{{\sigma _1^2}}}&0&{....}&0\\ 0&{\frac{1}{{\sigma _2^2}}}&{....}&0\\ {....}&{....}&{....}&{....}\\ 0&0&{....}&{\frac{1}{{\sigma _n^2}}} \end{array}} \right]{\left[ {{x_1} - {\mu _1},{x_2} - {\mu _2}...{x_n} - {\mu _n}} \right]^T} [x1−μ1,x2−μ2...xn−μn] σ1210....00σ221....0................00....σn21 [x1−μ1,x2−μ2...xn−μn]T
用 x − μ x x - {\mu _x} x−μx表示 [ x 1 − μ 1 , x 2 − μ 2 . . . x n − μ n ] T {\left[ {{x_1} - {\mu _1},{x_2} - {\mu _2}...{x_n} - {\mu _n}} \right]^T} [x1−μ1,x2−μ2...xn−μn]T;用协方差矩阵 Σ \Sigma Σ表示 [ σ 1 2 0 . . . . 0 0 σ 2 2 . . . . 0 . . . . . . . . . . . . . . . . 0 0 . . . . σ n 2 ] \left[ {\begin{array}{c} {\sigma _1^2}&0&{....}&0\\ 0&{\sigma _2^2}&{....}&0\\ {....}&{....}&{....}&{....}\\ 0&0&{....}&{\sigma _n^2} \end{array}} \right] σ120....00σ22....0................00....σn2 ,则进一步简化为 ( x − μ x ) T ( Σ ) − 1 ( x − μ x ) {\left( {x - {\mu _x}} \right)^T}{(\Sigma {} )^{ - 1}}\left( {x - {\mu _x}} \right) (x−μx)T(Σ)−1(x−μx)。 - Σ \Sigma Σ行列式为 ∣ Σ ∣ = σ 1 2 σ 2 2 . . . . σ n 2 \left| \Sigma \right| = \sigma _1^2\sigma _2^2....\sigma _n^2 ∣Σ∣=σ12σ22....σn2,因此 ∣ Σ ∣ 1 2 = σ 1 σ 2 . . . . σ n {\left|\Sigma \right|^{\frac{1}{2}}} = {\sigma _1}{\sigma _2}....{\sigma _n} ∣Σ∣21=σ1σ2....σn。
因此多维正态高斯分布函数:
f ( x ) = 1 ( 2 π ) n ∣ Σ ∣ 1 2 e − ( x − μ x ) T ( Σ ) − 1 ( x − μ x ) 2 f\left( x \right) = \frac{1}{{{{\left( {\sqrt {2\pi } } \right)}^n}{{\left| {\Sigma {} } \right|}^{\frac{1}{2}}}}}{e^{ - \frac{{{{\left( {x - {\mu _x}} \right)}^T}{{(\Sigma {} )}^{ - 1}}\left( {x - {\mu _x}} \right)}}{2}}} f(x)=(2π)n∣Σ∣211e−2(x−μx)T(Σ)−1(x−μx)
2. n n n个服从正态分布且的随机变量 x = [ x 1 , x 2 , . . . , x n ] T x = {\left[ {{x_1},{x_2},...,{x_n}} \right]^T} x=[x1,x2,...,xn]T,其均值为 μ ( x ) = [ μ 1 , μ 2 , . . . , μ n ] T \mu\left( x \right) = {\left[ {{\mu _1},{\mu _2},...,{\mu _n}} \right]^T} μ(x)=[μ1,μ2,...,μn]T,方差为 σ ( x ) = [ σ 1 , σ 2 , . . . , σ n ] T \sigma\left( x \right) = {\left[ {{\sigma_1},{\sigma_2},...,{\sigma_n}} \right]^T} σ(x)=[σ1,σ2,...,σn]T,还需要一个协方差矩阵 Σ \Sigma Σ来描述变量之间的相关性。多维正态高斯分布函数依旧是:
f ( x ) = 1 ( 2 π ) n ∣ Σ ∣ 1 2 e − ( x − μ x ) T ( Σ ) − 1 ( x − μ x ) 2 f\left( x \right) = \frac{1}{{{{\left( {\sqrt {2\pi } } \right)}^n}{{\left| {\Sigma {} } \right|}^{\frac{1}{2}}}}}{e^{ - \frac{{{{\left( {x - {\mu _x}} \right)}^T}{{(\Sigma {} )}^{ - 1}}\left( {x - {\mu _x}} \right)}}{2}}} f(x)=(2π)n∣Σ∣211e−2(x−μx)T(Σ)−1(x−μx)
协方差矩阵同样是一个 n × n {\rm{n}} \times {\rm{n}} n×n的矩阵,其元素 Σ i j {\Sigma_{ij}} Σij表示第 i i i个随机变量与第 j j j个随机变量之间的协方差:
Σ = [ σ 1 2 σ 12 . . . . σ 1 n σ 21 σ 2 2 . . . . σ 2 n . . . . . . . . . . . . . . . . σ n 1 σ n 2 . . . . σ n 2 ] \Sigma = \left[ {\begin{array}{c} {\sigma _1^2}&{{\sigma _{12}}}&{....}&{{\sigma _{1n}}}\\ {{\sigma _{21}}}&{\sigma _2^2}&{....}&{{\sigma _{2n}}}\\ {....}&{....}&{....}&{....}\\ {{\sigma _{n1}}}&{{\sigma _{n2}}}&{....}&{\sigma _n^2} \end{array}} \right] Σ= σ12σ21....σn1σ12σ22....σn2................σ1nσ2n....σn2
如果 Σ i j = σ i j = 0 {\Sigma_{ij}}={\sigma _{ij}}=0 Σij=σij=0 说明第 i i i个变量和第 j j j个变量之间没有线性相关性, n n n个服从正态分布且互不相关的独立变量即是这种情况,互相都没有线性相关性;
如果 Σ i j = σ i j ≠ 0 {\Sigma _{ij}}={\sigma _{ij}} \ne 0 Σij=σij=0则说明第 i i i个变量和第 j j j个变量之间存在线性相关性。
椭球
基本定义
在坐标系中椭球方程表示为:
( x − x 0 ) 2 a 2 + ( y − y 0 ) 2 b 2 + ( z − z 0 ) 2 c 2 = 1 \frac{{{{\left( {x - {x_0}} \right)}^2}}}{{{a^2}}} + \frac{{{{\left( {y - {y_0}} \right)}^2}}}{{{b^2}}} + \frac{{{{\left( {z - {z_0}} \right)}^2}}}{{{c^2}}} = 1 a2(x−x0)2+b2(y−y0)2+c2(z−z0)2=1
椭球的中心位于空间中的某一点 ( x 0 , y 0 , z 0 ) \left( {{x_0},{y_0},{z_0}} \right) (x0,y0,z0),其中, a a a、 b b b和 c c c分别是椭球沿 x x x、 y y y和 z z z轴方向的半轴长度。如果 a = b = c a=b=c a=b=c,则该图形是一个球体。
当椭球中心点位于坐标原点 ( 0 , 0 , 0 ) (0, 0, 0) (0,0,0)时,标准椭球(中心位于原点且轴与坐标轴对齐的椭球)的方程可以表示为:
x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 \frac{{{x^2}}}{{{a^2}}} + \frac{{{y^2}}}{{{b^2}}} + \frac{{{z^2}}}{{{c^2}}} = 1 a2x2+b2y2+c2z2=1
一般二次形式
用二次方程来表示三维空间中任意位置、任意方向的椭球。这种形式可以涵盖椭球的中心不在原点、主轴不与坐标轴对齐的情况。
主轴与坐标轴对齐的情况: 通过展开椭球方程,将其转化为一个一般的二次曲面形式(即包含 x 2 x^2 x2 、 y 2 y^2 y2、 z 2 z^2 z2、一次项和常数项的形式):
- 展开平方项:
( x − x 0 ) 2 a 2 = x 2 − 2 x x 0 + x 0 2 a 2 \frac{{{{\left( {x - {x_0}} \right)}^2}}}{{{a^2}}} = \frac{{{x^2} - 2x{x_0} + {x_0}^2}}{{{a^2}}} a2(x−x0)2=a2x2−2xx0+x02
( y − y 0 ) 2 b 2 = y 2 − 2 y y 0 + y 0 2 b 2 \frac{{{{\left( {y - {y_0}} \right)}^2}}}{{{b^2}}} = \frac{{{y^2} - 2y{y_0} + {y_0}^2}}{{{b^2}}} b2(y−y0)2=b2y2−2yy0+y02
( z − z 0 ) 2 c 2 = z 2 − 2 z z 0 + z 0 2 c 2 \frac{{{{\left( {z - {z_0}} \right)}^2}}}{{{c^2}}} = \frac{{{z^2} - 2z{z_0} + {z_0}^2}}{{{c^2}}} c2(z−z0)2=c2z2−2zz0+z02 - 整理为一般二次形式:
x 2 a 2 + y 2 b 2 + z 2 b 2 − 2 x x 0 a 2 − 2 y y 0 b 2 − 2 z z 0 c 2 + ( x 0 2 a 2 + y 0 2 b 2 + z 0 2 c 2 ) = 1 \frac{{{x^2}}}{{{a^2}}} + \frac{{{y^2}}}{{{b^2}}} + \frac{{{z^2}}}{{{b^2}}} - \frac{{2x{x_0}}}{{{a^2}}} - \frac{{2y{y_0}}}{{{b^2}}} - \frac{{2z{z_0}}}{{{c^2}}} + (\frac{{{x_0}^2}}{{{a^2}}} + \frac{{{y_0}^2}}{{{b^2}}} + \frac{{{z_0}^2}}{{{c^2}}}) = 1 a2x2+b2y2+b2z2−a22xx0−b22yy0−c22zz0+(a2x02+b2y02+c2z02)=1
一般二次形式的格式如下:
A x 2 + B y 2 + C z 2 + D x + E y + F z + G = 1 A{x^2} + B{y^2} + C{z^2} + Dx + Ey + Fz + G = 1 Ax2+By2+Cz2+Dx+Ey+Fz+G=1
椭球的中心位于空间中的某一点 ( x 0 , y 0 , z 0 ) \left( {{x_0},{y_0},{z_0}} \right) (x0,y0,z0),对应地: A = 1 a 2 A = \frac{1}{{{a^2}}} A=a21; B = 1 b 2 B = \frac{1}{{{b^2}}} B=b21; C = 1 c 2 C = \frac{1}{{{c^2}}} C=c21; D = 2 x 0 a 2 D = \frac{{2{x_0}}}{{{a^2}}} D=a22x0; E = 2 x 0 b 2 E = \frac{{2{x_0}}}{{{b^2}}} E=b22x0; F = 2 x 0 z 2 F = \frac{{2{x_0}}}{{{z^2}}} F=z22x0; G = ( x 0 2 a 2 + y 0 2 b 2 + z 0 2 c 2 ) G = (\frac{{{x_0}^2}}{{{a^2}}} + \frac{{{y_0}^2}}{{{b^2}}} + \frac{{{z_0}^2}}{{{c^2}}}) G=(a2x02+b2y02+c2z02)。
当椭球中心点位于坐标原点 ( 0 , 0 , 0 ) (0, 0, 0) (0,0,0)时:
A x 2 + B y 2 + C z 2 = 1 A{x^2} + B{y^2} + C{z^2} = 1 Ax2+By2+Cz2=1
主轴不与坐标轴对齐的情况(常见情形): 椭球中心点 ( x 0 , y 0 , z 0 ) {\rm{(}}{{\rm{x}}_0}{\rm{,}}{{\rm{y}}_0}{\rm{,}}{{\rm{z}}_0}{\rm{)}} (x0,y0,z0)平移到原点,然后椭球经过绕 z z z轴旋转 α \alpha α,绕 y y y轴旋转 β \beta β,绕 x x x轴旋转 γ \gamma γ。
- 中心点 ( x 0 , y 0 , z 0 ) {\rm{(}}{{\rm{x}}_0}{\rm{,}}{{\rm{y}}_0}{\rm{,}}{{\rm{z}}_0}{\rm{)}} (x0,y0,z0)平移到坐标原点:
x ′ = x − x 0 y ′ = y − y 0 z ′ = z − z 0 \begin{array}{l} {x\prime} = x - {x_0}\\ {y\prime} = y - {y_0}\\ {z\prime} = z - {z_0} \end{array} x′=x−x0y′=y−y0z′=z−z0 - 绕 z z z轴旋转 α \alpha α,旋转矩阵 R z ( α ) {R_{\rm{z}}}\left( \alpha \right) Rz(α):
R z ( α ) = [ cos α − sin α 0 sin α cos α 0 0 0 1 ] {R_{\rm{z}}}\left( \alpha \right) = \left[ {\begin{array}{c} {\cos \alpha }&{ - \sin \alpha }&0\\ {\sin \alpha }&{\cos \alpha }&0\\ 0&0&1 \end{array}} \right] Rz(α)= cosαsinα0−sinαcosα0001
旋转后的坐标 ( x ′ ′ , y ′ ′ , z ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime}{\rm{)}} (x′′,y′′,z′′)由坐标 ( x ′ , y ′ , z ′ ) {\rm{(}}{{\rm{x}}\prime}{\rm{,}}{{\rm{y}}\prime}{\rm{,}}{{\rm{z}}\prime}{\rm{)}} (x′,y′,z′)计算得出:
[ x ′ ′ y ′ ′ z ′ ′ ] = R x ( α ) [ x ′ x ′ x ′ ] \left[ {\begin{array}{c} {{x\prime\prime}}\\ {{y\prime\prime}}\\ {{z\prime\prime}} \end{array}} \right] = {R_x}\left( \alpha \right)\left[ {\begin{array}{c} {{x\prime}}\\ {{x\prime}}\\ {{x\prime}} \end{array}} \right] x′′y′′z′′ =Rx(α) x′x′x′
其中 ( x ′ ′ , y ′ ′ , z ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime}{\rm{)}} (x′′,y′′,z′′)的值分别为:
x ′ ′ = x ′ cos α − y ′ sin α y ′ ′ = x ′ sin α + y ′ cos α z ′ ′ = z ′ \begin{array}{l} {{x\prime\prime} = {x\prime}\cos \alpha - {y\prime}\sin \alpha }\\ {{y\prime\prime} = {x\prime}\sin \alpha + {y\prime}\cos \alpha }\\ {{z\prime\prime} = {z\prime}} \end{array} x′′=x′cosα−y′sinαy′′=x′sinα+y′cosαz′′=z′ - 绕 y y y轴旋转 β \beta β,旋转矩阵 R y ( β ) {R_y}\left( \beta \right) Ry(β):
R y ( β ) = [ cos β 0 sin β 0 1 0 − sin β 0 cos β ] {R_y}\left( \beta \right) = \left[ {\begin{array}{c} {\cos \beta }&0&{\sin \beta }\\ 0&1&0\\ { - \sin \beta }&0&{\cos \beta } \end{array}} \right] Ry(β)= cosβ0−sinβ010sinβ0cosβ
旋转后的坐标 ( x ′ ′ ′ , y ′ ′ ′ , z ′ ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime\prime}{\rm{)}} (x′′′,y′′′,z′′′)由原始坐标 ( x ′ ′ , y ′ ′ , z ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime}{\rm{)}} (x′′,y′′,z′′)计算得出:
[ x ′ ′ ′ y ′ ′ ′ z ′ ′ ′ ] = R y ( β ) [ x ′ ′ y ′ ′ z ′ ′ ] \left[ {\begin{array}{c} {{x\prime\prime\prime}}\\ {{y\prime\prime\prime}}\\ {{z\prime\prime\prime}} \end{array}} \right] = {R_y}\left( \beta \right)\left[ {\begin{array}{c} {{x\prime\prime}}\\ {{y\prime\prime}}\\ {{z\prime\prime}} \end{array}} \right] x′′′y′′′z′′′ =Ry(β) x′′y′′z′′
其中 ( x ′ ′ ′ , y ′ ′ ′ , z ′ ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime\prime}{\rm{)}} (x′′′,y′′′,z′′′)的值分别为:
x ′ ′ ′ = x ′ ′ cos β + z ′ ′ sin β = ( x ′ cos α − y ′ sin α ) cos β + z ′ sin β y ′ ′ ′ = y ′ ′ = x ′ sin α + y ′ cos α z ′ ′ ′ = − x ′ ′ sin β + z 1 cos β = − ( x ′ cos α − y ′ sin α ) sin β + z ′ cos β \begin{array}{l} {{x\prime\prime\prime} = {x\prime\prime}\cos \beta + {z\prime\prime}\sin \beta = (x\prime\cos \alpha - y\prime\sin \alpha )\cos \beta + z\prime\sin \beta }\\ {{y\prime\prime\prime} = {y\prime\prime} = x\prime\sin \alpha + y\prime\cos \alpha }\\ {{z\prime\prime\prime} = - {x\prime\prime}\sin \beta + {z_1}\cos \beta = - (x\prime\cos \alpha - y\prime\sin \alpha )\sin \beta + z\prime\cos \beta } \end{array} x′′′=x′′cosβ+z′′sinβ=(x′cosα−y′sinα)cosβ+z′sinβy′′′=y′′=x′sinα+y′cosαz′′′=−x′′sinβ+z1cosβ=−(x′cosα−y′sinα)sinβ+z′cosβ - 绕 x x x轴旋转 γ \gamma γ,旋转矩阵 R z ( γ ) {R_z}\left( \gamma \right) Rz(γ):
R z ( γ ) = [ 1 0 0 0 cos γ − sin γ 0 sin γ cos γ ] {R_z}\left( \gamma \right) = \left[ {\begin{array}{c} 1&0&0\\ 0&{\cos \gamma }&{ - \sin \gamma }\\ 0&{\sin \gamma }&{\cos \gamma } \end{array}} \right] Rz(γ)= 1000cosγsinγ0−sinγcosγ
旋转后的坐标 ( x ′ ′ ′ ′ , y ′ ′ ′ ′ , z ′ ′ ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime\prime\prime}{\rm{)}} (x′′′′,y′′′′,z′′′′)由原始坐标 ( x ′ ′ ′ , y ′ ′ ′ , z ′ ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime\prime}{\rm{)}} (x′′′,y′′′,z′′′)计算得出:
[ x ′ ′ ′ ′ y ′ ′ ′ ′ z ′ ′ ′ ′ ] = R z ( γ ) [ x ′ ′ ′ y ′ ′ ′ z ′ ′ ′ ] \left[ {\begin{array}{c} {{x\prime\prime\prime\prime}}\\ {{y\prime\prime\prime\prime}}\\ {{z\prime\prime\prime\prime}} \end{array}} \right] = {R_z}\left( \gamma \right)\left[ {\begin{array}{c} {{x\prime\prime\prime}}\\ {{y\prime\prime\prime}}\\ {{z\prime\prime\prime}} \end{array}} \right] x′′′′y′′′′z′′′′ =Rz(γ) x′′′y′′′z′′′
其中 ( x ′ ′ ′ ′ , y ′ ′ ′ ′ , z ′ ′ ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime\prime\prime}{\rm{)}} (x′′′′,y′′′′,z′′′′)的值分别为:
x ′ ′ ′ ′ = x ′ ′ ′ = ( x ′ cos α − y ′ sin α ) cos β + z ′ sin β y ′ ′ ′ ′ = y ′ ′ ′ cos γ − z ′ ′ ′ sin γ = ( x ′ sin α + y ′ cos α ) cos γ − ( − ( x ′ cos α − y ′ sin α ) sin β + z ′ cos β ) sin γ z ′ ′ ′ ′ = y ′ ′ ′ sin γ + z ′ ′ ′ cos γ = ( x ′ sin α + y ′ cos α ) sin γ + ( − ( x ′ cos α − y ′ sin α ) sin β + z ′ cos β ) cos γ \begin{array}{l} {{x\prime\prime\prime\prime} = {x\prime\prime\prime} = (x\prime\cos \alpha - y\prime\sin \alpha )\cos \beta + z\prime\sin \beta }\\ {{y\prime\prime\prime\prime} = {y\prime\prime\prime}\cos \gamma - {z\prime\prime\prime}\sin \gamma = (x\prime\sin \alpha + y\prime\cos \alpha )\cos \gamma - ( - (x\prime\cos \alpha - y\prime\sin \alpha )\sin \beta + z\prime\cos \beta )\sin \gamma }\\ {{z\prime\prime\prime\prime} = {y\prime\prime\prime}\sin \gamma + {z\prime\prime\prime}\cos \gamma = (x\prime\sin \alpha + y\prime\cos \alpha )\sin \gamma + ( - (x\prime\cos \alpha - y\prime\sin \alpha )\sin \beta + z\prime\cos \beta )\cos \gamma } \end{array} x′′′′=x′′′=(x′cosα−y′sinα)cosβ+z′sinβy′′′′=y′′′cosγ−z′′′sinγ=(x′sinα+y′cosα)cosγ−(−(x′cosα−y′sinα)sinβ+z′cosβ)sinγz′′′′=y′′′sinγ+z′′′cosγ=(x′sinα+y′cosα)sinγ+(−(x′cosα−y′sinα)sinβ+z′cosβ)cosγ
将坐标 ( x ′ , y ′ , z ′ ) {\rm{(}}{{\rm{x}}\prime}{\rm{,}}{{\rm{y}}\prime}{\rm{,}}{{\rm{z}}\prime}{\rm{)}} (x′,y′,z′)转化成 ( x , y , z ) ({\rm{x}},{\rm{y}},{\rm{z}}) (x,y,z):
x ′ ′ ′ ′ = ( ( x − x 0 ) cos α − ( y − y 0 ) sin α ) cos β + ( z − z 0 ) sin β y ′ ′ ′ ′ = ( ( x − x 0 ) sin α + ( y − y 0 ) cos α ) cos γ − ( − ( ( x − x 0 ) cos α − ( y − y 0 ) sin α ) sin β + ( z − z 0 ) cos β ) sin γ z ′ ′ ′ ′ = ( ( x − x 0 ) sin α + ( y − y 0 ) cos α ) sin γ + ( − ( ( x − x 0 ) cos α − ( y − y 0 ) sin α ) sin β + ( z − z 0 ) cos β ) cos γ \begin{array}{l} {{x\prime\prime\prime\prime} = ((x - {x_0})\cos \alpha - (y - {y_0})\sin \alpha )\cos \beta + (z - {z_0})\sin \beta }\\ {{y\prime\prime\prime\prime} = ((x - {x_0})\sin \alpha + (y - {y_0})\cos \alpha )\cos \gamma - ( - ((x - {x_0})\cos \alpha - (y - {y_0})\sin \alpha )\sin \beta + (z - {z_0})\cos \beta )\sin \gamma }\\ {{z\prime\prime\prime\prime} = ((x - {x_0})\sin \alpha + (y - {y_0})\cos \alpha )\sin \gamma + ( - ((x - {x_0})\cos \alpha - (y - {y_0})\sin \alpha )\sin \beta + (z - {z_0})\cos \beta )\cos \gamma } \end{array} x′′′′=((x−x0)cosα−(y−y0)sinα)cosβ+(z−z0)sinβy′′′′=((x−x0)sinα+(y−y0)cosα)cosγ−(−((x−x0)cosα−(y−y0)sinα)sinβ+(z−z0)cosβ)sinγz′′′′=((x−x0)sinα+(y−y0)cosα)sinγ+(−((x−x0)cosα−(y−y0)sinα)sinβ+(z−z0)cosβ)cosγ
将 ( x ′ ′ ′ ′ , y ′ ′ ′ ′ , z ′ ′ ′ ′ ) {\rm{(}}{{\rm{x}}\prime\prime\prime\prime}{\rm{,}}{{\rm{y}}\prime\prime\prime\prime}{\rm{,}}{{\rm{z}}\prime\prime\prime\prime}{\rm{)}} (x′′′′,y′′′′,z′′′′)代入标准椭球方程:
x ′ ′ ′ ′ 2 a 2 + y ′ ′ ′ ′ 2 b 2 + z ′ ′ ′ ′ 2 c 2 = 1 \frac{{{x\prime\prime\prime\prime^2}}}{{{a^2}}} + \frac{{{y\prime\prime\prime\prime^2}}}{{{b^2}}} + \frac{{{z\prime\prime\prime\prime^2}}}{{{c^2}}} = 1 a2x′′′′2+b2y′′′′2+c2z′′′′2=1
总的旋转矩阵为:
R = R x ( γ ) R y ( β ) R z ( α ) = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] = [ 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} {{r_{11}}}&{{r_{12}}}&{{r_{13}}}\\ {{r_{21}}}&{{r_{22}}}&{{r_{23}}}\\ {{r_{31}}}&{{r_{32}}}&{{r_{33}}} \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 }\\ {\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(α)= r11r21r31r12r22r32r13r23r33 = 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γ
展开并整理此方程,得到一般二次形式:
A x 2 + B y 2 + C z 2 + D x y + E x z + F y z + + G x + H y + I z + J = 0 A{{\rm{x}}^2} + B{y^2} + C{z^2} + Dxy + Exz + Fyz + + Gx + Hy + Iz + J = 0 Ax2+By2+Cz2+Dxy+Exz+Fyz++Gx+Hy+Iz+J=0
二次项系数:
A = r 11 2 a 2 + r 21 2 b 2 + r 31 2 c 2 B = r 12 2 a 2 + r 22 2 b 2 + r 32 2 c 2 C = r 13 2 a 2 + r 23 2 b 2 + r 33 2 c 2 \begin{array}{l} A = \frac{{r_{11}^2}}{{{a^2}}} + \frac{{r_{21}^2}}{{{b^2}}} + \frac{{r_{31}^2}}{{{c^2}}}\\ B = \frac{{r_{12}^2}}{{{a^2}}} + \frac{{r_{22}^2}}{{{b^2}}} + \frac{{r_{32}^2}}{{{c^2}}}\\ C = \frac{{r_{13}^2}}{{{a^2}}} + \frac{{r_{23}^2}}{{{b^2}}} + \frac{{r_{33}^2}}{{{c^2}}} \end{array} A=a2r112+b2r212+c2r312B=a2r122+b2r222+c2r322C=a2r132+b2r232+c2r332
交叉项系数:
D = 2 ( r 11 r 12 a 2 + r 21 r 22 b 2 + r 31 r 32 c 2 ) E = 2 ( r 11 r 13 a 2 + r 21 r 23 b 2 + r 31 r 33 c 2 ) F = 2 ( r 12 r 13 a 2 + r 22 r 23 b 2 + r 32 r 33 c 2 ) \begin{array}{l} D = 2(\frac{{{r_{11}}{r_{12}}}}{{{a^2}}} + \frac{{{r_{21}}{r_{22}}}}{{{b^2}}} + \frac{{{r_{31}}{r_{32}}}}{{{c^2}}})\\ E = 2(\frac{{{r_{11}}{r_{13}}}}{{{a^2}}} + \frac{{{r_{21}}{r_{23}}}}{{{b^2}}} + \frac{{{r_{31}}{r_{33}}}}{{{c^2}}})\\ F = 2(\frac{{{r_{12}}{r_{13}}}}{{{a^2}}} + \frac{{{r_{22}}{r_{23}}}}{{{b^2}}} + \frac{{{r_{32}}{r_{33}}}}{{{c^2}}}) \end{array} D=2(a2r11r12+b2r21r22+c2r31r32)E=2(a2r11r13+b2r21r23+c2r31r33)F=2(a2r12r13+b2r22r23+c2r32r33)
一次项系数:
G = − 2 ( x 0 a 2 r 11 2 + y 0 b 2 r 21 2 + z 0 c 2 r 31 2 + x 0 b 2 ( 2 r 11 r 21 ) + x 0 c 2 ( 2 r 11 r 31 ) + y 0 a 2 ( 2 r 11 r 21 ) + y 0 c 2 ( 2 r 21 r 31 ) + z 0 a 2 ( 2 r 11 r 31 ) + z 0 b 2 ( 2 r 21 r 31 ) ) H = − 2 ( x 0 a 2 r 12 2 + y 0 b 2 r 22 2 + z 0 c 2 r 32 2 + x 0 b 2 ( 2 r 12 r 22 ) + x 0 c 2 ( 2 r 12 r 32 ) + y 0 a 2 ( 2 r 12 r 22 ) + y 0 c 2 ( 2 r 22 r 32 ) + z 0 a 2 ( 2 r 12 r 32 ) + z 0 b 2 ( 2 r 22 r 32 ) ) G = − 2 ( x 0 a 2 r 13 2 + y 0 b 2 r 23 2 + z 0 c 2 r 33 2 + x 0 b 2 ( 2 r 13 r 23 ) + x 0 c 2 ( 2 r 13 r 33 ) + y 0 a 2 ( 2 r 13 r 23 ) + y 0 c 2 ( 2 r 23 r 33 ) + z 0 a 2 ( 2 r 13 r 33 ) + z 0 b 2 ( 2 r 23 r 33 ) ) \begin{array}{l} G = - 2\left( {\frac{{{x_0}}}{{{a^2}}}r_{11}^2 + \frac{{{y_0}}}{{{b^2}}}r_{21}^2 + \frac{{{z_0}}}{{{c^2}}}r_{31}^2 + \frac{{{x_0}}}{{{b^2}}}(2{r_{11}}{r_{21}}) + \frac{{{x_0}}}{{{c^2}}}(2{r_{11}}{r_{31}}) + \frac{{{y_0}}}{{{a^2}}}(2{r_{11}}{r_{21}}) + \frac{{{y_0}}}{{{c^2}}}(2{r_{21}}{r_{31}}) + \frac{{{z_0}}}{{{a^2}}}(2{r_{11}}{r_{31}}) + \frac{{{z_0}}}{{{b^2}}}(2{r_{21}}{r_{31}})} \right)\\ H = - 2\left( {\frac{{{x_0}}}{{{a^2}}}r_{12}^2 + \frac{{{y_0}}}{{{b^2}}}r_{22}^2 + \frac{{{z_0}}}{{{c^2}}}r_{32}^2 + \frac{{{x_0}}}{{{b^2}}}(2{r_{12}}{r_{22}}) + \frac{{{x_0}}}{{{c^2}}}(2{r_{12}}{r_{32}}) + \frac{{{y_0}}}{{{a^2}}}(2{r_{12}}{r_{22}}) + \frac{{{y_0}}}{{{c^2}}}(2{r_{22}}{r_{32}}) + \frac{{{z_0}}}{{{a^2}}}(2{r_{12}}{r_{32}}) + \frac{{{z_0}}}{{{b^2}}}(2{r_{22}}{r_{32}})} \right)\\ G = - 2\left( {\frac{{{x_0}}}{{{a^2}}}r_{13}^2 + \frac{{{y_0}}}{{{b^2}}}r_{23}^2 + \frac{{{z_0}}}{{{c^2}}}r_{33}^2 + \frac{{{x_0}}}{{{b^2}}}(2{r_{13}}{r_{23}}) + \frac{{{x_0}}}{{{c^2}}}(2{r_{13}}{r_{33}}) + \frac{{{y_0}}}{{{a^2}}}(2{r_{13}}{r_{23}}) + \frac{{{y_0}}}{{{c^2}}}(2{r_{23}}{r_{33}}) + \frac{{{z_0}}}{{{a^2}}}(2{r_{13}}{r_{33}}) + \frac{{{z_0}}}{{{b^2}}}(2{r_{23}}{r_{33}})} \right) \end{array} G=−2(a2x0r112+b2y0r212+c2z0r312+b2x0(2r11r21)+c2x0(2r11r31)+a2y0(2r11r21)+c2y0(2r21r31)+a2z0(2r11r31)+b2z0(2r21r31))H=−2(a2x0r122+b2y0r222+c2z0r322+b2x0(2r12r22)+c2x0(2r12r32)+a2y0(2r12r22)+c2y0(2r22r32)+a2z0(2r12r32)+b2z0(2r22r32))G=−2(a2x0r132+b2y0r232+c2z0r332+b2x0(2r13r23)+c2x0(2r13r33)+a2y0(2r13r23)+c2y0(2r23r33)+a2z0(2r13r33)+b2z0(2r23r33))
常数项:
J = x 0 2 a 2 + y 0 2 b 2 + z 0 2 c 2 − 1 J = \frac{{x_0^2}}{{{a^2}}} + \frac{{y_0^2}}{{{b^2}}} + \frac{{z_0^2}}{{{c^2}}} - 1 J=a2x02+b2y02+c2z02−1
3D高斯椭球
3D高斯与椭球的关系
回顾了多维高斯和椭球的基础知识,本小节终于到了解释3D高斯明明是个分布,为什么可以是个椭球。
三维正态分布的概率密度函数可以表示为:
f ( [ x , y , z ] ) = 1 ( 2 π ) 3 ∣ Σ ∣ 1 2 e − ( x − μ x ) T ( Σ ) − 1 ( x − μ x ) 2 f\left( {[x,y,z]} \right) = \frac{1}{{{{\left( {\sqrt {2\pi } } \right)}^3}{{\left| \Sigma \right|}^{\frac{1}{2}}}}}{e^{ - \frac{{{{\left( {x - {\mu _x}} \right)}^T}{{(\Sigma )}^{ - 1}}\left( {x - {\mu _x}} \right)}}{2}}} f([x,y,z])=(2π)3∣Σ∣211e−2(x−μx)T(Σ)−1(x−μx)
μ \mu μ是均值向量, μ 1 \mu _1 μ1、 μ 2 \mu _2 μ2、 μ 3 \mu _3 μ3分别是 x x x、 y y y、 z z z的均值:
μ = [ μ 1 μ 2 μ 3 ] \mu = \left[ {\begin{array}{c} {{\mu _1}}\\ {{\mu _2}}\\ {{\mu _3}} \end{array}} \right] μ= μ1μ2μ3
Σ \Sigma Σ是协方差矩阵,它是一个 3 × 3 3×3 3×3的矩阵, σ 1 2 \sigma _1^2 σ12、 σ 2 2 \sigma _2^2 σ22、 σ 3 2 \sigma _3^2 σ32分别是 x x x、 y y y、 z z z的方差, σ 12 \sigma _{12} σ12、 σ 13 \sigma _{13} σ13、 σ 23 \sigma _{23} σ23分别是 x x x与 y y y、 x x x与 z z z、 y y y与 z z z的协方差:
Σ = [ σ 1 2 σ 12 σ 13 σ 21 σ 2 2 σ 23 σ 31 σ 32 σ 3 2 ] \Sigma = \left[ {\begin{array}{c} {\sigma _1^2}&{{\sigma _{12}}}&{{\sigma _{13}}}\\ {{\sigma _{21}}}&{\sigma _2^2}&{{\sigma _{23}}}\\ {{\sigma _{31}}}&{{\sigma _{32}}}&{\sigma _3^2} \end{array}} \right] Σ= σ12σ21σ31σ12σ22σ32σ13σ23σ32
其中指数部分展开为:
( x − μ x ) T ( Σ ) − 1 ( x − μ x ) = ( x − μ 1 ) 2 σ 1 2 + ( y − μ 2 ) 2 σ 2 2 + ( z − μ 3 ) 2 σ 3 2 − 2 σ 12 ( x − μ 1 ) ( y − μ 2 ) σ 1 σ 2 − 2 σ 13 ( x − μ 1 ) ( ( z − μ 3 ) ) σ 1 σ 3 − 2 σ 23 ( y − μ 2 ) ( ( z − μ 3 ) ) σ 2 σ 3 {\left( {x - {\mu _x}} \right)^T}{(\Sigma )^{ - 1}}\left( {x - {\mu _x}} \right) = \frac{{{{\left( {x - {\mu _1}} \right)}^2}}}{{\sigma _1^2}} + \frac{{{{\left( {y - {\mu _2}} \right)}^2}}}{{\sigma _2^2}} + \frac{{{{\left( {z - {\mu _3}} \right)}^2}}}{{\sigma _3^2}} - \frac{{2{\sigma _{12}}\left( {x - {\mu _1}} \right)\left( {y - {\mu _2}} \right)}}{{{\sigma _1}{\sigma _2}}} - \frac{{2{\sigma _{13}}\left( {x - {\mu _1}} \right)\left( {\left( {z - {\mu _3}} \right)} \right)}}{{{\sigma _1}{\sigma _3}}} - \frac{{2{\sigma _{23}}\left( {y - {\mu _2}} \right)\left( {\left( {z - {\mu _3}} \right)} \right)}}{{{\sigma _2}{\sigma _3}}} (x−μx)T(Σ)−1(x−μx)=σ12(x−μ1)2+σ22(y−μ2)2+σ32(z−μ3)2−σ1σ22σ12(x−μ1)(y−μ2)−σ1σ32σ13(x−μ1)((z−μ3))−σ2σ32σ23(y−μ2)((z−μ3))
因此,公式展开为:
f ( [ x , y , z ] ) = 1 ( 2 π ) 3 ∣ Σ ∣ 1 2 e − 1 2 [ ( x − μ 1 ) 2 σ 1 2 + ( y − μ 2 ) 2 σ 2 2 + ( z − μ 3 ) 2 σ 3 2 − 2 σ 12 ( x − μ 1 ) ( y − μ 2 ) σ 1 σ 2 − 2 σ 13 ( x − μ 1 ) ( ( z − μ 3 ) ) σ 1 σ 3 − 2 σ 23 ( y − μ 2 ) ( ( z − μ 3 ) ) σ 2 σ 3 ] f\left( {[x,y,z]} \right) = \frac{1}{{{{\left( {\sqrt {2\pi } } \right)}^3}{{\left| \Sigma \right|}^{\frac{1}{2}}}}}{e^{ - \frac{1}{2}\left[ {\frac{{{{\left( {x - {\mu _1}} \right)}^2}}}{{\sigma _1^2}} + \frac{{{{\left( {y - {\mu _2}} \right)}^2}}}{{\sigma _2^2}} + \frac{{{{\left( {z - {\mu _3}} \right)}^2}}}{{\sigma _3^2}} - \frac{{2{\sigma _{12}}\left( {x - {\mu _1}} \right)\left( {y - {\mu _2}} \right)}}{{{\sigma _1}{\sigma _2}}} - \frac{{2{\sigma _{13}}\left( {x - {\mu _1}} \right)\left( {\left( {z - {\mu _3}} \right)} \right)}}{{{\sigma _1}{\sigma _3}}} - \frac{{2{\sigma _{23}}\left( {y - {\mu _2}} \right)\left( {\left( {z - {\mu _3}} \right)} \right)}}{{{\sigma _2}{\sigma _3}}}} \right]}} f([x,y,z])=(2π)3∣Σ∣211e−21[σ12(x−μ1)2+σ22(y−μ2)2+σ32(z−μ3)2−σ1σ22σ12(x−μ1)(y−μ2)−σ1σ32σ13(x−μ1)((z−μ3))−σ2σ32σ23(y−μ2)((z−μ3))]
对于一个确定的三维高斯函数,其概率密度函数的取值范围是有限的,最大值出现在均值点 x = μ {\rm{x = }}\mu x=μ,当 x x x远离 μ \mu μ时函数值趋近于0。因此对应的 ( x − μ x ) T ( Σ ) − 1 ( x − μ x ) {\left( {x - {\mu _x}} \right)^T}{(\Sigma )^{ - 1}}\left( {x - {\mu _x}} \right) (x−μx)T(Σ)−1(x−μx)取值范围也是从0到一个具体的、有限的数值。当 ( x − μ x ) T ( Σ ) − 1 ( x − μ x ) = c o n s t a n t {\left( {x - {\mu _x}} \right)^T}{(\Sigma )^{ - 1}}\left( {x - {\mu _x}} \right) = {\rm{constant }} (x−μx)T(Σ)−1(x−μx)=constant时,即在取值范围内随机取某个值 c o n s t a n t constant constant,可以定义某一个椭球面:
( x − μ 1 ) 2 σ 1 2 + ( y − μ 2 ) 2 σ 2 2 + ( z − μ 3 ) 2 σ 3 2 − 2 σ 12 ( x − μ 1 ) ( y − μ 2 ) σ 1 σ 2 − 2 σ 13 ( x − μ 1 ) ( ( z − μ 3 ) ) σ 1 σ 3 − 2 σ 23 ( y − μ 2 ) ( ( z − μ 3 ) ) σ 2 σ 3 = c o n s t a n t \frac{{{{\left( {x - {\mu _1}} \right)}^2}}}{{\sigma _1^2}} + \frac{{{{\left( {y - {\mu _2}} \right)}^2}}}{{\sigma _2^2}} + \frac{{{{\left( {z - {\mu _3}} \right)}^2}}}{{\sigma _3^2}} - \frac{{2{\sigma _{12}}\left( {x - {\mu _1}} \right)\left( {y - {\mu _2}} \right)}}{{{\sigma _1}{\sigma _2}}} - \frac{{2{\sigma _{13}}\left( {x - {\mu _1}} \right)\left( {\left( {z - {\mu _3}} \right)} \right)}}{{{\sigma _1}{\sigma _3}}} - \frac{{2{\sigma _{23}}\left( {y - {\mu _2}} \right)\left( {\left( {z - {\mu _3}} \right)} \right)}}{{{\sigma _2}{\sigma _3}}} = {\rm{constant}} σ12(x−μ1)2+σ22(y−μ2)2+σ32(z−μ3)2−σ1σ22σ12(x−μ1)(y−μ2)−σ1σ32σ13(x−μ1)((z−μ3))−σ2σ32σ23(y−μ2)((z−μ3))=constant
因为展开整理,可以得到椭圆的一般二次形式:
A x 2 + B y 2 + C z 2 + D x y + E x z + F y z + + G x + H y + I z + J = 0 A{{\rm{x}}^2} + B{y^2} + C{z^2} + Dxy + Exz + Fyz + + Gx + Hy + Iz + J = 0 Ax2+By2+Cz2+Dxy+Exz+Fyz++Gx+Hy+Iz+J=0
因此 ( x − μ x ) T ( Σ ) − 1 ( x − μ x ) {\left( {x - {\mu _x}} \right)^T}{(\Sigma )^{ - 1}}\left( {x - {\mu _x}} \right) (x−μx)T(Σ)−1(x−μx)在其取值范围内可以构成无数个椭圆面,大椭球面套小椭球面,共同组成了一个实心椭球。每个椭圆面都可以计算出对应的概论密度值 f ( [ x , y , z ] ) = c o n s t a n t f\left( {[x,y,z]} \right) = {\rm{constant}} f([x,y,z])=constant,即椭球面上的所有坐标点的概论密度值。
各向同性(Isotropic)和各向异性(Anisotropic)
进一步深入探讨各向同性和 各向异性在 3D高斯分布中的数学形式以及几何表现。
各向同性高斯分布: 指在所有方向上具有相同的性质,数据在各个方向上的扩展程度(方差)相同,协方差为0,协方差矩阵:
Σ = [ σ 2 0 0 0 σ 2 0 0 0 σ 2 ] \Sigma = \left[ {\begin{array}{c} {{\sigma ^2}}&0&0\\ 0&{{\sigma ^2}}&0\\ 0&0&{{\sigma ^2}} \end{array}} \right] Σ= σ2000σ2000σ2
三个维度之间无相关性(协方差为0),且方差一致。 对应的高斯分布在三维空间中呈现为一个球形。
各向异性高斯分布: 表示在不同方向上性质不同,数据在不同方向上的扩展程度(方差)不同,协方差可能不为0,协方差矩阵更一般化:
Σ = [ σ 1 2 σ 12 σ 13 σ 21 σ 2 2 σ 23 σ 31 σ 32 σ 3 2 ] \Sigma = \left[ {\begin{array}{c} {\sigma _1^2}&{{\sigma _{12}}}&{{\sigma _{13}}}\\ {{\sigma _{21}}}&{\sigma _2^2}&{{\sigma _{23}}}\\ {{\sigma _{31}}}&{{\sigma _{32}}}&{\sigma _3^2} \end{array}} \right] Σ= σ12σ21σ31σ12σ22σ32σ13σ23σ32
三个维度之间可能有相关性(协方差不为0),且方差互不一致。对应的高斯分布在三维空间中呈现为一个椭球体,即沿不同主轴方向拉伸或压缩。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Ddef plot_ellipsoid(ax, mean, cov, color='blue', n_points=100):"""在给定的axes上绘制一个基于协方差矩阵的椭球。"""# 生成单位球面点u = np.linspace(0, 2 * np.pi, n_points)v = np.linspace(0, np.pi, n_points)x = np.outer(np.cos(u), np.sin(v))y = np.outer(np.sin(u), np.sin(v))z = np.outer(np.ones_like(u), np.cos(v))# 协方差矩阵特征分解eigvals, eigvecs = np.linalg.eigh(cov)# 按特征值大小排序(从大到小)idx = np.argsort(eigvals)[::-1]eigvals = eigvals[idx]eigvecs = eigvecs[:, idx]# 构建缩放矩阵scale_matrix = np.diag(np.sqrt(eigvals)) # 取平方根得到标准差# 将单位球变换为椭球for i in range(len(x)):points = np.column_stack([x[i], y[i], z[i]])transformed = points @ (scale_matrix @ eigvecs.T) + meanx[i], y[i], z[i] = transformed[:, 0], transformed[:, 1], transformed[:, 2]# 绘制椭球ax.plot_surface(x, y, z, color=color, alpha=0.6, linewidth=0, antialiased=True)# 创建图形和子图
fig = plt.figure(figsize=(15, 7))# 各向同性椭球(球体)
ax1 = fig.add_subplot(121, projection='3d')
mean_iso = [0, 0, 0]
cov_iso = np.eye(3)
plot_ellipsoid(ax1, mean_iso, cov_iso, color='skyblue')# 设置坐标轴标签
ax1.set_xlabel('X axis')
ax1.set_ylabel('Y axis')
ax1.set_zlabel('Z axis')
ax1.set_title('Isotropic Sphere')# 调整视角以正对Z轴
ax1.view_init(elev=90, azim=0)# 各向异性椭球
ax2 = fig.add_subplot(122, projection='3d')
mean_aniso = [0, 0, 0]
cov_aniso = np.array([[1, 0.5, 0.3],[0.5, 2, 0.4],[0.3, 0.4, 3]])
plot_ellipsoid(ax2, mean_aniso, cov_aniso, color='salmon')# 设置坐标轴标签
ax2.set_xlabel('X axis')
ax2.set_ylabel('Y axis')
ax2.set_zlabel('Z axis')
ax2.set_title('Anisotropic Ellipsoid')# 调整视角以正对Z轴
ax2.view_init(elev=90, azim=0)plt.tight_layout()
plt.savefig("gaussian_distribution_visualizer.jpg", dpi=300, bbox_inches='tight')
plt.show()
总结
尽可能简单、详细的介绍了3D高斯与椭球的关系。