以下、本実施形態について説明するが、実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下の実施形態では、画像処理装置、撮像装置および動画再生システムの一例として、それぞれ、情報端末、該情報端末に接続される全天球カメラおよび全天球動画システムを用いて説明する。
以下、図1~図3を参照しながら、本実施形態による全天球動画システムの全体構成について説明する。
図1は、本実施形態による全天球動画システムを構成する全天球カメラ110の断面図である。図1に示す全天球カメラ110は、撮像体12と、上記撮像体12、コントローラ15およびバッテリ16などの部品を保持する筐体14と、上記筐体14に設けられたシャッター・ボタン18とを備える。
図1に示す撮像体12は、2つの結像光学系20A,20Bと、CCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサなどの2つの撮像素子22A,22Bとを含み構成される。結像光学系20各々は、例えば6群7枚の魚眼レンズとして構成されている。上記魚眼レンズは、図1に示す実施形態では、180度(=360度/n;光学系の数n=2)より大きい全画角を有し、好適には、185度以上の画角を有し、より好適には、190度以上の画角を有する。このような広角な結像光学系20と撮像素子22とを1個ずつ組み合わせたものを広角撮像光学系と参照する。なお、説明する実施形態では、光学系の数が2である場合を一例として説明するが、広角な領域を撮影可能なものであれば、光学系の数は、1であってもよいし、3以上であってもよい。また、魚眼レンズのような180度以上の画角を持つものに限られるものではない。
図1に示す実施形態では、結像光学系20A,20Bは、同一仕様のものであり、それぞれの光軸が合致するようにして、互いに逆向きに組み合わせられる。撮像素子22A,22Bは、受光した光分布を画像信号に変換し、コントローラ上の画像処理手段に順次、画像フレームを出力する。詳細は後述するが、撮像素子22A,22Bでそれぞれ撮像された画像は、合成処理されて、これにより、立体角4πステラジアンの画像(以下「全天球画像」と参照する。)が生成される。全天球画像は、撮影地点から見渡すことのできる全ての方向を撮影したものとなる。そして、全天球画像の連続するフレームにより、全天球動画が構成される。
ここで、説明する実施形態では、全天球画像および全天球動画を生成するものとして説明するが、全天周画像や全天周動画、水平面のみ360度を撮影した、いわゆるパノラマ画像およびパノラマ動画であってもよいし、その他、180度の画角を撮影した半球の画像または半円筒の画像であってもよく、球面または円筒上の画像情報を持つ画像データであればよい。すなわち、本実施形態による動画およびそれに含まれる画像は、所定軸周りの角度座標を含む座標系で表される画像である。上記全天球画像・動画、半球画像・動画、部分的な球面の画像の場合は、動径を定数(例えば1)として、所定軸と動径とがなす角を表す角度座標および所定軸周りの角度座標を含む球面座標系で表される。上記パノラマ画像・動画またはその部分画像の場合は、動径を定数(例えば1)として、円筒の軸方向の座標および該軸周りの角度座標を含む円筒座標系で表される。
図2は、図1の全天球カメラ110を撮影者の頭部50に固定する場合を説明する。図2は、帽子型の固定器具52に、全天球カメラ110を固定している例である。このように撮影者の頭部50に全天球カメラ110を装着することで、全天球カメラ110によって撮像される画像データの撮影正面方向は、撮影者の首振り運動Hに追従する形となる。撮影正面方向はあらかじめ設定されている方向であって、動画データを再生する際に表示される基準となる方向である。図2には、撮影者の進行方向Tも併せて示してある。撮影者は、辺りを見渡しながら進む場合があり、首振り運動Hによる撮影正面方向と、進行方向Tとは必ずしも一致しない。図2に示すように全天球カメラ110を帽子型の固定器具52に固定して、頭部50に装着する以外にも、全天球カメラ110自体が頭部50に装着可能な形状のもの(全天球カメラの機能が埋め込まれたヘルメットや帽子)である場合もある。
図3(A)は、本実施形態による全天球動画システムを構成する全天球カメラ110のハードウェア構成を示す。全天球カメラ110は、説明する実施形態における画像処理装置または撮像装置に対応する。
全天球カメラ110は、CPU(Central Processing Unit)112と、ROM(Read Only Memory)114と、画像処理ブロック116と、動画圧縮ブロック118と、DRAM(Dynamic Random Access Memory)インタフェース120を介して接続されるDRAM132と、外部センサインタフェース124を介して接続されるセンサ136とを含み構成される。ここで、CPU112、ROM114、画像処理ブロック116および動画圧縮ブロック118は、図1に示したコントローラ15上に搭載される。
CPU112は、全天球カメラ110の各部の動作および全体動作を制御する。ROM114は、CPU112が解読可能なコードで記述された、オペレーティング・システム(OS)や制御プログラムや各種パラメータを格納する。画像処理ブロック116は、2つの撮像素子130A,130B(図1における撮像素子22A,22Bである。)と接続され、それぞれで撮像された画像の画像信号が入力される。画像処理ブロック116は、ISP(Image Signal Processor)などを含み構成され、撮像素子130から入力された画像信号に対し、シェーディング補正、ベイヤー補間、ホワイト・バランス補正、ガンマ補正などを行う。
動画圧縮ブロック118は、MPEG-4 AVC/H.264などの動画圧縮および伸張を行うコーデック・ブロックである。DRAM132は、各種信号処理および画像処理を施す際にデータを一時的に保存する記憶領域を提供する。
センサ136は、図3(A)に示す実施形態では、角速度センサ136Aおよび加速度センサ136Bを含み構成される。角速度センサ136Aは、3軸の角速度成分を検出するセンサである。加速度センサ136Bは、3軸の加速度成分を検出するセンサである。検出された加速度成分および角速度成分は、後述するように、重力方向への全天球画像の天頂補正および重力方向周りの回転補正を施すために用いられる。センサ136としては、さらに、方位角などを求めるための地磁気センサ(電子コンパスともいう。)など他のセンサを備えてもよく、方位角を重力方向周りの回転補正を施すために用いてもよい。
全天球カメラ110は、さらに、外部ストレージインタフェース122と、USB(Universal Serial Bus)インタフェース126と、シリアルブロック128とを含み構成される。外部ストレージインタフェース122には、外部ストレージ134が接続される。外部ストレージインタフェース122は、メモリカードスロットに挿入されたメモリカードなどの外部ストレージ134に対する読み書きを制御する。USBインタフェース126には、USBコネクタ138が接続される。USBインタフェース126は、USBコネクタ138を介して接続されるスマートフォンなどの外部装置とのUSB通信を制御する。シリアルブロック128は、スマートフォンなどの外部装置とのシリアル通信を制御し、無線NIC(Network Interface Card)140が接続される。
電源スイッチの操作によって電源がオン状態になると、上記OSや制御プログラムがメインメモリにロードされる。CPU112は、メインメモリに読み込まれたプログラムに従って、装置各部の動作を制御するとともに、制御に必要なデータをメモリ上に一時的に保存する。これにより、全天球カメラ110の後述する各機能部および処理が実現される。
図3(B)は、本実施形態による全天球動画システムを構成する情報端末150のハードウェア構成を示す。情報端末150は、説明する実施形態における情報処理装置に対応する。
図3(B)に示す情報端末150は、CPU152と、RAM154と、内部ストレージ156と、入力装置158と、外部ストレージ160と、ディスプレイ162と、無線NIC164と、USBコネクタ166とを含み構成される。
CPU152は、情報端末150の各部の動作および全体動作を制御する。RAM154は、CPU152の作業領域を提供する。内部ストレージ156は、CPU152が解読可能なコードで記述された、オペレーティング・システムや、本実施形態による情報端末150側の処理を担うアプリケーションなどの制御プログラムを格納する。CPU152は、複数のCPUによって成り立つものであっても良い。
入力装置158は、タッチスクリーンなどの入力装置であり、ユーザ・インタフェースを提供する。入力装置158は、全天球動画の補正など操作者による各種の指示を受け付ける。外部ストレージ160は、メモリカードスロットなどに装着された着脱可能な記録媒体であり、動画形式の画像データや静止画データなどの各種データを記録する。ディスプレイ162は、ユーザ操作に応答して補正された全天球動画を画面表示する。無線NIC164は、全天球カメラ110などの外部機器との無線通信の接続を確立する。USBコネクタ166は、全天球カメラ110などの外部機器とのUSB接続をする。
情報端末150に電源が投入され電源がオン状態になると、内部ストレージ156から制御プログラムが読み出され、RAM154にロードされる。CPU152は、RAM154に読み込まれた制御プログラムに従って、装置各部の動作を制御するとともに、制御に必要なデータをメモリ上に一時的に保存する。これにより、情報端末150の後述する各機能部および処理が実現される。
以下、図4~図9を参照しながら、本実施形態による全天球動画システムが備える全天球動画再生機能について説明する。
図4は、本実施形態による全天球動画システム上で実現される全天球動画再生機能に関連する主要な機能ブロック200を示す。全天球カメラ110の機能ブロックは、図4に示すように、画像処理部210と、出力部240とを含み構成される。画像処理部210は、第1撮像部212と、第2撮像部214と、角速度検出部216と、加速度検出部218と、画像合成部220と、天頂補正量計算部222と、第1回転量計算部224と、第2回転量計算部226と、記憶部228と、画像回転部230とを含み構成される。各部の処理は、コントローラ15が備えるCPU112や画像処理ブロック116が各種プログラムを実行することによって行われる。
これに対して、情報端末150の機能ブロックは、同じく図4に示すように、受信部252と、表示制御部254とを含み構成される。各部の処理は、情報端末150が備えるCPU152が各種プログラムを実行することによって行われる。
以下、まず、全天球カメラ110側の機能ブロックについて説明する。
第1撮像部212は、撮像素子130Aを用いて順次撮像し、時系列的に連続した魚眼画像Aを生成する。第2撮像部214は、撮像素子130Bを用いて順次撮像し、時系列的に連続した魚眼画像Bを生成する。画像合成部220は、時系列的に連続した魚眼画像A(第1フレームデータ)および時系列的に連続した魚眼画像B(第2フレームデータ)に対してスティッチング処理を施し、フレーム合成データを作成する。フレーム合成データは、撮影を開始してから終了するまでのそれぞれ全天球動画を構成する複数のフレームを含んだ、全天球動画データの本体となる動画データである。魚眼画像Aおよび魚眼画像Bは、全天球画像を構成するための部分画像であり、第1および第2フレームデータも、撮影を開始してから終了するまでのそれぞれ部分画像のフレームを含んだ、全天球動画を構成し得る動画データである。画像合成部220は、作成したフレーム合成データを画像回転部230に出力する。第1撮像部212、第2撮像部214および画像合成部220は、本実施形態における撮像手段を構成し得る。
以下、図5を参照しながら、全天球画像の生成および生成される全天球画像について説明する。図5(A)は、全天球画像生成における各画像のデータ構造および画像のデータフローを説明する。まず、撮像素子130各々で直接撮像される画像は、概ね全天球のうちの半球を視野に収めた画像である。結像光学系に入射した光は、所定の射影方式に従って撮像素子130の受光領域に結像される。ここで撮像される画像は、受光領域が平面エリアを成す2次元の撮像素子で撮像されたものであり、平面座標系で表現された画像データとなる。また、典型的には、得られる画像は、図5(A)において「魚眼画像A」および「魚眼画像B」で示されるように、各撮影範囲が投影されたイメージサークル全体を含む魚眼画像として構成される。
この複数の撮像素子130で撮像された各フレームの複数の魚眼画像が、歪み補正および合成処理されて、各フレームに対応する1つの全天球画像が構成される。合成処理では、平面画像として構成される各魚眼画像から、まず、相補的な各半球部分を含む各半球画像が生成される。そして、各半球部分を含む2つの半球画像が、重複領域のマッチングに基づいてスティッチング(画像合成)され、全天球全体を含む全天球画像が生成される。
図5(B)は、本実施形態で用いられる全天球画像の画像データのデータ構造を平面で表して説明する図である。図5(C)は、全天球画像の画像データのデータ構造を球面で表して説明する図である。図5(B)に示すように、全天球画像の画像データは、所定の軸に対してなされる垂直角度φと、所定の軸周りの回転角に対応する水平角度θとを座標とした画素値の配列として表現される。垂直角度φは、0度~180度(あるいは-90度~+90度)の範囲となり、水平角度θは、0度~360度(あるいは-180度~+180度)の範囲となる。
全天球フォーマットの各座標値(θ,φ)は、図5(C)に示すように、撮影地点を中心とした全方位を表す球面上の各点と対応付けられており、全方位が全天球画像上に対応付けられる。魚眼レンズで撮影された魚眼画像の平面座標と、全天球画像の球面上の座標とは、所定の変換テーブルにて対応付けされる。変換テーブルは、それぞれのレンズ光学系の設計データ等に基づいて、所定の投影モデルに従い製造元等で予め作成されたデータであり、魚眼画像を全天球画像へ変換するデータである。
なお、説明する実施形態では、魚眼画像から全天球画像に変換し、スティッチング処理後のフレーム合成データに対して画像回転部230により回転処理を施す流れとなっている。しかしながら、変換処理、合成処理および回転処理の順序は、特に限定されるものではない。部分画像である魚眼画像Aと魚眼画像B(それを変換した相補的な各半球部分を含む2つの半球画像)それぞれに対して画像回転部230で回転処理(補正)を施した後にスティッチング処理する流れとしてもよい。また、全天球フォーマットの画像に対して回転処理を施すほか、魚眼画像を全天球画像に変換する上記変換テーブルに回転処理を反映し、回転処理が反映された変換テーブルに基づいて、魚眼画像Aおよび魚眼画像Bから回転処理後の全天球画像を得ることもできる。本実施形態において、動画に関し補正を施すとは、変換処理、合成処理および回転処理の順序にかかわらず、最終的に所定の補正が反映された画像を含む動画を得ることをいう。また、本実施形態においては2つの魚眼画像をスティッチングすることで全天球画像を作成しているが、これに限られず、他の実施形態では、例えば3つ以上の画像をスティッチングして全天球画像やパノラマ画像を作成するものであってもよい。
ここで、再び図4を参照する。角速度検出部216は、角速度センサ136Aを含む角速度検出機構であり、撮影中、角速度センサ136Aを用いて3軸方向の角速度成分を計測して得られる角速度データを出力する。角速度データは、撮影を開始してから終了するまでの全天球カメラ110(内の角速度センサ136A)の3軸周りで生じた角速度の時系列データである。角速度データは、フレームに1対1に対応して記録されている必要はなく、典型的には、フレームレートよりも速いレートで記録することができる。この場合、タイムスタンプを手がかりとして、後で各フレームとの対応関係を求めることができる。あるいは、全天球動画の各フレームに1対1で対応して角速度が記録されてもよい。角速度検出部216は、本実施形態において、動画の各フレームに関連付けてセンサデータを記録する記録手段を構成し、角速度データは、本実施形態において、センサデータに含まれ得る。
加速度検出部218は、加速度センサ136Bを含む加速度検出機構であり、撮影中、加速度センサ136Bを用いて3軸方向の加速度成分を計測して得られる加速度データを出力する。加速度データは、撮影を開始してから終了するまでの全天球カメラ110(内の加速度センサ136B)の3軸の加速度の時系列データである。加速度データは、フレームに1対1に対応して記録されている必要はなく、典型的には、フレームレートよりも速いレートで記録することができる。この場合、タイムスタンプを手がかりとして、後で各フレームとの対応関係を求めることができる。あるいは、全天球動画の各フレームに1対1で対応して加速度が記録されてもよい。加速度検出部218は、本実施形態において、動画の各フレームに関連付けてセンサデータを記録する記録手段を構成し、加速度データは、本実施形態において、センサデータに含まれ得る。
なお、加速度センサ116Bや角速度センサ136Aから直接得られる上述した加速度データおよび角速度データは、センサ座標系(あるいは全天球カメラ110の座標系)の3軸方向に基づくデータである。一方、加速度センサ136Bは、運動に基づく加速度と重力加速度との和を出力しており、上述した加速度データおよび角速度データは、重力加速度軸を基準とした絶対座標系に変換可能である。したがって、上述したセンサデータは、絶対座標系における変位量を示すものである。
天頂補正量計算部222は、加速度検出部218から出力される加速度データに基づいて、各フレームでの基準軸に対する撮像時の傾き角を計算し、天頂補正データを作成する。天頂補正データは、全天球動画の各フレームに関連付けて記録される、撮影を開始してから終了するまでの基準軸に対する全天球カメラ110の傾き角の時系列データである。基準軸に対する傾き角は、典型的には加速度の次元の値からなるベクトルとして構成される。基準軸は、典型的には、重力加速度が作用する重力方向に一致し、以下、基準軸が重力方向であるとして説明を続ける。加速度センサ136Bは、重力と慣性力とを区別しないので、加速度センサ136Bから得られた傾き角は、好ましくは角速度センサ136Aで計測された信号に基づいて補正されてもよい。
第1回転量計算部224は、加速度検出部218から出力される加速度データおよび角速度検出部216から出力される角速度データに基づいて、全天球カメラ110の相対角度の変化量から、重力方向に対し垂直方向の平面(水平面)の座標系における全天球カメラ110の撮影正面方向のベクトルをフレーム毎に算出し、第1回転補正データを記録する。第1回転補正データは、全天球動画の各フレームに関連付けて記録される、撮影を開始してから終了するまでの基準値からの撮影正面方向の角度変化量の時系列データである。撮影正面方向の角度変化量は、基準フレームにおける全天球カメラ110の姿勢に基づく上記水平面内での撮影正面方向と、対象フレームにおける全天球カメラ110の姿勢に基づく上記水平面内での撮影正面方向との差分で表される。ここで、基準フレームは、例えば撮影開始時点のフレームや本補正を適用開始時点(撮影開始後に補正の適用を指示できる実施形態の場合)のフレームとすることができる。第1回転補正データは例えば、回転角度を数値化したものやベクトルで表される。第1回転補正データも、本実施形態において、センサデータに含まれ得て、第1回転量計算部224は、本実施形態において、動画の各フレームに関連付けてセンサデータを記録する記録手段を構成し得る。
第2回転量計算部226は、加速度検出部218から出力される加速度データおよび角速度検出部216から出力される角速度データに基づいて、重力方向に対し垂直方向の平面(水平面)の平面座標系における全天球カメラ110の進行方向のベクトルを規定フレーム数毎に計算し、第2回転補正データを生成する。撮影開始時のフレームにおける進行方向は、撮影開始時のフレームにおける全天球カメラ110の撮影正面方向に等しい。第2回転補正データは、全天球動画の各フレームないし各規定フレーム数分のフレームに関連付けて記録される、撮影を開始してから終了するまでの基準値からの進行方向の角度変化量の時系列データである。進行方向の角度変化量は、基準フレームにおける全天球カメラ110の上記水平面内での進行方向(撮影正面方向)と、対象フレームにおける全天球カメラ110の上記水平面内での進行方向との差分で表される。第2回転補正データは例えば、回転角度を数値化したものやベクトルである。第2回転補正データも、本実施形態において、センサデータに含まれ得て、第2回転量計算部226は、本実施形態において、動画の各フレームに関連付けてセンサデータを記録する記録手段を構成し得る。
進行方向の変化は、加速度データのうち、全天球カメラ110の特定方向の加速度が所定条件を満たす場合、そのときの特定方向を進行方向と判断する。所定条件とは、複数のフレームのベクトルを合成したときに、特定方向の加速度が所定の閾値を超えている場合などとすることができる。所定条件を満たさない場合、進行方向は前のフレームのデータを引き継ぐことができる。進行方向の定義としては、特に限定されるものではなく、撮影者の進行方向としてもよいし、カメラ自体の進行方向としてもよい。第2回転量計算部226は、また、本実施形態における決定手段としても機能し得る。
画像回転部230は、画像合成部220、天頂補正量計算部222、第1回転量計算部224および第2回転量計算部226により出力されたフレーム合成データ、天頂補正データ、第1回転補正データおよび第2回転補正データをそれぞれ取得する。画像回転部230は、取得したフレーム合成データの各フレームに対し、取得した天頂補正データ、第1回転補正データおよび第2回転補正データに基づいて回転処理(天頂補正および回転補正)を施し、補正された全天球フレームデータを出力する。
ここで、図6および図7を参照しながら、天頂補正および回転補正について説明する。図6は、本実施形態において行われる全天球画像の天頂補正および回転補正を説明する図である。図7は、本実施形態において行われる全天球画像の天頂補正および回転補正によって得られる全天球画像を説明する図である。図7(A)は、天頂補正前の動画のフレームを示し、図7(B)は、天頂補正後の動画のフレームを示す。
上述したように、全天球画像フォーマットの画像データは、所定の軸z0に対してなす垂直角度φと、上記所定の軸z0周りの回転角に対応する水平角度θとを座標とした画素値の配列として表現される。ここで、所定の軸は、なんら補正がなされない場合は、全天球カメラ110を基準として定義される軸となる。例えば、図1に示す全天球カメラ110の撮像体12側を頭部としてその反対側を底部として、底部から頭部へ筐体の中心を通る中心軸を、水平角度θおよび垂直角度φを定義する所定の軸z0として全天球画像を定義することができる。また、例えば2つの結像光学系20A,20Bのうちの一方の光学素子の光軸方向が水平角度θで中心に位置するように、全天球画像の水平角度θを定義することができる。
天頂補正とは、図6の左図のように実際には重力方向に対して中心軸z0が傾いている状態で撮像された全天球画像(図7(A))を、図6の右図のようにあたかも中心軸z0が重力方向Zに一致した状態で撮影されたかのような全天球画像(図7(B))に補正する処理(Roll,Pitch方向の補正)をいう。画像回転部230は、天頂補正データに含まれる各フレームでの重力方向に対する傾き角に基づいて、各フレームに対し、所定軸(中心軸)が重力方向に略一致するように天頂補正を施す天頂補正手段として機能する。
これに対して、回転補正とは、天頂補正により基準方向に中心軸z0が一致するように補正された全天球画像において、さらに、重力方向Z周りの角度変化(図7の水平角度θ方向の変化)を打ち消し、表示の基準(例えば全天球フォーマットにおける水平角度θでの中央であり、動画データ再生時にデフォルトで表示される基準位置である。)を撮影中の特定方向に固定する補正(Yaw方向の補正)をいう。デフォルトで表示される基準位置とは、ユーザが動画データに対して表示する方向を変更する操作をしない場合に、表示される全天球フォーマットにおける領域である。特定方向は、例えば全天球カメラ110の正面方向である。画像回転部230は、第1回転補正データおよび第2回転補正データに基づいて、基準軸(天頂補正により重力方向に一致させられている。)周りの回転変化を打ち消す補正を施す回転補正手段として機能する。
ここで、角度変化が打ち消されて表示の基準に固定される撮影中の特定方向は、上述した基準フレームにおける全天球カメラ110の上記水平面内での撮影正面方向であってよい。また、全天球カメラ110の進行方向が求められた以降は、上記特定方向は、全天球カメラ110の上記水平面内での進行方向であってよい。
画像回転部230は、より具体的には、第1回転補正データおよび第2回転補正データに基づいて、動画の各フレームに対し、少なくとも一定期間の複数のフレームにわたり、表示の基準が撮影中の特定方向に略一致するように基準軸周りの回転変化を打ち消す補正を施す。ここで、打ち消される回転変化の量は、基準軸に垂直な平面内での特定方向(例えば撮影開始時の撮影正面方向または進行方向)と、補正対象フレームでの基準軸に垂直な平面内での撮影正面方向との差分に基づくものとなる。また、当該特定方向に固定される期間は、当該特定方向が決定されたタイミングから、次回特定方向を決定するタイミングまでとなる。
なお、説明する実施形態では、開始当初は、基準フレームにおける全天球カメラ110の上記水平面内での撮影正面方向を特定方向として表示の基準(画像の中心)を固定し、全天球カメラ110の進行方向が求められた以降は、上記水平面内での進行方向を特定方向として決定し、該進行方向に表示の基準(画像の中心)を固定するものとして説明する。この場合、図2に示した首振り運動Hにかかわらず、最初は、開始時点の撮影正面方向が画像の中心に来るように回転補正され、次第に進行方向Tが定まると、その進行方向Tが画像の中心に来るように回転補正がされることになる。
しかしながら、特定方向の決定の仕方は、特に限定されるものではない。他の実施形態では、進行方向Tにかかわらず、基準フレームにおける全天球カメラ110の上記水平面内での撮影正面方向に常にデフォルトで表示される基準位置が固定されているように構成してもよい。そのような実施形態では、第2回転量計算部226および第2回転補正データを用いた回転補正を省略することができる。またこの場合、撮影中に進行方向の変化によって特定方向が更新されないため、当該特定方向に固定される期間は、動画の開始時点または固定の開始を指示された時点から動画の終了時点または固定の終了を指示された時点までの全期間となる。
記憶部228は、上述した第1フレームデータ、第2フレームデータ、フレーム合成データ、天頂補正および回転補正された補正済みフレーム合成データ、加速度データ、角速度データ、天頂補正データ、第1回転補正データおよび第2回転補正データを記憶するために用いられる。記憶部228は、図3(A)に示したDRAM132、外部ストレージ134や他のストレージなどの記憶領域の一部として与えられる。
なお、1度の撮影で取得した全天球動画は、例えば一つのファイルとして記憶部228に記録されてもよい。その場合、全天球動画の記録方法としては、種々の態様が想定される。
例えば、補正済みフレーム合成データを1つの全天球動画データとして記録することができる。その場合、加速度データ、角速度データ、天頂補正データ、第1回転補正データおよび第2回転補正データがメタデータとして補正済みフレーム合成データとともに記録され得る。この実施形態では、補正後のデータが必要になった場合には、補正済みフレーム合成データおよびそのメタデータを読み出せばよいということになる。
他の実施形態では、補正前のフレーム合成データを1つの全天球動画データとして記録することができる。その場合、加速度データ、角速度データ、天頂補正データ、第1回転補正データおよび第2回転補正データが所定の組み合わせでメタデータとして補正前のフレーム合成データとともに記録される。この他の実施形態では、補正後のデータが必要になった場合には、メタデータから、天頂補正データ、第1回転補正データおよび第2回転補正データが準備され(不足するデータが計算される。)、画像回転部230により補正前のフレーム合成データに画像回転が施される。例えば、加速度データおよび角速度データがあれば、天頂補正データ、第1回転補正データおよび第2回転補正データのうちの任意の不足するものを計算することができる。
画像回転部230により天頂補正および回転補正されたフレーム合成データは、出力部240に出力される。出力部240は、補正後のデータを、動画データとして、無線NIC140やUSBコネクタ138を介して外部の情報端末150に送信出力することができる。あるいは、出力部240は、補正後のデータを、動画データとして、所定のストレージにファイル出力することもできる。ここで、出力部240が出力するデータは、補正後の動画データを含み、さらに、上述したメタデータを含み得る。
なお、「動画」と参照するが、動画が再生可能であれば、いかなる形態で記録されてもよい。例えば、H.264/MPEG-4 AVC(Advanced Video Coding)、H.265/HEVC(High Efficiency Video Coding)などの所定のコーデックで、複数のフレームを圧縮した動画データとして記録されていてもよい。また、Motion JPEG(Joint Photographic Experts Group)は、連続した静止画として動画を表現する形式であるが、このように、複数のフレームの静止画像の連続した系列として動画データが記録されていてもよいし、複数のフレームの静止画像のファイルの集合として動画が記録されてもよい。出力部240は、適切なコーデックを備える。
以下、引き続き、情報端末150側の機能ブロックについて説明する。情報端末150は、全天球カメラ110と通信し、全天球画像を閲覧再生するためのアプリケーションがインストールされた端末装置である。情報端末150は、スマートフォンやタブレットコンピュータ、パーソナルコンピュータ、ヘッドマウントディスプレイ(HMD)などであってよい。情報端末150は、アプリケーションを介して操作者から各種指示を受け付けて、全天球カメラ110に対し各種要求を発行する。例えば、情報端末150は、操作者からの指定の全天球動画の再生指示(例えば回転補正を適応した動画再生の指示)を受け付けたことに応答して、全天球カメラ110に対し、所定の全天球動画の補正後の動画データを求める要求を発行する。
情報端末150の受信部252は、全天球カメラ110から出力される動画データを受信する。ここで、受信する動画データは、上述したように天頂補正および回転補正が施されたものであり、さらに、各フレームでの撮像時の所定方向を示すメタデータが付属している。ここで、メタデータとして、第1回転補正データおよび第2回転補正データを含むものとし、各フレームでの撮像時の所定方向は、各フレームでの撮影正面方向である。しかしながら、情報端末150側で第1回転補正データおよび第2回転補正データの計算を行うことを前提として、加速度データおよび角速度データをメタデータとして受信してもよい。受信部252は、本実施形態における、撮像時の所定方向を示すデータを取得するデータ取得手段を構成する。
情報端末150の表示制御部254は、受信した動画データに基づいて、補正が施された動画データの少なくとも一部の画像範囲を含む表示画面を出力するように制御する。好ましくは、表示画面は、情報端末150が備えるディスプレイ162などの表示装置上に、上述した表示の基準に基づいて画面表示される。表示制御部254は、本実施形態における出力制御手段を構成する。また、表示制御部254は、ユーザの操作により全天球フォーマットにおいて表示される方向を変更し、ディスプレイ162上に表示されている領域を変更する。
説明する実施形態では、表示制御部254は、全天球画像を球体オブジェクトに張り付けて、仮想カメラで所定の位置から所定の視野角で球体オブジェクトを観察した場合の画像として動画表示する。このとき、仮想カメラから観察される範囲が表示画面に含まれ得る画像範囲となる。これにより、視聴者は、撮影地点から所定の方向を見ているような形式で動画を視聴することが可能となる。
全天球フォーマットでは、所定の表示の基準が定義され、この表示の基準に基づいて、全天球画像が球体オブジェクトに張り付けられる。ここで、受信する動画データは、上述したように天頂補正および回転補正が施されたものであるため、撮像時の撮影正面方向にかかわらず、撮影中の特定方向(撮影開始時の撮影正面方向や進行方向)に表示の基準に固定されることになる。この表示画面では、中央に特定方向(例えば進行方向)が常に固定されるというわけではないが、画像範囲(仮想カメラの位置や方向)を変更しなければ、一定の方向(例えば進行方向の左手に表示範囲が設定されていればその進行方向左手)が常に表示画面の中央に固定されることになる。
説明する実施形態において、表示制御部254は、さらに、所定の条件が成立したことに応答して、上述したメタデータに基づいて、表示画面内に撮影正面方向を示す表現を付加するよう制御するよう構成される。ここで、撮影正面方向を示す表現とは、表示画面内での撮影正面方向の位置を指し示す指示アイコンである。指示アイコンは、視聴者に撮影者が注目する画像内の位置を指し示す画像、図形、記号または文字である。上述したように、表示画面においては、撮像時の撮影正面方向にかかわらず、撮影中の特定方向(進行方向など)が表示の基準に固定されることになるところ、指示アイコンは、その際の撮像時の撮影正面方向へ視聴者の注目を促すものである。
また、撮影者は、一般的に、注目している物体があるとき、その場所を数秒間にわたって見つめることが多いところ、上記所定の条件は、撮影正面方向が所定フレーム数以上にわたり留まっているという条件とすることができる。この場合、表示制御部254は、メタデータに基づいて所定の条件が成立したか否かを判定することができる。
情報端末150の機能ブロックは、図4に示すように、さらに、表示範囲変更指示受付部256を含み構成されてもよい。表示範囲変更指示受付部256は、表示画面内に含ませる画像範囲(仮想カメラの位置や方向)を変更する指示を受け付ける変更指示受付手段である。
特定の実施形態では、表示制御部254は、表示画面内での画像範囲の中心が、表示画面内での撮影正面方向を示す座標を中心とした一定範囲に位置したことに応答して、上記表示した指示アイコンを非表示または半透明に表示させるよう制御することができる。
情報端末150の機能ブロックは、図4に示すように、さらに、視線データ受信部258を含み構成されてもよい。視線データ受信部258は、例えば情報端末150がHMDである場合、または、HMDに接続されている場合に、アイトラッカーなどの視線検知手段により検知される、表示画面内での視聴者の注視点を示す視線データを受信する受信手段である。特定の実施形態では、表示制御部254は、表示画面内での注視点が、表示画面内での撮影正面方向を示す座標を中心とした一定範囲に位置したことに応答して、上記表示した指示アイコンを非表示または半透明に表示させるよう制御することができる。
さらに、好ましい実施形態では、表示制御部254は、指示アイコンを付加してから例えば指示アイコンを非表示または半透明表示するまでの所定期間、動画の再生を停止したり、または、スロー再生したりするように制御することができる。
なお、本実施形態では、情報端末150ではなく、全天球カメラ110側のリソースを用いて天頂補正および回転補正の実体的な処理を行い、情報端末150には補正結果を出力して表示させる構成を採用する。この構成により、全天球カメラ110側に充分なリソースを備えられる場合に、情報端末150が備える処理性能にかかわらず、天頂補正および回転補正を施しながらの動画再生を安定に行うことが可能となる。
なお、説明する実施形態では、出力の態様として、全天球動画の画像データを情報端末150へ送信するものとしているが、これに限定されるものではない。全天球カメラ110が表示装置を備える場合は、その表示装置上で表示する態様とすることもできる。
図4に示す実施形態では、全天球カメラ110の機能ブロックは、画像処理部210および出力部240に加えて、指示受付部242をさらに含み構成されている。指示受付部242は、動画の撮影中に、回転補正により表示の基準を固定したい特定方向を指定する指示や、動画の撮影中に、指示アイコンで示したい撮影者が注目する方向を示す指示を受け付けることができる。なお、指示は、全天球カメラ110が備えるハードウェア・キーや、全天球カメラ110が接続される、撮影用のアプリケーションがインストールされた端末、専用のコントローラなどに操作することによって行われる。
上述した説明では、特定方向は、所定時点の撮影正面方向や進行方向であった。しかしながら、特定の実施形態では、指示受付部242を設けて特定方向を指定する指示を受け付けることにより、撮影中に任意のタイミングで画像の表示の基準に固定させたい方向(注目の被写体がある方向など)を指定することが可能となる。
また、上述した説明では、撮影正面方向が所定フレーム数以上にわたり留まっていることを条件として、指示アイコンを表示するものとしていた。しかしながら、特定の実施形態では、指示受付部242を設けて注目する方向を示す指示を受け付けることにより、撮影者が視聴時に上記指示アイコンを表示させるタイミングおよびその方向を明示的に決定することができる。受け付けた特定方向を指示する情報および注目する方向を指示する指示情報は、出力部240により動画データに付属して、所定のフレームに関連付けて出力されて、情報端末150の受信部252により受信されることになる。指示受付部242は、本実施形態における注目指示受付手段を構成する。
図8および図9は、種々の特定の実施形態における全天球動画システムで動画の撮影から視聴するまでの処理を説明するシーケンス図である。
図8(A)は、図4に示す実施形態に対応するものである。図8(A)に示す実施形態では、全天球カメラ110側で撮像、画像処理(画像合成、天頂補正および回転補正を含む。)が行われ、画像処理後の動画データが、メタデータとともに情報端末150に送信される。そして、情報端末150では、画像処理後の動画データおよびメタデータに基づいてディスプレイ表示が行われる。より具体的には、図8(A)の実施形態では、全天球カメラ110は、S10で撮像プロセスにより動画データを取得し、S11で動画データに対して画像処理を施し、S12で、画像処理後の動画データを情報処理端末に送信する。S13で情報処理端末は、ディスプレイ上に動画データを表示する。
図4および図8(A)で示した実施形態では、情報端末150が、データ取得手段(受信部252)、動画取得手段(受信部252)、出力制御手段(表示制御部254)および変更指示受付手段(表示範囲変更指示受付部256)を備える画像処理装置として動作する。
図4および図8(A)では、全天球カメラ110側のリソースを用いて画像処理(画像合成、天頂補正および回転補正を含む。)を行う例を説明したが、これに限るものではない。例えば、第1フレームデータ、第2フレームデータ、フレーム合成データ、角速度データ、加速度データ、天頂補正データ、第1回転補正データおよび第2回転補正データの一部または全部を情報端末150側に送り、画像処理の一部または全部を情報端末150側で行っても良い。その場合、情報端末150側で図4の機能ブロック図に示した全天球カメラ110側の一部機能を情報端末150側のCPU152が各種プログラムを実行することで行う。これにより、例えば画像合成部220による第1フレームデータ(魚眼画像A)と第2フレームデータ(魚眼画像B)との合成処理のような負荷の大きい処理を、より処理速度の高いCPUを用いて実行することが可能になり、画素数の多いデータであっても短時間またはリアルタイムで処理することが可能になる。
例えば、図8(B)に示す実施形態では、全天球カメラ110側で撮像のみが行われ(S30)、画像処理前のフレームデータおよび回転パラメータが情報端末150に送信される(S31)。ここで、回転パラメータとは、上述した加速度データ、角速度データ、天頂補正データ、第1回転補正データおよび第2回転補正データなど、フレームデータの補正に関するパラメータを総称するものである。そして、情報端末150では、受信したフレームデータに対し、受信した回転パラメータに基づいて天頂補正および回転補正などの画像処理が行われ(S32)、画像処理後の動画データおよびそれに付属するメタデータに基づいてディスプレイ表示が行われる(S33)。
図8(B)で示した実施形態では、情報端末150が、データ取得手段(受信部252)、動画取得手段(受信部252および画像回転部230に対応する手段)、出力制御手段(表示制御部254)および変更指示受付手段(表示範囲変更指示受付部256)を備える画像処理装置として動作する。
なお、画像合成は、この場合、全天球カメラ110および情報端末150のいずれで行われてもよい。全天球カメラ110側で画像合成をする場合は、全天球カメラ110から情報端末150に送信されるフレームデータは、フレーム合成データ(全天球フォーマット)である。情報端末150側で画像合成をする場合は、全天球カメラ110から情報端末150に送信されるフレームデータは、第1フレームデータ(魚眼画像A)および第2フレームデータ(魚眼画像B)である。第1フレームデータおよび第2フレームデータは、それぞれに対応する動画データとして送信されてもよいし、または、2つの魚眼画像を接合した一つの接合画像の動画データ(魚眼画像Aおよび魚眼画像Bを並べて接合して1つの画像とした場合の動画データ)が送信されていてもよい。この場合、情報端末150が動画取得手段として画像合成部220に対応する手段を備えることになる。
また、回転パラメータもいずれの段階でのデータが情報端末150に送信されるかは任意である。例えば、上述した加速度データおよび角速度データが回転パラメータとして情報端末150に送信されてもよい。この場合、加速度データおよび角速度データから、天頂補正データ、第1回転補正データおよび第2回転補正データが情報端末150側で計算されることになる。この場合、情報端末150が、データ取得手段として第1回転量計算部224および第1回転量計算部224に対応する手段を備えることになる。あるいは、天頂補正データ、第1回転補正データおよび第2回転補正データが回転パラメータとして情報端末150に送信されてもよい。この場合、情報端末150は、データ取得手段としては、天頂補正データ、第1回転補正データおよび第2回転補正データを受信する受信手段を備えればよいことになる。
また、上述した図4、図8(A)および図8(B)を参照して説明した実施形態では、全天球動画システムは、全天球カメラ110および情報端末150の2つの装置から構成されていたが、これに限定されるものではない。
例えば、図9(A)で示すように第1の情報端末150に接続される第2の情報端末170が含まれてもよい。ここで、第2の情報端末170は、例えば、スマートフォン、タブレット、パーソナルコンピュータなどの端末に接続されたヘッドマウントディスプレイなどである。図9(A)に示す実施形態では、全天球カメラ110側で撮像のみが行われ(S50)、画像処理前のフレームデータおよび回転パラメータが第1の情報端末150に送信される(S51)。第1の情報端末150では、受信したフレームデータに対し、天頂補正および回転補正などの画像処理が行われ(S52)、画像処理後の動画データが、メタデータとともに第2の情報端末170に送信される(S53)。第2の情報端末170では、画像処理後の動画データおよびメタデータに基づいてディスプレイ表示が行われる(S54)。
図9(A)で示した実施形態では、第2の情報端末170が、データ取得手段(受信部252)、動画取得手段(受信部252)、出力制御手段(表示制御部254)および変更指示受付手段(表示範囲変更指示受付部256)を備える画像処理装置として動作する。
その他、図9(B)で示すように、全天球動画システムは、サーバ装置190を含んでいてもよい。図9(B)に示す実施形態では、全天球カメラ110側では撮像のみが行われ(S70)、画像処理前のフレームデータおよび回転パラメータが情報端末150に送信される(S71)。情報端末150では、受信したフレームデータおよび回転パラメータをサーバ装置190に転送し(S72)、サーバ装置190に、フレームデータに対する天頂補正および回転補正などの画像処理を行わせる(S73)。情報端末150は、画像処理後の動画データおよびメタデータをサーバ装置190からダウンロードまたはストリーミング配信を受信し(S74)、画像処理後の動画データおよびメタデータに基づいてディスプレイ表示を行う(S75)。また、サーバ装置190へのアクセスは情報端末150に限られるものではない。
図9(B)で示した実施形態では、情報端末150が、データ取得手段(受信部252)、動画取得手段(受信部252)、出力制御手段(表示制御部254)および変更指示受付手段(表示範囲変更指示受付部256)を備える画像処理装置として動作する。
そのほか、全天球カメラ110が表示装置を備える場合は、全天球カメラ110単体で、全天球動画システムが構成されてもよい。その場合、全天球カメラ110が、画像処理装置として、自身が備える表示装置上で表示する態様とすることも可能である。
以下、図10~図13を参照しながら、本実施形態における天頂補正および回転補正について、より詳細に説明する。図10は、本実施形態による全天球動画システムを構成する全天球カメラ110(特定の実施形態では情報端末150やサーバ装置190であってもよい。)が実行するフレーム合成データに対する回転処理を示すフローチャートである。
図10に示す処理は、全天球カメラ110が、補正された動画データを求める要求を受け付けたことに応答して、ステップS100から開始される。
ステップS101では、全天球カメラ110は、フレーム合成データおよび回転パラメータを取得する。なお、ここでは、説明の便宜上、回転処理の開始時点で、第1フレームデータおよび第2フレームデータの記録、画像合成によるフレーム合成データの生成、角速度データおよび加速度データの記録が完了しているものとする。しかしながら、他の実施形態では、リアルタイム配信を行う場合などにおいて、第1フレームデータおよび第2フレームデータの記録、角速度データおよび加速度データの記録、画像合成によるフレーム合成データの生成を順次行いながら、図10に示す回転処理を実行することもできる。またここでは、天頂補正データ、第1回転補正データおよび第2回転補正データは、未だ計算されていないものとして説明する。
ステップS102では、全天球カメラ110は、当該全天球カメラ110の撮影正面方向の初期値を記憶する。この開始時点の全天球カメラ110の撮影正面方向は、第1回転補正データおよび第2回転補正データの基準を計算する際に用いられる。また、ステップS102では、最初のフレームが処理対象とされて、ステップS103へ処理が進められる。
ステップS103では、全天球カメラ110は、天頂補正量計算部222により、少なくとも加速度データに基づいて、当該処理対象のフレームにおける重力方向に対する傾き角を計算し、天頂補正データに書き込む。
ステップS104では、全天球カメラ110は、第1回転量計算部224により、前フレームと比較した水平面内での回転角度の変化量を検出する。ステップS105では、全天球カメラ110は、第1回転量計算部224により、ステップS104で算出したフレーム間の角度変化量を積算して、初期値からの撮影正面方向の角度変化量を計算し、第1回転補正データを書き込む。第1回転補正データは、上述したように、水平面の座標系における、全天球カメラ110の撮影正面方向の初期値からの対象フレームでの撮影正面方向の角度変化量の時系列データである。
ステップS103~ステップ105の処理は、フレーム毎に実行することができる。一方、ステップS106~ステップS108の処理は、規定フレーム数毎に実行することができる。ここで、規定フレーム数は、任意の値に設定することが可能である。規定フレーム数を小さくすることで追従性を増すことが可能になるが、規定フレーム数が小さくなりすぎると進行時のブレ成分や静止時のブレ成分の影響が出やすい。そのため、1秒当たり60フレームの動画(60fps)であれば、規定フレーム数を、例えば10~30フレーム程度となるように設定しておくとよい。
ステップS106では、全天球カメラ110は、第2回転量計算部226により、水平面の座標系の規定フレーム規定フレーム数内での全天球カメラ110の移動距離および進行方向ベクトルを算出する。なお、ここで計算の対象となる規定フレームは、保存された全天球動画データの再生であれば、中心フレームの前後の所定数分のフレームとしてよいし、リアルタイム配信であれば、先頭フレームから所定数分までのフレームとしてよい。
ステップS107では、全天球カメラ110は、第2回転量計算部226により、ステップS106で算出した移動距離が所定閾値以上であるか否かを判定する。ステップS107で移動距離が所定閾値以上であると判定された場合(YES)は、ステップS108へ処理を進める。ここで、移動距離とは、規定フレーム数において、水平面の座標系における最初のフレームの位置と最後のフレームの位置との差分を意味する。
ステップS108では、全天球カメラ110は、第2回転量計算部226により、初期値からのS105で算出した進行方向ベクトルの角度変化量を計算し、第2回転補正データを書き込む。ここで、第2回転補正データは、進行方向ベクトルの初期値(カメラ方向の初期値と等しい)と、上述したように規定フレーム数分の平均としての進行方向ベクトルとの差分の時系列データである。
一方、ステップS107で移動距離が閾値以下であると判定された場合(NO)は、ステップS109へ直接処理が進められる。
ステップS109では、全天球カメラ110は、画像回転部230により、天頂補正データ(その中の対象フレームの傾き角)に基づいて、フレーム合成データの対象フレームに対して天頂補正を施す。
ステップS110では、全天球カメラ110は、画像回転部230により、第1回転補正データおよび第2回転補正データに基づいて、対象フレームで打ち消すべき水平面内での回転変化量(回転補正量)を計算する。上述したように、第1回転補正データは、水平面内における、基準フレームの撮影正面方向の初期値と、対象フレームの時点の撮影正面方向との差分であり、第2回転補正データは、水平面内における、基準フレームの進行方向(撮影正面方向と等しい)の初期値と、対象フレームの時点の進行方向との差分である。このため、第1回転補正データおよび第2回転補正データを合算することで、最終的に打ち消すべき回転変化量を計算することができる。なお、特定方向が撮影正面方向の初期値である場合、第2回転補正データは移動距離が閾値以上となるまではデフォルトの値(ゼロ)であるため、回転変化量は、第1回転補正データで規定される通り、撮影正面方向の初期値と、補正対象フレームでの水平面内での撮影正面方向との差分に基づくものとなる。一方、特定方向が進行方向に決定されると、回転変化量は、進行方向と、補正対象フレームでの撮影正面方向との差分に基づくものとなる。
ステップS111では、全天球カメラ110は、計算された回転補正量に基づいて対象フレームに対し、回転補正を施す。
ステップS112では、全天球カメラ110は、次フレームがあるか否かを判定する。ステップS112で、次フレームがあると判定された場合(YES)は、ステップS103へループさせる。一方、ステップS112で次フレームがないと判定された場合(NO)は、ステップS113で、本回転処理を終了する。
上述した処理により、動画に対し、少なくとも一定期間の複数のフレームにわたり、表示の基準が撮影中の特定方向に略一致するように基準軸周りの回転変化を打ち消すような補正が施されることになる。
なお、以上説明した実施形態では、ステップS110で、第1回転補正データおよび第2回転補正データに基づいて打ち消すべき回転量を計算し、ステップS111でまとめて回転補正を施すものとして説明した。しかしながら、これに特に限定されるものではなく、他の実施形態では、第1回転補正データに基づく回転補正と、第2回転補正データに基づく回転補正とを順次適用してもよい。さらに、他の実施形態では、天頂補正データ、第1回転補正データおよび第2回転補正データに基づいてまとめて天頂補正および回転補正を施すものとしてもよい。
上記回転補正により、首振りなどによる低周波数の回転変化に関わらず、画像の表示の基準を初期のカメラの撮影正面方向や進行方向などの特定方向に固定することが可能となる。
以下、図11~図13を参照しながら、進行方向と撮影正面方向の関係とおよびそのときの画像回転部による回転処理について説明する。図11は、撮影者が頭部50に全天球カメラ110を装着して移動した場合の進行方向Tと撮影正面方向Hの関係を、一例をもって説明する図である。図12および図13は、撮影者が図11に示す動作をした場合の撮影された回転補正前の全天球画像(左側)および回転補正後の全天球画像(右側)を説明する図である。
図11は、番号0、1、1’、1~10で時系列的に示した図であり、図11には、番号で示す各時点での、撮影者の頭部50に固定された全天球カメラ110の状態が、撮影者(全天球カメラ110)の進行方向Hと、首振り動作に応じた全天球カメラ110の撮影正面方向Hとともに模式的に示されている。
図11において、進行方向Tに注目すると、この例では、撮影者は、番号0~5の期間において「北」へ向かって進行していることが示されている。また、図11において撮影正面方向Hに注目すると、撮影者は、番号0~1の時点では進行方向と同じ「北」を向いており、番号2~4の時点で首振り動作によって周囲を見渡す動作が行われ、番号5の時点で進行方向左手の「西」を見ていることが示されている。なお、番号1,1’は、例えば、他者とすれ違う際に通路を譲る場合など、一旦右に平行移動した後に元の進路に戻った動作を表している。そして、撮影者は、「西」を見つつ、番号6~7の間に「北」から「西」へ進行方向を転換し、番号7~8の時点で、進行方向と同じ「西」を見ながら進んでいることが示される。また、番号9の時点では、「西」に進みながら進行方向左手の「南」を見ており、番号10の時点で、さらに見ていた「南」に進行方向を転換した様子が示されている。なお、東西南北は、便宜上に描いているが、必ずしも東西南北が識別されるというものではない。
図12および図13には、図11で示した番号0、1、1’、1~10に対応した回転補正前の全天球画像(左側)300および回転補正後の全天球画像(右側)310が模式的に示されている。また、回転補正後の全天球画像(右側)310中には、全天球画像の中央に設定された画像範囲316が、情報端末150の表示画面上に表示されていることを模式的に表している。
番号0、1、1’、1~5の期間において、撮影者は「北」に進んでいるが、図12および図13の左側に示すように、補正前の全天球画像300では、撮影者の首振り動作に応じて画像が回転していることがわかる。より具体的には、番号0、1、1’、1~5の期間において、撮影正面方向302が、「北」→「北西(北から左方向60度)」→「北東(北から右方向60度)」→「北西(北から左方向45度)」→「西(北から左方向90度)」へと変化している。一方、図12および図13の右側に示すように、補正後の全天球画像310では、番号0、1、1’、1~5の各時点では、開始時点の撮影正面方向および進行方向である「北」に常に表示の基準314が固定されている。また、時点1,1’での平行移動では、全天球カメラ110の移動方向が瞬間的に変化するが、短時間の変化であるため、図10に示したステップS107では、規定数分のフレームでの移動距離が閾値未満であると判定され、進行方向としては再決定されず、「北」のままとなっている。
代表的な点を抜き出して回転補正について説明すると、図11において番号2の時点では、撮影者が北に向かって進んでいる一方、全天球カメラ110は、左方向に60度回転して、「北西」を向いている状態である。このとき、撮影者は、全天球カメラ110の撮影正面方向Hと進行方向Tとは異なる。ここで、図11の番号2の時点の状態に撮影者が変化したときの画像回転部230の回転処理について説明する。番号1の時点から番号2の時点の状態に撮影者が首の向きを変えたとき、すなわち全天球カメラ110の方向が60度左方向に回転しているとき、画像回転部230は、第1回転補正データに基づいて全天球画像の回転が打ち消されるよう右方向に60度回転させる回転処理を実行する。これにより、ディスプレイに表示されるデフォルトの方向を進行方向に固定することが可能になる。実際は時点1~時点2の状態に変化するフレーム毎に、第1回転補正データに基づく回転処理が順次実行される。このとき、進行方向の変化は無いため、第2回転補正データに基づく回転処理は実行されない。なお、時点2~時点3への変化、時点3~時点4への変化、時点4~時点5への変化についても同様である。
番号5~7では、撮影者は、見ている方向である「西」に徐々に進行方向を変えているが、図13の左側に示すように、補正前の全天球画像300では、撮影者の向きは常に「西」を見ており画像には変化がない。一方、図13の右側に示すように、補正後の全天球画像310では、更新された進行方向である「北西(番号6)」および「西(番号7)」に表示の基準314がそれぞれ固定されている。ここでは、時点6の進行方向は、充分に長い間進行方向が一定となっており、再決定された「北西」に一旦固定する方向が変化している様子が示されている。
ここで、図11の番号5、6および7の時点の状態に撮影者が変化したときの画像回転部の回転処理について説明する。5の時点から6の時点の状態に撮影者が撮影正面方向Hを変えず進行方向Tを変えたとき、第1回転補正データに基づけば、全天球画像の撮影正面方向に対する回転が初期値から打ち消されるよう右方向に90度回転させる回転処理を実行することになる。一方、第2回転補正データに基づけば、全天球画像の初期の進行方向(初期の撮影正面方向)からの進行方向の差分に基づいて左方向に45度回転させる回転処理を実行することになる。そして、第1回転補正データおよび第2回転補正データを合算すると、右方向に45度回転させる回転処理を実行することになる。
また、番号7の時点の状態では、第1回転補正データに基づけば、全天球画像の撮影正面方向に対する回転が初期値から打ち消されるよう右方向に90度回転させる回転処理を実行することになる。一方、第2回転補正データに基づけば、天球画像の初期の進行方向(初期の撮影正面方向)からの進行方向の差分に基づいて左方向に90度回転させる回転処理を実行することになる。そして、第1回転補正データおよび第2回転補正データを合算すると、回転補正なしとなる。
なお、進行方向の変化は、前の進行方向から次の進行方向へ滑らかに転換が起こるように補間されてもよい。つまり、時点5および時点6の期間、および時点6および時点7の期間の45度分の角度変化を、これらの間の各フレームで補間した値を適用することができる。あるいは、進行方向の変化は、瞬時に変化したものとしてもよい。例えば、画面表示を一旦ブラックアウトして、従前の進行方向に表示の基準を固定した状態から新たな進行方向に表示の基準が固定された状態へ切り替えてもよい。
一方、番号8から番号9への変化では、撮影者は、進行方向を変えず見ている方向を「西」から「南」へ変化させている。この場合、図13の左側に示すように、時点8および時点9では、補正前の全天球画像300では、撮影者の向きが「西」から「南」へ変化しているが、進行方向は「西」に固定されているため、図13の右側に示すように表示の基準314が「西」に固定されている。一方、番号9~10では、撮影者は、見ている方向を変えず進行方向を「西」から「南」へ変化させている。この場合、図13の左側に示すように、時点9および時点10では、補正前の全天球画像300では、撮影者の向きは常に「南」を見ているが、図13の右側に示すように、進行方向は「西」から「南」へ表示の基準314が固定する方向が変化している。
ここで、図11の番号8、9および10の時点の状態に撮影者が変化したときの画像回転部の回転処理について説明する。番号8の時点から番号9の時点の状態に撮影者が進行方向Tを変えず撮影正面方向Hを変えたとき、第1回転補正データに基づけば、全天球画像の撮影正面方向に対する回転が初期値から打ち消されるよう右方向に180度回転させる回転処理を実行することになる。一方、第2回転補正データに基づけば、全天球画像の初期の進行方向(初期の撮影正面方向)からの進行方向の差分に基づいて左方向に90度回転させる回転処理を実行することになる。そして、第1回転補正データおよび第2回転補正データを合算すると、右方向に90度回転させる回転処理を実行することになる。また、番号10の時点の状態では、第1回転補正データに基づけば、全天球画像の撮影正面方向に対する回転が初期値から打ち消されるよう右方向に180度回転させる回転処理を実行することになる。一方、第2回転補正データに基づけば、全天球画像の初期の進行方向(初期の撮影正面方向)からの進行方向の差分に基づいて左方向に180度回転させる回転処理を実行することになる。そして、第1回転補正データおよび第2回転補正データを合算すると、回転補正なしとなる。
このように、ディスプレイに表示されるデフォルトの方向を撮影開始時の撮影正面方向および進行方向のいずれかに固定することが可能になる。
以下、図14を参照しながら、他の実施形態における天頂補正および回転補正について、より詳細に説明する。図14は、他の実施形態による全天球動画システムを構成する全天球カメラ110(特定の実施形態では情報端末150やサーバ装置190であってもよい。)が実行するフレーム合成データに対する回転処理を示すフローチャートである。なお、図14は、進行方向の決定は行わず、常に、撮影開始時の撮影正面方向に表示の基準を固定する場合の実施形態を示す。
図14に示す処理は、全天球カメラ110が、補正された動画データを求める要求を受け付けたことに応答して、ステップS200から開始される。
ステップS201では、全天球カメラ110は、フレーム合成データおよび回転パラメータを取得する。図10に示した実施形態と同様に、説明の便宜上、回転処理の開始時点で、第1フレームデータおよび第2フレームデータの記録、画像合成によるフレーム合成データの生成、角速度データおよび加速度データの記録が完了しているものとする。
ステップS202では、全天球カメラ110は、当該全天球カメラ110の撮影正面方向の初期値を記憶する。ステップS203では、全天球カメラ110は、天頂補正量計算部222により、少なくとも加速度データに基づいて、当該処理対象のフレームにおける重力方向に対する傾き角を計算し、天頂補正データに書き込む。
ステップS204では、全天球カメラ110は、第1回転量計算部224により、クロック毎の水平面の座標系の角度変化量を積算し、前フレームと比較した水平面内での回転角度の変化量を検出する。ステップS205では、全天球カメラ110は、第1回転量計算部224により、ステップS204で算出したフレーム間の角度変化量を積算して、初期値からの撮影正面方向の角度変化量を計算し、第1回転補正データを書き込む。
ステップS206では、全天球カメラ110は、画像回転部230により、天頂補正データ(その中の対象フレームの傾き角)に基づいて、フレーム合成データの対象フレームに対して天頂補正を施す。
ステップS207では、全天球カメラ110は、画像回転部230により、第1回転補正データに基づいて、対象フレームに対し、回転補正を施す。上述したように、第1回転補正データは、水平面内における、基準フレームの撮影正面方向の初期値と、対象フレームの時点の撮影正面方向との差分であり、対象フレームで打ち消すべき水平面内での回転変化量をそのまま表す。
ステップS208では、全天球カメラ110は、次フレームがあるか否かを判定する。ステップS208で、次フレームがあると判定された場合(YES)は、ステップS203へループさせる。一方、ステップS208で次フレームがないと判定された場合(NO)は、ステップS209で、本回転処理を終了する。
上記処理により、動画に対し、撮影を開始してから終了するまでの期間の複数のフレームにわたり、表示の基準が撮影開始時の撮影正面方向に略一致するように基準軸周りの回転変化を打ち消すような補正が施されることになる。
以下、図15~図17を参照しながら、本実施形態における天頂補正および回転補正が施された全天球動画を再生表示する、情報端末150側の表示処理についてより詳細に説明する。図15は、本実施形態による全天球動画システムを構成する情報端末150が実行する全天球動画再生処理を示すフローチャートである。
図15に示す処理は、情報端末150が、視聴者である操作者からの補正された動画の再生を求める要求を受け付けたことに応答して、ステップS300から開始される。
ステップS301では、情報端末150は、受信部252により、全天球カメラ110から補正後の動画データおよびメタデータを受信し、表示制御部254により全天球動画の再生を開始する。
なお、ここでは、説明の便宜上、動画再生の開始時点で、第1フレームデータおよび第2フレームデータの記録、画像合成によるフレーム合成データの生成、角速度データおよび加速度データの記録、天頂補正データ、第1回転補正データおよび第2回転補正データの計算およびフレーム合成データに対する天頂補正および回転補正が完了しているものとする。しかしながら、他の実施形態では、リアルタイム配信を行う場合などにおいて、第1フレームデータおよび第2フレームデータの記録、角速度データおよび加速度データの記録、画像合成によるフレーム合成データの生成、天頂補正データ、第1回転補正データおよび第2回転補正データの計算、フレーム合成データに対する天頂補正および回転補正を全天球カメラ110(一部を情報端末150で行う場合を含む。)で順次行いながら、図15に示す全天球動画再生処理を実行することもできる。またここでは、天頂補正データ、第1回転補正データおよび第2回転補正データがメタデータとして動画データに付属されているものとして説明する。
ステップS302では、情報端末150は、メタデータから、現在処理対象としているフレームの撮像時の撮影正面方向を示すデータを取得または算出する。上述したように動画データでは、第1回転補正データおよび第2回転補正データに基づいて回転補正が既に施されており、撮影開始時の撮影正面方向または進行方向などの特定方向に表示の基準が固定されている。第1回転補正データおよび第2回転補正データは、これらを合算することで打ち消された回転変化量を与えるものであり、特定方向と、補正対象フレームでの撮影正面方向との差分を与え、説明する実施形態では、各フレームでの撮影正面方向を示すデータとなる。なお、第2回転補正データがない場合は、第1回転補正データが打ち消された回転変化量を直接与えることになる。さらに、撮影正面方向を、重力方向に垂直な水平面内の方向だけでなく、重力方向に対する傾きを含めて求めるためには、天頂補正データを用いればよい。
ステップS303では、情報端末150は、表示制御部254により、撮影正面方向の位置が所定範囲内にとどまっているか否かを判定する。ステップS303で、撮影正面方向の位置が所定範囲内にとどまっていないと判定された場合(NO)は、ステップS305で経過時間をリセットした上で、ステップS302へ処理がループされる。初回の場合は、ステップS303では、所定の範囲にとどまっていないと判定される。ステップS303で、撮影正面方向の位置が所定範囲内にとどまっていると判定された場合(YES)は、ステップS304へ処理が進められる。
ステップS304では、情報端末150は、表示制御部254により、さらに、撮影正面方向の位置が所定範囲内にとどまった状態で所定時間経過したか否かを判定する。ステップS304で、所定時間経過していないと判定された場合(NO)は、ステップS302へ処理がループされる。一方、ステップS304で、所定時間経過したと判定された場合(YES)は、ステップS306へ処理が進められる。この場合、所定の条件が満たされたということになる。
ステップS306では、情報端末150は、表示制御部254により、撮影正面方向を示すデータに基づいて、表示画面上に撮影正面方向を示す指示アイコンを表示する。特定の実施形態では、ステップS306で指示アイコンを表示するとともに、さらに、動画の再生を停止またはスロー再生してもよい。この処理により、よりリアルタイムで撮影者が注目していた場所を共有することが可能になる。
ステップS307では、情報端末150は、表示制御部254により、表示画面で表示している画像範囲の中心位置を取得する。ステップS308では、情報端末150は、表示制御部254により、指示アイコンの指し示す所定範囲内に中心位置が移動したか否かを判定する。ステップS308で、表示画面の中心位置が未だ所定範囲内に移動していないと判定された場合(NO)は、ステップS309へ処理を分岐する。ステップS309では、情報端末150は、表示制御部254により、さらに、指示アイコンを表示してからタイムアウトしたか否かを判定する。ステップS309で、タイムアウトしていないと判定された場合(NO)は、ステップS307へ処理をループさせる。
ステップS307~ステップS309のループ中、表示範囲変更指示受付部256は、表示画面内に含ませる画像範囲(仮想カメラの位置や方向)を変更する指示を受け付けている。ユーザによる表示する画像範囲を変更する指示は、例えば情報端末150がパーソナルコンピュータである場合は、マウスなどのドラッグなどの動作によって視聴領域を回転させることで行われる。情報端末150がスマートフォンやタブレット端末である場合は、タッチパネル上のフリックなどの動作によって視聴領域を回転させることで行われる。情報端末150がHMDである場合は、HMDを回転させる動作によって視聴領域を回転させることで行われる。表示範囲変更指示受付部256が指示を受け付けた結果、ステップS308で、表示画像の中心位置が既に所定範囲内に移動したと判定された場合(YES)は、ステップS310へ処理が分岐される。
ステップS310では、情報端末150は、表示制御部254により、表示している指示アイコンを消去し、ステップS302へ処理をループさせる。一方、ステップS309で、タイムアウトしたと判定された場合(YES)も、ステップS310へ進められ、表示している指示アイコンが消去され、ステップS302へ処理がループされることになる。このとき、指示アイコンを表示するとともに動画の再生を停止またはスロー再生している場合は、動画の再生を開始または通常再生への変更を行ってもよい。なお、説明する実施形態では、指示アイコンが、所定の表示条件(例えば一定期間留まる)を満たしてから消去条件(例えば表示する画像範囲を撮影正面方向に移動させる)を満たすまで一つだけ表示されるものとして説明したが、所定の表示条件を満たしてから消去条件を満たすまでの間に、他の箇所で表示条件を満たしたことに応答して、複数の指示アイコンが結果的に表示されることを妨げるものではない。
以下、図16および図17を参照しながら、アイコンの表示の仕方についてより詳細に説明する。図16は、本実施形態において、補正後の全天球動画およびそれに設定される画像範囲を、撮影者が頭部50に全天球カメラ110を装着して移動した場合の進行方向Tと撮影正面方向Hとの状態および各時点で撮像される補正前の全天球動画に関連付けて時系列的に示す図である。図16において、左側は、回転補正前の全天球画像300を示し、右側は、回転補正後の全天球画像310を示す。回転補正後の全天球画像310においては、そこに設定される画像範囲316やそこに付加される各種アイコン318,320も示されている。
図16において、番号0は、特定方向(重力方向に垂直な水平面座標系において開始時の撮影正面方向または進行方向)とそのフレームでの撮影正面方向(同じく水平面座標系における)とが一致している状態を表している。撮影正面方向が白丸で表示されており、この白丸を中心アイコンと参照する。この場合、撮影正面方向を表す白丸は、全天球フォーマットの中央に位置し、全天球画像の中央に画像範囲316が設定される場合は、画像範囲316の中央に中心アイコンが表示されることになる。なお、中心アイコンは、白丸のほか、任意の画像、図形、記号または文字であってよい。
進行方向が変化しなければ、撮影者が視点を変えたとしても(首を動かして周囲を見た場合)、視聴者側の視点では特定方向は変化しないが、撮影正面方向は変化することになる。図16において、番号1~4は、特定方向を変えず、撮影者の首振りにより各フレームでの撮影正面方向が変化した状態を表している。補正後の全天球画像310では、特定方向が「北」に固定されているため、画像に大きな変化が見られないが、補正前の全天球画像を参照すると明らかなように、全天球カメラ110の撮像時の撮影正面方向の変化に伴い、実際は大きく画像が変化している。図16において、番号1~4では、この撮影正面方向の変化に応答して、番号0の場合と比較して白丸で示す中心アイコン318が左右に移動をしている様子が示されている。
一般的に、撮影者は注目している物体があるとき、その場所を数秒間にわたって見つめることが多い。番号5は、番号4で示す位置から撮影正面方向が所定期間変化しなかった状態を表す。番号5では、補正後の全天球画像310において、撮影正面方向を指し示す矢印である指示アイコン320が示されている。表示制御部254は、あるフレームから所定のフレーム間、あるフレームにおけるカメラの撮影正面方向が示す画素を中心とする所定領域内に撮影正面方向が示す画素が存在している場合に、撮影者がその場所に注目していると判断し、視聴者にそれを伝える指示アイコン320を表示させる。指示アイコン320をディスプレイ上に表示することで、撮影者が注目している方向を視聴者に伝えることが可能となる。
また、指示アイコン320は、ユーザによってディスプレイに表示する画像範囲316の中心が中心アイコン318の近くに移動されることで表示が消去されるように制御される。番号5’は、例えばドラッグ、タップおよびHMDの回転によって、画像範囲316の中心が中心アイコン318の近くにユーザによって移動された状態を表している。
なお、図16に示す例では、所定条件が成立した場合の指示アイコン320に加えて中心アイコン318を常に表示するものとしているが、中心アイコン318は、必須のものではない。他の実施形態では、中心アイコン318を表示せずに、指示アイコン320のみ表示する態様であってもよい。また、他の実施形態では、中心アイコン318を常には表示せず、撮影正面方向が表示画面上に表示されており、且つ所定期間変化しなかった場合に、中心アイコン318を上記指示アイコンとして一時的に表示することとしてもよい。
図17は、表示制御部254による指示アイコン320の表示方法について説明する図である。図17(A)および図17(B)において、格子は、座標を表している。図17(A)および図17(B)において、黒塗りされた座標は、撮影正面方向の位置350を示している。図17(A)は、撮影正面方向の位置350が所定期間変化せずに、指示アイコン320が表示された状態を示しており、星印で示す座標は、画面表示の中心点の座標354を表している。指示アイコン320は、星印で示す画面表示の中心点の座標354と撮影正面方向を示す座標350を結ぶ線上に撮影正面方向を示す位置の座標350の方向を示す矢印の形で表示される。
図17(B)は、表示画面の中心354’が、点線の星印で示す座標から実線の星印で示す座標に移動した場合の指示アイコン320’の表示のされ方を表している。指示アイコン320’は、画面表示の中心354が動くにつれ、移動後の画面表示の中心354’と撮影正面方向を示す位置350とを結ぶ線上に表示位置が更新される。なお、図17において、黒塗りされた撮影正面方向を示す座標350の周辺の灰色の領域352は、上述した指示アイコンを消去するための所定範囲を示す領域である。表示画面の中心354が灰色の領域352内に移動したことに応答して指示アイコン320’が消去される。なお、灰色で示す所定の領域352の大きさや形状は、任意に設定可能である。この他、上述したようにアイトラッキングが利用可能である場合には、視線データから視聴者の視線を読み取り、検出された注視点が示す座標が、灰色の領域352内に移動したことに応答して指示アイコン320の表示を消すという態様であってもよい。
以上示したように、以上説明した実施形態によれば、動画における基準軸周りの回転によって生じる視聴者の酔いを抑えつつ、撮像時の所定方向を視聴者と共有することが可能な画像処理装置、撮像装置、動画再生システム、方法およびプログラムを提供することが可能となる。
特定の実施形態では、回転補正により、撮影者の進行方向に視聴時の表示の基準が固定されるので、視聴者の酔いを抑えることが可能となる。また、基準方向(開始時の方向又は進行方向)に表示の基準を固定している一方で、特定の条件下で指示アイコンが表示されることで、ユーザに対し動画の方向を回転させる動作を促し、ユーザ自身の操作や動作によって動画の表示する画像範囲を移動させるように構成されている。このため、視聴時の酔いを軽減しつつ撮影者が注目していた方向を視聴者が共有することが可能になる。
なお、上述した実施形態では、アイコンとしては、撮影正面方向を示す指示アイコンおよび中心アイコンを例示した。さらに他の実施形態では、撮影正面方向を示す指示アイコンに代えて、進行方向を示す進行方向アイコンを表示することとしてもよい。これは、上述した特定方向として撮影開始時の撮影正面方向のみに表示の基準を固定し、進行方向に固定しない実施形態の場合に有効である。
なお、上述した実施形態では、撮影者の頭部50に全天球カメラ110が固定されるものとして説明した。本実施形態による回転補正機能は、このような場合に好適に適用できるが、適用のシーンは、特に限定されるものではなく、ユーザが手持ちで撮影し、注目領域に全天球カメラを向けるような場合にも適用可能であることは言うまでもない。
また、上述した実施形態では、角速度センサ136Aおよび加速度センサ136Bを用いて第1回転補正データおよび第2回転補正データを算出するものとして説明した。しかしながら、他の実施形態では、角度変化量を算出する際に、地磁気センサを用いて第1回転補正データおよび第2回転補正データを算出してもよい。その場合は、地磁気センサの初期値を記憶し、地磁気センサの初期値と対象フレームにおける地磁気センサが示す方向との差分に基づいて水平面の座標系の回転角度を算出し、第1回転補正データおよび第2回転補正データを算出することができる。また、上述した説明では、フレーム合成データ、加速度データおよび角速度データが事前に保存されているものとして説明したが、本回転補正機能は、保存された動画データ以外にも、リアルタイムに配信される動画データのストリームに対しても適用可能である。
さらに、上述した実施形態では、座標系が2つの角度座標を含む球面座標系の動画に対して天頂補正を行うものとして説明した。しかしながら、実施形態によっては、天頂補正が必要なほどの重力方向の傾きが生じない場合があり、そのような場合に、天頂補正を省略することもできる。この場合、基準軸は、座標系が1つの角度座標を含む円筒座標系であれば、角度座標の軸としてよく、座標系が2つの角度座標を含む球面座標系であれば、二つの角度座標を与える軸としてよい。
なお、上記機能部は、アセンブラ、C、C++、C#、Java(登録商標)などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ROM、EEPROM、EPROM、フラッシュメモリ、フレキシブルディスク、CD-ROM、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、ブルーレイディスク、SDカード、MOなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。また、上記機能部の一部または全部は、例えばフィールド・プログラマブル・ゲート・アレイ(FPGA)などのプログラマブル・デバイス(PD)上に実装することができ、あるいはASIC(特定用途向集積)として実装することができ、上記機能部をPD上に実現するためにPDにダウンロードする回路構成データ(ビットストリームデータ)、回路構成データを生成するためのHDL(Hardware Description Language)、VHDL(Very High Speed Integrated Circuits Hardware Description Language)、Verilog-HDLなどにより記述されたデータとして記録媒体により配布することができる。
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。