【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球
文章目錄
- 【三維重建】【3DGS系列】【深度學習】3DGS的理論基礎知識之如何形成高斯橢球
- 前言
- 高斯函數
- 一維高斯
- 多維高斯
- 橢球
- 基本定義
- 一般二次形式
- 3D高斯橢球
- 3D高斯與橢球的關系
- 各向同性(Isotropic)和各向異性(Anisotropic)
- 總結
前言
在詳細解析3DGS代碼之前,首要任務是成功運行3DGS代碼【理論基礎及代碼運行(win11下)解析參考教程】,后續學習才有意義。本博客講解3DGS中如何形成高斯橢球,不涉及具體的模塊代碼。
參考: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πσ?1?e?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πσ?1?e?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?...σn?1?e?2σ1?2(x1??μ1?)2??2σ2?2(x2??μ2?)2?...?2σn?2(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σ1?2(x1??μ1?)2?+2σ2?2(x2??μ2?)2?...+2σn?2(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?] ?σ12?1?0....0?0σ22?1?....0?................?00....σn2?1?? ?[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] ?σ12?0....0?0σ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∣Σ∣21?1?e?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∣Σ∣21?1?e?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?+x0?2?
( 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?+y0?2?
( 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?+z0?2? - 整理為一般二次形式:
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??+(a2x0?2?+b2y0?2?+c2z0?2?)=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=(a2x0?2?+b2y0?2?+c2z0?2?)。
當橢球中心點位于坐標原點 ( 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?x0?y′=y?y0?z′=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α0?001? ?
旋轉后的坐標 ( 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β?010?sinβ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β+z1?cosβ=?(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?(γ)= ?100?0cosγ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?(α)= ?r11?r21?r31??r12?r22?r32??r13?r23?r33?? ?= ?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??+c2r312??B=a2r122??+b2r222??+c2r322??C=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(a2r11?r12??+b2r21?r22??+c2r31?r32??)E=2(a2r11?r13??+b2r21?r23??+c2r31?r33??)F=2(a2r12?r13??+b2r22?r23??+c2r32?r33??)?
一次項系數:
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(a2x0??r112?+b2y0??r212?+c2z0??r312?+b2x0??(2r11?r21?)+c2x0??(2r11?r31?)+a2y0??(2r11?r21?)+c2y0??(2r21?r31?)+a2z0??(2r11?r31?)+b2z0??(2r21?r31?))H=?2(a2x0??r122?+b2y0??r222?+c2z0??r322?+b2x0??(2r12?r22?)+c2x0??(2r12?r32?)+a2y0??(2r12?r22?)+c2y0??(2r22?r32?)+a2z0??(2r12?r32?)+b2z0??(2r22?r32?))G=?2(a2x0??r132?+b2y0??r232?+c2z0??r332?+b2x0??(2r13?r23?)+c2x0??(2r13?r33?)+a2y0??(2r13?r23?)+c2y0??(2r23?r33?)+a2z0??(2r13?r33?)+b2z0??(2r23?r33?))?
常數項:
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∣Σ∣21?1?e?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?σ2?2σ12?(x?μ1?)(y?μ2?)??σ1?σ3?2σ13?(x?μ1?)((z?μ3?))??σ2?σ3?2σ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∣Σ∣21?1?e?21?[σ12?(x?μ1?)2?+σ22?(y?μ2?)2?+σ32?(z?μ3?)2??σ1?σ2?2σ12?(x?μ1?)(y?μ2?)??σ1?σ3?2σ13?(x?μ1?)((z?μ3?))??σ2?σ3?2σ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?σ2?2σ12?(x?μ1?)(y?μ2?)??σ1?σ3?2σ13?(x?μ1?)((z?μ3?))??σ2?σ3?2σ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] Σ= ?σ200?0σ20?00σ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()
總結
盡可能簡單、詳細的介紹了高斯橢球的形成原理。