カメラパラメータを用いないNeRFの学習

こんにちは、先進技術部でアルバイトをしている上垣です。

今回はカメラ姿勢情報を用いずに写真のみからNeRF(Neural Radiance Fields)の3次元表現を獲得する手法について紹介します。

NeRF[1]とは、ニューラルネットワークを用いてNovel View Synthesis(NVS)というタスクを解く手法になります。NVSは、あるシーンについて多視点から撮影した画像群を教師データとして、別の新しい視点から見た画像を生成するタスクになります。NeRFはこのタスクにおいて、シンプルなMLPを利用しながら非常にリアルな画像の生成を可能としたため、現在注目を集めています。しかし、オリジナルNeRFの学習では撮影された画像それぞれに対して、撮影しているカメラの情報が必要となります。このカメラ情報を推定するためには、COLMAP[2][3]等の別の推定器を利用する必要がありました。それに対し、最近では事前のカメラ情報推定を行うことなくNeRFを学習させる手法が提案されています。本記事では、NeRFの前提となるカメラ情報について触れながら、事前のカメラ情報推定を必要としないNeRFの学習について紹介します。

NeRF

まず前提となっているNeRFについて以降で簡単に紹介しますが、詳細は以前のブログ記事をご覧ください。

NeRFでは画像に映るシーンを、空間における座標(x, y, z)とカメラの光線方向 \phi を入力として、その座標における色(r, g, b)と物体の密度 \sigma を出力するニューラルネットワークの関数として表現します(図1)。各座標に対して色/密度を対応づけたものを輝度場を呼びます。

図1: NeRFの概要図(論文[1]からの引用)
NeRFの輝度場から画像を復元する際には、図1において目のイラストで表されているカメラから光線(黄色)を飛ばし、その光線上にある点について密度 \sigma で重み付けした色情報の和を、復元画像1ピクセルの色とします。つまり、ある1ピクセルの色を再現するためには、視点とそのピクセルを結ぶ光線上で積分をするわけです。そして密度とは、「その座標に物体が存在しているか」に近いものとなりますが、直接的な有無ではなく、あくまで連続的な値になります。あえて密度の和を取る計算を行うことで復元の枠組み全体が微分可能となり、復元された画像と教師画像間の色の差を損失としてニューラルネットワークを学習することができます。このようにレンダリングの枠組み全体を微分可能とした手法は微分可能レンダリング(Differentiable Rendering)と呼ばれます。

カメラパラメータ

冒頭で述べた通り、NeRFの学習にはカメラの撮影情報が必要となります。カメラの撮影情報のことを以降では「カメラパラメータ」と呼びます。ここではカメラパラメータの種類や内容についてピンホールカメラモデルを例に紹介します。

座標系

まず、カメラ撮影に関わってくる座標系について整理します。 カメラ撮影では、画像座標とカメラ座標、世界座標の3つの座標系が関わってきます。
  • 画像座標 (u, v): ピクセルを単位とする画像の座標に当たり、被写体を含む撮影対象の空間がこの座標平面上に画像として投影されます。 
  • カメラ座標 (x_c, y_c, z_c): カメラの焦点を原点として、画像平面や被写体を周囲に配置した座標です。
  • 世界座標 (x_w, y_w, z_w): 計測機器の基準など何かしらの基準によって、カメラや画像平面、被写体を配置した座標です(図2)。 NeRFモデルの入力となるのは、この座標系での情報になります。 
図2: 世界座標における被写体(青)、画像平面(赤)とカメラ焦点(緑)の配置例
カメラパラメータは、これらの座標同士を変換する役割を持ち、大きく二つに分けられます。 一つは画像座標とカメラ座標の関係を表す内部(intrinsic)パラメータで、もう一つは世界座標とカメラ座標の関係を表す外部(extrinsic)パラメータです。 この二つのパラメータについて、それぞれ紹介します。

内部パラメータ

内部パラメータは画像座標とカメラ座標の関係を表すもので、焦点距離と画像中心が含まれます。画像中心は名前の通り画像平面のピクセル単位の中心です。焦点距離は、画像中心から焦点までの距離です。
カメラの焦点距離をf、画像の縦横ピクセルサイズをW, H、画像中心を c_x, c_yとし、簡単にするために画像平面や焦点、被写体の一部をz軸上に配置した場合、それぞれの関係は以下の図3のように表せます。

図3: カメラ内部パラメータ変換の概要
カメラ座標系の点Pを点P’に投影する場合、△POCと△P’OC’が相似なためそれぞれの値は以下のように求められます。

