知識ベース

ピンホールカメラモデル

ピンホールカメラモデルは、3次元空間内のポイントの座標と、 理想的なピンホールカメラの画像平面への投影との間の数学的関係を表します。カメラの開口部はポイントとして記述され、レンズは光の集束に使用されません。このモデルには、たとえば、レンズや有限サイズの開口によって生じる幾何学的な歪みや焦点の合っていないオブジェクトのぼかしは含まれません。また、ほとんどの実用的なカメラが個別の画像座標しか持っていないことも考慮していません。つまり、ピンホールカメラモデルは、3Dシーンから2D画像へのマッピングの1次近似としてのみ使用できます。その有効性はカメラの品質に依存し、一般に、レンズの歪み効果が増加すると画像の中心から端に向かって減少します。

ピンホールカメラモデルが考慮しない効果の一部は、たとえば画像座標に適切な座標変換を適用することによって補正できます。他の効果は、高品質のカメラが使用される場合に無視されるほど十分に小さいです。つまり、ピンホールカメラモデルは、コンピュータービジョンやコンピューターグラフィックスなど、カメラが3Dシーンをどのように描写するかの合理的な説明として使用できることがよくあります。

ピンホールカメラの幾何学と数学

注:図のx1x2x3座標系は左利きです。つまり、OZ軸の方向は、読者が使用するシステムと逆向きです。

ピンホールカメラのマッピングに関連するジオメトリを図に示します。この図には、次の基本オブジェクトが含まれています。

  • Oを原点とする3D直交座標系。これは、 カメラの開口部がある場所でもあります。座標系の3つの軸は、X1、X2、X3と呼ばれます。 X3軸はカメラの視線方向を指し、 光軸主軸 、または主光線と呼ばれます。軸X1とX2がまたがる平面は、カメラの前面、または主平面です。
  • カメラの開口部から3Dワールドが投影されるイメージプレーン。画像平面は軸X1とX2に平行で、原点OからX3軸の負の方向に距離f {\ displaystyle f}にあります。ここで、 fはピンホールカメラの焦点距離です。ピンホールカメラの実用的な実装では、画像平面は、それがここで、f> 0 -f座標におけるX3軸と交差するように配置されていることを意味します。
  • 光軸と像面の交点にある点R。この点は、 主点または画像中心と呼ばれます。
  • 座標に世界のどこかの点P(X1、X2、X3){\ displaystyle(X_ {1}、X_ {2}、X_ {3})}軸X1、X2、X3に対して。
  • カメラへのポイントP投影線 。これは、ポイントPとポイントOを通る緑色の線です。
  • Qで示される画像平面への点Pの投影。この点は、投影線(緑)と画像平面の交点によって与えられます。実際の状況では、x3 {\ displaystyle x_ {3}}> 0と仮定できます。これは、交差点が適切に定義されていることを意味します。
  • また、画像平面には2D座標系があり、原点はR 、軸はそれぞれX1とX2に平行なY1とY2です。この座標系に対する点Qの座標は(y1、y2){\ displaystyle(y_ {1}、y_ {2})}です。

すべての投影線が通過しなければならないカメラのピンホールの開口部は、無限に小さい点であると想定されています。文献では、3D空間のこの点を光学(またはレンズまたはカメラ)中心と呼びます。

次に、ポイントQの座標(y1、y2){\ displaystyle(y_ {1}、y_ {2})}が座標(x1、x2、x3){\ displaystyle(x_ {1}に依存する方法を理解したい、x_ {2}、x_ {3})}点Pの 。これは、前の図と同じシーンを示す次の図の助けを借りて行うことができますが、X2軸の負の方向を見下ろしています。

この図では、2つの類似した三角形があり、両方とも斜辺として投影線(緑)の部分を持っています。左の三角形のカテティは-y1 {\ displaystyle -y_ {1}}およびfであり、右の三角形のカテティはx1 {\ displaystyle x_ {1}}およびx3 {\ displaystyle x_ {3}}です。 2つの三角形は似ているため、

