0

標準の OpenCV 関数を使用して、カメラの固有パラメータを調整しています。良い結果を得るには、さまざまな角度からチェス盤の画像を使用する必要があることを私は知っています (3D のさまざまな平面を考慮して)。これはすべてのドキュメントと論文に記載されていますが、私にはよくわかりません。さまざまなプレーンを検討することがなぜそれほど重要なのか、最適なキャリブレーション結果を得るために考慮しなければならない最適な数のプレーンがあるのか​​どうか。

これを説明している論文またはドキュメントへの参照を提供していただければ幸いです。(Zhang の論文はそれについて述べていると思いますが、数学的に集約的で、消化するのが困難でした。)

ありがとう

4

2 に答える 2

2

数学的には、平面ターゲットの 3 つ以上の異なる画像がある場合にのみ、固有パラメーター (スケールまで) の一意の解が定義されます。Zhang の論文の 6 ページを参照してください。「モデル平面の n 個の画像が観測される場合、(8) のような方程式を n 個積み重ねることにより、Vb = 0 が得られます。(9) ここで、V は 2n×6 の行列です。n ≥ 3 の場合、一般に、スケール係数まで定義された一意のソリューション b が得られます...」

データに関する「最適な」数の飛行機はありません。しかし、解が収束し始めると、余分な画像を追加することによるキャリブレーション精度の限界ゲインは無視できるようになります。もちろん、これは、画像がポーズと位置の両方で十分に分離された平面を示していることを前提としています。

実用的なヒントについては、私のこの他の回答も参照してください。

于 2013-10-04T20:42:55.600 に答える
2

少し直感的に理解したい場合は、1 つの平面では不十分な理由の例を次に示します。キャリブレーション用のチェス盤が 45° 傾いているとします。 45度のチェス盤

チェス盤を +y 方向に 1 メートル上に移動すると、カメラから +z 方向に 1 メートル離れることがわかります。これは、y 方向と z 方向の移動の効果を分離する方法がないことを意味します。y と z の移動方向は、すべてのトレーニング ポイントで効果的に相互に関連付けられています。したがって、この 1 つの平面上の点を見るだけでは、y 方向の動きと z 方向の動きの影響を区別する方法はありません。

たとえば、この 1 つの飛行機からは、これらのシナリオの違いはわかりません。

  1. カメラには遠近歪みがあり、ワールドの +y 方向に移動すると、画像内の物体が小さく見えます。
  2. カメラの焦点距離は、オブジェクトがワールドの +z 方向に移動するにつれてイメージ内で小さく見えるように設定されています。
  3. #1 と #2 の効果の混合。

数学的には、このあいまいさは、OpenCV がデータに一致するようにカメラ マトリックスを適合させようとするときに、同じように可能な解決策が多数あることを意味します。(45° の角度は重要ではないことに注意してください。どの平面を選択しても同じ問題が発生します。トレーニング例の (x、y、z) 次元は結合されているため、それらの効果を分離することはできません。)

最後に 1 つ: カメラ マトリックスについて十分な仮定を行う場合 (たとえば、遠近法の歪みがない、x と y のスケールが同じであるなど)、未知数が少ない状況になる可能性があります (極端な場合、単に計算しているだけかもしれません)。焦点距離)、その場合、たった 1 つの平面でキャリブレーションできます。

于 2015-11-05T22:54:46.920 に答える