5

オーバーラップが非常に少なく、おそらく500 px未満のオーバーラップで、2つの航空写真をつなぎ合わせようとしています。これらの画像の解像度は3600x2100です。このタスクを完了するためにOpenCVライブラリを使用しています。

これが私のアプローチです:

1. Find feature points and match points between the two images.
2. Find homography between two images
3. Warp one of the images using the homgraphy
4. Stitch the two images

現在、これを2つの画像で機能させるようにしています。手順3、場合によっては手順2で問題が発生してfindHomography()います。OpenCVライブラリから2つの画像間のホモグラフィを取得するために使用しました。次にwarpPerspective()、ホモグラフィを使用して自分の画像の1つを呼び出しました。

このアプローチの問題は、変換された画像がすべて歪んでいることです。また、画像の特定の部分のみを変換しているようです。なぜそれが画像全体を変換しないのか私にはわかりません。

誰かが私にこの問題にどのように取り組むべきかについてアドバイスをくれますか?
ありがとう

4

3 に答える 3

3

あなたが投稿した結果を見ると、キーポイントの不一致が少なくとも 1 つあります。を使用するfindHomography(src, dst, 0)と、ホモグラフィが台無しになります。findHomography(src, dst, CV_RANSAC)代わりに使用する必要があります。

warpAffineの代わりに使用することもできますwarpPerspective

編集:質問へのコメントに投稿した結果では、マッチングが非常に安定して機能しているという印象を受けました。つまり、この例でも良い結果が得られるはずです。ほとんどの場合、翻訳を処理する必要があるように思われるため、次のスケッチ アルゴリズムを使用して外れ値を除外することを試みることができます。

  1. 平均 (または中央値) モーション ベクトルを計算するx_avg
  2. 正規化された内積を計算する<x_avg, x_match>
  3. x_match内積がしきい値より小さい場合は破棄します
于 2011-05-16T10:25:04.837 に答える
1

オーバーラップが小さい画像で機能させるには、検出器、記述子、および一致を確認する必要があります。使用する記述子は指定しませんが、SIFTまたはSURF記述子と対応する検出器を使用することをお勧めします。また、検出器のパラメーターを設定して、密なサンプリングを行う必要があります(つまり、より多くの特徴を検出してみてください)。

少し関連しているこの回答を参照できます:OpenCV-画像ステッチ

于 2011-05-18T05:32:00.527 に答える