(58)【調査した分野】(Int.Cl.,DB名)
前記設定手段は、前記空間の世界座標系の各軸ベクトルのうち、前記撮像装置のアップベクトルと成す角度が最も小さい軸ベクトルを特定し、その軸を移動軸に設定することを特徴とする請求項1に記載の情報処理装置。
前記設定手段は、前記空間の世界座標系の各軸ベクトルのうち、前記撮像装置の視線ベクトルと成す角度が最も小さい軸ベクトルを特定し、その軸を移動軸に設定することを特徴とする請求項1に記載の情報処理装置。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して、本発明の好適な実施形態について説明する。
[第1の実施形態]
図1に、第1の実施形態に係るMRシステムの機能構成を示す。また、
図2に、第1の実施形態に係るMRシステムの概略構成を示す。MRシステムは、本発明を適用した情報処理装置として機能するワークステーション100と、ワークステーション100との通信機能を有する頭部装着ディスプレイ150(HMD:Head Mount Display)とを備える。
HMD150には、撮像装置であるカメラ151及び表示部152が搭載されている。本実施形態では、
図2に示すように、HMD150内にカメラ151及び表示部152がそれぞれ2基搭載されており、ステレオでの撮像及び表示が可能である。操作者はHMD150を頭部に装着することで、表示部152に映るステレオの複合現実画像を見ることができる。複合現実画像とは、カメラ151で撮像する現実空間に仮想物体を重ねた画像であり、表示部152には、カメラ151を視点とする複合現実画像が表示される。
【0013】
図1に示すように、ワークステーション100において、撮像画像取得部101は、カメラ151で撮像する撮像画像を取得して、データ記憶部102に保存する。
【0014】
位置姿勢算出部103は、データ記憶部102に保存されている撮像画像に対して画像処理を行い、画像中の特徴点を用いて現実空間でのカメラ151の位置姿勢を算出し、データ記憶部102に保存する。本実施形態では、算出されるカメラ151の位置姿勢は、ユーザがHMD150を装着した場合にユーザの頭部の中心から頭頂部の方向に向かうアップベクトルを含んだパラメータである。カメラの位置姿勢を算出する処理については周知の技術であるので、その説明を省略する。現実空間での位置姿勢とは、世界座標系(現実空間の任意の1点を原点として、原点で直交する3軸(X軸、Y軸、Z軸)を持つ座標系)における位置姿勢である。
図2に示すように、カメラ151で現実空間の指標200を認識させ、指標200上の1点を原点として、世界座標系におけるカメラ151の位置姿勢を算出することができる。現実空間での位置姿勢を算出する方法は、画像中の特徴点を用いる方法に限定されるものではなく、位置姿勢センサ(光学式センサ、磁気式センサ、超音波式センサ)を用いる方法でもよい。位置姿勢センサは計測対象に直接又は間接的に装着されており、位置姿勢センサの出力値は計測対象の位置姿勢を算出できるものである。
【0015】
仮想空間生成部105は、仮想空間情報を生成する。仮想空間情報とは、仮想物体のデータを含む。仮想空間情報取得部104は、仮想空間生成部105で生成した仮想空間情報を取得し、仮想物体の位置姿勢を算出して、データ記憶部102に保存する。
【0016】
イベント入力部106で仮想物体を移動するイベントが発生すると、位置姿勢算出部103は、カメラ151の位置姿勢、詳しくはカメラ座標系のアップベクトル(カメラの頭頂部の向き)と、世界座標系の各軸ベクトルとの関係に基づいて、仮想物体を移動させる。なお、イベントの入力方法は、ワークステーション100のGUIによる操作の他、キーボード、マウス、コントローラを使用してもよい。仮想物体を移動させる方向は、カメラ151のアップベクトルと世界座標系の各軸ベクトルとの関係を求める以外にも、画像認識により画像内の構造物の直線を検出し、直線の消失点から重力方向を検出することにより決定(例えば非特許文献1を参照)してもよい。
【0017】
複合現実画像生成部107は、データ記憶部102に保存されている撮像画像及び仮想空間情報を用いて、視点から見える複合現実画像を生成する。
複合現実画像出力部108は、複合現実画像生成部107で生成した複合現実画像を表示部152に出力する。これにより、表示部152には、視点となるカメラ151の位置姿勢に応じた複合現実画像が表示されることになる。
【0018】
図3に、第1の実施形態におけるワークステーション100による処理手順を示す。
図3のフローチャートの処理は、複合現実画像を1画像描画するごとに繰り返し行われる。
ステップS301で、撮像画像取得部101は、カメラ151で撮像する撮像画像を取得して、データ記憶部102に保存する。
ステップS302で、位置姿勢算出部103は、データ記憶部102に保存されている撮像画像に対して画像処理を行い、画像中の特徴点を用いて現実空間でのカメラ151の位置姿勢を算出し、データ記憶部102に保存する。
ステップS303で、仮想空間情報取得部104は、仮想空間生成部105で生成した仮想空間情報を取得し、データ記憶部102に保存する。
ステップS304で、仮想空間情報取得部104は、仮想物体の位置姿勢を算出し、データ記憶部102に保存する。
ステップS305で、仮想物体を移動するイベントが発生していれば、ステップS306に進み、イベントが発生していなければ、ステップS308に進む。
【0019】
ステップS306で、仮想物体を移動させるための、すなわち仮想物体の移動を拘束する移動軸を判定する。位置姿勢算出部103は、
図4に示すように、カメラ151のアップベクトル404と、世界座標系のX軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403とが成す角度を算出する。なお、
図4では、説明の簡略化のため、1台のカメラ151だけを図示する。
図5(a)はアップベクトル404とX軸ベクトル401とが成す角度、
図5(b)はアップベクトル404とY軸ベクトル402とが成す角度、
図5(c)はアップベクトル404とZ軸ベクトル403とが成す角度を示す。カメラ151のアップベクトル404と世界座標系の各軸ベクトル401〜403とが成す角度を算出した後、成す角度の値が最も小さい軸ベクトルを判定する。本実施形態では、成す角度を求めるためにcosθを用いる。
図5(a)を例にX軸ベクトル401をA、アップベクトル404をBとすると、cosθ=A・B(A・BはX軸ベクトル401とアップベクトル404との内積を表わす)で求めることができる。cosθの値が1に最も近い軸ベクトルが、成す角度の最も小さい軸ベクトルであると判定して、その軸を移動軸とする。
【0020】
図6に、ステップS306の移動軸の判定処理の詳細を示す。
ステップS601で、世界座標系の各軸ベクトル(X軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403)の値を取得する。
ステップS602で、カメラ151のアップベクトル404の値を取得する。
ステップS603〜S605で、カメラ151のアップベクトル404と、X軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403とが成す角度を算出する。
ステップS606で、ステップS603〜S605において算出した成す角度を比較し、値が最も小さい軸ベクトルを判定して、その軸を移動軸とする。判定した軸ベクトルの情報はデータ記憶部102に保存する。
【0021】
図3に説明を戻して、ステップS307で、位置姿勢算出部103は、仮想物体の移動を行う。
図7を参照して、仮想物体の移動の例を説明する。まず現実空間における所定の平面の座標値を取得し、ステップS306において判定した軸ベクトルと平行に仮想物体を所定の平面上に移動させる。所定の平面とは、例えば天井、地面、床、壁、箱、机等の現実物体の平面としてもよいし、現実空間内に仮想の平面があると仮定してもよい。現実空間における所定の平面は、ユーザにより予め設定しておけばよい。現実空間における平面の座標値を算出する処理については周知の技術(例えば特許文献3を参照)であるので、その説明を省略する。
例えばステップS306において移動軸がZ軸(カメラ151のアップベクトル404と成す角度の値が最も小さい軸ベクトルがZ軸ベクトル403)と判定したとする。この場合、所定の平面がXY平面であるとして、
図7(a)の状態にある仮想物体405を世界座標系のZ軸と平行にXY平面上に移動し、
図7(b)の状態にする。具体的には、まず現実空間における平面(XY平面)の座標値(XY平面のZ軸の値)を算出する。そして、仮想物体405の位置及び大きさを計算し、
図7(a)に示すように、仮想物体405のZ軸における値が最小の点406の値を求める。点406の値を(x,y,z)とした場合、
図7(b)に示すように、XY平面上に点406を移動させるには、値を(x,y,0)としてXY平面上の値に一致させる。移動軸がX軸、Y軸の場合は、それぞれの軸と平行に仮想物体405を所定の平面上に移動させる。移動後の仮想物体405の位置姿勢を求めて、データ記憶部102に保存する。
【0022】
ステップS308で、複合現実画像生成部107は、データ記憶部102に保存されている仮想物体の位置姿勢を用いて、複合現実画像を生成する。
ステップS309で、複合現実画像出力部108は、ステップS308において生成した複合現実画像を表示部152に出力する。
【0023】
以上のように、例えばユーザが正面を向いているときには、カメラ151のアップベクトルは垂直に近くなっている。この状況でユーザが仮想物体を移動させると(例えばコントローラで下カーソルを押す)、ユーザとしては自分の見ている画像に対して下方向(つまり、垂直方向)に仮想物体を移動させることができる。また、例えばユーザが下を向いているときには、カメラ151のアップベクトルは水平に近くなっている。この状況でユーザが仮想物体を移動させると、ユーザとしては自分の見ている画像に対して下方向(つまり、水平方向)に仮想物体を移動させることができる。
【0024】
[第2の実施形態]
次に、第2の実施形態を説明する。なお、MRシステムの構成及び基本動作は第1の実施形態と同様であり、以下では、第1の実施形態との相違点を中心に説明し、第1の実施形態との共通点についてはその説明を省略する。
第1の実施形態では、ステップS307において、
図7に示すように、仮想物体405を移動させる方法として、仮想物体405のZ軸における値が最小の点406の値を求めて、点406をXY平面上の値となるように移動させた。
それに対して、第2の実施形態では、
図8(a)に示すように、仮想物体405のZ軸における値が最大の点407を求めて、点407がXY平面上の値となるように移動させるようにした。
【0025】
[第3の実施形態]
次に、第3の実施形態を説明する。なお、MRシステムの構成及び基本動作は第1の実施形態と同様であり、以下では、第1の実施形態との相違点を中心に説明し、第1の実施形態との共通点についてはその説明を省略する。
第1、第2の実施形態では、ステップS307において、
図7、
図8(a)に示すように、仮想物体405を移動させる方法として、仮想物体405のZ軸における値が最小の点406又は最大の点407の値を求めて、点406又は点407がXY平面上の値となるように移動させた。
それに対して、第3の実施形態では、
図8(b)に示すように、仮想物体405のZ軸における値が最小又は最大となる以外の点408の値を求めて、点408がXY平面上の値となるように移動させるようにした。
【0026】
[第4の実施形態]
次に、第4の実施形態を説明する。なお、MRシステムの構成及び基本動作は第1の実施形態と同様であり、以下では、第1の実施形態との相違点を中心に説明し、第1の実施形態との共通点についてはその説明を省略する。
第1〜第3の実施形態では、ステップS307において、
図7、
図8に示すように、仮想物体405を移動させる方法として、仮想物体405のZ軸における点406、407又は408の値を求めて、点406、407又は408がXY平面上の値となるように移動させた。
それに対して、第4の実施形態では、
図9(a)に示すように、仮想物体901の面(例えば平面902)を選択して、
図9(b)に示すように、選択した平面902がXY平面上の値となるように移動させるようにした。また、面以外にも、仮想物体の線(例えば直線)を選択して、選択した線が所定の平面上の値となるように移動させてもよい。
【0027】
[第5の実施形態]
次に、第5の実施形態を説明する。なお、MRシステムの構成及び基本動作は第1の実施形態と同様であり、以下では、第1の実施形態との相違点を中心に説明し、第1の実施形態との共通点についてはその説明を省略する。
第5の実施形態では、第1の実施形態と比べて、移動軸の判定処理を変更している。
図10に、ステップS306の移動軸の判定処理の詳細を示す。なお、
図6と同じ処理については同じ符号を付し、その説明を省略する。
第1乃至第4の実施形態では、ステップS305において仮想物体を移動させると判定した場合、ステップS306に進み、
図6の処理で、成す角度の計算を毎回実行する。
それに対して、第5の実施形態では、ステップS305において仮想物体を移動させると判定した場合、ステップS306に進み、
図10の処理で、まずステップS1001で、仮想物体の移動軸が決定済かどうかを判定する。その結果、移動軸が決定済みの場合は本処理を抜け、移動軸が未決定の場合だけステップS601〜S606の処理を実行し、移動軸を判定する。
【0028】
[第6の実施形態]
次に、第6の実施形態を説明する。なお、MRシステムの構成及び基本動作は第1の実施形態と同様であり、以下では、第1の実施形態との相違点を中心に説明し、第1の実施形態との共通点についてはその説明を省略する。
第1乃至第5の実施形態では、カメラ151のアップベクトルと、世界座標系の各軸ベクトルとの関係に基づいて、仮想物体を移動させる。
それに対して、第6の実施形態では、カメラ151の視線ベクトルと、世界座標系の各軸ベクトルとの関係に基づいて、仮想物体を移動させるようにした。
【0029】
図3のステップS306で、仮想物体を移動させるための移動軸を判定する。位置姿勢算出部103は、
図11に示すように、カメラ151の視線ベクトル1101と、世界座標系のX軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403とが成す角度を算出する。なお、
図11では、説明の簡略化のため、1台のカメラ151だけを図示する。
図12(a)は視線ベクトル1101とX軸ベクトル401とが成す角度、
図12(b)は視線ベクトル1101とY軸ベクトル402とが成す角度、
図12(c)は視線ベクトル1101とZ軸ベクトル403とが成す角度を示す。カメラ151の視線ベクトル1101と世界座標系の各軸ベクトル401〜403とが成す角度を算出した後、成す角度の値が最も小さい軸ベクトルを判定する。第1の実施形態と同様、cosθの値が1に最も近い軸ベクトルが、成す角度の最も小さい軸ベクトルであると判定して、その軸を移動軸とする。
【0030】
図13に、ステップS306の移動軸の判定処理の詳細を示す。
ステップS601で、世界座標系の各軸ベクトル(X軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403)の値を取得する。
ステップS1301で、カメラ151の視線ベクトル1101の値を取得する。
ステップS1302〜S1304で、カメラ151の視線ベクトル1101と、X軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403とが成す角度を算出する。
ステップS606で、ステップS1302〜S1304において算出した成す角度を比較し、値が最も小さい軸ベクトルを判定して、その軸を移動軸とする。判定した軸ベクトルの情報はデータ記憶部102に保存する。
【0031】
なお、この場合も、
図14に示すように、第5の実施形態で説明したのと同様、まずステップS1001で、仮想物体の移動軸が決定済かどうかを判定するようにしてもよい。
【0032】
[第7の実施形態]
次に、第7の実施形態を説明する。なお、MRシステムの構成及び基本動作は第1の実施形態と同様であり、以下では、第1の実施形態との相違点を中心に説明し、第1の実施形態との共通点についてはその説明を省略する。
第1乃至第5の実施形態では、カメラ151のアップベクトルと、世界座標系の各軸ベクトルとの関係に基づいて、仮想物体を移動させる。また、第6の実施形態では、カメラ151の視線ベクトルと、世界座標系の各軸ベクトルとの関係に基づいて、仮想物体を移動させる。
それに対して、第7の実施形態では、カメラ151のアップベクトル及び視線ベクトルと直交する第三のベクトルと、世界座標系の各軸ベクトルとの関係に基づいて、仮想物体を移動させるようにした。
【0033】
図3のステップS306で、仮想物体を移動させるための移動軸を判定する。位置姿勢算出部103は、
図15に示すように、カメラ151のアップベクトル404及び視線ベクトル1101と直交する第三のベクトル1501と、世界座標系のX軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403とが成す角度を算出する。なお、
図15では、説明の簡略化のため、1台のカメラ151だけを図示する。
図16(a)は第三のベクトル1501とX軸ベクトル401とが成す角度、
図16(b)は第三のベクトル1501とY軸ベクトル402とが成す角度、
図16(c)は第三のベクトル1501とZ軸ベクトル403とが成す角度を示す。カメラ151の第三のベクトル1501と世界座標系の各軸ベクトル401〜403とが成す角度を算出した後、成す角度の値が最も小さい軸ベクトルを判定する。第1の実施形態と同様、cosθの値が1に最も近い軸ベクトルが、成す角度の最も小さい軸ベクトルであると判定して、その軸を移動軸とする。
【0034】
図17に、ステップS306の移動軸の判定処理の詳細を示す。
ステップS601で、世界座標系の各軸ベクトル(X軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403)の値を取得する。
ステップS1701で、カメラ151の第三のベクトル1501の値を取得する。
ステップS1702〜S1704で、カメラ151の第三のベクトル1501と、X軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403とが成す角度を算出する。
ステップS606で、ステップS1702〜S1704において算出した成す角度を比較し、値が最も小さい軸ベクトルを判定して、その軸を移動軸とする。判定した軸ベクトルの情報はデータ記憶部102に保存する。
【0035】
なお、この場合も、
図18に示すように、第5の実施形態で説明したのと同様、まずステップS1001で、仮想物体の移動軸が決定済かどうかを判定するようにしてもよい。
【0036】
[第8の実施形態]
第1〜第7の実施形態では、複合現実画像を生成し、表示部152に表示するMRシステムを例に説明したが、本発明は、仮想現実画像を生成し、表示部152に表示するVRシステムに適用可能である。
図19に、実施形態に係るVRシステムの機能構成を示す。なお、
図1と同様の構成には同一の符号を付し、その説明を省略する。
仮想空間生成部105は、カメラ151を視点とする仮想空間を構築する。すなわち、仮想空間の世界座標は、現実空間の世界座標に合うように設定される。また、仮想空間情報を生成する。仮想空間情報とは、仮想物体のデータを含む。
仮想現実画像生成部1901は、データ記憶部102に保存されている仮想空間及び仮想空間における仮想物体の位置姿勢を用いて、視点から見える仮想現実画像を生成する。
仮想現実画像出力部1902は、仮想現実画像生成部1901で生成した仮想現実画像を表示部152に出力する。これにより、表示部152には、視点となるカメラ151の位置姿勢に応じた仮想現実画像が表示されることになる。
なお、第8の実施形態におけるワークステーション100による処理手順は、
図3に示すものと同様であり、複合現実画像でなく仮想現実画像を生成、表示する点が相違する。
【0037】
[第9の実施形態]
第9の実施形態では、VRシステムにおいて仮想視点を移動させる例を説明する。
VRシステムの機能構成は、第8の実施形態で説明した
図19と同様である。本実施形態に係るVRシステムでは、イベント入力部106で視点を移動するイベントが発生すると、位置姿勢算出部103は、カメラ151の位置姿勢、詳しくはカメラ座標系のアップベクトル(カメラの頭頂部の向き)と、世界座標系の各軸ベクトルとの関係に基づいて、仮想視点を移動させる。ここで、仮想視点とは、
図20に示すように、視点となるカメラ151を仮想的に移動させた仮想カメラ225での視点である。なお、イベントの入力方法は、第1の実施形態で述べたのと同様である。
なお、本実施形態では、カメラ151のアップベクトルを例にするが、視線ベクトルや第三のベクトルを世界座標系の各軸ベクトルと比較する形態でもよいことはいうまでもない。
【0038】
図21に、第9の実施形態におけるワークステーション100による処理手順を示す。第9の実施形態におけるワークステーション100による処理手順は、複合現実画像でなく仮想現実画像を生成、表示する点、及び仮想物体でなく仮想視点を移動させる(移動軸が視点の移動を拘束する)点で
図3のフローチャートと相違する。以下では、
図3のフローチャートとの相違点を中心に説明し、
図3のフローチャートと同様の処理には同一の符号を付して、その説明を省略する。
図21のフローチャートの処理は、仮想現実画像を1画像描画するごとに繰り返し行われる。
【0039】
ステップS2101で、仮想視点を移動するイベントが発生していれば、ステップS2102に進み、イベントが発生していなければ、ステップS308に進む。
【0040】
ステップS2102で、各実施形態で説明したように、仮想視点を移動させるための移動軸を判定する。例えば位置姿勢算出部103は、カメラ151のアップベクトルと、世界座標系のX軸ベクトル401、Y軸ベクトル402、Z軸ベクトル403とが成す角度を算出し、成す角度の値が最も小さい軸ベクトルを判定する。その結果、例えば移動軸がZ軸と判定したとする。
【0041】
ステップ2103で、位置姿勢算出部103は、仮想視点の移動を行う。
図22を参照して、仮想視点の移動の例を説明する。ステップ2102において判定した軸ベクトルと平行に、すなわち移動軸がZ軸であれば、
図20中の方向224にゲームコントローラを用いて仮想視点を移動させる。ゲームコントローラによる視点操作は既知であるためその説明を割愛する。移動後の仮想視点、すなわち仮想カメラ225の位置姿勢を求めて、データ記憶部102に保存する。
なお、各実施形態では、移動軸を判定した後、その移動軸と平行に仮想物体や仮想視点を移動させる例を説明したが、移動軸の判定と同様の手法で軸を判定した後、その軸に応じて定められる方向に仮想物体や仮想視点を移動させるようにしてもよい。例えば判定した軸と垂直に移動させると定められていてもよい。本実施形態の例でいえば、ステップ2102において判定した軸と垂直に、すなわち軸がZ軸であれば、
図20中の方向222や方向223に仮想視点を移動させるようにしてもよい。
【0042】
以上のように、例えばユーザが正面を向いているときには、カメラ151のアップベクトルは垂直に近くなっている。この状況でユーザが仮想視点を移動させると(例えばコントローラで下カーソルを押す)、ユーザとしては自分の見ている画像に対して垂直方向又は水平方向に仮想視点を移動させることができる。
また、本実施形態では自動的に仮想視点の移動方向を決定しているが、ユーザ操作により設定した移動軸に基づく方向や他のシステムが決定した方向を利用してもよい。このとき、他のシステムが決定した方向を基準として、仮想視点を平行又は垂直に移動させる。
【0043】
以上述べた第1〜第9の実施形態では、HMD150を例に説明したが、本発明は、HMDを用いない場合でも適用可能である。
例えば
図22に示すように、本発明を適用した情報処理装置として機能するワークステーション100と、撮像装置であるカメラ151と、表示部152となる表示装置とにより構成するようにしてもよい。
また、ステレオでの撮像及び表示を行うことに限定されるものではなく、少なくとも1つ以上のカメラ及び表示部があればよい。また、HMDを用いる場合でも、HMDにカメラが搭載されておらず、カメラが別に設置されていてもよい。また、例えば現実空間を透過する機構を備える光学式タイプでもよい。また、HMDではなく、手持ち型表示装置のHHD(Hand Held Display)を用いてもよい。
【0044】
以上、本発明を実施形態と共に説明したが、上記実施形態は本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。