ロゴ メインコンテンツへ
RSSフィード
「開発記録」に関連する記事一覧

携帯で撮影した手動ずらし2視点画像から立体画像を作る

2011/07/31
(この記事の文字数: 1192)
2眼カメラは安価になっているとは言え、20000円以上のカメラを購入する必要があるというのは、本当の意味で手軽ではないです。すでに一般的に多く普及しているものを使って立体画像を作れて初めて手軽と言えるんだと思います。

ほとんどの人が持っている携帯のカメラで撮影した画像で立体画像が作れれば、かなりお手軽だと言えます。

ということで、携帯カメラで立体画像を作れないかとやってみました。
使用するのはiPhoneのカメラと私の手。

手ずらしだと当然ぶれてしまう可能性が出てきてしまいます。エピポーラ線が水平になっていない(カメラが並行の状態でない)カメラで撮影された画像は立体化でタブーです。水平でない状態で撮影された画像で立体を作ると、人間の目の位置と矛盾した立体になってしまうので、立体を見た人が気持ち悪くなってしまってしまいます。

ものすごくセンスのある人ならいきなり左右に正確にずれている画像を撮影できるかもしれませんが、ここはひと手間入れて、このリスクを取り去ることにします。

最終的にエピポーラ線が水平になっている画像(左右のカメラが水平な状態で撮影された画像)が作れれば良いので、一枚の画像から完全に水平にずれている画像を作ることでこのずれの問題は回避しようと思います。

水平にずれている画像は1枚の画像とその画像の奥行き情報があれば作り出すことができます。

つまり、左右にずれている2枚から視差が画素ごとに計算できればOKということになります。

視差ずれは水平にずれていなくても計算が可能なので、ある程度おおまかでも大丈夫です。

ということで試しに私の持っているiPhoneのカメラでスニーカーを手ずらし撮影してみました。

 
適当に撮影した画像1



画像1からちょっと手ずらしして撮影し画像2

ちょっとおおげさにななめにずらして撮影してみました。元画像の解像度は640x480です。

そしてステレオマッチングで視差を計算。

 
ステレオマッチングで計算した視差マップ(近いほど白い)

ステレオマッチングにはSSDのブロックマッチング法を使いました。見ていただいてわかるように、適当なてずらしでもそこそこ視差が計算できました。

あとは元画像とこの視差マップをベースに画素移動を行い、完全に水平にずれている画像を生成します。

下のが生成した2枚の画像をアナグリフ画像にしたものです。

 
生成した画像をアナグリフ画像(赤青メガネで見る立体画像)で立体化

そしてこちらは一枚の画像と視差マップからずれ具合を変えて複数枚の画像を生成し、それらを動画で繋げたもの。

 
ずらし幅を変えて複数生成した画像からの作った水平移動アニメーション

移動視差の方が立体感がわかりやすいですね。

という感じで携帯で撮影した手ずらし画像から立体画像を作るのに成功しました。

これを応用すれば映像制作に使う背景の水平移動アニメーションなんかは作れてしまえそうです。

  このエントリーをはてなブックマークに追加  

<<「開発記録」の記事一覧に戻る

コメント(0 件)



コンテンツロード: 0.0074 sec
Copyright(C)2006-2024 puarts All Rights Reserved