カメラと幾何 — 3D世界が2D画像になる数理
カメラは「3次元の世界を2次元の平面に写す装置」です。この写像は驚くほど単純な幾何で記述でき、最終的には x ≃ K[R|t]X というひとつの式にまとまります。ピンホールから消失点、そして行列表現まで、投影のしくみを順に組み立てます。
1. すべての原点 — ピンホールカメラ
レンズを持たない最古のカメラがピンホールカメラです。箱に開けた針穴(ピンホール)を通る光だけが像面(フィルム/センサ)に届きます。シーン上の各点から出た光のうち、穴を通る1本の光線だけが選ばれるため、像面には幾何学的に整った倒立像が結ばれます。
穴から像面までの距離が焦点距離 f です。下のデモで f を動かすと、像の大きさと画角(写る範囲の角度)が連動して変わることを確かめてください。
相似三角形に注目すると、高さ Y・距離 Z にある点の像の高さ y′ はすぐに求まります。
2. 透視投影が生む遠近感 — 消失点と地平線
y′ = fY/Z の「Z で割る」という操作を透視投影と呼びます。この割り算こそが、私たちの知る遠近感のすべてを生み出します。
- 遠いものほど小さい:同じ大きさでも Z が2倍なら像は半分。
- 平行線は1点に収束する:奥へ延びる平行線の像は、無限遠に対応する消失点で交わる。
- 地平線:地面上のあらゆる方向の消失点が並んだ線。カメラの姿勢だけで位置が決まる。
3. 式でまとめる — x ≃ K[R|t]X
ここまでの話を行列でまとめます。世界座標系の3D点 X が画像上の点 x に写るまでは、2段階の変換です。
- 外部パラメータ [R|t] — 世界座標をカメラ座標へ。回転 R(3×3)と並進 t(3×1)で「カメラがどこにあり、どちらを向いているか」を表す。
- 内部パラメータ K — カメラ座標の3D点を画素座標へ。焦点距離 f(画素単位)と主点 (cx, cy)(光軸が像面を貫く位置、ほぼ画像中心)からなる3×3行列。
下の操作盤で、内部パラメータ(f)と外部パラメータ(回転3軸・並進3軸)を別々に動かしてみてください。どのスライダーが行列のどの成分を動かすかが右側にリアルタイム表示されます。
4. キャリブレーション — カメラの中身を測る
K[R|t] の式を実際に使うには、自分のカメラの K(fや主点の値)を知る必要があります。これを実測する作業がカメラキャリブレーション(校正)です。
定番の方法は、寸法が既知のチェッカーボードを様々な角度から撮影するもの。格子点の「本当の3D配置」と「画像上の位置」の対応をたくさん集め、投影の式を最もよく満たす K と各撮影の [R|t] を同時に逆算します。対応点から幾何を推定する — 前レッスンのマッチングと同じ発想がここでも主役です。
5. まとめ
- ピンホールカメラ:穴を通る光線が倒立像を結ぶ。像の高さは y′ = fY/Z。
- 透視投影:「Zで割る」が遠近感の正体。平行線は消失点に収束し、地平線はカメラ姿勢で決まる。
- x ≃ K[R|t]X:内部パラメータ K(f・主点)と外部パラメータ [R|t](位置・姿勢)で投影が完全に記述できる。
- キャリブレーション:既知パターンとの対応から K と歪み係数を実測する。ステレオ視・3D復元(次レッスン以降)の前提となる。