【Gaussian splatting系列学习】(二)

3DGS系列(一)
3DGS系列(二)
3DGS系列(三)

NeRF中使用的相机模型:

  • 世界坐标系
  • 相机坐标系
  • 归一化坐标系
  • 像素坐标系

CG中更常用的变换:

  1. 观测变换(世界坐标系到相机坐标系)

    “横看成岭侧成峰,远近高低各不同”,实际上是仿射变换 w=Ax+b

  2. 投影变换(从相机坐标系到2D的空间):
    3D到2D,正交投影与z无关,透视投影与z相关

  3. 视口变换

  4. 光栅化
    在这里插入图片描述

可参考《GAMES101-现代计算机图形学入门-闫令琪》
在这里插入图片描述

正交投影:

  • 立方体: [ l , r ] × [ b , t ] × [ f , n ] [l, r]\times [b,t]\times[f,n] [l,r]×[b,t]×[f,n]
  • 平移到原点
  • 立方体缩放到 [ − 1 , 1 ] 3 [-1,1]^3 [1,1]3的正方体
  • 仿射变换

在这里插入图片描述

透视投影:

  • 远小近大
  • 先把锥体压成立方体
  • 再正交投影

在这里插入图片描述
问题:

  • 透视投影是非线性的,即非仿射变换
  • 我们希望高斯椭球一直进行仿射变换

不管是正交投影还是透视投影,最后得到一个单位正方体,下面要把它拉回最开始想要的h,w
进行拉伸:

  • 和z无关
  • [ − 1 , 1 ] 2 [-1,1]^2 [1,1]2的矩阵变换至[0,w] x [0,h]

光栅化:
定义:

  • 把东西画在屏幕上
  • 连续转离散
  • 使用的方法:采样
    在这里插入图片描述

3D高斯的观测变换

物理坐标系(世界坐标系):

  • 高斯核中心 t k = [   t 0   t 1   t 2 ] T t_k=[\ t_0 \ t_1 \ t_2]^T tk=[ t0 t1 t2]T
  • 高斯核: r k ′ ′ ( t ) = G V k ′ ′ ( t − t k ) r^{''}_k(t)=G_{V_k^{''}}(t-t_k) rk′′(t)=GVk′′(ttk)
  • V k ′ ′ V_k^{''} Vk′′是协方差矩阵

相机坐标系:

u = ϕ ( t ) = W t + d u=\phi(t)=Wt+d u=ϕ(t)=Wt+d

  • 高斯核中心 u k = [   u 0   u 1   u 2 ] T u_k=[\ u_0 \ u_1 \ u_2]^T uk=[ u0 u1 u2]T
  • 高斯核: r k ′ ′ ( u ) = G V k ′ ′ ( u − u k ) r^{''}_k(u)=G_{V_k^{''}}(u-u_k) rk′′(u)=GVk′′(uuk)
  • 均值 u k = W t k + d u_k=Wt_k+d uk=Wtk+d
  • 协方差矩阵 V k ′ = W V k ′ ′ W T V_k^{'}=WV_k^{''}W^T Vk=WVk′′WT

投影变换:
投影变换矩阵: x = m ( t ) x=m(t) x=m(t),非线性
在这里插入图片描述

  • 高斯核中心 x k = [   x 0   x 1   x 2 ] T x_k=[\ x_0 \ x_1 \ x_2]^T xk=[ x0 x1 x2]T
  • 高斯核: r k ( x ) = G V k ( x − x k ) r_k(x)=G_{V_k}(x-x_k) rk(x)=GVk(xxk)
  • 均值 x k = m ( u k ) x_k=m(u_k) xk=m(uk)(一个点可以用非线性变换)
  • 协方差矩阵?

为什么要引入雅克比矩阵?

协方差矩阵可以直接使用投影变换吗?

  • 不可以
  • 从透视投影到正交投影
  • 非线性变换,非仿射

怎么办?

  • 引入雅克比近似矩阵。

雅克比矩阵

keywords:

  • 泰勒展开
  • 线性逼近

    坐标变换:
  • f 1 ( x ) = x + s i n ( y ) f_1(x)=x+sin(y) f1(x)=x+sin(y)
  • f 2 ( y ) = y + s i n ( x ) f_2(y)=y+sin(x) f2(y)=y+sin(x)

    雅克比矩阵: J = [ d f 1 d x d f 1 d y d f 2 d x d f 2 d y ] = [ 1 cos ⁡ ( y ) cos ⁡ ( x ) 1 ] J=\left[\begin{array}{ll} \frac{d f_1}{d x} & \frac{d f_1}{d y} \\ \frac{d f_2}{d x} & \frac{d f_2}{d y} \end{array}\right]=\left[\begin{array}{cc} 1 & \cos (y) \\ \cos (x) & 1 \end{array}\right] J=[dxdf1dxdf2dydf1dydf2]=[1cos(x)cos(y)1]

理解:对非线性变换的局部线性近似

协方差矩阵: V k = J V k ′ J T V_k=JV_k^{'}J^T Vk=JVkJT (用雅克比矩阵代替仿射变换矩阵)

再结合观测变换: V k = J V k ′ J T = J W V k ′ ′ W T J T V_k=JV_k^{'}J^T=JWV_k^{''}W^TJ^T Vk=JVkJT=JWVk′′WTJT

J = ∂ m ( u k ) ∂ u J=\frac{\partial m(u_k)}{\partial u} J=um(uk) (求导)

此时均值和协方差在一个坐标系里吗?
均值:在NDC坐标系,范围[-1,1]的立方体内
协方差矩阵:在未缩放的正交坐标系里,不需要再做视口变换,范围是[l,r] x [b,t] x [f,n]

投影变换的雅克比矩阵

在这里插入图片描述

所以通过投影变换,原来的 [ x , y , z ] T [x,y,z]^T [x,y,z]T 变成了 :(n=near, f=far)
求导得到雅可比矩阵。
在这里插入图片描述
视口变换:

像素坐标系

  • 对高斯核中心进行平移+缩放

  • 足迹渲染:离散计算

    距离均值越近,值越大。

    G ( x ^ ) = e x p ( − 1 2 ( x − μ ) T V k − 1 ( x − μ ) ) G(\hat x)=exp(-\frac{1}{2}(x-\mu)^TV_k^{-1}(x-\mu)) G(x^)=exp(21(xμ)TVk1(xμ))

Code:

3D高斯中心的变换:
在这里插入图片描述

3D高斯协方差的变换:
mean:世界坐标系的中心点
在这里插入图片描述
下一步,需要计算雪球的颜色。

Reference:B站UP主 SY_007 视频讲解内容

A u t h o r : C h i e r Author: Chier Author:Chier

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值