なぜ“滲ませる”と像が見えるのか — ガウシアンスプラッティング入門
シーンを「にじみ(ガウシアン)の重ね合わせ」で表すと、ぼかしの部品からシャープな像が立ち上がる。その仕組みと、なぜ計算に都合がいいのかを、フーリエと逆問題の視点から。
/play に「2Dガウシアンスプラッティングの遊び場」を置いた。触っているうちに、いい問いをもらった ──「滲ませない方が、像を正確に取れそうじゃない? メガネを外すと何も見えないのに」。もっともな直感だ。だから今日はその話を書いておく。
何をしている技術なのか
ガウシアンスプラッティングは、写真から現実を取り込んで、撮っていない角度からも見られるようにする ── 新規視点合成(novel view synthesis)のための”表現方法”だよ。シーンを、空間に浮かぶ無数の「にじみ」(ガウシアン)の集まりとして持つ。各にじみは、位置・形(楕円の伸びと向き)・色・不透明度を持っている。メッシュもボクセルも使わない。
ぼやけているのは「部品」だけ
「滲ませると情報が失われる」── これは“最終的な像”にボケをかけた場合の話だ。メガネを外したときがまさにそれで、確かにダメ。
でもスプラッティングは逆で、柔らかい部品をたくさん重ねて、合計でシャープな像を作る。部品の柔らかさと、結果の鮮明さは別物なんだ。
これは、フーリエで知っているはずの話と同じだと思う。カクッとした矩形波は、なめらかなサイン波の和で作れる。サイン1本はエッジを持たないのに、足し合わせると鋭い段差が現れる。スプラッティングも、十分な数のなめらかなガウシアンを足せば、いくらでもシャープになる。基底が滑らかでも、鮮明さは作れる。
なぜ“ガウシアン”なのか
理由は、計算が三つの意味で都合がいいからだ。
- 速い:画面に射影して楕円にし、重ねるだけ。GPUの得意技で、リアルタイムに描ける。
- 学習できる:滑らかだから微分できる。「写真に合うように部品を調整する」を勾配降下で回せる。硬い部品だと、少しズレても誤差が動かず、どちらへ直せばいいか分からない。柔らかさは“最適化が下り坂を見つけるための条件”なんだ。
- 式が閉じる:ガウシアンは射影してもガウシアンのまま。3Dの楕円体が、画面でちょうど2Dの楕円になる。数値積分ではなく閉じた式で書ける。
楕円の形は、共分散行列を直接いじらず、回転と拡大で作る:
“拡大してから回す”。異方性()にすると、にじみがエッジに沿って細く伸びて、輪郭がむしろシャープに出る。本家の3D版も同じ作りだよ。
射影:3Dの楕円体が、画面で2Dの楕円になる
「画面に射影して楕円にし、重ねるだけ」と書いたところを、もう少し丁寧に。鍵になる事実は一つだけ:
ガウシアンを線形(アフィン)変換すると、またガウシアンになる。共分散は に変わる。
3Dのにじみは、中心 (3次元)と共分散 ( =楕円体の形)を持つ。これを画面へ出す手順はこう:
- カメラ座標へ:ワールド→カメラの回転を とすると、向きが変わるだけなので共分散は 。
- 画面へ射影:透視投影()は非線形だから、にじみの中心まわりで一次近似する。その勾配(ヤコビアン)を とすると、画面上の2D共分散は
の左上 になる。これが画面に落ちた“楕円”=スプラットだよ。にじみが局所的だから一次近似がよく効いて、ちゃんとガウシアンのまま楕円に潰れる ── これが「閉じた式で書ける」の正体だ。
あとは各ピクセル で、そのスプラットの値に不透明度 を掛けたものを実効の とする:
ここで は射影された中心。最後に、奥から手前へ並べてアルファ合成で重ねる:
射影( を作る)→ ピクセルごとの → 前から合成。これが「楕円にして重ねるだけ」の中身だ。全部、行列の積と と足し算で書けているのが分かると思う。だからGPUで速いし、各ステップが微分できるから学習も回る。
結局これは逆問題だ
写真が測定、ガウシアンが基底、勾配降下がソルバ。観測から、基底の重ね合わせで対象を復元する ── 構造はフーリエ解析やトモグラフィと地続きだ。最小化するのは、描画結果と写真の差:
これが小さくなるように、全ガウシアンの位置・形・色・不透明度を少しずつ動かす。先行手法のNeRFが同じ写実を狙って“遅かった”ところを、ガウシアンは“リアルタイム”でやってのけた。速さと表現力を両取りできたのが大きい。
要するに ── 「描画も最適化も安くなる基底を選ぶ」。式が素直になる座標系を選ぶのと、同じ発想なんだ。
理屈はこれくらいにして、実際に触ってみるのが早いと思う。スプラット数を増やすと、各にじみは柔らかいまま、像だけがキリッと立ち上がっていく。「異方性」を押して比較すれば、楕円が効くのも一目だよ。/play で動かせる。
— ランキン
出典
この記事は仕組みの解説だけど、技術の出どころは次の2本。数式や手法の詳細は原論文を見てね。
- 3D Gaussian Splatting for Real-Time Radiance Field Rendering(Kerbl et al., SIGGRAPH 2023)(一次情報・プロジェクトページ)
- NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis(Mildenhall et al., ECCV 2020)(先行手法)
コメント
まだコメントはないよ。最初のひとことをどうぞ。