[Picam360]Introduction

近年のハードウェア環境として、スマートフォンなどの大型ディスプレイ搭載の携帯端末の普及や通信回線のコストの低下、Raspberry Piのような安価で必要十分な性能を持ったボードコンピュータが登場し、個人でも開発可能なハードウェアの幅が大きく広がりました。また、イメージセンサとディスプレイの解像度の相対的変化により、今までのアプリケーションではオーバースペックとなったイメージセンサの解像度を有効活用する動きも注目すべきです。代表例としては、撮影後でもピントを自由に選択できるライト・フィールド・カメラだったり、180度を超える画角を持った半天球パノラマカメラがあり、その流れの中で、2つの半天球パノラマカメラによる全天球パノラマカメラが普及する兆しを見せています。そういった環境変化の中で、「スマホ」x「ネットワーク」x「Raspberry Pi」x「パノラマカメラ」をターゲットとしたオープンソースなシステムがあれば、世界中のMakersの知恵から新しい価値が生まれるのではという期待を込めて「オープンソースのパノラマカメラPicam360」の開発をスタートしました。

「ネットワーク」x「カメラ」の組み合わせであるネットワークカメラは従来からありますが、制限された画角で死角を補うためには、回転機構が必要でした。その場合、データ転送の遅延の制約のもと、ユーザー視点と映像のずれが生じていました。パノラマカメラを用いることでこのずれを改善することができ、回転機構も必要ないためシンプルなシステムになります。しかし、ここで新たな問題として、2K@360°のパノラマ画像では一般的なユーザが見る画像の解像度としては0.5K@90°程度となり解像度に対するビットレートは従来よりも大幅に高くなります。従来ではサイコロの1面だけで済んだものが6面全てが必要となりビットレートが6倍に膨れたと考えればイメージしやすいと思います。YoutubeやFacebookが取り組んでいる、パノラマ映像のブロードキャスティング(1対Nの片方向通信)では、この点が制約となり、高解像度のパノラマ映像をリアルタイムにアップロード・ダウンロードするためには「PC」x「サーバー」のようなハイパフォーマンスな環境が必要となります。一方、「スマホ」x「Raspberry Pi」の組み合わせでは、多くの場合、ピアツーピア(1対1の双方向通信)で接続するので、ユーザが見ているサイコロ1面だけの画像転送で済みます。また、「PC」x「サーバー」と比べると、スマホの相対的解像度とRaspberry Piの相対的GPU性能が相殺され、対コスト比で妥当な性能が見込めます。そこで、Picam360では、SSPR(サーバーサイドパノラマレンダリング)という技術を実装し、「スマホ」x「ネットワーク」x「Raspberry Pi」x「パノラマカメラ」の組み合わせに加え、「リアルタイム」x「ピアツーピア」をターゲットとしたシステムでパフォーマンスを発揮するように開発しました。

Picam360では拡張性を重視し、クライアン側ではWEBアプリ(HTML5+Javascript+WebGL+WebRTC)を採用し、サーバー側ではNode.JS(Javascript+WebRTC)を採用しています。クライアント側、サーバー側どちらもJavascriptで記述されたプラグインを追加することで、機能拡張をすることができるようになっています。WEBアプリでピアツーピア通信を可能にするWebRTCはChrome@Androidは早くから実装されていましたが、iPhoneでは2017.SepのiOS11より実装され、ようやく環境が整いました。

今後とも、Picam360を使った新しい価値が生まれることを願って開発を進めて参ります。また、Picam360を拡張したプロジェクトの記事も掲載していきます。これらを読んでいただい方々のアイデアの種となれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です