ステレオビジョン入門

disparity_map
>> DisparityMap.swf
(距離が近い:白,距離が遠い:黒)

Flashでもステレオ画像処理をしてみたかったので少し試してみました。

ステレオビジョンの基本は「三角測量」です。
カメラ間の距離とレンズから結像面までの距離が既知で、
両眼視差が求まれば対象の奥行きを算出することができます。
人間の目も同じ仕組みでモノを見ています。
ただ、今回は距離計測なのでそれに関することだけ紹介します。

対応点探索のアルゴリズムはBirchfieldの手法を使い、
2枚の画像間で特徴点位置のズレを視差として輝度値に変換した視差画像(Disparity Map)を生成します。
ちなみにこのアルゴリズムはOpenCVのステレオマッチング関数にも採用されており、
OpenCV 1.1ではさらに2つのアルゴリズムが追加されています。
視差情報を利用すれば対象の三次元形状を復元することが可能であり、昔から多くの研究がなされています。

今回はBitmapData.getVector() で取得したVector内のデータをそのまま使ったゴリ押し実装なので、
前処理(?として convolutionFIlter() や compare() を上手く使えないかなと考えている所です。
ただ、 compare() の使い方がよくわかってないんですが;
ちなみに、OpenCVの cvFindStereoCorrespondence() では動的計画法を使って解いてるようです。

あとは安価なUSBステレオカメラがあれば。
↓のやつがそのまま使えるとうれしい。アナグリフじゃなくてステレオペア画像を見られるのかどうか。。
Novo Minoru 3D Webcam – Only £49.99 - Digital Depot

 

Tags: ,

Comments

No comments so far.

  • Leave a Reply
     
    Your gravatar
    Your Name