1

I am currently working on a project that requires me to find the pose of a camera using the opencv library. I am working on an iPod and currently take video input and find keypoints and descriptors using ORB and matching points using BruteForceMatcher from two frames in quasi realtime (it's highly unoptomised as of right now). I'm not sure if this is necessary but I also filter the matches so only matches that map both ways are drawn i.e. k->k1 and k1->k

I have the intrinsic parameters of the camera I am using as well as 2D keypoints. From this I am hoping to find the position of the camera (I assume these are the extrinsic parameters of rotation and translation).

Although I have looked through numerous tutorials a lot of this has gone a bit over my head and I need some guidance as to what method would work as well as an explanation. Most of the tutorials used a square of set reference points however I have no markers to use other than the keypoints pulled out of the frames.

From what I understand the steps are:

a) Find corresponding keypoints

b) Identify fundamental matrix

c) Estimate essential matrix

d) Decompose essential matrix into rotation and translation vectors

However, beyond step a) I am stuck.

4

1 に答える 1

1

あなたの声明から、あなたはすでにcvFindFundamentalMatにフィードできる2D対応のセットを取得していることを理解しました。これにより、2つの視点を関連付ける基本的なマトリックスが見つかります。つまり、カメラ1の各ポイントpとカメラ2の対応するポイントp'について、p'Fp =0です。計算された基本行列は、指定されたポイントに対応するエピポーラ線を見つけるopencvのComputeCorrespondEpilines関数にさらに渡されます。また、StereoRectifyUncalibrated関数に渡して、修正変換を計算することもできます。そこで、2つのカメラの座標系間の回転と平行移動(最大スケーリング)が得られます。

エッセンシャルマトリックスは、キャリブレーションされたカメラに関連するメトリックオブジェクトですが、ファンダメンタルマトリックスは、射影幾何学のより一般的かつ基本的な用語で対応を記述しているため、この場合、エッセンシャルマトリックスは必要ないと思います。すべての情報は、ファンダメンタルマトリックスに含まれています。また、整流変換は、カメラの固有のパラメーターと空間内の相対位置を知らなくても計算されます。

チェス盤のキャリブレーションパターンを使用していないが、代わりに一般的なオブジェクトまたは画像を使用している場合は、手動で、または堅牢な特徴抽出とマッチャーORB、MSER、SURF、SIFT、FASTを使用して対応を見つける必要があります。

さらに、ここでopencvのドキュメントを参照することをお勧めします。これがお役に立てば幸いです。

于 2012-11-26T12:12:14.593 に答える