※当サイトはPRを含みます

【初心者向け】カメラパラメータ(内部・外部)の基本と座標変換の仕組みを解説

2026年3月14日

カメラパラメータの基本と重要性

カメラを用いた画像処理(OpenCVなど)や3D再構成(SLAM、SfM)、さらにはAR(拡張現実)や自動運転技術において、カメラの「内部パラメータ」と「外部パラメータ」を理解することは非常に重要です。

なぜなら、私たちがカメラで撮影した2D画像から、現実世界における3Dの距離や位置関係を正確に割り出すためには、カメラのレンズの特性(内部)と、カメラがどこを向いて置かれているか(外部)を数学的に定義して、座標変換を行う必要があるからです。

内部パラメータ(Intrinsic Parameters)

内部パラメータは、スマートフォンや一眼レフなど、そのカメラ(レンズとセンサー)固有の特性を表す数値です。画像を正確なスケールで扱うために以下の要素を含みます。

  • ワールド単位の焦点距離 (F): 実際のカメラレンズの焦点距離(mmなどの物理単位)
  • ワールド単位のピクセルサイズ (p_x, p_y): イメージセンサー上の1ピクセルあたりの物理的な大きさ
  • ピクセル単位の焦点距離 (f_x, f_y): センサーサイズとピクセルサイズに基づき、カメラの焦点距離をピクセル単位で表したもの。画像処理ではこの単位がよく使われます。
    $$f_x = \frac{F}{p_x}, \quad f_y = \frac{F}{p_y} $$
  • 主点座標 (c_x, c_y): 画像の光学的中心(通常は画像の中心付近ですが、製造誤差等でわずかにずれます)
  • 歪み係数 (k_1, k_2, p_1, p_2, k_3): 広角レンズなどで発生する「樽型歪み」や「糸巻き型歪み」といったレンズの歪み補正に使用する重要なパラメータです。
  • せん断係数 (s): ピクセルの非直交性を補正するための係数。ピクセルのせん断は次のように定義されます。
    $s={f_x}\tan\alpha$

カメラ行列 (K): これらの内部パラメータは、以下のような3×3の行列にまとめられます。
$$K = \begin{bmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}$$
ここで、せん断係数 $s$ は、現代の通常のデジタルカメラではほぼ 0 ですが、非直交なピクセル形状を持つ特殊なカメラでは補正が必要になります。

外部パラメータ(Extrinsic Parameters)

外部パラメータは、現実世界(ワールド座標系)に対して、「カメラがどこに置かれていて、どちらを向いているか」を表します。例えば、車のドライブレコーダーが車のどの位置に、どんな角度で取り付けられているかを示すものです。

回転行列 (Rotation)

回転行列 (R): ワールド座標系からカメラ座標系への「向き」の変換を行います。
$$R= \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}$$
回転行列は直交行列であり、カメラの姿勢(ピッチ、ヨー、ロール)を決定します。

※以下では回転行列 $R$ の数学的な定義を詳しく解説します。概要だけ知りたい方は次の「並進ベクトル」までスキップしてください。

回転行列 $R$ は、空間の x, y, z 軸それぞれの回転行列 $R_x, R_y, R_z$ を掛け合わせることで求められます。回転の順序によって異なる結果になるため、適切な順序(例えばZYX系など)を選ぶことが重要です。

  • x軸周りの回転:
    $$R_x(\theta_x) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta_x & -\sin\theta_x \\ 0 & \sin\theta_x & \cos\theta_x \end{bmatrix}$$
  • y軸周りの回転:
    $$R_y(\theta_y) = \begin{bmatrix} \cos\theta_y & 0 & \sin\theta_y \\ 0 & 1 & 0 \\ -\sin\theta_y & 0 & \cos\theta_y \end{bmatrix}$$
  • z軸周りの回転:
    $$R_z(\theta_z) = \begin{bmatrix} \cos\theta_z & -\sin\theta_z & 0 \\ \sin\theta_z & \cos\theta_z & 0 \\ 0 & 0 & 1 \end{bmatrix}$$

