私が求めていることに関連するワームの缶がたくさんあることはわかっていますが、どこかから始めなければなりません。基本的に、私が求めているのは次のとおりです。
未知のカメラで撮影されたシーンの 2 枚の写真が与えられた場合、写真間の (相対的な) ゆがみをどの程度判断できますか?
以下は、1904 年の世界博覧会の 2 つの画像です。それらは無線電信塔のさまざまなレベルで撮影されたため、カメラは多かれ少なかれ垂直に並んでいます. 私の目標は、これらの写真や他の写真から地域のモデルを作成することです (問題があれば Blender で)。完全に自動化されたソリューションを探しているわけではありません。たとえば、ポイントとフィーチャを手動で選択することに問題はありません。
この 1 か月間、射影変換とエピポーラ幾何について自分にできることを学びました。いくつかの写真のペアでは、点の対応関係から基本行列Fを見つけることで、かなりうまくいくことができます。しかし、以下の2つは私に問題を引き起こしています。ある種のゆがみがあるのではないかと思います。縦横比の変化だけかもしれませんし、それ以上かもしれません。
私のプロセスは次のとおりです。
- 2 枚の写真 (下に見られる赤いギザギザの線) の間に対応関係があることがわかります。
- 点のペアを Matlab (実際には Octave) で実行して、エピポールを見つけます。現在、Peter Kovesi の Peter's Functions for Computer Visionを使用しています。
- Blender で、画像を重ねて 2 台のカメラをセットアップしました。消失点に基づいて最初のカメラの向きを合わせます。また、消失点から焦点距離を決定します。エピポールとポイント ペアの 1 つ (以下、バンドスタンドの上部のポイント) を使用して、最初のカメラに対して 2 番目のカメラの向きを合わせます。
- ポイント ペアごとに、各カメラからそのサンプル ポイントを介して光線を投影し、ペアの最も近いカバージェンスをマークします (下の明るい黄色)。 これにより、基本的なマトリックスからの情報が除外されることに気付きました-以下を参照してください。
ご覧のとおり、点はあまり収束していません。左からのものは、バンドスタンドポイントから水平に行くほど広がります。これは、カメラの組み込みの違いを示していると思います。残念ながら、点対応から派生したFから組み込み関数を見つける方法が見つかりません。
結局のところ、個々の組み込み関数自体は気にしていないと思います。私が本当に必要としているのは、組み込み関数を適用して画像を「修正」し、それらをオーバーレイとして使用してモデルを手動で調整できるようにする方法です。
これは可能ですか?他の情報が必要ですか? 明らかに、カメラの組み込み関数について何かを見つける望みはほとんどありません。ただし、どの機能が直交しているかなど、明らかな構造情報がいくつかあります。消失点を使用して変換をさらに改良またはアップグレードできるというヒントをどこかで見ましたが、具体的なものは見つかりませんでした。
更新 1
解決策を見つけたかもしれませんが、回答として投稿する前に、主題についてある程度の知識を持っている人に検討してもらいたいです。Peter's Functions for Computer Visionには、サンプル ポイントからホモグラフィの RANSAC 推定を行う関数があることがわかりました。を使用するm2 = H*m1
と、2 番目の画像の実際の m2 ポイントの上に m1 -> m2 のマッピングをプロットできるはずです。
唯一の問題は、自分が見ているものを信じているかどうか確信が持てないことです。Fからのエピポールを使用して非常によく一致する画像ペアでさえ、ホモグラフィからのマッピングはかなり悪いように見えます。
わかりやすいイメージをつかもうとしているのですが、私の推論に何か問題がありますか?