まずは一番簡単なところからはじめていきたいと思います。
画像の条件:
・スケーリングや回転はなし
・透視変換も一切なし
・画像間の変化はx軸とy軸に平行な移動のみ
というものです。
今回はx方向とy方向の差分を求めればよいのですが、
そのためには画像Aにある特徴が画像Bのどこにあるかを最初に見つける必要があります。
この辺はOpenCVのサンプルプログラムの中で検出してくれているので特に考える必要はありません。
今回は最小二乗法を使って、x方向とy方向の移動量を求めました。
その結果が下記の通りとなります。
1枚目は8枚の画像を合わせていく過程で、2枚目が画像を貼り合わせた
パノラマ画像となります。
まぁ、そこそこいい感じに出来たみたいです。
今回のソースコードは別館のほうに置いておきました。
今後の目標は下記の通りです。
・RANSACを使って、移動量をもう少し正確に求める(最小二乗法は、エラーの点も計算に含むので、エラーの点の影響を受けやすいようです)
・入力される画像の順番がバラバラでもパノラマ画像を作れるようにする
・画像の回転に対応する
・画像の拡大・縮小に対応する
・プログラムをもっと効率的にする
あと、パノラマ画像作成のプロジェクトのページを見つけたので、リンクを貼っておきます。
Automating Joiners ・・・パノラマ画像作成の論文や、スライドがあります。
Computational Photography・・・カーネギーメロン大学のComputer Photographyという講義のページ。パノラマ画像作成以外にも、モーフィングやモノクロ画像の自動着色プロジェクトがあります。この講義は結構楽しそうな感じです。
ではまた。
0 件のコメント:
コメントを投稿