まず $R_z$、次に $R_y$、最後に $R_x$ の順に回転を適用すると、最終的な回転行列 $R$ は以下のようになります。
$$R = R_x(\theta_x) R_y(\theta_y) R_z(\theta_z)$$
具体的に展開すると、
$$R = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta_x & -\sin\theta_x \\ 0 & \sin\theta_x & \cos\theta_x \end{bmatrix} \begin{bmatrix} \cos\theta_y & 0 & \sin\theta_y \\ 0 & 1 & 0 \\ -\sin\theta_y & 0 & \cos\theta_y \end{bmatrix} \begin{bmatrix} \cos\theta_z & -\sin\theta_z & 0 \\ \sin\theta_z & \cos\theta_z & 0 \\ 0 & 0 & 1 \end{bmatrix}$$

これを計算すると、以下の3×3行列が得られます。
$$R = \begin{bmatrix} \cos\theta_y \cos\theta_z & -\cos\theta_y \sin\theta_z & \sin\theta_y \\ \cos\theta_x \sin\theta_z + \sin\theta_x \sin\theta_y \cos\theta_z & \cos\theta_x \cos\theta_z – \sin\theta_x \sin\theta_y \sin\theta_z & -\sin\theta_x \cos\theta_y \\ \sin\theta_x \sin\theta_z – \cos\theta_x \sin\theta_y \cos\theta_z & \sin\theta_x \cos\theta_z + \cos\theta_x \sin\theta_y \sin\theta_z & \cos\theta_x \cos\theta_y \end{bmatrix}$$

並進ベクトル (Translation)

並進ベクトル (T): ワールド座標系からカメラ座標系への「平行移動(位置のズレ)」を表します。
$$T = \begin{bmatrix} t_x \\ t_y \\ t_z \end{bmatrix}$$
並進ベクトルはカメラの空間的な位置を示し、基準となるワールド座標系の原点からのオフセットを意味します。

外部パラメータ(変換行列)

変換行列 ( [R|T] ): 回転行列と並進ベクトルを組み合わせることで、ワールド座標(現実の3D空間)からカメラ座標(カメラ視点の3D空間)への変換を行うことができます。
$$P_{camera} = R \cdot P_{world} + T $$
$$\begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix}= R \cdot \begin{bmatrix} X_w \\ Y_w \\ Z_w \end{bmatrix} + \begin{bmatrix} t_x \\ t_y \\ t_z \end{bmatrix}$$
ここで、$P_{world} = (X_w, Y_w, Z_w)$ はワールド座標系の点、$P_{camera} = (X_c, Y_c, Z_c)$ はカメラ座標系の点を表します。

座標系の種類と変換の流れ

カメラパラメータを使った計算では、主に3つの座標系を行き来します。

座標系の種類

  • ワールド座標系 (3D): 現実空間の絶対的な基準となる座標系(例:部屋の角を原点とする)
  • カメラ座標系 (3D): カメラのレンズ中心を原点とした、カメラ視点の座標系
  • 画像座標系 (2D): 最終的に出力される2D画像上のピクセル座標系(左上が原点など)

こちらの記事で各座標系の概念について詳しく説明しています。

座標変換の3ステップ

現実の物体が画像に映り込むまでのプロセスは、以下の数式でモデル化されます。

  1. ワールド → カメラ座標系変換 (外部パラメータを使用):
    現実の物体をカメラ目線に変換します。
    $$P_{camera} = R \cdot P_{world} + T$$
  2. カメラ → 画像平面への投影 (内部パラメータを使用):
    カメラ目線の3D座標を、レンズを通して2D平面にマッピングします。
    $$P_{image} = K \cdot P_{camera}$$
  3. 正規化(同次座標系からの変換):
    得られた結果をピクセル座標 $(x, y)$ に落とし込みます。
    $$\begin{bmatrix} x’ \\ y’ \\ w’ \end{bmatrix} = K \cdot \begin{bmatrix} X_c \\ Y_c \\ Z_c \end{bmatrix} $$
    $$(x, y) = \left( \frac{x’}{w’}, \frac{y’}{w’} \right)$$

まとめ:カメラキャリブレーションの第一歩

今回は、カメラパラメータ(内部・外部)の基本と、それを用いた座標変換の仕組みについて解説しました。

  • 内部パラメータ ($K$): カメラ固有の焦点距離や主点、歪み係数。
  • 外部パラメータ ($R, T$): カメラの位置と向き。

これらのパラメータを正確に求める作業を「カメラキャリブレーション」と呼びます。OpenCVなどのライブラリを使えば、チェスボードを撮影するだけでこれらのパラメータを自動で計算してくれます。仕組みを理解した上でライブラリを活用し、高度な画像処理や3Dプログラミングに挑戦してみてください!

おすすめ参考書