本明細書では、以下の項目に沿って順番に説明する。
A.第1実施形態:
A−1.頭部装着型表示装置の構成:
A−2.キャリブレーション実行処理:
A−2−1.第1設定モード:
A−2−2.パラメーターの設定:
A−2−2−1.カメラパラメーターについて:
A−2−2−2.変換パラメーターについて:
A−2−2−3.パラメーター導出処理:
A−2−2−4.キャリブレーションデータの自動収集:
A−2−3.第2設定モード:
B.第2実施形態:
C.第3実施形態:
D.変形例:
A.第1実施形態:
A−1.頭部装着型表示装置の構成:
図1ないし図3は、キャリブレーションを行なう頭部装着型表示装置100(HMD100)の外観構成を示す説明図である。HMD100は、画像表示部20が表示する表示画像を使用者に視認させ、画像表示部20(図1)を透過する外景からの光によって当該外景も使用者に視認させることができる。詳細な構成については後述するが、本実施形態のHMD100は、画像表示部20を装着した使用者の右眼と左眼とのそれぞれに対応する画像表示部を有しており、使用者の右眼と左眼とに別々の画像を視認させることができる。
図2に示すように、HMD100は、使用者USの頭部装着型表示装置に装着される装着帯90と、装着帯90に接続されている画像表示部20と、画像表示部20を制御する制御部10(コントローラー10)と、制御部10と装着帯90とを接続する接続部40と、を備えている。図1に示すように、装着帯90は、樹脂製の装着基部91と、装着基部91に連結される布製のベルト部92と、カメラ60と、を備える。装着基部91は、人の前頭部の形に合った湾曲した形状を有する。ベルト部92は、使用者の頭部の周りに装着されるためのベルトである。なお、接続部40は、装着帯90と制御部10側とを有線で接続しているが、図2では、接続している部分については、図示を省略している。
カメラ60は、外景を撮像可能で、装着基部91の中心部分に配置されている。換言すると、カメラ60は、装着帯90が使用者の頭部に装着された状態で、使用者の額の中央に対応する位置に配置されている。そのため、カメラ60は、使用者が装着帯90を頭部に装着した状態において、使用者の視線方向の外部の景色である外景を撮像し、撮像された画像である撮像画像を取得する。図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は、それぞれ、使用者が画像表示部20を装着した際に使用者の右および左の眼前に位置するように配置されている。右光学像表示部26の一端と左光学像表示部28の一端とは、使用者が画像表示部20を装着した際の使用者の眉間に対応する位置で、互いに接続されている。
右保持部21は、右光学像表示部26の他端から装着基部91と接続されている連結部93に延伸して設けられた部材である。同様に、左保持部23は、左光学像表示部28の他端から連結部93に延伸して設けられた部材である。右表示駆動部22と左表示駆動部24とは、使用者が画像表示部20を装着した際の使用者の頭部に対向する側に配置されている。
表示駆動部22,24は、図2で後述する液晶ディスプレイ241,242(Liquid Crystal Display、以下「LCD241,242」とも呼ぶ)や投写光学系251,252等を含む。表示駆動部22,24の構成の詳細な説明は後述する。光学像表示部26,28は、後述する導光板261,262(図4参照)と調光板とを含んでいる。導光板261,262は、光透過性の樹脂材料等によって形成され、表示駆動部22,24から出力された画像光を使用者の眼に導く。調光板は、薄板状の光学素子であり、使用者の眼の側とは反対の側である画像表示部20の表側を覆うように配置されている。調光板の光透過率を調整することによって、使用者の眼に入る外光量を調整して虚像の視認のしやすさを調整できる。
制御部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次元として表した画像である。なお、実物マーカーMK1は、請求項における識別マーカーに相当する。
図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への「写像パラメーター」と、を含む。これらのパラメーターは、必要に応じて行列またはベクトルの態様で表わされる。「一つのパラメーター」との表記は、一つの行列または一つのベクトルを示すこともあるし、一つの行列またはベクトルに含まれる複数の要素の一つを示すこともある。パラメーター設定部167は、パラメーター群のうち、必要なパラメーターを導出し、AR画像の表示の際に用いる。この結果、HMD100は、使用者USに、画像表示部20を介して、AR画像(ARモデル)の位置、大きさ、向き、奥行感の少なくとも一つと、特定オブジェクトのそれらにと、がほぼ一致する状態で当該AR画像を視認させることができる。もちろん、これらに加えて、HMD100は、色やテクスチャーなどの見えが互いに一致するようにしてもよい。
表示設定部165は、キャリブレーションが実行されているときに、AR画像または設定画像SIM(後述)を右光学像表示部26または左光学像表示部28に表示させる。設定画像SIMを用いた詳細な処理については後述する。
インターフェイス180は、制御部10に対して、コンテンツの供給元となる種々の外部機器OAを接続するためのインターフェイスである。外部機器OAとしては、例えば、ARシナリオを記憶している記憶装置、パーソナルコンピューター(PC)や携帯電話端末、ゲーム端末等、がある。インターフェイス180としては、例えば、USBインターフェイス、マイクロUSBインターフェイス、メモリーカード用インターフェイス等、を用いることができる。
図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から出力された画像光を、所定の光路に沿って反射させつつ使用者の右眼REに導く。なお、左表示駆動部24は、右表示駆動部22と同様の構成を有し、使用者の左眼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)。
右画像表示部26にはさらにメッセージが表示されてもよい。HMD100は、使用者USがマーカー画像IMGと実物マーカーMK2とが一致するように視認した場合に、使用者USは、タッチパッドの操作、ボタンの押下、または音声コマンドの発声をするように、指示する。パラメーター設定部167がこれら操作または音声コマンドを受け付けた場合に、カメラ60がマーカーMK2を撮像、すなわちキャリブレーションデータの収集をする(ステップS202)。音声コマンドに基づいて、パラメーター設定部167がキャリブレーションデータを収集する場合には、使用者USの頭部の動きが少ないことが期待される。そのため、音声コマンドに基づく操作では、タッチ操作やボタンの押下の場合に比べて、使用者USが成立させたアライメントからのずれが少ない状態でのキャリブレーションデータの収集が可能となり、結果として、AR画像の重畳精度のよいHMD100が得られる。
図10のステップS210のマーカー画像IMGと実物マーカーMK2との位置と姿勢を合わせる処理(目視によるアライメント処理)およびキャリブレーションデータの収集が実行されると、表示設定部165は、ステップS201の処理と同じく図11に示すように、右光学像表示部26にマーカー画像IMGを表示させる(ステップS203)。その後、パラメーター設定部167は、マーカー画像IMGと実物マーカーMK1とが一致して視認されるように、HMD100を装着したまま使用者USに位置と姿勢を合わせることを促す(ステップS220)。この状態で実物マーカーMK1が撮像されることで、パラメーター設定部167は、キャリブレーションデータを収集する(ステップS204)。ここで、実物マーカーMK1は、実物マーカーMK2よりも大きい。そのため、ステップS220の処理では、使用者USがマーカー画像IMGと実物マーカーMK1とが一致するように視認する場合には、右光学像表示部26と実物マーカーMK1との距離は、実物マーカーMK2の場合と比べて大きくなる。
パラメーター設定部167は、左光学像表示部28に関して、右光学像表示部26におけるステップS201からステップS204までの処理と同じ処理として、図10のステップS205からステップS208までの処理を実行する。左右の光学像表示部26、28に関して第1設定モードにおける各処理(ステップS201からステップS208までの処理)が実行されると、パラメーター設定部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モデルにおける位置、大きさ、姿勢の少なくとも一つが実物体にアライン(重畳)するように使用者に視認させる場合、カメラ60は、当該実物体の位置および姿勢を検出する検出機として機能する。このとき、パラメーター設定部167は、カメラパラメーターCPを用いて、カメラ60に撮像された実物体のカメラ60に対する位置および姿勢を推定する。さらに、パラメーター設定部167は、当該位置および姿勢を、カメラ60と左光学像表示部28(右光学像表示部26)との間の相対位置関係を用いて、左光学像表示部28に対する実物体の位置および姿勢に変換する。さらに、パラメーター設定部167は、当該変換された位置および姿勢に基づいて、ARモデルの位置および姿勢を決定する。そして、画像処理部160は、当該位置および姿勢を有するARモデルを、写像パラメーターを用いて表示領域に写像(変換)し、表示バッファ(例えばRAM122)に書き込む。そして、表示制御部190は、表示バッファに書き込まれたARモデルを左光学像表示部28に表示する。このため、カメラパラメーターCPがデフォルトカメラパラメーターである場合には、推定される実物体の位置および姿勢に誤差が含まれることとなる。そうすると、推定された位置および姿勢の誤差に由来して、表示されたARモデルと実物体との重畳に誤差があるように使用者に視認される。
そこで、本実施形態では、ARモデルが対象物に重畳して使用者USに視認されるようにするためのキャリブレーションの際に、パラメーター設定部167は、カメラパラメーターCPを、実物マーカーMK2および実物マーカーMK1の撮像データを用いて、最適化して設定する。そして、設定されたカメラパラメーターCPが用いられて、対象物の位置および姿勢が検出(推定)されるようにする。そうすれば、ARモデルの表示において、表示されるARモデルと実物体との間に発生するずれが使用者USに視認される度合いが低くなる。後述するように、同じHMD100の使用者USが同一人であっても、カメラパラメーターCPの設定は、キャリブレーションが行なわれるごとに行なわれ、当該キャリブレーションに引き続いて行なわれる対象物とARモデルとの間での位置、大きさ、向きの少なくとも一つが一致した表示のために使用されることが好ましい。これは、キャリブレーションの際に、必ずしも使用者は、実物マーカーMK2または実物マーカーMK1と、実物マーカーMK2または実物マーカーMK1に対応したマーカー画像IMGとを、同じ精度で位置および姿勢を合わせるとは限らないことによる。たとえ使用者USが違う精度で位置および姿勢を合わせたとしても、それに応じたカメラパラメーターCPが設定されることから、実物体に対するARモデルの重畳表示がされる場合に重畳表示のずれの増大が抑制される。
A−2−2−2.変換パラメーターについて:
また、本実施形態のHMD100は、カメラ60と光学像表示部26,28との間の相対位置関係が変化する構造を有する。デフォルトカメラパラメーターについての説明からも理解されるように、ARモデルにおける位置、大きさ、姿勢の少なくとも一つが実物体にアライン(重畳)するように使用者に視認させる場合、実際のカメラ60と光学像表示部26,28との間の相対位置関係とは異なる相対位置関係に基づいてARモデルを表示すると、表示されたARモデルと実物体との重畳に誤差が視認される。
そこで、本実施形態では、ARモデルが対象物に重畳して使用者に視認されるようにするためのキャリブレーションの際に、カメラ60の座標系と、右光学像表示部26の座標系および左光学像表示部28の座標系と、の間の相対位置関係(回転および並進の少なくとも一つ)を表す変換パラメーターを調整または設定する。そして、設定された当該変換パラメーターが表す空間関係(相対位置関係)を用いてARモデルの表示をすると、使用者USにずれが視認される度合いが低くなる。
本実施形態では、パラメーター設定部167は、右光学像表示部26と左光学像表示部28とのそれぞれに対応する左変換パラメーターPML[Rcam2left, tcam2left]と、右変換パラメーターPMR[Rcam2lright, 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が左眼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)で表される二乗和を導出する。
使用者が、右眼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
obj2am]は実物マーカー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)の位置、大きさおよび配向の少なくとも一つが、特定オブジェクトの位置、大きさ、配向の少なくとも一つに一致するように、表示設定部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表示機能を続行すること(重畳して見えるか)、およびキャリブレーションをやり直すことのいずれかを促す文字画像または音声を使用者に提示してもよい。
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設定モードにおいて、使用者USは、マーカー画像IMGと実物マーカーMK1,MK2との目視によるアライメントを成立させたことを、タッチパッドの操作、ボタンの押下、または音声コマンドの発声により、パラメーター設定部167に伝えている。そして、パラメーター設定部167がこれら操作または音声コマンドを受け付けた場合に、カメラ60がマーカーMK1,MK2を撮像し、すなわちキャリブレーションデータの収集をする。すなわち、HMD100は、キャリブレーションデータの収集のトリガーとして、使用者USによる操作または発声を利用している。しかしながら、以下で説明するように、HMD100は、このような構成に代えて、自動的にキャリブレーションデータを収集する構成を備えてもよい。
図14は、実施形態に係るキャリブレーションデータの自動収集処理のフローである。この処理では、初めに、マーカー特定部166が撮像を開始し、そして、光学像表示部26,28の一つ(以下では、右光学像表示部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との間の相対可動範囲の両端間に存在する一つの空間関係である。位置および姿勢、すなわち回転および並進、を表す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の近似的な回転角であり、いずれも度単位で表わされたオイラー角である。「Abs」は値の絶対値を取ることを意味する。なお、上述の通り、モデルマーカーとは、3次元座標で表わされたモデルであり、2Dへ写像されてマーカー画像IMGとして表示されるものである。
次に、右光学像表示部26の座標系において、実物マーカーMK2のX軸、Y軸に沿った近似的な並進(T
x’, T
y’)が、モデルマーカーの並進(t
x、t
y)に近いか否かが、以下の式(21D)および式(21E)の関係式を用いて判定され得る。
以下の説明においては、上記回転角の差を集合的に「回転差A」、上記並進の差を集合的に「並進差D」と表す。
図14のフローの説明に戻ると、マーカー特定部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は、マーカー画像の色を緑色に変える(ステップ214C)。ステップS213Cの判定が「否」の場合には(ステップS213C:No)、次に実行される処理はステップS213Aの判定に戻る。ステップS214Cの後で、マーカー特定部166は、回転差Aも並進差Dもそれぞれの閾値未満の状態と、使用者USの頭部が安定した状態とが、例えば2秒以上継続したか否かを判定する(ステップS215A)。ステップS215Aの判定が肯定的であると判定された場合には、パラメーター設定部167は、所定時間期間の計時または逆算計時を開始する。パラメーター設定部167が開始する逆算計時を、これをカウントダウン処理と呼ぶ。本実施形態の所定時間期間は1秒である。表示設定部165は、この1秒間を3分割し、時間の経過にしたがって表示または音声出力される「3」、「2」、「1」、「0」のカウントダウン情報を提示する。パラメーター設定部167は、「0」が提示されるタイミングで、カメラ60による実物マーカーMK2の撮像画像を、キャリブレーションデータとして取得する。
カウントダウン処理における所定時間期間は1秒に限らない。所定時間期間は、使用者USがマーカー画像IMGと実物マーカーMK2との間の目視によるアライメントを精度の点でより向上させることができる程度に長く、同時に、既に精度よく成立している目視によるアライメントを使用者USが維持することができる程度に短いことが好ましい。この点で「1秒」は経験的に好適な長さである。
頭部が安定な状態にあるか否か、または実質的に静止しているか否かは、パラメーター設定部167が、カメラ60の撮像画像における実物マーカーMK2の特徴点の位置、HMD100に搭載されたIMUの出力、およびこれらの組み合わせから、判定することができる。
図15は、他の実施形態に係るキャリブレーションデータの自動収集処理を説明するフローである。
図15のフローは、ステップS212とステップS216との間の部分が、図14のフローのそれとは異なっていて、その他の部分は図14のフローと実質的に同じである。したがって、以下では、異なっている部分のみ説明する。
図15に示すフローでは、ステップS212Aの後で、パラメーター設定部167は、カメラ60の撮像範囲に実物マーカーMK2が存在している状態であり、かつ、使用者USの頭部が所定期間、例えば2秒、に亘って安定的な状態か否かを判定する(ステップS215B)。パラメーター設定部167がカメラ60の撮像範囲に実物マーカーが存在する状態であり、かつ、使用者USの頭部が2秒間に亘って安定的な状態であると判定した場合には(ステップS215B:Yes)、処理はステップS216へ移行する。ステップS215Bの判定が「否」である場合には、この判定が満足されるまで、パラメーター設定部167は、撮像画像と使用者USの頭部の動きとを継続的に監視する。
図16は、他の実施形態に係るキャリブレーションデータの自動収集処理を説明するフローである。
図16のフローは、図14のフローと比較して、ステップS216とステップS217との間に、判定ステップS218とS219が加えられている点で、図14のフローとは異なっていて、その他の部分は図14のフローと実質的に同じである。したがって、以下では、異なっている部分のみ説明する。
図14の処理では、カウントダウン処理が開始されると(ステップS216)、使用者USが姿勢を大きく変えた結果、もはや目視によるアライメントが成立していない場合であっても、所定時間期間の経過時にキャリブレーションデータが収集される。この場合、正確なキャリブレーションデータを収集することができない。本実施形態では、カウントダウン処理における所定時間期間内に使用者USの頭部が閾値以上の動きを示した場合に、カウントダウン処理を中止して、キャリブレーションデータの収集処理を再度やり直すことができる。具体的には、パラメーター設定部167は、ステップS216のカウントダウン処理を開始された後に、所定時間期間(カウントダウン期間)が経過したか否かを判定する(ステップS218)。パラメーター設定部167がステップS218の判定が「否」と判定した場合には(ステップS218:No)、IMUが出力する角速度または加速度に基づいて、使用者USの頭部が閾値以上の大きさの動きをしたか否かを判定する(ステップS219)。パラメーター設定部167は、ステップS219の判定が「否」と判定した場合には、ステップS218の処理において、所定時間期間が経過した時点で(ステップS281:Yes)、キャリブレーションデータを収集する(ステップS217)。ステップS219において、パラメーター設定部167が使用者USの頭部が閾値以上の大きさの動きがあったと判定した場合には、ステップS213A以降の処理が実行される。
上述したように、パラメーター群を調整する際には、HMD100に表示されたマーカー画像IMGと実物マーカーMK2とが一致するように使用者USに視認させた(アライメントを成立させた)状態で、キャリブレーションデータを収集することが好ましい。使用者USがマーカー画像IMGと実物マーカーMK2とを精度よく一致して視認しているか否かは、パラメーター群を導出するキャリブレーションの精度に影響を与える。
ただし、せっかくユーザーが、マーカー画像と実物マーカーとが精度よく一致するよう視認していても、データ収集の指示またはトリガーのためにコントローラー10にタッチすると、その動作でアライメントがずれ、ずれたアライメントの状態でキャリブレーションデータが収集(実物マーカーが撮像)されることとなる。音声コマンドの場合にも、発声動作または発音動作により、アライメントがずれる可能性は皆無でない。このようなずれたアライメントの状態で得られたパラメーター群を使うと、AR画像の重畳表示が精度よく行われない。
図14、図15、図16を参照して説明したキャリブレーションデータの自動収集処理は、ユーザーがタッチや音声コマンドを必ずしも与えなくても、使用者がマーカー画像と実物マーカーとを一致して視認していることをHMD100が判定できる仕組みを提供することができる。そして、その判定をトリガーとしてキャリブレーションデータを収集できることから、精度のよいパラメーター群が得られ、結果として、AR画像の重畳表示の精度のよいHMD100が得られる。なお、本実施形態では、2つの回転角の差に基づいて、「回転差A」が閾値未満か否かが判定されるが、1つの軸の回りの回転角の差、または3つの軸の回りの回転角の差に基づいて、「回転差A」が閾値未満か否かが判定されてもよい。「並進差D」についても同様である。
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に示す例では、使用者から見て、外景の実物マーカー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が、実行されたキャリブレーションの結果を視認でき、追加調整を実行する必要があるかを判定できるので、使用者の利便性が向上する。
また、第1実施形態のHMD100では、位置合わせ処理において、マーカー特定部166が、マーカー画像IMGと実物マーカーMK2とが所定の位置関係であり、マーカー画像IMGが表示された右光学像表示部26と実物マーカーMK2との距離が所定値以下であり、使用者USの頭部が静止している場合に、表示設定部165は、カウントダウンを表す文字画像を右光学像表示部26に表示させる。カウントダウンが経過した後に、パラメーター設定部167は、カメラ60に実物マーカーMK2を撮像させて、カメラパラメーターCPおよび変換パラメーターを設定する。そのため、第1実施形態のHMD100では、キャリブレーションの実行に必要な実物マーカーMK2の撮像データを取得するときに、特定のボタンを押したり、音声認識を実行する必要がなく、自動的にカメラ60による撮像が実行される。よって、使用者の操作および音声発生などによる実物マーカーMK2とマーカー画像IMGとの重なり(アライメント)のずれを低減できる。これにより、精度の良いアライメントの撮像データを取得でき、キャリブレーションの精度を向上する。
また、第1実施形態のHMD100では、パラメーター設定部167は、所定の位置関係および距離の所定値として、算出したカメラ60に対する特定オブジェクトの空間関係と、カメラと光学像表示部26、28との間のデフォルトの空間関係と、を用いて、右光学像表示部26または左光学像表示部28に対する特定オブジェクトの仮想の位置と姿勢を算出する。パラメーター設定部167は、特定オブジェクトの上記仮想の位置と姿勢と、マーカー画像IMGとして表示(写像)されているモデルマーカーの光学像表示部26、28に対する仮想の位置と姿勢と、を比較することで両位置・姿勢の回転に関するパラメーターのずれおよび並進に関するパラメーターのずれを算出する。これらのずれとしての差に基づいて、表示設定部165は、カメラ60が外景を撮像するまでのカウントダウンの情報を右光学像表示部26または左光学像表示部28に表示させる。また、表示設定部165は、回転に関するパラメーターの差や並進に関するパラメーターの差に応じて、使用者USに、マーカー画像IMGと特定オブジェクトである実物マーカーMK2との位置合わせの処理を促す文字画像を右光学像表示部26に表示させる。そのため、第1実施形態のHMD100では、使用者USは、マーカー画像IMGと実物マーカーMK2とのずれを視覚情報として認識でき、容易に精度の高いキャリブレーションを実行できる。
また、第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の処理では、使用する実物マーカーが一つであっても、大きさが異なる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.変形例:
なお、この発明は上記実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば、次のような変形も可能である。
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画像を表示する前に毎回、上記回転と並進を含む相対関係を調整するようにキャリブレーション処理をしてもよい。
図22は、第1設定モードで設定するパラメーターに関連する要素を示す表である。第1設定モードで変換パラメーターが設定される場合に、光学像表示部26,28から特定オブジェクトまでの距離の選択、いずれのパラメーターを優先的に最適化するかの選択などを設定できる。
図22に示すように、「マーカー画像IMGの表示」として、両眼表示と単眼表示との2つの表示が挙げられる。両眼表示は、右光学像表示部26および左光学像表示部28に同時にマーカー画像IMGを表示させて、使用者USにアライメントを実行させる場合を表す。単眼表示は、右光学像表示部26または左光学像表示部28にマーカー画像IMGを表示させて、使用者USに右光学像表示部26と左光学像表示部28とを別々にアライメントを実行させる場合を表す。HMD100であるカメラ可動型HMDおよびHMD101であるカメラ固定型HMDでは、単眼表示を採用している。
「実物マーカー、モデルマーカーの構造」とは、マーカー画像IMGの基となるモデルマーカーおよび実物マーカーMK1,MK2,MK3,MK4として、2次元のオブジェクト(図形など)を用いる「2D」と、3次元のオブジェクトを用いる「3D」とが挙げられる。HMD100であるカメラ可動型HMDおよびHMD101であるカメラ固定型HMDでは、第1実施形態に示すように、2次元の実物マーカーMK1,MK2、および2次元のモデルマーカーを写像したマーカー画像IMGを採用している。
「モデルマーカー(マーカー画像IMG)の位置と姿勢」は、使用者USがアライメントを実施する際に、光学像表示部26、28に表示されるマーカー画像IMGが光学像表示部26、28に対して固定で表示されるか、カスタマイズされるかを示している。以下、詳細に説明する。
本実施形態では、3次元で表わされたモデルマーカーを使用し、そして、光学像表示部26、28から所定距離だけ離れたところにまっすぐに固定されているかのように当該モデルマーカーをマーカー画像IMGとしてレンダリング(描画)する。光学像表示部26、28に対するモデルマーカーの仮想的な位置と姿勢は、既定(固定)である。それは、通常、特定のHMDに対して、以下の条件に基づいて、選択される。
(1)実物マーカーMK1,MK2が、使用者USとカメラ60とによって同時に見られる。たとえば、あるHMDに搭載されたカメラは、眼鏡型の構造体の右脚に位置するかもしれない。したがって、アライメントの距離は、近すぎると、撮像画像に含まれないことがある。
(2)多くのARシナリオが生じる位置と姿勢(特に距離)の場所に、上記既定の位置と姿勢を選択する。なぜなら、AR画像の重畳精度(またはキャリブレーション精度)は、アライメントが実施されたところを含む近傍領域で高く、その領域から外れると低下するからである。
しかしながら、上述の既定の位置と姿勢、すなわち既定のアライメント姿勢は、他の実施形態においては必ずしも必須ではない。他の実施形態によれば、カメラ60に撮像された実物マーカーMK1,MK2(MK4,MK5)の位置と姿勢をトラッキングし続け、トラッキングされた位置・姿勢と、既存またはデフォルトのパラメーター群と、を用いてモデルマーカーを光学像表示部26、28にマーカー画像IMGとして表示する。そして、トラッキングされた位置・姿勢に応じてモデルマーカー(マーカー画像IMG)のレンダリング(描画)を更新し、アライメントに最良であると使用者USが認めるマーカー画像IMGの位置・姿勢を使用者USに決定させる。たとえば、使用者USは、実物マーカーMK1,MK2がユニークに見え、かつ既存のパラメーター群(既存のキャリブレーション結果)が明白なエラーを呈する位置と姿勢(視野)を見つけるまで、実物マーカーMK1,MK2の回りを動くことができる。そして、使用者USが指定したその時点で、パラメーター設定部167が、新しいトラッキング姿勢を用いた位置・姿勢の更新を停止する。そうすると、モデルマーカー(マーカー画像IMG)は静止して描かれ、そして、使用者USは、マーカー画像IMGと実物マーカーMK1,MK2とが互いに一致して視認することができるように、自らの位置と姿勢へ、変える。このような方法によっても、使用者USは、アライメントを成立させることができる。
画像処理部160は、モデルマーカーの表示に用いられるレンダリングエンジンを有し、そのレンダリングエンジンにおけるOpenGLは、「PVM」の行列積を利用しCGを生成する。ここで、Pは写像パラメーターであり、Vは、光学像表示部26、28に対するモデルマーカーの位置と姿勢であり、Mはモデルマーカー(3Dモデル)の内部座標である。使用者USの目視によるアライメントのためにモデルマーカーを写像したマーカー画像をレンダリング(描画)したい場合には、Vは、例えば、第1実施形態のように、[I:0,0,d1]のように既定にし得る。なお、ここで、Iは単位行列であり、光学像表示部26、28の座標系で表わされた回転であり、(0,0,d)のdはアライメントの距離であり、光学像表示部26、28の座標系で表わされた並進である。
カスタマイズアライメントは、固定されたVの使用に代えて、Vとして既存またはデフォルトのパラメーター群を使用することと、使用者USが実物マーカーMK1,MK2の位置・姿勢のトラッキングを固定した時点での当該トラッキングされた位置・姿勢(以下、トラッキングポーズ)を利用することを意味する。
式(21H)において、Tは、カメラ60を介したトラッキングにより得たトラッキング姿勢(カメラ60に対する位置と姿勢)を表し、Hは、現行またはデフォルトのカメラとディスプレイとの間の変換行列(空間関係)を表す。
カスタマイズアライメントの利点は、以下のように現れる。
(1)ユーザーの装着具合とARシナリオの距離範囲に依存して、カメラ60と光学像表示部26、28との間の空間関係が大きく変化するカメラ可動型HMDの場合:あるケースでは、本実施形態のキャリブレーション処理が、対応する既定の距離にある大きさの異なる実物マーカーMK1およびMK2のいずれを用いてもうまく実施し得ない可能性がある。なぜなら、カメラ60が実物マーカーMK1,MK2を見ること(補足すること)ができない場合があるからである。実物マーカーMK1,MK2は、上部または下部において、カメラ60の撮像画像から外れ得る。このようなケースでは、使用者USにアライメントの距離を選択するよう促すことが解決策となる。
(2)使用者USが、特定のARシナリオの距離のために、よりよいAR画像の重畳精度を達成することを望む場合、特に、使用者USの関心のある距離が、キャリブレーション範囲内にない場合: 使用者USが大きい距離範囲において精度を求める場合には、ユーザーは、その範囲内においてむしろ複数の距離を選択し、複数回のアライメントを実施することができる。
(3)使用者USが使用者US自身で創作した3Dオブジェクトを実物マーカーとして用いる場合には、使用者USは、アライメント距離を定義(決定)する必要がある。
図22に戻り、「調整するパラメーター」は、キャリブレーション処理において調整されるパラメーターを示している。後述するように、HMD100に含まれるカメラ60のカメラパラメーターCPは、必ずしも調整される必要はない。また、カメラ固定型HMDであっても、カメラ60と右光学像表示部26,28との間の空間関係(回転と並進)を表す変換パラメーターを調整することが好ましい場合がある。
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について繰り返す。
D−3.変形例3:
HMD100のカメラ可動型HMDと、HMD101のカメラ固定型HMDとでは、光学像表示部26,28に対するカメラ60の位置および向きの変化の有無が異なる。そのため、カメラ固定型HMDとカメラ可動型HMDとでは、第1設定モードにおいて、優先的に最適化が実行されるパラメーターを、異なるパラメーターとして変更してもよい。例えば、カメラ可動型HMDに対して、カメラ固定型HMDでは、キャリブレーションによってカメラパラメーターCPを最適化してもよい。
最適化されるパラメーターとして、カメラパラメーターCPと、変換パラメーターとが挙げられる。カメラ固定型HMDでは、カメラパラメーターCPについて、HMD101の製造時の設計値を固定値として用いた上で、キャリブレーションによって最適化が実行される。最適化されるカメラパラメーターCPとしては、カメラ60の焦点距離およびカメラ60の主点位置(撮像画像の中心位置)である。カメラ固定型HMDでは、最適化される変換パラメーターとして、右光学像表示部26および左光学像表示部28のそれぞれのX,Y,Z軸のそれぞれの回転パラメーターおよび並進パラメーターを最適化する。
カメラ可動型HMDでは、カメラパラメーターCPについては、必ずしも最適化を行なう必要はない。カメラ可動型HMDでは、光学像表示部26、28に対してカメラ60が可動であるため、カメラパラメーターのずれよりも変換パラメーターのずれがAR画像の表示に大きく影響し得ることから、変換パラメーターを優先的に最適化するためである。
D−4.変形例4:
第1実施形態では、表示設定部165は、位置合わせを促す文字画像を右光学像表示部26に表示させたが、使用者に位置合わせを促す方法としては、種々変形可能である。例えば、表示設定部165は、「位置がずれています」の音声を、イヤホン32,34を介して出力することで、使用者に位置合わせを促してもよい。また、文字画像についても種々変形可能であり、表示設定部165は、文字画像に代えて、位置ずれを補正する方向を表す矢印の画像を、右光学像表示部26に表示させてもよい。
他の実施形態では、使用者に撮像までの時間を報知する方法として、種々変形可能である。例えば、表示設定部165は、撮像までの時間を表す数字を音声として、イヤホン32,34を介して出力することで、使用者に撮像までの時間を報知してもよい。また、表示設定部165は、例えば、カウントダウンの際に、「3」という数字のみを右光学像表示部26に表示させることで、使用者の撮像までの時間を報知してもよい。また、表示設定部165は、棒線を右光学像表示部26に表示させて、撮像までの時間の長さを表現するように、時間の経過と共に棒線の長さを減少させてもよい。
D−5.変形例5:
第1実施形態では、右光学像表示部26および左光学像表示部28のそれぞれについて、第1設定モードでは、2回のアライメントを実行することで、キャリブレーションが実行されたが、アライメントの回数については、種々変形可能である。アライメントの回数を増やすことで、ヤコビ行列を用いた各パラメーターの最適化において、より精度の高いキャリブレーションを実行するためのパラメーターが設定される。以下では、パラメーターの最適化の一例について説明する。
アライメントの回数をAとし、実物マーカーMK1,MK2の特徴要素(例えば、円の中心)の数をnとする。カメラ60と画像表示部とのペア(第1実施形態ではカメラ60と右と左のいずれかの光学像表示部26、28とのペア)について調整されるべきパラメーターの数をmとすると、最適化されるべきパラメーターの数はMであり、下記の式(22)を満たす。
それぞれの繰り返しについて、最適化の疑似コードは、以下の通りになる。まず、それぞれのアライメントについて、カメラ60と右光学像表示部26とのペアおよびカメラ60と左光学像表示部28とのペアについて、ヤコビ行列Jsを計算する。このヤコビ行列Jsは、2n×M行列として表すことができる。次に、2n×1の残差行列esを計算する。以上をA個のアライメントのそれぞれについて実施する。
次に、ヤコビ行列Jsを、4n×Mの大きさの行列Jへとマージする。残差行列esを連結して、4n×1の行列eを生成する。行列eの要素は式(12)で表わされ得る。そして、選択されたパラメーターの増加値dpを計算する。
式(23)におけるBは、修正行列であり、式(23)におけるtranspose(J)*Jがうまく調整されていない場合の収束問題を回避するために用いられる。なお、上記式において、「inverse()」はかっこ内の行列の逆行列を意味し、「transpose()」は、かっこ内の行列の転置行列を意味する。次に、パラメーターpについて、式(24)のように更新する。
更新されたパラメーターpが、終了条件を満たす場合には、最適化を終了し、終了条件を満たさない場合には、繰り返し、最適化を行なう。
D−6.変形例6:
上記実施形態では、パラメーター設定部167は、カメラパラメーターCPも最適化により導出したが、製造時の設計値からのばらつきが少ない場合には、カメラパラメーターCPについては設計値を設定し、カメラ60と光学像表示部26,28との間の空間関係だけを導出してもよい。この変形例のHMD100では、最適化するパラメーターの数が少なくなる。また、製造上、ばらつきの少ないパラメーターに対して、設計値を代入することで、コスト関数Eをより小さくするパラメーターの最適化を行ないつつ、パラメーターを最適化するための時間を短くできる。
上記実施形態では、右光学像表示部26に表示されるマーカーと左光学像表示部28に表示されるマーカーとは、同じマーカー画像IMGであったが、マーカー画像IMGおよび実物マーカーMK1,MK2については、種々変形可能である。例えば、右光学像表示部26と左光学像表示部28とのそれぞれに表示されるマーカーの画像は、異なるマーカーの画像であってもよい。また、マーカー画像IMGおよび実物マーカーMK1,MK2は、導出されるパラメーターの精度に応じて、種々変形可能である。例えば、実物マーカーMK1に含まれる円の数は、10個に限られず、10個よりも多くてよいし、10個よりも少なくてもよい。また、実物マーカーMK1に含まれる複数の特徴点は、円の中心でなくてもよく、単に三角形の重心であってもよい。また、実物マーカーMK1の内部に並行でない複数の直線が形成されて、直線の交点が複数の特徴点として特定されてもよい。また、マーカー画像IMGと実物マーカーMK1,MK2とは、異なるマーカーであってもよい。マーカー画像と実物マーカーとを重ねる場合に、どの部分を重ね合わせるのかが使用者に認識される範囲で、マーカー画像と実物マーカーとについては、種々変形可能である。例えば、矩形状のマーカー画像に対して、正円の実物マーカーの中心をマーカー画像の中心に合わせるような位置合わせであってもよい。
上記実施形態では、カメラ60のカメラパラメーターCPが最適化される場合に、焦点距離(Fx,Fy)と、カメラ主点位置(撮像画像の中心位置)(Cx,Cy)と、が最適化されたが、これらに代えて、またはこれらとともに、カメラ60のカメラパラメーターCPとして歪係数を最適化してもよい。
D−7. 変形例7:
第1実施形態において定義された式(15)のコスト関数に、以下の付加的な制約条件を加えてもよい。使用者USの目視によるアライメントは、それぞれの光学像表示部26,27に対して別々に行われることから、そのアライメントエラーは、必ずしも同じではない。このため、左および右の光学像表示部26、28に対するカメラ60の2つの並進のうち、Ty成分の推定が光学像表示部26,28の間で大きく異なることがあり得る。2つのTy成分が大きく異なる場合には、ユーザーが立体視の融合問題を経験する。カメラ60と光学像表示部26、28との間の並進Tyの最大の差が所定有限値であることから、左右のTy差の絶対値の関数として下記式(25)のように定義する関数を式(15)に加えてもよい。式(25)を式(15)に加えた場合には、式(15)は、下記の式(26)のように表される。
ここで、式(26)に含まれる要素は、下記の式(27)ないし式(29)で表される通りである。
上記式(28)および式(29)において、「acceptable difference」は許容されるTy差であり、「maximum difference」は、想定されるTy差の最大値である。
式(15)は以下のようになる。
「acceptable difference」と、「maximum difference」とは経験的にセットされ得る。Ty_leftとTy_rightとの差が大きくなればコスト関数Eは増大する。このため、変数p(特に左右のTy_left、Ty_right)が要求範囲内に収まるように強いられながら、コスト関数Eはグローバルミニマムに近づくことになる。最適化計算においては、新しいロウ(row:行列の横の並び)がヤコビ行列Jに追加され、e行列が最適化の各繰り返しステップで生成される。上記した関数から計算された誤差は、e行列の最後に追加される。ヤコビ行列Jにおける新しいロウは、Ty_leftとTy_rightとを除いて、すべてのパラメーターについてゼロ値を取る。また、これら2つのパラメーターに対応するエントリー(初期値)は、それぞれ1および−1にすればよい。
本発明は、上記実施形態や変形例に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態、変形例中の技術的特徴は、上述の課題の一部または全部を解決するために、あるいは、上述の効果の一部または全部を達成するために、適宜、差し替えや、組み合わせを行なうことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。