5

光学測定システムに OpenCV を使用しています。デジタル カメラでキャプチャした 2 つの画像間で透視変換を実行する必要があります。カメラの視野内に一連のマーカー (共通の平面にある) を配置し、これを両方の画像で対応する点として使用します。マーカーの位置を使用して、ホモグラフィ行列を計算できます。問題は、実際に画像を変換したい測定オブジェクトが、マーカーからわずかな距離にあり、マーカーの平面と平行に配置されていることです。この距離なら測れます。

私の質問は、透視変換を実行するために必要なホモグラフィ行列を計算するときに、その距離をどのように考慮するかということです。

私のソリューションでは、ホモグラフィの計算に測定されたオブジェクト ポイントを使用しないことが強く要求されます (そのため、視野内に他のマーカーが必要です)。

説明が正確でない場合はお知らせください。

ここに画像の説明を入力

図に示されているのは、例示的なイメージです。

赤い四角が測定対象です。円形マーカーの後ろの少し離れたところに物理的に配置されます。

さまざまなカメラの位置からオブジェクトの画像をキャプチャします。測定対象は、各取得の間に変形する可能性があります。円形のマーカーを使用して、オブジェクトの画像を同じ座標に変換したいと考えています。オブジェクトとマーカーの間の距離を測定できますが、(マーカーではなく) 測定されたオブジェクトで作業するには、ホモグラフィ行列をどのように変更すればよいかわかりません。

4

1 に答える 1

2

この質問はかなり古いものですが、興味深いものであり、誰かにとって役立つかもしれません.

まず、質問で提示された問題をどのように理解したかを次に示します。

2 つの異なる位置で同じデジタル カメラによって取得された2つの画像 I 1と I 2があります。これらの画像は両方とも、共通の平面 p mにある一連のマーカーを示しています。測定されたオブジェクトもあり、その目に見える表面は、マーカーの平面に平行な平面 p oにありますが、小さなオフセットがあります。I 1のマーカー位置を I 2の対応するマーカー位置にマッピングするホモグラフィ H m 12を計算し、平面 p oと p mの間のオフセット d m-oを測定しました。それから、ホモグラフィ H o 12を計算したいと思います。I 1の測定オブジェクト上の点を I 2の対応する点にマッピングします。

この問題に関するいくつかのコメント:

まず、ホモグラフィはイメージ ポイント間の関係であり、マーカーの平面とオブジェクトの平面の間の距離はワールド座標での距離であることに注意してください。後者を使用して前者について何かを推測するには、カメラのポーズのメトリック推定が必要です。つまり、2 つの画像のそれぞれについて、カメラのユークリッドおよび最大スケールの相対位置と向きを決定する必要があります。ユークリッド要件は、デジタル カメラをキャリブレーションする必要があることを意味しますが、これは「光学測定システム」では問題になりません。スケールアップこの要件は、与えられた 2 つの 3D ポイント間の真の 3D 距離を知る必要があることを意味します。たとえば、任意の 2 つのマーカー間の真の距離 l 0を知る必要があります。

各画像のカメラの相対的な姿勢のみが必要なので、I 1のカメラの座標系を中心にして位置合わせされた 3D 座標系を使用することを選択できます。したがって、I 1の射影行列をP 1 = K 1 * [ I | 0]。次に、 (同じ 3D 座標系での) I 2の射影行列をP 2 = K 2 * [ R 2 | t 2 ]。また、I 1およびIに対するレンズ歪みをモデル化する係数をそれぞれD およびDで表す。

1のデジタル カメラで I 1とI 2の両方を取得したため、K 1 = K 2 = K および D 1 = D 2 = Dと見なすことができます。 (またはズームが異なる場合など)、2 つの異なるカメラ マトリックスと 2 組の歪み係数が関係していると考える方が正確です。

このような問題にアプローチする方法は次のとおりです。

P 1と P 2を推定する手順は次のとおりです。

  1. デジタルカメラのキャリブレーションにより、 K 1、K 2および D 1、D 2を推定します。

  2. D 1と D 2を使用して、画像 I 1と I 2のレンズ歪みを補正し、補正された画像のマーカー位置を決定します。

  3. 対応するマーカー位置から基本行列 F 12 (I 1の点を I 2のエピラインにマッピング) を計算し、基本行列 E 12 = K 2 T * F 12 * K 1を推測します。

  4. E 12と一点対応からR 2と t 2を推測します (関連する質問へのこの回答を参照してください)。この時点で、カメラの姿勢のアフィン推定が得られますが、t 2には単位ノルムがあるため、スケールアップされたものではありません。

  5. 2 つの任意のマーカー間の測定距離 l 0を使用して、t 2の正しいノルムを推測します。

  6. 最高の精度を得るには、K 1と ||t 2 ||を使用して、バンドル調整を使用して P 1と P 2を調整することができます。I 1と I 2の対応するマーカー位置に基づいて固定されます。

この時点で、カメラの姿勢P 1 = K 1 * [ I | I | 0 ] および P 2 = K 2 * [ R 2 | 0 ] t 2 ]。ここで、H o 12を推定する手順は次のとおりです。

  1. D 1と D 2を使用して画像 I 1と I 2のレンズ歪みを補正し、補正された画像内のマーカー位置を決定し (上記の 2. と同じ。やり直す必要はありません)、これらの対応する画像からH m 12を推定します。ポジション

  2. 次の線形方程式を解くことによりマーカー平面p m記述する3x1ベクトル v計算ます。Z は倍率です。原点までの距離を推測 d m = ||v|| 法線 n = v / ||v|| は、マーカーの平面 p mを 3D で表します。

  3. オブジェクト平面 p oは p mに平行であるため、同じ法線 n を持ちます。したがって、次のように、p mの原点までの距離 d mと、測定された平面オフセット d m-oから、 p oの原点までの距離 d oを推測できます。d o = d m ± d m-o (符号は、平面の相対位置: p mがp oよりも I 1のカメラに近い場合は正、そうでない場合は負)。

  4. 3D で物体平面を記述するn と d oから、ホモグラフィ H o 12 = K 2 * ( R 2 - t 2 * n T / d o ) * K 1 -1を推測します (HZ00 章 13、方程式 13.2 を参照)。

  5. ホモグラフィ H o 12は、I 1の測定オブジェクト上の点を I 2 の対応する点にマッピングしますここで、I 1と I 2の両方がレンズ歪みに対して補正されていると想定されます。元の歪んだ画像との間でポイントをマッピングする必要がある場合は、歪み係数 D 1と D 2を使用して H o 12の入力ポイントと出力ポイントを変換することを忘れないでください。

私が使用した参照:

[HZ00] 「コンピュータ ビジョンのための複数ビュー ジオメトリ」、R.Hartley および A.Zisserman、2000 年。

于 2014-04-04T09:29:03.667 に答える