ストリートビューもどき編(1) 360度見渡せる画像を作る

今回は自動化の話ではなく自分でグーグルストリートビューもどきを作ってみようというネタです。実際に作ってみたのが以下のページにあります。グーグルストリートビューと違って見上げることはできず、左右をぐるりと見渡せるだけのものです。

●Local View
http://www.openspc2.org/LocalView/

グーグルストリートビューには、プライバシーの問題とかいろいろありますが、ここでは怒られない程度にPhotoshopなどで加工するという前提にしておきます。
加工しておくと望ましいものは

・人物(特定できないようにする)
・車(ナンバーが分からないようにする)
・室内が映っていたら消す

といったところです。グーグルでは自動的に処理させているようですが、ここでは手作業で行います(Photoshopでは顔や車のナンバーをピックアップして周辺をぼかす、という事がJavaScriptからはできない。不可能ではないが遅すぎて無理。ちなみにBridgeならピクセルの処理が高速なので可能かも。でも、私には技術がないので無理)。

次に機材ですが、一眼レフに魚眼レンズを付けて撮影するという手もありますが、ここでは先月発売されたSONYのbloggieというデジカメを使います。

●モバイルHDスナップカメラ ブロギー (MHS-PM5K)
http://www.sony.jp/bloggie/
http://www.sony.jp/bloggie/products/MHS-PM5K/

このカメラは付属の360ビデオレンズをくっつけると、360度の画像や映像を映すことができます。映像は、別の機会にやるとして、まずは360度の静止画を撮影してストリートビューもどきを作ります。
この360度の画像ですが、写した状態ではドーナツ型の画像になっています。このため、専用のアプリケーションを使って360度ビデオコンバートする必要があります。映像でなく静止画の場合でも360度ビデオコンバートを選択します。
すると、横長の360度画像に変換されます。これをそのまま使ってもよいのですが、車のナンバーや人物の顔が特定できてしまうといけません。そこで、画像を縮小することで車のナンバーなどをわかりにくくします。人物も縮小することで判別が難しくなります。(実際には塩尻市には人が歩いていなくて実質1人しか写りませんでした。人物がたくさん写るのは都会だけの話っぽいです)
画像の縮小処理はPhotoshopのバッチ処理で行います。

便利なカメラですが、1つ問題があります。それはGPS機能が内蔵されていないことです。そこで、別途GPS機器を購入するか、GPSが搭載された携帯+サーバーでどうにかするしかありません。幸い手元にはGARMIN社のGPS機があるので、これを使って位置情報を記録します。
以前の連載でもこのGPS機からのデータをIllustratorにプロットしました。今回は座標値だけをピックアップしてテキストファイルに保存します。それが以下のスクリプトになります。PhotoshopでもIllustratorでもESTKでも動作します(旧マクロメディア系のアプリは駄目)。


(function(){
var fileObj = File.openDialog("GPSデータファイル選択してください", "*", false);
if (!fileObj) return;
var savefile = File.saveDialog("保存ファイル名を入れてください");
if (!savefile) return;
if (!fileObj.open("r")) { alert("開けません"); return; }
if (!savefile.open("w")){ alert("保存できません"); return; }
while(!fileObj.eof){
var txt = fileObj.readln();
if (txt.indexOf(" <wpt lat=") == -1) continue;
var s = txt.indexOf('"', 12);
var lat = txt.substring(12, s);
var s = txt.indexOf('lon="')+5;
var e = txt.indexOf('"', s+5);
var lon = txt.substring(s, e);
savefile.writeln(lat+","+lon);
}
savefile.close();
})();

ここでピックアップされた座標データを、そのままJPEG画像ファイル名にします。つまり以下の座標がピックアップされたとします(緯度経度がカンマ区切り)。

35.9659179,137.8142582
35.9659210,137.8141263
35.9659419,137.8140177
35.9659652,137.8141651

これを、そのままJPEG画像のファイル名にしてしまうわけです。

35.9659179,137.8142582.jpg
35.9659210,137.8141263.jpg
35.9659419,137.8140177.jpg
35.9659652,137.8141651.jpg

360度の画像を表示する時には「緯度,経度.jpg」とすれば該当する画像が表示されることになります。

[サンプルをダウンロード]