NeRF 使用一个 MLP 来感知隐式表示(Latent representation),它的假设函数(Hypothesis funtion)定义为 H : ( x , d ) → ( c , σ ) H:(\mathbf{x},\mathbf{d})\to(\mathbf{c},\sigma) H:(x,d)→(c,σ)。其中 x = ( x , y , z ) \mathbf{x}=(x,y,z) x=(x,y,z) 表示观察位置(归一化), d = ( θ , ϕ ) \mathbf{d}=(\theta,\phi) d=(θ,ϕ) 表示观察方向, c = ( r , g , b ) \mathbf{c}=(r,g,b) c=(r,g,b) 表示发光颜色, σ \sigma σ 表示体素密度。
这里只需要两个角度 θ \theta θ 和 ϕ \phi ϕ 就能表示方向,因为球坐标下:
{ x = r sin θ cos ϕ y = r sin θ sin ϕ z = r cos θ \begin{cases} x=r\sin\theta\cos\phi\\ y=r\sin\theta\sin\phi\\ z=r\cos\theta \end{cases} ⎩⎪⎨⎪⎧x=rsinθcosϕy=rsinθsinϕz=rcosθ
在表示方向时令 r ≡ 1 r\equiv1 r≡1,此时 d \mathbf{d} d 只需要 2 2 2 个自由度即可表示任意方向。
作者采信了 Rahaman 等人的结论,即神经网络倾向于学习低频信号。为了提高神经网络学习高频部分的能力,可以利用高频的映射函数将输入映射到高维空间。NeRF 延续了这种思想,作者设计了作用于 MLP 输入的位置编码(Positional encoding)函数 γ : R → R 2 L \gamma:\mathbb{R}\to\mathbb{R}^{2L} γ:R→R2L,其中 L L L 控制了位置编码的频率:
γ ( p ) = ( sin 2 0 π p cos 2 0 π p sin 2 1 π p cos 2 1 π p ⋯ sin 2 L − 1 π p cos 2 L − 1 π p ) \gamma(p)= \begin{pmatrix} \sin{2^0\pi p}\\ \cos{2^0\pi p}\\ \sin{2^1\pi p}\\ \cos{2^1\pi p}\\ \cdots\\ \sin{2^{L-1}\pi p}\\ \cos{2^{L-1}\pi p}\\ \end{pmatrix} γ(p)=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎛sin20πpcos20πpsin21πpcos21πp⋯sin2L−1πpcos2L−1πp⎠⎟⎟⎟⎟⎟⎟⎟⎟⎞
实验显示,对 x \mathbf{x} x 取 L = 10 L=10 L=10、 d \mathbf{d} d 取 L = 4 L=4 L=4 能够得到相对优秀的结果。
上图中,位置编码维度 dim γ ( x ) = 3 × 2 × 10 = 60 \dim\gamma(\mathbf{x})=3\times2\times10=60 dimγ(x)=3×2×10=60, dim γ ( d ) = 3 × 2 × 4 = 24 \dim\gamma(\mathbf{d})=3\times2\times4=24 dimγ(d)=3×2×4=24。
γ ( x ) \gamma(\mathbf{x}) γ(x) 经过 8 8 8 层 P o s _ E n c i \mathrm{Pos\_Enc}_i Pos_Enci 后产生 256 256 256 维的特征向量。特别地,NeRF 引入了 DeepSDF 架构中的 Skip connection, P o s _ E n c 4 \mathrm{Pos\_Enc}_4 Pos_Enc4 的输出会先与 γ ( x ) \gamma(\mathbf{x}) γ(x) 进行拼接,再进入 P o s _ E n c 5 \mathrm{Pos\_Enc}_5 Pos_Enc5。
256 256 256 维的特征向量经过 1 1 1 层 S i g m a _ O u t \mathrm{Sigma\_Out} Sigma_Out 产生体素密度 σ \sigma σ;此外,该特征向量送入 1 1 1 层 P o s _ E n c _ F i n \mathrm{Pos\_Enc\_Fin} Pos_Enc_Fin 后与 γ ( d ) \gamma(\mathbf{d}) γ(d) 拼接,依次送入 1 1 1 层 D i r _ E n c \mathrm{Dir\_Enc} Dir_Enc 和 1 1 1 层 R G B _ O u t \mathrm{RGB\_Out} RGB_Out,产生发光颜色 c \mathbf{c} c。
P o s _ E n c i ( x ) = R e L U ( W T x ) , W ∈ R ⋅ × 256 \mathrm{Pos\_Enc}_i(x)=\mathrm{ReLU}(W^Tx),W\in\mathbb{R}^{\cdot\times256} Pos_Enci(x)=ReLU(WTx),W∈R⋅×256 P o s _ E n c _ F i n ( x ) = R e L U ( W T x ) , W ∈ R 256 × 256 \mathrm{Pos\_Enc\_Fin}(x)=\mathrm{ReLU}(W^Tx),W\in\mathbb{R}^{256\times256} Pos_Enc_Fin(x)=ReLU(WTx),W∈R256×256 D i r _ E n c ( x ) = R e L U ( W T x ) , W ∈ R 280 × 128 \mathrm{Dir\_Enc}(x)=\mathrm{ReLU}(W^Tx),W\in\mathbb{R}^{280\times128} Dir_Enc(x)=ReLU(WTx),W∈R280×128 S i g m a _ O u t ( x ) = R e L U ( W T x ) , W ∈ R 256 × 1 \mathrm{Sigma\_Out}(x)=\mathrm{ReLU}(W^Tx),W\in\mathbb{R}^{256\times1} Sigma_Out(x)=ReLU(WTx),W∈R256×1 R G B _ O u t ( x ) = s i g m o i d ( W T x ) , W ∈ R 128 × 3 \mathrm{RGB\_Out}(x)=\mathrm{sigmoid}(W^Tx),W\in\mathbb{R}^{128\times3} RGB_Out(x)=sigmoid(WTx),W∈R128×3
观察射线可以参数化为 t t t 的函数(从 o r i g i n \mathbf{o}\mathrm{rigin} origin 沿 d i r e c t i o n \mathbf{d}\mathrm{irection} direction 前进) r ( t ) = o + t d \mathbf{r}(t)=\mathbf{o}+t\mathbf{d} r(t)=o+td。渲染时,通过在观察射线上不断对 MLP 进行查询 H ( r , d ) = ( c , σ ) H(\mathbf{r},\mathbf{d})=(\mathbf{c},\sigma) H(r,d)=(c,σ) 得到体素颜色和密度。给定视锥近点 t n t_n tn 和远点 t f t_f tf,理想的渲染颜色为:
C ( r ) = ∫ t n t f T ( t ) σ ( r ) c ( r , d ) d t C(\mathbf{r})=\int_{t_n}^{t_f}{T(t)\sigma(\mathbf{r})\mathbf{c}(\mathbf{r},\mathbf{d})\mathrm{d}t} C(r)=∫tntfT(t)σ(r)c(r,d)dt
其中 T ( t ) T(t) T(t) 为累积透射比系数(体素从无穷远到视锥近点的积分贡献):
T ( s ) = exp ( − ∫ t n t σ ( r ) d s ) T(s)=\exp\left(-\int_{t_n}^t{\sigma(\mathbf{r})\mathrm{d}s}\right) T(s)=exp(−∫tntσ(r)ds)
使用黎曼和进行离散化,将 [ t n , t f ] [t_n,t_f] [tn,tf] 划分为 N N N 个均匀子区间,在这些子区间内各自均匀采样 t i t_i ti(其中 1 ≤ i ≤ N 1\le i\le N 1≤i≤N):
t i ∼ U [ t n + ( i − 1 ) ⋅ t f − t n N , t n + i ⋅ t f − t n N ] t_i\sim\mathcal{U}\left[t_n+(i-1)\cdot\frac{t_f-t_n}{N},t_n+i\cdot\frac{t_f-t_n}{N}\right] ti∼U[tn+(i−1)⋅Ntf−tn,tn+i⋅Ntf−tn]
当 N N N 足够大时,不妨认为每段区间内各数值函数为定值,可以使用矩形面积计算积分。记区间长度 δ i = t i + 1 − t i \delta_i=t_{i+1}-t_i δi=ti+1−ti,此时累积透射比系数为:
T i = exp ( − ∫ t 1 t i σ ( r ) d s ) = exp ( − ∑ j = 1 i − 1 σ j δ j ) T_i=\exp\left(-\int_{t_1}^{t_i}{\sigma(\mathbf{r})\mathrm{d}s}\right)=\exp\left(-\sum_{j=1}^{i-1}{\sigma_j\delta_j}\right) Ti=exp(−∫t1tiσ(r)ds)=exp(−j=1∑i−1σjδj)
类似地,渲染颜色的离散化过程:
C ^ ( r ) = ∑ i = 1 N ∫ t i t i + 1 T ( t ) σ ( r ) c ( r , d ) d t = ∑ i = 1 N σ i c i ∫ t i t i + 1 exp ( − ∫ t 1 t i σ ( r ) d s − ∫ t i t σ ( r ) d s ) d t = ∑ i = 1 N T i σ i c i ∫ t i t i + 1 exp ( − σ i ∫ t i t d s ) d t = ∑ i = 1 N T i σ i c i ∫ t i t i + 1 e − σ i ( t − t i ) d t = ∑ i = 1 N T i σ i c i ⋅ e − σ i ( t − t i ) − σ i ∣ t i t i + 1 = − ∑ i = 1 N T i ( e − σ i ( t i + 1 − t i ) − 1 ) c i = ∑ i = 1 N T i ( 1 − e − σ i δ i ) c i \begin{aligned} \hat{C}(\mathbf{r}) &=\sum_{i=1}^{N}{\int_{t_i}^{t_{i+1}}{T(t)\sigma(\mathbf{r})\mathbf{c}(\mathbf{r},\mathbf{d})\mathrm{d}t}}\\ &=\sum_{i=1}^{N}{\sigma_i\mathbf{c}_i\int_{t_i}^{t_{i+1}}{\exp\left(-\int_{t_1}^{t_i}{\sigma(\mathbf{r})\mathrm{d}s}-\int_{t_i}^t{\sigma(\mathbf{r})\mathrm{d}s}\right)\mathrm{d}t}}\\ &=\sum_{i=1}^{N}{T_i\sigma_i\mathbf{c}_i\int_{t_i}^{t_{i+1}}{\exp\left(-\sigma_i\int_{t_i}^t{\mathrm{d}s}\right)\mathrm{d}t}}\\ &=\sum_{i=1}^{N}{T_i\sigma_i\mathbf{c}_i\int_{t_i}^{t_{i+1}}{e^{\displaystyle{-\sigma_i(t-t_i)}}\mathrm{d}t}}\\ &=\sum_{i=1}^{N}{T_i\sigma_i\mathbf{c}_i\cdot\left.\frac{e^{\displaystyle{-\sigma_i(t-t_i)}}}{-\sigma_i}\right|_{t_i}^{t_{i+1}}}\\ &=-\sum_{i=1}^{N}{T_i\left(e^{\displaystyle{-\sigma_i(t_{i+1}-t_i)}}-1\right)\mathbf{c}_i}\\ &=\sum_{i=1}^{N}{T_i\left(1-e^{\displaystyle{-\sigma_i\delta_i}}\right)\mathbf{c}_i}\\ \end{aligned} C^(r)=i=1∑N∫titi+1T(t)σ(r)c(r,d)dt=i=1∑Nσici∫titi+1exp(−∫t1tiσ(r)ds−∫titσ(r)ds)dt=i=1∑NTiσici∫titi+1exp(−σi∫titds)dt=i=1∑NTiσici∫titi+1e−σi(t−ti)dt=i=1∑NTiσici⋅−σie−σi(t−ti)∣∣∣∣∣titi+1=−i=1∑NTi(e−σi(ti+1−ti)−1)ci=i=1∑NTi(1−e−σiδi)ci
为了改变 NeRF 的低效性,排除无关空间和遮挡区域这些对渲染没有贡献的部分,采用两级粒度的分层采样(即采用粗粒度和细粒度两个 MLP)。
粗粒度渲染中,采样 N c N_c Nc 个点,记 c i \mathbf{c}_i ci 的加权系数 w i = T i ( 1 − e − σ i δ i ) w_i=T_i\left(1-e^{\displaystyle{-\sigma_i\delta_i}}\right) wi=Ti(1−e−σiδi):
C ^ c ( r ) = ∑ i = 1 N c w i c i \hat{C}_c(\mathbf{r})=\sum_{i=1}^{N_c}{w_i\mathbf{c}_i} C^c(r)=i=1∑Ncwici
归一化的系数 w ^ i = w i ∑ j = 1 N c w j ∈ [ 0 , 1 ] \hat{w}_i=\cfrac{w_i}{\displaystyle\sum_{j=1}^{N_c}{w_j}}\in[0,1] w^i=j=1∑Ncwjwi∈[0,1] 可以理解为概率密度函数(PDF)。通过逆变换采样(Inverse transform sampling)采样 N f N_f Nf 个点,总共 N c + N f N_c+N_f Nc+Nf 个点用于细粒度渲染:
C ^ f ( r ) = ∑ i = 1 N c + N f w i c i \hat{C}_f(\mathbf{r})=\sum_{i=1}^{N_c+N_f}{w_i\mathbf{c}_i} C^f(r)=i=1∑Nc+Nfwici
不难发现,这 N f N_f Nf 个点会更多落在 w ^ i \hat{w}_i w^i 较大的区间,也就是对颜色计算贡献更大的体素,因此能够提升 NeRF 对细节的表现。
采用两级粒度 MLP 的二范数损失的平方和:
L = ∑ r ∈ R [ ∥ C ^ c ( r ) − C ( r ) ∥ 2 2 + ∥ C ^ f ( r ) − C ( r ) ∥ 2 2 ] \mathcal{L}=\sum_{\mathbf{r}\in\mathcal{R}}\left[\left\|\hat{C}_c(\mathbf{r})-C(\mathbf{r})\right\|^2_2+\left\|\hat{C}_f(\mathbf{r})-C(\mathbf{r})\right\|^2_2\right] L=r∈R∑[∥∥∥C^c(r)−C(r)∥∥∥22+∥∥∥C^f(r)−C(r)∥∥∥22]
其中 R \mathcal{R} R 为一个 batch 中采样光线的集合。
相机的外参矩阵用于将世界坐标系变换到相机坐标系;而内参矩阵用于将相机坐标系变换到像素坐标系。
给定世界坐标系 P w = ( X w , Y w , Z w ) \mathbf{P}_w=(X_w,Y_w,Z_w) Pw=(Xw,Yw,Zw) ,相机坐标系 P c = ( X c , Y c , Z c ) \mathbf{P}_c=(X_c,Y_c,Z_c) Pc=(Xc,Yc,Zc) 一般取世界坐标系下相机的位置作为原点、相机的朝向作为 Z Z Z 轴的方向。 P c \mathbf{P}_c Pc 可以由 P w \mathbf{P}_w Pw 经过旋转和平移变换得到,为了方便引入平移变换,后面的变换矩阵使用四元数表示:
( x , y , z , w ) ≡ ( x w , y w , z w ) (x,y,z,w)\equiv\left(\frac{x}{w},\frac{y}{w},\frac{z}{w}\right) (x,y,z,w)≡(wx,wy,wz)
旋转矩阵(绕 x x x、 y y y、 z z z 三轴):
R x = ( 1 0 0 0 0 cos θ − sin θ 0 0 sin θ cos θ 0 0 0 0 1 ) \mathbf{R}_x= \begin{pmatrix} 1 & 0 & 0 & 0\\ 0 & \cos\theta & -\sin\theta & 0\\ 0 & \sin\theta & \cos\theta & 0\\ 0 & 0 & 0 & 1 \end{pmatrix} Rx=⎝⎜⎜⎛10000cosθsinθ00−sinθcosθ00001⎠⎟⎟⎞ R y = ( cos θ 0 sin θ 0 0 1 0 0 − sin θ 0 cos θ 0 0 0 0 1 ) \mathbf{R}_y= \begin{pmatrix} \cos\theta & 0 & \sin\theta & 0\\ 0 & 1 & 0 & 0\\ -\sin\theta & 0 & \cos\theta & 0\\ 0 & 0 & 0 & 1 \end{pmatrix} Ry=⎝⎜⎜⎛cosθ0−sinθ00100sinθ0cosθ00001⎠⎟⎟⎞ R z = ( cos θ − sin θ 0 0 sin θ cos θ 0 0 0 0 1 0 0 0 0 1 ) \mathbf{R}_z= \begin{pmatrix} \cos\theta & -\sin\theta & 0 & 0\\ \sin\theta & \cos\theta & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix} Rz=⎝⎜⎜⎛cosθsinθ00−sinθcosθ0000100001⎠⎟⎟⎞
平移矩阵:
T = ( 0 0 0 t x 0 0 0 t y 0 0 0 t z 0 0 0 1 ) \mathbf{T}= \begin{pmatrix} 0 & 0 & 0 & t_x\\ 0 & 0 & 0 & t_y\\ 0 & 0 & 0 & t_z\\ 0 & 0 & 0 & 1 \end{pmatrix} T=⎝⎜⎜⎛000000000000txtytz1⎠⎟⎟⎞
世界坐标到相机坐标的变换:
P c = ( X c Y c Z c 1 ) = R x R y R z T ( X w Y w Z w 1 ) = ( R 3 × 3 t 3 × 1 0 1 × 3 1 1 × 1 ) 4 × 4 P w \mathbf{P}_c=\begin{pmatrix}X_c\\Y_c\\Z_c\\1\end{pmatrix}= \mathbf{R}_x\mathbf{R}_y\mathbf{R}_z\mathbf{T}\begin{pmatrix}X_w\\Y_w\\Z_w\\1\end{pmatrix}= \begin{pmatrix}\mathbf{R}_{3\times3} & \mathbf{t}_{3\times1}\\\mathbf{0}_{1\times3} & \mathbf{1}_{1\times1}\end{pmatrix}_{4\times4}\mathbf{P}_w Pc=⎝⎜⎜⎛XcYcZc1⎠⎟⎟⎞=RxRyRzT⎝⎜⎜⎛XwYwZw1⎠⎟⎟⎞=(R3×301×3t3×111×1)4×4Pw
其中, R \mathbf{R} R 和 t \mathbf{t} t 就是相机的外参:
R 3 × 3 = ( 1 0 0 0 cos θ x − sin θ x 0 sin θ x cos θ x ) ( cos θ y 0 sin θ y 0 1 0 − sin θ y 0 cos θ y ) ( cos θ z − sin θ z 0 sin θ z cos θ z 0 0 0 1 ) \mathbf{R}_{3\times3}= \begin{pmatrix} 1 & 0 & 0\\ 0 & \cos\theta_x & -\sin\theta_x\\ 0 & \sin\theta_x & \cos\theta_x \end{pmatrix} \begin{pmatrix} \cos\theta_y & 0 & \sin\theta_y\\ 0 & 1 & 0\\ -\sin\theta_y & 0 & \cos\theta_y \end{pmatrix} \begin{pmatrix} \cos\theta_z & -\sin\theta_z & 0\\ \sin\theta_z & \cos\theta_z & 0\\ 0 & 0 & 1 \end{pmatrix} R3×3=⎝⎛1000cosθxsinθx0−sinθxcosθx⎠⎞⎝⎛cosθy0−sinθy010sinθy0cosθy⎠⎞⎝⎛cosθzsinθz0−sinθzcosθz0001⎠⎞ t 3 × 1 = ( t x t y t z ) \mathbf{t}_{3\times1}=\begin{pmatrix}t_x\\t_y\\t_z\end{pmatrix} t3×1=⎝⎛txtytz⎠⎞
对于理想光学系统,平行于光轴的入射光线过像方焦点,过主点的入射光线不改变方向,根据这两条光线的交点可以找到成像位置。当物距足够大,也不考虑景深时,认为始终清晰、完整成像,物距可以近似为焦距,这就是针孔假设(Pinhole approximation)。
在计算机视觉中,相机一般采用上述假设下的针孔模型(Pinhole model)。为了保持符号一致性(针孔模型成倒像),选取像平面的共轭。像面坐标系 P i = ( X i , Y i ) \mathbf{P}_i=(X_i,Y_i) Pi=(Xi,Yi) 可以由相机坐标系 P c \mathbf{P}_c Pc 得到:
X c X i = Y c Y i = Z c f ⟹ { X i = X c Z c f Y i = Y c Z c f \frac{X_c}{X_i}=\frac{Y_c}{Y_i}=\frac{Z_c}{f} \Longrightarrow \begin{cases} X_i=\dfrac{X_c}{Z_c}f\\ Y_i=\dfrac{Y_c}{Z_c}f \end{cases} XiXc=YiYc=fZc⟹⎩⎪⎨⎪⎧Xi=ZcXcfYi=ZcYcf
写成矩阵形式:
P i = ( X i Y i Z c ) = ( f 0 0 0 0 f 0 0 0 0 1 0 ) ( X c Y c Z c 1 ) = ( f 0 0 0 0 f 0 0 0 0 1 0 ) P c \mathbf{P}_i=\begin{pmatrix}X_i\\Y_i\\Z_c\end{pmatrix}= \begin{pmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{pmatrix} \begin{pmatrix}X_c\\Y_c\\Z_c\\1\end{pmatrix}= \begin{pmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{pmatrix} \mathbf{P}_c Pi=⎝⎛XiYiZc⎠⎞=⎝⎛f000f0001000⎠⎞⎝⎜⎜⎛XcYcZc1⎠⎟⎟⎞=⎝⎛f000f0001000⎠⎞Pc
像素坐标系 P p = ( u , v ) \mathbf{P}_p=(u,v) Pp=(u,v) 与像面坐标系共享同一个平面,区别在于一个连续、一个离散。此外,像素坐标系具有有限坐标,并且它的原点在画面的左上方。为了从像面坐标系(米)变换到像素坐标系(像素),假设缩放系数为 ρ u × ρ v \rho_u\times\rho_v ρu×ρv、平移量为 ( c x , c y ) (c_x,c_y) (cx,cy),则像素坐标:
P p = ( u v w ) = ( ρ u 0 c x 0 ρ v c y 0 0 1 ) P i = ( ρ u 0 c x 0 ρ v c y 0 0 1 ) ( f 0 0 0 0 f 0 0 0 0 1 0 ) P c = ( f ρ u 0 c x 0 0 f ρ v c y 0 0 0 1 0 ) P c = ( K 3 × 3 0 3 × 1 ) 3 × 4 ( R 3 × 3 t 3 × 1 0 1 × 3 1 1 × 1 ) 4 × 4 P w \begin{aligned} \mathbf{P}_p=\begin{pmatrix}u\\v\\w\end{pmatrix} &=\begin{pmatrix} \rho_u & 0 & c_x\\ 0 & \rho_v & c_y\\ 0 & 0 & 1 \end{pmatrix} \mathbf{P}_i\\ &=\begin{pmatrix} \rho_u & 0 & c_x\\ 0 & \rho_v & c_y\\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{pmatrix} \mathbf{P}_c\\ &=\begin{pmatrix} f\rho_u & 0 & c_x & 0\\ 0 & f\rho_v & c_y & 0\\ 0 & 0 & 1 & 0 \end{pmatrix} \mathbf{P}_c\\ &=\begin{pmatrix}\mathbf{K}_{3\times3} & \mathbf{0}_{3\times1}\end{pmatrix}_{3\times4} \begin{pmatrix} \mathbf{R}_{3\times3} & \mathbf{t}_{3\times1}\\ \mathbf{0}_{1\times3} & \mathbf{1}_{1\times1} \end{pmatrix}_{4\times4}\mathbf{P}_w \end{aligned} Pp=⎝⎛uvw⎠⎞=⎝⎛ρu000ρv0cxcy1⎠⎞Pi=⎝⎛ρu000ρv0cxcy1⎠⎞⎝⎛f000f0001000⎠⎞Pc=⎝⎛fρu000fρv0cxcy1000⎠⎞Pc=(K3×303×1)3×4(R3×301×3t3×111×1)4×4Pw
其中, K \mathbf{K} K 就是相机的内参:
K 3 × 3 = ( f ρ u 0 c x 0 f ρ v c y 0 0 1 ) \mathbf{K}_{3\times3}= \begin{pmatrix} f\rho_u & 0 & c_x\\ 0 & f\rho_v & c_y\\ 0 & 0 & 1 \end{pmatrix} K3×3=⎝⎛fρu000fρv0cxcy1⎠⎞
B. Mildenhall, P. P. Srinivasan, M. Tancik, et al. NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis. ECCV’20. https://arxiv.org/abs/2003.08934
https://towardsdatascience.com/what-are-intrinsic-and-extrinsic-camera-parameters-in-computer-vision-7071b72fb8ec