(57)【要約】【課題】パノラマ画像の生成から表示までにレイテンシが発生し、ヘッドマウントディスプレイを装着したユーザは酔いを感じることがある。【解決手段】位置・回転情報取得部７３０は、ヘッドマウントディスプレイ１００を装着したユーザの頭部の位置および回転に関する情報を取得する。座標変換部７４０およびパノラマ画像処理部７５０は、位置・回転情報取得部７３０によってある時刻において取得された位置および回転に関する情報を用いて、ヘッドマウントディスプレイに表示されるべき画像を生成する。補正処理部７８０は、別の時刻における更新された位置および回転に関する情報を用いて、生成された画像を補正する。【選択図】図４
2015095045.tif 000002
【特許請求の範囲】
【請求項１】
視点位置および視線方向の少なくとも一方に関する情報を取得する取得部と、
前記取得部によってある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて、画像を生成する画像生成部と、
前記取得部から別の時刻において更新された視点位置および視線方向の少なくとも一方に関する情報を受け取り、更新された視点位置および視線方向の少なくとも一方に関する情報を用いて、前記画像生成部により生成された画像を補正する補正処理部とを含むことを特徴とする画像生成装置。
【請求項２】
前記画像生成部は、ワールド座標系をビュー座標系に変換するビュー変換を、ある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて行うことにより、前記画像を生成し、
前記補正処理部は、前記画像生成部により生成された画像を補正するために、前記ビュー変換の逆変換を、ある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて行うことにより、ビュー座標系をいったんワールド座標系に戻した後、前記ビュー変換を、別の時刻における更新された視点位置および視線方向の少なくとも一方に関する情報を用いて行うことにより、再びビュー座標系に変換することを特徴とする請求項１に記載の画像生成装置。
【請求項３】
ネットワークを介してサーバに接続されたクライアントに実装される画像生成装置であって、
視点位置および視線方向の少なくとも一方に関する情報を含む視野情報を取得する取得部と、
前記取得部によってある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて生成された画像を前記サーバから受信し、前記取得部から別の時刻における更新された視点位置および視線方向の少なくとも一方に関する情報を受け取り、更新された視点位置および視線方向の少なくとも一方に関する情報を用いて、受信された画像を補正する補正処理部とを含むことを特徴とする画像生成装置。
【請求項４】
ヘッドマウントディスプレイを装着したユーザの頭部の位置および回転の少なくとも一方に関する情報を取得する取得部と、
前記取得部によってある時刻において取得された位置および回転の少なくとも一方に関する情報を用いて、ヘッドマウントディスプレイに表示されるべき画像を生成する画像生成部と、
前記取得部から別の時刻における更新された位置および回転の少なくとも一方に関する情報を受け取り、更新された位置および回転の少なくとも一方に関する情報を用いて、前記画像生成部により生成された画像を補正する補正処理部とを含むことを特徴とする画像生成装置。
【請求項５】
前記画像生成部は、ヘッドマウントディスプレイの基準座標系から、ヘッドマウントディスプレイの移動座標系へ変換する座標変換を、ある時刻において取得された位置および回転の少なくとも一方に関する情報を用いて行うことにより、前記画像を生成し、
前記補正処理部は、前記画像生成部により生成された画像を補正するために、前記座標変換の逆変換を、ある時刻において取得された位置および回転の少なくとも一方に関する情報を用いて行うことにより、移動座標系をいったん基準座標系に戻した後、前記座標変換を、別の時刻における更新された位置および回転の少なくとも一方に関する情報を用いて行うことにより、再び移動座標系に変換することを特徴とする請求項４に記載の画像生成装置。
【請求項６】
前記補正処理部は、ヘッドマウントディスプレイのフレームレートに合わせた頻度で、前記取得部から更新された位置および回転の少なくとも一方に関する情報を受け取り、更新された位置および回転の少なくとも一方に関する情報を用いて、前記画像生成部により生成された画像を補正することを特徴とする請求項４または５に記載の画像生成装置。
【請求項７】
視点位置および視線方向の少なくとも一方に関する情報を取得する取得ステップと、
前記取得ステップによってある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて、画像を生成する画像生成ステップと、
別の時刻における更新された視点位置および視線方向の少なくとも一方に関する情報を受け取り、更新された視点位置および視線方向の少なくとも一方に関する情報を用いて、前記画像生成ステップにより生成された画像を補正する補正処理ステップとを含むことを特徴とする画像生成方法。
【請求項８】
ヘッドマウントディスプレイを装着したユーザの頭部の位置および回転の少なくとも一方に関する情報を取得する取得ステップと、
前記取得ステップによってある時刻において取得された位置および回転の少なくとも一方に関する情報を用いて、ヘッドマウントディスプレイに表示されるべき画像を生成する画像生成ステップと、
別の時刻における更新された位置および回転の少なくとも一方に関する情報を受け取り、更新された位置および回転に関する情報を用いて、前記画像生成ステップにより生成された画像を補正する補正処理ステップとを含むことを特徴とする画像生成方法。
【請求項９】
視点位置および視線方向の少なくとも一方に関する情報を取得する取得ステップと、
前記取得ステップによってある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて、画像を生成する画像生成ステップと、
別の時刻における更新された視点位置および視線方向の少なくとも一方に関する情報を受け取り、更新された視点位置および視線方向の少なくとも一方に関する情報を用いて、前記画像生成ステップにより生成された画像を補正する補正処理ステップとをコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
ヘッドマウントディスプレイを装着したユーザの頭部の位置および回転の少なくとも一方に関する情報を取得する取得ステップと、
前記取得ステップによってある時刻において取得された位置および回転の少なくとも一方に関する情報を用いて、ヘッドマウントディスプレイに表示されるべき画像を生成する画像生成ステップと、
別の時刻における更新された位置および回転の少なくとも一方に関する情報を受け取り、更新された位置および回転の少なくとも一方に関する情報を用いて、前記画像生成ステップにより生成された画像を補正する補正処理ステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像を生成し補正する装置および方法に関する。
【背景技術】
【０００２】
ゲーム機に接続されたヘッドマウントディスプレイ（ＨＭＤ）を頭部に装着して、ヘッドマウントディスプレイに表示された画面を見ながら、コントローラなどを操作してゲームプレイすることが行われている。ゲーム機に接続された通常の据え置き型のディスプレイでは、ディスプレイの画面の外側にもユーザの視野範囲が広がっているため、ディスプレイの画面に集中できなかったり、ゲームへの没入感に欠けることがある。その点、ヘッドマウントディスプレイを装着すると、ヘッドマウントディスプレイに表示される映像以外はユーザは見ないため、映像世界への没入感が高まり、ゲームのエンタテインメント性を一層高める効果がある。
【０００３】
また、ヘッドマウントディスプレイにパノラマ画像を表示させ、ヘッドマウントディスプレイを装着したユーザが頭部を回転させると、３６０度のパノラマ画像や仮想空間が表示されるようにすると、さらに映像への没入感が高まり、ゲームなどのアプリケーションの操作性も向上する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このようにヘッドマウントディスプレイにヘッドトラッキング機能をもたせて、ユーザの頭部の動きと連動して視点や視線方向を変えてパノラマ画像を生成した場合、パノラマ画像の生成から表示までにレイテンシがあるため、パノラマ画像生成時に前提としたユーザの頭部の向きと、パノラマ画像をヘッドマウントディスプレイに表示した時点でのユーザの頭部の向きとの間でずれが発生し、ユーザは酔ったような感覚に陥ることがある。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、画像の生成から表示までのレイテンシを低減した補正画像を表示することのできる画像生成装置および画像生成方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の画像生成装置は、視点位置および視線方向の少なくとも一方に関する情報を取得する取得部と、前記取得部によってある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて、画像を生成する画像生成部と、前記取得部から別の時刻において更新された視点位置および視線方向の少なくとも一方に関する情報を受け取り、更新された視点位置および視線方向の少なくとも一方に関する情報を用いて、前記画像生成部により生成された画像を補正する補正処理部とを含む。
【０００７】
本発明の別の態様もまた、画像生成装置である。この装置は、ネットワークを介してサーバに接続されたクライアントに実装される画像生成装置であって、視点位置および視線方向の少なくとも一方に関する情報を含む視野情報を取得する取得部と、前記取得部によってある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて生成された画像を前記サーバから受信し、前記取得部から別の時刻における更新された視点位置および視線方向の少なくとも一方に関する情報を受け取り、更新された視点位置および視線方向の少なくとも一方に関する情報を用いて、受信された画像を補正する補正処理部とを含む。
【０００８】
本発明のさらに別の態様もまた、画像生成装置である。この装置は、ヘッドマウントディスプレイを装着したユーザの頭部の位置および回転の少なくとも一方に関する情報を取得する取得部と、前記取得部によってある時刻において取得された位置および回転の少なくとも一方に関する情報を用いて、ヘッドマウントディスプレイに表示されるべき画像を生成する画像生成部と、前記取得部から別の時刻における更新された位置および回転の少なくとも一方に関する情報を受け取り、更新された位置および回転の少なくとも一方に関する情報を用いて、前記画像生成部により生成された画像を補正する補正処理部とを含む。
【０００９】
本発明のさらに別の態様は、画像生成方法である。この方法は、視点位置および視線方向の少なくとも一方に関する情報を取得する取得ステップと、前記取得ステップによってある時刻において取得された視点位置および視線方向の少なくとも一方に関する情報を用いて、画像を生成する画像生成ステップと、別の時刻における更新された視点位置および視線方向の少なくとも一方に関する情報を受け取り、更新された視点位置および視線方向の少なくとも一方に関する情報を用いて、前記画像生成ステップにより生成された画像を補正する補正処理ステップとを含む。
【００１０】
本発明のさらに別の態様もまた、画像生成方法である。この方法は、ヘッドマウントディスプレイを装着したユーザの頭部の位置および回転の少なくとも一方に関する情報を取得する取得ステップと、前記取得ステップによってある時刻において取得された位置および回転の少なくとも一方に関する情報を用いて、ヘッドマウントディスプレイに表示されるべき画像を生成する画像生成ステップと、別の時刻における更新された位置および回転の少なくとも一方に関する情報を受け取り、更新された位置および回転に関する情報を用いて、前記画像生成ステップにより生成された画像を補正する補正処理ステップとを含む。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、画像の生成から表示までのレイテンシを低減した補正画像を表示することができる。
【図面の簡単な説明】
【００１３】
【図１】ヘッドマウントディスプレイの外観図である。
【図２】ヘッドマウントディスプレイの機能構成図である。
【図３】実施の形態に係るパノラマ画像生成システムの構成図である。
【図４】実施の形態に係るパノラマ画像生成装置の機能構成図である。
【図５】ヘッドマウントディスプレイに表示されるパノラマ画像を説明する図である。
【図６】ヘッドマウントディスプレイに表示されるパノラマ画像に補正処理が必要である理由を説明する図である。
【図７】補正処理を行わない従来の画像生成処理を説明するシーケンス図である。
【図８】実施の形態の補正処理を伴う画像生成処理を説明するシーケンス図である。
【図９Ａ】トラッキング座標系とＨＭＤ座標系の関係を説明する図である。
【図９Ｂ】ＨＭＤ座標系と視野座標系の関係を説明する図である。
【図１０】ヘッドマウントディスプレイを装着したユーザの視野を説明する図である。
【図１１】図４のパノラマ画像生成装置によるパノラマ画像生成手順を説明するフローチャートである。
【図１２】実施の形態の画像補正処理を説明する図である。
【図１３】実施の形態の変形例の画像補正処理を説明する図である。
【発明を実施するための形態】
【００１４】
（第１の実施の形態）
図１は、ヘッドマウントディスプレイ１００の外観図である。ヘッドマウントディスプレイ１００は、本体部１１０、前頭部接触部１２０、および側頭部接触部１３０を含む。
【００１５】
ヘッドマウントディスプレイ１００は、ユーザの頭部に装着してディスプレイに表示される静止画や動画などを鑑賞し、ヘッドホンから出力される音声や音楽などを聴くための表示装置である。
【００１６】
ヘッドマウントディスプレイ１００に内蔵または外付けされたＧＰＳ（Global Positioning System）などの位置センサによりユーザの位置情報を計測することができる。また、ヘッドマウントディスプレイ１００に内蔵または外付けされた姿勢センサによりヘッドマウントディスプレイ１００を装着したユーザの頭部の回転角や傾きといった姿勢情報を計測することができる。
【００１７】
本体部１１０には、ディスプレイ、位置情報取得センサ、姿勢センサ、通信装置などが含まれる。前頭部接触部１２０および側頭部接触部１３０には、オプションとして、ユーザの体温、脈拍、血液成分、発汗、脳波、脳血流などの生体情報を計測することのできる生体情報取得センサをもたせてもよい。
【００１８】
ヘッドマウントディスプレイ１００には、さらに、ユーザの目を撮影するカメラが設けられてもよい。ヘッドマウントディスプレイ１００に搭載されたカメラにより、ユーザの視線、瞳孔の動き、瞬きなどを検出することができる。
【００１９】
ここでは、ヘッドマウントディスプレイ１００に表示される画像の生成方法を説明するが、本実施の形態の画像生成方法は、狭義のヘッドマウントディスプレイ１００に限らず、めがね、めがね型ディスプレイ、めがね型カメラ、ヘッドフォン、ヘッドセット（マイクつきヘッドフォン）、イヤホン、イヤリング、耳かけカメラ、帽子、カメラつき帽子、ヘアバンドなどを装着した場合にも適用することができる。
【００２０】
図２は、ヘッドマウントディスプレイ１００の機能構成図である。
【００２１】
制御部１０は、画像信号、センサ信号などの信号や、命令やデータを処理して出力するメインプロセッサである。入力インタフェース２０は、タッチパネルおよびタッチパネルコントローラから操作信号や設定信号を受け付け、制御部１０に供給する。出力インタフェース３０は、制御部１０から画像信号を受け取り、ディスプレイに表示させる。バックライト３２は、液晶ディスプレイにバックライトを供給する。
【００２２】
通信制御部４０は、ネットワークアダプタ４２またはアンテナ４４を介して、有線または無線通信により、制御部１０から入力されるデータを外部に送信する。通信制御部４０は、また、ネットワークアダプタ４２またはアンテナ４４を介して、有線または無線通信により、外部からデータを受信し、制御部１０に出力する。
【００２３】
記憶部５０は、制御部１０が処理するデータやパラメータ、操作信号などを一時的に記憶する。
【００２４】
ＧＰＳユニット６０は、制御部１０からの操作信号にしたがって、ＧＰＳ衛星から位置情報を受信して制御部１０に供給する。無線ユニット６２は、制御部１０からの操作信号にしたがって、無線基地局から位置情報を受信して制御部１０に供給する。
【００２５】
姿勢センサ６４は、ヘッドマウントディスプレイ１００の本体部１１０の回転角や傾きなどの姿勢情報を検出する。姿勢センサ６４は、ジャイロセンサ、加速度センサ、角加速度センサなどを適宜組み合わせて実現される。
【００２６】
外部入出力端子インタフェース７０は、ＵＳＢ（Universal Serial Bus）コントローラなどの周辺機器を接続するためのインタフェースである。外部メモリ７２は、フラッシュメモリなどの外部メモリである。
【００２７】
時計部８０は、制御部１０からの設定信号によって時間情報を設定し、時間データを制御部１０に供給する。
【００２８】
制御部１０は、画像やテキストデータを出力インタフェース３０に供給してディスプレイに表示させたり、通信制御部４０に供給して外部に送信させることができる。
【００２９】
図３は、本実施の形態に係るパノラマ画像生成システムの構成図である。ヘッドマウントディスプレイ１００は、無線通信またはＵＳＢなどの周辺機器を接続するインタフェースでゲーム機２００に接続される。ゲーム機２００は、さらにネットワークを介してサーバに接続されてもよい。その場合、サーバは、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションをゲーム機２００に提供してもよい。ヘッドマウントディスプレイ１００は、ゲーム機２００の代わりに、コンピュータや携帯端末に接続されてもよい。
【００３０】
図４は、本実施の形態に係るパノラマ画像生成装置７００の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００３１】
パノラマ画像生成装置７００は、ヘッドマウントディスプレイ１００が接続されたゲーム機２００に実装されるが、パノラマ画像生成装置７００の少なくとも一部の機能をヘッドマウントディスプレイ１００の制御部１０に実装してもよい。特に後述の補正処理部７８０の機能をヘッドマウントディスプレイ１００側に実装してもよい。あるいは、パノラマ画像生成装置７００の少なくとも一部の機能を、ネットワークを介してゲーム機２００に接続されたサーバに実装してもよい。
【００３２】
ズーム指示取得部７１０は、ヘッドマウントディスプレイ１００の入力インタフェース２０を介してユーザが指示するズームの倍率を取得する。ズーム指示取得部７１０が取得したズーム倍率は感度調整部７２０とパノラマ画像処理部７５０に供給される。
【００３３】
位置・回転情報取得部７３０は、ヘッドマウントディスプレイ１００のＧＰＳユニット６０やモーションセンサにより検知される位置情報と姿勢センサ６４により検知される姿勢情報にもとづいて、ヘッドマウントディスプレイ１００を装着したユーザの頭部の位置と回転に関する情報を取得する。ユーザの頭部の位置は、ゲーム機２００のカメラによりヘッドマウントディスプレイ１００の動きを検出することにより取得されてもよい。
【００３４】
位置・回転情報取得部７３０は、感度調整部７２０から指示された感度にもとづいて、ユーザの頭部の位置と回転を取得する。たとえば、ユーザが首を回すと、姿勢センサ６４によりユーザの頭部の角度の変化が検出されるが、感度調整部７２０は、角度の変化が所定の値を超えるまでは検出された角度の変化を無視するように位置・回転情報取得部７３０に指示する。
【００３５】
また、感度調整部７２０は、ズーム指示取得部７１０から取得されたズーム倍率にもとづいて頭部の角度検出の感度を調整する。ズーム倍率が大きくなるほど、頭部の角度検出の感度を下げる。ズームすると、画角が小さくなるため、頭部の角度検出感度を下げることで頭部の揺れによる表示画像の振動を抑えることができる。
【００３６】
モーションセンサとして、３軸地磁気センサ、３軸加速度センサおよび３軸ジャイロ（角速度）センサの少なくとも１つ以上の組み合わせを用いて、ユーザの頭部の前後、左右、上下の動きを検出してもよい。また、ユーザの頭部の位置情報を組み合わせて頭部の動き検出の精度を向上させてもよい。
【００３７】
座標変換部７４０は、位置・回転情報取得部７３０により取得されたヘッドマウントディスプレイ１００の位置および回転を用いて、トラッキング機能付きのヘッドマウントディスプレイ１００に表示すべき画像を生成するための座標変換を行う。
【００３８】
パノラマ画像処理部７５０は、パノラマ画像記憶部７６０からパノラマ画像データを読み出し、座標変換部７４０による座標変換にしたがって、ヘッドマウントディスプレイ１００の位置および回転に応じたパノラマ画像を、ズーム指示取得部７１０から指定されたズーム倍率で生成し、補正処理部７８０に与える。ここで、パノラマ画像データは、事前に作成された動画または静止画コンテンツであってもよく、レンダリングされたコンピュータグラフィックスであってもよい。
【００３９】
補正処理部７８０は、位置・回転情報取得部７３０からヘッドマウントディスプレイ１００の最新の更新された位置および回転を取得し、パノラマ画像処理部７５０が生成した画像を最新の更新された位置および回転を用いて補正する。この補正処理の詳細については後述する。
【００４０】
補正処理部７８０は、補正後の画像を画像提供部７７０に与える。画像提供部７７０は、パノラマ画像処理部７５０により生成されたパノラマ画像データをヘッドマウントディスプレイ１００に供給する。
【００４１】
図５は、ヘッドマウントディスプレイ１００に表示されるパノラマ画像５００を説明する図である。パノラマ画像５００に対して、ユーザが左前方を向いている場合、ヘッドマウントディスプレイ１００ａの方向で画角１５０ａの範囲にある画像５１０ａが表示され、ユーザが首を回して右前方を向いている場合、ヘッドマウントディスプレイ１００ｂの方向で画角１５０ｂの範囲にある画像５１０ｂが表示される。
【００４２】
このように頭部の動きに応じてヘッドマウントディスプレイ１００に表示されるパノラマ画像を見る視点と視線方向も変わるため、パノラマ画像に対する没入感を高めることができる。
【００４３】
図６は、ヘッドマウントディスプレイ１００に表示されるパノラマ画像に補正処理が必要である理由を説明する図である。ユーザが首を回して右前方を向いた場合、ヘッドマウントディスプレイ１００ｂの方向で画角１５０ｂの範囲にある画像５１０ｂを生成し、ヘッドマウントディスプレイ１００に表示するが、画像５１０ｂの表示の時点では、既にヘッドマウントディスプレイ１００ｂの位置と回転が符号１５０ｃで示すように変化している。そのため、本来は画角１５０ｃの範囲で見える画像をヘッドマウントディスプレイ１００ｃに表示する必要があるが、実際に生成されて表示される画像は、少し前の時点のヘッドマウントディスプレイ１００ｂの方向で画角１５０ｂの範囲で見える画像となってしまう。この時間差によるずれのため、ユーザが見ている方向とは少しずれた画像がヘッドマウントディスプレイ１００に表示され、ユーザはある種の「酔い」を感じることがある。
【００４４】
本実施の形態では、このずれを解消するために生成された画像を補正する処理を行う。まず比較のために、図７を参照して、補正処理を行わない従来の画像生成処理を説明し、その後、図８を参照して本実施の形態の補正処理を説明する。
【００４５】
図７は、補正処理を行わない従来の画像生成処理を説明するシーケンス図である。
【００４６】
パノラマ画像生成装置７００は、３次元オブジェクトやテクスチャなどのアセットの準備を行い、時刻ｔ１におけるヘッドマウントディスプレイ１００の位置ｐ１と回転ｑ１を取得する。アセット準備と並行して、時刻ｔ１における位置ｐ１と回転ｑ１での画像を描画する処理を行う。たとえば、６０フレーム／秒でレンダリングする場合は、１フレームの画像を生成するために約１６ミリ秒かかる。
【００４７】
パノラマ画像生成装置７００が生成した画像はヘッドマウントディスプレイ１００に供給される。ヘッドマウントディスプレイ１００とパノラマ画像生成装置７００は、有線又は無線で接続されており、パノラマ画像生成装置７００からヘッドマウントディスプレイ１００への画像の供給には一定の伝送時間を要する。パノラマ画像生成装置７００とヘッドマウントディスプレイ１００がネットワークを介して接続されている場合は、ネットワーク遅延が発生する。
【００４８】
ヘッドマウントディスプレイ１００は、パノラマ画像生成装置７００が生成した画像を取得して、パネルに表示するためのスキャンなどの表示処理を行う。この表示処理のために遅延が発生し、画像が時刻ｔ’においてパネルに表示される。
【００４９】
このように、時刻ｔ１においてヘッドマウントディスプレイ１００の位置ｐ１、回転ｑ１をパノラマ画像生成装置７００に提供してから、時刻ｔ’においてヘッドマウントディスプレイ１００のパネルに画像が表示されるまでに、レンダリング、画像伝送、表示処理に一定の時間を要し、図７に示すようにレイテンシが発生する。画像生成のためにヘッドマウントディスプレイ１００の位置と回転を与えた時刻ｔ１と、ヘッドマウントディスプレイ１００に画像が表示される時刻ｔ’の間にも、ヘッドマウントディスプレイ１００を装着したユーザは移動したり、姿勢を変えている。その結果、ユーザは時間差分Δｔ＝ｔ’−ｔ１だけ過去のヘッドマウントディスプレイ１００の位置および回転における画像を見ることになり、表示されている画像が前提とする位置・回転と、現在の位置・回転とのずれのゆえに、ユーザは「酔い」を感じてしまう。
【００５０】
図８は、本実施の形態の補正処理を伴う画像生成処理を説明するシーケンス図である。
【００５１】
パノラマ画像生成装置７００がヘッドマウントディスプレイ１００から時刻ｔ１における位置ｐ１と回転ｑ１を取得して、アセット準備と描画処理を行い、生成された画像をヘッドマウントディスプレイ１００に提供するところまでは、図７の従来の画像生成処理と同じである。本実施の形態では、パノラマ画像生成装置７００がヘッドマウントディスプレイ１００に画像を提供する時点ｔ２において、生成された画像に対して補正処理を行う。この補正処理はヘッドマウントディスプレイ１００、パノラマ画像生成装置７００のどちらで行われてもよい。ヘッドマウントディスプレイ１００が十分な処理性能をもっている場合はヘッドマウントディスプレイ１００において補正処理を行うことができるが、そうではない場合は、パノラマ画像生成装置７００が補正処理を行い、補正後の画像をヘッドマウントディスプレイ１００に提供する。
【００５２】
補正処理は、画像が生成された時刻ｔ２におけるヘッドマウントディスプレイ１００の位置ｐ２と回転ｑ２の情報を取得し、レンダリング開始時の時刻ｔ１と最新の時刻ｔ２の間でのヘッドマウントディスプレイ１００の位置と回転のずれにもとづいて、画像を補正する。ヘッドマウントディスプレイ１００は補正された画像を表示処理し、パネルに表示する。これにより、みかけ上のレイテンシは、図１１に示すように時刻ｔ２と時刻ｔ’の差に低減される。
【００５３】
以下、本実施の形態の補正処理を詳述するが、まず前提となる技術事項を説明する。
【００５４】
（１）座標系
図９Ａおよび図９Ｂは、ヘッドマウントディスプレイ１００で使用する座標系を説明する図である。ヘッドマウントディスプレイ１００では、トラッキング座標系８０２と、ＨＭＤ座標系８０４と、左右の視野座標系８０６とを用いる。
【００５５】
図９Ａは、トラッキング座標系８０２とＨＭＤ座標系８０４の関係を説明する図である。
【００５６】
トラッキング座標系８０２は、ヘッドマウントディスプレイ１００の位置ｐと回転ｑの基準となる座標系である。直交座標系であればよく、各軸をどの方向に選んでもよく、原点も任意である。ヘッドマウントディスプレイ１００において採用するセンサに都合のよいものを選ぶ。たとえば、ゲームなどのアプリケーションの開始時に、ヘッドマウントディスプレイ１００を装着したユーザに基準となる位置で基準となる姿勢を取ってもらい、そのときのヘッドマウントディスプレイ１００のセンサ情報からヘッドマウントディスプレイ１００の基準位置ｐ０、基準回転ｑ０を取得してトラッキング座標系８０２を定めてもよい。
【００５７】
また、ユーザは、ゲーム機２００のモーションコントローラ３５０を手にもってもよい。ユーザは、ヘッドマウントディスプレイ１００を装着した状態でモーションコントローラ３５０を操作する。ゲームアプリケーションによってはモーションコントローラ３５０をもちながら手を動かしたり、体を移動させたりすることがある。モーションコントローラ３５０には、３軸のジャイロセンサ、３軸の加速度センサ、および磁気センサを含まれる。
【００５８】
モーションコントローラ３５０にはマーカ３００が付けられており、ゲーム機２００に接続されたカメラによりマーカ３００の位置を検出し、モーションコントローラ３５０のセンサから得られる位置情報と相まって、マーカ３００の３次元座標を正確に特定することができる。このマーカ３００の３次元座標にヘッドマウントディスプレイ１００のトラッキング座標系８０２を設定することで、モーションコントローラ３５０の動きによって制御される仮想オブジェクトの位置・姿勢と、ヘッドマウントディスプレイ１００の動きによって制御されるパノラマ画像５００を見る視点・視線方向とを同期して処理することができる。
【００５９】
ＨＭＤ座標系８０４は、ユーザが装着するヘッドマウントディスプレイ１００に配置されたディスプレイパネルなどのデバイスの位置を表すための移動座標系である。原点および軸に制限はないが、便宜上、原点はユーザの頭の中心となるように定義し、軸は、ヘッドマウントディスプレイ１００を頭にかぶった状態で上下方向の上向きをＹ軸、正面から右方向をＸ軸、正面から手前に向かう方向をＺ軸とする。
【００６０】
ユーザはヘッドマウントディスプレイ１００を装着した状態で実空間を移動したり、体の向きを変えたり、頭部を回転させたりする。アプリケーションの開始時には初期位置ｐ０および初期回転ｑ０にあったヘッドマウントディスプレイ１００が時間とともに移動し、図９Ａに示すように、現在はヘッドマウントディスプレイ１００は位置ｐ、回転ｑにある。
【００６１】
図９Ｂは、ＨＭＤ座標系８０４と視野座標系８０６の関係を説明する図である。
【００６２】
ＨＭＤ座標系８０４は、前述のように、ヘッドマウントディスプレイ１００を装着したユーザの頭頂を原点として、上向きをＹ軸、正面から右方向をＸ軸、正面から手前に向かう方向をＺ軸とする座標系である。他方、視野座標系８０６は、左目用および右目用のディスプレイの方向を定めるための座標系である。左右いずれかの目から右方向をＸ軸、上方向をＹ軸、正面から手前に向かう方向をＺ軸とする。
【００６３】
（２）座標変換
画像をヘッドマウントディスプレイ１００のパネルに表示するために３つの座標変換が介在する。いずれもアフィン変換である。
【００６４】
まず、画像生成座標系（ＣＧではカメラ座標系）をトラッキング座標系８０２に変換する。これにより、現実または仮想のオブジェクトが存在する現実世界または仮想世界をカメラから見たビュー座標系がヘッドマウントディスプレイ１００の基準位置と基準回転を表すトラッキング座標系にマッピングされる。
【００６５】
次に、ヘッドマウントディスプレイ１００の現在の位置ｐと回転ｑの値をセンサ情報から取得して、トラッキング座標系８０２をＨＭＤ座標系８０４に変換する。これにより、ヘッドマウントディスプレイ１００の基準位置と基準回転が現在の位置と回転に変換される。
【００６６】
最後に、ＨＭＤ座標系８０４を視野座標系８０６に変換する。この変換は、ヘッドマウントディスプレイ１００を装着している人物と状態によって決まる変換であり、ヘッドマウントディスプレイ１００を装着している間は固定である。これにより、ヘッドマウントディスプレイ１００のユーザの目の位置に合った座標系に変換される。
【００６７】
画像生成の際には、トラッキング座標系８０２からＨＭＤ座標系８０４を経由して、視野座標系８０６へ変換する座標変換が用いられるが、補正処理の際には、視野座標系８０６からＨＭＤ座標系８０４を経由して、トラッキング座標系８０２へ逆変換する座標変換が用いられる。
【００６８】
（３）ヘッドマウントディスプレイ１００の視野角データ
図１０は、ヘッドマウントディスプレイ１００を装着したユーザの視野を説明する図である。目の中心から上下左右に広がる視野（field of view）を４つのパラメータＦｏＶｕ、ＦｏＶｂ、ＦｏＶｌ、ＦｏＶｒで定め、視野角の情報をこれらのパラメータを用いてアークタンジェントで定義する。右目用の視野と左目用の視野でそれぞれ同様に定義するため、合計で８個のパラメータが用いられる。
【００６９】
次に、本実施の形態のパノラマ画像生成装置７００によってヘッドマウントディスプレイ１００に表示される画像を生成する手順の概略を説明する。詳細な計算式については後述する。
【００７０】
図１１は、パノラマ画像生成装置７００によるパノラマ画像生成手順を説明するフローチャートである。
【００７１】
初期化処理として、画像生成座標系からトラッキング座標系への座標変換行列を生成する（Ｓ１０）。これは、ヘッドマウントディスプレイ１００の動きの基準となる位置と回転を決める作業である。ユーザの指示した位置でヘッドマウントディスプレイ１００のセンサ情報から初期位置ｐ０と初期回転ｑ０を取得し、その値を用いて画像生成座標系からトラッキング座標系への座標変換行列を求める。例えばレースゲームでゲーム内の車に座った姿勢を基準とするために、レース開始時に椅子に座ってまっすぐ向いた状態をユーザに取らせ、その位置と回転を基準とする。
【００７２】
ヘッドマウントディスプレイ１００のセンサ情報から、時刻ｔ１におけるヘッドマウントディスプレイ１００の位置ｐ１と回転ｑ１を取得する（Ｓ１２）。ヘッドマウントディスプレイ１００は、時刻ｔ１における位置ｐ１と回転ｑ１をパノラマ画像生成装置７００に与える（Ｓ１４）。
【００７３】
パノラマ画像生成装置７００は、時刻ｔ１において位置ｐ１と回転ｑ１にあるヘッドマウントディスプレイ１００のディスプレイに表示すべき画像をレンダリングする（Ｓ１６）。
【００７４】
具体的には、位置・回転情報取得部７３０は、ヘッドマウントディスプレイ１００から時刻ｔ１における位置ｐ１と回転ｑ１を取得する。座標変換部７４０が画像生成座標系（カメラ座標系）からトラッキング座標系８０２、ＨＭＤ座標系８０４を経由し視野座標系８０６に変換することにより、パノラマ画像処理部７５０は、左右の目ごとにパノラマ画像を描画する。ここで、トラッキング座標系８０２からＨＭＤ座標系８０４への変換の際、位置・回転情報取得部７３０が取得した時刻ｔ１におけるヘッドマウントディスプレイ１００の位置ｐ１および回転ｑ１から生成されるアフィン変換を使用する。視野角はヘッドマウントディスプレイ１００から取得した視野角情報に合わせる。
【００７５】
パノラマ画像生成装置７００による時刻ｔ１におけるレンダリングが完了した後、ヘッドマウントディスプレイ１００のセンサ情報から、時刻ｔ２におけるヘッドマウントディスプレイ１００の位置ｐ２と回転ｑ２を取得する（Ｓ１８）。ヘッドマウントディスプレイ１００は、時刻ｔ２における位置ｐ２と回転ｑ２をパノラマ画像生成装置７００に与える（Ｓ２０）。
【００７６】
パノラマ画像生成装置７００が画像をレンダリングしている間も、ヘッドマウントディスプレイ１００を装着したユーザは、移動したり、向きを変えたりするため、ヘッドマウントディスプレイ１００の時刻ｔ２における位置ｐ２と回転ｑ２は、時刻ｔ１における位置ｐ１と回転ｑ１とは少しずれている。
【００７７】
パノラマ画像生成装置７００は、時刻ｔ１と時刻ｔ２の間のヘッドマウントディスプレイ１００の位置と回転のずれを吸収するために、レンダリングされた画像を補正する処理を行う（Ｓ２２）。
【００７８】
具体的には、位置・回転情報取得部７３０はヘッドマウントディスプレイ１００から最新の時刻ｔ２における更新された位置ｐ２と回転ｑ２を取得し、補正処理部７８０に与える。補正処理部７８０は、さらに、座標変換部７４０がアフィン変換を作成するために利用したヘッドマウントディスプレイ１００の時刻ｔ１における位置ｐ１および回転ｑ１を位置・回転情報取得部７３０から取得する。また、補正処理部７８０は、ヘッドマウントディスプレイ１００のディスプレイの描画画角を示す視野角データを取得する。補正処理部７８０は、パノラマ画像処理部７５０から生成された画像を取得し、時刻ｔ１における位置ｐ１、回転ｑ１での視野座標系上にある長方形を、時刻ｔ２における位置ｐ２、回転ｑ２での視野座標系でレンダリングする。
【００７９】
時刻ｔ１における位置ｐ１、回転ｑ１での視野座標系の長方形の４頂点の座標は、
（−ＦｏＶｌ×ｄ，ＦｏＶｕ×ｄ，−ｄ）
（−ＦｏＶｌ×ｄ，−ＦｏＶｂ×ｄ，−ｄ）
（ＦｏＶｒ×ｄ，ＦｏＶｕ×ｄ，−ｄ）
（ＦｏＶｒ×ｄ，−ＦｏＶｂ×ｄ，−ｄ）
である（図１１参照）。ここで値ｄとして、ヘッドマウントディスプレイ１００の光学系の焦点距離を用いる。
【００８０】
補正処理部７８０は、この長方形の４頂点を時刻ｔ２における位置ｐ２、回転ｑ２での視野座標系にマッピングする。これは、以下のように座標変換することによりなされる。
【００８１】
（Ａ）まず、時刻ｔ１における位置ｐ１、回転ｑ１の値を用いて、視野座標系をＨＭＤ座標系に逆変換し、さらにそのＨＭＤ座標系をトラッキング座標系に逆変換する。これにより、時刻ｔ１における位置ｐ１、回転ｑ１から見た場合の視野座標系がいったん基準位置ｐ０および基準回転ｑ０におけるトラッキング座標系に戻される。
【００８２】
（Ｂ）次に、時刻ｔ２における位置ｐ２、回転ｑ２の値を用いてトラッキング座標系をＨＭＤ座標系に変換し、さらにそのＨＭＤ座標系を視野座標系に変換する。これにより、基準位置ｐ０および基準回転ｑ０におけるトラッキング座標系が時刻ｔ２における位置ｐ２、回転ｑ２から見た場合の視野座標系に変換される。
【００８３】
（Ａ）および（Ｂ）の座標変換全体を見ると、時刻ｔ１における位置ｐ１、回転ｑ１から見た場合の視野座標系が時刻ｔ２における位置ｐ２、回転ｑ２から見た場合の視野座標系に変換されたことになる。
【００８４】
このように座標変換された視野の矩形に対して、時刻ｔ１における位置ｐ１、回転ｑ１を前提として生成された画像をテクスチャとして貼り付けると、それは時刻ｔ２における位置ｐ２、回転ｑ２での視野座標系から見た補正画像になっている。時刻ｔ１と時刻ｔ２の間にヘッドマウントディスプレイ１００の位置および回転がずれた分を補正した画像がユーザの現在の視野に見えるようになり、時刻ｔ１と時刻ｔ２の時間差分のレイテンシーが吸収され、ユーザの「酔い」が軽減される。
【００８５】
画像提供部７７０は、補正処理部７８０により補正された画像データをヘッドマウントディスプレイ１００に与える（Ｓ２４）。ヘッドマウントディスプレイ１００に補正後のパノラマ画像が表示される（Ｓ２６）。その後、ステップＳ１２に戻って、それ以降の処理が繰り返される。
【００８６】
以下、補正処理部７８０による補正処理について数式を用いて詳細に説明する。
【００８７】
前提として、ヘッドマウントディスプレイ１００の絶対的な基準からの位置と回転の情報をセンサが提供できるものとする。センサとして、ヘッドマウントディスプレイ１００のＧＰＳユニット６０および姿勢センサ６４が用いられる。またモーションコントローラ３５０が用いられてもよい。ヘッドマウントディスプレイ１００を装着したユーザの動きに応じて位置ｐと回転ｑは変化する。ヘッドマウントディスプレイ１００は、剛体であり、点ではないが、位置ｐはヘッドマウントディスプレイ１００上の固定された一点の位置として定義する。以下、この固定された一点をヘッドマウントディスプレイ１００の中心点と呼ぶ。
【００８８】
ＨＭＤ位置回転行列Ｈは、ヘッドマウントディスプレイ１００の位置ｐと回転ｑを用いて、平行移動行列Ｔと回転行列Ｒから次式で求められる。
（数１）
Ｈ（ｐ，ｑ）＝Ｔ（−ｐ）×Ｒ（ｑ−１）
ｐ＝（ｔｘ，ｔｙ，ｔｚ）
ｑ＝（ｑ１，ｑ２，ｑ３，ｑ４）
｜ｑ｜＝１
【００８９】
位置ｐは３次元ベクトルであり、回転ｑはクオータニオン（４元数）である。−ｐはｐの各要素を負にしたものであり、ｑ−１はｑの共役（ｑの実部はそのままで、ｑの虚部を負にしたもの）である。
【００９０】
なお、平行移動行列Ｔ（ｐ）による平行移動は、次式により定義される。
【数２】
2015095045.tif 000003
【００９１】
回転行列Ｒ（ｑ）による回転は、次式により定義される。
【数３】
2015095045.tif 000004
【００９２】
クオータニオンを用いたコンピュータグラフィックスに関する３次元回転などの計算方法については「３Ｄ−ＣＧプログラマーのためのクォータニオン入門」（工学社、２００４年１月）に記載されている。
【００９３】
一般的なコンピュータグラフィックスにおける座標変換では、ワールド変換行列Ｗ、カメラ（ビュー）変換行列Ｖ、透視変換行列Ｐを用いて、ワールド座標系の点（ｘ，ｙ，ｚ，１）を投影座標系の点（ｘ’，ｙ’，ｚ’，１）に次式で変換する。
（数４）
（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｗ×Ｖ×Ｐ
【００９４】
ヘッドマウントディスプレイ１００のディスプレイに表示するには、ヘッドマウントディスプレイ１００の位置と回転をトラッキングして、現在のヘッドマウントディスプレイ１００の位置と回転において表示しなければならない。そのため、トラッキング機能付きのヘッドマウントディスプレイ１００用の画像生成では、さらにトラッキング基準変換行列ＢとＨＭＤ位置回転行列ＨとＨＭＤ表示位置行列Ｄを用いて次式の座標変換を行う。なお、ここでは上述の補正処理は行っていない計算を示していることに留意する。
（数５）
（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｗ×Ｖ×Ｂ×Ｈ×Ｄ×Ｐ
【００９５】
ここで、トラッキング基準変換行列Ｂは、カメラ（ビュー）座標系をヘッドマウントディスプレイ１００の基準位置と基準回転におけるトラッキング座標系８０２に変換する行列である。トラッキング基準変換行列Ｂは、基準位置ｐ０、基準回転ｑ０にヘッドマウントディスプレイ１００を置いた時のセンサ情報から作成されるＨＭＤ位置回転行列Ｈの逆行列として求めることができる。
【００９６】
ＨＭＤ位置回転行列Ｈは、トラッキング座標系８０２からＨＭＤ座標系８０４に変換する行列である。ＨＭＤ位置回転行列Ｈ（ｐ，ｑ）は、前述のようにレンダリング開始時にセンサから取得した位置ｐ、回転ｑを用いて、平行移動行列Ｔと回転行列Ｒから生成される。
【００９７】
ＨＭＤ表示位置行列Ｄは、ＨＭＤ座標系８０４を視野座標系８０６に変換する行列である。この行列により、ヘッドマウントディスプレイ１００の頭頂を原点とするＨＭＤ座標系８０４における点が、ヘッドマウントディスプレイ１００を装着したユーザの視点を原点とする視野座標系８０６における点に変換される。この行列は、ヘッドマウントディスプレイ１００の中心点からヘッドマウントディスプレイ１００を装着したユーザの目の位置までの距離と、ユーザの目からディスプレイ中心への向きがヘッドマウントディスプレイ１００の中心軸に対して傾いている回転角度から求められる。ヘッドマウントディスプレイ１００の装着者による目の位置の違いは十分に小さいため、ヘッドマウントディスプレイ１００の機器に対してＨＭＤ表示位置行列Ｄは固定にすることが一般的である。
【００９８】
なお、目の位置に関係するため、ＨＭＤ表示位置行列は左目用と右目用が存在し、左目用、右目用それぞれの画像を生成するために使われる。システムによっては両目で同じ画像を使用するものもあり、その場合は両目用の１つのＨＭＤ表示位置行列を用いる。
【００９９】
透視変換行列Ｐは、ビュー座標からパースペクティブ座標に変換する行列であり、一般的なコンピュータグラフィックスでは画角が自由に決められるが、ヘッドマウントディスプレイ１００では、画角をヘッドマウントディスプレイ１００装着者の画角に合わせる。透視変換行列Ｐはユーザの視野角を示す４つのパラメータＦｏＶｕ、ＦｏＶｂ、ＦｏＶｌ、ＦｏＶｒを用いて次のように定義される。
【数６】
2015095045.tif 000005
【０１００】
ここで、α、βは奥行きのクリッピングで決まり、±１は座標系が左手系か右手系できまる。左目と右目で画角が異なる（一般的には左右対称になる）こともあるため、透視変換行列Ｐは、左右で異なる場合がある。
【０１０１】
補正処理部７８０による補正処理について説明する。補正処理部７８０に与えられる入力は、時刻ｔ１におけるヘッドマウントディスプレイ１００の位置ｐ１、回転ｑ１に対して生成された画像、この画像を生成する際にＨＭＤ位置回転行列Ｈで用いられた位置ｐ１と回転ｑ１、最新の時刻ｔ２におけるヘッドマウントディスプレイ１００の更新された位置ｐ２と回転ｑ２である。
【０１０２】
補正処理部７８０は、時刻ｔ１における位置ｐ１、回転ｑ１に対して生成された画像を投影面にマッピングした矩形画像に対して、次の変換処理を施すことにより、補正画像を生成する。矩形画像の頂点を（ｘ，ｙ，ｚ，１）、補正後の投影座標系における点を（ｘ’，ｙ’，ｚ’，１）とし、補正行列をＣとすると、変換処理は、次のように表すことができる。
（数７）
（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｃ
【０１０３】
ここで、補正行列Ｃは、
Ｃ＝Ｄ−１×Ｈ（ｐ１，ｑ１）−１×Ｈ（ｐ２，ｑ２）×Ｄ×Ｐ
である。
【０１０４】
時刻ｔ１における位置ｐ１、回転ｑ１に対して生成された矩形画像の４頂点は、（−ＦｏＶｌ×ｄ，ＦｏＶｕ×ｄ，−ｄ，１），（−ＦｏＶｌ×ｄ，−ＦｏＶｂ×ｄ，−ｄ，１），（ＦｏＶｒ×ｄ，ＦｏＶｕ×ｄ，−ｄ，１），（ＦｏＶｒ×ｄ，−ＦｏＶｂ×ｄ，−ｄ，１）である。ｄの値として、たとえばヘッドマウントディスプレイ１００の光学系の焦点距離を用いる。
【０１０５】
補正行列Ｃの前半のＤ−１×Ｈ（ｐ１，ｑ１）−１は、ＨＭＤ表示位置行列の逆行列Ｄ−１により視野座標系をＨＭＤ座標系に戻し、時刻ｔ１における位置ｐ１、回転ｑ１を用いたＨＭＤ位置回転行列の逆行列Ｈ（ｐ１，ｑ１）−１によりＨＭＤ座標系をトラッキング座標系に戻すことを意味する。その上で、後半のＨ（ｐ２，ｑ２）×Ｄ×Ｐは、時刻ｔ２における更新された位置ｐ２、回転ｑ２を用いたＨＭＤ位置回転行列Ｈ（ｐ２，ｑ２）によりトラッキング座標系をＨＭＤ座標系に変換し、さらに、ＨＭＤ表示位置行列ＤによりＨＭＤ座標系を視野座標系に変換し、最後に透視変換行列Ｐにより投影座標系に変換することを意味する。
【０１０６】
仮に時刻ｔ１と時刻ｔ２でヘッドマウントディスプレイ１００の位置および回転が変化しない、すなわちｐ１＝ｐ２かつｑ１＝ｑ２であれば、Ｈ（ｐ１，ｑ１）−１×Ｈ（ｐ２，ｑ２）が単位行列になることから、補正行列Ｃは透視変換行列Ｐに等しくなり、補正処理は行われず、単に以下のように透視変換するだけになる。
（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｐ
【０１０７】
しかし、時刻ｔ１と時刻ｔ２でヘッドマウントディスプレイ１００の位置および回転の少なくとも一方が変化する、すなわちｐ１≠ｐ２および／またはｑ１≠ｑ２の場合は、補正行列Ｃは、Ｈ（ｐ１，ｑ１）−１×Ｈ（ｐ２，ｑ２）の計算により、ヘッドマウントディスプレイ１００の位置および／または回転のずれを補正する作用がある。
【０１０８】
このように補正行列Ｃで変換された矩形画像は、時刻ｔ１の位置ｐ１、回転ｑ１に対する投影画像を時刻ｔ２の位置ｐ２、回転ｑ２に対する投影画像に補正したものである。これにより、時刻ｔ１と時刻ｔ２の間にヘッドマウントディスプレイ１００の位置と回転がずれても、画像処理により画像を補正してずれを吸収することができる。
【０１０９】
以下、変形例をいくつか説明する。
【０１１０】
（変形例１）
図１２および図１３を参照して、第１の実施の形態の補正処理の変形例を説明する。図１２は、比較のため、第１の実施の形態の画像補正処理を説明する図である。同図に示すように、パノラマ画像生成装置７００は、時刻ｔ１でヘッドマウントディスプレイ１００の位置ｐ１と回転ｑ１を受け取り、レンダリングを開始する。パノラマ画像生成装置７００は、時刻ｔ２でヘッドマウントディスプレイ１００の最新の位置ｐ２と回転ｑ２を用いて生成された画像を補正処理する。ヘッドマウントディスプレイ１００のパネルのフレームレートが３０フレーム／秒であるとすると、パノラマ画像生成装置７００は、３０フレーム／秒でフレームを生成し、補正処理を行い、ヘッドマウントディスプレイ１００に補正後の画像を提供する。なお、補正処理はヘッドマウントディスプレイ１００側で行われてもよい。
【０１１１】
図１３は、第１の実施の形態の変形例の画像補正処理を説明する図である。パノラマ画像生成装置７００によるレンダリングのフレームレートが３０フレーム／秒であるのに対して、ヘッドマウントディスプレイ１００のパネルのフレームレートが高フレームレートであり、たとえば６０フレーム／秒である場合、変形例ではヘッドマウントディスプレイ１００のパネルのフレームレートに合わせて補正処理の頻度を上げる。
【０１１２】
同図に示すように、時刻ｔ２におけるヘッドマウントディスプレイ１００の位置ｐ２と回転ｑ２を用いてパノラマ画像生成装置７００により生成された画像に対して１回目の補正処理を行い、補正後の画像をヘッドマウントディスプレイ１００に表示する。その後、時刻ｔ３におけるヘッドマウントディスプレイ１００の位置ｐ３と回転ｑ３を用いて同じ画像に対して２回目の補正処理を行い、補正後の画像をヘッドマウントディスプレイ１００に表示する。これにより、パノラマ画像生成装置７００のフレームレートが３０フレーム／秒であっても、補正後の画像が６０フレーム／秒で表示される。このように、所定の頻度で補正処理を行うことにより、フレームレートを上げたり、下げたりすることができ、特にパノラマ画像生成装置７００とヘッドマウントディスプレイ１００のフレームレートが異なる場合に、システムにフレームレート変換の機能をもたせることができる。
【０１１３】
図１３の説明では、パノラマ画像生成装置７００が生成した同じ画像に対して、時刻ｔ２における位置ｐ２と回転ｑ２を用いた１回目の補正処理と、時刻ｔ３における位置ｐ３と回転ｑ３を用いた２回目の補正処理を行った。別の方法として、２回目の補正処理は、１回目の補正処理によって生成される補正後の画像に対して行ってもよい。
【０１１４】
（変形例２）
上記の座標変換式（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｗ×Ｖ×Ｂ×Ｈ×Ｄ×Ｐにおいて、トラッキング基準変換行列ＢとＨＭＤ位置回転行列Ｈの乗算があるが、この計算は簡略化することができる。トラッキング基準変換行列ＢとＨＭＤ位置回転行列Ｈを乗算した結果の行列を正規化ＨＭＤ行列Ｎと呼ぶ。トラッキング基準変換行列Ｂは基準位置ｐ０、基準回転ｑ０にヘッドマウントディスプレイ１００を置いた時のセンサ情報から作成されるＨＭＤ位置回転行列Ｈの逆行列として求めることができ、ＨＭＤ位置回転行列Ｈ（ｐ，ｑ）は、レンダリング開始時にセンサから取得した位置ｐ、回転ｑを用いて、平行移動行列Ｔと回転行列Ｒから生成されることから、逆行列をＩｎｖ（・）で表記すると、正規化ＨＭＤ行列Ｎは以下のように計算される。
【０１１５】
Ｎ＝Ｂ×Ｈ（ｐ，ｑ）
＝Ｉｎｖ（Ｔ（−ｐ０）×Ｒ（ｑ０−１））×（Ｔ（−ｐ）×Ｒ（ｑ−１））
＝Ｉｎｖ（Ｒ（ｑ０−１））×Ｉｎｖ（Ｔ（−ｐ０））×Ｔ（−ｐ）×Ｒ（ｑ−１）
＝Ｒ（ｑ０）×Ｔ（ｐ０）×Ｔ（−ｐ）×Ｒ（ｑ−１）
＝Ｒ（ｑ０）×Ｔ（ｐ０−ｐ）×Ｒ（ｑ−１）
＝Ｒ（ｑ０）×Ｒ（ｑ−１）×Ｒ（ｑ）×Ｔ（ｐ０−ｐ）×Ｒ（ｑ−１）
＝Ｒ（ｑ−１×ｑ０）×Ｔ（Ｒｏｔ（ｐ０−ｐ，ｑ−１））
【０１１６】
ここで、Ｒｏｔ（ｐ，ｑ）は、ベクトルｐをクオータニオンｑで回転することを意味する。具体的には、回転後のベクトルｐをｐ’とすると、ｐ’＝ｑ×ｐ×ｑ−１と計算する。Ｒｏｔ（ｐ０−ｐ，ｑ−１）は、ベクトルｐ０−ｐをクオータニオンｑ−１で回転することである。上記の最後の変形式によれば、正規化ＨＭＤ行列Ｎは、クオータニオンｑ−１×ｑ０で回転した後、Ｒｏｔ（ｐ０−ｐ，ｑ−１）だけ平行移動することを意味する。
【０１１７】
計算量を評価すると、乗算回数だけを見ると、平行移動行列Ｔは０回、回転行列Ｒは１６回、２つのクオータニオンの積が１６回、２つの回転行列Ｒの積が３６回であり、平行移動行列Ｔと回転行列Ｒの積は０回である。上記の第４の変形式を用いると、Ｎ＝Ｒ（ｑ０）×Ｔ（ｐ０）×Ｔ（−ｐ）×Ｒ（ｑ−１）であり、回転行列Ｒの計算に１６回の乗算、Ｒ×Ｔは０回、それ以外の２回の行列の積に３６回の乗算が必要となり、合計で１６×２＋３６×２＝１０４回の乗算が必要である。それに対して、上記の最後の変形式を用いると、Ｎ＝Ｒ（ｑ−１×ｑ０）×Ｔ（Ｒｏｔ（ｐ０−ｐ，ｑ−１））であり、２つのクオータニオンの積に１６回の乗算、回転行列Ｒの計算に１６回の乗算が必要であり、Ｒｏｔの計算にはクオータニオンの計算が２回必要であることから、合計で１６＋１６＋１６×２＝６４回の乗算が必要である。比較すると、正規化行列Ｎを上記の最後の変形式で計算すると、乗算が１０４回から６４回に減り、計算が簡略化される。
【０１１８】
（変形例３）
ヘッドマウントディスプレイ１００の位置ｐと回転ｑは、カルマンフィルターなどを用いて過去のセンサ情報から予測することができる。上記の画像補正処理は、予測値と現実の値のずれを補正するために用いることができる。
【０１１９】
ヘッドマウントディスプレイ１００またはパノラマ画像生成装置７００にセンサ情報の予測部を設け、予測部は、ヘッドマウントディスプレイ１００の過去の動きにもとづいて画像が表示されるタイミングでの位置ｐｆと回転ｑｆを予測する。パノラマ画像生成装置７００は、予測位置ｐｆと予測回転ｑｆに対して画像を生成する。補正処理部７８０は、ヘッドマウントディスプレイ１００の現時点のセンサ情報から現在位置ｐｔと現在回転ｑｔを受け取り、現在位置ｐｔと現在回転ｑｔを用いて画像の補正処理を行う。これにより、予測位置ｐｆと予測回転ｑｆが、現在位置ｐｔと現在回転ｑｔからずれている場合でも、画像補正処理により、そのずれを吸収することができる。
【０１２０】
（変形例４）
補正処理では、一度レンダリングした結果の画像を再度描画ソースとして利用して、最新の位置と回転に合うように透視変換を行うため、動き量が大きい場合は、描画されていない領域の情報が必要になることがある。欠損部分が生じる問題に対処する方法をいくつか説明する。
【０１２１】
欠損部分の補う方法として以下の方法がある。
（１）欠損部分は最外周の画素の色で埋める。
（２）欠損部分は単色（たとえば黒色）で埋める。
（３）欠損部分が生じないように、あらかじめ最外周よりも大きい領域を描画しておく。
【０１２２】
（３）の方法を取るには、トラッキング機能付きヘッドマウントディスプレイ１００用の画像生成の際の座標変換と補正処理の際の変換処理で用いる矩形領域の４頂点を与えるパラメータとして、ヘッドマウントディスプレイ固有の画角パラメータＦｏＶｕ、ＦｏＶｂ、ＦｏＶｌ、ＦｏＶｒの代わりに、描画画角を示すパラメータＦｏＶｕ’、ＦｏＶｂ’、ＦｏＶｌ’、ＦｏＶｒ’を用いる。ここで、ＦｏＶｘ’＞ＦｏＶｘ’（ここでｘ＝ｕ，ｂ，ｌ，ｒ）である。ただし、補正処理の際の変換処理で用いる透視変換行列Ｐでは、ヘッドマウントディスプレイ固有の角パラメータＦｏＶｕ、ＦｏＶｂ、ＦｏＶｌ、ＦｏＶｒを用いる。
【０１２３】
欠損部分が生じないように、２つの時刻ｔ１と時刻ｔ２の間の動き量を制限する方法もある。
（１）動き量を制限値Ａに制限し、動き量が制限値Ａを超えてＢ（＞Ａ）となった場合でも、動き量がＡであるとして補正処理を行う。
（２）動き量が制限値Ａを超えた場合は、補正処理を行わず、エラーとして処理する。
（３）上記（１）、（２）を組み合わせて、動き量が第１の制限値Ａを超えるが第２の制限値Ｂ（＞Ａ）以下である場合は、動き量がＡであるとして補正処理を行い、動き量が第２の制限値Ｂを超えた場合は、補正処理を行わず、エラーとして処理する。
【０１２４】
このように動き量を制限することで、動き量が制限値Ａ以内に収まっているとして、欠損部分が生じないように、動き量に対応する領域をあらかじめ描画しておくことができる。
【０１２５】
動き量は次のようにして計算することができる。回転の変化量ｑｄはｑｄ＝ｑ−１×ｑ０で計算され、位置の変化量ｐｄはｐｄ＝ｐ０−ｐで計算できる。回転の変化量ｑｄの大きさは、実部で決まり、実部が小さいほど回転量が大きくなる。上述の正規化ＨＭＤ行列Ｎを計算する式は、Ｎ＝Ｒ（ｑ−１×ｑ０）×Ｔ（Ｒｏｔ（ｐ０−ｐ，ｑ−１））＝Ｒ（ｑｄ）×Ｔ（Ｒｏｔ（ｐｄ，ｑ−１））であるから、回転の変化量ｑｄと位置の変化量ｐｄの値は、正規化ＨＭＤ行列Ｎを計算する過程で既に計算されている。このように、動き量は正規化ＨＭＤ行列Ｎを計算する過程で得られるため、画像から動きを解析して動きベクトルを検出する処理を必要としないという利点がある。
【０１２６】
動き量を制限する方法を取ることで、描画画角を一定にすることができ、動き量が制限値を超えない限りは、補正後の画像に欠損が生じないシステムを構成することができる。変形例３のようにセンサの予測値を使って描画する場合は、予測値と現実の値のずれ（誤差）の大きさによって、描画画角を決めることができる。この場合、誤差が大きいと予測される場合は大きな範囲の領域を描画し、誤差が小さいと予測される場合は小さな範囲の領域を描画する。
【０１２７】
（変形例５）
第１の実施の形態では、平行移動と回転の両方を考慮するため、補正処理では３次元の演算が必要であったが、平行移動だけで回転を伴わないことを前提として補正処理を簡略化することができる。平行移動だけをサポートすればよいため、固定行数のラインバッファで構成された平行移動が行える画像処理装置を用意するだけでよく、安価なシステムを構成できる。
【０１２８】
具体的には、補正処理は、画像の中心である座標（０，０，−ｄ）を補正行列Ｃで変換すればよい。その変換により求めたｘの変化量、ｙの変化量だけ画像をｘ、ｙ方向に平行移動させるだけでよい。
【０１２９】
ヘッドマウントディスプレイ１００を装着したユーザが上下または左右に頭を振った場合は、上下または左右の平行移動であるとして、この変形例の補正処理を適用することができる。
【０１３０】
（第２の実施の形態）
第１の実施の形態では、パノラマ画像生成装置７００が生成したパノラマ画像をヘッドマウントディスプレイ１００に表示する際の補正処理を説明したが、第２の実施の形態では、現実または仮想の空間に対してユーザがカメラ操作を行い、コンピュータや携帯機器の画面に画像を表示する際の補正処理を説明する。以下では、第１の実施の形態と共通する構成と動作については説明を省略し、第２の実施の形態の補正処理部７８０による補正処理について説明する。
【０１３１】
第１の実施の形態では、ヘッドマウントディスプレイ１００を装着したユーザが空間を移動することを前提としたため、トラッキング座標系８０２からＨＭＤ座標系８０４を経由して、視野座標系８０６へ変換する座標変換を要した。第１の実施の形態では、カメラの視点と視線方向を、ヘッドマウントディスプレイ１００を装着したユーザの現在の位置と回転に座標変換しなければならないからである。第２の実施の形態では、ユーザが操作するカメラの視点と視線方向がそのままコンピュータや携帯機器のビューワの視点と視線方向となるため、ヘッドマウントディスプレイ１００の場合に要した座標変換を要しない。
【０１３２】
第２の実施の形態におけるカメラ変換行列Ｖは、カメラの位置（視点）ｐ、カメラの方向（視線方向）ｑを用いて、平行移動行列Ｔと回転行列Ｒから次式で求められる。
（数８）
Ｖ（ｐ，ｑ）＝Ｔ（−ｐ）×Ｒ（ｑ−１）
【０１３３】
ここで、カメラの位置ｐは３次元ベクトルであり、カメラの方向ｑはクオータニオンである。
【０１３４】
第２の実施の形態では、一般的なコンピュータグラフィックスにおける座標変換が用いられる。ワールド変換行列Ｗ、カメラ（ビュー）変換行列Ｖ、透視変換行列Ｐを用いて、ワールド座標系の点（ｘ，ｙ，ｚ，１）が投影座標系の点（ｘ’，ｙ’，ｚ’，１）に次式で変換される。なお、ここでは補正処理は行っていない計算を示していることに留意する。
（数９）
（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｗ×Ｖ×Ｐ
【０１３５】
ここで、透視変換行列Ｐはユーザの視野角を示す４つのパラメータＦｏＶｕ、ＦｏＶｂ、ＦｏＶｌ、ＦｏＶｒを用いて第１の実施の形態と同様に定義されるが、画角に依存するため、カメラをズームした場合は、画角が変わり、透視変換行列Ｐも変更される。時刻ｔ１における視野角パラメータをＦｏＶｕ１、ＦｏＶｂ１、ＦｏＶｌ１、ＦｏＶｒ１とし、時刻ｔ２における視野角パラメータをＦｏＶｕ２、ＦｏＶｂ２、ＦｏＶｌ２、ＦｏＶｒ２とする。時刻ｔ１における透視変換行列ＰをＰ（ｔ１）、時刻ｔ２における透視変換行列ＰをＰ（ｔ２）と表記する。
【０１３６】
第２の実施の形態の補正処理部７８０による補正処理について説明する。補正処理部７８０に与えられる入力は、時刻ｔ１におけるカメラの位置Ｐ１、カメラの方向Ｑ１に対して生成された画像、この画像を生成する際にカメラ変換行列Ｖで用いられたカメラの位置Ｐ１とカメラの方向Ｑ１、最新の時刻ｔ２におけるカメラの位置Ｐ２、カメラの方向Ｑ２である。
【０１３７】
補正処理部７８０は、時刻ｔ１における位置ｐ１、方向ｑ１に対して生成された画像を投影面にマッピングした矩形画像に対して、次の変換処理を施すことにより、補正画像を生成する。矩形画像の頂点を（ｘ，ｙ，ｚ，１）、補正後の投影座標系における点を（ｘ’，ｙ’，ｚ’，１）とし、補正行列をＣとすると、変換処理は、次のように表すことができる。
（数１０）
（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｃ
【０１３８】
ここで、補正行列Ｃは、
Ｃ＝Ｖ（ｐ１，ｑ１）−１×Ｖ（ｐ２，ｑ２）×Ｐ（ｔ２）
である。
【０１３９】
時刻ｔ１における位置ｐ１、方向ｑ１に対して生成された矩形画像の４頂点は、（−ＦｏＶｌ１×ｄ，ＦｏＶｕ１×ｄ，−ｄ，１），（−ＦｏＶｌ１×ｄ，−ＦｏＶｂ１×ｄ，−ｄ，１），（ＦｏＶｒ１×ｄ，ＦｏＶｕ１×ｄ，−ｄ，１），（ＦｏＶｒ１×ｄ，−ＦｏＶｂ１×ｄ，−ｄ，１）である。ｄの値として、適当な距離の固定値（たとえば１０メートルなど）や奥行きの統計データ（たとえば全エリアの奥行き値の中央値、エリアの中心付近の奥行きの平均値など）を用いる。
【０１４０】
補正行列Ｃの前半のＶ（ｐ１，ｑ１）−１は、時刻ｔ１における位置ｐ１、回転ｑ１を用いたカメラ変換行列の逆行列Ｖ（ｐ１，ｑ１）−１によりカメラ座標系をワールド座標系に戻すことを意味する。その上で、後半のＶ（ｐ２，ｑ２）×Ｐ（ｔ２）は、時刻ｔ２における位置ｐ２、回転ｑ２を用いたカメラ変換行列Ｖ（ｐ２，ｑ２）によりワールド座標系をカメラ座標系に変換し、さらに時刻ｔ２における画角を用いた透視変換行列Ｐ（ｔ２）により投影座標系に変換することを意味する。
【０１４１】
仮に時刻ｔ１と時刻ｔ２でカメラの位置および方向が変化しない、すなわちｐ１＝ｐ２かつｑ１＝ｑ２であれば、Ｖ（ｐ１，ｑ１）−１×Ｖ（ｐ２，ｑ２）が単位行列になることから、補正行列Ｃは透視変換行列Ｐ（ｔ２）に等しくなり、補正処理は行われず、単に以下のように時刻ｔ２における画角を反映した透視変換を行うだけになる。
（ｘ’，ｙ’，ｚ’，１）＝（ｘ，ｙ，ｚ，１）×Ｐ（ｔ２）
【０１４２】
しかし、時刻ｔ１と時刻ｔ２でカメラの位置および回転の少なくとも一方が変化する、すなわちｐ１≠ｐ２および／またはｑ１≠ｑ２の場合は、補正行列Ｃは、Ｖ（ｐ１，ｑ１）−１×Ｖ（ｐ２，ｑ２）の計算により、カメラの位置および／または方向のずれを補正する作用がある。また、最後に透視変換行列Ｐ（ｔ２）で変換することにより、時刻ｔ１と時刻ｔ２の間の画角の変化も反映される。
【０１４３】
このように補正行列Ｃで変換された矩形画像は、時刻ｔ１の位置ｐ１、方向ｑ１、画角に対する投影画像を時刻ｔ２の更新された位置ｐ２、方向ｑ２、画角に対する投影画像に補正したものである。これにより、時刻ｔ１と時刻ｔ２の間にカメラの位置と方向が変わったり、ズームにより画角が変わっても、画像処理により画像を補正してずれを吸収することができる。
【０１４４】
第２の実施の形態は、複数の端末がネットワークを介してアプリケーションサーバが提供するサービスを利用するクラウドサービスの構成において有益である。この場合、画像生成装置はサーバにあり、端末は、カメラ操作の情報をサーバに送信し、サーバが生成した画像をネットワーク経由でが受信するが、サーバでの画像生成にかかる時間とネットワーク転送にかかる時間により、一定のレイテンシが生じるため、ユーザのカメラ操作をリアルタイムに反映させることができない。第２の実施の形態によれば、画像生成時のカメラの位置および方向にもとづいて生成された画像を、画像表示時の最新のカメラの位置および方向に合うように補正することができ、擬似的にリアルタイム性をもたせることができる。
【０１４５】
特にゲームアプリケーションにおいて、ユーザがゲームコントローラのボタンや携帯端末のタッチスクリーンなどを使って仮想空間内の視点位置と視線方向を変え、ゲーム中の他のユーザのキャラクタとインタラクションする場合、リアルタイム性が重要な要素となる。このような場合、補正処理により擬似的にリアルタイム性をもたせることは有益である。
【０１４６】
以上説明したように、第１の実施の形態および第２の実施の形態によれば、画像生成時点の視点位置および視線方向を前提に生成された画像を、画像表示時点の視点位置および視線方向を用いて補正することにより、画像生成時点から画像表示時点までの時間差分を吸収して、見かけ上のレイテンシを軽減することができる。
【０１４７】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【符号の説明】
【０１４８】
１０  制御部、  ２０  入力インタフェース、  ３０  出力インタフェース、  ３２  バックライト、  ４０  通信制御部、  ４２  ネットワークアダプタ、  ４４  アンテナ、  ５０  記憶部、  ６０  ＧＰＳユニット、  ６２  無線ユニット、  ６４  姿勢センサ、  ７０  外部入出力端子インタフェース、  ７２  外部メモリ、  ８０  時計部、  １００  ヘッドマウントディスプレイ、  １１０  本体部、  １２０  前頭部接触部、  １３０  側頭部接触部、  ２００  ゲーム機、  ３００  マーカ、  ３５０  モーションコントローラ、  ５００  パノラマ画像、  ７００  パノラマ画像生成装置、  ７１０  ズーム指示取得部、  ７２０  感度調整部、  ７３０  位置・回転情報取得部、  ７４０  座標変換部、  ７５０  パノラマ画像処理部、  ７６０  パノラマ画像記憶部、  ７７０  画像提供部、  ７８０  補正処理部。
【図１】
2015095045.tif 000006
【図２】
2015095045.tif 000007
【図３】
2015095045.tif 000008
【図４】
2015095045.tif 000009
【図５】
2015095045.tif 000010
【図６】
2015095045.tif 000011
【図７】
2015095045.tif 000012
【図８】
2015095045.tif 000013
【図９Ａ】
2015095045.tif 000014
【図９Ｂ】
2015095045.tif 000015
【図１０】
2015095045.tif 000016
【図１１】
2015095045.tif 000017
【図１２】
2015095045.tif 000018
【図１３】
2015095045.tif 000019