説明

画像処理装置、画像処理方法

【課題】 現実物体上に、この現実物体を模した仮想物体を重畳表示させる場合に、好適な重畳表示を実施する為の技術を提供すること。
【解決手段】 観察者の特定部位の位置姿勢情報を取得する(S403)。1以上の仮想物体を配した仮想空間中に特定部位を模した特定部位仮想物体を上記位置姿勢情報に基づいて配置した後の仮想空間の画像上で、特定部位仮想物体の領域と特定部位仮想物体以外の他仮想物体の領域とに重なりが生じるか否かを判断する(S405)。重なりが生じると判断された場合には、他仮想物体と特定部位仮想物体とを配置した仮想空間の画像を生成し、重なりが生じないと判断された場合には、他仮想物体のみを配置した仮想空間の画像を生成する(S409)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、現実空間と仮想空間とを合成した複合現実空間を提供するための技術に関するものである。
【背景技術】
【0002】
従来より、現実世界の映像と三次元モデリングされたCGによる映像とを重畳して表示し、あたかも現実世界にCGで描かれた物体(仮想物体)が存在しているかのように見せる複合現実感(MR : Mixed Reality)提示システムが存在する。
【0003】
係るシステムは、現実世界の映像を撮影するための現実映像撮影部と、現実映像撮影部の位置姿勢から見たCG映像を作り出すCG映像生成部と、それぞれの映像を合成して表示する映像表示部とからなる。更に係るシステムは、現実映像撮影部の視点の位置姿勢が変わった場合でもCG映像と現実世界の映像との位置関係を正しく表示する為に、現実映像撮影部の視点の位置姿勢を検出する為の視点位置姿勢検出部(例えば位置姿勢センサ)を備える。
【0004】
現実空間の映像を撮影する現実映像撮影部は、たとえばビデオカメラであり、自身の視線方向における現実世界の映像を撮影し、撮影した現実世界の映像をメモリ中にキャプチャする。
【0005】
CG映像生成部は、三次元モデリングされたCGを、現実世界と同じスケールの仮想空間に配置し、視点位置姿勢検出部によって検出された視点の位置姿勢から観察されたものとして仮想シーンをレンダリングする。
【0006】
このようにして生成されたCG映像と現実映像撮影部によって撮影された現実世界の映像とを合成すると、結果として、どのような位置姿勢の視点から観察した場合でも、現実世界の中にCGが配置されているような映像を表示することができる。CGのデータの読み込み、CGの配置の変更、アニメーション等は、一般的なCG表示システムと同様の手法を用いて行うことができる。
【0007】
また、CGの配置位置を指定するためにさらなる位置姿勢センサを用い、位置姿勢センサによる計測値が示す位置姿勢にCGを描画することも可能である。係る構成では、位置姿勢センサを手に持ち、位置姿勢センサによって指定された位置姿勢にCGを表示して観察することも従来から行われている。
【0008】
現実世界の映像とCG映像とを合成して表示する映像表示装置には、例えばHMD(ヘッドマウントディスプレイ)が用いられる。通常のモニタでなくHMDを用い、さらに上記ビデオカメラをHMDの視線方向に装着することで、観察者が向いている方向の映像をHMDに映し出すことができ、且つその方向を向いたときのCG映像の描画も行えるため、観察者の没入感を高めることができる。
【0009】
複合現実感提示システムにおける映像表示装置とは、上記のような映像表示装置に、現実世界の映像とCG映像とを合成した画像(MR画像)を表示するものである。なお、映像表示装置は、前面の様子をそのままシースルーで観察できるような、光学シースルー式と呼ばれるHMDであってもよい。この場合は先に説明した現実映像撮影部は、ビデオ撮影によるものではなく光学的にHMD前面を表示装置にそのまま映し出すものとなる。このようなタイプのHMDでは、観察者の前面の風景はディジタル処理なしでそのままシースルーで観察でき、さらにその画面上にCGを表示することができる。
【0010】
視点位置姿勢検出部としては、例えば磁気方式の位置姿勢センサ等が用いられる。そのような位置姿勢センサを上記現実映像撮影部であるところのビデオカメラ(またはビデオカメラが取り付けられているHMD)に取り付けることで、視点の位置姿勢を検出することができる。磁気方式の位置姿勢センサとは、磁気発生装置(発信機)と磁気センサ(受信機)との間の相対位置姿勢を検出するものでり、受信機の3次元位置(X,Y,Z)と姿勢(Roll, Pitch, Yaw)をリアルタイムに検出する装置である。
【0011】
上記の構成により、観察者はHMD等の映像表示装置を通じて、現実世界の映像とCG映像とが合成されたMR画像を観察することができる。観察者が周囲を見回すと、HMDに備え付けられた現実映像撮影部(ビデオカメラ)が現実世界の映像を撮影し、HMDに備え付けられた視点位置姿勢検出部(位置姿勢センサ)がビデオカメラの位置や視線方向を検出する。そして、CG映像生成部がビデオカメラから見たCG映像をレンダリングし、これを現実世界の映像に合成して表示することが可能である。
【0012】
複合現実感提示システムでは、現実の物体にCGを重畳することが可能である。例えば、特許文献1に開示されているゲームでは、ユーザの持つ対話操作入力装置に剣や武器などの三次元CGを重畳表示することで、ユーザが自由に仮想の物体(この場合は剣や武器)を操ることを可能にしている。
【0013】
従来の一般的な複合現実感提示方法では、現実世界の映像上にCG映像を重ねて合成するだけであり、現実に存在する物体とCGとの奥行き関係は考慮されていないことがある。そのため、観察者がCGの手前に自分の手をかざしても、自分の手は見えずに、手の奥にあるCGが手前にあるかのように表示されてしまうといった問題がある。
【0014】
図2Aは、HMDを頭部に装着した観察者と、この観察者が観察している仮想物体とを示す図である。図2Aにおいて観察者200は自身の頭部にHMD201を装着しており、自身の手203を自身の視界に入れながら仮想物体202を観察している。
【0015】
図2Bは、観察者200が自身の手203を自身の視界に入れながら仮想物体202を観察している場合に、HMD201に表示される画像の一例を示す図である。図2Bに示す如く、204はHMD201に表示される画像であり、係る画像204中には、手203が写っており、係る手203は、仮想物体202によって隠されている。図2Bでは、隠されている手203を点線で示している。
【0016】
仮想物体202と手203との奥行き関係からすれば、手203は仮想物体202の手前に描画されるべきである。しかし、CG映像は現実空間の映像上に重ねて合成するため、本来手203が描画されるべき領域には仮想物体202が描画されてしまう。仮想物体202に隠れていない手首の部分はそのまま現実の映像が見えるが、仮想物体202に隠れている指先部分は観察できない。
【0017】
ここで、現実物体の奥行き情報をリアルタイムで計測すれば、仮想物体と現実物体との奥行き関係を正しく表示することは可能である。しかし、現実物体の奥行き情報をリアルタイムで計測するために用いる装置は大掛かり且つ高価であり、更に、奥行き情報の解像度が足りずに仮想物体と現実物体との重なりの輪郭が正しく見えなかったりする。
【0018】
また、現実物体の色が特定の色であることが期待できる場合は、画像上で係る特定の色を判定することでマスク画像を作り、係るマスク画像を用いてCG映像にマスクをかけ、現実物体が表示されるべき場所にはCG映像を描画しない方法も取られることがある。例えば、手の重なりが問題となる場合は、現実世界の映像中の肌色のエリアを判定することでマスク画像を作ることができる。しかしこの場合は逆に、仮想物体の奥に現実物体があったとしても現実物体が手前に見えてしまったり、同じ色の現実物体はすべて仮想物体の手前に見えてしまう、という難点がある。
【0019】
そこで、このような仮想物体と現実物体との重なり表示の問題を簡便な方法で解決する方法のひとつとして、次ようなものがある。即ち、現実物体(例えば自分の手)に位置姿勢センサを取り付け、係る位置姿勢センサが計測した位置姿勢にあわせて現実物体の形状を模した仮想物体を配置し、現実物体と仮想物体とを重ねる。それぞれの仮想物体の奥行き関係はどちらもCGなので正しく表示される。現実物体と仮想物体の形状や位置関係は完全に一致するわけではないため、現実物体と仮想物体とが完全に重なって表示されるわけではない(ずれて見える)という問題はあるが、おおむね現実物体の位置に正しい前後関係で仮想物体が表示されることになる。
【0020】
このような構成を用いて、図2Aに示したように、仮想物体202の手前に自身の手203を配置した場合、HMD201に表示される画像は、図2Cに示したように、手203の位置に手203を模した仮想物体206を配置した画像となる。係る仮想物体206は、仮想物体202の手前に位置している。仮想物体206の位置姿勢は、観察者200の手に取り付けられた位置姿勢センサによる計測値に基づいて変化する。図2Cは、手203の位置に手203を模した仮想物体206を配置した画像の一例を示す図である。
【特許文献1】特開2000−353248号公報
【発明の開示】
【発明が解決しようとする課題】
【0021】
従来のような現実物体に仮想物体を重ねるシステムでは、次のような問題があった。即ち、現実物体を模した仮想物体(図2Cでは仮想物体206)と、その他の仮想物体(図2Cでは仮想物体202)とが、観察者から見て重なっていない場合に、現実物体と、現実物体を模した仮想物体と、で位置や形状のズレが目立ってしまう。これにより、見た目上の違和感が生じるといった問題が生じる。
【0022】
図3は、図2Cに示した画像の状態から、観察者が手203を右に移動させた場合にHMDに表示される画像の例を示す図である。手203の位置姿勢の計測誤差が原因で、図3に示す如く、観察者の手203と、この手203を模した仮想物体206とは、ずれてHMDに表示されている。207はHMDに表示される画像で、係る画像207内には、観察者の手203と仮想物体202とが映っていると共に、手203を模した仮想物体206が手203とはずれて映っている。
【0023】
また、現実の手203の形状と手の仮想物体206の形状との違いが原因となり、手の仮想物体206から現実の手203がはみ出して見えることがあり、違和感が生じるという場合もある。
【0024】
本発明は以上の問題に鑑みてなされたものであり、現実物体上に、この現実物体を模した仮想物体を重畳表示させる場合に、好適な重畳表示を実施する為の技術を提供することを目的とする。
【課題を解決するための手段】
【0025】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【0026】
即ち、観察者の視点の位置姿勢に基づいて仮想空間の画像を生成する生成手段を有する画像処理装置であって、
前記観察者の特定部位の位置姿勢情報を取得する手段と、
1以上の仮想物体を配した仮想空間中に前記特定部位を模した特定部位仮想物体を前記位置姿勢情報に基づいて配置した後の仮想空間の画像を生成した場合に、当該画像上で、前記特定部位仮想物体の領域と、前記特定部位仮想物体以外の他仮想物体の領域とに重なりが生じるか否かを判断する判断手段と、
前記重なりが生じると判断された場合には、前記他仮想物体と前記特定部位仮想物体とを配置した仮想空間の画像を生成するよう前記生成手段を制御し、
前記重なりが生じないと判断された場合には、前記他仮想物体のみを配置した仮想空間の画像を生成するよう前記生成手段を制御する制御手段と
を備えることを特徴とする。
【0027】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【0028】
即ち、観察者の視点の位置姿勢に基づいて仮想空間の画像を生成する生成手段を有する画像処理装置が行う画像処理方法であって、
前記観察者の特定部位の位置姿勢情報を取得する工程と、
1以上の仮想物体を配した仮想空間中に前記特定部位を模した特定部位仮想物体を前記位置姿勢情報に基づいて配置した後の仮想空間の画像を生成した場合に、当該画像上で、前記特定部位仮想物体の領域と、前記特定部位仮想物体以外の他仮想物体の領域とに重なりが生じるか否かを判断する判断工程と、
前記重なりが生じると判断された場合には、前記他仮想物体と前記特定部位仮想物体とを配置した仮想空間の画像を生成するよう前記生成手段を制御し、
前記重なりが生じないと判断された場合には、前記他仮想物体のみを配置した仮想空間の画像を生成するよう前記生成手段を制御する制御工程と
を備えることを特徴とする。
【発明の効果】
【0029】
本発明の構成によれば、現実物体上に、この現実物体を模した仮想物体を重畳表示させる場合に、好適な重畳表示を実施することができる。
【発明を実施するための最良の形態】
【0030】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の1つである。
【0031】
図1は、本実施形態に係るシステムのハードウェア構成例を示すブロック図である。図1に示す如く、本実施形態に係るシステムは、HMD104、位置姿勢センサ109、センサコントローラ103、コンピュータ(画像処理装置)190、により構成されている。
【0032】
先ず、HMD104について説明する。
【0033】
HMD104には、ビデオカメラ105、位置姿勢センサ108が取り付けてある。
【0034】
ビデオカメラ105は、現実空間の動画像を撮像するもので、撮像した各フレームの画像(現実空間画像)は、後段のコンピュータ190に対して送出される。
【0035】
位置姿勢センサ108は、自身の位置姿勢を計測するもので、計測した結果は、センサコントローラ103に送出される。センサコントローラ103は、位置姿勢センサ108による計測結果に基づいて位置姿勢センサ108の位置姿勢情報を生成し、後段のコンピュータ190に送出する。ここで、位置姿勢センサ108、センサコントローラ103には様々なセンサシステムを用いることができるが、例えば、磁気センサシステムを用いる場合、位置姿勢センサ108、センサコントローラ103は次のように動作する。
【0036】
現実空間の所定の位置には、センサコントローラ103により駆動制御されるトランスミッタが配置される。トランスミッタは、センサコントローラ103による駆動制御により、周囲に磁界を発生させる。位置姿勢センサ108は、自身の位置姿勢に応じて磁界の変化を検知し、検知した結果をセンサコントローラ103に送出する。センサコントローラ103は、位置姿勢センサ108から送出された検知結果に基づいて、センサ座標系における位置姿勢センサ108の位置姿勢情報を求める。ここで、センサ座標系とは、トランスミッタの位置を原点とし、係る原点で互いに直交する3軸をそれぞれx軸、y軸、z軸とする座標系のことである。そしてセンサコントローラ103は、求めた位置姿勢情報をコンピュータ190に対して送出する。
【0037】
このように、位置姿勢センサ108の位置姿勢情報を求めることができるのであれば、如何なる方法を用いても良い。また最終的にはビデオカメラ105の位置姿勢情報を求めるので、ビデオカメラ105の位置姿勢情報を直接求めることができるでのあれば、位置姿勢センサ108を用いなくても良い。例えばビデオカメラ105による撮像画像を用いてビデオカメラ105の位置姿勢情報を求める公知の方法等を用いても良い。
【0038】
次に、位置姿勢センサ109について説明する。
【0039】
位置姿勢センサ109は、観察者の特定部位(本実施形態では手)に装着し、係る特定部位の位置姿勢を計測するためのもので、位置姿勢センサ108と同様に動作する。即ち、位置姿勢センサ109は、自身の位置姿勢(手の位置姿勢)を計測し、その計測結果はセンサコントローラ103に送出する。センサコントローラ103は、係る計測結果に基づいて、位置姿勢センサ109の位置姿勢情報を生成し、生成した位置姿勢情報をコンピュータ190に送出する。従って、位置姿勢センサ109についても位置姿勢センサ108と同様、磁気センサやその他のセンサを適用することができる。なお、本実施形態では位置姿勢センサ108と位置姿勢センサ109とは同じセンサシステムで、それぞれセンサコントローラ103に接続されているものとして説明するが、それぞれ異なるセンサシステムであっても良い。
【0040】
また本実施形態では、1つの特定部位の位置姿勢を計測するので、1つの位置姿勢センサ109のみをセンサコントローラ103に接続している。しかし、複数の部位の位置姿勢を計測するのであれば、位置姿勢を計測するそれぞれの部位に位置姿勢センサを取り付け、そしてそれぞれの位置姿勢センサをセンサコントローラ103に接続すればよい。この場合、センサコントローラ103はそれぞれの位置姿勢センサの位置姿勢情報を生成し、コンピュータ190に送出することになる。もちろん、複数の部位のそれぞれの位置姿勢情報の取得方法については特に限定するものではない。
【0041】
次に、コンピュータ190について説明する。コンピュータ190は、CPU101、メモリ106,107、I/F(インターフェース)191,192を有し、それぞれはバス102に接続されている。なお、図1には、コンピュータ190の主要な構成のみを示しており、コンピュータ190全体の構成を示しているわけではない。
【0042】
CPU101は、メモリ107に格納されている様々なデータ、メモリ106に格納されている様々なプログラムを用いて、コンピュータ190が行うものとして後述する各処理を実行する。また、CPU101は、処理を行う過程で、適宜メモリ107に対してデータを出力する。
【0043】
メモリ106には、後述する各プログラム110〜114が格納されている。なお、各プログラム110〜114以外にも、コンピュータ190が行うものとして後述する処理でコンピュータ190が用いる様々なプログラムに関してもメモリ106に格納されているものとする。
【0044】
メモリ107には、HMD104を頭部に装着する観察者の視点の位置姿勢情報である視点位置姿勢データ121、観察者の手の位置姿勢情報である手の位置姿勢データ122、仮想空間を構成するためのデータである仮想シーンデータ126が格納されている。仮想シーンデータ126について詳しくは後述する。更に、メモリ107には、現実画像メモリ120、CG画像メモリ123、Z1バッファ124(第1のメモリ)、Z2バッファ125(第2のメモリ)、という4つの記憶領域が設けられている。なお、各データ121,122,126以外に、コンピュータ190が行うものとして後述する処理でコンピュータ190が用いる様々なデータに関してもメモリ107に格納されているものとする。
【0045】
なお、メモリ106,107が保持しているものとして説明した上記の各情報は、図1に示したようにそれぞれのメモリ106,107内に保持されていなくても良い。即ち、それぞれの情報がどのようにしてメモリ106,107の何れに保持されるのかについては特に限定するものではない。また、それぞれのメモリ106、107内には、適宜新たな記憶領域が設定されることもある。また、メモリ106,107を1つのメモリに統合しても良い。
【0046】
I/F191は、HMD104が有する表示部、ビデオカメラ105をコンピュータ190に接続する為のものである。コンピュータ190が後述の処理で生成する合成画像は、このI/F191を介してHMD104の表示部に送出される。また、ビデオカメラ105が撮像した各フレームの現実空間画像は、このI/F191を介してコンピュータ190内に入力される。
【0047】
I/F192は、センサコントローラ103をコンピュータ190に接続する為のもので、センサコントローラ103が求めた位置姿勢情報は、このI/F192を介してコンピュータ190内に入力される。
【0048】
次に、メモリ107内に格納されている仮想シーンデータ126について説明する。仮想シーンデータ126は上述の通り、仮想空間を構成する様々な要素についてのデータであり、例えば、仮想物体についてのデータ、光源についてのデータ、を含む。
【0049】
本実施形態では、観察者の手を模した仮想物体(手仮想物体)のデータと、それ以外の1以上の仮想物体(観察対象仮想物体、他仮想物体)のデータと、仮想空間中に配する光源のデータが、仮想シーンデータ126に含まれているものとする。仮想物体のデータは、例えば仮想物体がポリゴンで構成されている場合には、ポリゴンの法線ベクトルデータ、ポリゴンの色データ、ポリゴンを構成する各頂点の座標値データ、またテクスチャマッピングを行う場合にはテクスチャマップデータを含む。光源のデータは、光源の位置姿勢データ、光源の種類データ、光源の色データなどが含まれる。
【0050】
また、本実施形態では、仮想空間(仮想シーン)を、周知のシーングラフでもって管理している。係るシーングラフのデータもまた、仮想シーンデータ126に含まれている。図5は、シーングラフの一部の構成例を示す図である。図5では、手仮想物体と観察対象仮想物体についての管理構成を示している。即ち、シーングラフには、図5に示した構成の他にも、例えば光源のノードなどが含まれるのが一般的である。図5には、以下の説明で必要なもののみを示しており、その他の構成については省略している。
【0051】
図5において501はルート(root)ノードで、係るノード501の下に手仮想物体、観察対象仮想物体を管理している。図5において、502,504,506が手仮想物体についてのノードであり、503,505,507が観察対象仮想物体についてのノードである。
【0052】
502は、手仮想物体の位置姿勢を示すノードである。503は、観察対象仮想物体の位置姿勢を示すノードである。504は、手仮想物体を表示対象とするか否か(仮想空間中に配置するか否か)を示すノードである。505は、観察対象仮想物体を表示対象とするか否か(仮想空間中に配置するか否か)を示すノードである。506は、手仮想物体のジオメトリ情報やマテリアル情報(手仮想物体のデータ)に対するノードである。507は、観察対象仮想物体のジオメトリ情報やマテリアル情報(観察対象仮想物体のデータ)に対するノードである。
【0053】
このように、手仮想物体、観察対象仮想物体はシーングラフによって管理されている。
【0054】
次に、コンピュータ190が、仮想空間画像と現実空間画像との合成画像を生成してHMD104に送出するために行う一連の処理について、同処理のフローチャートを示す図4を用いて説明する。なお、図4のフローチャートに従った処理をCPU101に実行させるためのプログラムやデータは、メモリ106やメモリ107に格納されている。従って、CPU101が係るプログラムやデータを用いて処理を実行することで、コンピュータ190は、図4のフローチャートに従った処理を実行することになる。
【0055】
先ず、ステップS401では、CPU101は、現実映像撮影プログラム110を実行する。現実映像撮影プログラム110を実行することで、CPU101は、ビデオカメラ105からI/F191を介してコンピュータ190内に入力された現実空間画像のデータをメモリ107内の現実画像メモリ120に格納する。
【0056】
次にステップS402では、CPU101は、位置姿勢検出プログラム111を実行する。位置姿勢検出プログラム111を実行することで、CPU101は、センサコントローラ103から送出される、位置姿勢センサ108の位置姿勢情報を取得する。そして、係る位置姿勢情報に、ビデオカメラ105と位置姿勢センサ108との位置姿勢関係を示す位置姿勢関係情報を加えることで、ビデオカメラ105(視点)の位置姿勢情報を求める。係る位置姿勢関係情報は予め求めておき、メモリ107に格納しておく。そして、このようにして求めた視点の位置姿勢情報を、視点位置姿勢データ121としてメモリ107に格納する。
【0057】
次にステップS403では、CPU101は、位置姿勢検出プログラム111を実行する。位置姿勢検出プログラム111を実行することで、CPU101は、センサコントローラ103から送出される、位置姿勢センサ109の位置姿勢情報を取得し、これを手の位置姿勢データ122としてメモリ107に格納する。
【0058】
次にステップS404では、ステップS403で取得した位置姿勢センサ109の位置姿勢情報を、手の位置姿勢情報として、シーングラフに設定する。図5の場合、ステップS403で取得した位置姿勢情報を、ノード502に設定する。
【0059】
次にステップS405では、CPU101は、重なり判定プログラム112を実行する。これにより、視点位置姿勢データ121が示す位置姿勢を有する視点から見た、手仮想物体と観察対象仮想物体とを配した仮想空間の画像を生成した場合に、この画像上で、手仮想物体の領域と観察対象仮想物体の領域とに重なりが生じているか否かを判断する。ステップS405における処理の詳細については図6を用いて後述する。
【0060】
そしてステップS405における判断処理の結果、重なりが生じていると判断された場合には処理をステップS407に進め、重なりは生じていないと判断された場合には、処理をステップS406に進める。
【0061】
ステップS407では、CPU101は、手仮想物体を仮想空間中に配置させると判断する。図5では、手仮想物体に対するノード504に対してONを設定する。
【0062】
一方、ステップS406では、CPU101は、手仮想物体を仮想空間中に配置させないと判断する。図5では、手仮想物体に対するノード504に対してOFFを設定する。
【0063】
次に、ステップS408では、CPU101は、観察対象仮想物体を仮想空間中に配置させると判断する。図5では、観察対象仮想物体に対するノード505に対してONを設定する。なお、観察対象仮想物体については配置/非配置の判断は行わずに、常に配置すると判断しても良い。
【0064】
次にステップS409では、CPU101は、CG映像生成プログラム113を実行する。CG映像生成プログラム113を実行することで、CPU101は、ステップS402で取得した視点位置姿勢データ121が示す位置姿勢を有する視点から見える仮想空間の画像(仮想空間画像)を生成する。係る仮想空間には、1以上の観察対象仮想物体が配されている。更に、手仮想物体に対するノード504がONに設定されている場合には、係る仮想空間中には手仮想物体が配されている。一方、手仮想物体に対するノード504がOFFに設定されている場合には、係る仮想空間中には手仮想物体は配されていない。このように、仮想空間は、仮想シーンデータ126に基づいて構築されたものである。
【0065】
そして、生成した仮想空間画像をメモリ107におけるCG画像メモリ123に一旦格納する。そしてその後、現実画像メモリ120に格納されている現実空間画像と、CG画像メモリ123に格納されている仮想空間画像との合成画像を生成する。なお、現実空間画像と仮想空間画像との合成画像を生成するための技術については従来から様々な技術が提案されており、本実施形態では何れの技術を用いても良い。もちろん、用いる技術に応じて、コンピュータ190の構成は適宜変更しても良い。
【0066】
次にステップS410では、CPU101は、映像表示プログラム114を実行する。映像表示プログラム114を実行することで、CPU101は、ステップS409で生成した合成画像のデータに基づいた映像信号を生成し、係る映像信号をI/F191を介してHMD104が有する表示部に対して送出する。これにより、HMD104を頭部に装着した観察者の眼前には、係る合成画像が表示されることになる。
【0067】
次に、コンピュータ190が有する不図示の操作入力装置を介して本処理の終了指示が入力されたことを検知した、若しくは、本処理の終了条件が満たされたことを検知した場合には、本処理はステップS411を介して終了する。一方、何れも検知されなかった場合には、本処理はステップS411を介してステップS401に戻り、以降の処理が繰り返される。
【0068】
次に、上記ステップS405における処理の詳細について、図6のフローチャートを用いて説明する。図6は、ステップS405における重なり判定処理の詳細を示すフローチャートである。
【0069】
先ず、ステップS601では、メモリ107内に設けているZバッファを初期化する。係る初期化では、Zバッファ内を0で埋める処理を行う。ここで、Zバッファとは周知の通り、CGのレンダリング時に奥行き情報を保持する為の作業用バッファである。なお、Zバッファは何れのメモリ106,107に設けても良い。
【0070】
次にステップS602では、シーングラフを操作し、手仮想物体は配置しないと設定し、観察対象仮想物体は配置すると設定する。即ち、図5では、手仮想物体に対するノード504にOFFを設定し、観察対象仮想物体に対するノード505にはONを設定する。
【0071】
次に、ステップS603では、CPU101は、CG映像生成プログラム113を実行する。これにより、CPU101は、仮想シーンデータ126に基づいて、ステップS409で行った仮想空間画像生成処理と同様にして、仮想空間画像を生成する。なお、ステップS603で仮想空間画像を生成する場合、ステップS602にて設定したように、仮想空間中には観察対象仮想物体は配置するが、手仮想物体は配置していない。ここで、本ステップにおいて仮想空間画像を生成すると、生成した仮想空間画像上における観察対象仮想物体を構成する各画素の奥行き値が、Zバッファ内の対応する画素位置に記録される。即ち、Zバッファには、仮想空間画像において、観察対象仮想物体の領域以外の領域を構成する画素については0、観察対象仮想物体の領域を構成する各画素についてはその奥行き値を割り当てた2次元データ配列が記録されることになる。
【0072】
次に、ステップS604では、この時点でのZバッファが保持しているデータ(2次元データ配列)をそのまま、メモリ107内のZ1バッファ124にコピーする(第1の手段)。
【0073】
次に、ステップS605では、ステップS601と同様に、Zバッファを初期化する。
【0074】
次に、ステップS606では、シーングラフを操作し、手仮想物体は配置すると設定し、観察対象仮想物体は配置しないと設定する。即ち、図5では、手仮想物体に対するノード504にONを設定し、観察対象仮想物体に対するノード505にはOFFを設定する。
【0075】
次に、ステップS607では、CPU101は、CG映像生成プログラム113を実行する。これにより、CPU101は、仮想シーンデータ126に基づいて、ステップS409で行った仮想空間画像生成処理と同様にして、仮想空間画像を生成する。なお、ステップS607で仮想空間画像を生成する場合、ステップS606にて設定したように、仮想空間中には手仮想物体は配置するが、観察対象仮想物体は配置していない。ここで、本ステップにおいて仮想空間画像を生成すると、生成した仮想空間画像上における手仮想物体を構成する各画素の奥行き値が、Zバッファ内の対応する画素位置に記録される。即ち、Zバッファには、仮想空間画像において、手仮想物体の領域以外の領域を構成する画素については0、手仮想物体の領域を構成する各画素についてはその奥行き値を割り当てた2次元データ配列が記録されることになる。
【0076】
次に、ステップS608では、この時点でのZバッファが保持しているデータ(2次元データ配列)をそのまま、メモリ107内のZ2バッファ125にコピーする(第2の手段)。
【0077】
そして、ステップS609〜ステップS616では、Z1バッファ124にコピーした2次元データ配列と、Z2バッファ125にコピーした2次元データ配列と、を用いて、手仮想物体と観察対象仮想物体とが重なっているか否かを判断する(第3の手段)。
【0078】
ステップS609では先ず、以下の処理で用いる変数I、Jを共に0に初期化する。
【0079】
次にステップS610では、Z1バッファ124内の2次元データ配列Z1において位置(I,J)における配列要素Z1(I,J)の値が0であるか否かを判断する。係る判断の結果、0ではない(非0)、即ち、配列要素Z1(I,J)に奥行き値が記録されている場合には、処理をステップS611に進める。一方、ステップS610における判断の結果、0である、即ち、配列要素Z1(I,J)に奥行き値が記録されていない場合には、処理をステップS612に進める。
【0080】
次にステップS611では、Z2バッファ125内の2次元データ配列Z2において位置(I,J)における配列要素Z2(I,J)の値が0であるか否かを判断する。係る判断の結果、0ではない、即ち、配列要素Z2(I,J)に奥行き値が記録されている場合、仮想空間画像において位置(I,J)には、手仮想物体と観察対象仮想物体とが重なっていると判断することができる。従って、処理をステップS620に進め、重なりが生じていると判断(YES)し、処理を図4のステップS407に進める。一方、ステップS611における判断の結果、0である、即ち、配列要素Z2(I,J)に奥行き値が記録されていない場合には、処理をステップS612に進める。
【0081】
ステップS612では、変数Jの値を1つインクリメントする。
【0082】
そしてステップS613では、ステップS612でインクリメント後の変数Jの値が、2次元データ配列の高さ方向の配列要素数H以上となったか否かを判断する。係る判断の結果、ステップS612でインクリメント後の変数Jの値が、2次元データ配列の高さ方向の配列要素数H未満である場合には処理をステップS610に進める。一方、ステップS612でインクリメント後の変数Jの値が、2次元データ配列の高さ方向の配列要素数H以上となった場合には、処理をステップS614に進める。
【0083】
ステップS614では、変数Jの値を0に初期化する。
【0084】
そしてステップS615では、現在の変数Iの値が、2次元データ配列の幅方向の配列要素W以上となったか否かを判断する。係る判断の結果、現在の変数Iの値が、2次元データ配列の幅方向の配列要素数W未満である場合には処理をステップS616に進める。
【0085】
ステップS616では、変数Iの値を1つインクリメントし、その後、処理をステップS610に戻す。
【0086】
一方、ステップS615における判断処理の結果、現在の変数Iの値が、2次元データ配列の幅方向の配列要素数W以上となった場合、仮想空間画像中の各画素位置で、手仮想物体と観察対象仮想物体とは重なっていないと判断することができる。従って、処理をステップS630に進め、重なりは生じていないと判断(NO)し、処理を図4のステップS406に進める。
【0087】
なお、図6のフローチャートでは、仮想空間画像上で手仮想物体と観察対象仮想物体とが重なっているか否かを判断していた。しかし、ステップS611を削除し、ステップS610にて、配列要素Z2(I,J)、Z1(I,J)が、Z2(I,J)>Z1(I,J)を満たすか否かを判断するようにしても良い。
【0088】
そして、ステップS610においてZ2(I,J)>Z1(I,J)であれば、処理をステップS612に進め、Z2(I,J)≦Z1(I,J)であれば(Z2(I,J)の値がZ1(I,J)の値以下であれば)、処理をステップS620に進める。
【0089】
係る判断処理により、手仮想物体と観察対象仮想物体とが重なって見える位置関係にあっても、手仮想物体が観察対象仮想物体の奥にある場合には、重なりはないと判断し、手仮想物体が観察対象仮想物体の手前にある場合にのみ重なりはあると判断する。
【0090】
このように、仮想空間画像上における手仮想物体と観察対象仮想物体との隠蔽関係に基づいて手仮想物体の描画の有無を制御する処理には様々な方法が考えられる。係る方法の趣旨は要は、次のようなものとなる。
【0091】
即ち、1以上の仮想物体を配した仮想空間中に特定部位を模した特定部位仮想物体を配置した後の仮想空間の画像を生成した場合に、この画像上で特定部位仮想物体の領域と、特定部位仮想物体以外の仮想物体の領域とに重なりが生じるか否かを判断する。そして、重なりが生じると判断された場合には、1以上の仮想物体を配した仮想空間中に特定部位仮想物体を配置した後の仮想空間の画像を生成するよう、仮想空間画像の生成処理を制御する。一方、重なりが生じないと判断された場合には、1以上の仮想物体を配した仮想空間中に特定部位仮想物体を配置しない仮想空間の画像を生成するよう、仮想空間画像の生成処理を制御する。
【0092】
以上の説明により、本実施形態によれば、観察者の手が観察対象仮想物体と重なっているか否かを、観察者の手の位置姿勢に配置した手仮想物体と観察対象仮想物体とが、観察者の視点から見て重なって見えるか否かで近似して判断している。観察者の手と観察対象仮想物体とが重なって見える場合には、図2Cに示す如く、観察者の手の位置姿勢で手仮想物体を配置することで、観察者の手と観察対象仮想物体との奥行きの不整合の問題を解決する。また、観察者の手と観察対象仮想物体とが重なって見えない場合には、図3を用いて上述したような違和感を生じさせないために、手仮想物体は配置しない。
【0093】
また、本実施形態では、観察者の視点から見て、手仮想物体と観察対象仮想物体とに重なりが生じていない場合には、手仮想物体ははじめから表示しないものとした。しかし、重なりが生じてる/生じていないに関係なく、仮想物体を表示しても良い。しかし、重なりが生じていない場合には、手仮想物体の透明度を上げて、手仮想物体を見えにくくする、所謂仮想物体の透明度制御処理を行う。仮想物体の透明度を制御する技術については周知である。
【0094】
また、ある時点では重なりが生じているために手仮想物体を表示しているものの、次の時点で重なりがなくなった場合、本実施形態ではいきなり手仮想物体が消えることになり、画面を観察している観察者には視覚的な変化が大きすぎることになる。そこで、重なりが生じなくなった時点でいきなり手仮想物体を非表示とするのではなく、手仮想物体の透明度を徐々に上げていくようにしても良い。これは、再度、重なりが生じた場合でも同様で、この場合には、徐々に透明度を下げていく。
【0095】
これにより、画面を観察している観察者に与える視覚的な変化を小さくすることができる。
【0096】
[その他の実施形態]
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0097】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0098】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0099】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0100】
【図1】本発明の第1の実施形態に係るシステムのハードウェア構成例を示すブロック図である。
【図2A】HMDを頭部に装着した観察者と、この観察者が観察している仮想物体とを示す図である。
【図2B】観察者200が自身の手203を自身の視界に入れながら仮想物体202を観察している場合に、HMD201に表示される画像の一例を示す図である。
【図2C】手203の位置に手203を模した仮想物体206を配置した画像の一例を示す図である。
【図3】図2Cに示した画像の状態から、観察者が手203を右に移動させた場合にHMDに表示される画像の例を示す図である。
【図4】コンピュータ190が、仮想空間画像と現実空間画像との合成画像を生成してHMD104に送出するために行う一連の処理のフローチャートである。
【図5】シーングラフの一部の構成例を示す図である。
【図6】ステップS405における重なり判定処理の詳細を示すフローチャートである。

