A.第1実施形態:
A−1.頭部装着型表示装置の構成:
図1から図3は、キャリブレーションを実行する頭部装着型表示装置100(HMD100)の外観構成を示す説明図である。HMD100は、画像表示部20が表示する表示画像をユーザーUS(図2)に視認させ、画像表示部20(図1)を透過する外景からの光によって当該外景もユーザーUSに視認させることができる。詳細な構成については後述するが、本実施形態のHMD100は、画像表示部20を装着したユーザーUSの右眼と左眼とのそれぞれに対応する画像表示部を有しており、ユーザーUSの右眼と左眼とに別々の画像を視認させることができる。
図2に示すように、HMD100は、ユーザーUSの頭部装着型表示装置に装着される装着帯90と、装着帯90に接続されている画像表示部20と、画像表示部20を制御する制御部10(コントローラー10)と、制御部10と装着帯90とを接続する接続部40と、を備えている。図1に示すように、装着帯90は、樹脂製の装着基部91と、装着基部91に連結される布製のベルト部92と、カメラ60と、を備える。装着基部91は、人の前頭部の形に合った湾曲した形状を有する。ベルト部92は、ユーザーUSの頭部の周りに装着されるためのベルトである。なお、接続部40は、装着帯90と制御部10側とを有線で接続しているが、図2では、接続している部分については、図示を省略している。
カメラ60は、外景を撮像可能で、装着基部91の中心部分に配置されている。換言すると、カメラ60は、装着帯90がユーザーUSの頭部に装着された状態で、ユーザーUSの額の中央に対応する位置に配置されている。そのため、カメラ60は、ユーザーUSが装着帯90を頭部に装着した状態において、ユーザーUSの視線方向の外部の景色である外景を撮像し、撮像された画像である撮像画像を取得する。図2に示すように、カメラ60は、装着基部91に対して、円弧RCに沿って所定の範囲で可動する。換言すると、カメラ60は、撮像範囲を所定の範囲で変更できる。
図2に示すように、画像表示部20は、連結部93を介して装着基部91に接続され、眼鏡形状を有している。連結部93は、装着基部91および画像表示部20の両側に対称的に配置され、連結部93を中心として、装着基部91に対する画像表示部20の位置を円弧RAに沿って回動可能に支持する。図2において二点鎖線で示す位置P11は、画像表示部20が円弧RAに沿った最も下端である。また、図2において実線で示す位置P12は、画像表示部20が円弧RAに沿った最も上端である。
また、図1および図3に示すように、画像を表示可能な表示パネルを有する光学像表示部26,28は、保持部21,23に対して、直線TAに沿って所定の範囲で平行移動して位置を変更する。図3において二点鎖線で示す位置P13は、光学像表示部26,28が直線TAに沿った最も下端である。図3において実線で示す位置P11は、光学像表示部26,28が直線TAに沿った最も上端である。なお、図2における位置P11と、図3における位置P11とは、同じ位置を示している。
図1に示すように、画像表示部20は、右保持部21と、右表示駆動部22と、左保持部23と、左表示駆動部24と、右光学像表示部26と、左光学像表示部28と、を含んでいる。右光学像表示部26および左光学像表示部28は、それぞれ、ユーザーUSが画像表示部20を装着した際にユーザーUSの右および左の眼前に位置するように配置されている。右光学像表示部26の一端と左光学像表示部28の一端とは、ユーザーUSが画像表示部20を装着した際のユーザーUSの眉間に対応する位置で、互いに接続されている。
右保持部21は、右光学像表示部26の他端から装着基部91と接続されている連結部93に延伸して設けられた部材である。同様に、左保持部23は、左光学像表示部28の他端から連結部93に延伸して設けられた部材である。右表示駆動部22と左表示駆動部24とは、ユーザーUSが画像表示部20を装着した際のユーザーUSの頭部に対向する側に配置されている。
表示駆動部22,24は、図2で後述する液晶ディスプレイ241,242(Liquid Crystal Display、以下「LCD241,242」とも呼ぶ)や投写光学系251,252等を含む。表示駆動部22,24の構成の詳細な説明は後述する。光学像表示部26,28は、後述する導光板261,262(図4参照)と調光板とを含んでいる。導光板261,262は、光透過性の樹脂材料等によって形成され、表示駆動部22,24から出力された画像光をユーザーUSの眼に導く。調光板は、薄板状の光学素子であり、ユーザーUSの眼の側とは反対の側である画像表示部20の表側を覆うように配置されている。調光板の光透過率を調整することによって、ユーザーUSの眼に入る外光量を調整して虚像の視認のしやすさを調整できる。
制御部10は、HMD100を制御するための装置である。制御部10は、静電式のトラックパッドや押下可能な複数のボタンなどを含む操作部135を有する。
図4は、HMD100の構成を機能的に示すブロック図である。図4に示すように、制御部10は、ROM121と、RAM122と、電源130と、操作部135と、マーカー画像記憶部138と、CPU140と、インターフェース180と、送信部51(Tx51)および送信部52(Tx52)と、を有している。
電源130は、HMD100の各部に電力を供給する。ROM121には、種々のコンピュータープログラムが格納されている。後述するCPU140は、ROM121に格納された各種コンピュータープログラムを、RAM122に展開することで、各種コンピュータープログラムを実行する。
マーカー画像記憶部138は、キャリブレーションに用いられるモデルマーカー(マーカーモデルとも呼ぶ)のデータおよび/または右光学像表示部26または左光学像表示部28に表示されるキャリブレーション用画像としてのマーカー画像IMGを記憶している。マーカー画像記憶部138は、右光学像表示部26に表示されるマーカー画像と左光学像表示部28に表示されるマーカー画像とを同じマーカー画像IMGとして記憶している。マーカー画像IMGとしては、2次元のモデルマーカーの画像であったり、3次元モデル空間(3Dコンピューターグラフィックス空間)で表現された上記モデルマーカー(2D)のデータ、またはそのモデルマーカーを、右光学像表示部26または左光学像表示部28のそれぞれの写像パラメーターに基づいて写像したものなどが用いられる。換言すると、マーカー画像IMGは、実物として存在する2次元または3次元の実物マーカーMK1の形状を、2次元として表した画像である。
図5から図8は、紙面PPに印刷された2次元の実物マーカーを示す説明図である。図5には、本実施形態のキャリブレーションに用いられる2つのマーカーとしての実物マーカーMK1,MK2が示されている。図5に示すように、実物マーカーMK1は、4つの頂点P0,P1,P2,P3を直線で結んだ正方形の中に、10個の正円を含むマーカーである。10個の円の内の5個の円は、頂点P0と頂点P2とを結んだ対角線CL1上に円の中心が存在する。当該5個の円は、対角線CL1に沿って、頂点P0に近い円から、円C1,C2,C3,C4,C5である。同じように、10個の円の内の5個の円は、頂点P1と頂点P3とを結んだ対角線CL2上に円の中心が存在する。当該5個の円は、対角線CL2に沿って、頂点P1に近い円から、円C6,C7,C3,C8,C9である。円C3は、対角線CL1と対角線CL2との交点であると共に、正方形の重心である点を中心とする円である。10個の円の内の1個の円である円C10は、正方形の重心を通り、かつ、P1とP2とを結ぶ直線に平行なY軸上に中心を有する。円C10は、正方形の重心を通り、Y軸に直交するX軸に沿って、円C5および円C9と同じ位置に中心を有する。換言すると、円C10は、円C5の中心と円C9の中心との中間に中心を有する円である。
本実施形態では、対角線CL1上に中心を有する5個の円における隣接する円の中心間の距離は、同じ距離になるように設定されている。同じように、対角線CL2上に中心を有する5個の円における隣接する円の中心間の距離は、同じ距離になるように設定されている。また、対角線CL1に中心を有する隣接する円の中心間の距離と、対角線CL2に中心を有する隣接する円の中心間の距離とは、同じ距離である。なお、10個の内の円C10のみ、他の円との中心間との距離が異なる。10個の円の大きさは、同じ大きさである。なお、対角線CL1、対角線CL2、X軸、およびY軸は、実物マーカーMK1を説明するために、便宜上、図5に示しているのであり、実際の実物マーカーMK1には含まれない直線である。
図5では、色の違いを、ハッチングを変えることで表している。具体的には、図5におけるハッチングが施された部分は、黒色であり、その他の部分は、白色である。そのため、図5に示すように、実物マーカーMK1は、白色の紙面PPに、白色によって周囲が囲まれた黒色の正方形によって形成され、その正方形の中に10個の円が白色で形成されている。
図5に示す実物マーカーMK2は、実物マーカーMK1を元に作成されたマーカーである。実物マーカーMK2は、実物マーカーMK1の大きさを縮小させ、かつ、黒色と白色との反転させたマーカーである。そのため、図5に示すように、実物マーカーMK2は、黒色によって周囲が囲まれた白色の正方形によって形成され、その正方形の中に10個の円が黒色で形成されている。本実施形態では、マーカー画像記憶部138は、実物マーカーMK1の2次元の画像であるマーカー画像IMGを記憶している。なお、実物マーカーMK2は、図6に示すように、実物マーカーMK1から分離されていてもよい。また、図7に示すように、実物マーカーMK2(MK1)に代えて、対角線上にない円を省略された実物マーカーMK1Aが採用されてもよい。なお、図8に示すように、実物マーカーMK1,MK2,MK1Aの裏面には、形状、模様、または色彩の特徴は必要ない。
図4に示すCPU140は、ROM121に格納されているコンピュータープログラムを、RAM122に展開することにより、オペレーティングシステム150(OS150)、表示制御部190、音声処理部170、画像処理部160、表示設定部165、マーカー特定部166、およびパラメーター設定部167として機能する。
表示制御部190は、右表示駆動部22および左表示駆動部24を制御する制御信号を生成する。表示制御部190は、右表示駆動部22および左表示駆動部24のそれぞれによる画像光の生成および射出を制御する。表示制御部190は、右LCD制御部211と左LCD制御部212とに対する制御信号のそれぞれを、送信部51および52を介して送信する。また、表示制御部190は、右バックライト制御部201と左バックライト制御部202とに対する制御信号のそれぞれを送信する。
画像処理部160は、コンテンツに含まれる画像信号を取得し、送信部51,52を介して、取得した画像信号を画像表示部20の受信部53,54へと送信する。音声処理部170は、コンテンツに含まれる音声信号を取得し、取得した音声信号を増幅して、連結部材46に接続された右イヤホン32内のスピーカー(図示しない)および左イヤホン34内のスピーカー(図示しない)に対して供給する。
表示設定部165は、マーカー画像記憶部138に記憶されたマーカー画像IMGを右光学像表示部26または左光学像表示部28に表示させる。表示設定部165は、キャリブレーションが実行されているとき(キャリブレーション実行時)に、操作部135が受け付けた操作に基づいて、マーカー画像IMGを右光学像表示部26に表示する場合と、マーカー画像IMGを左光学像表示部28に表示する場合とを制御する。表示設定部165は、カメラ60が実物マーカーMK1を撮像してキャリブレーションを実行するときと、カメラ60が実物マーカーMK2を撮像してキャリブレーションを実行するときとで異なる大きさのマーカー画像IMGを右光学像表示部26または左光学像表示部28に表示させる。また、表示設定部165は、キャリブレーション実行時に、後述する文字画像等を光学像表示部26,28に表示させる。
マーカー特定部166は、カメラ60によって撮像された撮像画像の中に実物マーカーMK1,MK2が印刷された紙面PPが含まれる場合に、撮像された紙面PPから、実物マーカーMK1,MK2を特定する。実物マーカーMK1,MK2を特定するための具体的な処理については、後述するが、マーカー特定部166は、実物マーカーMK1,MK2の4つの頂点、10個の円の中心の座標値を抽出することで、撮像画像の中から実物マーカーMK1,MK2を特定する。マーカー特定部166は、例えば、撮像画像の色の階調値を2値化することで、実物マーカーMK1,MK2における白色と黒色との部分を区別して、円の中心の座標を抽出する。
パラメーター設定部167は、カメラ60によって撮像された特定のオブジェクト(以下、「特定オブジェクト」とも言う)に対応付けられた状態で光学像表示部26,28に表示されるAR(Augmented Reality)画像の表示領域内での位置などを設定するために必要なパラメーター群を設定する。具体的には、パラメーター設定部167は、光学像表示部26,28に表示されるAR画像の位置と大きさと向きとの少なくとも1つと、特定オブジェクトの位置と大きさと向きとの1つと、が対応した状態のAR画像をユーザーUSに視認させるパラメーター群を設定する。換言すると、パラメーター設定部167は、カメラ60に原点が固定された3次元座標系(3D)と、光学像表示部26,28の表示領域(2D)とを対応付けるためのパラメーター群の少なくとも1つを、キャリブレーションによって算出する。なお、以降では、カメラ60に原点が固定された3次元座標系をカメラ座標系と呼ぶ。本実施形態では、カメラ座標系以外の座標系として、実物マーカーMK1または実物マーカーMK2の原点を基準とする実物マーカー座標系、カメラ60によって撮像された特定オブジェクトを基準とするオブジェクト座標系、右光学像表示部26の原点または左光学像表示部28の原点を基準とする表示部座標系などを定義する。
ここで、パラメーター群は、「検出系パラメーターセット」と、「表示系パラメーターセット」と、を含む。「検出系パラメーターセット」は、カメラ60に関するカメラパラメーターCPを含む。「表示系パラメーターセット」は、カメラ60と光学像表示部26,28との間の空間関係を表す3Dから3Dへの「変換パラメーター」と、任意の3Dモデル(3次元座標で表されたCGモデル)を画像(つまり2D)として表示するための3Dから2Dへの「写像パラメーター」と、を含む。これらのパラメーターは、必要に応じて行列またはベクトルの態様で表される。「1つのパラメーター」との表記は、1つの行列または1つのベクトルを示すこともあるし、1つの行列またはベクトルに含まれる複数の要素の1つを示すこともある。パラメーター設定部167は、パラメーター群のうち、必要なパラメーターを導出し、AR画像の表示の際に用いる。この結果、HMD100は、ユーザーUSに、画像表示部20を介して、AR画像(ARモデル)の位置、大きさ、向き、奥行感の少なくとも1つと、特定オブジェクトのそれらにと、がほぼ一致する状態で当該AR画像を視認させることができる。もちろん、これらに加えて、HMD100は、色やテクスチャーなどの見えが互いに一致するようにしてもよい。
表示設定部165は、キャリブレーションが実行されているときに、AR画像または設定画像SIM(後述)を右光学像表示部26または左光学像表示部28に表示させる。設定画像SIMを用いた詳細な処理については後述する。
インターフェース180は、制御部10に対して、コンテンツの供給元となる種々の外部機器OAを接続するためのインターフェースである。外部機器OAとしては、例えば、ARシナリオを記憶している記憶装置、パーソナルコンピューター(PC)や携帯電話端末、ゲーム端末等、がある。インターフェース180としては、例えば、USBインターフェース、マイクロUSBインターフェース、メモリーカード用インターフェース、無線LANまたは無線PAN(Personal Area Network)用インターフェース等、を用いることができる。上記記憶装置は、HMD100に読み込まれることになるプログラムであってCPU140に実施形態で説明される機能を実現させるためのプログラムを可能した記録媒体を含んでもよい。
図4に示すように、画像表示部20は、右表示駆動部22と、左表示駆動部24と、右光学像表示部26としての右導光板261と、左光学像表示部28としての左導光板262と、を備えている。
右表示駆動部22は、受信部53(Rx53)と、光源として機能する右バックライト制御部201(右BL制御部201)および右バックライト221(右BL221)と、表示素子として機能する右LCD制御部211および右LCD241と、右投写光学系251と、を含んでいる。右バックライト制御部201と右バックライト221とは、光源として機能する。右LCD制御部211と右LCD241とは、表示素子として機能する。
受信部53は、制御部10と画像表示部20との間におけるシリアル伝送のためのレシーバーとして機能する。右バックライト制御部201は、入力された制御信号に基づいて、右バックライト221を駆動する。右バックライト221は、例えば、LEDやエレクトロルミネセンス(EL)等の発光体である。右LCD制御部211は、画像処理部160および表示制御部190から送信された制御信号に基づいて、右LCD241を駆動する。右LCD241は、複数の画素をマトリクス状に配置した透過型液晶パネルである。
右投写光学系251は、右LCD241から射出された画像光を平行状態の光束にするコリメートレンズによって構成される。右光学像表示部26としての右導光板261は、右投写光学系251から出力された画像光を、所定の光路に沿って反射させつつユーザーUSの右眼REに導く。なお、左表示駆動部24は、右表示駆動部22と同様の構成を有し、ユーザーUSの左眼LEに対応するため、説明を省略する。
A−2.キャリブレーション実行処理:
図9は、本実施形態におけるキャリブレーション実行処理のフローチャートである。本実施形態のキャリブレーション実行処理は、2つのモード、すなわち、第1設定モードと第2設定モードとを含む。第1設定モードでは、HMD100は、ユーザーUSに片眼ずつキャリブレーションを実施させる。第2設定モードでは、HMD100は、ユーザーUSに両眼で調整を実施させる。
キャリブレーション実行処理では、初めに、操作部135が所定の操作を受け付けると、パラメーター設定部167は、今から実行するキャリブレーションが最初のキャリブレーションの設定であるか否かを判定する(S11)。マーカー画像記憶部138には、実行されるキャリブレーションが最初であるか否かのデータも記憶されている。本実施形態では、ユーザーUS毎にキャリブレーションが最初であるか否かが判別されてもよい。具体的には、カメラ60がユーザーUSの掌の形状・模様を撮像し、CPU140がユーザーUSを特定し、キャリブレーションがそのユーザーUSにとって最初に実行されるのか否かを判定してもよい。ユーザーUSの特定は、近距離無線通信を用いたIDカードによる特定でもよい。パラメーター設定部167は、最初のキャリブレーションの設定であると判定した場合には(S11:YES)、第1設定モードに移行する(S20)。第1設定モードの詳細については後述するが、第1設定モードでは、パラメーター設定部167が右光学像表示部26と左光学像表示部28とに、別々にマーカー画像IMGを表示させる。その後、パラメーター設定部167は、マーカー画像IMGと実物マーカーMK1,MK2とが一致するようにユーザーUSに視認された状態でカメラ60に撮像された実物マーカーMK1,MK2の撮像画像を用いて、変換パラメーターおよびカメラパラメーターCPを設定する。
S20の処理として、パラメーター設定部167が第1設定モードにおいてキャリブレーションを実行すると、表示設定部165は、設定された変換パラメーターおよびカメラパラメーターCPを用いて、特定オブジェクトに対応付けられた設定画像SIMを光学像表示部26,28に表示させる(S15)。本実施形態では、特定オブジェクトは実物マーカーMK1,MK2であるが、特定オブジェクトはこれらに限定されない。光学像表示部26,28に設定画像SIMが表示されると、パラメーター設定部167は、操作部135が受け付けた操作に応じて、変換パラメーターおよびカメラパラメーターCPの値がうまく調整されたか否かを決定する(S17)。具体的には、特定オブジェクトの位置および向き(姿勢)に、設定画像SIMが対応付けられているようにユーザーUSが視認しているか否かの判断をユーザーUSが実行し、当該判断に応じて、ユーザーUSが操作部135を操作すればよい。パラメーター設定部167は、設定された変換パラメーターおよびカメラパラメーターCPでよいとの入力を受けた場合には(S17:YES)、キャリブレーション実行処理を終了する。
S17の処理において、操作部135が所定の操作を受け付けることで、パラメーター設定部167が、設定された変換パラメーターおよびカメラパラメーターCPではよくないとの入力を受けた場合、または大きさと奥行感の調整がさらに必要であるとの入力を受けた場合には(S17:NO)、S11以降の処理を繰り返す。パラメーター設定部167は、S11の処理において、今から実行しようとするキャリブレーションが最初のキャリブレーションの設定ではないと判定した場合には(S11:NO)、操作部135が所定の操作を受け付けることで、第2設定モードに移行するか否かを判定する(S13)。パラメーター設定部167は、第2設定モードに移行しないと判定した場合には(S13:NO)、以上で説明した第1設定モードに移行する(S20)。
S13の処理において、パラメーター設定部167は、第2設定モードに移行すると判定した場合には(S13:YES)、第2設定モードに移行する(S30)。第2設定モードの詳細については後述するが、第2設定モードでは、カメラ60が特定オブジェクトを撮像することで得られるカメラ60に対する特定オブジェクトの位置および姿勢を、表示設定部165は、既に実行された第1設定モードまたは第2設定モードにおいて設定されたパラメーター群を用いて特定オブジェクトの右光学像表示部26に対する位置および向き(姿勢)に変換する。そして、表示設定部165は、当該変換された位置および姿勢と同じ位置と姿勢で設定画像SIMを右光学像表示部26および左光学像表示部28に表示させる。その後、操作部135が受け付けた所定の操作に応じて、パラメーター設定部167は、特定オブジェクトに対応付けられた設定画像SIMを変更するように、パラメーター群のうちのいくつかをさらに調整させる。パラメーター設定部167は、第2設定モードにおいてキャリブレーションを実行すると、表示設定部165がS15の処理を実行して、その後の処理が繰り返される。
A−2−1.第1設定モード:
第1設定モードで実行される処理は、以下のような処理である。HMD100は、大きさの異なる2つの実物マーカーMK1,MK2を用いて、ユーザーUSに、1つの眼について1度に1回のアライメントを2回実施させることで、合計4回のアライメントを実施させる。具体的には、まず、HMD100は、右光学像表示部26または左光学像表示部28に、マーカー画像IMGを表示させる。マーカー画像IMGは、右光学像表示部26または左光学像表示部28のそれぞれに対して、仮想的な位置と姿勢(3D)とを有するモデルマーカーを、光学像表示部26,28の表示領域(2D)へ写像、すなわちレンダリング、したものである。本実施形態では、当該仮想的な位置と姿勢とは、光学像表示部26,28に対して固定されているが、後述するように、可変であってもよい。ユーザーUSは、右光学像表示部26または左光学像表示部28に表示されたマーカー画像IMGと、実物マーカーMK1または実物マーカーMK2とが、重複または一致して視認することが可能な位置および向き(姿勢)に移動する。ユーザーUSがマーカーIMGと実物マーカーMK1,MK2とが一致するように視認する場合には、実物マーカーMK1,MK2は右光学像表示部26または左光学像表示部28に対して、実物マーカーMK1,MK2の大きさに応じた既定の距離となる位置と上記仮想的な姿勢とを取っていることとなる。マーカー画像IMGと、実物マーカーMK1または実物マーカーMK2とが一致している状態で、パラメーター設定部167が、カメラ60を用いて実物マーカーMK1または実物マーカーMK2を撮像する。パラメーター設定部167は、撮像画像に含まれる実物マーカーMK1または実物マーカーMK2を用いて、変換パラメーターおよびカメラパラメーターCPを設定することとなる。
図10は、第1設定モードのフローチャートである。第1設定モードでは、パラメーター設定部167が、右光学像表示部26に関するアライメントを成立させた状態でキャリブレーションデータを収集し、左光学像表示部28に関するアライメントを成立させた状態でキャリブレーションデータを収集し、その後、変換パラメーターおよびカメラパラメーターCPを設定する。
第1設定モードでは、初めに、表示設定部165が右光学像表示部26にマーカー画像IMGを表示させる(S201)。図11は、マーカー画像IMGが表示された場合の光学像表示部26のイメージ図である。図11に示すように、表示設定部165は、マーカーの正方形の外枠と、正方形の中に含まれる10個の円の外枠と、を右光学像表示部26に表示させる。表示設定部165は、マーカー画像IMGを、赤色の線として右光学像表示部26に表示させる。なお、図11では、画像表示部20の内の右光学像表示部26以外の部分の図示を省略し、以降の図面でも省略する。
右光学像表示部26にマーカー画像IMGが表示されると、パラメーター設定部167は、マーカー画像IMGと実物マーカーMK2とが一致して視認されるように、HMD100を装着したままユーザーUSに位置と姿勢を合わせることを促すことで、キャリブレーションデータ収集処理を実行する(図10のS210)。キャリブレーションデータ収集処理については後述する。
図10のS210のマーカー画像IMGと実物マーカーMK2との位置と姿勢を合わせる処理(目視によるアライメント処理)およびキャリブレーションデータの収集が実行されると、表示設定部165は、S201の処理と同じく図11に示すように、右光学像表示部26にマーカー画像IMGを表示させる(S203)。その後、パラメーター設定部167は、マーカー画像IMGと実物マーカーMK1とが一致して視認されるように、HMD100を装着したままユーザーUSに位置と姿勢を合わせることを促すことで、キャリブレーションデータ収集処理を実行する(S220)。ここで、実物マーカーMK1は、実物マーカーMK2よりも大きい。そのため、S220の処理では、ユーザーUSがマーカー画像IMGと実物マーカーMK1とが一致するように視認する場合には、右光学像表示部26と実物マーカーMK1との距離は、実物マーカーMK2の場合と比べて大きくなる。
パラメーター設定部167は、左光学像表示部28に関して、右光学像表示部26におけるS201からS220までの処理と同じ処理として、図10のS205からS240までの処理を実行する。左右の光学像表示部26、28に関して第1設定モードにおける各処理(S201からS240までの処理)が実行されると、パラメーター設定部167は、後述する式(15)を最小化するような、右光学像表示部26に関するパラメーター群と、左光学像表示部28に関するパラメーター群とを設定できる(S209)。
A−2−2.パラメーターの設定:
ここでは、第1設定モードにおいて、パラメーター設定部167が、カメラ60から得られた実物マーカーMK2の撮像データおよび実物マーカーMK1の撮像データを用いて、変換パラメーターおよびカメラパラメーターCPのパラメーターの設定する手順を説明する。なお、本実施形態の第1設定モードでは、カメラパラメーターCPは、必ずしも最適化される必要がなく、設計値に固定されていてよい。ただし、以下に示す本実施形態では、ユーザーUSが必要に応じてカメラパラメーターCPを最適化することができるように、カメラパラメーターCPを最適化変数として含んだアルゴリズムを提示している。他の実施形態において、カメラパラメーターCPを最適化する必要がない場合には、これらを定数(固定値)として以下の式を扱えばよい。
A−2−2−1.カメラパラメーターについて:
カメラ60に関するカメラパラメーターCPとして、本実施形態では、4個のカメラパラメーターCP(fx、fy、Cx、Cy)が利用される。(fx、fy)は撮像部であるカメラ60の焦点距離であり、画素密度に基づいて画素数に換算されている。(Cx、Cy)は、カメラ主点位置と呼ばれ、撮像画像の中心位置を意味し、例えばカメラ60のイメージセンサーに固定された2D座標系で表され得る。
カメラパラメーターCPは、撮像部の主要部分を構成するカメラ60の製品仕様から知ることができる(以下ではこれをデフォルトカメラパラメーターとも表記する)。ただし、実際のカメラのカメラパラメーターCPがデフォルトカメラパラメーターから大きくずれていることが多い。しかも、同じ仕様のカメラであっても、製品が異なれば、製品毎のカメラ間で、カメラパラメーターCPがばらついている(揃っていない)ことがある。
AR画像として光学像表示部26,28に表示されるARモデルにおける位置、大きさ、姿勢の少なくとも1つが実物体にアライン(重畳)するようにユーザーUSに視認させる場合、カメラ60は、当該実物体の位置および姿勢を検出する検出機として機能する。このとき、パラメーター設定部167は、カメラパラメーターCPを用いて、カメラ60に撮像された実物体のカメラ60に対する位置および姿勢を推定する。さらに、パラメーター設定部167は、当該位置および姿勢を、カメラ60と左光学像表示部28(右光学像表示部26)との間の相対位置関係を用いて、左光学像表示部28に対する実物体の位置および姿勢に変換する。さらに、パラメーター設定部167は、当該変換された位置および姿勢に基づいて、ARモデルの位置および姿勢を決定する。そして、画像処理部160は、当該位置および姿勢を有するARモデルを、写像パラメーターを用いて表示領域に写像(変換)し、表示バッファー(例えばRAM122)に書き込む。そして、表示制御部190は、表示バッファーに書き込まれたARモデルを左光学像表示部28に表示する。このため、カメラパラメーターCPがデフォルトカメラパラメーターである場合には、推定される実物体の位置および姿勢に誤差が含まれることとなる。そうすると、推定された位置および姿勢の誤差に由来して、表示されたARモデルと実物体との重畳に誤差があるようにユーザーUSに視認される。
そこで、本実施形態では、ARモデルが対象物に重畳してユーザーUSに視認されるようにするためのキャリブレーションの際に、パラメーター設定部167は、カメラパラメーターCPを、実物マーカーMK2および実物マーカーMK1の撮像データを用いて、最適化して設定する。そして、設定されたカメラパラメーターCPが用いられて、対象物の位置および姿勢が検出(推定)されるようにする。そうすれば、ARモデルの表示において、表示されるARモデルと実物体との間に発生するずれがユーザーUSに視認される度合いが低くなる。後述するように、同じHMD100のユーザーUSが同一人であっても、カメラパラメーターCPの設定は、キャリブレーションが実行される毎に実行され、当該キャリブレーションに引き続いて実行される対象物とARモデルとの間での位置、大きさ、向きの少なくとも1つが一致した表示のために使用されることが好ましい。これは、キャリブレーションの際に、必ずしもユーザーUSは、実物マーカーMK2または実物マーカーMK1と、実物マーカーMK2または実物マーカーMK1に対応したマーカー画像IMGとを、同じ精度で位置および姿勢を合わせるとは限らないことによる。たとえユーザーUSが違う精度で位置および姿勢を合わせたとしても、それに応じたカメラパラメーターCPが設定されることから、実物体に対するARモデルの重畳表示がされる場合に重畳表示のずれの増大が抑制される。
A−2−2−2.変換パラメーターについて:
また、本実施形態のHMD100は、カメラ60と光学像表示部26,28との間の相対位置関係が変化する構造を有する。デフォルトカメラパラメーターについての説明からも理解されるように、ARモデルにおける位置、大きさ、姿勢の少なくとも1つが実物体にアライン(重畳)するようにユーザーUSに視認させる場合、実際のカメラ60と光学像表示部26,28との間の相対位置関係とは異なる相対位置関係に基づいてARモデルを表示すると、表示されたARモデルと実物体との重畳に誤差が視認される。
そこで、本実施形態では、ARモデルが対象物に重畳してユーザーUSに視認されるようにするためのキャリブレーションの際に、カメラ60の座標系と、右光学像表示部26の座標系および左光学像表示部28の座標系と、の間の相対位置関係(回転および並進の少なくとも1つ)を表す変換パラメーターを調整または設定する。そして、設定された当該変換パラメーターが表す空間関係(相対位置関係)を用いてARモデルの表示をすると、ユーザーUSにずれが視認される度合いが低くなる。
本実施形態では、パラメーター設定部167は、右光学像表示部26と左光学像表示部28とのそれぞれに対応する左変換パラメーターPML[Rcam2left, tcam2left]と、右変換パラメーターPMR[Rcam2right, tcam2right]とを設定する。回転行列Rcam2rightは、直交する3軸の回転によって決定される3つのパラメーターであり、並進行列Tcam2rightは、3軸に沿った並進のそれぞれに対応する3つのパラメーターである。すなわち、右光学像表示部26に対応する右変換パラメーターPMRは、計6つのパラメーターを含んでいる。同じように、左光学像表示部28に対応する変換パラメーターは、回転行列Rcam2leftと並進行列Tcam2leftとであり、計6つのパラメーターを含んでいる。以上の通り、本実施形態では、カメラパラメーターCPに含まる4個のパラメーターと、空間関係を表す12個の変換パラメーターとの16個のパラメーターが算出される。
A−2−2−3.パラメーター導出処理:
以下における説明では、ユーザーUSが実物マーカーMK2(または実物マーカーMK1)とマーカー画像IMGとが互いに一致するように視認する状態でカメラ60が実物マーカーMK2(または実物マーカーMK1)を撮像し、パラメーター設定部167がその撮像画像を取得する。パラメーター設定部167は、取得した当該撮像画像に基づいて、後述の式(15)を用いて、カメラパラメーターおよび変換パラメーターを算出する。本実施形態では、設定パラメーターを設定する場合の初期値(i=0)として、HMD100が製造される工場から出荷される前の計測値や検査値を用いる。一方で、他の実施形態では、カメラ60または光学像表示部26,28の最大可動した場合の一方の姿勢における値、または、可動域の中間の姿勢における値を初期値として用いてもよい。
図12は、右光学像表示部26のみにマーカー画像IMGが表示された状態での空間的な位置関係を示す概略図である。図12には、ユーザーUSが、予め画像表示部20を装着したユーザーUSの仮想の右眼の位置として設定された右眼位置RPから、右光学像表示部26に表示されたマーカー画像IMGを視認した場合の概略が示されている。なお、図12には、HMD100の内の画像表示部20のみを図示し、装着帯90や制御部10などについては図示を省略している。つまり、図12に示す画像表示部20は、図1から図3に示す画像表示部20と同じ画像表示部である。また、図12には、撮像される三次元空間である外景の座標軸を表す座標軸CD2と、座標軸CD2を投影した二次元画像の座標軸を表す座標軸CD1と、が示されている。ユーザーUSは、右光学像表示部26に表示されたマーカー画像IMGを、画像表示部20から距離L1離れた位置に存在するマーカーMK1として視認する。
図12に示すように、右光学像表示部26に表示されたマーカー画像IMGと、外景に含まれ前方に位置する実物マーカーMK1と、が位置、大きさ、向きが一致するようにユーザーUSが視認するとき(以下、ユーザーUSが左眼LE(右眼RE)でアライメントを成立させるときとも言う)、座標系の間には、次の式(1)の関係が成り立つ。なお、以降では、右光学像表示部26ではなく、左光学像表示部28にマーカー画像IMGが表示された場合について説明する。
ここで、左辺および右辺のCPは、カメラ60のカメラパラメーターCPである。[R
o2dl, t
o2dl]は、実オブジェクト(この場合、実物マーカーMK2または実物マーカーMK1)に固定された座標系から左光学像表示部28に固定された座標系への変換行列であり、このうち、[R
o2dl]が回転を表す3×3の行列であり、[t
o2dl]が並進を表す3×1の行列である。[R
o2dl, t
o2dl]は、左光学像表示部28に対する実オブジェクトの位置および姿勢を表している。ModelMatrixは、モデルマーカー上の任意の1点を表す3×1の行列である。モデルマーカーは、マーカー画像IMGが光学像表示部28に表示される場合の基礎となる3次元データ(3次元モデル:ただし本実施形態では平面)である。[R
o2dl, t
o2dl]×ModelMatrixの表記は、下記の式(2)の規則に従っている。
上記式(2)の表記規則は、式(1)の他の部分にも適用される。
式(1)の右辺における[Rcam2left, tcam2left]は、カメラ60の座標系から左光学像表示部28の座標系への変換行列である。当該変換行列は、パラメーター設定部167によって設定される複数の変換パラメーターで構成される。式(1)の右辺における[Robj2cam, tobj2cam]は、実オブジェクト(実物マーカーMK2または実物マーカーMK1)の座標系からカメラ60の座標系への変換行列である。[Robj2cam, tobj2cam]は、カメラ60に対する実オブジェクトの位置および姿勢を表している。
式(1)の関係から、左光学像表示部28について、マーカー画像IMGと実物マーカーMK2または実物マーカーMK1とのアライメントが成立しているとき、以下の式(3)、(4)が成り立つ。
左眼LEのアライメントが成立すると仮定したとき、実物マーカーMK2または実物マーカーMK1のカメラ60に対する姿勢をモデルマーカーに適用すると、カメラ60の座標系に変換されたモデルマーカー上の任意の点P
cl(X
cl, Y
cl, Z
cl)は次の式(5)のようになる。
式(3)および式(4)により、R
obj2cam,t
obj2camを消去すると式(5)は以下の式(6)のようになる。
R
o2dlおよびt
o2dlは、実物マーカーMK2または実物マーカーMK1の座標系から左光学像表示部28の座標系への回転および並進である。本実施形態では、ユーザーUSが左光学像表示部28に表示されたマーカー画像IMGを実物マーカーMK2または実物マーカーMK1に位置合わせしたときに、R
o2dlおよびt
o2dlが所定の回転および並進となるように、マーカー画像IMGが左光学像表示部28上の所定位置(例えば中央)に所定の配向かつ所定の大きさで、固定されて表示される。T
cam2leftは、カメラの座標系から左光学像表示部28の座標系への並進である。
上記式(7)および(8)における要素は本実施形態では定数(aは図12のL1)である。式(9)における要素D1, D2, D3は本実施形態では初期値であり、パラメーター導出処理の間に変化し得る。なお、図12からわかるように、本実施形態では、画像表示部20に固定された座標系では、光学像表示部26,28(画像表示部20)からユーザーUSの眼へと射出される光の方向がZ軸方向と平行である。
式(5)で表されるモデルマーカーをカメラ60の撮像画像上に写像するとき、撮像画像上のモデルマーカーの座標は、次のようになる。
ここで、(Fx, Fy)はカメラ60の焦点距離であり、(Cx, Cy)はカメラ60の主点位置座標である。
カメラ60が実際に実物マーカーMK2または実物マーカーMK1を撮像した場合の撮像画像におけるマーカーの特徴要素の座標を(u
l, v
l)と表記すると、(u
l, v
l)と(x
iml, y
iml)との差は以下のようになる。
式(12)における添え字iは、マーカーにおける特徴要素を示す整数であり、1から9までの値を取る。パラメーター設定部167は、左眼LEのアライメントについて、式(13)で表される二乗和を導出する。
ユーザーUSが、右眼REで右光学像表示部26に表示されたマーカーと、実物マーカーMK2または実物マーカーMK1と、のアライメントを成立させた場合についても、同様に式(14)で表される二乗和を導出する。
E
RとE
Lとの和により、式(15)で表すコスト関数Eを定義する。
Eを最小化(グローバルミニマム)にするパラメーターを、ガウス・ニュートン法などの繰り返し計算を伴う最適化計算により求める。
本実施形態では、カメラ60のカメラパラメーターCPと、カメラ60の座標系から左光学像表示部28の座標系への回転(Rcam2left)および並進(Tcam2left)を表す変換パラメーターと、カメラ60の座標系から右光学像表示部26の座標系への回転(Rcam2right)および並進(Tcam2right)を表す変換パラメーターと、が最適化により設定される。
式(15)で表されるコスト関数Eを最小化する繰り返し計算に用いられるヤコビ行列は、式(16)のようになる。
ここで、式(16)の右辺における変数x
mliおよびy
mliはそれぞれ式(10)および(11)によって表され、さらに式(10)および(11)におけるx
clおよびy
clは式(6)によって表される。また、式(16)の右辺における変数pは、カメラ60のカメラパラメーターCPに含まれるFx,Fy,Cx,Cyと、カメラ60と光学像表示部26,28との間の空間関係を表す回転R
cam2left、R
cam2rightを構成する6つのオイラー角と、並進T
cam2left、T
cam2rightを構成する6つの並進成分と、である。パラメーター設定部167は、式(16)のヤコビ行列と、変数pの微小変化量と、に基づいて、式(15)のグローバルミニマムを探索することができる。グローバルミニマムに対応する変数pによって、カメラパラメーターCPおよび変換パラメーターが求められる。
カメラパラメーターCPおよび変換パラメーターが設定されると、図9に示すキャリブレーション実行処理におけるS15の処理として、設定された変換パラメーターおよびカメラパラメーターCPを、ユーザーUSに画像を用いて確認させる目的で、表示設定部165は設定画像SIMを光学像表示部26,28に表示させる。カメラ60の撮像範囲に特定オブジェクト(この例では実物マーカーMK1)が含まれる場合に、CPU140は、設定されたカメラパラメーターCPを用いてカメラ60に対する特定オブジェクトの位置および姿勢を導出する。また、CPU140は、設定された変換パラメーターを用いて、カメラ60に対する特定オブジェクトの位置および姿勢を、光学像表示部26、28に対する特定オブジェクトの位置および姿勢に変換する。そして、表示設定部165は、当該変換された位置および姿勢をARモデルに与えてから、当該ARモデルを写像し、そして、ARモデルを設定画像SIMとして光学像表示部26,28に表示させる。この例では、ユーザーUSに、設定画像SIMの位置および姿勢が特定オブジェクトの位置および姿勢に一致し、かつ特定オブジェクトの動きに追跡するように設定画像SIMを視認させることができれば、変換パラメーターとカメラパラメーターCPの設定は十分である。実物マーカー、またはそれに対応したARモデルの内部座標をXと定義すると、変換パラメーターが用いられ、左光学像表示部28における表示画像の位置(u,v)は、式(17)のように表される。
ここで、[R
obj2cam, T
obj2cam]は実物マーカーMK2または実物マーカーMK1とカメラ60との間の空間関係を表すパラメーター(回転行列および並進行列)であり、これらは、カメラ60が撮像した実物マーカーMK2または実物マーカーMK1の撮像画像に、例えばホモグラフィーを適用することによってパラメーター設定部167によって算出される。マーカー特定部166が、実物マーカーMK2および実物マーカーMK1以外の特定オブジェクトを検出する場合には、パラメーター設定部167は、他の方法で特定オブジェクトとカメラ60との間の空間関係を設定する。なお、右光学像表示部26についても、式(17)と同様な関係式により、表示画像の位置(u,v)が導出される。式(17)に示す通り、実物マーカーMK2または実物マーカーMK1とカメラ60との間の空間関係、およびカメラ60と光学像表示部26、左光学像表示部28との間の空間関係に少なくとも基づいて定まる位置(u,v)に、表示設定部165は、AR画像としてのARモデルを表示させる。当該ARモデル(この場合、設定画像SIM)の位置、大きさおよび配向の少なくとも1つが、特定オブジェクトの位置、大きさ、配向の少なくとも1つに一致するように、表示設定部165は、ユーザーUSに視認させることができる。なお、式(17)における右辺のRPは、ピンホールカメラモデルと同様な写像モデルを用いた場合に決定される写像パラメーター(またはレンダリングパラメーターとも呼ぶ)であり、本実施形態では下記の式(18)のように表される。
ここで、式(18)におけるFx, FyはHMD100におけるプロジェクターの画素数に換算された焦点距離であり、Wは水平方向の左光学像表示部28の画素数(解像度)であり、Hは垂直方向の左光学像表示部28の画素数(解像度)であり、CxおよびCyは、表示画像の中心位置である。写像パラメーターの上2行がu, vの導出に寄与する。fおよびnは、0と1の間で規格化された奥行を有する規格化デバイス座標との対応関係を決める係数である。すなわち、これらは、レンダリングバッファーに(デプスバッファー)おいて奥行を調整するための係数であるが、表示画像の位置(u,v)の導出に直接関与しない。
ここで、特定オブジェクトまたはARモデルXがカメラ60で撮像されたとすると、特定オブジェクトまたはARモデルX上の点と撮像画像上の対応点との間には、式(19)が成り立つ。
式(19)の右辺における(R,T)は、カメラ60に対する特定オブジェクトの位置および姿勢を表す変換行列であり、カメラ座標系で表されている。当該変換行列の左は、カメラパラメーターCPである。式(19)に模式的に表されるように、実空間または3次元座標系における点と撮像画像上の点との対応関係に基づいて(R,T)が推定されるから、実オブジェクトの正確な位置および姿勢の推定には、カメラパラメーターCPが適切であることが好ましい。
3次元におけるARモデルの同じ座標点は、画像処理部160におけるディスプレイバッファーにレンダリングされるため、その規格化デバイス座標(NDC)は、式(18)を用いて、式(20)のように表される。
式(20)は同次座標系による座標表現で表されている。式(20)の右辺のXは、モデルマーカーまたはARモデルの内部座標であり、モデルに固定された座標系で表されている。式(20)におけるXの左の(R,T)は、カメラ座標系で表された特定オブジェクトの位置と姿勢とであり、式(19)における(R,T)と同じ位置と姿勢とを表す。式(19)における(R,T)の左の0,1、−1を要素とする4×4の行列は、座標軸の向きを変換するための変換行列であり、本実施形態ではカメラ座標系と表示部座標系との間での座標軸の正方向の定義が異なることから、便宜上、設けられている。式(19)における座標軸の向きを変換する変換行列の左の(I,d)は、カメラ60と光学像表示部26(28)との間の空間関係を表しており、光学像表示部26(28)の座標系で表された回転Iと並進dからなる4×4の変換行列である。式(20)で表される座標点は、光学像表示部26(28)の画像面において式(21)の(u’, v’)で表される位置である。
本実施形態では、キャリブレーションがうまく実施されていれば、HMD100を装着しているユーザーUSは、光学像表示部26、28に表示された設定画像SIMの位置、大きさ、向き、奥行感が、撮像された特定オブジェクト(この例では実物マーカーMK1)の位置、大きさ、向き、奥行感に一致するように、視認する。
図13は、特定オブジェクトに対応付けられて設定画像SIMが表示された場合にユーザーUSが視認するユーザーUSの視野の一例の説明図である。図13に示す例では、特定オブジェクトとして実物マーカーMK1が採用されている。キャリブレーションが実行された後に、表示設定部165は、パラメーター設定部167によって設定された変換パラメーターおよびカメラパラメーターCPを用いて、撮像された実物マーカーMK1の位置および配向(姿勢)に合わせて、設定画像SIMを右左の光学像表示部26,28に表示させる。設定画像SIMは、立方体の各辺を形成する画像である。図13に示すように、設定画像SIMの立方体の底面は、実物マーカーMK1と合わさるように表示される。ユーザーUSは、特定オブジェクトとしての実物マーカーMK1と設定画像SIMとの空間関係を視認することで、キャリブレーションの精度を認識できる。ユーザーUSが実物マーカーMK1と設定画像SIMとが互いに一致するように視認しないときに、再度、キャリブレーションを第1設定モードまたは第2設定モードにおいてやり直すことができる。図13に示すように、光学像表示部26、28または音声処理部170は、キャリブレーションが成功しAR表示機能を続行すること(重畳して見えるか)、およびキャリブレーションをやり直すことの何れかを促す文字画像または音声をユーザーUSに提示してもよい。
A−2−2−4.キャリブレーションデータの収集:
まず、キャリブレーションデータの収集処理の説明に備えて、光学像表示部26,28に固定された座標系の座標軸を、右光学像表示部26の場合を例にとって説明する。本実施形態では、右光学像表示部26の座標系のZ軸は、ユーザーUSがHMD100を適切に装着した場合にユーザーUSが視認する表示領域の法線方向に一致する。このため、Z軸はユーザーUSの顔面が向いている方向を示し得る。X軸は、Z軸に直交し、かつ右光学像表示部26と左光学像表示部28とが並ぶ方向にほぼ平行である。このため、X軸はユーザーUSの左右方向を示し得る。また、Y軸は、Z軸およびX軸の双方に直交する。このため、Y軸は、ユーザーUSの上下方向を示し得る。
本実施形態においては、上記で説明した第1設定モードにおいて、図14〜図16と共に後述するように、ユーザーUSは、マーカー画像IMGと実物マーカーMK1,MK2との目視によるアライメントを成立させたことを、タッチパッドの操作、ボタンの押下、または音声コマンドの発声により、パラメーター設定部167に伝える。そして、パラメーター設定部167がこれら操作または音声コマンドを受け付けたことを必要条件として、カメラ60がマーカーMK1,MK2を撮像し、すなわちキャリブレーションデータの収集をする。すなわち、HMD100は、キャリブレーションデータの収集のトリガーとして、ユーザーUSによる操作または発声を利用している。以下、図14〜図16を用いた本実施形態の説明に先立ち、ユーザーUSによる操作または発声を利用しない他の実施形態として、自動的にキャリブレーションデータを収集する構成を説明する。
図14は、実施形態に係るキャリブレーションデータの収集処理のフローである。この処理では、初めに、マーカー特定部166が撮像を開始し、そして、光学像表示部26,28の1つ(以下では、右光学像表示部26)がマーカー画像IMGを表示し始める(S211)。マーカー特定部166は、カメラ60が撮像した各撮像フレームに対して、2値化を実行して、実物マーカーMK2を抽出する。マーカー特定部166は、撮像範囲の中に、実物マーカーMK2があるか否かを判定する(S212)。マーカー特定部166は、撮像範囲の中に実物マーカーMK2がないと判定した場合には(S212:NO)、引き続き、撮像範囲の中から実物マーカーMK2の検出を監視する。
S212の処理において、マーカー特定部166は、撮像範囲の中に、実物マーカーMK2があると判定した場合には(S212:YES)、カメラ60に対する実物マーカーMK2の位置と姿勢を導出し、それらの追跡を開始する(S212A)。
導出された実物マーカーMK2の位置および姿勢は、カメラ座標系で表されている。つまり、その位置および姿勢は、カメラ60に対する位置および姿勢である。そこで、カメラ60と右光学像表示部26との間のデフォルトの空間関係を利用して、カメラ60に対する実物マーカーMK2の位置および姿勢を、右光学像表示部26の座標系で表された近似的、すなわち暫定的な位置および姿勢に変換する。「デフォルトの空間関係」とは、例えば、カメラ60と右光学像表示部26との間の相対可動範囲の両端間に存在する1つの空間関係である。位置および姿勢、すなわち回転および並進、を表す4×4の変換行列Tは、式(21A)のように表される。
ここで、左辺の「T (marker to display)」は右光学像表示部26に対する実物マーカーMK2の近似的な位置および姿勢であり、右辺の「T (camera to display)」は、カメラ60の座標系から右光学像表示部26の座標系へのデフォルトの変換行列であり、「Tracking pose」はカメラ60に対する実物マーカーMK2の位置および姿勢である。
モデルマーカーと実物マーカーMK2との間で、光学像表示部26の座標系におけるX軸およびY軸の回りの回転差が所定値未満か否かは、以下の式(21B)および式(21C)のように判定され得る。
ここで、「A
x」、「A
y」はそれぞれX軸、Y軸回りのモデルマーカーの回転角であり、「approximated A
x」、「approximated A
y」は、それぞれX軸、Y軸回りの実物マーカーMK2の近似的な回転角であり、何れも度単位で表されたオイラー角である。上記式における2つの「threshold」の値は互いに異なり得る。「Abs」は値の絶対値を取ることを意味する。なお、上述の通り、モデルマーカーとは、3次元座標で表されたモデルであり、2Dへ写像されてマーカー画像IMGとして表示されるものである。
次に、右光学像表示部26の座標系において、実物マーカーMK2のX軸、Y軸に沿った近似的な並進(Tx’, Ty’)が、モデルマーカーの並進(tx、ty)に近いか否かが、以下の式(21D)および式(21E)の関係式を用いて判定され得る。
次に、右光学像表示部26の座標系において、実物マーカーMK2のX軸、Y軸に沿った近似的な並進(Tx’, Ty’)が、モデルマーカーの並進(tx、ty)に近いか否かが、以下の式(21D)および式(21E)の関係式を用いて判定され得る。
上記式(21D)、式(21E)における2つの「threshold」の値は、互いに異なり得るし、上記式(21B)、式(21C)における「threshold」の値からも異なり得る。以下の説明においては、上記回転角の差を集合的に「回転差A」、上記並進の差を集合的に「並進差D」と表す。
図14のフローの説明に戻ると、S212Aにて、実物マーカーの追跡が開始されると、S400において、アライメント状態表示処理が起動される。本実施形態では、S500の手動操作処理が実行されている期間に亘って、S400によってアライメント状態が監視および/または表示されるように、S400のアライメント状態表示処理を担うスレッドは、S500の手動操作処理を担うスレッドとは別に実行される。このため、この結果、S500の処理中にアライメント状態の変化が生じても、S500は当該アライメント状態の変化に応じた処理を実行することができる。
図15は、図14のS400の詳細を示す。アライメント状態表示処理が開始されると、マーカー特定部166は、回転差Aがその閾値(threshold)以上で、かつ並進差Dがその閾値以上か否かを判定する(S213A)。回転差Aも並進差Dもそれぞれの閾値以上であると判定された場合には(S213A:YES)、表示設定部165は、マーカー画像の色を赤色に変え、右光学像表示部26に位置合わせ(アライメント)を促す文字画像を表示させる(S214A)。S213Aの判定が「否」の場合には(S213A:NO)、マーカー特定部166は、回転差Aが閾値未満で、かつ並進差Dが閾値以上であるか否かを判定する(S213B)。回転差Aが閾値未満で、かつ並進差Dが閾値以上であると判定された場合には(S213B:YES)、表示設定部165は、マーカー画像の色を黄色に変え、右光学像表示部26に位置合わせ(アライメント)を促す文字画像を表示させる(S214B)。S213Bの判定が「否」の場合には(S213B:NO)、マーカー特定部166は、回転差Aが閾値未満で、かつ並進差Dが閾値未満であるか否かを判定する(S213C)。回転差Aも並進差Dもそれぞれの閾値未満であると判定された場合には(S213C:YES)、表示設定部165は、マーカー画像の色を緑色に変える(S214C)。回転差Aも並進差Dもそれぞれの閾値未満である状態を、暫定アライメント状態ともいう。このため、マーカー画像の色を緑色に設定することは、暫定アライメント状態の成立をユーザーUSに報知していることになる。
S213Cの判定が「否」の場合には(S213C:NO)、次に実行される処理はS213Aの判定に戻る。
頭部が安定な状態にあるか否か、または実質的に静止しているか否かは、パラメーター設定部167が、カメラ60の撮像画像における実物マーカーMK2の特徴点の位置、HMD100に搭載されたIMUの出力、およびこれらの組み合わせから、判定することができる。
図16は、図14のS500における手動操作処理の詳細を説明するフローである。手動操作処理の各ステップの実行主体は、パラメーター設定部167である。
まず、S400における最新の判定に基づいて、マーカー画像が緑色であるかを判定する(S505)。マーカー画像が赤色または黄色の場合(S505:NO)、S505の判定を繰り返す。
マーカー画像が緑色である場合(S505:YES)、キャンセルボタンを非表示にする(S510)。なお、キャンセルボタンは、S550によって表示され、元々表示されていない場合は、S510はスキップされる。
続いて、確定ボタンが押されたかを判定する(S515)。確定ボタンは、制御部10が備えるボタンである。ユーザーUSは、マーカー画像が緑色であり、且つアライメントが正確であるように見える場合に、確定ボタンを押すように予め指示されている。
確定ボタンが押されていない場合は(S515:NO)、S505に戻る。つまり、マーカー画像が赤色または黄色の場合に確定ボタンが押されても、S515でYESと判断しないようにする。
マーカー画像が緑色である状態で、確定ボタンが押された場合(S515:YES)、確定ボタンが押されてから0.5秒、経過したかを判定する(S520)。1回目にS520を実行した場合には、経過時間は0.5秒未満なので(S520:NO)、次に、マーカー画像が緑色であるかを判定する(S525)。マーカー画像が緑色である場合(S525:YES)、ユーザーUSの頭部が実質的に静止しているかを判定する(S530)。ユーザーUSの頭部が実質的に静止している場合(S530:YES)、S520に戻る。
このようしてS520〜S530を繰り返し、マーカー画像が緑色であり、且つ、ユーザーUSの頭部が実質的に静止している状態が、確定ボタンが押されてから、0.5秒以上維持された場合(S520:YES)、キャリブレーションデータを収集して(S575)、手動操作処理を終える。これと共に、アライメント状態表示処理およびキャリブレーション収集処理も終える。キャリブレーションデータの収集は、マーカー画像が緑色であり、且つ、ユーザーUSの頭部が実質的に静止している期間の撮像データに基づき実行される。
一方、マーカー画像が緑色に維持されているものの、ユーザーUSの頭部が動いた場合(S530:NO)、S535〜S545として、S520〜S530と同様な処理を繰り返す。但し、0.5秒、経過したかの起算となる時点は、ユーザーUSの頭部が動いた後、再度、ユーザーUSの頭部が実質的に静止し始めた時点である。
再度の試みとして、S535〜S545を実行した結果、ユーザーUSの頭部が実質的に静止している状態が0.5秒以上維持された場合(S535:YES)、S575に進む。
一方、再びユーザーUSの頭部が動いた場合(S545:NO)、1〜2秒間、撮像画像を取得し(スキャンを実行し)、有効なデータを収集して(S570)、S575に進む。このため、ユーザーUSの頭部が実質的に静止することができなかった場合においても、データが収集される。このとき、不十分なデータが収集され得るので、キャリブレーションの精度は犠牲にされ得る。しかしながら、頭部の動きがあることを理由にアライメントの処理を強制終了するのではなく、ユーザーUSに最後までアライメントを経験させることにより、アライメントに慣れていないユーザーUSに一連の処理に慣れてもらうことができることから、将来、ユーザーUSがアライメントを成立させる可能性が高くなる。
一方、確定ボタンが押された後に、マーカー画像が赤色または黄色に変化した場合(S525又はS540:NO)、画像表示部20にキャンセルボタンを表示させる(S550)。
キャンセルボタンが押された場合(S555:YES)、S505に戻る。つまり、手動操作処理を初めからやり直す。一方、キャンセルボタンが押されていない場合(S555:NO)、マーカー画像が緑色になったかを判定する(S560)。マーカー画像が緑色になっていない場合(S560:NO)、S555の判定に戻る。
キャンセルボタンが押される前に、マーカー画像が緑色になった場合(S560:YES)、キャンセルボタンを非表示にし(S565)、S520に進む。この場合、0.5秒、経過したかの起算となる時点は、S560でYESと判定した後に、ユーザーUSの頭部が実質的に静止し始めた時点である。
本実施形態では、2つの回転角の差に基づいて、「回転差A」が閾値未満か否かが判定されるが、1つの軸の回りの回転角の差、または3つの軸の回りの回転角の差に基づいて、「回転差A」が閾値未満か否かが判定されてもよい。「並進差D」についても同様である。
図14、図15及び図16を参照して説明したキャリブレーションデータの収集処理では、ユーザーUSが、マーカー画像の色によって補助を受けつつ、自らの目視でアライメントが合っていると判断した場合に、確定ボタンを押すことになっている。そして、確定ボタンの押下を契機として頭部が実質的に静止しているか否かの判断に基づいてキャリブレーションデータの収集を実行するため、さらに精度のよいパラメーター群が得られることが期待できる。
A−2−3.第2設定モード:
第2設定モードでは、パラメーター設定部167が、第1設定モードにおいて実行したキャリブレーションの結果に対して、ユーザーUSの操作を受け付けることで、さらに、キャリブレーションの結果を補正する。換言すると、パラメーター設定部167は、受け付けた操作に基づいて、特定オブジェクトに対応付けられて表示されるAR画像(ARモデル)の位置、大きさ、奥行感を補正する。
図17は、第2設定モードに移行したときにユーザーUSが視認する視野VRの一例の説明図である。図17では、ユーザーUSが、透過した外景に含まれる特定オブジェクトとしての実物マーカーMK1と、実物マーカーMK1に対応付けられて光学像表示部26,28に表示される設定画像SIMと、第2設定モードのときに光学像表示部26,28に表示される8個のアイコンおよびカーソル画像CSと、が示されている。8個のアイコンは、制御部10の操作部135が受け付けた操作によって、第2設定モードにおける設定モードを変更するためのアイコンである。図17に示す例では、ユーザーUSから見て、外景の実物マーカーMK1の位置と、表示された設定画像SIMの立方体の底面の位置と、が重なっていない。換言すると、キャリブレーションの精度がよくない。このような場合に、本実施形態では、第2設定モードにおいて、ユーザーUSは、操作部135を操作することで、実物マーカーMK1と設定画像SIMとのキャリブレーションの結果を補正できる。
操作部135のトラックパッドが所定の操作を受け付けると、パラメーター設定部167は、光学像表示部26,28に表示させたカーソル画像CSの位置を移動させる。カーソル画像CSが8個のアイコンの内の何れかに重なっている状態で、操作部135の決定ボタンが押下されると、パラメーター設定部167は、カーソル画像CSが重なっていたアイコンと対応付けられている設定モードへと移行する。
アイコンIC1は、選択されると、設定画像SIMの画像を拡大または縮小を実行するモードへと移行するためのアイコンである。アイコンIC1のモードでは、操作部135が所定の操作を受け付けることで、パラメーター設定部167は、上述したカメラパラメーターCPおよび変換パラメーターの一方または双方を補正して、光学像表示部26,28に表示された設定画像SIMの大きさを変更する。本実施形態では、パラメーター設定部167は、カメラパラメーターCPにおける焦点距離Fx,Fy,および写像パラメーターにおける焦点距離Fx,Fyの一方または両方を補正して、設定画像SIMの大きさを調整する。ユーザーUSは、アイコンIC1を選択することで、実物マーカーMK1の大きさに合わせるように設定画像SIMの大きさを変更できる。
アイコンIC2は、選択されると、設定画像SIMの表示位置を上下に移動させるモードへと移行するためのアイコンである。アイコンIC2のモードでは、操作部135が所定の操作を受け付けることで、パラメーター設定部167は、光学像表示部26,28のそれぞれの変換パラメーターを補正して、光学像表示部26,28が設定画像SIMを表示可能な範囲で上下に移動させる。本実施形態では、パラメーター設定部が変換パラメーターのうち、X軸回りの回転を表すパラメーターRxを調整して、設定画像SIMを上下(すなわちY軸方向)に移動させる。なお、変換パラメーターの表示において、XおよびYは光学像表示部26,28に固定された座標系のX軸およびY軸をそれぞれ表し、さらに上述の通り、X軸はHMD100を装着した場合にユーザーUSの左右方向を表し、Y軸はその上下方向を表し得る。
アイコンIC3は、選択されると、設定画像SIMの表示位置を左右に移動させるモードへと移行するためのアイコンである。アイコンIC3のモードでは、操作部135が所定の操作を受け付けることで、パラメーター設定部167が光学像表示部26、28のそれぞれの変換パラメーターを補正して、光学像表示部26,28が設定画像SIMを表示可能な範囲で左右に移動させる。本実施形態では、パラメーター設定部167が変換パラメーターのうち、Y軸回りの回転を表すパラメーターRyを調整して、設定画像SIMを左右(すなわちX軸方向)に移動させる。ユーザーUSは、アイコンIC2およびアイコンIC3を選択することで、実物マーカーMK1に対して、設定画像SIMの位置を合わせるように設定画像SIMの表示位置を変更できる。
アイコンIC4は、選択されると、ユーザーUSに視認させる設定画像SIMの奥行感を調整するためのアイコンである。アイコンIC4のモードでは、操作部135が所定の操作を受け付けることで、パラメーター設定部167は、光学像表示部26、28のそれぞれの写像パラメーターおける表示主点のX成分であるCxを調整して、設定画像SIMの奥行感を変える。奥行感の調整量をΔCxとし、右光学像表示部26の表示主点をCx_ritghとし、左光学像表示部28の表示主点をCy_leftとすると、奥行感の調整後の表示主点は、以下の式(21F)および式(21G)のように表される。
写像パラメーターの表示において、Xは光学像表示部26,28に固定された座標系のX軸を表し、上述の通り、この場合のX軸はHMD100を装着した場合にユーザーUSの左右方向を表し得る。式(21F)および式(21G)により、左右の光学像表示部26、28に表示される左右の画像領域の中心位置が変わり、これにより、左右の画像領域が互いに近づいたり、離れたりする。この結果、ユーザーUSが両眼で左右の画像領域を観察すると、特定オブジェクトの距離に応じた適切な輻輳角でAR画像(ARオブジェクト)を視認できるようになる。このため、特定オブジェクトとAR画像との間で、奥行感が一致する。
アイコンIC5は、選択されると、今まで実行してきたパラメーター群の補正を、実行前のパラメーター群の値に戻すためのアイコンである。アイコンIC6は、選択されると、今まで実行してきたパラメーター群の補正を、新たなパラメーター群(カメラパラメーターCP、変換パラメーターおよび写像パラメーター)として更新して記憶するためのアイコンである。
アイコンIC7は、選択されると、第2設定モードへと移行する1つ前のモードへと戻るためのアイコンである。換言すると、アイコンIC7が選択されると、表示設定部165は、図9のSS13に示す第2設定モードと第1設定モードとのどちらの設定モードへと移行するかの選択画面を光学像表示部26,28に表示させる。
アイコンIC8は、選択されると、表示設定部165が光学像表示部26,28に説明文である「ヘルプ」を表示させるためのアイコンである。「ヘルプ」が表示されると、第2設定モードおよびキャリブレーション実行処理におけるキャリブレーションを実行するための操作についての説明文が光学像表示部26,28に表示される。アイコンIC9は、選択されると、第2設定モードを含むキャリブレーション実行処理を終了するためのアイコンである。
図18は、第2設定モードにおいて設定画像SIMの表示位置が変更されたときにユーザーUSが視認する視野VRの一例を示す説明図である。この例では、設定画像SIMの向き、大きさ、および奥行感は実物マーカーMK1のそれらに既に合っており、上下左右の表示位置だけを調整することでAR画像の重畳精度を向上させる場合を示している。図18では、第2設定モードにおいて、アイコンIC2およびアイコンIC3が選択された後に操作部135が所定の操作を受け付けて、設定画像SIMの立方体の底面と、実物マーカーMK1との位置が合わさるように設定画像SIMの表示位置が設定された状態が示されている。具体的な操作としては、初めに、アイコンIC2が選択されて、実物マーカーMK1に対して、設定画像SIMの上下方向の表示位置が合わされた後、アイコンIC3が選択されて、実物マーカーMK1に対して、設定画像SIMの水平方向の表示位置が合わされている。この後、アイコンIC5が選択されると、変換パラメーターが更新されて記憶される。
以上説明したように、第1実施形態のHMD100では、カメラ60が特定オブジェクトを含む外景を撮像する。そして、パラメーター設定部167はカメラ60から、光学像表示部26(28)にマーカー画像IMGとして表示されたモデルマーカーの位置および姿勢と、実物マーカーMK1(MK2)のそれらとがほぼ一致するようにユーザーUSに視認させた状態での特定オブジェクトの撮像画像を取得する。パラメーター設定部167は、取得された撮像画像に少なくとも基づいて、パラメーター群を設定する。パラメーター群は、カメラ60のカメラパラメーターCP,カメラ60と右光学像表示部26,左光学像表示部28との間の空間関係を表す3D−3Dのそれぞれの変換パラメーター、および光学像表示部26,28上に任意の3Dモデルを画像として表示するための3D−2Dの写像パラメーターを含む。HMD100は、カメラパラメーターCPを用いて、特定オブジェクトの位置と姿勢を推定する。また、HMD100は、変換パラメーターと写像パラメーターとを用いて、特定オブジェクトに関連付けられたARモデルの位置および姿勢と、特定オブジェクトの位置および姿勢とが、互いに対応、好ましくはほぼ一致する状態で当該ARモデルをAR画像としてユーザーUSに視認させるように、光学像表示部26,28にそれぞれAR画像を表示する。従って、第1設定モードによるキャリブレーションによって、特定オブジェクトと、当該特定オブジェクトに関連付けられたARモデル(AR画像)とが互いに対応、好適にはほぼ一致するようにユーザーUSに視認させることが可能なHMD100を提供することができる。
また、第1実施形態のHMD100では、パラメーター設定部167は、第2設定モードにおいて、操作部135が受け付けた操作に応じて、光学像表示部26,28に表示される設定画像SIMの位置、大きさ、および奥行感と、実物マーカーMK1(MK2)の位置、大きさ、および奥行感が互いに対応、好適には一致する状態で当該設定画像SIMをユーザーUSに視認させるように、カメラパラメーターCPと変換パラメーターと写像パラメーターとの少なくとも1つのパラメーターを設定する。そのため、第1実施形態のHMD100では、操作部135が所定の操作を受け付けることで、特定オブジェクトとARモデル(AR画像)との位置関係を、ユーザーUSが手動でさらに補正できる。これにより、ユーザーUSは、キャリブレーションを容易に実行することができ、また、より精度の高いキャリブレーションを実行できる。
また、第1実施形態のHMD100では、パラメーター設定部167は、第1設定モードにおいて、カメラ60の撮像画像を用いて、カメラパラメーターCPおよび変換パラメーターの少なくとも1つに関するパラメーターを設定する。また、パラメーター設定部167は、第2設定モードにおいて、操作部135が受け付けた所定の操作に応じて、カメラパラメーターCP、変換パラメーターと、写像パラメーターとの少なくとも1つに関するパラメーターを設定する。そのため、第1実施形態のHMD100では、第1設定モードで設定されたカメラパラメーターCPおよび変換パラメーターに対して、第2設定モードで個別に設定できる。これにより、第1設定モードで調整しきれなかったパラメーターを個別に調整することができ、結果として、特定オブジェクトに、その関連付けられたAR画像を重畳するように表示する際の精度を高めることができる。
また、第1実施形態のHMD100では、カメラ60が装着帯90に対して向きを変更可能に配置されている。設定画像SIMを表示可能な光学像表示部26,28は、装着帯90に対して、相対位置を変更可能に配置されている。そのため、カメラ60は、光学像表示部26,28に対して、位置および向きが変更可能に配置されており(HMD100を「カメラ可動型HMD」とも呼ぶ)、カメラ60と光学像表示部26,28との位置関係の変化に応じて、キャリブレーションの設定が必要になる。第1実施形態のHMD100では、ユーザーUSは、位置関係の変化に応じて必要とされるキャリブレーションを、第1設定モードと第2設定モードとを実行することで、容易に実行できる。もちろん、カメラと光学像表示部26,28との間の空間関係が固定されたHMD(「カメラ固定型HMD」とも呼ぶ)において、ユーザーUSによるキャリブレーション(第1設定モード)の際に毎回、カメラと光学像表示部との間の空間関係を表す回転と並進をキャリブレーションパラメーターとして可変にし、当該空間関係の最適化を実行してもよい。このようなキャリブレーションは、カメラ固定型HMDにおいても、製造誤差により、各個体に亘る上記空間関係の分散が大きいときに、有益である。
また、第1実施形態のHMD100では、パラメーター設定部167が設定したカメラパラメーターCPおよび変換パラメーターに基づいて、表示設定部165は、撮像された特定オブジェクトである実物マーカーMK2または実物マーカーMK1に対応付けて設定画像SIMを表示させる。そのため、第1実施形態のHMDでは、ユーザーUSが、実行されたキャリブレーションの結果を視認でき、追加調整を実行する必要があるかを判定できるので、ユーザーUSの利便性が向上する。
また、第1実施形態のHMD100では、表示設定部165は、カメラ60が撮像するまでのカウントダウンを表す情報として、特定オブジェクトとしての実物マーカーMK2に対応付けられたマーカー画像IMGの色を変化させた画像を右光学像表示部26に表示させる。そのため、第1実施形態のHMD100では、ユーザーUSにカメラ60が実物マーカーMK2を撮像するタイミングを視覚情報として認識させることができ、ユーザーUSは直感的にキャリブレーションのためのアライメントを実行できる。
B.第2実施形態:
第2実施形態では、第1実施形態と比較して、キャリブレーションが実行されるときにカメラ60が撮像する実物マーカーと、実物マーカーを撮像する第1設定モードの一部とが異なる。そのため、第2実施形態では、第1実施形態と比較して異なる処理について説明し、その他の第1実施形態と同じ処理の説明については省略する。
図19は、第2実施形態における制御部10aの裏面を示す正面図である。図19には、制御部10aにおける操作部135が形成された面を表面と定義した場合の裏面が示されている。図19に示すように、制御部10aの裏面には、実物マーカーMK1を小さくした実物マーカーMK3が配置されている。
第2実施形態の第1設定モードでは、第1実施形態の第1モードと同じように、初めに、表示設定部165が右光学像表示部26にマーカー画像IMGを表示させる(図10のS201)。パラメーター設定部167は、マーカー画像IMGと制御部10の裏面に配置された実物マーカーMK3との位置合わせをユーザーUSに促す(S210)。実物マーカーMK3とマーカー画像IMGとの位置合わせが実行されると、第1実施形態と異なり、表示設定部165は、S201で右光学像表示部26に表示されたマーカー画像IMGと大きさが異なるマーカー画像IMGを右光学像表示部26に表示させる(S202)。パラメーター設定部167は、S201の処理時とは大きさが異なるマーカー画像IMGと実物マーカーMK3との位置合わせをユーザーUSに促す(S220)。ここで、大きさが異なる2つのマーカー画像IMGは、本実施形態では光学像表示部26,28に対する仮想的な位置(Z軸に沿った距離)が異なる同一のモデルマーカーを写像パラメーターにより2次元に写像することで生成される。第2実施形態のS220の処理では、使用する実物マーカーが1つであっても、大きさが異なる2つのマーカー画像IMGに対してアライメントを成立させようとするから、第1実施形態と同様に、ユーザーUSは、マーカー画像IMGが表示された右光学像表示部26と実物マーカーMK3とを、距離を変えてアラインさせる。第1設定モードのS203以降の処理については、右光学像表示部26に対する処理と同じであるため、説明を省略する。
第2実施形態のHMD100aでは、1つの実物マーカーMK3であっても、第1設定モードにおいて右光学像表示部26または左光学像表示部28に表示されるマーカー画像IMGを変化させることで、精度の高いキャリブレーションを実行できる。
C.第3実施形態:
第3実施形態では、第1実施形態と比較して、キャリブレーションが実行されるときにカメラ60が撮像する実物マーカーの形状と、実物マーカーに対応するマーカー画像IMGの形状と、が異なる。そのため、第3実施形態では、第1実施形態に対して異なる実物マーカーの形状および実物マーカーの特定について説明し、その他の構成については説明を省略する。
図20および図21は、第3実施形態の実物マーカーの一例を示す概略図である。図20には、実物マーカーMK4として、階段状に形成された3次元のブロックが示されている。同様に、図21には、実物マーカーMK5として、三角錐を基準として半円筒などのブロックが付加された3次元のブロックが示されている。第3実施形態のマーカー画像記憶部138bは、実物マーカーMK4および実物マーカーMK5に対応する3次元モデルのデータを、その特徴点とともに記憶している。そのため、マーカー特定部166は、マーカー画像記憶部138bに記憶された特徴点と撮像画像における特徴点との対応関係を推定することで、カメラ60に対する実物マーカーMK4または実物マーカーMK5の位置と姿勢を推定できる。特徴点の特定方法としては、ステレオカメラによって特定の位置までの距離を特定して、特定した距離を用いたエッジ検出などであってもよく、公知の技術を適用できる。
記憶部には、実物マーカーMK4または実物マーカーMK5の形状と相似な形状を有する3Dモデルマーカーが記憶されている。なお、実施形態1と同様に、モデルマーカーは、仮想の3次元空間内で定義されている。HMD100は、光学像表示部26、28に対して所定の位置と姿勢を有するように設定された当該モデルマーカーを上述の写像パラメーターにより写像し、光学像表示部26、28にマーカー画像IMGとして表示する。以下は、実施形態1と同様に、ユーザーUSにマーカー画像IMGと実物マーカーMK4,MK5とのアライメントを成立させる。
以上説明したように、第3実施形態のHMD100bでは、2次元モデルよりも特徴点の多い3次元モデルを用いてキャリブレーションが実行されるため、精度の高いキャリブレーションを実行できる。
本開示は、本明細書の実施形態や実施例、変形例に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現できる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態、実施例、変形例中の技術的特徴は、先述の課題の一部又は全部を解決するために、或いは、先述の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせができる。その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除できる。例えば、以下のものが例示される。
D−1.変形例1:
第1実施形態から第3実施形態では、図1から図3に示すように、光学像表示部26,28に対するカメラ60の位置や向きが変化するHMD100について説明した。光学像表示部26,28に対するカメラ60の位置が変化しないHMD101についても、第1実施形態から第3実施形態で説明したキャリブレーションが有効である。なお、以降では、第1実施形態から第3実施形態で説明したHMD100を、「カメラ可動型HMD」とも呼び、カメラ60の位置が固定であるHMD101を「カメラ固定型HMD」とも呼ぶ。例えば、カメラ固定型HMDの場合であっても、カメラ60と光学像表示部26、28との間の空間関係を表す回転と並進に存在する誤差の分散が、同一仕様のHMDの間で大きい場合には、ユーザーUSがAR画像を表示する前に毎回、上記回転と並進を含む相対関係を調整するようにキャリブレーション処理をしてもよい。
D−2.変形例2:
光学像表示部26、28、およびカメラ60のファクトリーキャリブレーション(初期キャリブレーション):
例えば、サービスステーションにおいて、カメラ60のカメラパラメーターCP、カメラ60と光学像表示部26、28との間の空間関係(変換パラメーター)、光学像表示部26、28の写像パラメーターの初期値(デフォルト値)が、以下のステップを有するプロセスにより、導出され得る。
1.別途、高解像度な測定用カメラのキャリブレーションをする。
2.別途、HMD100に含まれるカメラ60のキャリブレーションをし、カメラパラメーターCPを導出する。
3.HMD100と測定用カメラとを特別なジグ上にセットアップする。ワールド座標系として平面パターンを設置する。
4.測定用カメラについてジグ上で数か所の位置を定義する。そして、それぞれの位置で、平面パターンに対する測定用カメラの位置と姿勢を推定する。
5.光学像表示部26に、光学像表示部26に対して仮想的な位置と姿勢を有する仮想パターンを写像する。なお、光学像表示部26に対する仮想的な位置と姿勢は、光学像表示部26に対する平面パターンの位置と姿勢と同じである。
6.測定用カメラを定義された複数の位置へ移動させ、それぞれの位置で、光学像表示部26に表示された仮想パターンの画像を撮像する。
7.撮像された画像を用いて写像されている3D位置を再構築する。
8.2D-3Dの対応関係を用いて光学像表示部26の内部パラメーター(写像パラメーター)を推定する。
9.平面パターンに対する2つのカメラ(カメラ60および測定用カメラ)の姿勢を計算し、そしてカメラ60と、光学像表示部26との間の変換パラメーターを解く。
10.4〜9のステップを、光学像表示部28について繰り返す。
上記実施形態において、ソフトウエアによって実現された機能及び処理の一部又は全部は、ハードウエアによって実現されてもよい。また、ハードウエアによって実現された機能及び処理の一部又は全部は、ソフトウエアによって実現されてもよい。ハードウエアとしては、例えば、集積回路、ディスクリート回路、または、それらの回路を組み合わせた回路モジュールなど、各種回路を用いてもよい。