(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、添付図面を参照して、本発明を実施するための形態について詳細に説明する。なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正または変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。
(第一の実施形態)
図1は、本実施形態における複合現実感システム(MRシステム)10の構成例を示す図である。本実施形態におけるMRシステム10は、現実空間と仮想空間とを融合した複合現実空間(MR空間)を使用者(視聴者)に提示するための画像処理システムである。
本実施形態では、MR空間を体感する使用者の頭部に装着される頭部装着型表示装置(HMD)20を利用して、使用者にMR空間を提示する場合について説明する。本実施形態において、HMD20は、現実空間の画像(実写画像)とコンピュータグラフィックス(CG)により描画される仮想空間の画像(CG画像)とを合成した合成画像を使用者に提示可能なビデオシースルー型HMDである。HMD20は、実写画像とCG画像とを合成して合成画像を生成する画像処理装置30と、画像処理装置30により生成された合成画像を表示する表示部40と、を備える。
【0010】
MRシステム10は、HMD20と、CG画像を生成するCG画像生成装置50と、を備える。HMD20とCG画像生成装置50とは、ネットワークを介して互いにデータを送信可能に接続されている。ネットワークは、LAN(Local Area Network)やWAN(Wide Area Network)、インターネットなどである。なお、ネットワークへの物理的な接続形態は、有線であってもよいし、無線であってもよい。但し、広い空間に置かれた使用者がMR空間を体感するためには、HMD20からネットワークへの接続形態は無線であることが望ましい。
HMD20の画像処理装置30は、画像取得部31と、第一のバッファ32と、第二のバッファ33と、画像合成部34と、表示制御部35と、補間画像生成部36と、を備える。また、CG画像生成装置50は、GMV検出部51と、描画位置算出部52と、CG生成部53と、を備える。
【0011】
画像取得部31は、使用者の視点に対応するHMD20の視点の位置姿勢に対応した画像を時系列上連続して入力する。本実施形態では、画像取得部31は、使用者の右目、左目それぞれに対応する位置から現実空間を撮像した実写画像を一定周期で入力する。例えば、画像取得部31は、現実空間を撮像したビデオ映像を1フレームごとにキャプチャし、実写画像として取得することができる。画像取得部31は、取得した実写画像に、画像の時間情報(同期情報)としてフレーム番号を付加し、CG画像生成装置50のGMV検出部51に送信する(D1)。また、画像取得部31は、フレーム番号を付加した実写画像を、第一のバッファ32に保存する。
なお、画像取得部31が実写画像をどこから取得するかについては、特に限定されるものではない。例えば、画像取得部31は、HMD20に実装された撮像装置や、ネットワークに接続されたサーバ装置、記憶媒体から情報を読み取る装置、ハードディスク装置などから取得することができる。また、画像取得部31が取得する画像は、HMD20の視点の位置姿勢に対応した画像であれよく、実写画像に限定されない。
【0012】
第一のバッファ32は、画像取得部31により取得された実写画像を、フレーム番号と共に一時的に保存(格納)する。第二のバッファ33は、CG画像生成装置50のGMV検出部51により送信されたGMV(グローバルモーションベクトル)を保存する。ここで、GMVは、HMD20の視点の位置姿勢の動き量(変化量)を示す情報である。第二のバッファ33は、フレーム番号と共にGMVを一時的に保存する。また、第二のバッファ33は、CG画像生成装置50のCG生成部53により生成されたCG画像をフレーム番号と共に一時的に保存する。
【0013】
画像合成部34は、実写画像とCG画像とを合成した合成画像(MR画像)を生成する。本実施形態では、画像合成部34は、注目フレームの合成画像を生成する際に、注目フレームのCG画像に異常が発生しているか否かを判定する。ここで、CG画像に異常が発生している状態とは、注目フレームの合成画像を生成するタイミングにおいて、注目フレームのCG画像が合成画像の生成に使用できない状態である。例えば、CG画像に異常が発生している状態は、CG画像の取得が同期信号に対して遅延している場合や、CG画像自体にエラーが発生している場合を含む。
【0014】
本実施形態では、CG画像の取得が同期信号に対して遅延している場合に、CG画像に異常が発生していると判定する例について説明する。具体的には、画像合成部34は、注目フレームの合成画像を生成するタイミングにおいて、注目フレームのCG画像が第二のバッファ33に保持されているか否かを判定することで、注目フレームのCG画像に異常が発生しているか否かを判定する。
そして、注目フレームのCG画像が保存されている場合は、第一のバッファ32に保存された注目フレームの実写画像と、第二のバッファ33に保存された注目フレームのCG画像とを合成し、合成画像を生成する。一方、注目フレームのCG画像が保存されていない場合は、第一のバッファ32に保存された注目フレームの実写画像と、補間画像生成部36により生成された、注目フレームのCG画像を補間するための補間画像とを合成し、合成画像を生成する。
【0015】
表示制御部35は、画像合成部34により生成された合成画像を表示部40に表示させる表示制御を行う。
補間画像生成部36は、第二のバッファ33に保存された、注目フレームよりも時間的に前で且つ最新のCG画像を補正対象として補正し、注目フレームのCG画像を補間するための補間画像を生成する。具体的には、補間画像生成部36は、補正対象のCG画像を、当該補正対象のCG画像のフレーム番号に相当する実写画像から注目フレームの実写画像までの間のGMVを加味して幾何変換し、補間画像を生成する。ここで、幾何変換は、平面内の写像、奥行き方向の写像、および空間内の回転の少なくとも1つを含む。
また、補間画像の生成を完了するタイミングは、表示制御部35により注目フレームの合成画像を表示部40に表示させるタイミングよりも前、具体的には、画像合成部34において注目フレームの合成画像を生成するタイミングに間に合うタイミングとする。
【0016】
GMV検出部51は、画像取得部31から送信された実写画像をもとにGMVを検出し、フレーム番号と共にHMD20の画像処理装置30に送信する(D2)。また、GMV検出部51は、検出したGMVを描画位置算出部52に送信する。描画位置算出部52は、GMVに基づいてCGの描画位置を算出し、算出結果をCG生成部53に送信する。CG生成部53は、GMVを加味した左右両目用のCG画像をそれぞれ生成し、フレーム番号、描画位置と共にHMD20の画像処理装置30に送信する(D3)。なお、CG生成部53は、GMVに加えて、光源やその他の環境を考慮してCG画像を生成してもよい。
表示部40は、画像処理装置30から送信された合成画像を表示するディスプレイを備える。ここで、上記ディスプレイは、使用者の左右の目にそれぞれ対応して配置することができる。この場合、使用者の左目に対応するディスプレイには左目用の合成画像が表示され、使用者の右目に対応するディスプレイには右目用の合成画像が表示される。また、表示部40は、ディスプレイ上の画像を眼球に導くための光学系を備えていてもよい。
【0017】
図2は、画像処理装置30のハードウェア構成の一例を示す図である。
画像処理装置30は、CPU301と、RAM302と、ROM303と、記憶装置304と、記憶媒体ドライブ305と、インターフェース(I/F)306と、システムバス307と、を備える。
CPU301は、画像処理装置30における動作を統括的に制御するプロセッサであり、システムバス307を介して、各構成部(302〜306)を制御する。RAM302は、記憶装置304や記憶媒体ドライブ305からロードされたプログラムやデータを一時的に記憶するための領域を有する。さらに、RAM302は、I/F306を介して外部装置から受信したデータを一時的に記憶するためのエリアを有する。また、RAM302は、CPU301が各処理を実行する際に用いるワークエリアも有する。例えば、RAM302は、
図1の第一のバッファ32および第二のバッファ33として機能することができる。
【0018】
ROM303は、コンピュータの設定データやブートプログラムなどを格納する。記憶装置304は、画像処理装置30が行うものとして説明した上述の各処理をCPU301に実行させるためのプログラムやデータを記憶している。記憶装置304に記憶されているプログラムやデータは、CPU301による制御に従って適宜RAM302にロードされる。CPU301は、このロードされたプログラムやデータを用いて処理を実行することで、
図1に示す画像処理装置30の各部の機能を実現することができる。
記憶媒体ドライブ305は、CD−ROMやDVD−ROMなどの記憶媒体に記録されたプログラムやデータを読み出したり、係る記憶媒体にプログラムやデータを書き込んだりすることができる。なお、上記において、記憶装置304に保存されているものとして説明したプログラムやデータの一部若しくは全部を、この記憶媒体に記録しておいてもよい。記憶媒体ドライブ305が記憶媒体から読み出したプログラムやデータは、記憶装置304やRAM302に対して出力される。
【0019】
I/F306は、外部装置と通信するためのインターフェースである。I/F306を介して受信したデータは、RAM302や記憶装置304に入力される。
上述したように、
図1に示す画像処理装置30の各部の機能は、CPU301がプログラムを実行することで実現することができる。ただし、
図1に示す画像処理装置30の各部のうち少なくとも一部が専用のハードウェアとして動作するようにしてもよい。この場合、専用のハードウェアは、CPU301の制御に基づいて動作する。
【0020】
なお、CG画像生成装置50についても、
図2の構成と同様のハードウェア構成を有することができる。この場合、
図1に示すCG画像生成装置50の各部の機能は、CG画像生成装置50のCPUがプログラムを実行することで実現することができる。ただし、
図1に示すCG画像生成装置50の各部のうち少なくとも一部が専用のハードウェアとして動作するようにしてもよい。この場合、専用のハードウェアは、CG画像生成装置50のCPUの制御に基づいて動作する。
つまり、
図1に示すHMD20およびCG画像生成装置50を構成するそれぞれのブロックは、目標とする処理速度が得られる範囲であれば、ハードウェア、ソフトウェアどちらによって実現されてもよい。
【0021】
以下、画像処理装置30およびCG画像生成装置50において実行される処理の手順について、
図3を参照しながら説明する。
図3に示す処理は、例えば使用者による指示入力に応じて開始される。ただし、
図3の処理の開始タイミングは、上記のタイミングに限らない。
画像処理装置30およびCG画像生成装置50は、それぞれCPUが必要なプログラムを読み出して実行することにより、
図3に示す処理を実現することができる。ただし、上述したように、
図1に示す画像処理装置30およびCG画像生成装置50の各要素のうち少なくとも一部が専用のハードウェアとして動作することで
図4の処理が実現されるようにしてもよい。この場合、専用のハードウェアは、各装置のCPUの制御に基づいて動作する。なお、以降、アルファベットSはフローチャートにおけるステップを意味するものとする。
【0022】
まず、CG画像生成装置50の処理の流れについて説明する。
S1において、GMV検出部51は、画像処理装置30の画像取得部31から実写画像(D1)を受信したか否かを判定する。そして、GMV検出部51は、実写画像を受信していないと判定した場合は、実写画像を受信するまで待機し、実写画像を受信するとS2に移行する。S2では、GMV検出部51は、S1において取得した実写画像を注目フレームの実写画像とし、注目フレームの1つ前のフレームの実写画像と比較して、HMDの視点の位置姿勢の動き量を検出し、注目フレームのGMVを生成する。ここで、HMDの視点の位置姿勢の動き量は、画像中の特徴点を検出し、検出した特徴点の移動をフレームにまたがって追跡することにより検出することができる。
【0023】
S3では、GMV検出部51は、S2において生成されたGMVを、注目フレームのフレーム番号と共に画像処理装置30に送信する(D2)。画像処理装置30に送信されたGMVは、フレーム番号と共に第二のバッファ33に保存される。次にS4では、描画位置算出部52は、S2において生成されたGMVに基づいてCGの描画位置を算出し、CG生成部53は、S2において生成されたGMVに基づいてCG画像を生成する。そして、S5では、CG生成部53は、S4において生成されたCG画像を、注目フレームのフレーム番号やCGの描画位置と共に画像処理装置30に送信する(D3)。画像処理装置30に送信されたCG画像は、フレーム番号やCGの描画位置と共に第二のバッファ33に保存される。
このように、CG画像生成装置50は、注目フレームのGMVを検出した後、注目フレームのCG画像を生成し、注目フレームのGMVを先行して注目フレームのCG画像の生成を待たずに画像処理装置30へ送信する。
【0024】
次に、画像処理装置30の処理の流れについて説明する。
まずS11において、画像取得部31は、実写画像を取得(キャプチャ)する。次にS12において、画像取得部31は、S11において取得された実写画像をフレーム番号と共にCG画像生成装置50に送信する(D1)。また、画像取得部31は、S11において取得された実写画像をフレーム番号と共に第一のバッファ32に保存する。
S13では、補間画像生成部36は、CG画像生成装置50から注目フレームに対応するGMVを受信すると(D2)、第二のバッファ33に保存されたCG画像のうち、注目フレームよりも時間的に前で且つ最新のCG画像を補正対象として読み出す。そして、読み出したCG画像を、GMVに基づいて幾何変換して補間画像を生成する。ここで、幾何変換は、平面内の写像、奥行き方向の写像、および空間内の回転の少なくとも1つを含むことができる。
【0025】
CG画像生成装置50から画像処理装置30へのデータの伝送エラー等がなく、正常にCG画像が送信されている限り、上記補正対象は注目フレームの直前のフレームのCG画像である。しかしながら、MRシステム10においては、CG画像生成装置50におけるCG画像の生成処理の遅延や、CG画像生成装置50から画像処理装置30へのデータ伝送の遅延、データ伝送のエラーといったCG画像の異常が発生し得る。つまり、画像処理装置30においては、CG画像の受信が同期信号に対して遅れたり、CG画像を受信できなかったりするフレームが存在する場合がある。
【0026】
上述したような異常により注目フレームの直前のフレームのCG画像が第二のバッファ33に保存されていない場合には、S13において補間画像生成部36は、直前のフレームよりもさらに前のCG画像を補正対象として補間画像を生成する。その場合、補間画像生成部36は、注目フレームの実写画像のGMVだけでなく、補正対象のCG画像のフレーム番号に対応する実写画像から注目フレームの実写画像までの間のGMVを加味して補間画像を生成する。
なお、本実施形態では、GMVについては、CG画像生成装置50から画像処理装置30へのデータの伝送エラー等がなく、正常にGMVが送信されているものとして説明する。
【0027】
次に、S14では、画像合成部34は、合成画像を生成するタイミング(画像合成タイミング)となったか否かを判定する。ここで、画像合成部34は、実写画像をキャプチャする周期でタイマを動作させ、タイマ終了を検出することで画像合成タイミングを検出することができる。画像合成部34は、画像合成タイミングではないと判定した場合には、画像合成タイミングとなるまで待機し、画像合成タイミングとなったことを検出するとS15に移行する。
S15では、画像合成部34は、注目フレーム番号のCG画像が第二のバッファ33に保存されているか否かを判定する。注目フレーム番号のCG画像(D3)は、CG画像の異常が発生していない場合、画像合成タイミングの前に受信され(
図3の左向きの点線矢印)、第二のバッファ33に保存される。しかしながら、CG画像の異常が発生している場合、注目フレーム番号のCG画像は画像合成タイミングの時点で第二のバッファ33に保存されていない場合がある(
図3の下向きの点線矢印)。なお、画像合成タイミングに遅れて受信したCG画像は、次フレームの補間画像の生成処理(S13の処理)において利用可能とするために、第二のバッファ33に保存される。
【0028】
そこで、画像合成部34は、S15において、第二のバッファ33に注目フレーム番号のCG画像が保存されているか否かを判定することで、CG画像に異常が発生しているか否かを判定する。ここでは、CG画像の取得が、画像合成タイミングを示す同期信号に対して遅延しているか否かを判定することができる。そして、画像合成部34は、第二のバッファ33に注目フレーム番号のCG画像が保存されている(CG画像に異常が発生していない)と判定した場合にはS16に移行する。S16では、画像合成部34は、S11において取得された注目フレームの実写画像と、第二のバッファ33に保存されている注目フレーム番号のCG画像とを合成し、S18に移行する。
一方、S15において、画像合成部34が、第二のバッファ33に注目フレーム番号のCG画像が保存されていない(CG画像に異常が発生している)と判定した場合、S17に移行する。そして、S17では、画像合成部34は、S11において取得された注目フレームの実写画像と、S13において生成された補間画像とを合成し、S18に移行する。
S18では、表示制御部35は、S16またはS17において生成された合成画像を表示部40に表示する表示制御を行う。
【0029】
以下、
図1の各ブロックでの処理タイミングについて、
図4〜
図6を用いて説明する。
図4〜
図6は、横軸方向に時間Tをとり、上段から順に、画像取得部31、CG生成部53、第二のバッファ33、画像合成部34、補間画像生成部36の処理タイミングを表している。つまり、上段から実写画像(撮像画像)の取得、CG画像の生成、CG画像の保存、合成画像の生成、補間画像の生成のタイミングを示している。
これら
図4〜
図6において、実写画像F、CG画像Cおよび合成画像Syの添え字の数字は、フレーム番号に相当している。例えば、
図4の点線で囲まれた処理の添え字は「2」である。この点線領域では、フレーム番号=2の実写画像F2を用いてCG画像C2を生成し、実写画像F2とCG画像C2とを合成して合成画像Sy2を生成することを示している。また、CG画像C2を補正して生成された補間画像が、補間画像C2´であることを示している。
【0030】
図4は、データ伝送の遅延により、CG画像C3およびC4が第二のバッファ33に保存されるタイミングが、それぞれ合成画像Sy3およびSy4を生成するタイミングよりも僅かに遅れた場合の処理タイミングを示している。なお、CG画像C3およびC4は、それぞれ合成画像Sy4およびSy5を生成するタイミングよりは前に第二のバッファ33に保存されているものとする。
画像取得部31は、実写画像F2をキャプチャすると、キャプチャした実写画像F2をGMV検出部51に送信する。すると、GMV検出部51は、実写画像F2をもとにGMVを検出し、検出したGMVを画像処理装置30に送信する。実写画像F2のGMVを受信した画像処理装置30は、補間画像生成部36において、受信したGMVをもとに、第二のバッファ33に保存されている最新のCG画像を補正し、補間画像を生成する。このとき、第二のバッファ33にはCG画像C1が保存されているため、補間画像生成部36は、CG画像C1を補正して補間画像C1´を生成する。そして、画像合成部34は、合成画像Sy2の画像合成タイミングとなるまで待機する。
【0031】
その間、CG画像生成装置50は、CG生成部53において、実写画像F2のGMVに基づいてCG画像C2を生成し、生成したCG画像C2を画像処理装置30へ送信する。異常が発生していない場合、画像処理装置30は、合成画像Sy2の画像合成タイミングよりも前にCG画像C2を受信し、第二のバッファ33にCG画像C2が保存される。
したがって、合成画像Sy2の画像合成タイミングでは、画像合成部34は、実写画像F2とCG画像C2とを合成して合成画像Sy2を生成する。そして、表示制御部35は、実写画像F2とCG画像C2とを合成した合成画像Sy2を表示部40に表示させる。このように、画像処理装置30は、HMDの視点の位置姿勢に基づいて生成されたCG画像をリアルタイム合成して表示させるので、使用者に違和感のないMR空間を提示することができる。
【0032】
その後、実写画像F2をキャプチャしてから一定時間が経過すると、画像取得部31は、実写画像F3をキャプチャする。そして、同様に、GMV検出部51は実写画像F3をもとにGMVを検出し、補間画像生成部36は、実写画像F3のGMVをもとにCG画像C2を補正し、補間画像C2´を生成する。そして、画像合成部34は、合成画像Sy3の画像合成タイミングとなるまで待機する。
このとき、データ伝送の遅延により、CG画像C3が第二のバッファ33に保存されるタイミングが、合成画像Sy3の画像合成タイミングよりも僅かに遅れたものとする。その場合、合成画像Sy3の画像合成タイミングでは、第二のバッファ33にCG画像C3が保存されていないため、画像合成部34は、実写画像F3と過去のCG画像C2を補正して生成された補間画像C2´とを合成し、合成画像Sy3を生成する。
【0033】
合成画像Sy3を生成するタイミングよりも僅かに遅れて受信されたCG画像C3は、第二のバッファ33に保存される。第二のバッファ33に保存されたCG画像C3は、補間画像生成部36により実写画像F4のGMVをもとに補正され、補間画像C3´が生成される。そして、CG画像C3と同様のデータ伝送の遅延により、合成画像Sy4を生成するタイミングにおいて、第二のバッファ33にCG画像C4が保存されていない場合、画像合成部34は、実写画像F4と補間画像C3´とを合成して合成画像Sy4を生成する。
【0034】
その後、データ伝送の遅延が解消し、合成画像Sy5を生成するタイミングにおいて、第二のバッファ33に正常にCG画像C5が保存されている場合、画像合成部34は、実写画像F5とCG画像C5とを合成して合成画像Sy5を生成する。
以上のように、データ伝送の遅延により、画像処理装置30がCG画像生成装置50から正常なタイミングでCG画像を取得できない場合には、過去に取得済みの最新のCG画像をGMVに基づいて補正した補間画像を代用する。したがって、本来表示すべきCG画像と内容に差がない補間画像を合成表示することができ、違和感のないMR空間を提示することができる。
【0035】
図5は、データ伝送の遅延により、CG画像C3が第二のバッファ33に保存されるタイミングが、合成画像Sy4を生成するタイミングよりも後になる場合の処理タイミングを示している。
合成画像Sy3は、
図4の例と同様に、実写画像F3と補間画像C2´とを合成して生成される。
次に、実写画像F4がキャプチャされ、実写画像F4のGMVが検出されると、補間画像生成部36は、合成画像Sy4を生成するタイミングよりも前に、補間画像を生成する。このとき、第二のバッファ33にCG画像C3は保存されていないため、補間画像生成部36が生成する補間画像は、CG画像C2を、実写画像F2からF4までの間のGMVを加味して補正された補間画像C2”となる。そして、合成画像Sy4の画像合成タイミングでは、画像合成部34は、実写画像F4と補間画像C2”とを合成して合成画像Sy4を生成する。
【0036】
その後、合成画像Sy4の画像合成タイミングよりも僅かに遅れてCG画像C3およびC4が第二のバッファ33に保存されたものとする。この場合、実写画像F5がキャプチャされ、画像処理装置30がGMV検出部51から実写画像F5のGMVを受信した際には、補間画像生成部36は、CG画像C4を実写画像F5のGMVに基づいて補正し、補間画像C4´を生成する。つまり、CG画像C3を補正した補間画像C3´は生成されない。
その後、データ伝送の遅延が解消し、合成画像Sy5を生成するタイミングよりも前に、第二のバッファ33に正常にCG画像C5が保存された場合、画像合成部34は、実写画像F5とCG画像C5とを合成して合成画像Sy5を生成する。以降の処理は、
図4と同様である。
【0037】
図6は、データ伝送の遅延により、CG画像C3が第二のバッファ33に保存されるタイミングが、合成画像Sy3を生成するタイミングよりも僅かに遅れ、さらに、データ伝送のエラーにより、CG画像C4が消失した場合の処理タイミングを示している。
合成画像Sy3は、
図4の例と同様に、実写画像F3と補間画像C2´とを合成して生成される。また、合成画像Sy4は、
図4の例と同様に、実写画像F4と補間画像C3´とを合成して生成される。
次に、実写画像F5がキャプチャされ、実写画像F5のGMVが検出されると、補間画像生成部36は、合成画像Sy5を生成するタイミングよりも前に、補間画像を生成する。このとき、CG画像C4は第二のバッファ33に保存されていないため、補間画像生成部36が生成する補間画像は、CG画像C3を実写画像F3からF5までの間のGMVを加味して補正された補間画像C3”となる。
【0038】
そして、合成画像Sy5の画像合成タイミングにおいて、CG画像C5が第二のバッファ33に保存されていない場合には、画像合成部34は、実写画像F5と補間画像C3”とを合成して合成画像Sy5を生成することになる。
図6の例では、合成画像Sy5の画像合成タイミングにおいて、CG画像C5が第二のバッファ33に保存されているため、画像合成部34は、実写画像F5とCG画像C5とを合成して合成画像Sy5を生成する。つまり、補間画像C3”は、このタイミングでは使用されない。以降の処理は、
図4と同様である。
【0039】
以上説明したように、本実施形態における画像処理装置30は、HMD20の視点の位置姿勢に基づき時系列上連続して生成された、HMD20に表示されるべきCG画像をCG画像生成装置50から入力する。入力されたCG画像は、時間情報と共に第二のバッファ33に一時的に保存(格納)される。また、画像処理装置30は、注目フレームよりも時間的に前のフレームのCG画像を補正対象として、HMD20の視点の位置姿勢の動き量(GMV)に基づいて幾何変換し、注目フレームの補間画像を生成する。
【0040】
さらに、画像処理装置30は、注目フレームのCG画像に、生成処理の遅延やデータ伝送の遅延、データ伝送のエラーといった異常が発生しているか否かを判定する。そして、画像処理装置30は、上記異常の判定結果に基づいて、表示部40に表示させるCG画像を選択する。具体的には、画像処理装置30は、異常が発生していないと判定された場合、注目フレームのCG画像を表示部40に表示させ、異常が発生していると判定された場合、注目フレームの補間画像を表示部40に表示させる。本実施形態では、画像処理装置30は、現実空間を撮像した実写画像といったHMD20の視点の位置姿勢に対応した画像に、上記異常の判定結果に基づいて選択されたCG画像または補間画像を合成して表示部40に表示させる。
【0041】
つまり、何らかの異常により、画像合成タイミングにおいて注目フレームのCG画像が第二のバッファ33に保存されていない場合、補間画像を代用して実写画像との合成画像を生成する。ここで、補間画像は、過去に正常に取得したCG画像を、HMD20の視点の位置姿勢の動き量に基づいて幾何変換して補正したCG画像である。また、幾何変換は、平面内の写像、奥行き方向の写像、および空間内の回転の少なくとも1つを含むことができる。
以上のように、画像処理装置30は、CG画像に異常が発生した場合、背景画像は実写画像を用い、CG画像のみ補間画像を用いてMR画像を表示させることができる。つまり、画面内の補間領域をCG画像の表示領域に止めることができる。このように、画面内の補間領域が増えることを抑制することができるので、使用者に与える違和感を抑制することができる。また、上記補間画像は、過去のCG画像をGMVに基づいて補正した、HMD20の視点の位置姿勢に合ったCG画像であり、本来表示すべきCG画像との間に内容の差がないCG画像とすることができる。そのため、補間画像を表示した際の使用者の違和感も抑制することができる。
したがって、通信品質の低い環境や、CG画像の生成に時間がかかったり処理時間がばらついたりするシステムであっても、使用者に違和感のないCG画像およびMR画像を提供することが可能となる。さらに、合成画像を左目用画像、右目用画像として別系統で生成し、それぞれ左目用表示ユニット、右目用表示ユニットに表示して使用者にステレオ動画像を提供するMRシステムにおいては、ステレオ感が損なわれることを防止することもできる。
【0042】
また、画像処理装置30は、補間画像の生成に際し、第二のバッファ33に格納されたCG画像のうち、注目フレームよりも時間的に前で且つ最新のCG画像を補正対象とすることができる。このように、過去の最新のCG画像を補正対象として補間画像を生成すれば、精度良く補間画像を生成することができ、より違和感のないMR空間を提示することができる。
さらに、画像処理装置30は、補間画像の生成に際し、注目フレームの合成画像を表示部40に表示させるタイミングよりも前、具体的には、注目フレームの合成画像を生成するタイミング(画像合成タイミング)に間に合うように補間画像の生成を完了させる。これにより、適切にMR画像を提示することができる。
【0043】
また、画像処理装置30は、注目フレームの画像合成タイミングにおいて、第二のバッファ33に注目フレームのCG画像が格納されていない場合、CG画像に異常が発生していると判定する。このように、CG画像が第二のバッファ33に保存されているか否かを判定することで、CG画像の取得が同期信号に対して遅延しているか否かを判定することができる。したがって、CG画像生成装置50においてCG画像の生成処理に遅延が生じた場合や、CG画像生成装置50からのCG画像の伝送に遅延が生じた場合、さらにCG画像の伝送にエラーが生じた場合には、容易かつ適切に上記異常を判定することができる。
【0044】
さらにまた、本実施形態におけるMRシステム10においては、CG画像生成装置50が、HMD20の視点の位置姿勢の動き量(GMV)を検出するGMV検出部51と、HMD20の視点の位置姿勢に基づいてCG画像を生成するCG生成部53と、を備える。そして、CG画像生成装置50が、GMV検出部51により検出されたGMVに関する情報と、CG生成部53により生成されたCG画像とを画像処理装置30に対して送信する。
このとき、CG画像生成装置50は、GMVに関する情報とCG画像とのうち、GMVに関する情報を先行して画像処理装置30に送信する。したがって、画像処理装置30は、注目フレームの画像合成タイミングに間に合うように、注目フレームのGMVを受信して、適切に注目フレームの補間画像を生成することができる。
【0045】
なお、上記実施形態において、GMVについては、CG画像生成装置50から画像処理装置30への伝送エラー等がなく、正常に送信されているものとして説明した。しかしながら、GMVを、確実にCG画像生成装置50からHMD20の画像処理装置30に伝送するために、データ保証のある(信頼度の高い)プロトコルで通信を行ってもよい。信頼度の高い通信としては、例えばTCP(Transmission Control Protocol)がある。また、CG画像の伝送は高速性を要するため、データ保証よりも通信速度を優先させたプロトコルを用いて通信を行ってもよい。通信速度を優先させたプロトコルには、例えばUDP(User Datagram Protocol)がある。
【0046】
(第二の実施形態)
次に、本発明の第二の実施形態について説明する。
上述した第一の実施形態では、CG画像生成装置50においてGMVを検出する場合について説明した。この第二の実施形態では、HMD20においてGMVを検出する場合について説明する。
図7は、本実施形態におけるMRシステム10の構成を示すブロック図である。この
図7において、
図1と同様の構成を有する部分には
図1と同一符号を付し、以下、構成の異なる部分を中心に説明する。
【0047】
MRシステム10は、HMD20と、CG画像生成装置50Aとを備える。HMD20は、画像処理装置30Aと、表示部40と、を備える。画像処理装置30Aは、
図1の画像処理装置30に対し、GMV検出部37が追加された構成を有する。また、第一のバッファ32aおよび第二のバッファ33aは、
図1の第一のバッファ32および第二のバッファ33とは保存する情報が異なる。CG画像生成装置50Aは、
図1のCG画像生成装置50におけるGMV検出部51を除いた構成を有する。
【0048】
画像取得部31により取得された実写画像は、GMV検出部37に送信される。GMV検出部37は、画像取得部31から入力された実写画像に基づいてGMVを検出する。GMVの検出方法については、
図1のGMV検出部51と同様である。そして、GMV検出部37は、実写画像とGMVとをフレーム番号と共に第一のバッファ32aに送信する。また、GMV検出部37は、検出したGMVを描画位置算出部52に送信する。第一のバッファ32aは、実写画像とGMVとをフレーム番号と対応付けて保存し、第二のバッファ33aは、CG生成部53により生成されたCG画像を、フレーム番号および描画位置と共に保存する。
【0049】
以上のように、本実施形態における画像処理装置30Aは、HMD20の視点の位置姿勢に対応した実写画像を時系列上連続して入力し、入力された実写画像に基づいて、HMD20の視点の位置姿勢の動き量(GMV)を検出する。GMVのデータ量は、実写画像のデータ量と比べてはるかに小さい。したがって、GMV検出が十分高速に行える場合は、本実施形態のようにHMD20にGMV検出部37を配置する方が、HMD20からCG画像生成装置50Aに伝送するデータのサイズが小さくなる。これにより、実写画像の伝送エラーに起因する画像処理装置30AでのCG画像の取得エラーの発生確率を下げることができ、CG画像を補間画像で代用する頻度を下げることができる。
【0050】
なお、上記実施形態において、GMV検出部37は、画像からGMVを検出する場合について説明したが、ジャイロセンサや加速度センサを用いてHMD20の位置姿勢の動き量を検出してもよい。この場合のMRシステム10は、
図8に示すような構成となる。
画像処理装置30Bは、
図7の画像処理装置30AにおけるGMV検出部37の代わりに、画像取得部31からの入力を持たないGMV検出部37aを備える構成を有する。GMV検出部37aは、GMVを検出するタイミングに同期して、ジャイロセンサや加速度センサによりGMVを検出し、GMVをフレーム番号と共にCG画像生成装置50Aと第一のバッファ32aとに送信する。また、画像取得部31は、取得した実写画像をフレーム番号と共に第一のバッファ32aに送信する。その他の構成および動作については、
図7と同様であるため、説明は割愛する。
【0051】
(第三の実施形態)
次に、本発明の第三の実施形態について説明する。
上述した第一および第二の実施形態では、HMD20がビデオシースルー型HMDであり、実写画像とCG画像とを合成した合成画像を表示する場合について説明した。第三の実施形態では、HMD20が光学シースルー型HMDであり、透明な画像投影面に、CG画像のみを投影する場合について説明する。
図9は、本実施形態におけるMRシステム10の構成を示すブロック図である。この
図9において、
図8と同様の構成を有する部分には
図8と同一符号を付し、以下、構成の異なる部分を中心に説明する。
【0052】
MRシステム10は、HMD20と、CG画像生成装置50Aとを備える。HMD20は、画像処理装置30Cと、表示部40と、を備える。本実施形態においては、HMD20は、実写画像をキャプチャする必要がなく、画像処理装置30Cは、
図8の画像処理装置30Bが備える画像取得部31を備えていない。また、画像処理装置30Cは、
図8の画像合成部34の代わりに、表示画像選択部38を備える。さらに、第一のバッファ32bは、
図8の第一のバッファ32aとは保存する情報が異なる。第一のバッファ32bは、実写画像を保存する必要がなく、GMV検出部37aにより検出されたGMVを時間情報と共に保存する。
【0053】
表示画像選択部38は、表示部40に表示するCG画像を選択する。表示画像選択部38は、注目フレームのCG画像の表示を行うタイミングに同期して、注目フレームのCG画像に異常が発生しているか否かを判定する。具体的には、表示画像選択部38は、注目フレームのCG画像を表示するタイミングにおいて、注目フレームに相当するCG画像が第二のバッファ33aに保存されているか否かを判定することで、注目フレームのCG画像に異常が発生しているか否かを判定する。
そして、注目フレームのCG画像が保存されている場合は、第二のバッファ33aに保存された注目フレームのCG画像を表示画像として選択する。一方、注目フレームのCG画像が保存されていない場合は、補間画像生成部36により生成された、注目フレームのCG画像を補間する補間画像を表示画像として選択する。
【0054】
なお、本実施形態においては、CG画像に透過情報を含めておき、画像投影面に投影されるCGに、透過情報が画像として反映されるようにすることもできる。また、実写画像に透過情報を含め、外界において実写画像にCG画像を重畳し、使用者に提示するようにしてもよい。
以上により、頭部装着型表示装置の画像投影面が透明で、CG画像のみを投影する構成のMRシステムにおいて、本来表示すべきCG画像に異常が発生した場合であっても、違和感のないMR空間を提示することができる。
【0055】
(第四の実施形態)
次に、本発明の第四の実施形態について説明する。
上述した第一の実施形態では、CG画像生成装置50において検出されたGMVをHMD20の画像処理装置30に送信し、画像処理装置30における補間画像の生成に用いる場合について説明した。第四の実施形態では、CG画像生成装置50におけるGMV検出とは別に、HMD20において簡易的なGMVを検出する場合について説明する。
図10は、本実施形態におけるMRシステム10の構成を示すブロック図である。この
図10において、
図1と同様の構成を有する部分には
図1と同一符号を付し、以下、構成の異なる部分を中心に説明する。
【0056】
MRシステム10は、HMD20と、CG画像生成装置50とを備える。HMD20は、画像処理装置30Dと、表示部40と、を備える。画像処理装置30Dは、
図1の画像処理装置30に対し、簡易GMV検出部39が追加された構成を有する。また、第一のバッファ32bは、
図1の第一のバッファ32とは保存する情報が異なる。さらに、補間画像生成部36aは、
図1の補間画像生成部36とは補間画像の生成方法が異なる。
簡易GMV検出部39は、画像取得部31によって取得された実写画像をもとに、簡易的にHMD20の位置姿勢の動き量を検出する。本実施形態では、簡易GMV検出部39は、HMD20の視点の上下左右のような2次元方向の動きを簡易検出する。この簡易GMV検出部39は、HMD20に十分搭載可能な程度に処理が軽い検出手段である。一方、GMV検出部51は、HMD20の視点の上下左右だけでなく、面内回転、前後の動きを検出する比較的高度な処理を要する検出手段である。
【0057】
簡易GMV検出部39は、検出した簡易的なGMVをフレーム番号と共に第一のバッファ32cに送信する。第一のバッファ32cは、実写画像と簡易的なGMVとをフレーム番号と対応付けて保存する。
補間画像生成部36aは、補間画像の生成タイミングにおいて、第二のバッファ33に注目フレームのGMVが保存されているか否かを判定する。そして、注目フレームのGMVが保存されている場合は、第二のバッファ33に保存された、注目フレームよりも時間的に前で且つ最新のCG画像を、注目フレームのGMVを用いて補正し、補間画像を生成する。一方、注目フレームのGMVが保存されていない場合、第二のバッファ33に保存された、注目フレームよりも時間的に前で且つ最新のCG画像を、第一のバッファ32cに保存された注目フレームの簡易的なGMVを用いて補正し、補間画像を生成する。
【0058】
図11は、画像処理装置30DおよびCG画像生成装置50において実行される処理の手順を示すフローチャートである。この
図11において、
図3と同一処理を行うステップには
図3と同一ステップ番号を付し、以下、処理の異なる部分を中心に説明する。
本実施形態において、CG画像生成装置50の処理は、
図3と同様である。
画像処理装置30Dの処理は、
図3のS12の後にS21〜S25の処理が追加され、S13の処理が削除されていることを除いては、
図3と同様である。
【0059】
S21では、簡易GMV検出部39は、簡易的なGMVを生成する。簡易GMV検出部39は、S2におけるGMV検出部51によるGMVの生成に比べて演算量の少ない手法でGMVを検出する簡易検出を行う。なお、簡易GMV検出部39による簡易検出の手法は、GMV検出部51によるGMVの検出手法に比べて精度が劣る手法であってもよい。
次に、補正画像生成部36aは、S22において、補間画像を生成するタイミングとなったか否かを判定する。ここで、補間画像生成部36aは、実写画像をキャプチャする周期でタイマを動作させ、タイマ終了を検出することで補間画像生成タイミングを検出することができる。補間画像生成部36aは、補間画像生成タイミングではないと判定した場合には、補間画像生成タイミングとなるまで待機し、補間画像生成タイミングとなったことを検出するとS23に移行する。
【0060】
S23では、補間画像生成部36aは、注目フレームに該当するGMVをCG画像生成装置50から受信したか否かを判定する。注目フレームのGMV(D2)は、データ伝送等の異常が発生していない場合、補間画像生成タイミングの前に受信され(
図3の左向きの点線矢印)、第二のバッファ33に保存される。しかしながら、何らかの異常が発生している場合、注目フレームのGMVは補間画像生成タイミングの時点で第二のバッファ33に保存されていない場合がある(
図3の下向きの点線矢印)。
そこで、補間画像生成部36aは、S23において、第二のバッファ33に注目フレームのGMVが保存されているか否かを判定することで、注目フレームのGMVを受信したか否かを判定する。そして、補間画像生成部36aは、GMVを受信していると判定した場合にはS24に移行し、GMVを受信していない場合にはS25に移行する。
【0061】
S24では、補間画像生成部36aは、第二のバッファ33に保存されているCG画像のうち、注目フレームよりも時間的に前で且つ最新のCG画像を、第二のバッファ33に保存された注目フレームのGMVを加味して補正した補間画像を生成する。これに対して、S25では、補間画像生成部36aは、第二のバッファ33に保存されているCG画像のうち、注目フレームよりも時間的に前で且つ最新のCG画像を、第一のバッファ32cに保存された簡易的なGMVを加味して補正した補間画像を生成する。
【0062】
以上のように、本実施形態における画像処理装置30Dは、GMV検出部51よりも簡易的にGMVを検出し、検出した簡易GMVを、補間画像生成部36aに対して通信インターフェースを介さずに出力する簡易GMV検出部39を備える。これにより、伝送エラーによってCG画像生成装置50において検出されたGMVをHMD20が受信できない場合であっても、簡易GMVを代用して補間画像を生成することができる。つまり、伝送エラーが発生しても、使用者の動きに追従した補間画像を作り続けることができる。したがって、通信環境の劣る環境においても、使用者に違和感のないCG画像およびMR画像を提示することが可能となる。
【0063】
(変形例)
なお、上記各実施形態では、画像の時間情報としてフレーム番号を用いる場合について説明したが、フレーム番号の代わりにタイムスタンプ情報を用いてもよい。
また、上記各実施形態において、CG画像の生成処理にn(nは自然数)フレーム以上のレイテンシが存在する場合、画像処理装置30における補間画像の生成処理や合成画像の生成処理では、nフレーム前のフレーム番号の画像を処理してもよい。
さらに、上記各実施形態において、CG画像を重畳する画像を実写画像として説明したが、実写画像ではなく、ビデオ映像とCG画像とを重畳してもよい。上記第三の実施形態のように頭部装着型表示装置(HMD)の画像投影面が透明で、CG画像のみを投影する構成のMRシステムでは、ビデオ映像に透過情報を含め、外界においてビデオ画像にCG画像を重畳し、使用者に提示するようにしてもよい。
【0064】
また、上記各実施形態においては、CG画像を表示する表示装置であるHMDと、CG画像を生成するCG画像生成装置とが別々の筐体で構成され、装置間がネットワークを介して通信可能に接続されている場合について説明した。しかしながら、CG画像を表示させる画像処理装置とCG画像生成装置とが1つの筐体により構成されたMRシステムにも適用可能である。この場合、CG画像生成装置から画像処理装置へのデータ伝送の遅延やエラーといった異常は発生しない。しかしながら、CG画像の生成処理の遅延が発生した場合には、上記各実施形態と同様に、補間画像の違和感を低減してMR空間を提示することができるという効果が得られる。
【0065】
さらに、上記各実施形態においては、画像処理装置30は、CG画像生成装置により生成されたCG画像を時系列上連続して取得する場合について説明した。しかしながら、画像処理装置30は、CG画像生成装置により生成された複数フレームのCG画像が記憶された記憶媒体から、連続的にCG画像を読み出す構成であってもよい。この場合、記憶媒体からCG画像を読み出す際のエラーや、CG画像を復号する際のエラー、CG画像自体のノイズ付加などのエラーを判定することで、注目フレームのCG画像に異常が発生しているか否かを判定してもよい。
さらに、表示装置は頭部装着型表示装置(HMD)に限定されるものではなく、ハンドヘルドディスプレイ(HHD)を用いてもよい。HHDは、手持ちのディスプレイである。つまり、使用者が手にとり、双眼鏡のように覗き込むことで画像を観察するディスプレイであってもよい。さらに、表示装置は、タブレットやスマートフォン等の表示端末であってもよい。
【0066】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記録媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。