2009年02月08日

ステレオカメラ2

前回のステレオカメラを改良。

ステレオカメラ

カメラを2つきっちり固定して、
相対位置を計算に入れてみました。

結果は今ひとつですが、こいつはこれで終了!

OpenCVではキャリブレーションはチェッカー模様を見せて行います。
普通は平らな板に印刷したものを見せるのですが、プリンタがないし面倒なので、PDFファイルを画面に映してそれをカメラが見るようにしました。
キャリブレーションの様子
こうやって二つのカメラが同時に同じ模様を見ることで互いの位置関係が計算できます。さらに模様の直線の映り方からレンズによる歪みが補正できます。

この情報を使ってCvCalibFilter::Rectifyで二つの画像が平行になるように変換して、cvFindStereoCorrespondenceを呼び出すとステレオマッチングができます。前回はこのRectifyなしで、手動で平行に映るようにカメラを調整してました。
2つのカメラを平行に固定していたつもりでしたが、結構傾いてました。このカメラ自体精密に作られてないのでしょうがないでしょう。

プログラムはMomma's Wiki: CvCalibFilterによるステレオ視を使用。
結果をビデオに吐き出させようとしたのに、なぜかビデオファイルの中身が空っぽになってしまうので断念。

で、なぜか前回の結果よりひどくなりました。
1.cvFindStereoCorrespondenceの謎のパラメータ5つがまずいのか
2.カメラの明るさが自動補正されて左右でずれるのがまずいのか
3.画角やカメラの間隔が悪いのか。
どれも簡単には対処できないので、今回はあきらめることにします。
この方法みたいな点同士の比較より、やっぱりブロックマッチングみたいに領域単位で比較しないとうまくいかなそう。
領域と言えばOpenCV 1.1preではグラフカットを使ったステレオマッチングがあるそうです。こちらは実時間では動きそうもないみたい。やっぱり簡単にはいかんわなー。

ステレオで得られた2.5D映像に元の色をのっけて、OpenGL側で表示したかったんやけどな……。
でもそれができてどないやねんってとこが頭に浮かばないので、
こんなもんにしておきます。
posted by ひで at 20:38| Comment(0) | TrackBack(0) | ビジョン | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。