環境
C++, OpenCV2.4
ソースコード
https://gist.github.com/3135917
使い方
入力として、画像ファイルを入れると,panorama.pngとしてパノラマ画像が出力されます。
画像サイズとか高さとかは割と適当なので、時間を見つけて直して行きます。
ToDo
- カラー対応
- サイズをきっちり揃える
コンパイル方法
MacPortsでOpenCVをインストールしたと仮定した後の話
g++ panorama_stitching.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv` -lm
でコンパイルができます。多分
アルゴリズムの概説
アルゴリズムの概説
- 各入力画像に対してSURFで特徴点を抽出
- 隣り合う画像(入力の前後)で対応点マッチング
- 前後の画像から、変換行列を最小二乗法で推定。
座標系は円筒座標を仮定し、全ての写真は同じ奥行きにあると仮定 - 変換行列を逐次乗じながら、それぞれの画像を結果画像にマッピングして行く
注意)
入力するときは隣り合う画像を入力してください。連続する画像で対応点が取れないと破綻します。
変換行列の全体最適は行っていないので、少しずつ計算誤差が累積します。
0 件のコメント:
コメントを投稿