x_c' = \frac{f}{z_c}x_c
y_c' = \frac{f}{z_c}y_c

加えて、画像解像度による縦横での焦点距離の違いを考慮して焦点距離fを f_x, f_y に分け、オフセットとして画像中心を利用すると、カメラ座標系から画像座標系へ変換は以下の関係で表せます。


u = f_x\frac{x_c}{z_c} + c_x
v= f_y\frac{y_c}{z_c} + c_y

この関係を行列の形で表すため、同次座標系を導入すると以下のようになります。

s \left[\begin{array}{c} u \\ v \\ 1 \end{array}\right] = \left[\begin{array}{ccc}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{array}\right] \left[\begin{array}{c} x_c \\ y_c \\ z_c \end{array}\right]

sは画像座標のz座標を1に固定するためのものであり、z_cと等しくなります。式中の以下の部分はカメラ行列Kと呼ばれます。

K = \left[\begin{array}{ccc}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{array}\right]

反対に、NeRF等のように生成する画像のピクセル座標(u, v)をカメラ座標(x_c, y_c, z_c)に変換する場合は、

x_c = \frac{1}{f_x} (u - c_x)
y_c = - \frac{1}{f_y} (v - c_y)
z_c = -1

とすることで求められます。

外部パラメータ

外部パラメータとは、カメラ座標と世界座標の関係(変換)を表すものでした。外部パラメータには、カメラの回転(Rotation)と移動(Translation)が含まれます。カメラ座標 (x_c, y_c, z_c) から世界座標 (x_w, y_w, z_w) への変換は、カメラ座標に回転行列をかけたものを並行移動させることで実現できます。つまり、回転を \mathbf{R} \in \mathbb{R}^{3 \times 3} 、移動を\mathbf{T} \in \mathbb{R}^3とおくと、以下の式で表現できます。

\left[\begin{array}{c} x_w \\ y_w \\ z_w \\ 1 \end{array}\right] = \left[\begin{array}{ccc|c} & & & \\ & \mathbf{R} & & \mathbf{T} \\ & & & \\ \hline 0 & 0 & 0 & 1 \\ \end{array}\right] \left[\begin{array}{c} x_c \\ y_c \\ z_c \\ 1 \\ \end{array}\right]

なお、 \mathbf{R} \mathbf{T}からなる変換行列の形で定義される変換のことはSE3な変換と呼び、その内の \mathbf{R}のみで定義される変換(回転)はSO3な変換と呼びます。上記の式における4行4列のSO3な行列をカメラのポーズ(姿勢)行列と呼びます。

カメラの回転

回転の表現にはいくつかの種類があります。ここでは代表的な回転行列と回転ベクトルについて説明します。
回転行列
回転の表現として、一般的に用いられるものの一つに、回転行列があります。3次元の回転行列は3行3列の行列で表現されます。例えば、z軸を中心に\thetaの角度だけ回転させた場合の回転行列は以下のようになります。

\mathbf{R} = \left[\begin{array}{ccc} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \\\end{array}\right]

前述のカメラ座標から世界座標への変換における\mathbf{R}も回転行列の形を取っていました。回転行列は、座標変換が行列の積で行われるため、変換前後の座標の対応関係が分かりやすいです。一方で、回転行列は表現としては冗長なため、より冗長性のない回転表現として回転ベクトルが用いられることもあります。
回転ベクトル
回転ベクトル \mathbf{\omega} \in \mathbb{R}^3 は、ベクトルの大きさ|\mathbf{\omega}|が回転の角度\thetaを表し、正規化されたベクトル\frac{\mathbf{\omega}}{\theta}が回転の軸を表します。回転ベクトルと回転行列はロドリゲスの公式と呼ばれる以下の公式をもとに相互に変換することができます。以下の式では、回転ベクトルを回転行列に変換することができます。

\frac{\mathbf{\omega}}{\theta} = \mathbf{\phi} = \left[\begin{array}{c} r_0 \\ r_1 \\ r_2 \end{array}\right]

\mathbf{\hat\phi} = \left[\begin{array}{ccc} 0 & r_2 & r_1 \\ r_2 & 0 & r_0 \\ r_1 & r_0& 0 \end{array}\right]

\mathbf{R} = \mathbf{I} + \frac{\sin(\theta)}{\theta}\mathbf{\hat\phi} + \frac{1-\cos(\theta)}{\theta^2}(\mathbf{\hat\phi})^2

