以下、本実施形態について説明するが、実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下の実施形態では、全天球カメラが、撮像装置の一例として説明される。
以下、図1〜図3を参照しながら、本実施形態による全天球カメラを含む全天球動画システムの全体構成について説明する。
図1は、本実施形態による全天球動画システムを構成する全天球カメラ110の断面図である。図1に示す全天球カメラ110は、撮像体12と、上記撮像体12およびコントローラやバッテリなどの部品を保持する筐体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以上であってもよい。
2つの結像光学系20A,20Bの光学素子(レンズ、プリズム、フィルタおよび開口絞り)は、撮像素子22A,22Bに対して位置関係が定められる。より具体的には、結像光学系20A,20Bの光学素子の光軸が、対応する撮像素子22の受光領域の中心部に直交して位置するように、かつ、受光領域が、対応する魚眼レンズの結像面となるように位置決めが行われる。
図1に示す実施形態では、結像光学系20A,20Bは、同一仕様のものであり、それぞれの光軸が合致するようにして、互いに逆向きに組み合わせられる。撮像素子22A,22Bは、受光した光分布を画像信号に変換し、コントローラ上の画像処理手段に順次、画像フレームを出力する。詳細は後述するが、撮像素子22A,22Bでそれぞれ撮像された画像は、合成処理されて、これにより、立体角4πステラジアンの画像(以下「全天球画像」と参照する。)が生成される。全天球画像は、撮影地点から見渡すことのできる全ての方向を撮影したものとなる。そして、全天球画像の連続するフレームにより、全天球動画が構成される。
ここで、説明する実施形態では、全天球画像および全天球動画を生成するものとして説明が行われるが、画像および動画は、全天周画像および全天周動画、水平面のみ360度を撮影した、いわゆるパノラマ画像およびパノラマ動画であってもよいし、その他、180度の画角を撮影した半球の画像および動画、または半円筒の画像および動画であってもよく、球面または円筒上の画像情報を持つ画像データであればよい。すなわち、本実施形態による動画およびそれに含まれる画像は、所定軸周りの角度座標を含む座標系で表される画像である。上記全天球画像・動画、半球画像・動画、部分的な球面の画像の場合は、動径を定数(例えば1)として、所定軸と動径とがなす角を表す角度座標および所定軸周りの角度座標を含む球面座標系が用いられる。上記パノラマ画像・動画またはその部分画像の場合は、動径を定数(例えば1)として、円筒の軸方向の座標および該軸周りの角度座標を含む円筒座標系が用いられる。
図1に示す全天球カメラ110は、撮影者により、例えば、手持ちでまたは帽子型やヘルメット型の装着具により保持されて、動画の撮像が行われる。
図2(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は、全天球カメラ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および地磁気センサ136C(電子コンパスともいう。)を含み構成される。角速度センサ136Aは、3軸の角速度成分を検出するセンサである。加速度センサ136Bは、3軸の加速度成分を検出するセンサである。検出された加速度成分および角速度成分は、後述するように、重力方向への全天球画像の天頂補正および重力方向周りの回転補正(主に手振れに起因した回転の補正であり、振れ回転補正という。)を施すために用いられる。地磁気センサ136Cは、2軸または3軸の地磁気成分を計測するセンサである。検出された複数軸の地磁気成分は、詳細を後述する重力方向周りの追加の回転補正(方位補正という。)を施すために用いられる。
全天球カメラ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の後述する各機能部および処理が実現される。
図2(B)は、本実施形態による全天球動画システムを構成する情報端末150のハードウェア構成を示す。
図3(B)に示す情報端末150は、CPU152と、RAM154と、内部ストレージ156と、入力装置158と、外部ストレージ160と、ディスプレイ162と、無線NIC164と、USBコネクタ166とを含み構成される。
CPU152は、情報端末150の各部の動作および全体動作を制御する。RAM154は、CPU152の作業領域を提供する。内部ストレージ156は、CPU152が解読可能なコードで記述された、オペレーティング・システムや、本実施形態による情報端末150側の処理を担うアプリケーションなどの制御プログラムを格納する。
入力装置158は、タッチスクリーンなどの入力装置であり、ユーザ・インタフェースを提供する。入力装置158は、全天球動画の補正など操作者による各種の指示を受け付ける。外部ストレージ160は、メモリカードスロットなどに装着された着脱可能な記録媒体であり、動画形式の画像データや静止画データなどの各種データを記録する。ディスプレイ162は、ユーザ操作に応答して補正された全天球動画を画面表示する。無線NIC164は、全天球カメラ110などの外部機器との無線通信の接続を確立する。USBコネクタ166は、全天球カメラ110などの外部機器とのUSB接続をする。
情報端末150に電源が投入され電源がオン状態になると、内部ストレージ156から制御プログラムが読み出され、RAM154にロードされる。CPU152は、RAM154に読み込まれた制御プログラムに従って、装置各部の動作を制御するとともに、制御に必要なデータをメモリ上に一時的に保存する。これにより、情報端末150の後述する各機能部および処理が実現される。
以下、図3〜図10を参照しながら、本実施形態による全天球動画システムが備える全天球動画撮像機能について説明する。
図3は、本実施形態による全天球動画システム上で実現される全天球動画撮像機能に関連する主要な機能ブロック200を示す。図3に示す全天球カメラ110の機能ブロックは、第1撮像部212Aと、第2撮像部212Bと、角速度検出部214と、加速度検出部216と、画像合成部220と、天頂補正量計算部222と、回転補正量計算部224と、画像回転部226と、記憶部228と、出力部240とを含み構成される。本実施形態による機能ブロック200は、さらに、地磁気検出部218と、方位補正量計算部230とを含み構成される。各部の処理は、全天球カメラ110が備えるCPU112や画像処理ブロック116が各種プログラムを実行することによって行われ得る。
これに対して、情報端末150の機能ブロックは、同じく図3に示すように、受信部252と、表示制御部254とを含み構成される。各部の処理は、情報端末150が備えるCPU152が各種プログラムを実行することによって行われる。
以下、まず、全天球カメラ110側の機能ブロックについて説明する。
撮像部212は、それぞれが図1や図2に示した結像光学系20および撮像素子22(130)を含み構成される。第1撮像部212Aは、結像光学系20Aおよび撮像素子130Aを用いて連続したフレームを順次撮像し、魚眼画像Aを取得する。第2撮像部212Bは、結像光学系20Bおよび撮像素子130Bを用いて連続したフレームを順次撮像し、魚眼画像Bを取得する。第1撮像部212Aおよび第2撮像部212Bは、それぞれ、本実施形態における撮像部および画像取得部を構成し得る。
画像合成部220は、取得された魚眼画像A(第1フレームデータ)および魚眼画像B(第2フレームデータ)に対してスティッチング処理を施し、フレーム合成データを作成する。フレーム合成データは、撮像を開始してから終了するまでのそれぞれ全天球動画を構成する複数のフレームを含んだ、全天球動画データの本体となる動画データである。魚眼画像Aおよび魚眼画像Bは、全天球画像を構成するための部分画像であり、第1および第2フレームデータも、撮像を開始してから終了するまでのそれぞれ部分画像のフレームを含んだ、全天球動画を構成し得る動画データである。画像合成部220は、作成したフレーム合成データを画像回転部226に出力する。
以下、図4を参照しながら、全天球画像の生成および生成される全天球画像について説明する。図4(A)は、全天球画像生成における各画像のデータ構造および画像のデータフローを説明する。まず、撮像素子130各々で直接撮像される画像は、概ね全天球のうちの半球を視野に収めた画像である。結像光学系に入射した光は、所定の射影方式に従って撮像素子130の受光領域に結像される。ここで撮像される画像は、受光領域が平面エリアを成す2次元の撮像素子で撮像されたものであり、平面座標系で表現された画像データとなる。また、典型的には、得られる画像は、図4(A)において「魚眼画像A」および「魚眼画像B」で示されるように、各撮影範囲が投影されたイメージサークル全体を含む魚眼画像として構成される。
この複数の撮像素子130で撮像された各フレームの複数の魚眼画像が、歪み補正および合成処理されて、各フレームに対応する1つの全天球画像が構成される。合成処理では、平面画像として構成される各魚眼画像から、まず、相補的な各半球部分を含む各全天球画像が生成される。そして、各半球部分を含む2つの全天球画像が、重複領域のマッチングに基づいて位置合わせ(スティッチング処理)され、画像合成され、全天球全体を含む全天球画像が生成される。
図4(B)は、本実施形態で用いられる全天球画像の画像データのデータ構造を平面で表して説明する図である。図4(C)は、全天球画像の画像データのデータ構造を球面で表して説明する図である。図4(B)に示すように、全天球画像の画像データは、所定の軸に対してなされる垂直角度φと、所定の軸周りの回転角に対応する水平角度θとを座標とした画素値の配列として表現される。垂直角度φは、0度〜180度(あるいは−90度〜+90度)の範囲となり、水平角度θは、0度〜360度(あるいは−180度〜+180度)の範囲となる。
全天球フォーマットの各座標値(θ,φ)は、図4(C)に示すように、撮影地点を中心とした全方位を表す球面上の各点と対応付けられており、全方位が全天球画像上に対応付けられる。魚眼レンズで撮影された魚眼画像の平面座標と、全天球画像の球面上の座標とは、所定の変換テーブルにて対応付けされる。変換テーブルは、それぞれのレンズ光学系の設計データ等に基づいて、所定の投影モデルに従い製造元等で予め作成されたデータであり、魚眼画像を全天球画像へ変換するデータである。
なお、説明する実施形態では、魚眼画像から全天球画像に変換し、スティッチング処理後のフレーム合成データに対して画像回転部226により回転処理を施す流れとなっている。しかしながら、変換処理、合成処理および回転処理の順序は、特に限定されるものではない。部分画像である魚眼画像Aと魚眼画像B(それを変換した相補的な各半球部分を含む2つの全天球画像)それぞれに対して画像回転部226で回転処理(補正)を施した後にスティッチング処理する流れとしてもよい。また、全天球フォーマットの画像に対して回転座標変換を施すほか、魚眼画像を全天球画像に変換する上記変換テーブルに回転処理を反映し、回転処理が反映された変換テーブルに基づいて、魚眼画像Aおよび魚眼画像Bから回転処理後の全天球画像を得ることもできる。
ここで、再び図3を参照する。角速度検出部214は、角速度センサ136Aを含む角速度検出機構であり、撮像中、角速度センサ136Aを用いて3軸方向の角速度成分を計測して得られる角速度データを出力する。角速度データは、撮像を開始してから終了するまでの全天球カメラ110(内の角速度センサ136A)の3軸周りで生じた角速度の時系列データである。
加速度検出部216は、加速度センサ136Bを含む加速度検出機構であり、撮像中、加速度センサ136Bを用いて3軸方向の加速度成分を計測して得られる加速度データを出力する。加速度データは、撮像を開始してから終了するまでの全天球カメラ110(内の加速度センサ136B)の3軸の加速度の時系列データである。
角速度データおよび加速度データは、フレームに1対1に対応して記録されている必要はなく、フレームレートよりも速いレートで記録してもよい。この場合、タイムスタンプを手がかりとして、後で各フレームとの対応関係が求められる。あるいは、全天球動画の各フレームに1対1で対応して角速度や加速度の情報が記録されてもよい。
加速度データおよび角速度データは、重力方向への全天球画像の天頂補正および重力方向周りの振れ回転補正を施すために用いられ、全天球カメラ110の姿勢を与えるものである。ここで、加速度データおよび角速度データにより与えられる姿勢は、全天球カメラ110の重力方向に対する傾き角(Roll角およびPitch角に対応する。)および重力方向周りの回転角度(Yaw角に対応する)を含む。角速度検出部214および加速度検出部216は、併せて、本実施形態における姿勢検出部を構成する。なお、重力方向に対する傾き角および重力方向周りの回転角度は、上述した加速度データおよび角速度データに代えて、あるいは、これらのデータに加えて、撮像部212からの画像データを画像解析することによって計算または補正することもできる。
地磁気検出部218は、地磁気センサ136Cを含む地磁気検出機構であり、撮像中、地磁気センサ136Cを用いて、各軸(X軸、Y軸、3軸センサの場合はさらにZ軸)の地磁気成分を計測して得られる地磁気データを出力する。地磁気データは、撮像を開始してから終了するまでの複数軸の地磁気成分の時系列データである。地磁気データは、フレームに1対1に対応して記録されている必要はなく、フレームレートよりも速いレートで記録してもよい。この場合、タイムスタンプを手がかりとして、後で各フレームとの対応関係が求められる。あるいは、全天球動画の各フレームに1対1で対応して各軸の地磁気の情報が記録されてもよい。
地磁気データは、重力方向周りの追加の回転補正、すなわち方位補正を施すために用いられ、全天球カメラ110が向いている(例えば一方の撮像部212の方向を全天球カメラ110の正面とすることができ、以下、これを撮影正面という。)方位を与えるものである。地磁気検出部218は、本実施形態における方位検出部を構成する。
天頂補正量計算部222は、加速度検出部216から出力される加速度データに基づいて、各フレームでの基準軸に対する撮影時の傾き角を計算し、天頂補正データを作成する。天頂補正データは、全天球動画の各フレームに関連付けて記録される、撮像を開始してから終了するまでの基準軸に対する全天球カメラ110の傾き角の時系列データである。基準軸に対する傾き角は、典型的には加速度の次元の値からなるベクトルとして構成される。基準軸は、典型的には、重力加速度が作用する重力方向に一致し、以下、基準軸が重力方向であるとして説明を続ける。加速度センサ136Bは、重力と慣性力とを区別しないので、加速度センサ136Bから得られた傾き角は、好ましくは角速度センサ136Aで計測された信号に基づいて補正されてもよい。
回転補正量計算部224は、加速度検出部216から出力される加速度データおよび角速度検出部214から出力される角速度データに基づいて、重力方向に対し垂直方向の平面(水平面)の座標系における全天球カメラ110の撮影正面方向のベクトルをフレーム毎に算出し、回転補正データを記録する。回転補正データは、全天球動画の各フレームに関連付けて記録される、撮像を開始してから終了するまでの、基準フレームの撮影正面方向を基準とした、各フレーム時点の撮影正面方向の回転角度の時系列データである。ここで、基準フレームは、例えば撮影開始時点のフレームや本補正を適用開始時点(撮影開始後に補正の適用を指示できる実施形態の場合)のフレームとすることができる。回転補正データは例えば、回転角度を数値化したものやベクトルで表される。
上述した天頂補正量計算部222および回転補正量計算部224は、併せて、複数の撮像部212の少なくとも1つの姿勢を計算する姿勢計算手段として機能し得る。
方位補正量計算部230は、地磁気検出部218から出力される地磁気データに基づいて、重力方向に対し垂直方向の平面(水平面)の座標系における全天球カメラ110の撮影正面方向に対応する方位角をフレーム毎に算出し、方位補正データを記録する。方位補正データは、全天球動画の各フレームに関連付けて記録される、撮像を開始してから終了するまでの、各フレーム時点の撮影正面に対応する方位角の時系列データである。方位補正データは例えば、方位角を数値化した値で表される。方位補正量計算部230は、適宜、各軸のオフセット補正や、加速度センサなどの出力を用いた傾斜補正を行うことができる。方位補正量計算部230は、複数の撮像部212の少なくとも1つが向いている方位角を計算する方位計算手段として機能し得る。
画像回転部226は、画像合成部220、天頂補正量計算部222、回転補正量計算部224および方位補正量計算部230により出力されたフレーム合成データ、天頂補正データ、回転補正データおよび方位補正データをそれぞれ取得する。画像回転部226は、取得したフレーム合成データの各フレームに対し、取得した天頂補正データ、回転補正データおよび方位補正データに基づいて回転処理(天頂補正、振れ回転補正および方位補正)を施し、補正された全天球フレームデータを出力する。画像回転部226は、本実施形態における補正部を構成する。
ここで、図5および図6を参照しながら、天頂補正、振れ回転補正および方位補正について説明する。図5は、本実施形態において行われる全天球画像の天頂補正、振れ回転補正および方位補正を説明する図である。図6は、本実施形態において行われる全天球画像の天頂補正、振れ回転補正および方位補正によって得られる全天球画像を説明する図である。図6(A)は、天頂補正前の動画のフレームを示し、図6(B)は、天頂補正後の動画のフレームを示す。
上述したように、全天球画像フォーマットの画像データは、所定の軸z0に対してなす垂直角度φと、上記所定の軸z0周りの回転角に対応する水平角度θとを座標とした画素値の配列として表現される。ここで、所定の軸は、なんら補正がなされない場合は、全天球カメラ110を基準として定義される軸となる。例えば、図1に示す全天球カメラ110の撮像体12側を頭部としてその反対側を底部として、底部から頭部へ筐体の中心を通る中心軸を、水平角度θおよび垂直角度φを定義する所定の軸z0として全天球画像を定義することができる。また、例えば2つの結像光学系20A,20Bのうちの一方の光学素子の光軸方向が水平角度θで中心に位置するように、全天球画像の水平角度θを定義することができる。
天頂補正とは、図5の左図のように実際には重力方向Zに対して中心軸z0が傾いている状態で撮像された全天球画像(図6(A))を、図5の右図のようにあたかも中心軸z0が重力方向Zに一致した状態で撮影されたかのような全天球画像(図6(B))に補正する処理(Roll,Pitch方向の補正)をいう。画像回転部226は、天頂補正データに含まれる各フレームでの重力方向Zに対する傾き角(Roll角、Pitch角)に基づいて、各フレームに対し、所定軸(中心軸)が重力方向Zに略一致するように天頂補正を施す天頂補正手段として機能する。
これに対して、振れ回転補正とは、天頂補正により重力方向Zに中心軸z0が一致するように補正された全天球画像において、さらに、主に全天球カメラ110の動きに起因した、重力方向Z周りの基準からの角度変化(図7の水平角度θ方向の変化)を打ち消す補正(Yaw方向の補正)をいう。画像回転部226は、回転補正データに基づいて、基準軸(天頂補正により重力方向に一致させられている。)周りの回転変化を打ち消す補正を施す振れ回転補正手段として機能する。振れ回転補正は、好ましい実施形態では、高周波数成分および低周波数成分を含む全周波数帯において行われる。
上記振れ回転補正がなされると、重力方向Z周りの角度変化が打ち消され、表示の基準(例えば全天球フォーマットにおける水平角度θでの中央であり、これに基づいて表示がなされる。)は、撮影者が意図的に全天球カメラ110の向きを変えたとしても、所定の方向(例えば撮像開始時の撮像正面の方向)に固定される。例えば撮影者が見回すように全天球カメラ110の向きを変えたとしても、映像は動かないようになる。方位補正とは、重力方向に中心軸z0が一致するように天頂補正され、かつ、重力方向Z周りの角度変化を打ち消すよう振れ回転補正された全天球画像において、さらに、表示の基準を、各フレーム時点の全天球カメラ110の撮影正面方向に対応する方位に略一致させる補正をいう。つまり、検出される方位は、画像の基準軸周りの表示の基準を与えるといえる。画像回転部226は、方位補正データに基づいて、基準軸(天頂補正により重力方向に一致させられている。)周りで表示の基準を、全天球カメラ110が向いている方位に略一致させる方位補正手段として機能する。
なお、方位補正も上述した振れ回転補正も、重力方向Z周りの回転補正(Yaw方向の補正)である点で共通する。したがって、方位補正および振れ回転補正の適用の仕方は、特に限定されるものではなく、画像に触れ回転補正を適用した後、振れ回転補正後の画像に方位補正を重ねて適用してもよいし、その反対でもよいし、振れ回転補正および方位補正の両方を適用した結果が得られるようまとめて一つの回転処理を適用してもよい。
記憶部228は、上述した第1フレームデータ、第2フレームデータ、フレーム合成データ、天頂補正、振れ回転補正および方位補正された補正済みフレーム合成データ、加速度データ、角速度データ、地磁気データ、天頂補正データ、回転補正データおよび方位補正データなどの各種データを記憶するために用いられる。記憶部228は、図2(A)に示したDRAM132、外部ストレージ134や他のストレージなどの記憶領域の一部として与えられる。
画像回転部226により天頂補正、振れ回転補正および方位補正されたフレーム合成データは、出力部240に出力される。出力部240は、補正後のデータを、動画データとして、無線NIC140やUSBコネクタ138を介して外部の情報端末150に送信出力することができる。あるいは、出力部240は、補正後のデータを、動画データとして、所定のストレージにファイル出力することもできる。
なお、「動画」と参照するが、動画が再生可能であれば、いかなる形態で記録されてもよい。例えば、H.264/MPEG−4 AVC(Advanced Video Coding)、H.265/HEVC(High Efficiency Video Coding)などの所定のコーデックで、複数のフレームを圧縮した動画データとして記録されていてもよい。また、Motion JPEG(Joint Photographic Experts Group)は、連続した静止画として動画を表現する形式であるが、このように、複数のフレームの静止画像の連続した系列として動画データが記録されていてもよいし、複数のフレームの静止画像のファイルの集合として動画が記録されてもよい。出力部240は、適切なコーデックを備え得る。
なお、説明する実施形態では、撮像された複数の魚眼画像、検出された姿勢および方位に基づいて、天頂補正、振れ回転補正および方位補正が反映された合成画像(補正済みフレーム合成データ)が1つの全天球動画データとして出力部240から出力されるものとして説明する。その場合、加速度データ、角速度データ、地磁気データ、天頂補正データ、回転補正データおよび方位補正データは、任意にメタデータとして補正済みフレーム合成データとともに出力されてもよい。この実施形態では、補正後のデータが必要になった場合には、補正済みフレーム合成データを読み出せばよいということになる。
しかしながら、出力態様は、これに限定されるものではない。他の実施形態では、出力部240は、撮像された複数の魚眼画像、検出された姿勢および方位に基づいて、補正を反映する前の合成画像(フレーム合成データ)を1つの全天球動画データとして出力することもできる。その場合、天頂補正、振れ回転補正および方位補正を事後的に行うための補正データ(加速度データ、角速度データ、地磁気データ、天頂補正データ、回転補正データおよび方位補正データの所定の組み合わせ)がメタデータとして補正反映前のフレーム合成データに付加されて出力される。この他の実施形態では、補正後のデータが必要になった場合には、メタデータから、天頂補正データ、回転補正データおよび方位補正データが準備され(不足するデータが計算される。)、全天球カメラ110の画像回転部226あるいは情報端末150上の同等の処理部により補正前のフレーム合成データに画像回転(天頂補正、振れ回転補正および方位補正)が施される。また、天頂補正、振れ回転補正および方位補正すべてを事後的に行うこととしてもよいし、これらの一部を合成画像に反映し、残りを事後的に行うこととしてもよいことは言うまでもない。
さらに他の実施形態では、合成画像(フレーム合成データ)に代えて、合成前の第1フレームデータおよび第2フレームデータを並べて接合して得られる接合画像(フレーム接合データ)を出力することができる。ここで、接合画像とは、複数の画像を並べて1つの画像データとして合成したもののほか、複数の画像フレーム間の位置関係を定めたうえで、各画像フレームを別の画像データのままとしたものも含むものとする。この実施形態では、補正後のデータが必要になった場合には、フレーム接合データ内の第1フレームデータおよび第2フレームデータから、全天球カメラ110の画像合成部220あるいは情報端末150上の同等の処理部により、フレーム合成データが生成される。そして、生成されたフレーム合成データに対して、天頂補正、振れ回転補正および方位補正が適用されることとなる。
以下、引き続き、情報端末150側の機能ブロックについて説明する。情報端末150は、全天球カメラ110と通信し、全天球画像を閲覧再生するためのアプリケーションがインストールされた端末装置である。情報端末150は、スマートフォンやタブレットコンピュータ、パーソナルコンピュータ、ヘッドマウントディスプレー(HMD)などであってよい。情報端末150は、アプリケーションを介して操作者から各種指示を受け付けて、全天球カメラ110に対し各種要求を発行する。例えば、情報端末150は、操作者からの指定の全天球動画の再生指示(例えば補正を適応した動画再生の指示)を受け付けたことに応答して、全天球カメラ110に対し、所定の全天球動画の補正後の動画データを求める要求を発行する。
情報端末150の受信部252は、全天球カメラ110から出力されてくる動画データを受信する。情報端末150の表示制御部254は、受信した動画データに基づいて、情報端末150が備えるディスプレイ162などの表示装置上に全天球動画を表示する。表示制御部254は、特定の実施形態では、補正が施された動画データの画像の少なくとも一部を、上述した表示の基準に基づいてディスプレイ162上に画面表示させることができる。
なお、情報端末150側で、補正後の画像データに基づいてどのような画像が表示されるのかは任意である。例えば、表示制御部254は、全天球画像全体を表示装置上に表示してもよいし、全天球画像を球体オブジェクトに張り付けて、所定の位置から所定の視野角の仮想カメラで球体オブジェクトを観察した場合の画像をフレームとして動画表示してもよい。いずれの場合でも、全天球フォーマットでは、所定の表示の基準が定義され、その表示の基準に基づいて、特定の視野で画像が表示される。例えば、画面に全天球画像全体を表示する場合は、常に画面の中央にそのフレーム撮像時の全天球カメラ110の正面方向に対応する方位が略一致するように表示することができる。画面に仮想カメラで観察した場合の画像を表示する場合は、表示の基準に基づいて全天球画像が球体オブジェクトに張り付けられる。この場合、画面の中央が常に正面方向に対応する方位に一致するわけではないが、表示範囲(仮想カメラの位置や方向)を変更しなければ、その方位が画面の中央に一致させられることになる。
なお、本実施形態では、情報端末150ではなく、全天球カメラ110側のリソースを用いて天頂補正、振れ回転補正および方位補正の実体的な処理を行い、情報端末150には補正結果を出力して表示させる構成を採用することができる。この構成により、全天球カメラ110側に充分なリソースを備えられる場合に、情報端末150が備える処理性能にかかわらず、天頂補正、振れ回転補正および方位補正が反映された動画の再生を安定に行うことが可能となる。しかしながら、これに限定されるものではなく、上述したように、情報端末150側に、画像合成部220や画像回転部226と同様の処理を行うコンポーネントを実装してもよい。
なお、説明する実施形態では、出力の態様として、全天球動画の画像データを情報端末150へ送信するものとしているが、これに限定されるものではない。全天球カメラ110が表示装置を備える場合は、その表示装置上で表示する態様とすることもできる。
以下、図7を参照して、上述した方位補正量計算部230での処理についてより詳細に説明する。図7(A)〜(C)は、それぞれ、特定の実施形態における方位補正量計算部230の詳細な機能ブロック図を示す。
図7(A)に示す実施形態では、方位補正量計算部230Aは、方位角計算部232Aおよびローパスフィルタ234Aを含み構成される。方位角計算部232Aは、適宜、各軸のオフセット補正や、加速度センサなどの出力を用いた傾斜補正を行い、入力される地磁気データから各時点の方位角を計算し、生の方位角データを出力する。地磁気センサ136Cから出力される地磁気データには、電子部品のノイズの影響や、地磁気の環境ノイズの影響により、高周波ノイズが含まれ得る。ローパスフィルタ234Aは、検出された方位の信号に対して適用されるものであり、方位角計算部232Aにより計算された生の方位角デーから高周波成分(主にノイズを含む)を除去するものである。
図7(B)に示す実施形態では、方位補正量計算部230Bは、方位角計算部232Bおよび量子化処理部236Bを含み構成される。方位角計算部232Bは、図7(A)に示したものと同様の働きをし、生の方位角データを出力する。量子化処理部236Bは、検出された方位の信号を量子化するものであり、各方位角の数値を例えば16方位や32方位などの離散的な数値とし、生の方位角データから微小な変化を捨象するはたらきをする。図8(A)は、本実施形態における16方位での量子化の態様を説明する。
図7(C)に示す実施形態では、方位補正量計算部230Cは、方位角計算部232C、第1ローパスフィルタ234C、量子化処理部236Cおよび第2ローパスフィルタ238Cを含み構成される。方位角計算部232Cは、図7(A)に示したものと同様の働きをし、生の方位角データを出力する。第1ローパスフィルタ234Cは、図7(A)に示したものと同様の働きをし、入力される生方位角データから高周波成分(主にノイズを含む。)を除去する。量子化処理部236Cは、図7(B)に示したものと同様の働きをし、高周波成分が除去された方位角データを、例えば16方位や32方位などの離散的な数値とする。第2ローパスフィルタ238Cは、量子化後の信号波形をなまらせて、量子化により離散的な数値とすることで生じ得る不自然さを解消するものである。
図8(B)は、本実施形態における方位の量子化の仕方を説明する図である。量子化処理は、量子化処理は、連続量として表される信号を、離散値で近似する処理をいう。量子化処理においては、図8(B)においてTHLD_ABで示すように、離散値の境界に閾値が設定され、信号が閾値をまたいだことに応答して出力値が決定される。そのため、量子化の閾値付近で値が上下に変動しやすく、出力値が頻繁に変動してしまうと、得られる動画の品質に影響がある。
そこで、好ましい実施形態では、量子化閾値を超えた状態が一定時間持続したことを条件として、出力値を遷移させるよう構成される。例えば、図8(B)において、方位信号300が与えられるとすると、初期状態は、出力値は「B」であるが、閾値THLD_ABを越えて一定時間T経過した後に出力値「A」に遷移する。また、出力値が「A」である状態となった後、閾値THLD_ABを下回って一定時間T経過したことに応答して、出力値「B」に遷移する。この場合、方位補正データ310で示すようなデータが得られることとなる。
また、実施形態は、上述したような、立ち上がり方向(出力値「B」から出力値「A」への方向)および立ち下り方向(出力値「A」から出力値「B」への方向)の両方に共通の閾値を設定する特定のものに限定されるものではない。他の実施形態では、図8(B)においては、値Aおよび値Bの境界を示すTHLD_ABの両側に、立ち上がり方向用の閾値THLD_BA’および立ち下り方向用の閾値THLD_AB’が個別に設けられている。この場合、値Bから値Aに遷移するためには、値A寄りに設けられたTHLD_BA‘をまたがなければならず、反対に値Aから値Bに遷移するためには、値B寄りに設けられたTHLD_AB’をまたがなければならない。この場合、方位補正データ320で示すようなデータが得られることとなる。
このように、1または複数の実施形態では、量子化処理部236B,236Cは、概して、第1の値から第2の値への方向の遷移に対する個別の閾値、第2の値から第1の値への方向の遷移に対する個別の閾値、第1の値と第2の値との間の2方向の遷移に対する共通の閾値、および閾値をまたいでからの持続時間の少なくとも1つに基づいて、量子化処理を行うことができる。
以下、図9を参照しながら、本実施形態による方位補正を伴う撮像処理について、より詳細に説明する110が実行する、方位補正を伴う撮像処理を示すフローチャートである。なお、図9は、全天球カメラ110が、動画を撮影するとともに、天頂補正、振れ回転補正および方位補正を反映した全天球動画を出力する処理として説明する。しかしながら、上述したように、他の実施形態では、天頂補正、振れ回転補正および方位補正の実体的な処理は、撮影終了後の任意のタイミングに行うことができる。
図9に示す処理は、例えば撮影指示を受け付けたことに応答して、ステップS100から開始される。
ステップS101では、全天球カメラ110は、全天球カメラ110の撮影正面に対応する初期方位角を記憶する。ここでは、最初のフレームを基準フレームとして、撮影開始時点の撮影正面に対応する方位角が記録される。この撮影開始時点の撮影正面を示す方位角は、方位補正を適用する際に用いられる。
ステップS102では、全天球カメラ110は、処理対象としてフレーム合成データを取得する。ステップS102では、より具体的には、撮像部212は、複数の撮像部212A,212Bそれぞれを用いて画像(第1および第2フレームデータ)を取得し、画像合成部220は、取得した複数の画像に基づいて合成画像(フレーム合成データ)を生成する。
ステップS103では、全天球カメラ110は、傾き角を計算し、フレーム合成データに対し傾き角に応じた天頂補正を施す。加速度検出部216は、全天球カメラ110の傾き角を検出するための加速度データを出力している。ここでは、天頂補正量計算部222は、少なくとも加速度データに基づいて、当該処理対象のフレームにおける重力方向に対する傾き角を計算し、天頂補正データに書き込む。画像回転部226は、計算された傾き角に基づいて天頂補正を施す。
ステップS104では、全天球カメラ110は、回転角度を計算し、フレーム合成データに対し回転角度に応じた振れ回転補正を施す。角速度検出部214および加速度検出部216は、全天球カメラ110の回転角度を検出するための加速度データおよび角速度データを出力している。ここでは、回転補正量計算部224は、加速度データおよび角速度データに基づいて、前フレームと比較した水平面内での回転角度の変化量を検出し、フレーム間の角度変化量を積算して、基準フレームでの初期値からの現時点の撮像正面方向の回転角度を計算し、回転補正データを書き込む。画像回転部226は、計算された初期値からの回転角度に基づいて振れ回転補正を施す。
ステップS105では、全天球カメラ110は、方位角を計算し、フレーム合成データに対し方位角に応じた方位補正を施す。地磁気検出部218は、全天球カメラ110の方位角を検出するための地磁気データを出力している。ここでは、方位補正量計算部230は、地磁気データに基づいて、該当フレーム時点の撮像正面を示す方位角を計算し、方位補正データを書き込む。画像回転部226は、基準フレームの方位角の初期値と、該当フレーム時点の撮像正面を示す方位角との差に基づいて方位補正を施す。特定の実施形態では、方位角の初期値と、該当フレーム時点の撮像正面を示す方位角との差を、方位補正データとして書き込んでもよい。
ステップS106では、全天球カメラ110は、上述した天頂補正、振れ回転補正および方位補正が反映されたフレーム合成データを出力部240から出力し、ステップS107へ処理を進める。上記検出された方位角は、出力先で表示する際のフレーム合成データの表示の基準を与える。
ステップS107では、全天球カメラ110は、次フレームがあるか否かを判定する。ステップS107で、例えば撮影が継続しており、次フレームがあると判定された場合(YES)は、ステップS102へループさせる。一方、ステップS107で、例えば撮影終了となり次フレームがないと判定された場合(NO)は、ステップS108で、本撮像処理を終了する。
なお、以上説明した実施形態では、ステップS104〜ステップS106の処理で、それぞれ補正量を計算し、順次補正を適用するものとして説明した。しかしながら、これに特に限定されるものではなく、他の実施形態では、ステップS104〜ステップS106で、補正量を計算し、これらをまとめて、1つのステップとして回転変換を適用することもできる。
上述した処理により、撮影者の意図しない手ぶれを補正するとともに、動画の表示の基準を全天球カメラ110の撮影正面に対応する方位に略一致させることが可能となる。
上記振れ回転補正により、全天球画像に対し、手振れや振動などに起因した不随意の回転変化が高周波数帯および低周波数帯を含む全周波数帯にわたり打ち消されるような補正がかけられる。一方、見回す動作などの撮影者の意図的な回転変化は、方位角の変化として検出され、上記方位補正により、この方位角に対応する被写体が全天球画像の表示の基準(例えば全天球画像の水平方向での中央)に一致するように補正がなされる。そして、閲覧時は、この表示の基準に基づいて全天球画像を表示することが可能となる。
以下、図10を参照しながら、振れ回転補正および方位補正のはたらきについて説明する。図10は、撮影者が所定の動作をした場合の撮影される、天頂補正後かつ振れ回転補正前の全天球画像(左側)、振れ回転補正後かつ方位補正前の全天球画像(中央)および方位補正後の全天球画像(右側)を説明する図である。図10において、番号0〜5で時系列的に示した図であり、時間は、上から下へ向いて流れており、一番上は、撮影開始時点の基準フレームに対応する。
図10における撮影者の動作は、以下の通りとなる。まず、撮影者は、全天球カメラ110の撮影正面を「南西」に向けて撮影を開始する。番号0〜3の期間においては、撮影者は、若干の不随意の手振れを伴いながら全天球カメラ110の撮影正面を概ね「南西」に維持した状態で撮影を継続する。そして、番号3〜5の期間においては、撮影者は、全天球カメラ110の正面を概ね「南西」から概ね「南東」へ動かしながら撮影を行う。なお、図10に「東西南北」を示し、具体的な方位もって説明しているが、説明の便宜上のものである点に留意されたい。「東西南北」は、撮影される風景の位置関係を説明しており、図10の撮影中、全天球カメラ110は、位置は動かさず、その位置で回転しているものとする。
図10には、上記動作を説明した番号0〜5に対応した振れ回転補正前の全天球画像(左側)400、方位補正前の全天球画像(中央)410および方位補正後の全天球画像420(右側)が模式的に示されている。なお、図10中、最後のフレームについてのみ、代表して符号が示されている点に留意されたい。全天球画像400,410、420中には、全天球カメラ110の撮影正面402,412,422が示されている。また、全天球画像400,410,420中には、全天球画像の中央404.414,424が破線にて模式的に示されている。さらに、方位補正後の全天球画像420中には、全天球画像の中央に設定された所定範囲426が、視聴時に、情報端末150の表示画面上に表示されることを模式的に表現している。
番号0〜3の期間においては、上述したように撮影者は概ねカメラを「南西」に向けているが、図10の左側の一連の全天球画像400を見ると理解されるように、振れ回転補正前では、撮影者の手振れなどの動作に応じて画像が「南西」を中心として「西」よりあるいは「南」よりにブレていることがわかる。これに対し、図10の中央の一連の全天球画像410を見ると、番号0〜3の期間においては、撮影開始時点の「南西」が画像の中央414に固定されるように、上述した不随意の動きに起因した回転変化が打ち消されるように補正がかかっている。そして、図10の右側の方位補正後の全天球画像420を見ると、撮影開始時点の「南西」が画像の中央414に一致するように方位補正されることがわかる。なお、番号0〜3の期間では、方位角が初期値から変化しないので補正量が0となっている。
上述したように、番号3〜5の期間においては、撮影者は、全天球カメラ110の正面を「南西」から「南東」へ動かしているが、図10の左側の振れ回転補正前の全天球画像400に示すように、この動作に伴って、画像が「南西」から「南東」へと流れていることが理解される。一方、図10の中央の全天球画像410を見ると、番号3〜5の期間においても、撮影開始時点の「南西」が画像の中央414に固定されるように、上述した随意的な動きに起因した回転変化も打ち消されるように補正がかかっている。そして、図10の右側の方位補正後の全天球画像420を見ると、撮影開始時点の「南西」ではなく撮影者の動きに合わせた撮像正面を指す方位が画像の中央414に一致するように方位補正されることがわかる。なお、番号4の時点では、若干東よりの南を向いているが、16方位に量子化されて「南」となっており、番号5の時点では、若干東よりの南東を向いているが、16方位に量子化されて「南東」となっている。また、番号3〜5の期間では、方位角が初期値の「南西」から「南東」へ変化しているので、補正量は、図8(A)で「南西」を表す初期値10から「南東」を表す現在値6への差分−4となっている。
以上説明したように、本実施形態によれば、画像の表示の基準を撮像部が向いている方位に応じて与えるとともに使用者の意図しない手ぶれを補正可能な撮像装置、撮像方法およびプログラムを提供することが可能となる。
好ましい実施形態においては、振れ回転補正は、低周波数帯および高周波数帯を含めた全周波数帯に対して行われ、一方で動画の表示の基準は、検出された方位に基づいて規定されることになる。ここで、方位には、好ましくは、ローパスフィルタおよび量子化処理の一方または両方がかけられており、微小な変化や頻繁な変動が除去され、比較的に緩やかな変動となっている。このため、好ましい実施形態においては、動画の表示の基準を全天球カメラ110の正面に緩やかに追従させつつ、撮影者の意図しない低周波のものも含めて手ぶれは補正されることとなり、動画の品質を向上させることができる。
なお、上述した実施形態では、座標系が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などにより記述されたデータとして記録媒体により配布することができる。
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。