(57)【要約】【課題】  全方位画像を高速で高画質の２次元平面画像に変換させるようにする。【解決手段】  分担決定部１０４の負荷計算部１６１は、負荷分布テーブル１３１に基づいて、マッピングアルゴリズム毎の処理時間を負荷として計算する。比率計算部１６２は、処理時間に基づいて、マッピングアルゴリズム毎の負荷の比率を計算する。分担確定部１６３は、負荷の比率の情報に基づいて、サブプロセッサ４３の処理分担を決定する。振分部１０５は、処理分担の情報に基づいて、マッピングアルゴリズムのプログラムを各サブプロセッサ４３に供給する。サブプロセッサ４３は、各処理分担となるマッピングアルゴリズムの処理を実行し、処理結果を処理結果画像データFIFO部１４３に記憶させる。画像再生処理部１０６は、処理結果画像データFIFO部１４３より処理結果となる２次元平面画像を合成し、表示部１７１に表示させる。【選択図】図７
2006011696.tif 000002
【特許請求の範囲】
【請求項１】
全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理を実行する複数の変換手段と、
前記アルゴリズム毎の前記全方位画像から前記２次元平面画像への変換の負荷を計算する負荷計算手段と、
前記負荷計算手段の計算結果に基づいて、前記全方位画像を前記２次元平面画像へと変換する全ての変換処理に対する前記アルゴリズム毎の負荷の比率を計算する比率計算手段と、
前記比率計算手段により計算された前記アルゴリズム毎の負荷の比率に基づいて、前記複数の変換手段のそれぞれの変換処理の分担として前記全方位画像中の範囲およびアルゴリズムを決定する分担決定手段とを備え、
前記複数の変換手段は、それぞれ前記分担決定手段により決定された前記全方位画像中の範囲を、前記分担決定手段により決定されたアルゴリズムで、前記２次元平面画像に変換する変換処理を実行する
ことを特徴とする情報処理装置。
【請求項２】
前記負荷計算手段は、前記アルゴリズム毎の１ピクセルの処理時間に基づいて、前記アルゴリズム毎の処理時間を、前記アルゴリズム毎の負荷として計算する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記２次元平面画像は、前記全方位画像中の範囲に応じて解像度が異なる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記２次元平面画像は、前記全方位画像中の被写体が存在する位置に対して近い範囲が高解像度に設定され、前記被写体が存在する位置から遠い範囲では低解像度となる
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理を実行する複数の変換ステップと、
前記アルゴリズム毎の前記全方位画像から前記２次元平面画像への変換の負荷を計算する負荷計算ステップと、
前記負荷計算ステップの処理の計算結果に基づいて、前記全方位画像を前記２次元平面画像へと変換する全ての変換処理に対する前記アルゴリズム毎の負荷の比率を計算する比率計算ステップと、
前記比率計算ステップの処理で計算された前記アルゴリズム毎の負荷の比率に基づいて、前記複数の変換ステップの処理のそれぞれの変換処理の分担として前記全方位画像中の範囲およびアルゴリズムを決定する分担決定ステップとを含み、
前記複数の変換ステップの処理は、それぞれ前記分担決定ステップの処理で決定された前記全方位画像中の範囲を、前記分担決定ステップの処理で決定されたアルゴリズムで、前記２次元平面画像に変換する変換処理を実行する
ことを特徴とする情報処理方法。
【請求項６】
全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理の実行を制御する複数の変換制御ステップと、
前記アルゴリズム毎の前記全方位画像から前記２次元平面画像への変換の負荷の計算を制御する負荷計算制御ステップと、
前記負荷計算制御ステップの処理の計算結果に基づいて、前記全方位画像を前記２次元平面画像へと変換する全ての変換処理に対する前記アルゴリズム毎の負荷の比率の計算を制御する比率計算制御ステップと、
前記比率計算制御ステップの処理で計算された前記アルゴリズム毎の負荷の比率に基づいた、前記複数の変換ステップの処理のそれぞれの変換処理の分担として前記全方位画像中の範囲およびアルゴリズムの決定を制御する分担決定制御ステップとを含み、
前記複数の変換制御ステップの処理は、それぞれ前記分担決定制御ステップの処理で決定された前記全方位画像中の範囲を、前記分担決定制御ステップの処理で決定されたアルゴリズムで、前記２次元平面画像に変換する変換処理を実行する
ことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項７】
全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理の実行を制御する複数の変換制御ステップと、
前記アルゴリズム毎の前記全方位画像から前記２次元平面画像への変換の負荷の計算を制御する負荷計算制御ステップと、
前記負荷計算制御ステップの処理の計算結果に基づいて、前記全方位画像を前記２次元平面画像へと変換する全ての変換処理に対する前記アルゴリズム毎の負荷の比率の計算を制御する比率計算制御ステップと、
前記比率計算制御ステップの処理で計算された前記アルゴリズム毎の負荷の比率に基づいた、前記複数の変換ステップの処理のそれぞれの変換処理の分担として前記全方位画像中の範囲およびアルゴリズムの決定を制御する分担決定制御ステップとをコンピュータに実行させ、
前記複数の変換制御ステップの処理は、それぞれ前記分担決定制御ステップの処理で決定された前記全方位画像中の範囲を、前記分担決定制御ステップの処理で決定されたアルゴリズムで、前記２次元平面画像に変換する変換処理を実行する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、全方位画像を、より高解像度の２次元平面画像に高速で変換できるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
図１や図２で示されるような全方位画像を２次元平面画像に変換する技術が一般に普及しつつある。ここで、図１は、図中の水平方向に360°の視点で表示された全方位画像である。また、図２は、図中の上段と下段でそれぞれ180°ずつの視点で表示された全方位画像である。
【０００３】
一般に、画像は解像度が高い程、高画質化が図れるため、高解像度化が図られる。しかしながら、画像のエンコードにおいては、高解像度化を図るとビットレートが高くなり、処理すべきデータが膨大なものとなる。結果として、膨大な量のデータをリアルタイムでデコードする必要があるため、再生時には、デコード処理に係る負荷が大きなものとなる。
【０００４】
デコード処理の負荷を抑えて処理の高速化を図るものとして、コンテンツに対応するヘッダ情報として、画像の横サイズおよび縦サイズ、画像の深さ（色を表現するビット数）、データセグメント中の最大画像データサイズ、および、データセグメント中の最大音声データサイズの各情報を含むデータを格納し、セグメント情報として、データセグメント内の先頭フレーム番号、データセグメント内フレーム数、各デリミタのデータ先頭からの相対アドレス情報を含む構成とし、これらのキャッシュ情報を適用したメモリ（FIFO：First In First Out）を設定することで、データの読み出しと、再生処理の高速化を図るものが提案されている（特許文献１参照）。
【０００５】
【特許文献１】特開２００４−１４０５７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の手法においては、デコードそのものの高速化は図れるものの、全方位画像を高速で２次元平面画像に変換する処理を高速化することができないという課題があった。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、特に、全方位画像を、より高解像度の２次元平面画像に、より高速で変換できるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理を実行する複数の変換手段と、アルゴリズム毎の全方位画像から２次元平面画像への変換の負荷を計算する負荷計算手段と、負荷計算手段の計算結果に基づいて、全方位画像を２次元平面画像へと変換する全ての変換処理に対するアルゴリズム毎の負荷の比率を計算する比率計算手段と、比率計算手段により計算されたアルゴリズム毎の負荷の比率に基づいて、複数の変換手段のそれぞれの変換処理の分担として全方位画像中の範囲およびアルゴリズムを決定する分担決定手段とを備え、複数の変換手段は、それぞれ分担決定手段により決定された全方位画像中の範囲を、分担決定手段により決定されたアルゴリズムで、２次元平面画像に変換する変換処理を実行することを特徴とする。
【０００９】
負荷計算手段には、アルゴリズム毎の１ピクセルの処理時間に基づいて、アルゴリズム毎の処理時間を、アルゴリズム毎の負荷として計算させるようにすることができる。
【００１０】
前記２次元平面画像は、全方位画像中の範囲に応じて解像度が異なるようにすることができる。
【００１１】
前記２次元平面画像は、全方位画像中の被写体が存在する位置に対して近い範囲が高解像度に設定され、被写体が存在する位置から遠い範囲では低解像度となるようにすることができる。
【００１２】
本発明の情報処理方法は、全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理を実行する複数の変換ステップと、アルゴリズム毎の全方位画像から２次元平面画像への変換の負荷を計算する負荷計算ステップと、負荷計算ステップの処理の計算結果に基づいて、全方位画像を２次元平面画像へと変換する全ての変換処理に対するアルゴリズム毎の負荷の比率を計算する比率計算ステップと、比率計算ステップの処理で計算されたアルゴリズム毎の負荷の比率に基づいて、複数の変換ステップの処理のそれぞれの変換処理の分担として全方位画像中の範囲およびアルゴリズムを決定する分担決定ステップとを含み、複数の変換ステップの処理は、それぞれ分担決定ステップの処理で決定された全方位画像中の範囲を、分担決定ステップの処理で決定されたアルゴリズムで、２次元平面画像に変換する変換処理を実行することを特徴とする。
【００１３】
本発明の記録媒体のプログラムは、全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理の実行を制御する複数の変換制御ステップと、アルゴリズム毎の全方位画像から２次元平面画像への変換の負荷の計算を制御する負荷計算制御ステップと、負荷計算制御ステップの処理の計算結果に基づいて、全方位画像を２次元平面画像へと変換する全ての変換処理に対するアルゴリズム毎の負荷の比率の計算を制御する比率計算制御ステップと、比率計算制御ステップの処理で計算されたアルゴリズム毎の負荷の比率に基づいた、複数の変換ステップの処理のそれぞれの変換処理の分担として全方位画像中の範囲およびアルゴリズムの決定を制御する分担決定制御ステップとを含み、複数の変換制御ステップの処理は、それぞれ分担決定制御ステップの処理で決定された全方位画像中の範囲を、分担決定制御ステップの処理で決定されたアルゴリズムで、２次元平面画像に変換する変換処理を実行することを特徴とする。
【００１４】
本発明のプログラムは、全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理の実行を制御する複数の変換制御ステップと、アルゴリズム毎の全方位画像から２次元平面画像への変換の負荷の計算を制御する負荷計算制御ステップと、負荷計算制御ステップの処理の計算結果に基づいて、全方位画像を２次元平面画像へと変換する全ての変換処理に対するアルゴリズム毎の負荷の比率の計算を制御する比率計算制御ステップと、比率計算制御ステップの処理で計算されたアルゴリズム毎の負荷の比率に基づいた、複数の変換ステップの処理のそれぞれの変換処理の分担として全方位画像中の範囲およびアルゴリズムの決定を制御する分担決定制御ステップとをコンピュータに実行させ、複数の変換制御ステップの処理は、それぞれ分担決定制御ステップの処理で決定された全方位画像中の範囲を、分担決定制御ステップの処理で決定されたアルゴリズムで、２次元平面画像に変換する変換処理を実行することを特徴とする。
【００１５】
本発明の情報処理装置および方法、並びにプログラムにおいては、全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理が実行され、アルゴリズム毎の全方位画像から２次元平面画像への変換の負荷が計算され、計算結果に基づいて、全方位画像を２次元平面画像へと変換する全ての変換処理に対するアルゴリズム毎の負荷の比率が計算され、計算されたアルゴリズム毎の負荷の比率に基づいて、複数のそれぞれの変換処理の分担として全方位画像中の範囲およびアルゴリズムが決定され、複数の決定された全方位画像中の範囲が、それぞれ決定されたアルゴリズムで、２次元平面画像に変換する変換処理が実行される。
【００１６】
本発明の情報処理装置は、独立した装置であっても良いし、情報処理を行うブロックであっても良い。
【発明の効果】
【００１７】
本発明によれば、全方位画像をより高解像度の２次元平面画像により高速で変換することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００１９】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００２０】
即ち、本発明の情報処理装置は、全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理を実行する複数の変換手段（例えば、図７のサブプロセッサ４３−１乃至４３−Ｎ）と、アルゴリズム毎の全方位画像から２次元平面画像への変換の負荷を計算する負荷計算手段（例えば、図７の負荷計算部１６１）と、負荷計算手段の計算結果に基づいて、全方位画像を２次元平面画像へと変換する全ての変換処理に対するアルゴリズム毎の負荷の比率を計算する比率計算手段（例えば、図７の比率計算部１６２）と、比率計算手段により計算されたアルゴリズム毎の負荷の比率に基づいて、複数の変換手段のそれぞれの変換処理の分担として全方位画像中の範囲およびアルゴリズムを決定する分担決定手段（例えば、図７の分担確定部１６３）とを備え、複数の変換手段（例えば、図７のサブプロセッサ４３−１乃至４３−Ｎ）は、それぞれ分担決定手段（例えば、図７の分担確定部１６３）により決定された全方位画像中の範囲を、分担決定手段（例えば、図７の分担確定部１６３）により決定されたアルゴリズムで、２次元平面画像に変換する変換処理を実行することを特徴とする。
【００２１】
本発明の情報処理方法は、全方位画像の所定の範囲を所定のアルゴリズムで２次元平面画像に変換する変換処理を実行する複数の変換ステップ（例えば、図１６のフローチャートのステップＳ５４乃至Ｓ５８の処理）と、アルゴリズム毎の全方位画像から２次元平面画像への変換の負荷を計算する負荷計算ステップ（例えば、図１６のフローチャートのステップＳ３１の処理）と、負荷計算ステップの処理の計算結果に基づいて、全方位画像を２次元平面画像へと変換する全ての変換処理に対するアルゴリズム毎の負荷の比率を計算する比率計算ステップ（例えば、図１６のフローチャートのステップＳ３２の処理）と、比率計算ステップの処理で計算されたアルゴリズム毎の負荷の比率に基づいて、複数の変換ステップの処理のそれぞれの変換処理の分担として全方位画像中の範囲およびアルゴリズムを決定する分担決定ステップ（例えば、図１６のフローチャートのステップＳ３３の処理）とを含み、複数の変換ステップの処理は、それぞれ分担決定ステップの処理で決定された全方位画像中の範囲を、分担決定ステップの処理で決定されたアルゴリズムで、２次元平面画像に変換する変換処理を実行することを特徴とする。
【００２２】
尚、記録媒体、および、プログラムについては、情報処理方法と同様であるので、その説明は省略する。
【００２３】
図３は、本発明を適用した情報処理装置１の一実施の形態を示す図である。
【００２４】
情報処理装置１１は、ドライブ３８に装着された磁気ディスク６１、光ディスク６２、光磁気ディスク６３、あるいは半導体メモリ６４などに記録された全方位画像、または、通信部３５を介して、図示せぬネットワークより他の情報処理装置から供給されてくる全方位画像をフルフレーム（例えば、30fps）の２次元平面画像に変換し表示する。
【００２５】
情報処理装置１１は、情報処理コントローラ３１、メインメモリ３２、記録部３３−１、記録部３３−２、バス３４、出力部３６、通信部３５、およびドライブ３８を含むように構成される。
【００２６】
情報処理コントローラ３１は、メインメモリ３２に記録されている各種のプログラムを実行し、情報処理装置１１全体を制御する。情報処理コントローラ３１は、キーボード、ボタン、または、マウスなどからなる入力部３７がユーザにより操作され、対応する操作信号が発生されるとき、その操作信号に対応した指令に基づいて、指定されたデータを、メインメモリ３２、記録部３３−１または記録部３３−２から取得し、取得したデータをバス３４を介して出力部３６に供給する。
【００２７】
また、情報処理コントローラ３１には、情報処理装置１１を、図示せぬ通信網を通して一意に特定できる装置IDが割り当てられている。
【００２８】
情報処理コントローラ３１は、バス４１、メインプロセッサ４２、サブプロセッサ４３−１乃至４３−N、DMAC（Direct Memory Access Controller）４４、キー管理テーブル記録部４５、およびＤＣ（Disk Controller）４６を備えている。
【００２９】
メインプロセッサ４２、サブプロセッサ４３−１乃至４３−N、DMAC４４、キー管理テーブル記録部４５、およびDC４６は、バス４１を介して、相互に接続されている。また、メインプロセッサ４２には、メインプロセッサ４２を特定するためのメインプロセッサIDが識別子として割り当てられる。同様に、サブプロセッサ４３−１乃至４３−Nのそれぞれには、サブプロセッサ４３−１乃至４３−Nのそれぞれを特定するためのサブプロセッサIDのそれぞれが識別子として割り当てられる。
【００３０】
メインプロセッサ４２は、サブプロセッサ４３−１乃至４３−Nによるプログラムの実行のスケジュール管理および情報処理コントローラ３１（情報処理装置１１）の全体の管理を行う。メインプロセッサ４２は、ローカルストレージ５１−１を備え、メインメモリ３２からロードしたデータおよびプログラムを、ローカルストレージ５１−１に一時的に記憶させる。メインプロセッサ４２は、ローカルストレージ５１−１からデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
【００３１】
メインプロセッサ４２は、図示せぬ通信網を介して接続されている、分散処理装置に分散処理を実行させる場合、ソフトウェアセルを生成し、生成したソフトウェアセルをバス４１およびバス３４を介して、通信部３５に供給する。また、メインプロセッサ４２は、管理のためのプログラム以外のプログラムを実行するように構成することもできる。この場合、メインプロセッサ４２は、サブプロセッサとして機能する。
【００３２】
サブプロセッサ４３−１乃至４３−Nは、メインプロセッサ４２の制御の基、並列的かつ独立に、プログラムを実行し、データを処理する。さらに、必要に応じて、メインプロセッサ４２が実行するプログラムが、サブプロセッサ４３−１乃至４３−Nのそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
【００３３】
サブプロセッサ４３−１乃至４３−Nのそれぞれは、ローカルストレージ５１−２乃至５１−（Ｎ＋１）のそれぞれを備える。サブプロセッサ４３−１乃至４３−Nのそれぞれは、ローカルストレージ５１−２乃至５１−（Ｎ＋１）のそれぞれに、必要に応じて、データおよびプログラムを一時的に記憶させる。サブプロセッサ４３−１乃至４３−Nのそれぞれは、ローカルストレージ５１−２乃至５１−（Ｎ＋１）のそれぞれからデータおよびプログラムを読み込み、読み込んだデータおよびプログラムを基に、各種の処理を実行する。
【００３４】
以下、サブプロセッサ４３−１乃至４３−Nのそれぞれを個々に区別する必要のないとき、単にサブプロセッサ４３と称する。同様に、以下、ローカルストレージ５１−１乃至５１−（Ｎ＋１）のそれぞれを個々に区別する必要のないとき、単にローカルストレージ５１と称する。尚、その他の構成についても、同様に称するものとする。
【００３５】
DMAC４４は、キー管理テーブル記録部４５に記録されている、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを基に、メインプロセッサ４２およびサブプロセッサ４３からのメインメモリ３２に記憶されているプログラムおよびデータへのアクセスを管理する。
【００３６】
キー管理テーブル記録部４５は、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを記録している。なお、メインプロセッサキー、サブプロセッサキー、およびアクセスキーの詳細は後述する。
【００３７】
DC４６は、メインプロセッサ４２およびサブプロセッサ４３からの記録部３３−１，３３−２へのアクセスを管理する。
【００３８】
メインメモリ３２は、例えば、RAMから構成される。メインメモリ３２は、メインプロセッサ４２およびサブプロセッサ４３が実行する各種のプログラムおよびデータを一時的に記憶している。
【００３９】
記録部３３−１，３３−２は、それぞれ、例えば、ハードディスクなどにより構成される。記録部３３−１，３３−２は、メインプロセッサ４２およびサブプロセッサ４３が実行する各種のプログラムおよびデータを記録している。また、記録部３３−１，３３−２は、情報処理コントローラ３１から供給されたデータを記録する。
【００４０】
また、情報処理コントローラ３１には、バス３４を介して、通信部３５、出力部３６、入力部３７、およびドライブ３８が接続されている。入力部３７は、キーボード、マウス、または、操作ボタンなどから構成され、ユーザにより操作されるとその操作に応じた信号を発生する。出力部３６は、例えば、ディスプレイ、スピーカ、およびランプなどよりなり、情報処理コントローラ３１から供給されたデータを出力する。
【００４１】
通信部３５は、情報処理コントローラ３１から供給されたソフトウェアセルを、図示せぬ通信網を介して所定の図示せぬ分散処理装置あてに送信する。また、通信部３５は、図示せぬ分散処理装置から送信されてきたデータを、バス３４を介して、情報処理コントローラ３１に供給する。
【００４２】
ドライブ３８は、磁気ディスク６１、光ディスク６２、光磁気ディスク６３、あるいは半導体メモリ６４などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて、バス３４を介して、情報処理コントローラ３１に転送され、情報処理コントローラ３１によって、記録部３３に記録される。
【００４３】
なお、図示せぬ分散処理装置についても、その構成は、情報処理装置１１と同様である。図示せぬ分散処理装置は上述した構成に限らず、必要に応じて、機能を追加したり削除したりすることは可能であり、その機能に対応した構成をもつことが可能である。
【００４４】
次に、図４乃至図６を参照して、サブプロセッサ４３がメインメモリ３２にアクセスする場合の処理について説明する。
【００４５】
図４で示されるように、メインメモリ３２には、複数のアドレスを指定できるメモリロケーションが配置される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサIDおよびLSアドレス（ローカルストレージアドレス）を含む。また、各メモリロケーションには、後述するアクセスキーが割り振られる。
【００４６】
“０”であるＦ／Ｅビットは、サブプロセッサ４３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーションから読み出し不可であることを示す。また、“０”であるＦ／Ｅビットは、そのメモリロケーションにデータ書き込み可能であることを示し、データが書き込まれると、Ｆ／Ｅビットは“１”に設定される。
【００４７】
“１”であるＦ／Ｅビットは、そのメモリロケーションのデータがサブプロセッサ４３によって読み出されておらず、未処理の最新データであることを示す。Ｆ／Ｅビットが“１”であるメモリロケーションのデータは読み出し可能であり、サブプロセッサ４３によって読み出されてから、Ｆ／Ｅビットは“０”に設定される。また、“１”であるＦ／Ｅビットは、メモリロケーションがデータ書き込み不可であることを示す。
【００４８】
さらに、Ｆ／Ｅビットが“０”（読み出し不可／書き込み可）である状態において、メモリロケーションについて読み出し予約を設定することが可能である。Ｆ／Ｅビットが“０”であるメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ４３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報としてサブプロセッサ４３のサブプロセッサIDおよびLSアドレスを書き込む。そして、データを書き込むサブプロセッサ４３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビットが“１”（読み出し可／書き込み不可）に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれているサブプロセッサIDおよびLSアドレスによって特定されるローカルストレージ５１に読み出される。
【００４９】
複数のサブプロセッサ４３によってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出しおよび書き込みを制御することによって、前段階の処理を行うサブプロセッサ４３が、処理済みのデータをメインメモリ３２における所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ４３が前処理後のデータを読み出すことが可能となる。
【００５０】
また、図５で示されるように、サブプロセッサ４３のローカルストレージ５１は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含む。
【００５１】
サブプロセッサ４３がメインメモリ３２に記憶されているデータをサブプロセッサ４３のローカルストレージ５１のメモリロケーションに読み出すときには、対応するビジービットを“１”に設定して予約する。ビジービットが“１”であるメモリロケーションには、他のデータを格納することができない。ローカルストレージ５１のメモリロケーションにデータが読み出されると、ビジービットは“０”に設定され、他のデータを格納することができるようになる。
【００５２】
さらに、図４で示すように情報処理コントローラ３１に接続されているメインメモリ３２には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ３２内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ４３に割り当てられ、割り当てられたサブプロセッサ４３が排他的に使用することができる。すなわち、サブプロセッサ４３は、割り当てられたサンドボックスを使用できるが、この領域を超えてデータにアクセスすることはできない。
【００５３】
メインメモリ３２は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００５４】
さらに、メインメモリ３２の排他的な制御を実現するために、図６で示されるキー管理テーブルが用いられる。キー管理テーブルは、キー管理テーブル記録部４５に記録され、DMAC４４と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサID、サブプロセッサキーおよびキーマスクが含まれる。
【００５５】
サブプロセッサ４３がメインメモリ３２にアクセスする場合、サブプロセッサ４３はDMAC４４に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、サブプロセッサ４３を特定するサブプロセッサIDおよびアクセス要求先であるメインメモリ３２のアドレスが含まれる。
【００５６】
DMAC４４は、サブプロセッサ４３から供給されたコマンドを実行する場合、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ４３のサブプロセッサキーを調べる。そして、DMAC４４は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ３２のメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、サブプロセッサ４３から供給されたコマンドを実行する。
【００５７】
図６は、キー管理テーブルを説明する図である。キー管理テーブルに記録されているキーマスクは、その任意のビットが“１”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“０”または“１”にすることができる。
【００５８】
例えば、サブプロセッサキーが“１０１０”であるとする。通常、このサブプロセッサキーによって“１０１０”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“０００１”に設定されている場合には、キーマスクのビットが“１”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ（キーマスクのビットが“１”に設定された桁について、判定されず）、このサブプロセッサキー“１０１０”によってアクセスキーが“１０１０”または“１０１１”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００５９】
以上のようにして、メインメモリ３２のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ４３によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ４３と、後段階の処理を行うサブプロセッサ４３のみが、メインメモリ３２の所定のアドレスにアクセスできるようになり、データを保護することができる。
【００６０】
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、情報処理装置１１の起動直後においては、キーマスクの値は全て“０”である。メインプロセッサ４２にロードされたプログラムが実行され、サブプロセッサ４３にロードされたプログラムと連携動作するものとする。サブプロセッサ４３−１により出力された処理結果データを、メインメモリ３２に記憶させ、メインメモリ３２に記憶させた処理結果データを、サブプロセッサ４３−２に入力したいときには、サブプロセッサ４３−１により出力された処理結果データを記憶しているメインメモリ３２の領域は、サブプロセッサ４３−１およびサブプロセッサ４３−２からアクセス可能である必要がある。そのような場合に、メインプロセッサ４２は、キーマスクの値を適切に変更し、複数のサブプロセッサ４３からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ４３による多段階的の処理を可能にする。
【００６１】
より具体的には、例えば、図示せぬ分散処理装置から送信されてきた、データを基に、サブプロセッサ４３−１が所定の処理実行し、処理が施されたデータをメインメモリ３２の第１の領域に記憶させる。そして、サブプロセッサ４３−２は、メインメモリ３２の第１の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ３２の第１の領域とは、異なる第２の領域に記憶させる。
【００６２】
ここで、サブプロセッサ４３−１のサブプロセッサキーが“０１００”であり、メインメモリ３２の第１の領域のアクセスキーが“０１００”であり、サブプロセッサ４３−２のサブプロセッサキーが“０１０１”であり、メインメモリ３２の第２の領域のアクセスキーが“０１０１”である場合、サブプロセッサ４３−２は、メインメモリ３２の第１の領域にアクセスすることができない。そこで、サブプロセッサ４３−２のキーマスクを“０００１”にすることによって、サブプロセッサ４３−２は、メインメモリ３２の第１の領域にアクセスすることができるようになる。
【００６３】
次に、図７を参照して、図３の情報処理装置１１により実現される機能について説明する。
【００６４】
操作部１０１は、上述した入力部３７に相当するものであり、全方位画像からなるファイルの指定処理や、再生、停止、または一時停止といった動作をユーザが希望するとき操作され、対応する操作信号を発生して分離部１０２に供給する。
【００６５】
分離部１０２は、ドライブ３８に装着された磁気ディスク６１、光ディスク６２、光磁気ディスク６３、あるいは半導体メモリ６４などに記録された全方位画像、または、通信部３５を介して、図示せぬネットワークより他の情報処理装置から供給されてくる全方位画像のストリームデータより先頭部分に記録されているコンテンツ情報、画像処理情報、音声処理情報、およびセグメント情報をそれぞれメインメモリ３２のキャッシュ部１１１のコンテンツ情報キャッシュ部１２１、画像処理情報キャッシュ部１２２、音声処理情報キャッシュ部１２３、および、セグメント情報キャッシュ部１２４に記憶させる。
【００６６】
尚、図７においては、メインメモリ３２は、メインプロセッサ４２内に設けられたように表記されているが、実際のハードウェアの構成としては、図３で示されるように、メインプロセッサ４２内には、存在しないものである。しかしながら、図７においては、処理の説明の便宜上メインプロセッサ４２内に存在しているような表記とする。
【００６７】
分離部１０２は、セグメント情報に基づいて、ドライブ３８に装着された磁気ディスク６１、光ディスク６２、光磁気ディスク６３、あるいは半導体メモリ６４などに記録された全方位画像、または、通信部３５を介して、図示せぬネットワークより他の情報処理装置から供給されてくる全方位画像のストリームデータより、再生が指定されている範囲の音声データと画像データをそれぞれメインメモリ３２のFIFO（First in First Out）部１１２の音声データFIFO部１４１および画像データFIFO部１４２のそれぞれに記憶させる。
【００６８】
分離部１０２は、供給されてくる画像データをFIFO制御部１０３に供給する。
【００６９】
FIFO制御部１０３は、分離部１０２より供給されてくる、今現在取得している画像データと、セグメント情報キャッシュ部１２４に記憶されているセグメント情報に基づいて、音声データFIFO部１４１、画像データFIFO部１４２、および処理結果画像データFIFO部１４３のFIFOの領域のサイズを決定する。
【００７０】
メインメモリ３２のキャッシュ部１１１は、一時的に情報を記憶するメモリであり、コンテンツ情報キャッシュ部１２１、画像処理情報キャッシュ部１２２、音声処理情報キャッシュ部１２３、および、セグメント情報キャッシュ部１２４を備えており、コンテンツ情報、画像処理情報、音声処理情報、および、セグメント情報をそれぞれ一時的に記憶し、必要に応じて、FIFO制御部１０３、分担決定部１０４、および、振分部１０５に供給する。
【００７１】
FIFO部１１２は、分離部１０２より供給されるストリームデータにおける音声データ、画像データ、および、サブプロセッサ４３−１乃至４３−Nにより分散処理された処理結果となる画像データを記憶する。FIFO部１１２の音声データFIFO部１４１は、FIFO制御部１０３により動的に容量が設定され、分離部１０２より供給される音声データを一時的に記憶し、必要に応じて振分部１０５に供給する。
【００７２】
画像データFIFO部１４２は、FIFO制御部１０３により動的に容量が設定され、分離部１０２より供給される画像データを一時的に記憶し、必要に応じて、振分部１０５に供給する。
【００７３】
処理画像データFIFO部１４３は、FIFO制御部１０３により動的に容量が決定され、サブプロセッサ４３−１乃至４３−Nより供給されてくる処理結果である画像データを一時的に記憶し、順次、所定のタイミングで画像再生処理部１０６に供給する。
【００７４】
分担決定部１０４は、メインメモリ３２のキャッシュ部１１１における画像処理情報キャッシュ部１２２に記憶されたマッピングテーブル１３１および負荷分布テーブル１３２を読み出し、全方位画像を２次元平面画像に変換する全ての画像処理における各マッピングアルゴリズム毎の負荷の比率を計算し、その比率から各サブプロセッサ４３−１乃至４３−Nに実行させる画像処理内容の分担を決定し、決定した分担結果を振分部１０５に供給する。尚、ここで言うマッピングアルゴリズムとは、全方位画像を２次元平面画像に変換するためのマッピングアルゴリズムであり、例えば、全方位画像を円筒形マッピングアルゴリズムにより２次元平面画像に変換するか、または、全方位画像を球形マッピングアルゴリズムにより２次元平面画像に変換するかといったマッピングアルゴリズムのことである。尚、円筒形マッピングアルゴリズム、および、球形マッピングアルゴリズムについては詳細を後述する。
【００７５】
より具体的には、分担計算部１０４の負荷計算部１６１が、1ピクセルあたりの処理時間に基づいて、処理時間をマッピングアルゴリズム毎の負荷として計算する。そして、比率計算部１６２が、総処理時間に対するマッピングアルゴリズム毎の比率を求め、分担して画像処理を担当させることができるサブプロセッサ４３に対して負荷を均等にさせるように、処理分担を決定し、決定結果を振分部１０５に供給する。
【００７６】
振分部１０５は、分担決定部１０４より供給されてくる分担結果に応じて、各サブプロセッサ４３が処理に必要な情報と、必要なプログラムをキャッシュ部１１１およびFIFO部１１２より読み出し、それぞれ振り分けてサブプロセッサ４３−１乃至４３−Nに供給する。
【００７７】
サブプロセッサ４３−１乃至４３−Nは、振分部１０５より供給された、処理に必要な情報を用いて、供給された画像を処理するための（全方位画像を2次元平面画像に変換する処理をするための）プログラムを実行し、処理結果をメインメモリ３２のFIFO部１１２の処理結果画像データFIFO部１４３に記憶させる。
【００７８】
画像再生処理部１０６は、処理結果画像データFIFO部１４３に記憶されたサブプロセッサ４３−１乃至４３−Nにより分散処理されて、画像処理された処理結果を、CRT（Cathode Ray Tube）やLCD（Liquid Crystal Display）などからなる表示部１７１により表示可能な画像に処理し、表示部１７１に出力して表示させる。
【００７９】
次に、図８を参照して、ストリームデータのフォーマットについて説明する。
【００８０】
図８の左部に示されるように、先頭部分からコンテンツ情報２０１、画像処理情報２０２、音声処理情報２０３、および、セグメント情報２０４が記憶されており、いわゆるヘッダ部分を構成している。さらに、その後段には、データ領域２０５が設定されており、実際の画像データや音声データが記録されている。
【００８１】
さらに、データ領域２０５には、図８の右部で示されるように、デリミタ単位の画像データ、音声データ、および、画像音声処理用データが記録されている。すなわち、先頭からデリミタ情報２１１−１、画像データ２１２−１、音声データ２１３−１、および画像音声処理用データ２１４−１が、１のデリミタに対応するデータである。さらに、それ以降のデータは、デリミタ情報２１１−２、画像データ２１２−２、音声データ２１３−２、および画像音声処理用データ２１４−２・・・とデリミタ毎に順次記録され、図８の右部においては、デリミタ情報２１１−N、画像データ２１２−N、音声データ２１３−N、および画像音声処理用データ２１４−Nまでの情報がデータ領域に記録されている。
【００８２】
ここで、コンテンツ情報２０１は、一般的なコンテンツの情報であり、画像フォーマットの情報（例えば、全方位画像、マルチカメラ画像、パノラマ画像、または通常画像といったフォーマットを識別する情報）、画像圧縮フォーマットの情報（例えば、MPEG１（Moving Picture Experts Group Phase１）、MPEG２（Moving Picture Experts Group Phase２）、またはJPEG2000（Joint Photographic Coding Experts Group 2000）などを識別する情報）、横解像度（水平方向の解像度）、縦解像度（垂直方向の解像度）、深さ（N bit：色を表現するビット数）、総フレーム数、および、ストリームデータに含まれるデータセグメントの中で最も大きなデータセグメント（最大データセグメント）と、そのデータ量の情報である。ここで、データセグメントとは、１デリミタにおけるデリミタ情報、画像データ、音声データ、および、画像音声処理用データを全て加えたものである。さらに、コンテンツ情報には、最大音声データサイズや最大画像データサイズなども含まれる。
【００８３】
画像処理情報２０２は、後述するマッピングテーブルと負荷分布テーブルからなる情報である。
【００８４】
音声処理情報２０３は、音声フォーマット、サンプリングレート（Hz）、および、チャンネル数などの情報である。
【００８５】
セグメント情報２０４は、各データセグメントの先頭フレーム番号、データセグメントのフレーム数、およびデリミタ情報の先頭アドレスからの相対アドレスの情報である。
【００８６】
次に、全方位画像を２次元平面画像に変換するマッピングアルゴリズムについて説明する。尚、全方位画像を２次元平面画像に変換するマッピングアルゴリズムの例として、ここでは、球形マッピングアルゴリズムと、円筒形マッピングアルゴリズムについて説明するが、それ以外の方法であってもよいことは言うまでもない。
【００８７】
まず、球形マッピングアルゴリズムについて説明する。
【００８８】
球形マッピングアルゴリズムとは、全方位画像を、図９で示されるように、球面（XYZ軸の交点（原点）を中心とした球面）上の画像であるとみなし、球面上の各位置を中心からの緯度方向（Y軸を中心として赤道面を設定した場合）をφ、経度方向（Y軸を中心として赤道面を設定した場合）をθとした角度座標で表現し、これを図１０で示されるように角度座標上のθφ平面に展開することで２次元平面画像に変換するマッピングアルゴリズムである。すなわち、図９で示されているように、球面上の（θ１，φ１）で示される位置の画素は、図１０において、θ軸およびφ軸のそれぞれに対応する位置にプロットされる（例えば、図中の黒丸の位置にプロットされる）ことになる。
【００８９】
さらに、図１０で示されるように、θφ平面上の位置に応じて、解像度を変化させるように変換する。すなわち、図１０においては、θとφの角度の間隔が解像度を示している。従って、−40°＜θ＜40°で、かつ、−45°＜φ＜45°における図中の白色の第１の範囲では、θ方向、および、φ方向のいずれにおいても最も大きな間隔が設定されているので、最も高い解像度が設定されている。また、−40°＜θ＜40°で、かつ、φ＜−45°または45°＜φの右上がりの斜線の第２の範囲では、第１の範囲よりもφ方向の間隔が狭いため、第１の範囲よりも解像度が低い。さらに、θ＜−40°または40°＜θで、かつ、−45°＜φ＜45°の格子状の第３の範囲では、第１の範囲よりもθ方向の間隔が狭いため、第１の範囲よりも解像度が低い。
【００９０】
さらに、θ＜−40°または40°＜θで、かつ、φ＜−45°または45°＜φの左上がり斜線で示される第４の範囲では、第１の範囲よりもθ方向およびφ方向の間隔が狭いため、第１の範囲よりも解像度が低く、第２の範囲よりもφ方向の間隔が狭いため第２の範囲よりも解像度が低く、同様にして、第３の範囲よりもθ方向の間隔が狭いため第３の範囲よりも解像度が低い。
【００９１】
尚、ここでいう解像度は、全方位画像を２次元平面画像に変換する際に生成されるピクセルの密度である。従って、例えば、全方位画像の解像度と同一の解像度を第１の範囲の解像度とし、その他の範囲については、全方位画像のピクセルを順次所定の間隔で間引くようにして低解像度化してもよいし、全方位画像のピクセルにより画素を生成することで高解像度化したり、逆に、間引くようにして、低解像度化するなどして解像度を変化させるようにしても良い。
【００９２】
このように解像度の分布を範囲に応じて変化させて設定することで、例えば、図１０の点線で示される丸印の範囲付近に特に注目して表示したい被写体が存在したような場合、その被写体近傍の範囲の画像を高解像度に設定し、それ以外の範囲を低解像度化することで、注目したい被写体が表示されている範囲のみを高解像度で表示させるようにすることができるので、画像を見る際、ユーザが意識する範囲のみを高解像度に表示し、それ以外の範囲の解像度を低解像度化することで、見た目に画質が低下した印象を与えずに、全体として全方位画像を２次元平面画像に変換させる処理の負荷を抑制させ、結果として、全体の処理を高速化させることが可能となる。尚、この解像度の分布は、任意に設定することが可能である。
【００９３】
次に、円筒形マッピングアルゴリズムについて説明する。
【００９４】
円筒形マッピングアルゴリズムとは、全方位画像を、図１１で示されるように、円筒面（図１１におけるY軸を中心とし、XZ平面に平行な上底と下底からなる円筒面）上の画像であるとみなし、円筒上の各位置を原点（XYZ軸の交点）からの緯度方向をφ、経度方向をθとした角度座標で表現し、これを上述した図１０で示されるように角度座標上のθφ平面に展開することで２次元平面画像に変換するマッピングアルゴリズムである。すなわち、図１１で示されているように、円筒面上の（θ１，φ１）で示される位置の画素は、図１０において、θ軸およびφ軸のそれぞれに対応する位置にプロットされる（例えば、図中の黒丸の位置にプロットされる）ことになる。尚、θφ平面上の解像度の設定は、球面マッピングアルゴリズムと同様に設定することが可能であり、同様の効果を得る事が可能となる。
【００９５】
また、マッピングアルゴリズムは、全方位画像の全ての範囲に対して統一したものとする必要がなく、範囲毎に設定することができる。例えば、図１２で示されるように、図中の格子模様で示された高緯度の範囲については、球形マッピングアルゴリズムを使用し、低緯度の範囲については円筒形マッピングアルゴリズムを使用するようにしてもよいし、さらに、細かく範囲を設定して円筒形マッピングアルゴリズムや球形マッピングアルゴリズムなどの複数のマッピングアルゴリズムを設定するようにしても良い。
【００９６】
次に、図１３を参照して、マッピングテーブルについて説明する。
【００９７】
マッピングテーブルは、図１３の左部で示されるように、先頭からマッピングアルゴリズム（Mapping algorithm）２３１、および個別マッピングテーブル（Mapping Table）２３２−１乃至２３２−４・・・が配置される。
【００９８】
マッピングアルゴリズム２３１には、図１３の右部で示されるように、先頭からアルゴリズム名（Algorithm Name）、およびアルゴリズムパラメータ（Algorithm Parameter）２４２−１乃至２４２−Nが記録されている。アルゴリズム名２４１は、全方位画像を２次元平面画像に変換するためのプログラムに用いられるマッピングアルゴリズムの名称が記録され、例えば、球形マッピングアルゴリズムや円筒形マッピングアルゴリズムなどのマッピングアルゴリズムの名称が記録される。また、アルゴリズムパラメータ２４２−１乃至２４２−Nには、全方位画像を２次元平面画像に変換するためのプログラムに用いられるパラメータが記録される。図１３の場合、パラメータはN個設定できる構成となっている。
【００９９】
個別マッピングテーブル２３２−１乃至２３２−４・・には、それぞれマッピングアルゴリズムを使用する範囲を示すデータ２４３−１乃至２４３−４・・がそれぞれ記録されている。すなわち、データ２４３には、φmin、θmin、TXmin、TYmin、φmax、θmax、TXmax、TYmaxがそれぞれ記録されており、そのマッピングアルゴリズムを使用する範囲が角度座標で表現されるθφ平面と、全方位画像上の範囲のそれぞれについて示されている。より詳細には、φminは、θφ平面上の角度φの最小値であり、θminはθφ平面上の角度θの最小値であり、TXminは全方位画像におけるX方向の最小値であり、TYminは全方位画像におけるY方向の最小値であり、φmaxは、θφ平面上の角度φの最大値であり、θmaxはθφ平面上の角度θの最大値であり、TXmaxは全方位画像におけるX方向の最大値であり、TYmaxは全方位画像におけるY方向の最大値である。この個別マッピングテーブルにより、マッピングアルゴリズムを使用する角度座標上の範囲と、全方位画像上の範囲が設定されることになる。
【０１００】
次に、図１４を参照して、負荷分布テーブルについて説明する。
【０１０１】
負荷分布テーブルは、先頭位置から画像内のマッピングアルゴリズム（Mapping Algorithm）数２６１、画像内の総ピクセル数２６２、マッピングアルゴリズム（Mapping Algorithm）２６３−１、処理ピクセル数２６４−１、負荷率２６５−１が順次記録され、以下、マッピングアルゴリズム毎に、マッピングアルゴリズム（Mapping Algorithm）２６３−ｉ、処理ピクセル数２６４−ｉ、負荷率２６５−ｉが記録され、図１４においては、ｉがＮ個、すなわち、マッピングアルゴリズムがＮ個設定された場合についての負荷分布テーブルの例が示されている。
【０１０２】
マッピングアルゴリズム（Mapping Algorithm）数２６１は、全方位画像を２次元平面画像に変換する処理に用いられているマッピングアルゴリズム数を示す情報である。画像内の総ピクセル数２６２は、全方位画像の全ピクセル数を示す情報である。マッピングアルゴリズム（Mapping Algorithm）２６３は、全方位画像を２次元平面画像に変換するために使用されているプログラムのアルゴリズム名であり、続く処理ピクセル数２６４、および負荷率２６５は、それぞれ、そのマッピングアルゴリズムのプログラムにより処理される全方位画像のピクセル数と、１ピクセル当たりの処理に必要とされる処理時間である。
【０１０３】
次に、図１５のフローチャートを参照して、図３の情報処理装置１１による全方位画像を２次元平面画像として再生する再生処理について説明する。
【０１０４】
ステップＳ１において、分離部１０２は、全方位画像の記録されたコンテンツ群登録処理を実行する。すなわち、分離部１０２は、ドライブ３８に装着された磁気ディスク６１、光ディスク６２、光磁気ディスク６３、あるいは半導体メモリ６４などに記録された全方位画像、または、通信部３５を介して、図示せぬネットワークより他の情報処理装置から供給されてくる全方位画像のストリームデータかなるコンテンツの先頭部分に記録されているコンテンツ情報、画像処理情報、音声処理情報、およびセグメント情報をそれぞれメインメモリ３２のキャッシュ部１１１のコンテンツ情報キャッシュ部１２１、画像処理情報キャッシュ部１２２、音声処理情報キャッシュ部１２３、および、セグメント情報キャッシュ部１２４に記憶させる。
【０１０５】
ステップＳ２において、分離部１０２は、操作部１０１が操作されて、再生が指示されたか否かを判定し、操作部１０１が操作されて、全方位画像のコンテンツを再生させるコマンドが入力されるまで、その処理を繰り返す。すなわち、入力待機状態となる。そして、全方位画像のコンテンツを再生させるコマンドが入力されると、その処理は、ステップＳ３に進む。尚、全方位画像のコンテンツを再生させるコマンドには、再生させるコンテンツまたは再生させるフレームを指定する情報が含まれている。再生する全方位画像のコンテンツが指定された場合、再生対象となる最初のフレーム（セグメント０に含まれる）からの再生であると判定する。
【０１０６】
ステップＳ３において、FIFO制御部１０３は、FIFO部１１２の音声データFIFO部１４１、画像データFIFO部１４２、および処理結果画像データFIFO部１４３の各領域を確保する。すなわち、FIFO制御部１０３は、コンテンツ情報キャッシュ部１２１に格納されている情報に基づいて、音声データFIFO部１４１、および画像データFIFO部１４２を、それぞれ（最大音声データサイズ×セグメント数）、および（最大画像データセグメントのサイズ×セグメント数）［byte］に従って、領域を設定する。また、FIFO制御部１０３は、コンテンツ情報キャッシュ部１２１に格納されている情報に基づいて、（横解像度×縦解像度×深さ×フレーム数）を処理結果画像データFIFO部１４３の領域として確保する。
【０１０７】
ステップＳ４において、分離部１０２は、コンテンツをプリロードする。すなわち、分離部１０２は、再生が指定された最初のフレームの情報に基づいて、キャッシュ部１１１のセグメント情報キャッシュ部１２４に格納された、再生が指定された最初のフレームを含むセグメントを確認し、そのセグメントからデータの読み込みを開始する。セグメント情報キャッシュ部１２４には、データセグメント内の先頭フレーム番号、データセグメント内のフレーム数、およびデリミタのデータの先頭からの相対アドレスが格納されており、再生が指定された最初のフレーム情報に基づいて、そのフレームの含まれるセグメントを認識することが可能となっている。また、デリミタの相対アドレスに基づいて、ディスク上のデータ読み出し位置も認識することが可能であるので、処理対象データの読み取りにおけるシークタイムを短縮することが可能となる。
【０１０８】
分離部１０２は、再生が指定されたフレームの格納されたデータセグメント領域からデータを読み出して、音声データ、および画像データを分離して、再生が指定された最初のフレーム以降の音声データを音声データFIFO部１４１に格納し、全方位画像の画像データを画像データFIFO部１４２に格納する。
【０１０９】
ステップＳ５において、再生画像生成処理、すなわち、全方位画像からなるコンテンツを２次元平面画像に変換して表示部１７１により再生可能な画像を生成する処理が実行される。
【０１１０】
ここで、図１６のフローチャートを参照して、メインプロセッサ４２とサブプロセッサ４３による再生画像生成処理について説明する。
【０１１１】
ステップＳ３１において、メインプロセッサ４２の分担決定部１０４の負荷計算部１６１は、負荷分布テーブル１３２を参照して、マッピングアルゴリズム毎に処理ピクセル数と負荷率に基づいて、マッピングアルゴリズム毎の負荷を計算する。より詳細には、負荷計算部１６１は、負荷分布テーブル１３２におけるマッピングアルゴリズム２６３の情報毎に処理時間（＝（処理ピクセル数）×（負荷率：１ピクセルの処理に係る時間））を各マッピングアルゴリズムの負荷として計算し、比率計算部１６２に出力する。
【０１１２】
ステップＳ３２において、メインプロセッサ４２の分担決定部１０４の比率計算部１６２は、マッピングアルゴリズム毎の全体の処理に対する比率を計算する。すなわち、比率計算部１６２は、例えば、マッピングアルゴリズムＡ，Ｂ，Ｃの３種類のマッピングアルゴリズムが存在した場合、それぞれの負荷、すなわち、処理時間が0.25秒、0.25秒、および、0.5秒であったとき、マッピングアルゴリズムＡの比率を0.25（＝0.25／（0.25+0.25+0.5））、マッピングアルゴリズムＢの比率を0.25（＝0.25／（0.25+0.25+0.5））、マッピングアルゴリズムＣの比率を0.5（＝0.5／（0.25+0.25+0.5））としてそれぞれ計算し、計算結果を分担確定部１６３に供給する。
【０１１３】
ステップＳ３３において、分担確定部１６３は、各サブプロセッサ４３に対して負荷が均等に近い状態となるように、処理を分担し、各サブプロセッサ４３に対しての処理分担を決定し、その結果を振分部１０５に供給する。より詳細には、図１７の上段で示されるように、マッピングアルゴリズムＡ，Ｂ，Ｃのそれぞれについて負荷が0.25，0.25，0.5であった場合、例えば、サブプロセッサ４３が、サブプロセッサ４３−１乃至４３−１の４個であったとき、図１７の下段で示されるように処理分担が決定される。すなわち、例えば、マッピングアルゴリズムＡ（Mapping Algorithm-A）の処理をサブプロセッサ４３−１に振り分け、マッピングアルゴリズムＢ（Mapping Algorithm-B）の処理をサブプロセッサ４３−２に振り分け、マッピングアルゴリズムＣ（Mapping Algorithm-C）の処理をサブプロセッサ４３−３，４３−４に振り分ける。ここで、マッピングアルゴリズムＣの処理を複数のサブプロセッサ４３に分担させる場合、マッピングテーブル１３１により設定される範囲を、それぞれのサブプロセッサ４３で処理する範囲に分けて、マッピングアルゴリズムＣの処理を実行させる。尚、図１７においてαは、0.25秒を示す。
【０１１４】
このように全方位画像を２次元平面画像に変換する処理を、複数のサブプロセッサで分散処理させることにより、処理速度を向上させることが可能になると共に、それぞれのサブプロセッサ４３の負荷が均等になるように処理分担を決定することで、例えば、１のサブプロセッサ４３の処理が完了するのを待つといった分散処理における非効率的な処理を抑制することが可能となり、結果として、全方位画像を２次元平面画像に変換させる処理の効率を向上させ、高速化を図ることが可能となる。
【０１１５】
ステップＳ３４において、振分部１０５は、分担決定部１０４より供給されてきた処理分担に従って、マッピングアルゴリズムのパラメータ、マッピングテーブル１３１の個別マッピングテーブル、および実際のマッピングアルゴリズムを実行するためのプログラムを各サブプロセッサ４３に供給する。
【０１１６】
ステップＳ５１において、サブプロセッサ４３は、マッピングアルゴリズムのパラメータ、マッピングテーブル１３１の個別マッピングテーブル（処理分担に対応する個別マッピングテーブル）を含む、マッピングアルゴリズムを実行するためのプログラムが、メインプロセッサ４２より供給されてきたか否かを判定し、送信されてくるまで、その処理を繰り返す。ステップＳ５１において、例えば、上述したステップＳ３４の処理により、マッピングアルゴリズムのパラメータ、マッピングテーブル１３１の個別マッピングテーブルを含む、マッピングアルゴリズムを実行するためのプログラムが送信されてきた場合、その処理は、ステップＳ５２に進む。
【０１１７】
ステップＳ５２において、サブプロセッサ４３は、送信されてきたプログラムが、自らのローカルストレージ５１に記憶されているか、すなわち、既にインストール済みのプログラムであるか否かを判定する。例えば、インストールされていないと判定された場合、その処理は、ステップＳ５３に進み、サブプロセッサ４３は、送信されてきたプログラムを自らのローカルストレージ５１にインストールする。一方、ステップＳ５２において、既にインストール済みである場合、更なるインストールは不要であるため、ステップＳ５３の処理は、スキップされる。
【０１１８】
ステップＳ５４において、サブプロセッサ４３は、未処理の全方位画像のピクセル（画素）を指定する座標（TX，TY）を選択する。ここで、TX，TYは、振分部１０５より供給されたマッピングテーブル１３１のTXmin，TXmax，TYmin，TYmaxに基づいた値であり、TXmin≦TX≦TXmax、TYmin≦TY≦TYmaxである。
【０１１９】
ステップＳ５５において、サブプロセッサ４３は、選択した全方位画像座標を角度座標に変換する。すなわち、サブプロセッサ４３は、例えば、全方位画像上の座標（TX，TY）を、以下の式（１），式（２）を用いて、θφ平面上の角度座標（θ，φ）に変換する。
【０１２０】
θ＝θmin＋（θmax−θmin）×TX／imgw
φ＝φmin＋（φmax−φmin）×TY／imgh
・・・（１）
【０１２１】
ここでは、θmin，θmax，φmin，φmaxは、いずれも振分部１０５より供給されてきたマッピングテーブル１３１の情報である。また、imgw，imghは、それぞれ全方位画像の水平方向のサイズ、および、垂直方向のサイズである。
【０１２２】
ステップＳ５６において、サブプロセッサ４３は、角度座標（θ，φ）を３次元座標に変換する。すなわち、サブプロセッサ４３は、例えば、球形マッピングアルゴリズムの場合、以下の式（２）を演算し、角度座標（θ，φ）を３次元座標（X，Y，Z）に変換する。また、例えば、円筒マッピングアルゴリズムの場合、サブプロセッサ４３は、以下の式（３）を演算し角度座標（θ，φ）を３次元座標（X，Y，Z）に変換する。
【０１２３】
X＝sinθ×cosφ
Y＝sinφ
Z＝cosθ×cosφ
・・・（２）
【０１２４】
X＝sinθ
Y＝tanφ
Z＝cosθ
・・・（３）
【０１２５】
ステップＳ５７において、サブプロセッサ４３は、３次元座標（X，Y，Z）を２次元座標（x，y）に変換する。すなわち、サブプロセッサ４３は、以下の式（４），式（５）を演算し、２次元座標（x，y）に変換する。
【０１２６】
【数１】
2006011696.tif 000003
・・・（４）
【０１２７】
x＝x’／w
y＝y’／w
・・・（５）
【０１２８】
ここで、式（４）のTVは、３次元座標を２次元座標に変換する行列であり、Rは、回転行列である。すなわち、ステップＳ５７の処理により、全方位画像は、２次元平面画像に変換されることになる。
【０１２９】
ステップＳ５８において、サブプロセッサ４３は、２次元座標（x，y）からフレームバッファの座標系、すなわち、処理結果画像データFIFO部１４３上の座標（xd，yd）に変換して、処理結果画像データFIFO部１４３に記憶させる。すなわち、サブプロセッサ４３は、以下の式（６）を演算し、２次元座標（x，y）を処理結果画像データFIFO部１４３上の座標（xd，yd）に変換する。
【０１３０】
xd＝x＋（xcent−cutw／２）
yd＝y＋（ycent−cuth／２）
・・・（６）
【０１３１】
ここで、xcent，ycentは、スクリーン座標系の中心位置（全方位画像から切り出して表示しようとする画像の全方位画像中の中心位置である）である。また、cutw，cuthは、それぞれ全方位画像から抽出して２次元平面画像として表示する画像の水平方向と垂直方向のサイズを示している。
【０１３２】
すなわち、この処理により、全方位画像は２次元平面画像に変換された状態で、処理結果データFIFO部１４３に記憶されることになる。
【０１３３】
ステップＳ５９において、サブプロセッサ４３は、全ての全方位画像の座標が処理されたか否かを判定し、全ての全方位画像の座標が処理されていないと判定された場合、その処理は、ステップＳ５４に戻る。すなわち、全ての全方位画像の座標が２次元平面画像に変換されて、処理結果画像データFIFO部１４３に記憶されるまで、ステップＳ５４乃至Ｓ５９の処理が繰り返される。
【０１３４】
そして、ステップＳ５９において、全ての全方位画像が処理されたと判定された場合、ステップＳ６０において、サブプロセッサ４３は、処理分担であった分の全方位画像を２次元平面画像に変換する処理が完了したことを示す処理完了通知をメインプロセッサ４２に通知し、その処理は、ステップＳ５１に戻る。
【０１３５】
ステップＳ３５において、メインプロセッサ４２は、サブプロセッサ４３からの処理完了通知を取得したか否かを判定し、処理完了通知を取得するまでその処理を繰り返す。例えば、ステップＳ６０の処理により処理完了通知が通知され、取得された場合、その処理は、ステップＳ３６に進む。
【０１３６】
ステップＳ３６において、メインプロセッサ４２は、全てのサブプロセッサ４３による処理が完了したか否か、すなわち、分担処理の実行を要求した全てのサブプロセッサ４３より処理完了通知が取得されたか否かを判定し、分担処理の実行を要求した全てのサブプロセッサ４３より処理完了通知が取得されたと判定されるまで、ステップＳ３５，Ｓ３６の処理を繰り返す。そして、分担処理の実行を要求した全てのサブプロセッサ４３より処理完了通知が取得された場合、再生画像生成処理が終了する。
【０１３７】
すなわち、この段階で、全方位画像が全て２次元平面画像に変換された状態で、処理結果画像データFIFO部１４３に格納された状態となる。
【０１３８】
尚、図１６のフローチャートにおいては、１のサブプロセッサ４３の処理について説明してきたが、図１６の右部の処理が、複数のサブプロセッサ４３においても実行されることになる。
【０１３９】
ここで、図１５のフローチャートの説明に戻る。
【０１４０】
ステップＳ６において、メインプロセッサ４２の画像再生処理部１０６は、処理結果画像データFIFO部１４３に格納されている各サブプロセッサ４３により処理された、マッピングアルゴリズム毎に、または、範囲毎に、全方位画像から２次元平面画像に変換された画像データを読み出して、これらを合成し、表示部１７１に表示させる。
【０１４１】
ステップＳ７において、メインプロセッサ４２は、操作部１０１が操作されて、一時停止が指示されたか否かを判定する。例えば、ステップＳ７において、操作部１０１が操作されて、一時停止が指示されたと判定された場合、ステップＳ１３において、画像再生処理部１０６は、一次停止処理を実行し、画像の表示を停止する。さらに、ステップＳ１４において、メインプロセッサ４２は、操作部１０１が操作されて、一時停止の解除が指示されたか否かを判定し、指示されていないと判定された場合、処理は、ステップＳ１３に戻る。すなわち、一時停止の解除が指示されるまでステップＳ１３，Ｓ１４の処理が繰り返される。そして、ステップＳ１４において、一時停止の解除が指示された場合、その処理は、ステップＳ５に戻る。
【０１４２】
一方、ステップＳ７において、一時停止の指示がされなかった場合、ステップＳ８において、メインプロセッサ４２は、再生停止、すなわちユーザにより操作部１０１が操作されて再生停止が指示されたとき、その処理は、ステップＳ１５に進む。
【０１４３】
ステップＳ１５において、画像再生処理部１０６は、画像再生処理を停止し、メインプロセッサ４２は、音声データFIFO部１４１、画像データFIFO部１４２、処理結果画像データFIFO部１４３のFIFO部１１２の格納データを破棄する。
【０１４４】
尚、この時点では、キャッシュ部１１１に格納された情報は維持される。従って、この後ステップＳ２において、再生の開始が指示された場合、キャッシュ部１１１に記憶されている情報に基づくFIFO部１１２に対するデータの格納処理や、再生処理を即座に実行することが可能な状態となっている。また、この場合、ステップＳ３におけるFIFOの確保は、実行済みであるので、処理が省略される。
【０１４５】
ステップＳ８において、再生停止が指示されていないと判定された場合、ステップＳ９において、メインプロセッサ４２は、コンテンツの再生が終了したか否かを判定し、再生が終了していない場合、その処理は、ステップＳ２に戻り、それ以降の処理が繰り返される。また、ステップＳ９において、コンテンツの再生が終了したと判定された場合、ステップＳ１０において、メインプロセッサ４２は、コンテンツ再生終了処理を実行する。
【０１４６】
すなわち、メインプロセッサ４２は、FIFO部１１２の音声データFIFO部１４１、画像データFIFO部１４２、および処理結果画像データFIFO部１４３に格納された情報を各々解放し、キャッシュ部１１１に記憶されている情報を無効にする。この処理は、キャッシュ部１１１からのデータ読み取り状態解除処理であり、この時点では、キャッシュされた情報の破棄は実行しない。従って、再度、ステップＳ２において再生が指示された場合、キャッシュされた情報に基づいて、FIFOを確保する処理や、再生処理が即座に実行される。
【０１４７】
ステップＳ１１において、メインプロセッサ４２は、コンテンツ再生終了処理が完了されたか否かを判定し、コンテンツ再生終了処理が完了していない場合、その処理は、ステップＳ２に戻り、それ以降の処理が繰り返される。また、ステップＳ１１において、コンテンツ再生終了処理が完了した場合、ステップＳ１２において、コンテンツ群登録解除処理、すなわち、キャッシュ部１１１のコンテンツ情報キャッシュ部１２１、画像処理情報キャッシュ部１２２、音声処理情報キャッシュ部１２３、および、セグメント情報キャッシュ部１２４のそれぞれに格納された情報が破棄される。
【０１４８】
以上によれば、全方位画像を２次元平面画像に変換する処理を分散処理により、高効率で実行させるようにすることで、処理速度を向上させることが可能となり、結果として、全方位画像をより高解像度の２次元平面画像をより高速で変換することが可能となる。
【０１４９】
尚、以上においては、複数のサブプロセッサ４３の処理能力が、個々に同一である場合に、それぞれのサブプロセッサ４３に均等に処理分担を設定させる例について説明してきたが、複数のサブプロセッサ４３の処理能力が同一でない場合、処理能力の高いサブプロセッサ４３に大きい負荷を掛け、処理能力の低いサブプロセッサについては、小さい負荷が掛かるようにして、全体として処理時間が最短となるように処理分担を設定するようにしても良い。
【０１５０】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
【０１５１】
プログラムが記録されている記録媒体は、図３に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク６１（フレキシブルディスクを含む）、光ディスク６２（CD-ROM(Compact Disc-Read Only Memory)，DVD（Digital Versatile Disk）を含む）、光磁気ディスク６３（MD（Mini-Disc）を含む）、もしくは半導体メモリ６４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているローカルストレージ５１−１乃至５１−（Ｎ＋１）や、記録部３３−１，３３−２に含まれるハードディスクなどで構成される。
【０１５２】
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
【０１５３】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０１５４】
【図１】全方位画像を説明する図である。
【図２】全方位画像を説明する図である。
【図３】本発明を適用した情報処理装置の一実施の形態を示す図である。
【図４】メインメモリを説明する図である。
【図５】サブプロセッサのローカルストレージを説明する図である。
【図６】キー管理テーブルを説明する図である。
【図７】情報処理装置１１により実現される機能を説明する機能ブロック図である。
【図８】ストリームデータのフォーマットを説明する図である。
【図９】球形マッピングアルゴリズムを説明する図である。
【図１０】角度座標を説明する図である。
【図１１】円筒形マッピングアルゴリズムを説明する図である。
【図１２】マッピングアルゴリズムを説明する図である。
【図１３】マッピングテーブルを説明する図である。
【図１４】負荷分布テーブルを説明する図である。
【図１５】再生処理を説明するフローチャートである。
【図１６】再生画像生成処理を説明するフローチャートである。
【図１７】再生画像生成処理を説明する図である。
【符号の説明】
【０１５５】
１１  情報処理装置，  ３２  メインメモリ，  ４２  メインプロセッサ，  ４３，４３−１乃至４３−Ｎ  サブプロセッサ，  １０１  操作部，  １０２  分離部，  １０３  FIFO制御部，  １０４  分担決定部，  １０５  振分部，  １０６  画像再生処理部，  １１１  キャッシュ部，  １１２  FIFO部，  １２１  コンテンツ情報キャッシュ部，  １２２  画像処理情報キャッシュ部，  １２３  音声処理情報キャッシュ部，  １２４  セグメント情報キャッシュ部，  １３１  マッピングテーブル，  １３２  負荷分布テーブル，  １４１  音声データFIFO部，  １４２  画像データFIFO部，  １４３  処理結果画像データFIFO部，  １６１  負荷計算部，  １６２  比率計算部，  １６３  分担確定部，  １７１  表示部
【図１】
2006011696.tif 000004
【図２】
2006011696.tif 000005
【図３】
2006011696.tif 000006
【図４】
2006011696.tif 000007
【図５】
2006011696.tif 000008
【図６】
2006011696.tif 000009
【図７】
2006011696.tif 000010
【図８】
2006011696.tif 000011
【図９】
2006011696.tif 000012
【図１０】
2006011696.tif 000013
【図１１】
2006011696.tif 000014
【図１２】
2006011696.tif 000015
【図１３】
2006011696.tif 000016
【図１４】
2006011696.tif 000017
【図１５】
2006011696.tif 000018
【図１６】
2006011696.tif 000019
【図１７】
2006011696.tif 000020