カメラの移動

カメラの移動 \mathbf{T} \in \mathbb{R}^3 は名前の通り、カメラ座標から世界座標へのものの移動になります。 カメラ座標系でカメラは原点に存在していたので、\mathbf{T}そのものが世界座標におけるカメラの位置になります。 同様に、カメラ座標でカメラの周囲に配置していたレンズ平面や被写体は、回転後に移動ベクトルを加算することで世界座標へと変換されます。

カメラパラメータによる座標変換とNeRF 

NeRFにおけるレンダリングのように、焦点から画像の各ピクセルに向けた光線上で積分を行う場合、世界座標系での計算となるため、光線の始点であるカメラ焦点と光線の方向は世界座標系の値で得る必要があります。学習に使う画像は、画像座標系上のピクセルに色の情報が付与されたものなので、画像座標からカメラ座標、カメラ座標から世界座標という順番で変換することになります。世界座標における画像平面の(i, j)位置の座標を \mathbf{p_{ij}} \in \mathbb{R}^3 とすると、焦点の位置は \mathbf{T} なので、焦点から \mathbf{p_{ij}} へ向かう視線は以下のようになります。

\mathbf{d_{ij}} = \frac{\mathbf{p_{ij}}-\mathbf{T}}{|\mathbf{p_{ij}}-\mathbf{T}|}

この視線ベクトル \mathbf{d_{ij}} を伸ばした先に画像1ピクセルに映る色の情報が存在していると考えられます。視線ベクトルを延長した範囲からサンプリングした各座標に対して、ニューラルネットワークを用いて色と密度を求めることで、微分可能なレンダリングが可能になるわけです。

カメラのパラメータを用いないNeRF

以降では、事前のカメラパラメータ推定を行わずにNeRFの3次元表現を獲得する手法について紹介します。

NeRF--

NeRF--[4]は、カメラの内部パラメータ(焦点距離)と外部パラメータ(回転、移動)の最適化をNeRFの学習と同時に行う手法になります。具体的には、カメラのパラメータも全てニューラルネットワークのパラメータとして扱います。これまで見てきた通り、カメラパラメータによる座標変換は全て行列計算で表現できるため、NeRF学習の損失をそのまま逆伝播させることができます。図4はNeRF--学習の流れになります。

図4: NeRF--の学習ループ(論文[4]からの引用) 
NeRFと異なる点はカメラの回転\phiや移動\mathbf{t}、焦点距離 f_x, f_y をパラメータ化しているのみで、残りの処理は基本的にはNeRFと同じです。 カメラの回転については、回転行列を直接最適化する方法もありますが、回転行列には「行列式が1の直交行列である」という条件があり、直接最適化してしまうと条件を満たさなくなる可能性があります。そこで、モデル内パラメータとしては回転ベクトルの形で保持しておき、ロドリゲスの公式を使って回転行列に直しています。 回転ベクトルと移動ベクトルの初期値は全て0としています。回転ベクトルの全要素が0の場合、回転行列に直すと3行3列の単位行列となります。つまり、初期状態としてはすべてのカメラ座標系が世界座標の原点に置かれて-z軸方向を向いている状態から最適化がスタートします。 焦点距離については、画像の横ピクセル数Wと縦ピクセル数Hをそれぞれ f_x, f_y の初期値としています。 画像中心 c_x, c_y は以下のように固定しています。

c_x = \frac{W}{2}, c_y=\frac{H}{2}

図5は、正面向きに撮影した多視点画像データ(LLFFデータセット[5])についてNeRF--の再現実装を用いて学習したものになります。

図5: NeRF--によるLLFF[5]のRoomデータの生成画像(GIF) 
NeRF--は非常にシンプルな方法でカメラの最適化を行なっていますが、「被写体に対して概ね同じ向きで撮影する必要がある」「画像間でのカメラの移動は小さなものである必要がある」といった制限が残っています。例えば360度様々な視点から撮影したようなデータの場合、最適化が難しいです。

BARF

BARF[6](Bundle-Adjusting Neural Radiance Fields)はNeRF--と同時期に発表された手法で、カメラの内部パラメータは既に分かっているものとして、外部パラメータのポーズ行列推定/修正を行うモデルになります。BARFでは、NeRF--で行なっていたロドリゲスの公式による回転ベクトル変換は行わず、4行4列のポーズ行列を直接推定します。前述の通り、ポーズ行列そのものは冗長な表現なのですが、NeRFで用いられている位置エンコーディング(Positional Encoding)の扱いを工夫することで最適化できるようにしています。

