Camera calibration

カメラキャリブレーションは、既知のキャリブレーション対象を撮影した画像から、内部パラメータ行列 K\mathbf{K} とレンズの歪みパラメータを求める処理である。正確なキャリブレーションがなければ、三角測量、ポーズ推定、エピポーラ探索など、以降のあらゆる幾何計算は系統的に誤ったものになる。

Zhangの方法

Zhangの方法(1999年)は標準的なキャリブレーション手順である。これは、複数の視点から撮影された平面チェッカーボードの画像を使用する。各画像は、既知の3Dボードコーナーと検出された2D画像コーナー間の対応関係を提供し、ホモグラフィ(画像からボードへの写像)と内部パラメータの両方に制約を与える。手順は以下の通り:

  1. 異なる姿勢で撮影された N3N \geq 3 枚の画像でチェッカーボードのコーナーを検出する。
  2. ボード平面と各画像との間のホモグラフィ HiH_i を計算する。
  3. HiH_i から K\mathbf{K} に関する制約を、r1r2r_1 \perp r_2 かつ r1=r2\|r_1\| = \|r_2\| を満たす H=λK[r1,r2,t]H = \lambda\mathbf{K}[r_1, r_2, \mathbf{t}] を用いて抽出する。
  4. 内部パラメータについて線形システムを解く。
  5. すべてのパラメータ(内部+外部+歪み)を非線形最小二乗法で精緻化する。

制約の由来。 H=[h1,h2,h3]H = [\mathbf{h}_1, \mathbf{h}_2, \mathbf{h}_3] と書く。h1Kr1\mathbf{h}_1 \propto \mathbf{K}r_1 かつ h2Kr2\mathbf{h}_2 \propto \mathbf{K}r_2 であり、r1,r2r_1, r_2 が正規直交であることから、各視点は対称行列 B=KTK1B = \mathbf{K}^{-T}\mathbf{K}^{-1} の成分に関する2つの線形方程式を生む:

h1TBh2=0,h1TBh1=h2TBh2\mathbf{h}_1^T B\, \mathbf{h}_2 = 0, \qquad \mathbf{h}_1^T B\, \mathbf{h}_1 = \mathbf{h}_2^T B\, \mathbf{h}_2

BB は6個の未知数を持つ(スキューをゼロと仮定する場合は5個)ため、3視点で十分である。K\mathbf{K} はその後、コレスキー分解のような手法によって BB から復元される。これが、ボードを異なる姿勢で撮影する必要がある理由である — 平行な視点は冗長な制約しか与えない。

レンズ歪みモデル

実際のレンズは理想的なピンホールモデルから逸脱する。標準的な2つのモデル:

**半径方向歪み(radial distortion)**は直線を曲線に見せる:

xd=x(1+k1r2+k2r4+k3r6),yd=y(1+k1r2+k2r4+k3r6)x_d = x'(1 + k_1 r^2 + k_2 r^4 + k_3 r^6), \qquad y_d = y'(1 + k_1 r^2 + k_2 r^4 + k_3 r^6)

ここで r2=x2+y2r^2 = x'^2 + y'^2 は主点からの距離の二乗である。k1>0k_1 > 0 は樽型歪み(barrel distortion)を、k1<0k_1 < 0 は糸巻き型歪み(pincushion distortion)を与える。広角レンズは大きな k1|k_1| を持つ。

**接線方向歪み(tangential distortion)**は、レンズが画像平面に完全に平行でないことによって生じる:

xd=x+2p1xy+p2(r2+2x2),yd=y+p1(r2+2y2)+2p2xyx_d = x' + 2p_1 x'y' + p_2(r^2 + 2x'^2), \qquad y_d = y' + p_1(r^2 + 2y'^2) + 2p_2 x'y'

実際には、k1,k2k_1, k_2(場合によっては k3,p1,p2k_3, p_1, p_2)は K\mathbf{K} と同時に推定される。OpenCVは cv::calibrateCamera() でこれを直接実装している。

キャリブレーション品質の判定

標準的な品質指標は、キャリブレーションが返すRMS再投影誤差である。推定パラメータでボードのコーナーを再投影し、ピクセル残差を測定する。単一の数値だけでなく、以下も確認すること:

よくある落とし穴

SLAMにおける意義

SLAMシステムは、歪みが補正され、キャリブレーション済みの観測が幾何ソルバーに供給されることを前提としている。画像境界における数ピクセルの未補正歪みが再投影誤差を支配し、マップを損なうことがある。キャリブレーションは、後で出会うより難しい問題のテンプレートでもある — カメラ-IMUやカメラ-LiDARの外部パラメータキャリブレーションは、同じ「既知のターゲット+非線形精緻化」というパターンに従う。実践的には、チェッカーボードで自分のカメラをキャリブレーションすることは、この分野における最良の最初の演習の一つである。

関連ノート