Gaussian Splatting-投影矩阵与Jacobian矩阵
投影矩阵
将3D协方差投影到2D, 获得一个2×2的协方差矩阵
\[\Sigma' = J W \Sigma W^T J^T\]其中变换矩阵$W$应该是将点云从世界坐标系变换到相机坐标系。J是一个Jacobian矩阵, 用来近似投影操作。
与传统的计算机视觉方法相比,可能会有疑惑:为什么不使用相机内参矩阵K来完成投影操作?
投影: K与Jacobian
1
𝐽 is the Jacobian of the affine approximation of the projective transformation.
结论: 点的投影过程是一个非线性变换, 无法直接用于表示分布的协方差矩阵的投影。从物理的角度来说, 3D的信息变为了2D, 其实是损失了一个维度的信息, 我们使用深度图恢复点云的时候, 实际上是使用了每个2D像素点额外的1D深度信息。
假设[A, b]是一个线性变换, 那么空间中的高斯分布$(\mu, \Sigma)$经过变换后变为:
\[\mu_Y = A\mu + \mathbf{b}\] \[\Sigma_Y = A\Sigma A^T\]线性变换
- 加法封闭性
- 数乘封闭性
而使用内参矩阵K进行透视投影这个过程是非线性的,会使表示分布的协方差矩阵信息丢失。
\[\begin{bmatrix} \mu \\ \nu \\ 1 \\ \end{bmatrix} = \frac{1}{Z_c}K \begin{bmatrix} X_c \\ Y_c \\ Z_c \\ \end{bmatrix}\]因为$\frac{1}{Z_c}$这一非线性项会出现在$\mu$和$\nu$中, 因此使用内参矩阵$K$的投影过程是非线性的。而为了维持分布的特性,我们需要使用线性变换。这就是为什么需要使用Jacobian矩阵来近似线性变换。
Jacobian是如何近似的
我们前面提到了, 如果是线性变换, 那么协方差矩阵的变换形式是:
\[\Sigma_{new}=A\Sigma A^T\]能够维持分布,也就是说能够维持协方差矩阵的半正定性和对称性。
$f$本身是$\R^n\rightarrow\R^m$进行两个空间之间的映射, Jacobian是对这个映射$f$的拟合。
一般来说, $J$通常由下面的公式定义:
\[\mathbf{J} = \begin{bmatrix} \frac{\partial f}{\partial x_1} & \cdots & \frac{\partial f}{\partial x_n} \end{bmatrix} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}\]可以看到是每一维映射结果对变量各个维度分量的偏导数。
关于为什么是这个顺序, 可以参考该视频下的评论。
Q:为什么雅可比矩阵可以线性化非线性函数?
雅可比矩阵可以理解为一阶泰勒展开在向量上的拓展, 因为之前遇到的一阶泰勒展开要么是单变量函数, 要么是多变量函数。
\(f(x) \approx f(x_0)+f'(x_0)(x - x_0)\) 令变量$\mathbf{x}=(a,b), \mathbf{x_0}=(a_0, b_0)$ \(f(a) \approx f(a_0)+\frac{\partial f(a)}{\partial a}(a - a_0)\)
假设 \(f(x, y) = \begin{bmatrix} x^2 + y \\ x + y^2 \end{bmatrix}\)
可以写为
\[f(x, y) = \begin{bmatrix} f_{1}(x, y) \\ f_{2}(x, y) \end{bmatrix} = \begin{bmatrix} x^2 + y \\ x + y^2 \\ \end{bmatrix}\]根据雅可比矩阵的定义
\[J(x, y) = \begin{bmatrix} \frac{\partial f_1}{\partial x} & \frac{\partial f_1}{\partial y} \\ \frac{\partial f_2}{\partial x} & \frac{\partial f_2}{\partial y} \\ \end{bmatrix} = \begin{bmatrix} 2x & 1 \\ 1 & 2y \\ \end{bmatrix}\]$f$在$x_0$处的泰勒一阶展开
\[f(x) \approx f(x_0, y_0)+J(x_0, y_0)\begin{bmatrix} x - x_0 \\ y - y_0 \end{bmatrix}\]假设$x_0 = 1, y_0 = 2$, 且$\Delta x= x - x_0$, $\Delta y= y - y_0$
\[f(x) \approx \begin{bmatrix} 3 \\ 5 \end{bmatrix} + \begin{bmatrix} 2 & 1 \\ 1 & 4 \\ \end{bmatrix}\begin{bmatrix} \Delta x \\ \Delta y \end{bmatrix}\]至此, f(x, y)已经在$(x_0, y_0)$处实现了局部线性近似。