NeRFでは、空間の高周波な情報を利用するため、ニューラルネットワークへの入力であるレンダリングの光線方向dとレンダリング光線上のサンプル点xに対して位置エンコーディングと呼ばれる変換を行います。位置エンコーディングは以下の式で表されます。

\gamma(\mathbf{x}) = [\gamma_0(\mathbf{x}), \gamma_1(\mathbf{x}),…, \gamma_{L-1}(\mathbf{x})] \in \mathbb{R}^{6L}

\gamma_k(\mathbf{x}) = [\cos(2^k\pi\mathbf{x}), \sin(2^k\pi\mathbf{x})] \in \mathbb{R}^6

位置エンコーディングよりも後段のニューラルネットワークのみを学習するオリジナルNeRFの画像生成では、この位置エンコーディングが重要な役割を果たしていました。しかし、位置エンコーディングよりも前段にあるカメラパラメータまで誤差の逆伝播が必要になるカメラパラメータ推定では問題が起こります。位置エンコーディングの勾配は以下の式のようになり、勾配が 2^k\pi だけ増幅されてしまいます。

\frac{\partial \gamma_k(\mathbf{x})}{\partial \mathbf{x}} = 2^k\pi[-\sin(2^k\pi\mathbf{x}), \cos(2^k\pi \mathbf{x})]

kは周波数帯の区分と考えられるため、kの大きな部分、つまり高周波な部分ほど勾配が増幅されることになります。このように位置エンコーディングの周波数帯によって勾配の大きさが変化することがカメラパラメータ推定を不安定にしているとして、BARFではそれを改善する方法を提案しています。具体的には、学習の経過に応じて位置エンコーディングに以下のような重みをつけてフィルタします。

\gamma(\mathbf{x}) = [\mathbf{x}, \gamma_0(\mathbf{x}), \gamma_1(\mathbf{x}),…, \gamma_{L-1}(\mathbf{x})] \in \mathbb{R}^{3+6L}

\gamma_k(\mathbf{x}; \alpha) = w_k(\alpha)[\cos(2^k\pi\mathbf{x}), \sin(2^k\pi\mathbf{x})] \in \mathbb{R}^6

w_k(\alpha) = \begin{cases} 0 & \alpha < k \\ \frac{1}{2}(1-\cos((\alpha-k)\pi)) & 0 \leq \alpha-k < 1 \\ 1 & \alpha-k \geq 1 \end{cases}

位置エンコーディングの\alphaは0からLまでの値を取り、論文では全体で2000epochの学習スケジュールの内400epoch(\alpha=0)から800epoch(\alpha=L)までの間で線形に変化させています。これは、学習初期にはサンプル座標xや光線方向dといった低周波成分のみを使い、学習が進むに連れて位置エンコーディングの高周波成分を含めて使うフィルタになっています(図6)。学習経過によって複雑な信号をフィルタする方法のことを、論文ではcoarse-to-fine registrationと呼んでいます。オリジナルNeRFのレンダリング方法にもcoarseとfineという2種類の方法がありますが、これとは別のものです。

図6: 位置エンコーディングとBARFのフィルタ 
BARFは位置エンコーディングに改良を加えることで、正面向き撮影データ(LLFFデータセット)では未知のパラメータから、様々な視点から撮影したデータ(NeRF Syntheticデータセット)ではCOLMAP推定値に一定のノイズを加えたパラメータから、それぞれ推定や修正を可能としています。具体的なノイズとしては、回転角度で14.9度、移動ベクトルの大きさで0.26をそれぞれの分散とした正規分布からのサンプリングノイズを加えているとのことでした。

実験

これまでに紹介したNeRF--やBARFの手法には、それぞれ制限がありました。NeRF--では概ね同じ向きでの撮影、カメラ移動の少なさといった制限があり、BARFでは360度様々な視点からの撮影であってもCOLMAP推定パラメータに一定のノイズを加えた範囲からの復元程度という制限でした。特にBARF論文におけるノイズの与え方は一定であり、どの程度の範囲まで対応できるのかが不明瞭であるため、今回は他モデルも含めてカメラパラメータ推定可能な範囲を調べる実験を行いました。

比較するモデルは以下の4条件としました。
  • 回転行列推定
    • NeRF PE条件: 位置エンコーディングにオリジナルNeRFのものを利用 
    • BARF条件: 位置エンコーディングにBARFを利用
  • 回転ベクトル推定
    • NeRF--条件: 焦点距離・画像中心をCOLMAP推定値で固定したNeRF--
    • BARF--条件: NeRF--条件の位置エンコーディングをBARFに変更 
