(57)【要約】【課題】  撮影される動画を補正するための撮像装置を提供すること。【解決手段】  本撮像装置１１０は、動画を撮像するものである。本撮像装置１１０は、撮像した動画の各フレームの基準時刻を記録する記録手段２１４と、各時点の当該撮像装置の傾きを取得する取得手段２１６と、動画の各フレームに対する基準時刻での傾き補正の補正値を、基準時刻近傍の複数の時点の傾きを用いて補間して計算する計算手段（２２２，２２４）とを含む。【選択図】  図３
2020068416.tif 000002
【特許請求の範囲】
【請求項１】
動画を撮像する撮像装置であって、
撮像した動画の各フレームの基準時刻を記録する記録手段と、
各時点の当該撮像装置の傾きを取得する取得手段と、
前記動画の各フレームに対する基準時刻での傾き補正の補正値を、前記基準時刻近傍の複数の時点の傾きを用いて補間して計算する計算手段と
を含む、撮像装置。
【請求項２】
前記撮像装置は、互いに同期して撮像する複数の撮像素子を備え、前記動画の各フレームの基準時刻は、いずれかの撮像素子で撮像した画像についての基準時刻である、請求項１に記載の撮像装置。
【請求項３】
前記動画の各フレームの基準時刻は、フレームの露光中心に関連するものである、請求項１または２に記載の撮像装置。
【請求項４】
前記動画の各フレームの画像に対し、各フレームに対する基準時刻での傾き補正の補正値に基づいて傾き補正をかける補正手段をさらに含む、請求項１〜３のいずれか１項に記載の撮像装置。
【請求項５】
前記動画の各フレームの基準時刻は、フレーム単位で求められるものであり、前記補正手段は、前記動画の各フレームの画像に対し、フレーム単位で、前記基準時刻での補正値に基づき傾き補正をかける、請求項４に記載の撮像装置。
【請求項６】
前記動画の各フレームの基準時刻は、各フレームの画像を構成する複数の走査線各々に対して求められるものであり、前記補正手段は、前記動画の各フレームを構成する走査線各々に対し、１または複数の走査線単位で、前記基準時刻での補正値に基づき傾き補正をかける、請求項４に記載の撮像装置。
【請求項７】
前記複数の時点の傾きを用いた補間は、クォータニオンによる線形補間を含む、請求項１〜６のいずれか１項に記載の撮像装置。
【請求項８】
前記撮像装置は、全天球カメラであり、前記動画は、全天球動画であり、前記撮像装置の傾きは、基準方向に対する傾き角および基準方向周りの回転角の一方または両方を示すものであり、前記傾き補正は、天頂補正および回転補正の一方または両方を含む、請求項１〜７のいずれか１項に記載の撮像装置。
【請求項９】
動画に対する補正の補正値を計算する情報処理装置であって、
動画の各フレームに関連付けられた基準時刻を取得する時刻取得手段と、
動画に関連付けて記録された、前記基準時刻近傍の複数の時点の傾きを取得する傾き取得手段と、
前記動画の各フレームに対する基準時刻での傾き補正の補正値を、前記複数の時点の傾きを用いて補間して計算する計算手段と
を含む、情報処理装置。
【請求項１０】
動画に対する補正の補正値を計算する方法であって、コンピュータが、
動画の各フレームに関連付けられた基準時刻を取得するステップと、
動画に関連付けて記録された、前記基準時刻近傍の複数の時点の傾きを取得するステップと、
前記動画の各フレームに対する基準時刻での傾き補正の補正値を、前記複数の時点の傾きを用いて補間して計算するステップと
を実行する、補正値計算方法。
【請求項１１】
動画に対する補正の補正値を計算する情報処理装置を実現するためのプログラムであって、コンピュータを、
動画の各フレームに関連付けられた基準時刻を取得する時刻取得手段と、
動画に関連付けて記録された、前記基準時刻近傍の複数の時点の傾きを取得する傾き取得手段と、
前記動画の各フレームに対する基準時刻での傾き補正の補正値を、前記複数の時点の傾きを用いて補間して計算する計算手段と
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、撮像装置、情報処理装置およびプログラムに関し、より詳細には、撮影される動画を補正するための撮像装置、情報処理装置、補正値計算方法およびプログラムに関する。
【背景技術】
【０００２】
従来、撮影された全天球画像に対し、加速度センサの出力に基づいて、鉛直方向を基準とした傾き角を求め、画像の天頂方向が鉛直方向に一致するように画像の傾きを補正する、いわゆる天頂補正機能が知られている。動画を撮影する場合は、手振れにより撮像装置の姿勢が変化し得るところ、フレーム毎に画像の天頂方向を鉛直方向に一致させることで、そのような手振れを補正することができる。
【０００３】
しかしながら、従来技術の天頂補正や振れ補正などの傾き補正においては、各フレームに対する補正データを計算する際に、フレームおよびセンサーデータの間の同期が充分ではなく、補正精度の観点から充分とは言えなかった。
【０００４】
動画の補正に関し、国際公開第２０１７／０１４０７１号（特許文献１）が知られている。特許文献１は、動き検出部により検出された撮像部の動き、および、光学系の歪みを補正する補正係数に基づいて、撮像部により撮像された画像上の座標を、撮像部の振れおよび光学系の歪みの両方が画像に与える影響を抑制するように一括で変換する座標変換処理を行う構成を開示する。
【０００５】
特許文献１の従来技術によれば、ある程度手振れおよびレンズ歪みを効果的に補正することができるようになる。しかしながら、従来技術の画像の傾き補正において、各フレームの補正データを計算する際のフレームとセンサーデータの同期が不充分である点を解消できるものではなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本開示は、上記点に鑑みてなされたものであり、撮像される動画において、各フレームと、傾き補正の補正データとの同期の精度を向上することができる、撮像装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本開示によれば、下記特徴を有する、動画を撮像する撮像装置を提供する。本撮像装置は、撮像した動画の各フレームの基準時刻を記録する記録手段と、各時点の当該撮像装置の傾きを取得する取得手段と、動画の各フレームに対する基準時刻での傾き補正の補正値を、前記基準時刻近傍の複数の時点の傾きを用いて補間して計算する計算手段とを含む。
【発明の効果】
【０００８】
上記構成により、撮影された動画において、各フレームと、傾き補正の補正データとの同期の精度を向上することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態による全天球動画システムを構成する全天球カメラの断面図。
【図２】本実施形態による全天球動画システムのハードウェア構成図。
【図３】本実施形態による全天球動画システム上に実現される全天球動画補正機能に関連する主要な機能ブロック図。
【図４】（Ａ）全天球画像の生成における画像データフロー図、および、全天球画像のデータ構造を（Ｂ）平面で表した場合および（Ｃ）球面で表した場合について説明する図。
【図５】本実施形態による全天球画像の天頂補正および回転補正について説明する図。
【図６】本実施形態による全天球画像の天頂補正および回転補正によって得られる全天球画像を説明する図。
【図７】本実施形態による全天球カメラが実行する、撮像処理を示すフローチャート。
【図８】本実施形態による全天球カメラにおける露光シーケンスおよび露光中心タイミングの求め方を説明する図。
【図９】本実施形態による全天球カメラにおける傾き情報の取得タイミングを説明する図。
【図１０】本実施形態による全天球カメラにおいて記録される（Ａ）フレーム毎のタイムスタンプ、（Ｂ）略フレーム周期毎に記録される傾きおよび（Ｃ）サンプリング周期毎に記録される傾きのデータ構造を例示する図。
【図１１】本実施形態による全天球カメラが実行する、補正値の再計算処理を示すフローチャート。
【図１２】本実施形態による全天球カメラによる、略フレーム周期毎に補正データが記録される場合の補正値の再計算の仕方を説明する図。
【図１３】本実施形態による全天球カメラによる、サンプリング周期毎に補正データが記録される場合の補正値の再計算の仕方を説明する図。
【図１４】他の実施形態による全天球カメラによる、走査線毎の補正データの求め方を説明する図。
【図１５】他の実施形態における全天球画像の変換テーブルおよび走査線毎の補正値に応じた補正方法を説明する図。
【発明を実施するための形態】
【００１０】
以下、本実施形態について説明するが、実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下の実施形態では、撮像装置および情報処理装置の一例として、全天球カメラを用いて説明する。
【００１１】
以下、図１および図２を参照しながら、本実施形態による全天球動画システムの全体構成について説明する。
【００１２】
図１は、本実施形態による全天球動画システムを構成する全天球カメラ１１０の断面図である。図１に示す全天球カメラ１１０は、撮像体１２と、上記撮像体１２およびコントローラやバッテリなどの部品を保持する筐体１４と、上記筐体１４に設けられたシャッター・ボタン１８とを備える。
【００１３】
図１に示す撮像体１２は、２つの結像光学系２０Ａ，２０Ｂと、ＣＣＤ（Charge Coupled Device）センサやＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサなどの２つの撮像素子２２Ａ，２２Ｂとを含み構成される。結像光学系２０各々は、例えば６群７枚の魚眼レンズとして構成されている。上記魚眼レンズは、図１に示す実施形態では、１８０度（＝３６０度／ｎ；光学系の数ｎ＝２）より大きい全画角を有し、好適には、１８５度以上の画角を有し、より好適には、１９０度以上の画角を有する。このような広角な結像光学系２０と撮像素子２２とを１個ずつ組み合わせたものを広角撮像光学系と参照する。
【００１４】
２つの結像光学系２０Ａ，２０Ｂの光学素子（レンズ、プリズム、フィルタおよび開口絞り）は、撮像素子２２Ａ，２２Ｂに対して位置関係が定められる。より具体的には、結像光学系２０Ａ，２０Ｂの光学素子の光軸が、対応する撮像素子２２の受光領域の中心部に直交して位置するように、かつ、受光領域が、対応する魚眼レンズの結像面となるように位置決めが行われる。
【００１５】
図１に示す実施形態では、結像光学系２０Ａ，２０Ｂは、同一仕様のものであり、それぞれの光軸が合致するようにして、互いに逆向きに組み合わせられる。撮像素子２２Ａ，２２Ｂは、受光した光分布を画像信号に変換し、コントローラ上の画像処理手段に順次、画像フレームを出力する。詳細は後述するが、撮像素子２２Ａ，２２Ｂでそれぞれ撮像された画像は、合成処理されて、これにより、立体角４πステラジアンの画像（以下「全天球画像」と参照する。）が生成される。全天球画像は、撮影地点から見渡すことのできる全ての方向を撮影したものとなる。そして、全天球画像の連続するフレームにより、全天球動画が構成される。なお、撮像素子２２Ａ，２２Ｂは、その特性上、同期をとって撮像を行っている。ここで、説明する実施形態では、全天球画像および全天球動画を生成するものとして説明するが、全天周画像や全天周動画、水平面のみ３６０度を撮影した、いわゆるパノラマ画像およびパノラマ動画であってもよい。
【００１６】
図２（Ａ）は、本実施形態による全天球動画システムを構成する全天球カメラ１１０のハードウェア構成を示す。全天球カメラ１１０は、説明する実施形態における情報処理装置または撮像装置に対応する。
【００１７】
全天球カメラ１１０は、ＣＰＵ（Central Processing Unit）１１２と、ＲＯＭ（Read Only Memory）１１４と、画像処理ブロック１１６と、動画圧縮ブロック１１８と、ＤＲＡＭ（Dynamic Random Access Memory）インタフェース１２０を介して接続されるＤＲＡＭ１３２と、外部センサインタフェース１２４を介して接続される姿勢角センサ１３６とを含み構成される。
【００１８】
ＣＰＵ１１２は、全天球カメラ１１０の各部の動作および全体動作を制御する。ＲＯＭ１１４は、ＣＰＵ１１２が解読可能なコードで記述された制御プログラムや各種パラメータを格納する。ＲＯＭ１１４に加えて、制御プログラムを格納するためのＳＳＤなどのストレージを備えてもよい。画像処理ブロック１１６は、２つの撮像素子１３０Ａ，１３０Ｂ（図１における撮像素子２２Ａ，２２Ｂである。）と接続され、それぞれで撮像された画像の画像信号が入力される。画像処理ブロック１１６は、ＩＳＰ（Image Signal Processor）などを含み構成され、撮像素子１３０から入力された画像信号に対し、シェーディング補正、ベイヤー補間、ホワイト・バランス補正、ガンマ補正などを行う。
【００１９】
動画圧縮ブロック１１８は、ＭＰＥＧ−４  ＡＶＣ／Ｈ．２６４などの動画圧縮および伸張を行うコーデック・ブロックである。ＤＲＡＭ１３２は、各種信号処理および画像処理を施す際にデータを一時的に保存する記憶領域を提供する。
【００２０】
姿勢角センサ１３６は、３軸の加速度成分および３軸の角速度成分を検出するセンサである。検出された加速度成分および角速度成分は、後述するように、重力方向への全天球画像の天頂補正および重力方向周りの回転補正を施すために用いられる。姿勢角センサ１３６は、さらに、方位角などを求めるための地磁気センサなど他のセンサを備えてもよい。
【００２１】
全天球カメラ１１０は、さらに、外部ストレージインタフェース１２２と、ＵＳＢ（Universal Serial Bus）インタフェース１２６と、シリアルブロック１２８とを含み構成される。外部ストレージインタフェース１２２には、外部ストレージ１３４が接続される。外部ストレージインタフェース１２２は、メモリカードスロットに挿入されたメモリカードなどの外部ストレージ１３４に対する読み書きを制御する。ＵＳＢインタフェース１２６には、ＵＳＢコネクタ１３８が接続される。ＵＳＢインタフェース１２６は、ＵＳＢコネクタ１３８を介して接続されるスマートフォンなどの外部装置とのＵＳＢ通信を制御する。シリアルブロック１２８は、スマートフォンなどの外部装置とのシリアル通信を制御し、無線ＮＩＣ（Network Interface Card）１４０が接続される。
【００２２】
電源スイッチの操作によって電源がオン状態になると、上記制御プログラムがメインメモリにロードされる。ＣＰＵ１１２は、メインメモリに読み込まれたプログラムに従って、装置各部の動作を制御するとともに、制御に必要なデータをメモリ上に一時的に保存する。これにより、全天球カメラ１１０の後述する各機能部および処理が実現される。制御プログラムには、ファームウェア、オペレーティング・システム（ＯＳ）、プラグイン・アプリケーションなどが含まれ得る。
【００２３】
図２（Ｂ）は、本実施形態による全天球動画システムを構成する情報端末１５０のハードウェア構成を示す。情報端末１５０は、説明する実施形態における情報処理装置に対応する。
【００２４】
図２（Ｂ）に示す情報端末１５０は、ＣＰＵ１５２と、ＲＡＭ１５４と、内部ストレージ１５６と、入力装置１５８と、外部ストレージ１６０と、ディスプレイ１６２と、無線ＮＩＣ１６４と、ＵＳＢコネクタ１６６とを含み構成される。
【００２５】
ＣＰＵ１５２は、情報端末１５０の各部の動作および全体動作を制御する。ＲＡＭ１５４は、ＣＰＵ１５２の作業領域を提供する。内部ストレージ１５６は、ＣＰＵ１５２が解読可能なコードで記述された、オペレーティング・システムや、本実施形態による情報端末１５０側の処理を担うアプリケーションなどの制御プログラムを格納する。
【００２６】
入力装置１５８は、タッチスクリーンなどの入力装置であり、ユーザ・インタフェースを提供する。入力装置１５８は、全天球動画の補正など操作者による各種の指示を受け付ける。外部ストレージ１６０は、メモリカードスロットなどに装着された着脱可能な記録媒体であり、動画形式の画像データや静止画データなどの各種データを記録する。ディスプレイ１６２は、ユーザ操作に応答して補正された全天球動画を画面表示する。無線ＮＩＣ１６４は、全天球カメラ１１０などの外部機器との無線通信の接続を確立する。ＵＳＢコネクタ１６６は、全天球カメラ１１０などの外部機器とのＵＳＢ接続をする。
【００２７】
情報端末１５０に電源が投入され電源がオン状態になると、内部ストレージ１５６から制御プログラムが読み出され、ＲＡＭ１５４にロードされる。ＣＰＵ１５２は、ＲＡＭ１５４に読み込まれた制御プログラムに従って、装置各部の動作を制御するとともに、制御に必要なデータをメモリ上に一時的に保存する。これにより、情報端末１５０の後述する各機能部および処理が実現される。
【００２８】
以下、図３〜図６を参照しながら、本実施形態による全天球動画システムが備える全天球動画補正機能について説明する。
【００２９】
図３は、本実施形態による全天球動画システム上で実現される全天球動画補正機能に関連する主要な機能ブロック２１０を示す。全天球カメラ１１０の機能ブロック２１０は、図３に示すように、全天球動画撮像部２１２と、記憶部２１８と、天頂・回転補正部２２０と、天頂補正データ再計算部２２２と、回転補正データ再計算部２２４とを含み構成される。
【００３０】
全天球動画撮像部２１２は、２つの撮像素子１３０Ａ，１３０Ｂを用いて連続したフレームを順次撮像し、全天球動画データ２４０を記憶部２１８に記録する。全天球動画撮像部２１２は、さらに、タイムスタンプ記録部２１４と、傾き記録部２１６とを含み構成される。
【００３１】
タイムスタンプ記録部２１４は、各フレームに対し、基準となる基準時刻を求めて、求めた基準時刻を各フレームに関連付けてタイムスタンプとして記録する。ここで、動画の各フレームの基準時刻は、フレームの露光中心の時刻に関係するものである。傾き記録部２１６は、撮像中、各時点で、姿勢角センサ１３６を用いて３軸方向の加速度成分および３軸方向の角速度成分などを計測し、全天球動画データ２４０のメタデータとしてこれらの計測した情報を記録する。タイムスタンプ記録部２１４および傾き記録部２１６は、それぞれ、本実施形態における記録手段および取得手段を構成することができる。
【００３２】
記憶部２１８は、全天球動画撮像部２１２によって記録された１または複数の全天球動画データ２４０を記憶する。記憶部２１８は、図２に示した外部ストレージ１３４や他のストレージなどの記憶領域の一部として与えられる。全天球動画データ２４０は、図３に示すように、全天球カメラ１１０で撮像された全天球フレームデータ２４２と、撮影中の全天球カメラ１１０の基準方向に対する傾き角の時系列データである天頂補正データ２４４と、撮影中の全天球カメラ１１０の基準方向周りの回転角の時系列データである回転補正データ２４６とを含み構成される。
【００３３】
全天球フレームデータ２４２は、撮影を開始してから終了するまでのそれぞれ全天球動画を構成する複数のフレームを含み、全天球動画データ２４０の本体となる動画データである。全天球フレームデータ２４２においては、各フレームには、その基準時刻を示すタイムスタンプが関連付けられる。
【００３４】
以下、図４を参照しながら、全天球画像の生成および生成される全天球画像について説明する。図４（Ａ）は、全天球画像生成における各画像のデータ構造および画像のデータフローを説明する。まず、撮像素子１３０各々で直接撮像される画像は、概ね全天球のうちの半球を視野に収めた画像である。結像光学系に入射した光は、所定の射影方式に従って撮像素子１３０の受光領域に結像される。ここで撮像される画像は、受光領域が平面エリアを成す２次元の撮像素子で撮像されたものであり、平面座標系で表現された画像データとなる。また、典型的には、得られる画像は、図４（Ａ）において「魚眼画像Ａ」および「魚眼画像Ｂ」で示されるように、各撮影範囲が投影されたイメージサークル全体を含む魚眼画像として構成される。
【００３５】
この複数の撮像素子１３０で撮像された各フレームの複数の魚眼画像が、歪み補正および合成処理されて、各フレームに対応する１つの全天球画像が構成される。合成処理では、平面画像として構成される各魚眼画像から、まず、相補的な各半球部分を含む各全天球画像が生成される。そして、各半球部分を含む２つの全天球画像が、重複領域のマッチングに基づいて位置合わせされ、画像合成され、全天球全体を含む全天球画像が生成される。
【００３６】
図４（Ｂ）は、本実施形態で用いられる全天球画像の画像データのデータ構造を平面で表して説明する図である。図４（Ｃ）は、全天球画像の画像データのデータ構造を球面で表して説明する図である。図４（Ｂ）に示すように、全天球画像の画像データは、所定の軸に対してなされる垂直角度φと、所定の軸周りの回転角に対応する水平角度θとを座標とした画素値の配列として表現される。垂直角度φは、０度〜１８０度（あるいは−９０度〜＋９０度）の範囲となり、水平角度θは、０度〜３６０度（あるいは−１８０度〜＋１８０度）の範囲となる。
【００３７】
全天球フォーマットの各座標値（θ，φ）は、図４（Ｃ）に示すように、撮影地点を中心とした全方位を表す球面上の各点と対応付けられており、全方位が全天球画像上に対応付けられる。魚眼レンズで撮影された魚眼画像の平面座標と、全天球画像の球面上の座標とは、所定の変換テーブルにて対応付けされる。変換テーブルは、それぞれのレンズ光学系の設計データ等に基づいて、所定の投影モデルに従い製造元等で予め作成されたデータであり、魚眼画像を全天球画像へ変換するデータである。
【００３８】
ここで、全天球フレームデータ２４２が全天球動画を構成するものとして説明しているが、必ずしも図４に示すような合成後の全天球画像のフォーマットで各フレームが記録されていることを要するものではない。全天球フレームデータ２４２は、再生時に全天球動画が構成可能であれば、いかなる形態で記録されていてもよい。
【００３９】
例えば、再生時にフレームごとに魚眼画像から歪み補正および合成を行って全天球画像を生成することを前提として、撮像素子１３０Ａ，１３０Ｂで直接撮像される２つの魚眼画像の動画データ（図４（Ａ）に示す魚眼画像Ａおよび魚眼画像Ｂそれぞれに対応する動画データ）、または、２つの魚眼画像を接合した接合画像の動画データ（魚眼画像Ａおよび魚眼画像Ｂを並べて接合して１つの画像とした場合の動画データ）が記録されていてもよい。なお、以下、説明の便宜上、全天球フレームデータ２４２は、歪み補正および合成処理後の全天球画像のフォーマットで各フレームの画像を保持するものとして説明する。
【００４０】
また、「動画」と参照するが、動画が再生可能であれば、いかなる形態で記録されてもよい。例えば、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ（Advanced Video Coding）、Ｈ．２６５／ＨＥＶＣ（High Efficiency Video Coding）などの所定のコーデックで、複数のフレームを圧縮した動画データとして記録されていてもよい。また、Ｍｏｔｉｏｎ  ＪＰＥＧ（Joint Photographic Experts Group）は、連続した静止画として動画を表現する形式であるが、このように、複数のフレームの静止画像の連続した系列として動画データが記録されていてもよい。あるいは、複数の静止画ファイルの集合として、連続画像ないし動画が構成されてもよい。
【００４１】
ここで、再び図３を参照する。天頂補正データ２４４は、全天球動画の各フレームに関連付けて記録される、撮影を開始してから終了するまでの全天球カメラ１１０の基準方向に対する傾き角の時系列データである。ここで、基準方向は、典型的には、重力加速度が作用する重力方向である。重力方向に対する傾き角は、姿勢角センサ１３６に含まれる加速度センサで計測された信号に基づいて生成される。傾き角は、典型的には、加速度の次元の値からなるベクトルまたは回転角の値として構成される。加速度センサは、重力と慣性力とを区別しないので、好ましくは、姿勢角センサ１３６に含まれる角速度センサで計測された信号に基づいて、加速度センサから得られた傾き角が補正されてもよい。ここで、傾き角は、全天球カメラ１１０が基準方向に対して傾いている程度を表すものであるが、その傾きキャンセルするように補正をかけるための天頂補正の補正値して用いることができる。天頂補正データ２４４は、天頂補正を行うために用いられる情報の時系列データであるが、必ずしも傾き角の時系列データであることを要さない。天頂補正データ２４４が、姿勢角センサ１３６に含まれる加速度センサで計測された信号の時系列データのような、より生のデータであることを妨げるものではない。
【００４２】
回転補正データ２４６は、撮影を開始してから終了するまでの全天球カメラ１１０の基準方向周りの回転角の時系列データである。ここで、基準方向周りの回転角は、姿勢角センサ１３６に含まれる角速度センサで計測される、３軸周りで生じた角速度の信号の時系列データに基づいて計算することができる。あるいは、姿勢角センサ１３６に含まれる地磁気センサにより方位角として計測される。回転角は、典型的には、角度を表すスカラー値として構成される。ここで、回転角は、全天球カメラ１１０が基準方向周りに所定の基準に対して回転している程度を表すものであるが、その回転をキャンセルするように補正をかけるための回転補正の補正値として用いることができる。回転補正データ２４６は、回転補正を行うために用いられる情報の時系列であり、必ずしも回転角の時系列データであることを要さず、姿勢角センサ１３６に含まれる角速度センサで計測された角速度の信号の時系列データのようなより生のデータであることを妨げるものではない。
【００４３】
天頂・回転補正部２２０は、記憶部２１８に記憶された全天球動画データ２４０を読み出し、全天球フレームデータ２４２の各フレームに対し、天頂補正および回転補正を施し、補正された全天球動画データを出力する。
【００４４】
ここで、図５および図６を参照しながら、天頂補正および回転補正について説明する。図５は、本実施形態において行われる全天球画像の天頂補正および回転補正を説明する図である。図６は、本実施形態において行われる全天球画像の天頂補正および回転補正によって得られる全天球画像を説明する図である。図６（Ａ）は、天頂補正前の動画のフレームを示し、図６（Ｂ）は、天頂補正後の動画のフレームを示す。
【００４５】
上述したように、全天球画像フォーマットの画像データは、所定の軸ｚ０に対してなす垂直角度φと、上記所定の軸ｚ０周りの回転角に対応する水平角度θとを座標とした画素値の配列として表現される。ここで、所定の軸は、なんら補正がなされない場合は、全天球カメラ１１０を基準として定義される軸となる。例えば、図１に示す全天球カメラの撮像体１２側を頭部としてその反対側を底部として、底部から頭部へ筐体の中心を通る中心軸を、水平角度θおよび垂直角度φを定義する所定の軸ｚ０として全天球画像を定義することができる。また、例えば２つの結像光学系２０Ａ，２０Ｂのうちの一方の光学素子の光軸方向が水平角度θで中心に位置するように、全天球画像の水平角度θを定義することができる。
【００４６】
天頂補正とは、図５の左図のように実際には基準方向（重力方向）に対して中心軸ｚ０が傾いている状態で撮像された全天球画像（図６（Ａ））を、図５の右図のようにあたかも中心軸ｚ０が基準方向Ｚに一致した状態で撮影されたかのような全天球画像（図６（Ｂ））に補正する処理（Ｒｏｌｌ，Ｐｉｔｃｈ方向の補正）をいう。これに対して、回転補正とは、天頂補正により基準方向に中心軸ｚ０が一致するように補正された全天球画像において、さらに、基準方向Ｚ周りの変動（図６の水平角度θ方向の変動）を低減する補正（Ｙａｗ方向の補正）をいう。
【００４７】
ここで、再び図３を参照する。天頂・回転補正部２２０は、天頂補正データ２４４に基づいて、全天球フレームデータ２４２の複数のフレーム各々に対し、画像の天頂方向が基準方向に一致するように全天球画像の天頂補正を施す。天頂・回転補正部２２０は、同時に、複数のフレームに対し、回転補正データ２４６に基づいて、基準方向周りの変動が低減されるように画像の回転を施す。
【００４８】
この際に、天頂・回転補正部２２０は、天頂補正データ２４４および回転補正データ２４６に直接基づいて補正しない。より精度の高い天頂補正および回転補正を行うために、天頂補正データ再計算部２２２および回転補正データ再計算部２２４により、フレームの基準時刻に合わせて補正値（傾き角および回転角）を再計算した上で、天頂補正および回転補正を行う。
【００４９】
天頂補正データ再計算部２２２は、各フレームのタイムスタンプを取得し、各フレームに対する基準時刻での天頂補正の補正値を、天頂補正データ２４４のうちの基準時刻近傍の複数の時点の傾き角を用いて補間して計算する。ここで、複数の時点の値を用いた補間は、詳細を後述するように、クォータニオンによる線形補間を含む。これに対して、回転補正データ再計算部２２４は、各フレームのタイムスタンプを取得し、各フレームに対する基準時刻での回転補正の補正値を、回転補正データ２４６のうちの基準時刻近傍の複数の時点の回転角の値を用いて補間して計算する。ここで、複数の時点の値を用いた補間は、線形補間である。
【００５０】
天頂補正データ再計算部２２２および回転補正データ再計算部２２４は、本実施形態において、それぞれ、傾き補正として天頂補正および回転補正を対象として、基準時刻近傍の複数の時点の傾きを用いて補間計算する、本実施形態における計算手段を構成する。天頂補正データ再計算部２２２および回転補正データ再計算部２２４は、また、各フレームに関連付けられた基準時刻を取得する時刻取得手段および基準時刻近傍の複数の時点の傾きを取得する傾き取得手段を構成する。
【００５１】
そして、天頂・回転補正部２２０は、動画の各フレームの画像に対し、各フレームに対する基準時刻での補正値に基づいて傾き補正をかける、本実施形態における補正手段を構成する。なお、説明する実施形態では、動画の各フレームの基準時刻は、フレーム単位で求められるものである。天頂・回転補正部２２０は、各フレームの画像に対し、フレーム単位で、天頂補正データ再計算部２２２および回転補正データ再計算部２２４により計算された基準時刻に対する補正値に基づき傾き補正をかける。
【００５２】
なお、全天球フレームデータ２４２中の各フレームの画像が合成後の全天球フォーマットの画像である場合は、天頂・回転補正部２２０は、各フレームの全天球画像の回転座標変換を行う。一方で、全天球フレームデータ２４２中の各フレームが、合成前の複数の魚眼画像である場合は、天頂・回転補正部２２０は、フレーム各々に対し天頂補正および回転補正を施すとともに、複数の魚眼画像から全天球画像への変換を行う。その場合は、上述した、魚眼画像の平面座標と全天球画像の球面上の座標とを対応付ける変換テーブルに対し、天頂補正および回転補正を反映させて、新たな変換テーブルが生成される。そして、生成された変換テーブルに基づいて全天球画像が生成され、これにより、魚眼画像から、天頂補正および回転補正が反映された全天球画像が生成される。
【００５３】
図３に示すように、説明する実施形態による全天球カメラ１１０の機能ブロック２１０は、さらに、画像出力部２３２を含み構成される。これに対して、情報端末１５０の機能ブロック２５０は、表示部２５４を含み構成される。
【００５４】
情報端末１５０は、ユーザによる各種指示を受領する。全天球カメラ１１０は、情報端末１５０から全天球動画の補正要求（例えば再生に際して補正後の全天球動画を求める要求）を受信すると、該要求に応答して、指定された全天球動画データ２４０の天頂補正および回転補正、並びに補正後の画像データの出力を開始する。画像出力部２３２は、天頂・回転補正部２２０により天頂補正および回転補正が施された複数のフレームに基づく全天球動画の画像データを要求元の情報端末１５０に出力する。なお、この際は、画像データは、補正された複数のフレーム各々の全天球画像に基づき、所定の動画圧縮形式でエンコードし、最終的な動画データとして出力されてもよいし、静止画の系列として出力されてもよい。
【００５５】
情報端末１５０は、全天球カメラ１１０と通信し、全天球画像を閲覧再生するためのアプリケーションがインストールされたスマートフォンやタブレットコンピュータ、パーソナルコンピュータなどの端末装置である。情報端末１５０は、アプリケーションを介して操作者から各種指示を受け付けて、全天球カメラ１１０に対し各種要求を発行する。情報端末１５０は、操作者からの指定の全天球動画の補正指示（例えば補正をしながらの動画再生の指示）を受け付けたことに応答して、全天球カメラ１１０に対し、所定の全天球動画の補正後の動画データを求める要求を発行する。情報端末１５０の表示部２５４は、全天球カメラ１１０から出力されてくる全天球動画の画像データに基づいて、情報端末１５０が備えるディスプレイ１６２などの表示装置上に全天球動画を表示する。
【００５６】
なお、情報端末１５０側で、補正後の画像データに基づいてどのような画像が表示されるのかは任意である。例えば、全天球画像をそのまま表示装置上に表示してもよいし、全天球画像を球体オブジェクトに張り付けて、所定の位置から所定の視野角のカメラで球体オブジェクトを観察した場合の画像をフレームとして動画表示することもできる。
【００５７】
なお、本実施形態では、情報端末１５０ではなく、全天球カメラ１１０側のリソースを用いて天頂補正および回転補正の実体的な処理を行い、情報端末１５０には補正結果を出力して表示させる構成を採用する。この構成により、情報端末１５０が備える処理性能にかかわらず、天頂補正および回転補正を施しながらの動画再生を安定に行うことが可能となる。しかしながら、他の実施形態では、これらの補正に関わる処理の少なくとも一部が、情報端末１５０側にあることを妨げるものではない。また、情報処理装置として、全天球カメラ１１０でははく、情報端末１５０が実装する機能として、これらの補正に関わる処理（フレームデータ、タイムスタンプおよび傾きデータを記録する部分を除く）の全部が、情報端末１５０側にあることを妨げるものではない。
【００５８】
なお、説明する実施形態では、出力の態様として、全天球動画の画像データを情報端末１５０へ送信するものとしているが、これに限定されるものではない。全天球カメラ１１０が表示装置を備える場合は、その表示装置上で表示する態様とすることもできる。あるいは、全天球動画の画像データを別のファイルとして保存する態様とすることもできる。
【００５９】
以下、図７〜図１３を参照しながら、本実施形態における補正データの再計算方法について、より詳細に説明する。図７は、本実施形態による全天球カメラ１１０が実行する撮像処理を示すフローチャートであり、まず、図７を参照しながら、撮影時の構成について説明する。
【００６０】
図７に示す処理は、全天球カメラ１１０が、動画の撮影要求を受け付けたことに応答して、ステップＳ１００から開始される。ステップＳ１０１では、全天球カメラ１１０は、動画撮影を開始し、ステップＳ１０２〜ステップＳ１０５の処理およびステップＳ１０６〜ステップＳ１０８の処理が並列に行われる。
【００６１】
ステップＳ１０２〜ステップＳ１０５の処理は、動画の各フレームを撮像するとともにタイムスタンプ付きでフレームデータを記録する処理である。
【００６２】
ステップＳ１０２では、全天球カメラ１１０は、全天球動画撮像部２１２により、各フレームの画像を撮像する。全天球カメラ１１０は、タイムスタンプ記録部２１４により、ステップＳ１０３で、露光中心タイミングを計算し、ステップＳ１０４で、露光中心タイミングを示すタイムスタンプをフレームに関連付けて記録する。
【００６３】
図８は、本実施形態による全天球カメラ１１０における露光シーケンス３００および露光中心タイミングの求め方を説明する図である。図８に示すように、動画のフレームは、所定の間隔ＰＦで撮像される。動画の各フレームは、複数の走査線により構成されており、ＣＭＯＳセンサを代表するイメージセンサでは、ローリングシャッター歪みが存在している。これは、画像の読み出しタイミングが走査線ごとにわずかに違うことに起因している。ここで、フレームｘの最初の走査線の露光終了タイミングをＳＯＦ（Start of Frame）とし、最初の走査線と最後の走査線との時間差をローリングシャッター歪み量ＰＲとし、露光時間をＰＥとする。このとき、フレームｘの露光中心タイミングＴ（ｘ）は、下記式（１）で計算することができる。
【００６４】
【数１】
2020068416.tif 000003
【００６５】
ＳＯＦではなく、上記式で算出される露光中心タイミングＴ（ｘ）を基準時刻としてタイムスタンプで記録することにより、フレームに対するより正確な基準時刻を定義することができる。
【００６６】
ここで、再び図７に戻る。ステップＳ１０５では、全天球カメラ１１０は、撮影が終了したか否かを判定し、撮影が終了するまで、所定のフレーム間隔ＰＦあけて、ステップＳ１０２へループさせて、次のフレームの撮像を行う。
【００６７】
一方、ステップＳ１０６〜ステップＳ１０８の処理は、ステップＳ１０２〜ステップＳ１０５で示す動画の各フレームを撮像する処理と並列に行われる、傾きの時系列を記録する処理を示す。
【００６８】
全天球カメラ１１０は、ステップＳ１０６で、姿勢角センサ１３６により傾きを検出し、ステップＳ１０７で、傾き記録部２１６により、タイムスタンプとともにその時点の傾きを記録する。なお、ここで、姿勢角センサ１３６により検出され、傾き記録部２１６により記録される傾きとは、基準方向に対する傾き角や基準方向周りの回転角である。ステップＳ１０８では、全天球カメラ１１０は、撮影が終了したか否かを判定し、撮影が終了するまで、ステップＳ１０６へループさせて、次の時点の傾きの取得および記録を行う。
【００６９】
図９は、本実施形態による全天球カメラにおける傾き情報の取得タイミングを説明する図である。各フレームに対する傾きは、姿勢角センサ１３６の出力から計算されるが、姿勢角センサ１３６のサンプリングから任意のタイミングでタイムスタンプとともに保存することができる。例えば、図９の３２０に示すように、姿勢角センサ１３６のサンプリング周期ＰＳ毎に傾きを取得してもよい。あるいは、図９の３１０に示すように、姿勢角センサ１３６のサンプリング周期ＰＳで取得されたデータに基づいて、さらに、略フレーム周期PＦ毎の傾きとして取得してもよい。
【００７０】
なお、図７においては、説明の便宜上、傾きを記録する処理が一つのループでまとめて描かれているが、傾き角および回転角が、それぞれのサンプリング周期や取得周期で、それぞれ別の時系列データとして記録されることを妨げない。また、説明の便宜上、動画の各フレームを撮像する処理と並列して、基準方向に対する傾き角や基準方向周りの回転角が計算されて、保存されるものとして説明するが、これに限定されない。他の実施形態では、動画の各フレームを撮像する処理と並列して、姿勢角センサ１３６の生のセンサ信号を記録しておき、撮影終了後の任意のタイミングで、各時点の傾き（基準方向に対する傾き角や基準方向周りの回転角）を計算し、傾きの時系列データとして保存することとしてもよい。
【００７１】
ここで、再び図７に戻る。ステップＳ１０５およびステップＳ１０８で撮影が終了すると判定された場合は、ステップＳ１０９へ処理が進められ、本撮像処理は終了する。
【００７２】
図１０（Ａ）は、本実施形態による全天球カメラにおいて記録されるフレーム毎のタイムスタンプを示し、図１０（Ｂ）および（Ｃ）は、記録される傾きのデータ構造を例示する図である。
【００７３】
図１０（Ａ）に示すように、フレームのタイムスタンプデータは動画のフレーム（行番号がフレーム番号に対応する）に対してそれぞれ保存される。図１０（Ｂ）は、略フレーム間隔で記録される傾きの時系列データを例示し、図１０（Ｃ）サンプリング周期毎に記録される傾きの時系列データを例示する。図１０（Ｂ）や（Ｃ）に示すように、補正データでは、タイムスタンプと、対応した傾きの補正値が保存される。なお、図１０（Ｂ）および図１０（Ｃ）は、基準方向に対する傾き角をＸ軸、Ｙ軸およびＺ軸の加速度の次元の値からなるベクトルで表現した例を示す。
【００７４】
図１１は、本実施形態による全天球カメラ１１０が実行する補正データの再計算処理を示すフローチャートである。図１１を参照しながら、撮像後の再計算処理について説明する。なお、本再計算処理の前に、任意のタイミングで、姿勢角センサ１３６の信号の生のデータに基づいて、基準方向に対する傾き角や基準方向周りの回転角が計算されて、時系列データとして準備されているものとする。また、図１１に示す処理は、天頂補正データ再計算部２２２および回転補正データ再計算部２２４が行う、傾き角および回転角の両方に共通したフローとして説明する。天頂補正データ２４４および回転補正データ２４６を総称して、補正データというものとする。
【００７５】
図１１に示す処理は、全天球カメラ１１０が、例えば所定の全天球動画の補正後の動画データを求める要求を受け付けたことに応答して、ステップＳ２００から開始される。全天球カメラ１１０は、ステップＳ２０１では、所定の全天球動画データの最初のフレームを処理対象に設定し、ステップＳ２０２で、処理対象のフレームのタイムスタンプを取得する。
【００７６】
ステップＳ２０３では、全天球カメラ１１０は、処理対象のフレームのタイムスタンプ近傍（前後）にある補正データの補正値を検索する。
【００７７】
傾き角の再計算の場合、ステップＳ２０３では、処理対象フレームｘのタイムスタンプをＴ（ｘ）とし、所定時点ｍの傾き角をＴｉｌｔ（ｍ）とし、そのタイムスタンプをＴｉｌｔ．Ｔ（ｍ）として、下記式（２）を満たす、２つの時点の傾き角Ｔｉｌｔ（ｎ），Ｔｉｌｔ（ｎ−１）を検索する：
【００７８】
【数２】
2020068416.tif 000004
【００７９】
回転角の再計算の場合、ステップＳ２０３では、処理対象フレームｘのタイムスタンプをＴ（ｘ）とし、所定時点ｍの回転角をＡｎｇｌｅ（ｍ）、そのタイムスタンプをＡｎｇｌｅ．Ｔ（ｍ）として、下記式（３）を満たす、２つの時点の回転角Ａｎｇｌｅ（ｎ），Ａｎｇｌｅ（ｎ−１）を検索する。
【００８０】
【数３】
2020068416.tif 000005
【００８１】
ステップＳ２０４では、全天球カメラ１１０は、検索の結果、処理対象のフレームｘが、補正データ中の最初の補正値の前のものであるか否かを判定する。ステップＳ２０４で、処理対象のフレームが、補正データ中の最初の補正値の前のものであると判定された場合（ＹＥＳ）は、ステップＳ２０５へ処理が進められる。ステップＳ２０５では、全天球カメラ１１０は、特に限定されるものではないが、最初の補正値に基づいて処理対象のフレームに対する再計算後の補正値を決定する。
【００８２】
傾き角の再計算の場合であって、Ｔ（ｘ）＜Ｔｉｌｔ.Ｔ（０）の場合、ステップＳ２０５に分岐される。ステップＳ２０５では、処理対象フレームｘの再計算後の補正値Ｚｅｎｉｔｈ（ｘ）は、補正データ中の最初の補正値Ｔｉｌｔ（０）とされ、そのタイムスタンプＺｅｎｉｔｈ．Ｔ（ｘ）は、処理対象フレームのタイムスタンプＴ（ｘ）とされる。回転角の再計算の場合であって、Ｔ（ｘ）＜Ａｎｇｌｅ.Ｔ（０）の場合、ステップＳ２０５に分岐される。ステップＳ２０５では、処理対象フレームｘの再計算後の回転角ＹａｗＡｎｇｌｅ（ｘ）は、補正データ中の最初の補正値Ａｎｇｌｅ（０）とされ、そのタイムスタンプＹａｗＡｎｇｌｅ.Ｔ（ｘ）は、処理対象フレームのタイムスタンプＴ（ｘ）とされる。
【００８３】
一方、ステップＳ２０４で、処理対象のフレームが、補正データ中の最初の値の前のものではないと判定された場合（ＮＯ）は、ステップＳ２０６へ処理が進められる。ステップＳ２０６では、全天球カメラ１１０は、さらに、検索の結果、処理対象のフレームが、補正データ中の最後の値の後のものであるか否かを判定する。ステップＳ２０６で、処理対象のフレームが、補正データ中の最後の値の後のものであると判定された場合（ＹＥＳ）は、ステップＳ２０７へ処理が進められる。ステップＳ２０７では、全天球カメラ１１０は、特に限定されるものではないが、前のフレームの再計算後の補正値に基づいて処理対象のフレームに対する再計算後の補正値を決定する。
【００８４】
傾き角の再計算の場合であって、Ｔ（ｘ）＞Ｔｉｌｔ.Ｔ（ｎＭａｘ）（ここで、ｎＭａｘは傾き角の時系列の最後の番号を意味する。）の場合、ステップＳ２０７に分岐される。ステップＳ２０７では、処理対象フレームｘの再計算後の補正値Ｚｅｎｉｔｈ（ｘ）は、前のフレームの再計算後の補正値Ｚｅｎｉｔｈ（ｘ−１）とされ、そのタイムスタンプＺｅｎｉｔｈ.Ｔ（ｘ）は、処理対象フレームのタイムスタンプＴ（ｘ）とされる。一方、回転角の再計算の場合であって、Ｔ（ｘ）＞Ａｎｇｌｅ.Ｔ（ｎＭａｘ）（ここで、ｎＭａｘは回転角の時系列の最後の番号を意味する。）の場合、ステップＳ２０７に分岐される。ステップＳ２０７では、処理対象フレームｘの再計算後の回転角ＹａｗＡｎｇｌｅ（ｘ）は、前のフレームの再計算後の補正値ＹａｗＡｎｇｌｅ（ｎ−１）とされ、そのタイムスタンプＹａｗＡｎｇｌｅ.Ｔ（ｘ）は、処理対象フレームのタイムスタンプＴ（ｘ）とされる。
【００８５】
一方、ステップＳ２０６で、処理対象のフレームが、補正データ中の最後の値の後のものではないと判定された場合（ＮＯ）は、ステップＳ２０８へ処理が進められる。ステップＳ２０８では、全天球カメラ１１０は、検索された処理対象フレームのタイムスタンプ前後にある複数の補正値を用いて補間し、処理対象のフレームに対する再計算後の補正値を計算する。
【００８６】
図１２および図１３は、本実施形態による全天球カメラ１１０による補正値の再計算の仕方を説明する図である。図１２は、略フレーム周期で補正データが記録される場合を例示し、図１３は、サンプリング周期で補正データが記録される場合を例示する。図１２に示すように、略フレーム周期で補正データが記録される場合、フレームｘに対する補正値３１６は、時系列データ３１０において、フレームｘのタイムスタンプの前後（近傍）にタイムスタンプ３１２ａ，３１２ｂがくる２つの補正値（例えばフレームｘに対応する補正値３１４ａと、フレームｘ＋１に対応する３１４ｂ）を補間計算して求める。サンプリング周期で補正データが記録される場合は、図１３に示すように、フレームｘに対する補正値３２６は、時系列データ３２０において、フレームｘのタイムスタンプの前後（近傍）にタイムスタンプ３２２ａ，３２２ｂがくる２つの補正値３２４ａ，３２４ｂを補間計算して求める。
【００８７】
ここで、補間計算のための基準時刻の近傍の複数の時点は、図１２および図１３での例では、基準時刻を表すフレームｘのタイムスタンプの直前の時点および直後の時点を含むが、これに限定されるものではない。好ましくは、フレームｘのタイムスタンプの直前および直後の各１点を含むが、フレームｘのタイムスタンプの直前および直後でそれぞれ複数点を含んでいてもよい。特に、終端または開始端のフレームについては、直前または直後の一方が存在しない場合もあり得る。
【００８８】
傾き角の再計算の場合であって、上記式（２）を満たす傾き角Ｔｉｌｔ（ｎ），Ｔｉｌｔ（ｎ−１）が見つかった場合に、ステップＳ２０８へ処理が進められる。ステップＳ２０８では、計算後の補正値は、傾き角を表すベクトル同士の線形補間をクォータニオンすることで計算する。ここで、線形補間のためのクォータニオンＲｏｔ（ｘ）の回転軸ＲｏｔＡ（ｘ）および回転角Ｒｏｔθ（ｘ）は、下記式（４）および（５）で計算される。
【００８９】
【数４】
2020068416.tif 000006
【００９０】
なお、ＲｏｔＡ（ｘ）は、１で規格化される。Ｔｉｌｔ（ｎ−１）は１で規格化されているものとする。そして、クォータニオンＲｏｔ（ｘ）を回転軸ＲｏｔＡ（ｘ）および回転角Ｒｏｔθ（ｘ）から生成し、Ｔｉｌｔ（ｎ−１）を回し、回転後のベクトルを計算し、適宜規格化を行って、得られたベクトルをＺｅｎｉｔｈ（ｘ）とする。なお、同じベクトル同士の場合は、｜ＲｏｔＡ（ｘ）｜＝０となるので、例えば、Ｔｉｌｔ（ｎ−１）をそのままＺｅｎｉｔｈ（ｘ）とすればよい。タイムスタンプＺｅｎｉｔｈ.Ｔ（ｘ）は、処理対象フレームのタイムスタンプＴ（ｘ）である。
【００９１】
一方、回転角の再計算の場合、上記式（３）を満たす回転角Ａｎｇｌｅ（ｎ），Ａｎｇｌｅ（ｎ−１）が見つかった場合に、ステップＳ２０８へ処理が進められる。ステップＳ２０８では、計算後の補正値は、スカラー同士の線形補間を計算することができる。再計算後の回転角ＹａｗＡｎｇｌｅ（ｘ）は、下記式（６）で計算される。
【００９２】
【数５】
2020068416.tif 000007
【００９３】
なお、最初のフレームの再計算後の回転角ＹａｗＡｎｇｌｅ（０）を０とするために、全体でＹａｗＡｎｇｌｅ’（ｘ）＝ＹａｗＡｎｇｌｅ（ｘ）−ＹａｗＡｎｇｌｅ（０）とし、ＹａｗＡｎｇｌｅ’（ｘ）を最終的な回転角とすることができる。また、全天球カメラ１１０が上下反転状態で撮影されたと判定される場合には、ＹａｗＡｎｇｌｅ’’（ｘ）＝ＹａｗＡｎｇｌｅ（ｘ）−ＹａｗＡｎｇｌｅ（０）＋１８０°とし、ＹａｗＡｎｇｌｅ’’（ｘ）を最終的な回転角とすることができる。
【００９４】
再び図１１に戻る。ステップ２０５、ステップＳ２０７およびステップＳ２０８で、当該処理対象のフレームに対し再計算後の補正値が求められると、ステップＳ２０９へ処理が進められる。ステップＳ２０９では、全天球カメラ１１０は、最終フレームに到達したか否かを判定する。ステップＳ２０９で、最終フレームに到達していないと判定され場合（ＮＯ）、ステップＳ２１０へ分岐されて、次のフレームに処理対象を移した後、ステップＳ２０２へループさせる。一方、ステップＳ２０９で、最終フレームに到達したと判定され場合（ＹＥＳ）、ステップＳ２１１へ分岐させて、本再計算処理を終了させる。その後、適宜、天頂補正および回転補正が行われることになる。
【００９５】
なお、上述した実施形態では、動画の各フレームの基準時刻は、フレーム全体の露光中心タイミングとして、フレーム単位で求められるものであり、動画の各フレームの画像に対し、フレーム単位で傾き補正がかけられるものであった。しかしながら、他の実施形態では、動画の各フレームの基準時刻を、より精細に、各フレームの画像を構成する複数の走査線各々に対して求めることもできる。そして、この走査線毎に求められた基準時刻毎に補正値を再計算し、動画の各フレームを構成するライン各々に対し、走査線単位、または、複数の走査線単位で、各基準時刻での補正値に基づき傾き補正をかけることができる。
【００９６】
図１４は、他の実施形態による全天球カメラによる走査線毎の補正データの求め方を説明する図である。図８を参照して説明した実施形態では、露光中心タイミングは、フレーム全体に対して計算されるものであった。フレーム全体の露光中心タイミングは、中央の走査線の露光中心タイミングに概ね一致する。これに対し、図１４に示す他の実施形態では、走査線毎に露光中心タイミングを計算する。例えば、最初の走査線をＮＳｔａｒｔ、最後の走査線をＮＥｎｄとして、ＮＳｔａｒｔからＮＥｎｄまで順次各走査線について、ローリングシャッター歪み量ＰＲ（あるいは走査線毎のシフト量）に基づいて、各走査線毎の露光中心タイミングを計算することができる。例えば、最初および最後の走査線ＮＳｔａｒｔ，ＮＥｎｄに対する露光中心タイミングは、フレーム全体の露光中心タイミングＴ（ｘ）から、ＰＲ／２前後したタイミング（Ｔ（ｘ）−ＰＲ，Ｔ（ｘ）＋ＰＲ）として計算することができる。そして、各走査線の露光中心タイミングに対し、それぞれ補正値を計算することができる。その際には、各走査線毎の露光中心タイミングに対し、上述した方法によって補正値を計算してもよいし、あるいは、最初の走査線ＮＳｔａｒｔおよび最後の走査線をについて計算された補正値を線形補間することによって、中間の走査線の補正値を求めることもできる。また、ローリングシャッターのセンサー方向と対応したモーションセンサーの出力から、振れ補正データの線形補間の傾きを求めてもよい。
【００９７】
以下、図１５を参照しながら、図１４に示すように走査線毎に補正値が求められた場合の補正方法について説明する。図１５は、本実施形態における全天球画像の変換テーブルおよび走査線毎の補正値に応じた補正方法を説明する図である。図１５（Ａ）は、変換前後の画像座標値のマトリクスを示した変換テーブルを説明する図である。また、図１５（Ｂ）は、変換後画像の座標値および変換前画像の座標値の関係を説明する図である。
【００９８】
上述した変換テーブルは、図１５（Ａ）に示すように、変換後画像の座標値（全天球画像の球面上の座標）である（θ，φ）（ｐｉｘ：ピクセル）と、それに対応する変換前画像の座標値（魚眼レンズで撮影された部分（魚眼）画像の平面座標）である（ｘ，ｙ）（ｐｉｘ）とのデータセットを、すべての変換後画像の座標値に対して有するものである。ここで、説明する実施形態では、変換テーブルとして、テーブル状のデータ構造を示しているが、必ずしもテーブル状のデータ構造でなくてもかまわない。つまり、変換データであればよい。
【００９９】
図１５（Ａ）に示した変換テーブルに従って、撮像された部分画像（変換前画像）から変換後画像を生成することができる。具体的には、図１５（Ｂ）に示すように、変換前と変換後の変換テーブル（図１５（Ａ））の対応関係から、変換後画像の各画素を、座標値（θ，φ）（ｐｉｘ）に対応する変換前画像の座標値（ｘ，ｙ）（ｐｉｘ）の画素値を参照することによって、変換後の全天球画像を生成することができる。
【０１００】
この際に、変換テーブルを、上記天頂補正および回転補正を反映させるように作り直し、修正後の変換テーブルを用いて、魚眼画像から全天球画像を生成することによって、上記天頂補正および回転補正が反映された全天球画像を得ることができる。
【０１０１】
より具体的には、画像全体にある補正値で天頂補正をかける場合は、補正後の変換テーブルの全天球画像の各座標値（θ’，φ’）に対し、初期の変換テーブルにおいてそこから補正値に応じて回転させた座標値（θ＋Δθ，φ＋Δφ）に関連づけられている魚眼画像の画素の座標値（θ，φ）を対応付け直すことによって、補正後の変換テーブルが生成される。
【０１０２】
一方、走査線毎に異なる補正値が与えられる場合は、初期の変換テーブルにおいて、全天球画像の各座標値（θ，φ）に対し初期の魚眼画像の画素の座標値（ｘ，ｙ）が関連付けられているので、その関連付けられた画素が属している走査線ｙに応じた補正値（ｙ）を求める。そして、補正後の変換テーブルの全天球画像の各座標値（θ’，φ’）に対し、そこから走査線に応じた補正値（ｙ）に基づいて回転させた座標値（θ＋Δθ（ｙ），φ＋Δφ（ｙ））に初期の変換テーブルにおいて関連づけられている魚眼画像の画素の座標を対応付け直す。これにより、走査線毎に異なる補正値が与えられても、矛盾がない一枚の全天球画像が得られることになる。
【０１０３】
図１４および図１５に示すように、１または複数の走査線単位で、個別に補正値を再計算し、適用することによって、撮像素子の中央に対応する部分のみならず、撮像素子の端部に近い部分に対しても、適切な補正をかけることが可能となる。
【０１０４】
上述までの説明では、基準方向周りの回転角は、所定の方法で既に求められることを前提として説明した。以下、基準方向周りの回転角を、角速度センサの出力を用いた計算方法について補足する。
【０１０５】
まず、上述した天頂補正データ２４４および角速度の時系列データが与えられているとする。天頂補正データ２４４のうちの先頭フレームの傾き角ベクトルＴｉｌｔ（０）に基づいて、先頭フレーム時点での全天球カメラ１１０の正面方向Ｖ（０）を計算する。まず、先頭フレームの傾き角ベクトルＴｉｌｔ（０）と、重力方向ベクトルＧ＝（０，０，１）とのクォータニオンＱ（０）が生成される。なお、全天球カメラ１１０が上下反転状態で撮影されたと判断される場合は、重力方向ベクトルＧ＝（０，０，−１）として計算する。クォータニオンＱ（０）の回転軸Ａ（０）および回転角θ（０）は、下記式（７）および（８）で表される。そして、クォータニオンＱ（０）は、回転軸Ａ（０）周りの回転角θ（０）の回転を表す。
【０１０６】
【数６】
2020068416.tif 000008
【０１０７】
なお、重力方向ベクトルＧと傾き角ベクトルＴｉｌｔ（０）とが同一である場合、Ａ（０）＝（０，１，０）および回転角θ（０）＝０でクォータニオンＱ（０）を生成する。そして、得られたクォータニオンＱ（０）でグローバル正面ベクトル（０，１，０）を回転させて、全天球カメラ１１０の正面方向ベクトルの初期値Ｖ（０）を求める。そして、角速度の時系列データに基づいて、それぞれフレームに対応する複数の時点にわたる全天球カメラ１１０の正面方向ベクトルＶ（ｎ）の時系列を計算する。各時点の正面方向ベクトルＶ（ｎ）は、角速度データにおけるサンプリング間の時間差を求め、３軸周りの角速度Ｇｙｒｏ（ｎ）に応じた無限小回転をサンプリング毎に積算することにより、計算することができる。そして、先頭フレームの時点の正面方向ベクトルＶ（０）を起点として正面方向ベクトルＶ（ｎ）の時系列が計算される。続いて、各フレームに対応するカメラ正面方向ベクトルＶ（ｎ）を探し、天頂補正データ２４４に基づいて、回転補正のための補正角度を計算する。角速度の時系列データは、典型的にはフレームレートと異なるサンプリングレートを有し、ここでは、天頂補正データ２４４の各フレームとタイムスタンプと近い正面方向ベクトルＶが探索される。
【０１０８】
ここで、ｍ番目のフレームに対する正面方向ベクトルがＶ（ｎ）であったとする。まず、ｍ番目のフレームの傾き角ベクトルＴｉｌｔ（ｍ）から求められるクォータニオンＱ（ｍ）を計算する。このクォータニオンＱ（ｍ）の回転軸Ａ（ｍ）および回転角θ（ｍ）は、上記式（７）および（８）と同様に、下記式（９）および（１０）で表される。
【０１０９】
【数７】
2020068416.tif 000009
【０１１０】
そして、クォータニオンＱ（ｍ）でｍ番目のフレームに対する正面方向ベクトルがＶ（ｎ）を回転させて、Ｖ’（ｎ）を求める。そして、得られたベクトルＶ’（ｎ）に基づいて、グローバル座標のＸＹ平面内で、補正角度ＰｒｅＡｎｇｌｅ（ｎ）を下記式（１１）により求める。
【０１１１】
【数８】
2020068416.tif 000010
【０１１２】
ここで、上記式（１１）中の関数Ｍａｔｈ.ａｔａｎ２（ｙ座標，ｚ座標）は、逆正接を−１８０度〜１８０度（−π〜π）の範囲で返す関数である。
【０１１３】
そして、ハイパスフィルタの前処理として、求められた補正角度を連続性が維持されるように調整し、調整後の補正角ＡｎｇｌｅＩｎ（ｎ）を計算する。
【０１１４】
説明する実施形態において、補正角度ＰｒｅＡｎｇｌｅ（ｎ）は、逆正接により、−１８０度〜＋１８０度の定義域の範囲内の値として求められる。このため、補正角度ＰｒｅＡｎｇｌｅ（ｎ）は、時系列としてみたときに、＋１８０度近傍から−１８０度近傍へ（あるいは反対方向に）飛んでしまう場合がある。下記疑似コードで表すように、補正角度ＰｒｅＡｎｇｌｅ（ｎ）の前後の変化量から補正角度が定義域をまたいで変化したことが検知され、調整値が加算または減算される。なお、下記疑似コード中、ｔｈｒｅｓｈｏｌｄは、補正角度が定義域をまたいで変化したことを検知するための変化量に対する閾値である。また、最後のコードのＰｒｅＡｎｇｌｅ（０）は、上記式（５）で求められる補正角度の初期値であり、これを基準に補正が行われることを示している。
【０１１５】
【数９】
2020068416.tif 000011
【０１１６】
そして、注目フレームの時点の調整された補正角度ＡｎｇｌｅＩｎ（ｎ）に対し、高周波成分を通過させるハイパスフィルタ処理を施し、フィルタ処理後の補正角度ＡｎｇｌｅＯｕｔ（ｎ）を求める。ハイパスフィルタ通過後の補正角度ＡｎｇｌｅＯｕｔ（ｎ）は、下記式にて計算することができる。なお、下記式中Ｐは、サンプリング周期であり、Ｈｃは、カットオフ周波数である。
【０１１７】
【数１０】
2020068416.tif 000012
【０１１８】
そして、得られたＡｎｇｌｅＯｕｔ（ｎ）が、上述した再計算前の回転補正の補正値（Ａｎｇｌｅ（ｎ））となり、これに基づいて、再計算が行われる。
【０１１９】
以上説明したように、上述までの実施形態によれば、撮像される動画において、各フレームと、傾き補正の補正データとの同期の精度を向上することが可能な、撮像装置、情報処理装置、補正値計算方法およびプログラムを提供することが可能となる。
【０１２０】
上述した実施形態においては、各フレームの基準時刻に対する補正値が、前後の補正値から補間計算により求められる。このため、フレームと、補正値との同期が精度高く行われる。そして、その再計算された補正データで補正処理を行うことで、傾き補正の性能を高めることが可能となる。
【０１２１】
なお、本実施形態のよる全天球カメラ1１０は、複数の（より具体的には２つ）撮像素子２２Ａ，２２Ｂを備えるものであり、この複数の撮像素子２２Ａ，２２Ｂは、互いに同期して各魚眼画像を撮像する。一方、上述したフレームの基準時刻（例えば露光タイミング）は、必ずしも、各撮像素子２２に求める必要はない。好ましい実施形態では、一方の撮像素子２２Ａについて求めたフレームの基準時刻を、他方の撮像素子２２Ｂで撮像したフレームに対しても適用することができ、この基準時刻に基づいて天頂補正データ２４４および回転補正データ２４６が再計算することができる。したがって、本実施形態によれば、複数の撮像素子２２のうち1つに対して同期を取ることで、自動的にもう1つの撮像素子に対しても同期を取ることが可能になり、同期を取る処理を片側だけで処理することで処理の簡略化、負荷の軽減および高速化を図ることができる。したがって、本実施形態による処理は、複数の撮像素子を備える撮像装置に対して好適に適用することができるといえる。
【０１２２】
なお、上述した実施形態では、１８０度より大きな画角を有するレンズ光学系で撮像された２つの部分画像を重ね合わせて合成するものとしたが、これに限定されない。他の実施形態では、１または複数のレンズ光学系により撮像された３以上の部分画像の重ね合わせ合成に適用してもよい。また、上述した実施形態では、魚眼レンズを用いた撮像システムを一例に説明してきたが、超広角レンズを用いた全天球動画撮像システムに適用してもよい。さらに、傾き補正としては、全天球画像に対する天頂補正および回転補正に限定されるものではなく、他の画像の傾き補正一般に拡張することも企図される。
【０１２３】
また、上記機能部は、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ブルーレイディスク、ＳＤカード、ＭＯなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。また、上記機能部の一部または全部は、例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのプログラマブル・デバイス（ＰＤ）上に実装することができ、あるいはＡＳＩＣ（特定用途向集積）として実装することができ、上記機能部をＰＤ上に実現するためにＰＤにダウンロードする回路構成データ（ビットストリームデータ）、回路構成データを生成するためのＨＤＬ（Hardware Description Language）、ＶＨＤＬ（Very High Speed Integrated Circuits Hardware Description Language）、Ｖｅｒｉｌｏｇ−ＨＤＬなどにより記述されたデータとして記録媒体により配布することができる。
【０１２４】
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【０１２５】
１２…撮像体、１４…筐体、１８…シャッター・ボタン、２０…結像光学系、２２，１３０…撮像素子、１１０…全天球カメラ、１１２，１５２…ＣＰＵ、１１４…ＲＯＭ、１１６…画像処理ブロック、１１８…動画圧縮ブロック、１２０，１２６…インタフェース、１２２…外部ストレージインタフェース、１２４…外部センサインタフェース、１２６…ＵＳＢインタフェース、１２８…シリアルブロック、１３２…ＤＲＡＭ、１３４，１６０…外部ストレージ、１３６…姿勢角センサ、１３８，１６６…ＵＳＢコネクタ、１５０…情報端末、１５４…ＲＡＭ、１５６…内部ストレージ、１５８…入力装置、１６２…ディスプレイ、１６４…無線ＮＩＣ、２１０，２５０…機能ブロック、２１２…全天球動画撮像部、２１４…タイムスタンプ記録部、２１６…傾き記録部、２１８…記憶部、２２０…天頂・回転補正部、２２２…天頂補正データ再計算部、２２４…回転補正データ再計算部、２４０…全天球画像データ、２４２…全天球フレームデータ、２４４…天頂補正データ、２４６…回転補正データ
【先行技術文献】
【特許文献】
【０１２６】
【特許文献１】国際公開第２０１７／０１４０７１号
【図１】
2020068416.tif 000013
【図２】
2020068416.tif 000014
【図３】
2020068416.tif 000015
【図４】
2020068416.tif 000016
【図５】
2020068416.tif 000017
【図６】
2020068416.tif 000018
【図７】
2020068416.tif 000019
【図８】
2020068416.tif 000020
【図９】
2020068416.tif 000021
【図１０】
2020068416.tif 000022
【図１１】
2020068416.tif 000023
【図１２】
2020068416.tif 000024
【図１３】
2020068416.tif 000025
【図１４】
2020068416.tif 000026
【図１５】
2020068416.tif 000027