2011-11-19 3 views
5

カメラでキャプチャした2つの重なり合った画像にマッチさせようとします。これを行うには、私はOpenCVを使用したいと思います。私はすでにSurfFeatureDetectorで特徴を抽出しました。今度は、2つの画像の間の回転ベクトルと平行移動ベクトルを計算しようとします。OpenCV:Camera Pose Estimation

私が知る限り、cvFindExtrinsicCameraParams2()を使用してください。残念なことに、このメソッドは引数としてobjectPointsを必要とします。これらのobjectPointsは、抽出されたフィーチャのワールド座標です。これらは現在のコンテキストではわかりません。

誰でも私にこの問題を解決するヒントを教えてもらえますか?

答えて

8

で約続きを読む:

ベルトルトK. P.ホーン。相対的方向性が再考される。 Berthold K. P. Horn。人工知能研究所、テクノロジー、545マサチューセッツ工科大学...

EDIT: http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.64.4700

私はこの問題への解決策を提案し、関連の質問に私の答えを参照してください:ここで、紙へのリンクです:

OpenCV extrinsic camera from feature points

EDIT:あなたは、あまりにもバンドル調整を見てみたいことがあり

http://en.wikipedia.org/wiki/Bundle_adjustment

これは、の初期見積もりがであると仮定しています。

EDIT:

リソースI:私はあなたが見て撮りたいかもしれないいくつかのコードリソースを見つけ

http://www.maths.lth.se/vision/downloads/

二つのビュージオメトリ推定外れ値とを

較正された2つの相対的な向きを見つけるためのC++コード カメラには異常値があります。得られた解は、inlierの数が最大になるという意味で最適である。

リソースII:

http://lear.inrialpes.fr/people/triggs/src/ 5点からの相対的な方向: 未知の3D点から二較正したカメラの相対的な向きの最小 ソリューションを実装幾分より洗練Cルーチン。 5点が必要であり、可能な解決策は10個ありますが(2-5がより一般的です)。また、線形代数のためのいくつかの CLAPACKルーチンが必要です。これについての短いテクニカル もあります(ソースに含まれています)。

リソースIII:

http://www9.in.tum.de/praktika/ppbv.WS02/doc/html/reference/cpp/toc_tools_stereo.html 計算2台の画像点の対応を所定のカメラと既知のカメラパラメータ 及び3D空間点を再構成する間の相対的な向きvector_to_rel_pose。

+0

非常に詳細な答えをありがとう!それはまさに私が必要としたものでした。 – SecStone

2

理論的な解決策がありますが、カメラ姿勢推定のOpenCV実装には必要なツールがありません。

理論的アプローチ: ステップ1:ホモグラフィ(画像間の幾何学的変換を記述するマトリックス)を抽出する。 findHomography()を使用します。 ステップ2.結果行列を回転と平行移動に分解します。 cv :: solvePnP()を使う。

問題:findHomography()は、平面から別の平面への投影に対応する3x3行列を返します。 solvePnP()は、オブジェクトの3D回転/平行移動を表す3x4の行列を必要とします。いくつかの近似で、solvePnPを修正していくつかの結果を得ることができると思いますが、数学と3Dジオメトリの理解が非常に必要です。

同時に二つの画像と未知の3Dの世界座標との間の相対的なポーズを計算する問題は、ここで処理されたhttp://en.wikipedia.org/wiki/Transformation_matrix

+0

(i)姿勢の唯一の違いは、カメラ中心についての回転であるか、または(ii)両方の画像が、画像平面全体を満たす平面オブジェクトを描写する場合に、ホモグラフィによって関連づけられる。一般に、ホモグラフィは画像間の変換をモデル化しません。 – Rulle

+0

ここで説明するのは、アフィン変換です。ホモグラフィは、任意の3D位置から他の任意の3D位置への一般的な変換である。これは4x4行列で完全に記述されます。しかし、トランスフォームにいくつかの制約を適用すると(すべてが同じ平面に留まるように)、3x3の行列しか使用できません。 – Sam

+0

ああ、私はあなたが、2つのイメージポイントが2つのイメージの間の同質の座標で表される3x3ホモグラフィ行列を意味すると考えました。 – Rulle

関連する問題