学習設定は基本的にBARFの設定を利用し、視線上の点のサンプリング方法はcoarseのみ(ネットワークも一つのみ)で行い、1視線あたりのサンプリング数は128点としました。学習1ステップには4枚の画像を用い、画像1枚からのサンプリング数を1024点として2000epoch学習しました。学習率はNeRF部分で5e-4から1e-4まで、カメラパラメータ部分で1e-3から1e-5まで指数関数的な減衰をさせています。学習の前半はカメラポーズに対して大きめの学習率で最適化を行い、後半にNeRFのMLPに対して大きめの学習率で学習するスケジュールとなっています。
データセットにはDeepVoxelsデータセット[7]のGreekというデータを利用しています。このデータはNeRF--の紹介で利用したLLFFデータセットとは異なり、1つのシーンを様々な位置・角度で撮影したもので、より最適化の難しいデータセットだと考えられます。

まずはBARF論文と同様、角度が分散14.9度、移動が分散0.26となるように正規分布からサンプリングしたノイズを加えた場合について、カメラ姿勢推定結果の相対誤差とカメラプロット、生成画像を確認します。姿勢の誤差については、必ずしもCOLMAPと同じ基準で推定できるとは限らないため、RPG Trajectory Evaluation[8]というツールを利用して相対的な誤差を求めています。カメラのプロットと各評価指標について表1にまとめます。なお、カメラプロットについては、見やすさのために画像平面の縦横サイズを半分にし、撮影点も479件中20件をサンプルとして取り出しています。

カメラプロット平均回転誤差平均移動誤差
ノイズ
0.5761.053
NeRF PE
0.4660.687
NeRF--
0.3210.439
BARF
0.3010.434
BARF--
0.1620.255
表1: BARF論文のノイズ設定から復元した結果の比較


すべてのモデルである程度のカメラポーズ最適化ができていることがわかります。しかし、生成した画像(表2)をみると、NeRF PE条件では物体をレンダリング出来ていないフレームが確認できます。なお、画像は正解データ上で同じ撮影点にあたるフレームをスタートとして撮影点を回転させながらレンダリングしています。

手法NeRF PENeRF--BARFBARF--
生成GIF
表2: BARF論文のノイズ設定における生成GIF


NeRF PE条件とBARF条件を比較することで、BARFの位置エンコーディングには大きく二つの役割があることが分かります。一つ目はニューラルネットワーク上のカメラパラメータへの誤差逆伝播を安定させ位置ズレ修正を効果的にする役割です。二つ目は、学習初期に低周波成分のみを使うことでレンダリングに余裕を持たせ、大規模なポーズ修正が行われてもレンダリングに影響が出ないようにする役割です。 NeRF PE条件とBARF条件との生成画像比較で見られる差から後者の影響が確認できます。
NeRF--もNeRF PE条件よりも良い最適化が行えています。回転の情報をモデル内部で回転ベクトルとして保持しておくことで、回転行列を直接推定する場合よりも不要なパラメータ更新が減り、効果的に学習できていることが分かります。
BARF--条件では、BARF条件やNeRF--条件よりも更に精度が改善されています。単純な手法の掛け合わせであっても、BARFにおける位置エンコーディングマスクとNeRF--における回転ベクトルのそれぞれの役割が異なっているため、有効であったと考えられます。 特に、NeRF--条件では生成画像の品質に大きな問題が見られないことから、BARF手法がポーズ修正を効果的にしていることが確認できます。

カメラポーズ推定・レンダリングの両方ができたNeRF--、BARF、BARF--の3条件について、ポーズに加えるノイズを1.5倍(回転角度で分散約22.5度、移動ベクトルで分散0.39)として再度学習を行いました。特にBARF--については、BARF論文の設定で他2手法よりも精度的な余裕があったため、より強いノイズからの復元が期待できそうです。その結果が表3の通りです。

カメラプロット平均回転誤差平均移動誤差
ノイズ
0.8191.273
NeRF--
0.6651.035
BARF
0.4770.790
BARF--
0.4330.709
表3: 1.5倍のノイズ設定からの復元結果の比較 


カメラのプロットではBARF--だけはある程度ポーズ修正ができていそうです。誤差の数値でいえばBARFも近いので、ここでも生成GIFを比較してみます(表4)。