【特許請求の範囲】
【請求項1】
観察者の視点の位置姿勢に基づいて仮想空間の画像を生成する生成手段を有する画像処理装置であって、
前記観察者の特定部位の位置姿勢情報を取得する手段と、
1以上の仮想物体を配した仮想空間中に前記特定部位を模した特定部位仮想物体を前記位置姿勢情報に基づいて配置した後の仮想空間の画像を生成した場合に、当該画像上で、前記特定部位仮想物体の領域と、前記特定部位仮想物体以外の他仮想物体の領域とに重なりが生じるか否かを判断する判断手段と、
前記重なりが生じると判断された場合には、前記他仮想物体と前記特定部位仮想物体とを配置した仮想空間の画像を生成するよう前記生成手段を制御し、
前記重なりが生じないと判断された場合には、前記他仮想物体のみを配置した仮想空間の画像を生成するよう前記生成手段を制御する制御手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記判断手段は、
前記特定部位仮想物体のみを配置した仮想空間の画像を生成すると共に、当該画像を構成する各画素の奥行き値を2次元データ配列として第1のメモリに記録する第1の手段と、
前記他仮想物体のみを配置した仮想空間の画像を生成すると共に、当該画像を構成する各画素の奥行き値を2次元データ配列として第2のメモリに記録する第2の手段と、
前記他仮想物体と前記特定部位仮想物体とを配置した仮想空間の画像上で、前記特定部位仮想物体の領域と、前記特定部位仮想物体以外の仮想物体の領域とに重なりが生じるか否かを、前記第1のメモリに記録した2次元データ配列と前記第2のメモリに記録した2次元データ配列とを用いて判断する第3の手段と
を備えることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記第1の手段は、前記特定部位仮想物体のみを配置した仮想空間の画像において、前記特定部位仮想物体の領域以外の領域を構成する各画素の奥行き値として0を記録することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記第2の手段は、前記他仮想物体のみを配置した仮想空間の画像において、前記他仮想物体の領域以外の領域を構成する各画素の奥行き値として0を記録することを特徴とする請求項2に記載の画像処理装置。
【請求項5】
前記第3の手段は、前記第1のメモリに記録されている2次元データ配列において非0の配列要素が記録されている位置に対応する、前記第2のメモリに記録されている2次元データ配列における位置に非0の配列要素が記録されている場合、
前記他仮想物体と前記特定部位仮想物体とを配置した仮想空間の画像上で、前記特定部位仮想物体の領域と、前記他仮想物体の領域とに重なりが生じると判断することを特徴とする請求項2に記載の画像処理装置。
【請求項6】
前記第3の手段は、前記第1のメモリに記録されている2次元データ配列における非0の配列要素の値が、前記第2のメモリに記録されている2次元データ配列において当該配列要素と同じ位置に記録されている配列要素の値以下である場合、
前記他仮想物体と前記特定部位仮想物体とを配置した仮想空間の画像上で、前記特定部位仮想物体の領域と、前記他仮想物体の領域とに重なりが生じると判断することを特徴とする請求項2に記載の画像処理装置。
【請求項7】
観察者の視点の位置姿勢に基づいて仮想空間の画像を生成する生成手段を有する画像処理装置が行う画像処理方法であって、
前記観察者の特定部位の位置姿勢情報を取得する工程と、
1以上の仮想物体を配した仮想空間中に前記特定部位を模した特定部位仮想物体を前記位置姿勢情報に基づいて配置した後の仮想空間の画像を生成した場合に、当該画像上で、前記特定部位仮想物体の領域と、前記特定部位仮想物体以外の他仮想物体の領域とに重なりが生じるか否かを判断する判断工程と、
前記重なりが生じると判断された場合には、前記他仮想物体と前記特定部位仮想物体とを配置した仮想空間の画像を生成するよう前記生成手段を制御し、
前記重なりが生じないと判断された場合には、前記他仮想物体のみを配置した仮想空間の画像を生成するよう前記生成手段を制御する制御工程と
を備えることを特徴とする画像処理方法。
【請求項8】
コンピュータを請求項1乃至6の何れか1項に記載の画像処理装置が有する各手段として機能させるためのプログラム。
【請求項9】
請求項8に記載のプログラムを格納した、コンピュータ読み取り可能な記憶媒体。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図2C】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2009−123018(P2009−123018A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−297192(P2007−297192)
【出願日】平成19年11月15日(2007.11.15)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】