(57)【要約】【課題】画像の生成、配信から表示までの遅延に応じて画像を補正する。【解決手段】送受信部２１０は、第１時刻のヘッドマウントディスプレイの位置または姿勢にもとづいて描画された画像を第１時刻の位置または姿勢の情報とともに受信する。補正部２６０は、画像を表示する際の第２時刻のヘッドマウントディスプレイの位置または姿勢の情報を取得し、第１時刻の位置または姿勢と第２時刻の位置または姿勢の差分に応じて、ヘッドマウントディスプレイのスクリーン座標系の視野を平行移動または回転移動させ、画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、画像を補正する。【選択図】図５
2019106628.tif 000002
【特許請求の範囲】
【請求項１】
第１時刻のヘッドマウントディスプレイの位置または姿勢にもとづいて描画された画像を前記第１時刻の位置または姿勢の情報とともに取得する取得部と、
前記画像を表示する際の第２時刻のヘッドマウントディスプレイの位置または姿勢の情報を取得し、前記第１時刻の位置または姿勢と前記第２時刻の位置または姿勢の差分に応じて、ヘッドマウントディスプレイのスクリーン座標系の視野を平行移動または回転移動させ、前記画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、前記画像を補正する補正部とを含むことを特徴とする画像補正装置。
【請求項２】
前記取得部は、前記画像が符号化された符号化ストリームをネットワークを介して受信し、
前記符号化ストリームを復号して復号画像を取得する復号部をさらに含み、
前記補正部は、前記復号画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、前記復号画像を補正することを特徴とする請求項１に記載の画像補正装置。
【請求項３】
前記復号部により復号された過去の時刻における復号画像を前記過去の時刻のヘッドマウントディスプレイの位置または姿勢の情報とともに保持する記憶部と、
前記符号化ストリームが表示タイミングに間に合って受信されないエラーを検出する検出部とをさらに含み、
前記補正部は、前記エラーが検出された場合、前記過去の時刻の位置または姿勢と前記第２時刻の位置または姿勢の差分に応じて、前記スクリーン座標系の視野を平行移動または回転移動させ、前記過去の時刻における復号画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、前記過去の時刻における復号画像を補正することを特徴とする請求項２に記載の画像補正装置。
【請求項４】
第１時刻のヘッドマウントディスプレイの位置または姿勢にもとづいて描画された画像を前記第１時刻の位置または姿勢の情報とともに取得する取得ステップと、
前記画像を表示する際の第２時刻のヘッドマウントディスプレイの位置または姿勢の情報を取得し、前記第１時刻の位置または姿勢と前記第２時刻の位置または姿勢の差分に応じて、ヘッドマウントディスプレイのスクリーン座標系の視野を平行移動または回転移動させ、前記画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、前記画像を補正する補正ステップとを含むことを特徴とする画像補正方法。
【請求項５】
第１時刻のヘッドマウントディスプレイの位置または姿勢にもとづいて描画された画像を前記第１時刻の位置または姿勢の情報とともに取得する取得機能と、
前記画像を表示する際の第２時刻のヘッドマウントディスプレイの位置または姿勢の情報を取得し、前記第１時刻の位置または姿勢と前記第２時刻の位置または姿勢の差分に応じて、ヘッドマウントディスプレイのスクリーン座標系の視野を平行移動または回転移動させ、前記画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、前記画像を補正する補正機能とをコンピュータに実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像を生成し補正する装置および方法に関する。
【背景技術】
【０００２】
ゲーム機に接続されたヘッドマウントディスプレイを頭部に装着して、ヘッドマウントディスプレイに表示された画面を見ながら、コントローラなどを操作してゲームプレイすることが行われている。ヘッドマウントディスプレイを装着すると、ヘッドマウントディスプレイに表示される映像以外はユーザは見ないため、映像世界への没入感が高まり、ゲームのエンタテインメント性を一層高める効果がある。また、ヘッドマウントディスプレイに仮想現実（Virtual Reality）の映像を表示させ、ヘッドマウントディスプレイを装着したユーザが頭部を回転させると、３６０度見渡せる全周囲の仮想空間が表示されるようにすると、さらに映像への没入感が高まり、ゲームなどのアプリケーションの操作性も向上する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このようにヘッドマウントディスプレイにヘッドトラッキング機能をもたせて、ユーザの頭部の動きと連動して視点や視線方向を変えて仮想現実の映像を生成した場合、仮想現実の映像の生成から表示までに遅延があるため、映像生成時に前提としたユーザの頭部の向きと、映像をヘッドマウントディスプレイに表示した時点でのユーザの頭部の向きとの間でずれが発生し、ユーザは酔ったような感覚（「ＶＲ酔い（Virtual Reality Sickness）」などと呼ばれる）に陥ることがある。
【０００４】
さらに、ヘッドマウントディスプレイに表示される映像がサーバからストリーム配信される場合、通信遅延が加わるため、映像の生成時点と映像の表示時点の時間差が大きくなる。またネットワークの輻輳状態によって遅延の予測が難しく、受信エラーが発生することもある。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、画像の生成、配信から表示までの遅延に応じて画像を補正することのできる画像補正技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の画像補正装置は、第１時刻のヘッドマウントディスプレイの位置または姿勢にもとづいて描画された画像を前記第１時刻の位置または姿勢の情報とともに取得する取得部と、前記画像を表示する際の第２時刻のヘッドマウントディスプレイの位置または姿勢の情報を取得し、前記第１時刻の位置または姿勢と前記第２時刻の位置または姿勢の差分に応じて、ヘッドマウントディスプレイのスクリーン座標系の視野を平行移動または回転移動させ、前記画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、前記画像を補正する補正部とを含む。
【０００７】
本発明の別の態様は、画像補正方法である。この方法は、第１時刻のヘッドマウントディスプレイの位置または姿勢にもとづいて描画された画像を前記第１時刻の位置または姿勢の情報とともに取得する取得ステップと、前記画像を表示する際の第２時刻のヘッドマウントディスプレイの位置または姿勢の情報を取得し、前記第１時刻の位置または姿勢と前記第２時刻の位置または姿勢の差分に応じて、ヘッドマウントディスプレイのスクリーン座標系の視野を平行移動または回転移動させ、前記画像を平行移動または回転移動後の視野にテクスチャとして貼り付けることにより、前記画像を補正する補正ステップとを含む。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、画像の生成、配信から表示までの遅延に応じて画像を補正することができる。
【図面の簡単な説明】
【００１０】
【図１】ヘッドマウントディスプレイの外観図である。
【図２】本実施の形態に係る画像生成システムの構成図である。
【図３】ヘッドマウントディスプレイの機能構成図である。
【図４】本実施の形態に係る画像生成装置の機能構成図である。
【図５】本実施の形態に係る画像補正装置の機能構成図である。
【図６】本実施の形態の画像生成手順を説明するフローチャートである。
【図７】本実施の形態の画像生成手順の詳細なタイムチャートである。
【図８】図８（ａ）〜図８（ｃ）は、ビルボードの回転移動を説明する図である。
【図９】ビルボードの回転移動を詳細に説明する図である。
【図１０】回転後のビルボードのスクリーンへの投影を説明する図である。
【発明を実施するための形態】
【００１１】
図１は、ヘッドマウントディスプレイ１００の外観図である。ヘッドマウントディスプレイ１００は、ユーザの頭部に装着してディスプレイに表示される静止画や動画などを鑑賞し、ヘッドホンから出力される音声や音楽などを聴くための表示装置である。
【００１２】
ヘッドマウントディスプレイ１００に内蔵または外付けされたジャイロセンサや加速度センサなどによりヘッドマウントディスプレイ１００を装着したユーザの頭部の位置情報と頭部の回転角や傾きなどの姿勢（orientation）情報を計測することができる。
【００１３】
ヘッドマウントディスプレイ１００にはカメラユニットが搭載されており、ユーザがヘッドマウントディスプレイ１００を装着している間、外界を撮影することができる。
【００１４】
ヘッドマウントディスプレイ１００は、「ウェアラブルディスプレイ」の一例である。ここでは、ヘッドマウントディスプレイ１００に表示される画像の生成方法を説明するが、本実施の形態の画像生成方法は、狭義のヘッドマウントディスプレイ１００に限らず、めがね、めがね型ディスプレイ、めがね型カメラ、ヘッドフォン、ヘッドセット（マイクつきヘッドフォン）、イヤホン、イヤリング、耳かけカメラ、帽子、カメラつき帽子、ヘアバンドなどを装着した場合にも適用することができる。
【００１５】
図２は、本実施の形態に係る画像生成システムの構成図である。ヘッドマウントディスプレイ１００は、一例として、映像・音声をデジタル信号で伝送する通信インタフェースの標準規格であるＨＤＭＩ（登録商標）（High-Definition Multimedia Interface）などのインタフェース３００で画像補正装置２００に接続される。
【００１６】
画像補正装置２００の一例はゲーム機である。画像補正装置２００はネットワーク４００を介して画像生成装置５００に接続される。画像補正装置２００はクライアントであり、画像生成装置５００はサーバである。画像生成装置５００は、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションを画像補正装置２００に提供してもよい。
【００１７】
画像補正装置２００は、ヘッドマウントディスプレイ１００の位置・姿勢情報を画像生成装置５００に送信する。画像生成装置５００は、受信されたヘッドマウントディスプレイ１００の位置・姿勢情報にもとづいてヘッドマウントディスプレイ１００に表示されるべき画像を描画し、描画データを符号化してビデオストリームとして画像補正装置２００に送信する。画像補正装置２００は、受信したビデオストリームを復号し、描画データをヘッドマウントディスプレイ１００の最新の位置・姿勢に合わせて補正し、ヘッドマウントディスプレイ１００に表示する。
【００１８】
図３は、ヘッドマウントディスプレイ１００の機能構成図である。
【００１９】
制御部１０は、画像信号、センサ信号などの信号や、命令やデータを処理して出力するメインプロセッサである。入力インタフェース２０は、ユーザからの操作信号や設定信号を受け付け、制御部１０に供給する。出力インタフェース３０は、制御部１０から画像信号を受け取り、ディスプレイパネル３２に表示する。
【００２０】
通信制御部４０は、ネットワークアダプタ４２またはアンテナ４４を介して、有線または無線通信により、制御部１０から入力されるデータを外部に送信する。通信制御部４０は、また、ネットワークアダプタ４２またはアンテナ４４を介して、有線または無線通信により、外部からデータを受信し、制御部１０に出力する。
【００２１】
記憶部５０は、制御部１０が処理するデータやパラメータ、操作信号などを一時的に記憶する。
【００２２】
姿勢センサ６４は、ヘッドマウントディスプレイ１００の位置情報と、ヘッドマウントディスプレイ１００の回転角や傾きなどの姿勢情報を検出する。姿勢センサ６４は、ジャイロセンサ、加速度センサ、角加速度センサなどを適宜組み合わせて実現される。３軸地磁気センサ、３軸加速度センサおよび３軸ジャイロ（角速度）センサの少なくとも１つ以上を組み合わせたモーションセンサを用いて、ユーザの頭部の前後、左右、上下の動きを検出してもよい。
【００２３】
外部入出力端子インタフェース７０は、ＵＳＢ（Universal Serial Bus）コントローラなどの周辺機器を接続するためのインタフェースである。外部メモリ７２は、フラッシュメモリなどの外部メモリである。
【００２４】
ＨＤＭＩ送受信部９０は、ＨＤＭＩにしたがって映像・音声のデジタル信号を画像補正装置２００との間で送受信する。ＨＤＭＩ送受信部９０は、画像補正装置２００により生成された画像をＨＤＭＩ伝送路で画像補正装置２００から受信し、制御部１０に供給する。
【００２５】
制御部１０は、画像やテキストデータを出力インタフェース３０に供給してディスプレイパネル３２に表示させたり、通信制御部４０に供給して外部に送信させることができる。
【００２６】
姿勢センサ６４が検出したヘッドマウントディスプレイ１００の現在の位置・姿勢情報は、通信制御部４０または外部入出力端子インタフェース７０を介して画像補正装置２００に通知される。あるいは、ＨＤＭＩ送受信部９０がヘッドマウントディスプレイ１００の現在の位置・姿勢情報を画像補正装置２００に送信してもよい。
【００２７】
図４は、本実施の形態に係る画像生成装置５００の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００２８】
画像生成装置５００の少なくとも一部の機能を画像補正装置２００に実装してもよい。
【００２９】
送受信部５６０は、ヘッドマウントディスプレイ１００の現在（「第１時刻」と呼ぶ）の位置・姿勢情報を画像補正装置２００から受信し、位置・姿勢取得部５１０に供給する。
【００３０】
視点・視線設定部５２０は、位置・姿勢取得部５１０により取得された第１時刻のヘッドマウントディスプレイ１００の位置・姿勢情報を用いて、ユーザの視点位置および視線方向を設定する。
【００３１】
レンダリング部５３０は、視点・視線設定部５２０によって設定されたユーザの視点位置および視線方向にしたがって、ヘッドマウントディスプレイ１００を装着したユーザの視点位置から視線方向に見える仮想空間のオブジェクトをレンダリングし、画像記憶部５４０に記憶する。
【００３２】
符号化部５５０は、画像記憶部５４０に記憶されたレンダリング結果を符号化し、符号化されたビデオストリームを送受信部５６０に与える。
【００３３】
送受信部５６０は、レンダリング部５３０による描画に使用された第１時刻のヘッドマウントディスプレイ１００の位置・姿勢情報を位置・姿勢取得部５１０から受け取り、ビデオストリームデータを第１時刻の位置・姿勢情報とともに画像補正装置２００に送信する。これにより、フレーム単位でビデオデータと位置・姿勢情報が関連づけられたビデオストリームがサーバである画像生成装置５００からクライアントである画像補正装置２００に配信される。
【００３４】
図５は、本実施の形態に係る画像補正装置２００の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００３５】
画像補正装置２００の少なくとも一部の機能をヘッドマウントディスプレイ１００の制御部１０に実装してもよい。
【００３６】
送受信部２１０は、ビデオストリームデータと描画に使用された第１時刻のヘッドマウントディスプレイ１００の位置・姿勢情報をフレーム単位で画像生成装置５００から受信する。送受信部２１０は、受信したビデオストリームデータを復号部２２０に与え、第１時刻のヘッドマウントディスプレイ１００の位置・姿勢情報を位置・姿勢取得部２３０に与える。
【００３７】
復号部２２０は、ビデオストリームデータを復号し、復号画像を第１時刻の位置・姿勢情報とともに画像記憶部２５０に記憶する。
【００３８】
ＨＤＭＩ送受信部２７０は、ヘッドマウントディスプレイ１００から最新（「第２時刻」と呼ぶ）の位置・姿勢情報を受信し、位置・姿勢取得部２３０に与える。
【００３９】
位置・姿勢取得部２３０は、第１時刻の位置・姿勢情報と第２時刻の位置・姿勢情報を補正部２６０に与える。
【００４０】
補正部２６０は、画像記憶部２５０から復号画像を読み出し、第１時刻の位置・姿勢情報と第２時刻の位置・姿勢情報の差分に応じて画像データを補正するリプロジェクション処理を行い、ヘッドマウントディスプレイ１００の最新の視点位置・視線方向から見える画像に変換する。補正部２６０は補正された画像データをＨＤＭＩ送受信部２７０に与え、ＨＤＭＩ送受信部２７０は補正された画像データをヘッドマウントディスプレイ１００に送信する。
【００４１】
エラー検出部２４０は、ネットワークの輻輳などによってビデオストリームデータが遅延し、送受信部２１０がフレームの描画タイミングにおいて必要なビデオストリームデータを受信できなかった場合をエラーとして検出する。エラー検出部２４０は、エラー発生を補正部２６０に通知する。補正部２６０は、遅延によりエラーが発生した場合、画像記憶部２５０から一つ前のフレームの復号画像を読み出し、一つ前のフレームの復号画像の描画に使用された過去の時刻の位置・姿勢情報と第２時刻の位置・姿勢情報の差分に応じて一つ前のフレームの復号画像を補正するリプロジェクション処理を行い、ヘッドマウントディスプレイ１００の最新の視点位置・視線方向から見える画像に変換する。
【００４２】
ここで、リプロジェクションについて説明する。ヘッドマウントディスプレイ１００にヘッドトラッキング機能をもたせて、ユーザの頭部の動きと連動して視点や視線方向を変えて仮想現実の映像を生成した場合、仮想現実の映像の生成から表示までに遅延があるため、映像生成時に前提としたユーザの頭部の向きと、映像をヘッドマウントディスプレイ１００に表示した時点でのユーザの頭部の向きとの間でずれが発生し、ユーザは酔ったような感覚（「ＶＲ酔い（Virtual Reality Sickness）」などと呼ばれる）に陥ることがある。
【００４３】
このように、ヘッドマウントディスプレイ１００の動きを検知し、ＣＰＵが描画コマンドを発行し、ＧＰＵ（Graphics Processing Unit）がレンダリングを実行し、描画された画像がヘッドマウントディスプレイ１００に出力されるまでには時間がかかる。描画がたとえば６０ｆｐｓ（フレーム／秒）のフレームレートで行われており、ヘッドマウントディスプレイ１００の動きを検知してから画像を出力するまでに１フレーム分の遅れが生じるとする。これはフレームレート６０ｆｐｓのもとでは、１６．６７ミリ秒ほどであり、人間がずれを感知するには十分な時間である。
【００４４】
さらに、サーバがレンダリングした画像データを符号化してネットワークを介してクライアントに伝送すると、レンダリングに要した時間に通信時間が加わるため、ヘッドマウントディスプレイ１００に表示されるまでにさらに遅れが生じる。
【００４５】
そこで、「タイムワープ」または「リプロジェクション」と呼ばれる処理を行い、レンダリングした画像をヘッドマウントディスプレイ１００の最新の位置と姿勢に合わせて補正することで人間がずれを感知しにくいようにする。
【００４６】
図６は、本実施の形態の画像生成手順を説明するフローチャートである。
【００４７】
クライアントである画像補正装置２００の送受信部２１０は、ヘッドマウントディスプレイ１００の現在の位置・姿勢情報をサーバである画像生成装置５００に送信する（Ｓ１０）。
【００４８】
画像生成装置５００において、送受信部５６０は、画像補正装置２００からヘッドマウントディスプレイ１００の現在の位置・姿勢情報を受信する（Ｓ１２）。レンダリング部５３０は、ヘッドマウントディスプレイ１００の現在の位置・姿勢情報にもとづいてヘッドマウントディスプレイ１００に表示されるべき画像をレンダリングする（Ｓ１４）。
【００４９】
符号化部５５０は、レンダリング結果の画像データを符号化する（Ｓ１６）。送受信部５６０は、符号化されたビデオストリームを描画に使用されたヘッドマウントディスプレイ１００の位置・姿勢情報とともに画像補正装置２００に送信する（Ｓ１８）。
【００５０】
画像補正装置２００において、送受信部２１０は、画像生成装置５００からビデオストリームと描画に使用されたヘッドマウントディスプレイ１００の位置・姿勢情報を受信する（Ｓ２０）。復号部２２０は、ビデオストリームを復号する（Ｓ２２）。補正部２６０は、描画データをヘッドマウントディスプレイ１００の最新の位置・姿勢に合わせて補正するリプロジェクション処理を実行する（Ｓ２４）。ＨＤＭＩ送受信部２７０は、補正後の画像データをヘッドマウントディスプレイ１００に伝送し、ヘッドマウントディスプレイ１００に表示させる（Ｓ２６）。
【００５１】
ステップＳ１０において画像補正装置２００がヘッドマウントディスプレイ１００の位置・姿勢情報を画像生成装置５００に送信してから、ヘッドマウントディスプレイ１００に画像が表示されるまでのラウンドトリップタイム（ＲＴＴ）の遅延が生じる。ステップＳ２４におけるリプロジェクション処理はこの遅延をユーザに感じさせないように画像を補間する。
【００５２】
図７は、本実施の形態の画像生成手順の詳細なタイムチャートである。
【００５３】
時刻Ｔ１において、クライアントである画像補正装置２００は、ヘッドマウントディスプレイ１００の位置・姿勢情報を取得し、サーバである画像生成装置５００に送信する。
【００５４】
時刻Ｔ２において、画像生成装置５００は、受信したヘッドマウントディスプレイ１００の位置・姿勢情報に応じてヘッドマウントディスプレイ１００に表示すべき画像を描画する。時刻Ｔ３において、画像生成装置５００は描画された画像を符号化し、符号化されたビデオストリームデータを描画に用いたヘッドマウントディスプレイ１００の位置・姿勢情報とともに画像補正装置２００に送信する。
【００５５】
時刻Ｔ４において、画像補正装置２００は受信したビデオストリームを復号する。時刻Ｔ５において、画像補正装置２００は復号画像にリプロジェクション処理を施す。復号画像は時刻Ｔ１のヘッドマウントディスプレイ１００の位置・姿勢情報にもとづいて描画されたものである。時刻Ｔ５ではヘッドマウントディスプレイ１００を装着したユーザは頭部を角度θ１だけ回転させており、差分ΔＴ＝Ｔ５−Ｔ１の間のヘッドマウントディスプレイ１００の位置・姿勢情報の変化に応じて復号画像が補間される。時刻Ｔ６において、画像補正装置２００はリプロジェクション処理された復号画像をヘッドマウントディスプレイ１００に表示させる。
【００５６】
時刻Ｔ７において、画像補正装置２００は、ヘッドマウントディスプレイ１００の位置・姿勢情報を取得し、画像生成装置５００に送信する。
【００５７】
時刻Ｔ８において、画像生成装置５００は、受信したヘッドマウントディスプレイ１００の位置・姿勢情報に応じてヘッドマウントディスプレイ１００に表示すべき画像を描画する。時刻Ｔ９において、画像生成装置５００は描画された画像を符号化し、符号化されたビデオストリームデータを描画に用いたヘッドマウントディスプレイ１００の位置・姿勢情報とともに画像補正装置２００に送信するが、ネットワークの輻輳によって遅延が発生し、次のフレームのタイミングに間に合わない。
【００５８】
時刻Ｔ１０において、画像補正装置２００はデータの受信にエラーが発生したことを検知し、一つ前のフレームである時刻Ｔ４における復号画像（「前回の復号画像」と呼ぶ）をメモリから読み出す。時刻Ｔ１１において、画像補正装置２００は前回の復号画像にリプロジェクション処理を施す。前回の復号画像は時刻Ｔ１のヘッドマウントディスプレイ１００の位置・姿勢情報にもとづいて描画されたものである。時刻Ｔ１１ではヘッドマウントディスプレイ１００を装着したユーザは頭部を角度θ２だけ回転させており、差分ΔＴ＝Ｔ１１−Ｔ１の間のヘッドマウントディスプレイ１００の位置・姿勢情報の変化に応じて画像が補間される。時刻Ｔ１２において、画像補正装置２００はリプロジェクション処理された画像をヘッドマウントディスプレイ１００に表示させる。
【００５９】
図８〜図１０を参照して、画像補正装置２００の補正部２６０によるリプロジェクション処理を詳しく説明する。本実施の形態ではサーバが既に描画した画像をクライアントが受信して補間するため、画素単位のリプロジェクションは行わず、ビルボードを回転させて視野移動分を補間する方法を用いる。スクリーン座標の４頂点の座標値を変換することで画像の線形補間を行うため、クライアントのグラフィックス・プロセッシング・ユニット（ＧＰＵ）の線形補間の機能を用いて簡単に実装することができる。
【００６０】
図８（ａ）〜図８（ｃ）は、ビルボードの回転移動を説明する図である。
【００６１】
図８（ａ）は、ヘッドマウントディスプレイ１００を装着したユーザが正面を見ているときの第１視野６００と、ユーザが頭部を角度θだけ右に回転させたときの第２視野６１０を示す。ユーザが正面を見ている第１時刻においてサーバは第１視野６００に画像を描画するが、描画された画像を表示するタイミングは、ユーザが頭部を角度θだけ回転させた第２時刻である。第２時刻では角度θの方向に垂直な面である第２視野６１０に描画された画像を補正して表示する必要がある。
【００６２】
図８（ｂ）は、図８（ａ）の視野の角度θの回転移動を補間するために、ビルボードを回転させる方法を示す。正面の第１視野６００のビルボードを角度θだけ逆方向に回転させ、第１視野６００に描画された画像を回転後のビルボード６２０にテクスチャとして貼り付ける。これにより、第１視野６００に描画された画像が線形補間されて図８（ａ）の第２視野６１０に表示されることになる。
【００６３】
図８（ｃ）は、ユーザが頭部を角度θだけ右に回転させたときにヘッドマウントディスプレイ１００に表示される補間画像を示す。第１視野６００に描画された画像が線形補間されて第２視野６１０に表示されている。
【００６４】
図８（ｂ）のビルボードの回転移動は、第１視野６００の４頂点を３次元に拡張した座標系で角度θだけ逆に回転させることにより行われる。４頂点のｘ、ｙ座標はスクリーン座標であり、ｚ座標は、回転中心からの距離ｄであり、距離ｄは視野角Ｆｏｖから計算した値を用いる。
【００６５】
なお、ヘッドマウントディスプレイ１００を装着したユーザが頭部を平行移動させた場合は、第１視野６００のビルボードを逆方向に平行移動させ、第１視野６００のテクスチャを貼り付ければよい。
【００６６】
図９は、ビルボードの回転移動を詳細に説明する図である。
【００６７】
視野のビルボードの４頂点Ｐ１、Ｐ２、Ｐ３、Ｐ４のスクリーン座標はそれぞれ（−１，−１）、（−１，１）、（１，−１）、（１，１）であり、３次元に拡張した座標系では、視点からスクリーンまでの距離ｄをｚ座標に用いて、（−１，−１，ｄ）、（−１，１，ｄ）、（１，−１，ｄ）、（１，１，ｄ）と表される。
【００６８】
ここで、視点からスクリーンまでの距離ｄは、左右の視野角Ｆｏｖｌｅｆｔ、Ｆｏｖｒｉｇｈｔから次式で計算される。
ａ＝２×Ｆｏｖｌｅｆｔ／（Ｆｏｖｌｅｆｔ＋Ｆｏｖｒｉｇｈｔ）
ｂ＝２×Ｆｏｖｒｉｇｈｔ／（Ｆｏｖｌｅｆｔ＋Ｆｏｖｒｉｇｈｔ）
ｄ＝ｂ／ｔａｎ（Ｆｏｖｒｉｇｈｔ）
【００６９】
ビルボードの４頂点Ｐ１、Ｐ２、Ｐ３、Ｐ４を３次元空間において角度θだけ逆に回転させ、回転後のビルボードの４頂点Ｐ１’、Ｐ２’、Ｐ３’、Ｐ４’の座標値を計算する。ヘッドマウントディスプレイ１００の姿勢をクオータニオン（４元数）で表すなら、回転角は、第１視野６００におけるヘッドマウントディスプレイ１００の姿勢と第２視野６１０におけるヘッドマウントディスプレイ１００の姿勢の差分により計算される。
【００７０】
クオータニオンを用いたコンピュータグラフィックスに関する３次元回転などの計算方法については「３Ｄ−ＣＧプログラマーのためのクォータニオン入門」（工学社、２００４年１月）に記載されている。
【００７１】
第１視野６００、第２視野６１０におけるヘッドマウントディスプレイ１００の姿勢ｑＡ、ｑＢは次式で表される。
qA = (qxA, qyA, qzA, qwA)
qB = (qxB, qyB, qzB, qwB)
【００７２】
ヘッドマウントディスプレイ１００の回転角ｑＡＢは、第１視野６００、第２視野６１０におけるヘッドマウントディスプレイ１００の姿勢ｑＡ、ｑＢの差を次式で計算することにより求められる。
qAB = qA * qB-1
【００７３】
クオータニオンの逆数ｑＢ−１は
qB-1 = (-qxB, -qyB, -qzB, qwB)
であるから、回転角ｑＡＢは次式で求められる。
qAB = qA * qB-1
= (qxA, qyA, qzA, qwA) * (-qxB, -qyB, -qzB, qwB)
= ( qwA * qxB + qxA * qwB + qyA * (-qzB) - qzA * (-qyB),
qwA * qyB - qxA * (-qzB) + qyA * qwB + qzA * (-qxB),
qwA * qzB + qxA * (-qyB) - qyA * (-qxB) + qzA * qwB,
qwA * qwB - qxA * (-qxB) - qyA * (-qyB) - qzA * (-qzB))
【００７４】
ビルボードの４頂点Ｐ１、Ｐ２、Ｐ３、Ｐ４を回転角ｑＡＢで回転させてＰ１’、Ｐ２’、Ｐ３’、Ｐ４’の座標値を求める。４頂点をクオータニオンで回転させるため、４頂点の座標値を以下のように４次元ベクトルで表す。
Ｐ１＝（−１，−１，ｄ，０）
Ｐ２＝（−１，１，ｄ，０）
Ｐ３＝（１，−１，ｄ，０）
Ｐ４＝（１，１，ｄ，０）
【００７５】
点ｐのクオータニオンｑによる回転は、ｑ−１＊ｐ＊ｑで与えられるので、回転後の４頂点Ｐ１’、Ｐ２’、Ｐ３’、Ｐ４’は次式で求められる。ただし、次式においてｎは１から４のいずれかである。ｐｘ、ｐｙはスクリーン座標であり、上述のように１または−１で与えられる。ｐｚは視点からスクリーンまでの距離ｄである。また、回転角ｑＡＢ＝（ｑｘＡＢ，ｑｙＡＢ，ｑｚＡＢ，ｑｗＡＢ）とおいた。
Pn' = qAB-1 * Pn * qAB
= (-qxAB, -qyAB, -qzAB, qwAB) * (px, py, pz, 0) * (qxAB, qyAB, qzAB, qwAB)
= ( qwAB * px + (-qyAB) * pz - (-qzAB) * py,
qwAB * py - (-qxAB) * pz + (-qzAB) * px,
qwAB * pz + (-qxAB) * py - (-qyAB) * px,
-(-qxAB) * px - (-qyAB) * py - (-qzAB) * pz) * (qxAB, qyAB, qzAB, qwAB)
= ((qxAB2-qyAB2-qzAB2+qwAB2)px + 2(qxAB*qyAB+qzAB*qwAB)py + 2(qxAB*qzAB-qyAB*qwAB)pz,
2(qxAB*qyAB-qzAB*qwAB)px - (qxAB2-qyAB2+qzAB2-qwAB2)py + 2(qyAB*qzAB+qxAB*qwAB)pz,
2(qxAB*qzAB+qyAB*qwAB)px + 2(qyAB*qzAB-qxAB*qwAB)py - (qxAB2+qyAB2-qzAB2-qwAB2)pz,
-2*qyAB*qzAB*pxAB)
【００７６】
図１０は、回転後のビルボードのスクリーンへの投影を説明する図である。
【００７７】
回転後のビルボードの４頂点Ｐ１’、Ｐ２’、Ｐ３’、Ｐ４’は３次元空間にあるため、これをスクリーンに再度投影する必要がある。次式のように、視点からスクリーンまでの距離ｄと回転後のビルボードの奥行きｐｚ’の比を回転後のビルボードの４頂点Ｐｎ’の座標値ｐｘ’、ｐｙ’に乗算することにより、スクリーン上の４頂点Ｐｎ’ｓｃｒｅｅｎの座標値を求める。ただし、ｎは１から４のいずれかである。
Pn’screen = (px', py') * d / pz'
= (px' * d / pz', py' * d / pz')
【００７８】
以上、本発明の実施の形態を説明した。通常のリプロジェクション処理は描画から表示までの処理時間を埋めるために行われ、画像生成時点の視点位置および視線方向を前提に生成された画像を、画像表示時点の視点位置および視線方向を用いて補正することにより、画像生成時点から画像表示時点までの時間差分を吸収する。それに対して、本実施の形態のようにヘッドマウントディスプレイ１００にネットワークを介して画像をストリーミング配信する場合は、通信時間も含めた時間差分を吸収するためにリプロジェクション処理が行われる。
【００７９】
ストリーム配信の場合、クライアントはヘッドマウントディスプレイ１００の現在の位置・姿勢情報をサーバに送信し、サーバは受信した位置・姿勢情報にもとづいて描画し、サーバからビデオストリームとともに描画の際に利用した位置・姿勢情報をクライアントに送信する。クライアントは、描画の際に利用した位置・姿勢情報と最新の位置・姿勢情報の差を埋めるために、サーバが描画した画像にリプロジェクション処理を施す。これにより、クライアントがサーバに描画をリクエストした時点から、通信時間も含めて、画像を表示する時点までの時間差分を吸収することができる。
【００８０】
また、ストリーム配信の場合、ネットワークの輻輳などにより通信遅延が発生し、ビデオストリームが時間通りに到着しないエラーが発生しうる。データの到着エラーが発生した場合は、前回の復号画像を再利用し、ヘッドマウントディスプレイ１００の最新の位置・姿勢に合うように前回の復号画像に対してリプロジェクション処理を施すことで通信遅延に柔軟に対処できる。
【００８１】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【符号の説明】
【００８２】
１０  制御部、  ２０  入力インタフェース、  ３０  出力インタフェース、  ３２  ディスプレイパネル、  ４０  通信制御部、  ４２  ネットワークアダプタ、  ４４  アンテナ、  ５０  記憶部、  ６４  姿勢センサ、  ７０  外部入出力端子インタフェース、  ７２  外部メモリ、  ９０  ＨＤＭＩ送受信部、  １００  ヘッドマウントディスプレイ、  ２００  画像補正装置、  ２１０  送受信部、  ２２０  復号部、  ２３０  位置・姿勢取得部、  ２４０  エラー検出部、  ２５０  画像記憶部、  ２６０  補正部、  ２７０  ＨＤＭＩ送受信部、  ３００  インタフェース、  ４００  ネットワーク、  ５００  画像生成装置、  ５１０  位置・姿勢取得部、  ５２０  視点・視線設定部、  ５３０  レンダリング部、  ５４０  画像記憶部、  ５５０  符号化部、  ５６０  送受信部。
【図１】
2019106628.tif 000003
【図２】
2019106628.tif 000004
【図３】
2019106628.tif 000005
【図４】
2019106628.tif 000006
【図５】
2019106628.tif 000007
【図６】
2019106628.tif 000008
【図７】
2019106628.tif 000009
【図８】
2019106628.tif 000010
【図９】
2019106628.tif 000011
【図１０】
2019106628.tif 000012