−y1f = x1x3 {\ displaystyle {\ frac {-y_ {1}} {f}} = {\ frac {x_ {1}} {x_ {3}}}}またはy1 = −fx1x3 {\ displaystyle y_ {1 } =-{\ frac {f \、x_ {1}} {x_ {3}}}}

X1軸の負の方向を見る同様の調査により、

−y2f = x2x3 {\ displaystyle {\ frac {-y_ {2}} {f}} = {\ frac {x_ {2}} {x_ {3}}}}またはy2 = −fx2x3 {\ displaystyle y_ {2 } =-{\ frac {f \、x_ {2}} {x_ {3}}}}

これは次のように要約できます。

(y1y2)= − fx3(x1x2){\ displaystyle {\ begin {pmatrix} y_ {1} \\ y_ {2} \ end {pmatrix}} =-{\ frac {f} {x_ {3}}} { \ begin {pmatrix} x_ {1} \\ x_ {2} \ end {pmatrix}}}

これは、ポイントPの3D座標(x1、x2、x3){\ displaystyle(x_ {1}、x_ {2}、x_ {3})}とその画像座標(y1、y2)との関係を記述する式です){\ displaystyle(y_ {1}、y_ {2})}は、イメージプレーンの点Qで指定されます。

回転画像と仮想画像面

ピンホールカメラによって記述される3D座標から2D座標へのマッピングは、透視投影とそれに続く画像平面の180°回転です。これは、実際のピンホールカメラの動作に対応しています。結果の画像は180°回転し、投影されるオブジェクトの相対的なサイズは焦点までの距離に依存し、画像の全体的なサイズは画像平面と焦点間の距離fに依存します。カメラに期待される回転していない画像を生成するために、2つの可能性があります。

  • 画像平面で座標系を180°回転します(どちらの方向にも)。これは、ピンホールカメラの実用的な実装が問題を解決する方法です。写真カメラの場合は画像を見る前に回転させ、デジタルカメラの場合は回転する順番でピクセルを読み出します。
  • -fではなくfで X3軸と交差するようにイメージプレーンを配置し、以前の計算をやり直します。これにより、実際には実装できない仮想(または前面)イメージプレーンが生成されますが、実際のものよりも分析が簡単な理論上のカメラが提供されます。

どちらの場合も、3D座標から2D画像座標へのマッピングは上記の式で与えられますが、否定はありません。したがって、

(y1y2)= fx3(x1x2){\ displaystyle {\ begin {pmatrix} y_ {1} \\ y_ {2} \ end {pmatrix}} = {\ frac {f} {x_ {3}}} {\ begin {pmatrix} x_ {1} \\ x_ {2} \ end {pmatrix}}}

同次座標

空間内のポイントの3D座標から2D画像座標へのマッピングは、同次座標で表すこともできます。 x {\ displaystyle \ mathbf {x}}を同次座標(4次元ベクトル)の3Dポイントの表現とし、y {\ displaystyle \ mathbf {y}}をこのポイントの画像の表現としますピンホールカメラ(3次元ベクトル)。そして、次の関係が成り立つ

y∼Cx {\ displaystyle \ mathbf {y} \ sim \ mathbf {C} \、\ mathbf {x}}

ここで、C {\ displaystyle \ mathbf {C}}は3×4 {\ displaystyle 3 \ times 4}カメラマトリックスであり、〜{\ displaystyle \、\ sim}は射影空間の要素間の等価性を意味します。これは、左側と右側がゼロ以外のスカラー乗算まで等しいことを意味します。この関係の結果、C {\ displaystyle \ mathbf {C}}も射影空間の要素として見ることができます。 2つのカメラ行列は、スカラー乗算まで等しい場合、同等です。ピンホールカメラマッピングのこの説明は、2つの線形式の一部としてではなく、線形変換C {\ displaystyle \ mathbf {C}}として、3D座標と2D座標間の関係の多くの派生を単純化することを可能にします。