図1は、ヘッドマウントディスプレイ100の外観図である。ヘッドマウントディスプレイ100は、ユーザの頭部に装着してディスプレイに表示される静止画や動画などを鑑賞し、ヘッドホンから出力される音声や音楽などを聴くための表示装置である。
ヘッドマウントディスプレイ100に内蔵または外付けされたジャイロセンサや加速度センサなどによりヘッドマウントディスプレイ100を装着したユーザの頭部の位置情報と頭部の回転角や傾きなどの姿勢(orientation)情報を計測することができる。
ヘッドマウントディスプレイ100にはカメラユニットが搭載されており、ユーザがヘッドマウントディスプレイ100を装着している間、外界を撮影することができる。
ヘッドマウントディスプレイ100は、「ウェアラブルディスプレイ」の一例である。ここでは、ヘッドマウントディスプレイ100に表示される画像の生成方法を説明するが、本実施の形態の画像生成方法は、狭義のヘッドマウントディスプレイ100に限らず、めがね、めがね型ディスプレイ、めがね型カメラ、ヘッドフォン、ヘッドセット(マイクつきヘッドフォン)、イヤホン、イヤリング、耳かけカメラ、帽子、カメラつき帽子、ヘアバンドなどを装着した場合にも適用することができる。
図2は、本実施の形態に係る画像生成システムの構成図である。ヘッドマウントディスプレイ100は、一例として、映像・音声をデジタル信号で伝送する通信インタフェースの標準規格であるHDMI(登録商標)(High-Definition Multimedia Interface)などのインタフェース300で画像生成装置200に接続される。
画像生成装置200は、ヘッドマウントディスプレイ100の現在の位置・姿勢情報から、映像の生成から表示までの遅延を考慮してヘッドマウントディスプレイ100の位置・姿勢情報を予測し、ヘッドマウントディスプレイ100の予測位置・姿勢情報を前提としてヘッドマウントディスプレイ100に表示されるべき画像を描画し、ヘッドマウントディスプレイ100に伝送する。
画像生成装置200の一例はゲーム機である。画像生成装置200は、さらにネットワークを介してサーバに接続されてもよい。その場合、サーバは、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションを画像生成装置200に提供してもよい。ヘッドマウントディスプレイ100は、画像生成装置200の代わりに、コンピュータや携帯端末に接続されてもよい。
図3〜図6を参照してカメラ画像にCGによる仮想オブジェクトを重畳した拡張現実画像について説明する。
図3は、ヘッドマウントディスプレイ100に搭載されたカメラにより撮影されるカメラ画像の例を説明する図である。このカメラ画像は部屋を背景としてテーブルとその上にあるバスケット400を撮影したものである。テーブルの表面には花柄の模様が付けられている。カメラ画像において背景はほとんど変化しないが、テーブルの上にあるバスケット400はユーザが手を伸ばして動かすこともある。
図4は、図3のカメラ画像にCGによる仮想オブジェクトを重畳した拡張現実画像を説明する図である。テーブルの上にある現実のオブジェクトであるバスケット400は、CGによって生成された仮想オブジェクトであるティーポット410によって置き換えられ、カメラ画像にティーポット410が重畳される。これにより、ユーザは現実空間に仮想オブジェクトが描かれた拡張現実画像をヘッドマウントディスプレイ100で見ることができる。
図5は、図4の拡張現実画像に対してユーザが仮想オブジェクトに手を伸ばしている様子を示す図である。拡張現実画像をヘッドマウントディスプレイ100で見ているユーザが仮想オブジェクトであるティーポット410を触ろうとすると、ユーザの手がヘッドマウントディスプレイ100に搭載されたカメラで撮影されるため、カメラ画像には手420が写り込む。手420が写り込んだカメラ画像に仮想オブジェクトであるティーポット410が重畳される。このとき、手420の上にティーポット410が重畳されて手420が見えなくなるなど不自然な拡張現実画像にならないように、ティーポット410と手420の位置関係を奥行き情報を用いて正しく判定する必要がある。
そこで、カメラ画像の奥行き(デプス)情報を用いて、カメラ画像に写り込んだ物体と仮想オブジェクトの位置関係を判定し、奥行きを正しく反映した描画を行う。部屋の背景や既に存在がわかっているバスケット400についてはあらかじめ奥行きがわかっているので、仮想オブジェクトとの位置関係はあらかじめ判定しておくことができるが、ユーザが手や足を伸ばしたときや、ユーザ以外の動体(たとえば、他人や犬、猫など)が視野に入ってくる場合などは、あらかじめ奥行きがわかっていないので、カメラ画像のデプス情報から奥行きをその都度判定する必要がある。
一般に、CG画像をカメラ画像に重畳する際、CG画像において背景など描画されない領域を特定の一色に塗りつぶしたクロマキー画像を作成し、クロマキー合成に利用する。クロマキーとして特定された色の領域(「クロマキー領域」と呼ぶ)は透明になるため、クロマキー画像をカメラ画像に重畳すると、クロマキー領域にはカメラ画像が表示される。
図6は、クロマキー合成に利用されるCG画像を説明する図である。図5の状態において、背景がクロマキーの特定色(たとえば赤)に塗りつぶされている。また、カメラ画像に写り込んだ手420がティーポット410よりも手前にあることから、ティーポット410の領域の内、手420によって隠れる領域もクロマキーの特定色に塗りつぶされている。このクロマキー画像をカメラ画像に重畳すると、クロマキーの特定色の部分は透明であるため、カメラ画像が残り、図5の拡張現実画像が得られる。
図7は、前提技術に係るヘッドマウントディスプレイ100の機能構成図である。
制御部10は、画像信号、センサ信号などの信号や、命令やデータを処理して出力するメインプロセッサである。入力インタフェース20は、ユーザからの操作信号や設定信号を受け付け、制御部10に供給する。出力インタフェース30は、制御部10から画像信号を受け取り、ディスプレイパネル32に表示する。
通信制御部40は、ネットワークアダプタ42またはアンテナ44を介して、有線または無線通信により、制御部10から入力されるデータを外部に送信する。通信制御部40は、また、ネットワークアダプタ42またはアンテナ44を介して、有線または無線通信により、外部からデータを受信し、制御部10に出力する。
記憶部50は、制御部10が処理するデータやパラメータ、操作信号などを一時的に記憶する。
姿勢センサ64は、ヘッドマウントディスプレイ100の位置情報と、ヘッドマウントディスプレイ100の回転角や傾きなどの姿勢情報を検出する。姿勢センサ64は、ジャイロセンサ、加速度センサ、角加速度センサなどを適宜組み合わせて実現される。3軸地磁気センサ、3軸加速度センサおよび3軸ジャイロ(角速度)センサの少なくとも1つ以上を組み合わせたモーションセンサを用いて、ユーザの頭部の前後、左右、上下の動きを検出してもよい。
外部入出力端子インタフェース70は、USB(Universal Serial Bus)コントローラなどの周辺機器を接続するためのインタフェースである。外部メモリ72は、フラッシュメモリなどの外部メモリである。
カメラユニット80は、レンズ、イメージセンサ、測距センサなど撮影に必要な構成を含み、撮影された外界の映像と奥行き情報を制御部10に供給する。制御部10は、カメラユニット80のフォーカスやズームなどを制御する。
画像信号処理部82は、カメラユニット80により撮影されたRaw画像に対してRGB変換(デモザイク処理)、ホワイトバランス、色補正、ノイズリダクションなどの画像信号処理(ISP(Image Signal Processing))を施し、さらにカメラユニット80の光学系による歪みなどを取り除く歪み補正処理を施す。画像信号処理部82は画像信号処理および歪み補正処理が施されたカメラ画像を制御部10に供給する。
リプロジェクション部84は、姿勢センサ64が検出したヘッドマウントディスプレイ100の最新の位置・姿勢情報にもとづき、カメラ画像に対してリプロジェクション処理を施し、ヘッドマウントディスプレイ100の最新の視点位置・視線方向から見える画像に変換する。
歪み処理部86は、リプロジェクション処理が施されたカメラ画像に対してヘッドマウントディスプレイ100の光学系で生じる歪みに合わせて画像を変形(distortion)させて歪ませる処理を施し、歪み処理が施されたカメラ画像を制御部10に供給する。
AR重畳部88は、歪み処理が施されたカメラ画像に画像生成装置200により生成されたCG画像を重畳することで拡張現実画像を生成し、制御部10に供給する。
HDMI送受信部90は、HDMIにしたがって映像・音声のデジタル信号を画像生成装置200との間で送受信する。HDMI送受信部90は、画像信号処理部82により画像信号処理および歪み補正処理が施されたRGB画像と奥行き情報を制御部10から受け取り、HDMI伝送路で画像生成装置200に送信する。HDMI送受信部90は、画像生成装置200により生成された画像をHDMI伝送路で画像生成装置200から受信し、制御部10に供給する。
制御部10は、画像やテキストデータを出力インタフェース30に供給してディスプレイパネル32に表示させたり、通信制御部40に供給して外部に送信させることができる。
姿勢センサ64が検出したヘッドマウントディスプレイ100の現在の位置・姿勢情報は、通信制御部40または外部入出力端子インタフェース70を介して画像生成装置200に通知される。あるいは、HDMI送受信部90がヘッドマウントディスプレイ100の現在の位置・姿勢情報を画像生成装置200に送信してもよい。
図8は、前提技術に係る画像生成装置200の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
画像生成装置200の少なくとも一部の機能をヘッドマウントディスプレイ100に実装してもよい。あるいは、画像生成装置200の少なくとも一部の機能を、ネットワークを介して画像生成装置200に接続されたサーバに実装してもよい。
位置・姿勢取得部210は、ヘッドマウントディスプレイ100の現在の位置・姿勢情報をヘッドマウントディスプレイ100から取得する。
視点・視線設定部220は、位置・姿勢取得部210により取得されたヘッドマウントディスプレイ100の位置・姿勢情報を用いて、ユーザの視点位置および視線方向を設定する。
HDMI送受信部280は、ヘッドマウントディスプレイ100からカメラユニット80により撮影された現実空間の映像の奥行き情報を受信し、デプス取得部250に供給する。
画像生成部230は、画像記憶部260からコンピュータグラフィックスの生成に必要なデータを読み出し、仮想空間のオブジェクトをレンダリングしてCG画像を生成し、デプス取得部250から提供される現実空間のカメラ画像の奥行き情報にもとづいてCG画像からクロマキー画像を生成し、画像記憶部260に出力する。
画像生成部230は、レンダリング部232と、クロマキー生成部235と、ポストプロセス部236と、リプロジェクション部240と、歪み処理部242とを含む。
レンダリング部232は、視点・視線設定部220によって設定されたユーザの視点位置および視線方向にしたがって、ヘッドマウントディスプレイ100を装着したユーザの視点位置から視線方向に見える仮想空間のオブジェクトをレンダリングしてCG画像を生成し、クロマキー生成部235に与える。
クロマキー生成部235は、デプス取得部250から与えられたカメラ画像の奥行き情報にもとづいてCG画像からクロマキー画像を生成する。具体的には、現実空間のオブジェクトと仮想空間のオブジェクトの位置関係を判定し、CG画像において仮想オブジェクトの背景や仮想オブジェクトよりも手前にある現実空間のオブジェクトの部分を特定の1色(たとえば赤色)に塗りつぶしたクロマキー画像(「CGクロマキー画像」と呼ぶ)を生成する。
ポストプロセス部236は、CGクロマキー画像に対して、被写界深度調整、トーンマッピング、アンチエイリアシングなどのポストプロセスを施し、CGクロマキー画像が自然で滑らかに見えるように後処理する。
リプロジェクション部240は、位置・姿勢取得部210からヘッドマウントディスプレイ100の最新の位置・姿勢情報を受け取り、ポストプロセスが施されたCGクロマキー画像に対してリプロジェクション処理を施し、ヘッドマウントディスプレイ100の最新の視点位置・視線方向から見える画像に変換する。
ここで、リプロジェクションについて説明する。ヘッドマウントディスプレイ100にヘッドトラッキング機能をもたせて、ユーザの頭部の動きと連動して視点や視線方向を変えて仮想現実の映像を生成した場合、仮想現実の映像の生成から表示までに遅延があるため、映像生成時に前提としたユーザの頭部の向きと、映像をヘッドマウントディスプレイ100に表示した時点でのユーザの頭部の向きとの間でずれが発生し、ユーザは酔ったような感覚(「VR酔い(Virtual Reality Sickness)」などと呼ばれる)に陥ることがある。
このように、ヘッドマウントディスプレイ100の動きを検知し、CPUが描画コマンドを発行し、GPU(Graphics Processing Unit)がレンダリングを実行し、描画された画像がヘッドマウントディスプレイ100に出力されるまでには時間がかかる。描画がたとえば60fps(フレーム/秒)のフレームレートで行われており、ヘッドマウントディスプレイ100の動きを検知してから画像を出力するまでに1フレーム分の遅れが生じるとする。これはフレームレート60fpsのもとでは、16.67ミリ秒ほどであり、人間がずれを感知するには十分な時間である。
そこで、「タイムワープ」または「リプロジェクション」と呼ばれる処理を行い、レンダリングした画像をヘッドマウントディスプレイ100の最新の位置と姿勢に合わせて補正することで人間がずれを感知しにくいようにする。
歪み処理部242は、リプロジェクション処理が施されたCGクロマキー画像に対してヘッドマウントディスプレイ100の光学系で生じる歪みに合わせて画像を変形(distortion)させて歪ませる処理を施し、画像記憶部260に記憶する。
HDMI送受信部280は、画像記憶部260から画像生成部230により生成されたCGクロマキー画像のフレームデータを読み出し、HDMIにしたがってヘッドマウントディスプレイ100に伝送する。
図9は、カメラ画像にCG画像を重畳して拡張現実画像を生成するための前提技術に係る画像生成システムの構成を説明する図である。ここでは、説明を簡単にするため、拡張現実画像を生成するためのヘッドマウントディスプレイ100と画像生成装置200の主な構成を図示して説明する。
ヘッドマウントディスプレイ100のカメラユニット80により撮影された外界のカメラ画像とデプス情報は画像信号処理部82に供給される。画像信号処理部82は、カメラ画像に対して画像信号処理と歪み補正処理を施し、リプロジェクション部84に与える。画像信号処理部82は、デプス情報を画像生成装置200に送信し、クロマキー生成部235に供給する。
画像生成装置200のレンダリング部232は、ヘッドマウントディスプレイ100を装着したユーザの視点位置・視線方向から見た仮想オブジェクトを生成し、クロマキー生成部235に与える。
クロマキー生成部235は、デプス情報にもとづきCG画像からCGクロマキー画像を生成する。ポストプロセス部236はCGクロマキー画像にポストプロセスを施す。リプロジェクション部240はポストプロセスが施されたCGクロマキー画像を最新の視点位置・視線方向に合うように変換する。歪み処理部242はリプロジェクション後のCGクロマキー画像に歪み処理を施す。歪み処理後の最終的なRGB画像はヘッドマウントディスプレイ100に送信され、AR重畳部88に供給される。このRGB画像は、カメラ画像が重畳されるべき領域がクロマキー合成で指定する1色(たとえば赤色)で塗りつぶされた画像である。クロマキーに指定される1色についてはCG画像として利用できないため、CG画像ではクロマキーに指定される1色を避けて別の色を使って表現する。たとえばクロマキー色と同じ色をCG画像で使いたい場合、クロマキー色の1ビットを変更して用いればよい。
ヘッドマウントディスプレイ100のリプロジェクション部84は、画像信号処理と歪み補正処理が施されたカメラ画像を最新の視点位置・視線方向に合うように変換し、歪み処理部86に供給する。歪み処理部86はリプロジェクション後のカメラ画像に歪み処理を施す。AR重畳部88は、画像生成装置200から供給されるCGクロマキー画像を歪み処理後のカメラ画像に重畳することにより、拡張現実画像を生成する。生成された拡張現実画像は、ディスプレイパネル32に表示される。
上述の前提技術に係る画像生成システムでは、クロマキー生成部235により生成されたCGクロマキー画像がポストプロセス部236によるポストプロセス、リプロジェクション部240によるリプロジェクション処理、歪み処理部242により歪み処理を受けるため、仮想オブジェクトの境界においてエイリアシングが発生したり、実際にはない偽色が発生し、AR重畳部88によってカメラ画像に重畳されるときに不自然さが目立つようになる。また、一般的な画像の伝送インタフェースはRGBには対応するが、アルファ値を含めたRGBAには対応しておらず、アルファ値を伝送できないことから半透明のCG画像は表現できないという制約も受ける。仮想オブジェクトが現実空間に落とす影や現実空間への仮想オブジェクトの映り込みを表現するためには、半透明のCG画像をカメラ画像に合成する必要がある。
以下、前提技術に係る画像生成システムにおける課題を克服したいくつかの実施の形態に係る画像生成システムを説明するが、前提技術と重複する説明は適宜省略し、前提技術から改善した構成について説明する。
第1の実施の形態について説明する。ヘッドマウントディスプレイ100の構成は図7に示したものと同じである。
図10は、第1の実施の形態に係る画像生成装置200の機能構成図である。
HDMI送受信部280は、ヘッドマウントディスプレイ100からカメラユニット80により撮影されたカメラ画像とデプス情報を受信し、カメラ画像をカメラ画像取得部252に、デプス情報をデプス取得部250に供給する。なお、このデプス情報は、現実空間のカメラ画像の奥行き情報であり、「カメラデプス情報」と呼ぶ。
画像生成部230は、画像記憶部260からコンピュータグラフィックスの生成に必要なデータを読み出し、仮想空間のオブジェクトをレンダリングしてCG画像を生成し、カメラ画像取得部252から提供されるカメラ画像にCG画像を重畳して仮の重畳画像を生成するとともに、デプス取得部250から提供されるカメラデプス情報にもとづいてCG画像からクロマキー画像を生成する。仮の重畳画像にはポストプロセス、リプロジェクション処理、歪み処理を施し、クロマキー画像にはリプロジェクション処理、歪み処理を施す。クロマキー画像にはポストプロセスを施さないことに留意する。最後にクロマキー画像で仮の重畳画像をマスクすることにより、最終的な合成CGクロマキー画像を生成して画像記憶部260に出力する。
画像生成部230は、レンダリング部232と、重畳部234と、クロマキー生成部235と、ポストプロセス部236と、リプロジェクション部240a、240bと、歪み処理部242a、242bと、合成部244とを含む。
レンダリング部232は、視点・視線設定部220によって設定されたユーザの視点位置および視線方向にしたがって、ヘッドマウントディスプレイ100を装着したユーザの視点位置から視線方向に見える仮想空間のオブジェクトをレンダリングしてCG画像を生成する。レンダリング部232が仮想空間のオブジェクトをレンダリングする際、仮想オブジェクトの奥行き情報(「シーンデプス情報」と呼ぶ)を仮想空間レンダリング用のデプスバッファ(「シーンデプスバッファ」と呼ぶ)に書き込み、仮想オブジェクト間の前後関係を判定する。仮想オブジェクトが描画されない画素はシーンデプスバッファにおいて具体的なデプス値が書き込まれず、シーンデプス値は無限大(不定)である。
さらにレンダリング部232は、カメラユニット80によって撮影される現実空間の現実オブジェクトをレンダリングする。現実世界の物体の形状情報や奥行き情報は、現実世界の空間を3Dスキャンして空間認識することで得られる。たとえば、赤外線パターン、Structured Light、TOF(Time Of Flight)などの方式のデプスセンサを用いて現実空間の奥行き情報を取得したり、ステレオカメラの視差情報から現実空間の奥行き情報を取得することができる。このように現実空間はあらかじめ3Dスキャンされ、ポリゴンメッシュ構造でモデリングされる。レンダリング部232により、現実空間の壁、床、天井、静止物体などがレンダリングされるが、色情報は設けずに白一色で描画する。レンダリング部232が現実空間のオブジェクトをレンダリングする際、現実オブジェクトの奥行き情報(「実空間デプス情報」と呼ぶ)を現実空間レンダリング用のデプスバッファ(「実空間デプスバッファと呼ぶ」)に書き込み、現実オブジェクト間の前後関係を判定する。
シーンデプスバッファとは別に実空間デプスバッファを設ける理由は、現実空間のレンダリングの際にシーンデプスバッファにデプス値を書き込んだ場合、シーンデプス値と実空間デプス値の区別がつかなくなり、クロマキー領域とするか否かを判断できなくなるからである。
レンダリング部232は、現実空間に対する仮想空間の光に関する表現、具体的には仮想オブジェクトが現実オブジェクトに落とす影や現実空間への仮想オブジェクトの映り込み、手前にある仮想空間のオブジェクトの背後が透けて見える表現、仮想空間における仮想の光源によるライティング表現などを半透明のCG画像として描画する。たとえばシャドウマッピングは光源からの深度マップを平面に投影する方法やレイトレーシングなどの手法を用いて影や映り込みを描画することができる。仮想オブジェクトの影や映り込みの半透明CG画像を現実空間の低解像度のカメラ画像に重畳することで現実空間に対する仮想オブジェクトの影や映り込みを表現することができる。現実空間のオブジェクトは白一色でレンダリングされているため、影や映り込みが描画された領域とは区別することができる。現実空間のレンダリング領域はクロマキー領域に指定されるが、影や映り込みが描画された領域はクロマキー領域には指定されない。
レンダリング部232は、仮想オブジェクトと仮想オブジェクトの影や映り込みなど仮想空間の光に関する表現が描画されたCG画像を重畳部234とクロマキー生成部235に与える。
重畳部234は、カメラ画像取得部252から与えられた低解像度で遅延のあるカメラ画像にCG画像を重畳して仮の重畳画像を生成し、ポストプロセス部236に与える。重畳部234は、シーンデプス値が無限大の領域(すなわち仮想オブジェクトが描画されていない領域)であって、実空間デプス値が書き込まれている領域に低解像度で遅延のあるカメラ画像を重畳する。これにより、影や映り込みが半透明で描画されているCG画像に対して影や映り込みの色情報を残したまま低解像度で遅延のあるカメラ画像が重畳される。すなわち影や映り込みの色情報と低解像度で遅延のあるカメラ画像の色情報がアルファ合成される。
ここで、実空間デプス値が書き込まれておらず、シーンデプス値が書き込まれた領域にはカメラ画像が重畳されないことに留意する。後述のように現実空間のメッシュ構造を変形して穴などの空き領域を設けた場合、空き領域には実空間デプス値が書き込まれず、シーンデプス値が書き込まれているため、クロマキー色にはならないから、カメラ画像は重畳されない。代わりに空き領域に仮想空間をレンダリングして空き領域から向こう側が見えるような効果を与えることも可能になる。
ポストプロセス部236は、仮の重畳画像に対してポストプロセスを施し、仮の重畳画像が自然で滑らかに見えるように後処理する。
第1のリプロジェクション部240aは、位置・姿勢取得部210からヘッドマウントディスプレイ100の最新の位置・姿勢情報を受け取り、ポストプロセスが施された仮の重畳画像に対してリプロジェクション処理を施し、ヘッドマウントディスプレイ100の最新の視点位置・視線方向から見える画像に変換する。
第1の歪み処理部242aは、リプロジェクション処理が施された仮の重畳画像に対して歪み処理を施し、合成部244に与える。
クロマキー生成部235は、デプス取得部250から与えられたカメラデプス情報、レンダリング部232から与えられたシーンデプス情報および実空間デプス情報にもとづいてクロマキー画像を生成する。具体的には、シーンデプス値が無限大、または、実空間デプス値が書き込まれている領域で、かつ、影や映り込みの描画領域以外の領域をクロマキー色に塗りつぶし、また、カメラデプス情報とシーンデプス情報を参照して仮想オブジェクトよりも手前にある現実オブジェクトの部分をクロマキー色に塗りつぶしたクロマキー画像を生成する。
クロマキー画像にはポストプロセスを施さない。
第2のリプロジェクション部240bは、位置・姿勢取得部210からヘッドマウントディスプレイ100の最新の位置・姿勢情報を受け取り、クロマキー画像に対してリプロジェクション処理を施し、ヘッドマウントディスプレイ100の最新の視点位置・視線方向から見える画像に変換する。
第2の歪み処理部242bは、リプロジェクション処理が施されたクロマキー画像に対して歪み処理を施し、合成部244に与える。
合成部244は、仮の重畳画像に対してクロマキー画像をマスクとして用いて合成し、合成CGクロマキー画像を生成し、画像記憶部260に記憶する。
ここで、第1のリプロジェクション部240aが仮の重畳画像に対してリプロジェクション処理を施す場合と、第1の歪み処理部242aがリプロジェクション処理後の仮の重畳画像に対して歪み処理を施す場合は、ピクセルのサンプリング時に一般にバイリニア補間などの補間処理が行われる。それに対して、第2のリプロジェクション部240bがクロマキー画像に対してリプロジェクション処理を施す場合と、第2の歪み処理部242bがリプロジェクション処理後のクロマキー画像に対して歪み処理を施す場合は、ピクセルのサンプリング時にポイントサンプリングが行われる。クロマキー画像に対してバイリニア補間などの補間処理を行うと、クロマキー色が非クロマキー色に混合されて別の色になってしまい、クロマキー画像の意味がなくなるからである。
クロマキー画像に対するリプロジェクション処理と歪み処理において、上記のポイントサンプリング以外に以下の二つの方法を用いてもよい。第1の方法は、サンプリング時にクロマキー色と非クロマキー色の間でバイリニア補間を行って中間色のピクセル値をいったん算出するが、所定の閾値を設けて、補間後のピクセル値が閾値以下である場合は、ピクセル値をクロマキー色に設定し、補間後のピクセル値が閾値を超える場合は、ピクセル値を元の非クロマキー色に設定する。この方法によれば、補間によって生じる中間色は捨てられ、閾値を超えるかどうかで、クロマキー色になるか、元の非クロマキー色になるかが決まるため、クロマキー色が非クロマキー色に混合されることはない。
第2の方法は、クロマキー画像を生成する際に、(u,v)が参照するポイントの近傍4ピクセルをサンプリングして、近傍4ピクセルのすべてがクロマキーの条件に当てはまる場合にクロマキー色に設定し、近傍4ピクセルのいずれかがクロマキーの条件に当てはまらない場合はクロマキー色には設定しない。近傍ピクセルの選び方として4ピクセル以外に9ピクセルを選んでもよい。この方法によれば、エッジ境界部分がクロマキー色によって塗りつぶされないようになるため、CG画像とカメラ画像が境界付近でより自然に融合して見える。
HDMI送受信部280は、画像記憶部260から画像生成部230により生成された合成CGクロマキー画像のフレームデータを読み出し、HDMIにしたがってヘッドマウントディスプレイ100に伝送する。
図11は、カメラ画像にCG画像を重畳して拡張現実画像を生成するための第1の実施の形態に係る画像生成システムの構成を説明する図である。
ヘッドマウントディスプレイ100のカメラユニット80により撮影された外界のカメラ画像とカメラデプス情報は画像信号処理部82に供給される。画像信号処理部82は、低遅延かつ高解像度のカメラ画像に対して画像信号処理と歪み補正処理を施し、リプロジェクション部84に与える。さらに、画像信号処理部82は、画像信号処理と歪み補正処理が施されたカメラ画像とカメラデプス情報を画像生成装置200に送信し、カメラ画像は重畳部234に、カメラデプス情報はクロマキー生成部235に供給される。画像生成装置200に送信されるカメラ画像は遅延があり、低解像度である。
画像生成装置200のレンダリング部232は、現実空間の現実オブジェクトをレンダリングするとともに、ヘッドマウントディスプレイ100を装着したユーザの視点位置・視線方向から見た仮想オブジェクトを生成し、現実空間に対する仮想空間の光に関する表現、具体的には仮想オブジェクトが現実オブジェクトに落とす影や仮想オブジェクトの映り込み、仮想オブジェクトの半透明化、仮想光源によるライティング表現などをレンダリングする。レンダリング部232は、生成されたCG画像を重畳部234に与え、シーンデプス情報と実空間デプス情報をクロマキー生成部235に与える。
重畳部234は、CG画像にカメラ画像を重畳し、仮の重畳画像を生成し、ポストプロセス部236に与える。ここで、ヘッドマウントディスプレイ100から提供されるカメラ画像は低解像度で遅延があってもよい。なぜなら、仮の重畳画像におけるカメラ画像の部分はクロマキー画像でマスクされて最終的には消去されるからである。重畳部234は、シーンデプス値は書き込まれていないが、実空間デプス値が書き込まれている領域にカメラ画像を重畳する。したがって、仮想オブジェクトが描画されていない領域と、影や映り込みなど仮想空間の光に関する表現が描画されている領域にカメラ画像が重畳される。影や映り込みなど仮想空間の光に関する表現が描画されている領域では影や映り込みなど仮想空間の光に関する表現の色情報が半透明のCG画像として低解像度のカメラ画像に合成される。
ポストプロセス部236は仮の重畳画像にポストプロセスを施す。リプロジェクション部240aはポストプロセスが施された仮の重畳画像を最新の視点位置・視線方向に合うように変換する。歪み処理部242aはリプロジェクション後の仮の重畳画像に歪み処理を施し、合成部244に与える。
クロマキー生成部235は、カメラデプス情報、シーンデプス情報および実空間デプス情報にもとづきクロマキー画像を生成する。シーンデプス値が書き込まれていない領域はクロマキー色に塗りつぶされるが、影や映り込みなど仮想空間の光に関する表現が描画されている半透明のCG領域はクロマキー色に塗りつぶされない。また、カメラデプス情報とシーンデプス情報にもとづいて現実空間のオブジェクトと仮想空間のオブジェクトの位置関係がリアルタイムで判定され、仮想オブジェクトよりも手前にある現実の移動物体(手やボールなど)の部分がクロマキー色に塗りつぶされる。リプロジェクション部240bはクロマキー画像を最新の視点位置・視線方向に合うように変換する。歪み処理部242bはリプロジェクション後のクロマキー画像に歪み処理を施し、合成部244に与える。
合成部244は、クロマキー画像で仮の重畳画像をマスクすることで合成CGクロマキー画像を生成する。ここで、仮の重畳画像はポストプロセスを施されているため、滑らかな画像となっており、カメラ画像とCG画像の境界は目立たない。他方、クロマキー画像はポストプロセスが施されていないため、仮想オブジェクトの境界にエイリアシングや偽色が発生していない。したがって、ポストプロセスが施されていないクロマキー画像でポストプロセスが施された重畳画像をマスクすれば、仮想オブジェクトの境界にエイリアシングや偽色がなく、かつ自然で滑らかな合成CGクロマキー画像が合成される。
シーンデプス値が無限大であっても、影や映り込みが描画されている半透明のCG領域はクロマキー色で塗りつぶされないため、影や映り込みの半透明のCG領域は低解像度のカメラ画像に重畳された状態で合成CGクロマキー画像の中に残される。
合成CGクロマキー画像は特定の1色がクロマキーに指定されたRGB画像としてヘッドマウントディスプレイ100に送信され、AR重畳部88に供給される。
ヘッドマウントディスプレイ100のリプロジェクション部84は、画像信号処理と歪み補正処理が施された低遅延かつ高解像度のカメラ画像を最新の視点位置・視線方向に合うように変換し、歪み処理部86に供給する。歪み処理部86はリプロジェクション後の低遅延かつ高解像度のカメラ画像に歪み処理を施す。AR重畳部88は、画像生成装置200から供給される合成CGクロマキー画像を歪み処理後の低遅延かつ高解像度のカメラ画像に重畳することにより、拡張現実画像を生成する。生成された拡張現実画像は、ディスプレイパネル32に表示される。クロマキー色が指定された領域にはヘッドマウントディスプレイ100側で低遅延かつ高解像度のカメラ画像が重畳される。
図12は、第1の実施の形態に係る画像生成システムによってカメラ画像にCG画像を重畳した拡張現実画像を説明する図である。図5と同様、ユーザが仮想オブジェクトであるティーポット410を触ろうとしており、手420が写り込んだカメラ画像に仮想オブジェクトであるティーポット410が重畳される。仮想オブジェクトであるティーポット410が現実のテーブルに落とす影412が半透明CGとしてカメラ画像に重畳される形で描画されている。そのため影412の描画領域には現実のテーブル表面の花柄が透けて見える。
図13は、第1の実施の形態に係る画像生成システムによって利用される合成CGクロマキー画像を説明する図である。合成CGクロマキー画像は、仮想オブジェクト(ここではティーポット)の描画領域と仮想オブジェクトの影や映り込みの描画領域(ここではティーポットが花柄のテーブル表面に落とす影)がCGであり、それ以外はクロマキー色で塗りつぶされている。また、仮想オブジェクトよりも手前に現実の移動物体(ここではユーザの手)がある場合は手前の移動物体の部分もクロマキー色で塗りつぶされる。
図13の合成CGクロマキー画像がヘッドマウントディスプレイ100側で高解像度のカメラ画像に重畳されることで図12の拡張現実画像が生成される。ティーポット410の影の部分は低解像度のカメラ画像と合成されているが、それ以外のカメラ画像はユーザの手の領域も含めて高解像度であることに留意する。
第1の実施の形態の画像生成システムを用いれば、現実空間の壁や天井、テーブルなどに仮想的に穴を空けてCG画像を重畳することもできる。これを図14および図15を参照して説明する。
図14は、現実空間のポリゴンメッシュを変形して壁に穴を空ける例を説明する図である。3Dスキャンによって現実空間のポリゴンメッシュが得られるが、これを変形することで図14のように壁に穴430を設けることができる。穴430の別の表現方法として、アルファマスクのあるテクスチャを利用してもよい。
穴430には現実空間の物体が何も存在していないため、レンダリング部232が現実空間のレンダリングをする際、実空間デプスバッファの穴430に対応する領域にはデプス情報が書き込まれない。一方、レンダリング部232は、穴430に仮想的なオブジェクトをレンダリングすることができ、その際、シーンデプスバッファの穴430に対応する領域にデプス情報が書き込まれる。したがって、重畳部234がカメラ画像をCG画像に重畳する際、実空間デプス値が設定されていない穴430にはカメラ画像が重畳されることがなく、シーンデプス値が設定されている穴430にCG画像が表示される。
図15は、現実空間の壁の穴に仮想オブジェクトが描画された例を説明する図である。図14の穴430に対応して図15では仮想的な穴440がCGで描画され、仮想的な穴440の向こう側に仮想的な自動車がCGで描画されている。
第1の実施の形態の画像生成システムによれば、カメラ画像とCG画像の境界の違和感をポストプロセスによって緩和するとともに、クロマキー画像にはポストプロセスを施さないため、エイリアシングや偽色のないクロマキー画像を生成して、高品質の合成CGクロマキー画像を生成できる。この合成CGクロマキー画像をカメラ画像に重畳して拡張現実画像を生成するため、不自然さのない拡張現実画像を生成できる。また、CG画像に半透明部分がある場合もカメラ画像に重畳してポスト処理する際に半透明処理を施すことができるので、半透明部分もレンダリングによるレイテンシはあるが表現することができる。また、合成CGクロマキー画像は、特定の1色をクロマキーとしたRGB画像であるため、RGB画像を伝送することのできるHDMIなどの一般的な通信インタフェースで伝送することができる。
なお、上記の説明では、合成CGクロマキー画像は、特定の1色をクロマキーとしたRGB画像であったが、クロマキー画像のクロマキー色をRGBAのアルファ成分に格納してもよい。即ち、ポストプロセスの中間処理までは、画像のクロマキー色となる部分をRGBAのアルファ成分を透過にして処理を行い、ポストプロセスの最終段階でアルファ成分が透過である部分の色をクロマキー色に置き換えてもよい。これにより、仮の重畳画像とクロマキー画像を格納するために二つの別個のフレームバッファを使う必要がなくなり、一つのフレームバッファ上で仮の重畳画像とクロマキー画像の処理を行うことができる。
第2の実施の形態について説明する。ヘッドマウントディスプレイ100の構成は基本的には図7に示したものと同じであるが、リプロジェクション部84は、カメラ画像用の第1のリプロジェクション部84aと合成CGクロマキー画像用の第2のリプロジェクション部84bを有する。
図16は、第2の実施の形態に係る画像生成装置200の機能構成図である。
HDMI送受信部280は、ヘッドマウントディスプレイ100からカメラユニット80により撮影されたカメラ画像とデプス情報を受信し、カメラ画像をカメラ画像取得部252に、デプス情報をデプス取得部250に供給する。
画像生成部230は、画像記憶部260からコンピュータグラフィックスの生成に必要なデータを読み出し、仮想空間のオブジェクトをレンダリングしてCG画像を生成し、カメラ画像取得部252から提供されるカメラ画像にCG画像を重畳して仮の重畳画像を生成するとともに、デプス取得部250から提供されるカメラデプス情報にもとづいてCG画像からクロマキー画像を生成する。仮の重畳画像にはポストプロセスを施すが、クロマキー画像にはポストプロセスを施さない。最後にクロマキー画像で仮の重畳画像をマスクすることにより、最終的な合成CGクロマキー画像を生成して画像記憶部260に出力する。
画像生成部230は、レンダリング部232と、重畳部234と、クロマキー生成部235と、ポストプロセス部236と、合成部244とを含む。
レンダリング部232は、視点・視線設定部220によって設定されたユーザの視点位置および視線方向にしたがって、ヘッドマウントディスプレイ100を装着したユーザの視点位置から視線方向に見える仮想空間のオブジェクトをレンダリングしてCG画像を生成する。レンダリング部232が仮想空間のオブジェクトをレンダリングする際、シーンデプス情報をシーンデプスバッファに書き込む。
さらにレンダリング部232は、カメラユニット80によって撮影される現実空間の現実オブジェクトをレンダリングする。レンダリング部232が現実空間のオブジェクトをレンダリングする際、現実オブジェクトの実空間デプス情報を実空間デプスバッファに書き込む。
レンダリング部232は、仮想オブジェクトと仮想オブジェクトの影や映り込みなど仮想空間の光に関する表現が描画されたCG画像を重畳部234とクロマキー生成部235に与える。
重畳部234は、カメラ画像取得部252から与えられた低解像度で遅延のあるカメラ画像にCG画像を重畳して仮の重畳画像を生成し、ポストプロセス部236に与える。重畳部234は、シーンデプス値が無限大の領域であって、実空間デプス値が書き込まれている領域に低解像度で遅延のあるカメラ画像を重畳する。
ポストプロセス部236は、仮の重畳画像に対してポストプロセスを施し、仮の重畳画像が自然で滑らかに見えるように後処理する。
クロマキー生成部235は、デプス取得部250から与えられたカメラデプス情報、レンダリング部232から与えられたシーンデプス情報および実空間デプス情報にもとづいてクロマキー画像を生成する。
合成部244は、仮の重畳画像に対してクロマキー画像をマスクとして用いて合成し、合成CGクロマキー画像を生成し、画像記憶部260に記憶する。
HDMI送受信部280は、画像記憶部260から画像生成部230により生成された合成CGクロマキー画像のフレームデータを読み出し、HDMIにしたがってヘッドマウントディスプレイ100に伝送する。
図17は、カメラ画像にCG画像を重畳して拡張現実画像を生成するための第2の実施の形態に係る画像生成システムの構成を説明する図である。
ヘッドマウントディスプレイ100のカメラユニット80により撮影された外界のカメラ画像とカメラデプス情報は画像信号処理部82に供給される。画像信号処理部82は、低遅延かつ高解像度のカメラ画像に対して画像信号処理と歪み補正処理を施し、リプロジェクション部84に与える。さらに、画像信号処理部82は、画像信号処理と歪み補正処理が施されたカメラ画像とカメラデプス情報を画像生成装置200に送信し、カメラ画像は重畳部234に、デプス情報はクロマキー生成部235に供給される。画像生成装置200に送信されるカメラ画像は遅延があり、低解像度である。
画像生成装置200のレンダリング部232は、現実空間の現実オブジェクトをレンダリングするとともに、ヘッドマウントディスプレイ100を装着したユーザの視点位置・視線方向から見た仮想オブジェクトを生成し、仮想オブジェクトが現実オブジェクトに落とす影や仮想オブジェクトの映り込みなどのライティング表現をレンダリングする。レンダリング部232は、生成されたCG画像を重畳部234に与え、シーンデプス情報と実空間デプス情報をクロマキー生成部235に与える。
重畳部234は、CG画像にカメラ画像を重畳し、仮の重畳画像を生成し、ポストプロセス部236に与える。第1の実施の形態と同様、ヘッドマウントディスプレイ100から提供されるカメラ画像は低解像度で遅延があってもよい。
ポストプロセス部236は仮の重畳画像にポストプロセスを施し、合成部244に与える。
クロマキー生成部235は、カメラデプス情報、シーンデプス情報および実空間デプス情報にもとづきクロマキー画像を生成し、合成部244に与える。
合成部244は、クロマキー画像で重畳画像をマスクすることで合成CGクロマキー画像を生成する。第1の実施の形態と同様、ポストプロセスが施されていないクロマキー画像でポストプロセスが施された重畳画像をマスクすれば、仮想オブジェクトの境界にエイリアシングや偽色がなく、かつ自然で滑らかな合成CGクロマキー画像が合成される。
合成CGクロマキー画像は特定の1色がクロマキーに指定されたRGB画像としてヘッドマウントディスプレイ100に送信され、リプロジェクション部84bに供給される。
ヘッドマウントディスプレイ100の第1のリプロジェクション部84aは、画像信号処理と歪み補正処理が施された低遅延かつ高解像度のカメラ画像を最新の視点位置・視線方向に合うように変換し、AR重畳部88に供給する。
ヘッドマウントディスプレイ100の第2のリプロジェクション部84bは、合成CGクロマキー画像を最新の視点位置・視線方向に合うように変換し、AR重畳部88に供給する。
ここで、ヘッドマウントディスプレイ100において、カメラ画像用の第1のリプロジェクション部84aと合成CGクロマキー画像用の第2のリプロジェクション部84bに分かれているのは、画像生成装置200のレンダリングには時間がかかり、リプロジェクションによって補正すべき差分量が異なるからである。たとえば、第1のリプロジェクション部84aで1フレーム先のリプロジェクションを行うのに対して、第2のリプロジェクション部84bでは2フレーム先のリプロジェクションを行う必要がある。
AR重畳部88は、第2のリプロジェクション部84bによりリプロジェクション処理が施された合成CGクロマキー画像を、第1のリプロジェクション部84aによりリプロジェクション処理が施された低遅延かつ高解像度のカメラ画像に重畳することにより、拡張現実画像を生成し、歪み処理部86に供給する。クロマキー色が指定された領域にはヘッドマウントディスプレイ100側で低遅延かつ高解像度のカメラ画像が重畳される。
歪み処理部86は拡張現実画像に歪み処理を施す。生成された拡張現実画像は、ディスプレイパネル32に表示される。
第2の実施の形態の画像生成システムによれば、第1の実施の形態と同様に、合成CGクロマキー画像をカメラ画像に重畳して拡張現実画像を生成するため、不自然さのない拡張現実画像を生成できるという利点の他、次の利点がある。第1の実施の形態とは異なり、ヘッドマウントディスプレイ100側でカメラ画像と合成CGクロマキー画像に対してリプロジェクション処理を施すため、ディスプレイパネル32に表示する直前の視点位置・視線方向に合うようにカメラ画像と合成CGクロマキー画像を変換でき、高い精度で追従性のある拡張現実画像を提供できる。また、画像生成装置200側のリプロジェクション処理の負担を軽減できるので、画像生成装置200側ではレンダリングにより多くのリソースをかけることができる。
第1の実施の形態および第2の実施の形態において、クロマキー画像にはポストプロセス部236によるポストプロセスを施さない構成を説明したが、変形例として、クロマキー画像に対して視点合わせやスケーリングのためにポストプロセスを適用する構成としてもよい。この場合、画素を補間する際に周囲の画素の平均値を使うなどの方法を採用すると、境界の色がクロマキー色とは異なる色に変わってしまう。そこでクロマキー色を変えないようにポストプロセスを適用することが必要である。あるいは、境界の色が変わってしまうような通常のポストプロセスをクロマキー画像に適用した後、元のクロマキー色と完全に一致する領域のみをマスクとして利用するようにしてもよい。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
上記の説明では、ポストプロセスとして、被写界深度調整、トーンマッピング、アンチエイリアシングなどの処理を例示したが、歪み処理、単純な拡大・縮小、台形変換なども含めてポストプロセスと呼んでもよい。