手法NeRF--BARFBARF--
生成GIF
表4: 1.5倍のノイズ設定での各手法の生成GIF 


BARFとBARF--のどちらの条件でも、生成画像ではレンダリングミスはさほど見られません。BARFのカメラプロットが大きくズレている理由として、元のノイズが大きかったために最適化する際の座標の基準が変わった可能性や、プロットのサンプル取得時に差の大きなものが固まった可能性などが考えられます。 
しかし、いずれにしても相対的な回転誤差が0.40以上、移動誤差が0.70以上であり、一つ目の実験で描画がうまくいかなかったNeRF PE条件に近い結果となっているため、1.5倍ノイズからの復元が限界のようです。実際にBARF条件、BARF--条件について2倍ノイズからの復元実験も行いましたが、どちらのモデルでもレンダリングミスが発生し始めていました。

以上から現在の手法では、回転角度の分散22.5度、移動の分散0.39程度の正規分布からのサンプリングノイズを修正するのが限界であり、実用上はBARF論文の設定である回転15度、移動0.26程度のノイズが見込まれる場合に利用するのが現実的だと考えられます。

まとめ

今回は、NeRFの派生手法について、事前にカメラパラメータ推定を行うことなくNeRFモデルを学習可能な手法の調査と実験を行いました。 
カメラパラメータ推定を含むモデルでは色と密度\sigmaに加え回転、焦点位置、焦点距離の全てが未知な状態で辻褄を合わせることになるため、各パラメータの初期値に依存しやすいです。理想は撮影位置や角度に影響されず様々な視点からの撮影が可能となることですが、現時点ではまだ難しいようです。 
現状の活用方法としては、画像のみからの一貫したNeRF表現の獲得というよりかは、前段のCOLMAPなどで推定誤差が発生した場合に頑健なパイプラインとしての活用が主になりそうです。今回の記事では対象としませんでしたが、最近ではカメラのレンズ歪みを考慮してカメラ姿勢誤差も修正できるSCNeRF[9](Self-Calibrating Neural Radiance Fields)という手法も提案されており、カメラ姿勢推定の後処理としても期待ができる技術だと思います。今後仮に撮影視点に関する問題を解決するような手法が出た場合、自己位置推定とマップ作成の同時最適化ができる一貫した手法として、SLAM技術への応用も期待できます。

ALBERTでは、様々な専門的バックグラウンドを持つリサーチャー・アナリストを募集しています。詳しくは採用ページをご覧ください。

参考文献

  1. Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng: “NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis”, Proc. ECCV 2020. 
  2. Schönberger, Johannes Lutz and Frahm, Jan-Michael: “Structure-from-Motion Revisited”, Proc. CVPR 2016. 
  3. Schönberger, Johannes Lutz and Zheng, Enliang and Pollefeys, Marc and Frahm, Jan-Michael: “Pixelwise View Selection for Unstructured Multi-View Stereo”, Proc.ECCV 2016. 
  4. Zirui Wang and Shangzhe Wu and Weidi Xie and Min Chen and Victor Adrian Prisacariu: “NeRF--: Neural Radiance Fields Without Known Camera Parameters”, arXiv preprint arXiv:2102.07064, 2021. 
  5. Ben Mildenhall and Pratul P. Srinivasan and Rodrigo Ortiz-Cayon and Nima Khademi Kalantari and Ravi Ramamoorthi and Ren Ng and Abhishek Kar: “Local Light Field Fusion: Practical View Synthesis with Prescriptive Sampling Guidelines”, ACM Transactions on Graphics (TOG), 2019. 
  6. Lin, Chen-Hsuan and Ma, Wei-Chiu and Torralba, Antonio and Lucey, Simon: “BARF: Bundle-Adjusting Neural Radiance Fields”, Proc. ICCV 2021. 
  7. Sitzmann, Vincent and Thies, Justus and Heide, Felix and Niessner, Matthias and Wetzstein, Gordon and Zollhöfer, Michael, “DeepVoxels: Learning Persistent 3D Feature Embeddings”, Proc. CVPR 2019. 
  8. Zhang, Zichao and Scaramuzza, Davide: “A Tutorial on Quantitative Trajectory Evaluation for Visual(-Inertial) Odometry”, Proc. IEEE 2018. 
  9. Yoonwoo Jeong, Seokjun Ahn, Christopehr Choy, Animashree Anandkumar, Minsu Cho, and Jaesik Park Park: “Self-Calibrating Neural Radiance Fields”, Proc. ICCV 2021.