1

私はOpenCVで自分のホモグラフィとポーズ推定を実装しようとしています。カメラからの入力フレームに配置したいモデルとして正方形の画像があるとします。私の質問は、ホモグラフィを計算するためのモデルデータを準備する方法についてです。

私は次の手順を実行しました:

1-両方の画像で対応する3つのセットを抽出しました。

 Input features:       Model Features:
p1_Input(278,278)---> p1_model(137,273)
p2_Input(317,235)---> p2_model(176,230)
p3_Input(217,204)---> p3_model(76,199)  //all in pixel

2-P3P問題の解決:

a)カメラ固有のパラメータを使用して入力ポイントを正規化する:

u.x=(p1_Input.x - cx) / fx 
u.y=(p1_Input.y - cy) / fy  
u.z=1

v.x=(p2_Input.x - cx) / fx 
v.y=(p2_Input.y - cy) / fy  
v.z=1

w.x=(p3_Input.x - cx) / fx 
w.y=(p3_Input.y - cy) / fy  
w.z=1

b)単位ベクトルを持つために長さを正規化する:

d = sqrt(u.x*u.x + u.y*u.y + 1);
u.x=u.x/d;
u.y=u.y/d;
u.z=u.z/d;  // and same for v and w

c)p3pを解き、a、b、cに保存することにより、uとカメラの焦点の間の距離を求めます(vとwについても同じです)。

d)3D座標の計算:

A_Input.x=a*u.x;
A_Input.y=a*u.y;
A_Input.z=a*u.z;  // same for B_input and C_Input

like:
A_Input:(-0.0899342 ,0.0570672 ,0.976046)
B_Input:(-0.0197703 ,-0.0194311 ,0.955101) 
C_Input:(-0.197233 ,-0.0746457 ,0.967379)

3-コンピューティングホモグラフィ

私の質問はここで生じています。p1_model,p2_model and p3_modelホモグラフィコンピューティングに備えるために、どのように準備および変更する必要がありますか?

明らかに A_Input、は正規化された日付の3Dベクトルですがp1_model、はピクセル単位の2Dベクトルです。

問題を解決した後、残りは次のようになります。

a)両方のセットの中心点を見つける。

b)この式ドット製品を使用してHを見つける

4-HとSVDを使用して剛体変換を見つける

詳細はこちらこちらをご覧ください

4

1 に答える 1

0

座標系に関する限り、P3P(またはPnP)アルゴリズムから良好な結果を得るためにポイントを入れる必要のある特定の「形式」はなく、一貫性があります。p1とp2の間の対応が与えられた場合に、アルゴリズムが探している解決策は次のとおりです。

p2 = [resulting_3x4_transform]*p1;

各通信に対して。数値的な理由から、座標値を非常に大きくしたり小さくしたりしないことをお勧めしますが、それ以外の場合は、任意の座標系にポイントを自由に配置できます。

于 2012-10-22T16:47:48.023 に答える