少し直感的に理解したい場合は、1 つの平面では不十分な理由の例を次に示します。キャリブレーション用のチェス盤が 45° 傾いているとします。
チェス盤を +y 方向に 1 メートル上に移動すると、カメラから +z 方向に 1 メートル離れることがわかります。これは、y 方向と z 方向の移動の効果を分離する方法がないことを意味します。y と z の移動方向は、すべてのトレーニング ポイントで効果的に相互に関連付けられています。したがって、この 1 つの平面上の点を見るだけでは、y 方向の動きと z 方向の動きの影響を区別する方法はありません。
たとえば、この 1 つの飛行機からは、これらのシナリオの違いはわかりません。
- カメラには遠近歪みがあり、ワールドの +y 方向に移動すると、画像内の物体が小さく見えます。
- カメラの焦点距離は、オブジェクトがワールドの +z 方向に移動するにつれてイメージ内で小さく見えるように設定されています。
- #1 と #2 の効果の混合。
数学的には、このあいまいさは、OpenCV がデータに一致するようにカメラ マトリックスを適合させようとするときに、同じように可能な解決策が多数あることを意味します。(45° の角度は重要ではないことに注意してください。どの平面を選択しても同じ問題が発生します。トレーニング例の (x、y、z) 次元は結合されているため、それらの効果を分離することはできません。)
最後に 1 つ: カメラ マトリックスについて十分な仮定を行う場合 (たとえば、遠近法の歪みがない、x と y のスケールが同じであるなど)、未知数が少ない状況になる可能性があります (極端な場合、単に計算しているだけかもしれません)。焦点距離)、その場合、たった 1 つの平面でキャリブレーションできます。