iOS6のパノラマ撮影機能について | ザッパの開発日誌

ザッパの開発日誌

iOSアプリ開発を中心とした日常のこと

iOS6でパノラマ撮影が標準でサポートされましたが、パノラマ撮影用のライブラリなどは一切存在しません。

この機能を自分のアプリで実現させる場合は、ライブ画面も含めて全て独自に作成する必要があります。

標準のパノラマ機能は、加速度センサーなどのデバイスの機能とは無関係で、ライブ映像を監視して、移動したかどうかを画像解析で判断しています。

そのため、デバイスを固定して被写体側を動かしたり、風景などが横に移動するような動画を写した場合でもパノラマ撮影が機能します。

箱の上にiPhoneを固定して、被写体の定規を移動させることで、定規のパノラマ写真を撮影する。


現状では精度が低く、直線的な人工物などは途切れたり段差が発生し、移動速度にばらつきがあるとアスペクトが狂ってしまいます。

いくらやっても実用レベルにならない。



移動した部分をリアルタイムに繋げて行く方法なので、上記の問題が発生するのは当然でしょう。

撮影の操作方法は自然な感じで判りやすいので、操作方法はそのままで、一定間隔で自動撮影を行い、全て撮影した後でバッファ上で画像を解析して連結処理を行うほうが精度の良い画像が作成できると思います。

そこで問題になるのが、隣りの画像どうしを比較して同じ場所を検出する処理です。

これは、撮影する被写体が建物などエッジの効いた明確に変化の判るものなら簡単ですが、いちめんレンガの壁だったり、草むらだったり、特定する物が無い場合は非常に難しい処理になります。

特定の被写体に特化したものなら、上記の処理もうまく回避できる可能性があるので、
今後、アプリの仕様と平行して考えたいと思います。

ヒント:被写体の動かし方次第で、あり得ない面白い画像になります。


最後に一言:パノラマ撮影画面で、矢印をタップすると移動方向が左に変更できますが、今まで知りませんでした。たまたま矢印に触れてビックリしました。

22日、追記:
360度までの移動検出を行う必要があるので、現状のパノラマ機能と同様に、リアルタイムに繋げて行く処理は必要です。
結局、現状のパノラマ機能と同じ仕様で作成し、それに一定間隔の撮影処理と撮影終了時の補正処理を加える形になりそうです。