初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
一実施形態に係る画像表示装置100は、光ビーコン受信部101と、角膜球位置推定部102と、光ビーコン位置推定部103と、拡張現実表示部104と、を備える。光ビーコン受信部101は、予め定めた対象物の位置に応じて配置された第1光ビーコン(例えば、図2に示す対象物光ビーコン11)から送信される信号であって、第1光ビーコンの識別情報を含む信号を受信する。角膜球位置推定部102は、少なくとも自装置(画像表示装置100;HMD)を装着する装着者の瞳が撮像された画像データから、装着者の瞳に係る領域を検出し、検出された瞳の大きさと形状に基づいて、装着者の角膜球の中心位置を推定する。光ビーコン位置推定部103は、装着者の瞳に反射した第1光ビーコンの像の画像データにおける位置と、推定された角膜球の中心位置と、に基づき、装着者が視認する虚像の表示面における第1光ビーコンの位置を推定する。拡張現実表示部104は、推定された第1光ビーコンの位置に、第1光ビーコンの識別情報に関連付けられた拡張現実に係る画像を、現実の景色に重畳させて表示する。
画像表示装置100は、カメラ等の撮像手段により撮像した、画像表示装置100の装着者の瞳に係る画像データから、当該装着者の瞳の大きさ及び形状(瞳の外形)を計算する。さらに、画像表示装置100は、計算した瞳の大きさ及び形状と、角膜球の表面にて反射した第1光ビーコンの像の画像データにおける位置と、から、眼球の3次元的な幾何モデルを用いることで、装着者からみた第1光ビーコンの虚像のディスプレイ上での位置を計算(推定)する。推定された第1光ビーコンの位置に、当該第1光ビーコンに関連付けられた拡張現実画像(AR画像)を表示することで、画像表示装置100の装着者は、対象物と拡張現実画像が重なっているように視認することができる。即ち、一実施形態に係る画像表示装置100によれば、その装着者から見て、AR画像が対象物に重なるように描画することができる。また、装着者がHMDを装着して固定するたびに行っていた作業(カメラが撮像した画像上の位置と、装着者が見る虚像のディスプレイ上の位置との、対応関係を測定する作業)が不要となり、作業効率を向上させることができる。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、第1の実施形態に係るシステムの全体構成の一例を示す図である。図2を参照すると、ユーザは、画像表示装置であるHMD10を装着している。また、HMD10の装着者のシーン(視野の実像、現実の景色)には、AR画像が重畳される対象物が存在する。また、対象物を取り込むように(対象物の位置に応じて)対象物光ビーコン11−1〜11−4が配置されている。対象物光ビーコン11−1〜11−4は、AR画像を表示する位置を指定するための標識として機能する(ARマーカとして機能する)。なお、以降の説明において、対象物光ビーコン11−1〜11−4を区別する特段の理由がない場合には、単に「対象物光ビーコン11」と表記する。
図2の例では、対象物光ビーコン11は4つで1組となる光ビーコンからなる。なお、光ビーコンとは、予め定められた場所に固定され、可視光や赤外光を発するデバイスである。対象物光ビーコン11をなす光ビーコンは、自身の識別情報(以下、ID(Identification)情報と表記する)を含む検出信号(ビーコン信号)を、予め定めた光パルスのパターン等に発信(光のパルス位置変調等により発信)する。このような光ビーコンを用いた通信は、光空間通信の一形態であり、例えば、JEITA(Japan Electronics and Information Technology Industries Association)により制定された、以下の文献「AV&IT標準化委員会、“CP−1223 可視光ビーコンシステム”、2013年5月」を参照することができる。
光ビーコンの代表的な光源はLED(Light Emitting Diode)であるが、光ビーコンの光源はLEDに限定されない。即ち、光ビーコンの光源は、所定の大きさに収まる輝点を生じさせ、上述の光変調が可能な光源であれば、どのようなものでもよい。また、第1の実施形態では、対象物光ビーコン11を構成する光ビーコンの数を4として説明するが、光ビーコンの数を限定する趣旨ではない。即ち、光ビーコンの数は、3つ以上、5つ以上等他の数でも良い。しかし、3つではAR画像の変形手法に制限が生じ、5つ以上では後述する処理の計算量が増加するので、これらの観点から対象物光ビーコン11を構成する光ビーコンの数は4が望ましい。
以上の観点から、第1の実施形態では、4つの光ビーコンにて1組の対象物光ビーコン11を構成するものとし、予め各対象物光ビーコン11同士の距離は把握されているものとする。
図3は、第1の実施形態に係るHMD10の内部構成の一例を示す図である。図3を参照すると、HMD10は、カメラ部20と、表示部30と、記憶部40と、制御部50と、カメラ制御部60と、ディスプレイ制御部70と、を含んで構成される。図3に示す各部は、内部バス(データ線、制御信号線等)により相互に接続されている。
カメラ部20は、撮像素子21及びカメラレンズ22を含むカメラモジュールである。
表示部30は、光源を含むディスプレイ部31と、レンズ部32と、導光部33と、グラス部34と、を含む表示モジュールである。さらに、グラス部34には、HMD10の装着者の瞳の前方に位置するように配置される半透過ミラー35と、複数のグラス部光ビーコン36−1〜36−4と、が含まれている。なお、以降の説明において、グラス部光ビーコン36−1〜36−4を区別する特段の理由がない場合には、単に「グラス部光ビーコン36」と表記する。また、以降の説明において、対象物光ビーコン11とグラス部光ビーコン36を区別する必要のない場合には、単に「光ビーコン」と表記する。
グラス部光ビーコン36の発する光は、可視光である必要はなく、HMD10の装着者の目の検出波長範囲外、且つ、カメラ部20の撮像素子21の検出波長範囲内の光(例えば、目に悪影響を与え難い波長である近赤外光であり、かつ、目に対する安全光強度以内)であることが望ましい。なお、上述のように、対象物光ビーコン11は、赤外光を発するデバイスとすることができる。つまり、対象物光ビーコン11の発する光は、可視光である必要はなく、HMD10の装着者の目の検出波長範囲外、且つ、カメラ部20の撮像素子21の検出波長範囲内の光(例えば、目への悪影響の少ない波長である近赤外光であり、かつ、目に対する安全光強度以内)であってもよい。但し、対象物光ビーコン11が、不可視光である場合、以降の説明にある、対象物光ビーコン11の視認は出来無いが、カメラ部20の検出波長範囲内であれば、HMD10のグラス部34上のグラス部光ビーコン36と、実際の輝点を配置した実像である対象物光ビーコン11と、の位置関係を検出して、現実の像とAR画像のアライメントを行い、HMD10の装着者ごとに適切なAR画像位置を視野上の指定位置に投影することはできる。また、対象物光ビーコン11やグラス部光ビーコン36の発する光の強度は、網膜に影響を与えない程度に十分低いものとする。
記憶部40は、制御部50の動作に必要なプログラムやデータを記憶する。例えば、記憶部40は、4つの光ビーコンからなる対象物光ビーコン11に関する情報(例えば、ID情報、光ビーコン同士間の距離)と、当該対象物光ビーコン11に関連付けられたAR画像と、を1組とする情報を複数記憶する。また、記憶部40は、4つの光ビーコンからなるグラス部光ビーコン36に関するID情報を記憶する。あるいは、記憶部40は、カメラ部20のパラメータである、カメラレンズ22の焦点距離や撮像素子21の画素ピッチ等の情報を記憶する。さらに、記憶部40は、眼球の幾何モデルのパラメータである、瞳の半径、角膜球の半径、瞳の中心から角膜球の中心までの長さ等の情報を記憶する。さらに、記憶部40は、グラス部光ビーコン36により囲まれた面における光ビーコンの位置と、虚像のディスプレイにおける光ビーコンの位置と、の対応のテーブル情報を記憶する。
制御部50は、CPU(Central Processing Unit)等の演算装置により構成され、記憶部40から各種プログラムを読み出し、当該プログラムを実行することで種々の機能を実現する。制御部50は、光ビーコン受信部51と、角膜球位置推定部52と、光ビーコン位置推定部53と、拡張現実表示部54と、を含んで構成される。これら各部の詳細は後述する。また、制御部50は、HMD10に搭載されたコンピュータに、そのハードウェアを用いて、後に詳述する各処理を実行させるコンピュータプログラムにより実現することもできる。
制御部50は、カメラ制御部60及びディスプレイ制御部70に動作を指示する。また、制御部50は、記憶部40に対するアクセス(データの読み出し、データの書き込み)を行う。
カメラ制御部60は、カメラ部20により撮像された画像データを取り込み、記憶部40に書き込む。
ディスプレイ制御部70は、記憶部40から画像データを読み出し、ディスプレイ部31に出力する。
図4は、第1の実施形態に係るHMD10の平面図(a)と正面図(b)の一例示す図である。図4(a)を参照すると、ディスプレイ部31の光源から照射された光は、レンズ部32と導光部33を通過し、半透過ミラー35に到達する。半透過ミラー35に到達した光は、半透過ミラー35にて反射する。なお、導光部33は中空の管路でも良いし、光ファイバケーブルの束であっても良い。また、半透過ミラー35の透過率は、装着者の視野を妨げず、且つ、HMD10が投射する虚像が認識できる範囲の所定値であり、透過率は50%に制限されない。
図4(a)に示すように、半透過ミラー35は、HMD10の装着者の目の前に配置される。そのため、HMD10の装着者は、半透過ミラー35を透過するシーン(視野の実像、景色の実像)に重なる虚像を視認できる。つまり、HMD10の装着者は、シーンに重なる虚像のディスプレイ(虚像の表示面;HMD10の装着者が、AR画像が表示されていると認識する表示面)を、あたかも実在する物として認知できる。即ち、装着者が視認する虚像の範囲が、虚像のディスプレイである(図4(a)参照)。
撮像素子21とカメラレンズ22を含むカメラ部20は、装着者の目(角膜部を含む眼球)がカメラ部20の画角に入るように固定されている。カメラ部20が撮像する画像は、眼球の角膜が凸面鏡に相当し、装着者の瞳と角膜表面で反射する対象物光ビーコン11の像の2つが、同時にピントが合う程度に被写界深度が設定されている。換言すると、眼球の角膜は、焦点距離の極めて短い凸面鏡(凹レンズと同様の働き)として働くので、角膜表面で反射された対象物光ビーコン11の像にピントが合うように設定されたカメラレンズ22に必要な後方被写界深度は、カメラレンズ22から対象物光ビーコン11までの光線路におけるピント位置から対象物光ビーコン11までの距離より極めて短い。HMD10の装着者の瞳と、角膜表面で反射されたシーン中にある光ビーコンと、は同時に十分な分解能にて撮像される(図5参照)。
グラス部光ビーコン36は、半透過ミラー35を囲うようにグラス部34に配置された一組の光ビーコンである(図4(b)参照)。即ち、グラス部光ビーコン36と、シーン中に配置された対象物光ビーコン11は、物理的に異なる構成である。
[動作の説明]
次に、第1の実施形態に係るHMD10の動作について説明する。なお、HMD10の装着者は、シーン中の対象物を視認すると、対象物光ビーコン11も視認することになる(装着者の視界に対象物光ビーコン11も入る)。
装着者が対象物光ビーコン11を視認した状態で、HMD10のカメラ部20が撮像する画像には、装着者の瞳にて反射した対象物光ビーコン11とグラス部光ビーコン36それぞれの像が写る。例えば、図5に示すように、カメラ部20が撮像する画像には、装着者の瞳で反射された対象物光ビーコン11とグラス部光ビーコン36の像が存在する。
なお、瞳での光の反射は角膜表面での反射であって、角膜表面は曲面であるため、瞳で反射した複数の光ビーコンの像の位置関係は、光ビーコンを平面に投影した位置関係とは異なり歪んだものとなる。以降、カメラ部20が撮像した画像の光ビーコンの像の位置から、装着者が視認している虚像のディスプレイとシーンの中の対象物との位置関係の算出動作について説明する。
初めに、図6を参照しつつ、上記算出動作全体を説明する。
HMD10は、動作を開始すると、図6に示す各種処理を実行する前に、HMD10のカメラ部20は一定周期にて撮像を繰り返し、撮像により得られる画像データをカメラ制御部60に出力する。カメラ制御部60は、取得した画像データを記憶部40に書き込み、1フレームの書き込みが完了するごとに、制御部50(より詳細には、光ビーコン受信部51と角膜球位置推定部52)に、画像データの書き込み完了を通知する。
上記通知を受けた光ビーコン受信部51と角膜球位置推定部52のそれぞれは、光ビーコン受信処理と角膜球位置推定処理を実行する(ステップS01、S02)。上記2つの処理が終了すると、光ビーコン位置推定部53が、光ビーコン位置推定処理を実行する(ステップS03)。その後、拡張現実表示部54が、AR画像描画処理を実行する(ステップS04)。
[光ビーコン受信部の動作]
光ビーコン受信部51は、予め定めた対象物の位置に応じて配置された光ビーコンから送信される信号であって、光ビーコンの識別情報を含む信号を受信する手段である。具体的には、光ビーコン受信部51は、カメラ部20が撮像した画像データを解析することで、光ビーコンが発信したIDを読み取り、画像データ中の装着者の瞳で反射した光ビーコンの存在を検出する手段である。
図7は、光ビーコン受信部51の動作の一例を示すフローチャートである。
ステップS101において、光ビーコン受信部51は、カメラ制御部60から1フレームの書き込み完了の通知を受けると、記憶部40に書き込まれている画像データから検出信号発信領域を探知する。検出信号発信領域とは、予め定めた検出信号のパターンと同じパターンにて輝度が変化している領域である。光ビーコン受信部51は、カメラ部20が撮像した予め定めた所定数のフレームの画像データを比較することで上記検出信号発信領域を探知する。光ビーコン受信部51は、上記検出信号発信領域(検出信号と同じパターンにて輝度が変化している領域)を探知した場合に、当該領域を光ビーコンの像の候補(以下、光ビーコン候補と表記する)に設定する。
光ビーコン受信部51は、取得した全ての光ビーコン候補に対し、後述する信号の復元処理と誤り検出処理を適用したか否かを判定する(ステップS102)。
全ての光ビーコン候補に対して、信号復元処理等が終了していれば(ステップS102、Yes分岐)、光ビーコン受信部51は、ステップS107、S108に係る処理を実行する。信号復元処理等を行っていない光ビーコン候補が存在すれば(ステップS102、No分岐)、光ビーコン受信部51は、複数の光ビーコン候補から1つの候補を選択し、当該選択した光ビーコン候補の輝度変化のパターンに対して復調処理を行って信号を復元し、当該復元した信号に対する誤り検出処理を行う(ステップS103)。なお、信号の復元の結果、各光ビーコンのID情報が得られる。
光ビーコンに用いられる変調方式には、ベースバンド−パルス位置変調等が存在する。また、当該変調方式の復調では、例えば、光のパルス幅とパルス同士の間隔を測定することで、基準となる時間間隔と当該時間間隔における光のパルスの位置(時刻)を特定し、対応する2値の値(0/1情報)を当てはめてデータ列を得ることが行われる。その上で、予め定められたフレーム構造に基づき、ID情報と誤り検出符号が復元される。
光ビーコン受信部51は、先に取得したデータ列から誤り検出符号を計算すると共に、復元した誤り検出符号と比較することで、復元した信号における誤りの有無を判定する。なお、可視光通信にて通常用いられる変調方式として、4値パルス位置変調(4PPM;4 Pulse Position Modulation)が挙げられる。当該方式にて変調された信号を復調するために、通常、光のパルス幅と間隔が検出される。
さらに、4PPMによる変調方式には、サブキャリアを重畳する方式と重畳しない方式が存在する。第1の実施形態では、受信素子として利用するイメージセンサは、通常、サブキャリアの周波数で信号を分割するアナログ回路が存在しないことと、又、レンズによりセンサ画素毎に入射光を分離しているため干渉光の影響が小さいこと、を考慮し、サブキャリアを重畳しない方式を使用する。但し、種々の条件(例えば、消費電力やコスト等)が整えば、サブキャリアの周波数よりも十分高いフレームレートに対応したイメージセンサを使用することで、サブキャリアを重畳する4PPMによる変調方式を用いることもできる。なお、サブキャリアを重畳しない4PPM変調方式は、IrDA(Infrared Data Association)のバージョン1.1のFIR(Fast Infrared)においても採用されている。
上述のように、光ビーコン受信部51は、光信号を復調することで取得したデータ列(0/1のデータ列)に、予め定められたフレーム構造を当てはめることで、光ビーコンのID情報を復元する。ID情報の復元に用いるフレーム構造は、文献「上野 秀樹、佐藤 義之、片岡 敦、“可視光IDシステム”、東芝レビュー Vol.62 No.5、2007年」の図5を参照することができる。
第1の実施形態にて使用する誤り検出符号は、可視光通信にて通常用いられるCRC(Cyclic Redundancy Check)を用いるものとする。誤り検出符号を使用しなくともよいが、光空間通信の規格で誤り検出符号の使用が必須である点を考慮し、第1の実施形態では、誤り検出符号を使用するものとする。
光ビーコン受信部51は、光ビーコン候補から誤りが検出されたか否かを判定(ステップS104)し、誤りが検出された場合(ステップS104、Yes分岐)に、ステップS102に戻り処理を継続する。
光ビーコン受信部51は、光ビーコン候補について誤りが検出されなかった場合(ステップS104、No分岐)に、当該光ビーコン候補(検出信号発信領域)を光ビーコンの像であると認定し、当該領域の重心位置を計算する。光ビーコン受信部51は、計算した重心位置を、カメラ部20が撮像した画像データにおける光ビーコン(光ビーコンの像)の座標位置に定める(ステップS105)。
光ビーコン受信部51は、受信した(復号した)ID情報と、上記の座標位置を関連付けて記憶部40に格納(ステップS106)し、ステップS102の処理に戻る。
光ビーコン受信部51は、全ての光ビーコン候補に関し、ID情報を取得するための処理が終了(ステップS102、Yes分岐)すると、光ビーコン候補の中に光ビーコンと判定した領域が存在するか否かを判定する(ステップS107)。
光ビーコンの像と判定した領域があれば(ステップS107、Yes分岐)、光ビーコン受信部51は、光ビーコン位置推定部53に、光ビーコン受信完了を通知する(ステップS108)。光ビーコンの像と判定した領域がなければ(ステップS107、No分岐)、光ビーコン受信部51は処理を終了する。
以上のように、対象物光ビーコン11やグラス部光ビーコン36が送信する信号は、所定の方式により変調されており、光ビーコン受信部51は、1フレームに相当する複数の画像データを解析することにより、光ビーコンが送信する信号を復調すると共に、光ビーコンの識別情報を取得する。
[角膜球位置推定部の動作]
角膜球位置推定部52は、少なくともHMD10を装着する装着者の瞳が撮像された画像データから、当該装着者の瞳に係る領域を検出し、検出された瞳の大きさと形状に基づいて、装着者の角膜球の中心位置を推定する手段である。より具体的には、角膜球位置推定部52は、カメラ部20により撮像された画像データから、瞳を検出し、その大きさと形状に基づき角膜球の中心位置を計算する。なお、以降の説明において、角膜球等の位置は、カメラ部20のカメラレンズ22の主点を起点(原点)とする。
カメラにより撮像された画像における瞳の外形(形状及び大きさ)と、眼球の位置及び向きの関係は、公知の事実であり、例えば、文献「C.Nitschke, A.Nakazawa and H.Takemura, “Display−Camera Calibration from Eye Reflection”, Proc. International Conference Computer Vision(ICCV)、pp.1226−1233、2009年」に記載されている。あるいは、上記の事実は、文献「中澤 篤志、クリスティアン ニチュケ、“角膜イメージング法を用いたパララックス誤差に頑健な注視点推定方法”、第19回画像センシングシンポジウム、2013年6月」にも記載されている。
図8は、実際の眼球の断面を模した模式図(図8(a))と眼球の幾何モデル(図8(b))の一例を示す図である。図8(a)を参照すると、実際の眼球は角膜部分が出っ張っているので、幾何モデルによる近似の際、眼球本体と角膜球の2つの球体が用いられる(図8(b)参照)。
なお、眼球の幾何モデルのパラメータは固定値を用いるものとする。より具体的には、眼球の幾何モデルは、複数のパラメータにより近似され、各パラメータには固定値が用いられる(rL=5.6mm、rC=7.7mm、dLC=5.6mm;図8(b)参照)。なお、実際の眼球の大きさには個人差があるが、眼球の幾何モデルのパラメータに固定値を用いたとしても、眼球の表面反射解析結果の精度は十分な精度を有することが知られている。
図9は、眼球の位置及び向きと、瞳の投影像の関係を弱透視投影モデルにより示す図である。なお、本来、透視投影モデルは非線形であり、弱透視投影モデルは透視投影モデルを線形に近似した投影モデルである。弱透視投影モデルは、コンピュータビジョンの分野にて活用される手法である。
図9を参照すると、カメラ部20が撮像する画像は、図9に示す画像面201に投影される画像に一致する。また、画像面201に投影される瞳の投影像202は、長軸rmax、短軸rmin、中心iL、回転角Φで示される楕円形状となる。なお、弱透視投影モデルを用いたとしても、眼球の表面反射解析結果の精度に関しては、十分な精度を有することが確認されている。
角膜球位置推定部52は、カメラ部20が撮像した画像に写る瞳の形状及び大きさを計算する。角膜球位置推定部52は、当該計算に先立ち、瞳の外形を検出する必要がある。その際、瞳の一部が、瞼やまつ毛により隠れている場合が想定されるが、そのような場合であっても、瞳の外形を精度良く検出方法が存在する。例えば、以下の文献「辻 徳生、柴田 慎吾、長谷川 勉、倉爪 亮、“視線計測のためのLMedSを用いた虹彩検出法”、画像の認識・理解シンポジウム(MIRU2004)、2004年7月」に記載された方法を用いることができる。
角膜球位置推定部52は、瞳の外形を検出する際、以下の展開された楕円の式(1)を使用する。
Ax2+Bxy+Cy2+Dx+Ey+F=0 ・・・(1)
ただし、4AC−B2>0
角膜球位置推定部52は、最小メジアン法(LMedS;Least Median Square)を用いて瞳の外形を検出する。なお、上記最小メジアン法は、ランダムに幾つかのサンプルを抽出し、最小二乗法(LSM;Least Squares Method)に当てはめることを繰り返し、全測定値における二乗誤差の中央値が最も小さいときの推定を正しい推定とみなす手法である。その詳細は、文献「P.J.Rousseeuw and A.M.Leroy, “Robust Regression and Outlier Detection”, Wiley, New York、1987年」に記載されている。
角膜球位置推定部52は、最小メジアン法に従い、上記式(1)で表せる楕円の係数を求めるために代入する点として、ノイズを含む複数の瞳の外形の候補点から、例えば、ランダムに5点を選択する。そして、角膜球位置推定部52は、係数を評価する値には、求めた係数で表せる楕円と全ての候補点との距離の二乗の中央値を用いる。
次に、角膜球位置推定部52は、楕円の展開された式の係数から、楕円のパラメータを以下の式(2)〜(5)により求める。
中心iLのx座標x0=(BE−2CD)/(4AC−B2) ・・・(2)
中心iLのy座標y0=(BD−2AE)/(4AC−B2) ・・・(3)
回転角Φ=(1/2)tan−1(B/(A−C)) ・・・(4)
(長軸rmax、 短軸rmin)=√((2(A・x02+B・x0・y0+C・y02−F))/(A+C±(B/sin2Φ))) ・・・(5)
但し、大きい値をrmax、小さい値をrminとする。
次に、角膜球位置推定部52は、上記楕円のパラメータを使用して、眼球の姿勢(位置、方向)を計算する。角膜球位置推定部52は、瞳の投影像202の長軸rmaxと、眼球の3次元的な幾何モデルのパラメータであるパラメータrLと、カメラ部20の焦点距離fと、を用いて、角膜球203の中心位置と画像面201の間の距離dを計算する(式(6)参照)。
d=f・rL/rmax ・・・(6)
また、角膜球位置推定部52は、瞳の投影像の長軸rmaxと短軸rminを用いて、瞳の奥行き方向の傾きτを計算する(式(7)参照)。
τ=±arccos(rmin/rmax) ・・・(7)
さらに、角膜球位置推定部52は、瞳の投影像の回転角Φと、瞳の奥行き方向の傾きτと、から視線ベクトルgを計算する(式(8)参照)。
g=[sinτsinΦ−sinτcosΦ−cosτ]T ・・・(8)
なお、式(8)における「T」は、式(8)の行列が転置行列であることを示す。
瞳の中心点Lは、瞳の投影像の中心iLと、カメラ部20の焦点距離fと、角膜球203の中心点Cと画像面201との間の距離dと、から計算することができる。また、角膜球203の中心点Cは、瞳の中心点Lと、視線ベクトルgと、弱透視投影モデルで使用されるパラメータであって、眼球の3次元的な幾デルのパラメータであるパラメータdLCと、から計算することができる。
次に、角膜球位置推定部52の動作の詳細を、図10に示すフローチャートを参照しつつ説明する。
ステップS201において、角膜球位置推定部52は、カメラ制御部60から1フレームの書き込み完了の通知を受信すると、記憶部40に書き込まれている画像データを2値化(白/黒)する。このような処理により、瞳や影が写った暗い画素と、強膜や肌が写った明るい画素と、が区別可能となる。
なお、2値化の方法には、画像の全画素の輝度分布から黒が所定の割合になるような閾値を計算し、それぞれの画素を閾値と比較する方法を採用することができる。あるいは、任意の画素から隣り合う画素の輝度を順番に比較して、その差が予め決めた所定値よりも、明るくなる方に大きければ白と、暗くなる方に大きければ黒と、判定する方法を採用してもよい。
ステップS202において、角膜球位置推定部52は、2値化された画像に対して、収縮処理と膨張処理により、オープニング処理を行う。なお、上記収縮処理、膨張処理は、画像処理における一手法であり、2値化された白黒画像に対する処理である。具体的には、膨張(Dilation)処理とは、ある画素の周辺に1画素でも白い画素があれば白に置き換える操作を行う処理である。収縮(Erosion)処理とは、周辺に1画素でも黒い画素があれば黒に置き換える操作を行う処理である。
角膜球位置推定部52は、同じ回数分、上記膨張・収縮処理を繰り返すことで、オープニング処理を実行する。
ステップS203において、角膜球位置推定部52は、オープニング処理が終了した画像データの中に暗い画素(画素値が黒)の領域が存在するか否かを判定する。暗い画素の領域が存在しない場合(ステップS203、No分岐)、角膜球位置推定部52は、装着者が目を閉じていた等の理由で瞳が写っていないと判断し、処理を終了する。
暗い画素の領域が存在する場合(瞳が画像データに写っていると判定された場合;ステップS203、Yes分岐)、角膜球位置推定部52は、2値化された画像におけるそれぞれの境界画素の座標を取得する(ステップS204)。具体的には、角膜球位置推定部52は、2値化された画像にエッジ検出処理を行い、暗い画素の領域と明るい画素の領域の境界となる画素を抽出することで、上記境界画素の座標を取得する。
上記取得された境界画素は、瞳の外周(角膜と強膜の境界)にある画素の候補となる。また、角膜球位置推定部52がエッジ検出処理を実行すると、瞳の外周上にある画素と、影の領域の外周上にある画素と、が混在して抽出される。また、ここでの座標は、抽出された個々の画素の座標を意味する。
ステップS205において、角膜球位置推定部52は、最小メジアン法(LMedS)を用いて、抽出した境界画素から瞳の外形に相当する楕円の式をなす各係数の計算を行う。
ステップS206において、角膜球位置推定部52は、楕円の式の係数が計算されたか否かを判定し、係数が計算できない場合(係数が見つからない場合)には、処理を終了する(ステップS206、No分岐)。係数が計算できた場合(ステップS206、Yes分岐)、角膜球位置推定部52は、角膜球の中心点Cを計算する(ステップS207〜S212)。
初めに、角膜球位置推定部52は、瞳の投影像の中心iLの位置、長軸rmax、短軸rmin、回転角Φを、楕円の式の係数と、楕円のパラメータを求める式と、カメラ部20の撮像素子21の画素ピッチと、に基づき計算する(ステップS207)。
次に、角膜球位置推定部52は、瞳の中心Lと画像面との距離dを、長軸rmaxと眼球の3次元的な幾何モデルのパラメータであるパラメータrLとカメラ部の焦点距離fと、を用いて計算する(ステップS208)。
次に、角膜球位置推定部52は、瞳の中心Lの位置を、中心iLの位置と、カメラ部の焦点距離fと、瞳の中心Lと画像面との距離dと、を用いて計算する(ステップS209)。
次に、角膜球位置推定部52は、瞳の奥行方向の傾きτを、長軸rmaxと短軸rminと、を用いて計算する(ステップS210)。
次に、角膜球位置推定部52は、視線ベクトルgを、瞳の投影像の回転角Φと瞳の奥行方向の傾きτと、を用いて計算する(ステップS211)。
次に、角膜球位置推定部52は、角膜球の中心点Cを、瞳の中心Lの位置と、視線ベクトルgと、眼球の幾何モデルのパラメータdLCと、を用いて計算する(ステップS212;図9参照)。
角膜球位置推定部52は、角膜球の中心点Cの計算が終了すると、当該計算結果を記憶部40に書き込むと共に、光ビーコン位置推定部53に対し、眼球位置推定完了を通知する(ステップS213)。
以上のように、角膜球位置推定部52は、画像データが生成される際の焦点位置(カメラレンズ22の主点から焦点距離f離れた位置)における画像面201に投影される装着者の瞳の大きさ及び形状を、楕円を表す式の係数により特定する。その後、角膜球位置推定部52は、瞳の中心Lと画像面との距離dを、長軸rmaxと眼球の3次元的な幾何モデルのパラメータであるパラメータrLとカメラ部の焦点距離fと、を用いて計算する。次に、角膜球位置推定部52は、瞳の中心Lの位置を、中心iLの位置と、カメラ部の焦点距離fと、瞳の中心Lと画像面との距離dと、を用いて計算する。その後、角膜球位置推定部52は、装着者の瞳を示す楕円の長軸rmax及び短軸rminの長さを用いて、装着者の瞳の傾きτを計算する。また、角膜球位置推定部52は、計算された装着者の瞳の傾きτと、画像面201に投影される装着者の瞳の回転角Φと、に基づき、装着者の瞳が向く方向を示す視線ベクトルgを計算する。さらに、角膜球位置推定部52は、計算された視線ベクトルgと、眼球の幾何モデルの所定のパラメータdLCと、装着者の角膜球の中心位置と画像面との間の距離dと、に基づき、装着者の角膜球の中心点C(中心位置)を推定する。
[光ビーコン位置推定部の動作]
光ビーコン位置推定部53は、HMD10の装着者の瞳に反射した光ビーコンの像の画像データにおける位置と、推定された角膜球の中心位置と、に基づき、装着者が視認する虚像の表示面(虚像のディスプレイ)における光ビーコンの位置を推定する手段である。より具体的には、光ビーコン位置推定部53は、光ビーコン受信部51が検出した光ビーコン(カメラ部20が撮像した画像データの中の装着者の瞳に反射した光ビーコン)の像の位置と、角膜球位置推定部52が推定した角膜球の中心点C(カメラ部20が撮像した画像データの中の角膜球の中心点)と、に基づき、HMD10の装着者が視認する虚像のディスプレイと光ビーコンの位置関係を計算する。
図11は、カメラ部20が撮像した画像データにおける光ビーコンの像の位置と、装着者が視認する光ビーコンの方向と、の関係を説明するための図である。初めに、光ビーコン位置推定部53は、角膜球表面の光ビーコンの像の位置を、カメラ部20に関するパラメータである焦点距離fと、カメラ部20が撮像した画像データの中の光ビーコンの像の位置と、角膜球の中心点Cと、角膜球の半径rC(図8(b)参照)と、から計算する。
図11に示すように、角膜球表面の反射における反射角は入射角と同じなので、光ビーコン位置推定部53は、カメラ部20のカメラレンズ22の主点Oと角膜球表面の光ビーコンの像を結ぶ直線211と、角膜球の中心点Cと角膜球表面の光ビーコンの像を結ぶ直線212から、角膜球表面の光ビーコンの像と現実の光ビーコンとを結ぶ直線gの向き、を計算する。なお、光ビーコンが対象物光ビーコン11及びグラス部光ビーコン36のいずれであっても、4つの光ビーコンが1組となるので、角膜球表面の光ビーコンの像と光ビーコンを結ぶ直線gは、4本が1組となって計算される。
HMD10の装着者が視認する光ビーコンの方向を求めるため、角膜球の中心点Cと、光ビーコンとを結ぶ直線213が必要となる。角膜球表面の光ビーコンの像と光ビーコンとを結ぶ直線上にある、光ビーコンの位置を特定するために、光ビーコン位置推定部53は、予めわかっている光ビーコン同士の距離を利用する。
図12は、角膜球表面の光ビーコンの像と、光ビーコンと、を結ぶ直線g上にある光ビーコンの位置関係の一例を示す図である。第1の実施形態では、4つの光ビーコンが1組となっており、且つ、予め光ビーコン同士の距離は既知の情報であるため、角膜球表面の光ビーコンの像と光ビーコンを結ぶ直線上にて、この距離関係(光ビーコン同士の位置関係)が成立する点が光ビーコンの実際の位置となる。
例えば、図12(a)に示すように、1組の光ビーコンP1〜P4それぞれ同士の距離を、d12、d23、d34、d41と定まっている場合を考える。また、光ビーコンP1〜P4のそれぞれに対応する直線gを、直線g1〜g4と表記する。図12(a)に示す光ビーコン間の距離(d12、d23、d34、d41)が成立する光ビーコンP1〜P4の位置は以下のように求めることができる。
初めに、光ビーコン位置推定部53は、直線g1上の光ビーコンP1が取り得る位置であって、眼球から最も遠い点p1maxを、以下のように計算する。光ビーコン位置推定部53は、直線g1上の任意位置に点p1を仮定し、p1と直線g2との最短距離dp1−g2minを計算する。
次に、光ビーコン位置推定部53は、計算した最短距離dp1−g2minと距離d12を比較する。比較の結果、最短距離dp1−g2minの方が一定値以上大きければ、光ビーコン位置推定部53は、点p1の位置を眼球から遠くなる位置に仮定(予め定めた所定の距離の分遠い位置に仮定)し、再び最短距離dp1−g2minを計算する。
一方、最短距離dp1−g2minの方が一定値以上小さければ、光ビーコン位置推定部53は、点p1の位置を眼球に近くなる位置に仮定(予め定めた所定の距離の分近い位置に仮定)し、再び最短距離dp1−g2minを計算する。
最短距離dp1−g2minと距離dp12の差が予め定めた範囲内であれば、光ビーコン位置推定部53は、当該p1の位置をp1maxと定める。
次に、光ビーコン位置推定部53は、直線g1上の点p1が、p1max上に存在するものと仮定する。その上で、光ビーコン位置推定部53は、点p1を起点して距離d12の位置に存在する、直線g2上の点p2を計算する。
その際、点p1から距離d12離れた位置であって、直線g2上の点p2は2つ存在する可能性がある(瞳に近づく方向の1点と瞳から遠くなる方向の1点;図12(b)参照)。次に、光ビーコン位置推定部53は、点p2から距離d23の位置に存在する、直線g3上の点p3を計算する。この場合にも、2つの点p2それぞれに対して、2つの点p3が存在する可能性がある(点p3は4箇所となる可能性がある)。次に、光ビーコン位置推定部53は、点p3から距離d34の位置に存在する、直線g4上の点p4を計算する。この場合にも、4つの点p3それぞれに対して、2つの点p4が存在する可能性がある(点p4は8箇所となる可能性がある)。次に、光ビーコン位置推定部53は、点p4から距離d41の位置に存在する、直線g1上の点p1’を計算する。この場合、8個の点p4それぞれに対して、2つの点p1’が存在する可能性がある(点p1’は16箇所となる可能性がある)。
次に、光ビーコン位置推定部53は、当初仮定した点p1と、当該点p1を元に計算した最大16個の点p1’と、の間の距離dp1−p1’を計算する。計算した全てのdp1−p1’が一定値以上であれば、光ビーコン位置推定部53は、点p1の位置を眼球に近い位置(予め定めた所定値だけ近い位置)に再度、仮定し、距離dp1−p1’の計算と一定値(閾値)との比較を繰り返す。
上記繰り返し処理の結果、光ビーコン位置推定部53は、一定値以下の距離dp1−p1’を検出した場合には、その際の点p1、p2、p3、p4からなる1組を、光ビーコンP1〜P4の位置に定める。
HMD10の装着者が、虚像のディスプレイ越しに対象物を視認すると、グラス部光ビーコン36に囲まれた範囲の中に、虚像のディスプレイの存在を確認できる。さらに、装着者は、虚像のディスプレイの範囲の中に対象物光ビーコン11を視認する。
図13は、HMD10の装着者が視認する虚像のディスプレイ範囲に存在する対象物光ビーコン11の一例を示す図である。
光ビーコン位置推定部53は、装着者から視認した場合の対象物光ビーコン11と重なる(重なるように装着者から視認される)虚像のディスプレイ221上の座標を取得する。その際、光ビーコン位置推定部53は、角膜球の中心点Cと光ビーコンを結ぶ直線(図11に示す直線213)が、グラス部光ビーコン36により囲まれた仮想面222の上を通過する点を計算する。
その後、光ビーコン位置推定部53は、後述のグラス部光ビーコン36により囲まれた仮想面222における位置と、虚像のディスプレイ221における位置と、の対応から計算結果を座標に変換する。
グラス部光ビーコン36により囲まれた仮想面222は、4つのグラス部光ビーコン36の位置から、最小二乗法などにより平面の式を算出し、4つのグラス部光ビーコン36を当該平面に投影した点(投影点)により囲まれる面として計算可能である。
ここで、グラス部光ビーコン36により囲まれた仮想面222における位置と、虚像のディスプレイ221における位置と、の対応に関する情報は、都度計算しても良いし、予め記憶部40にテーブル情報として書き込んでおき、角膜球の中心点Cの位置から選択しても良い。
図4に示すように、HMD10の装着者は、半透過ミラー35にて反射した虚像のディスプレイを視認する。そのため、ディスプレイ部31、レンズ部32、導光部33、半透過ミラー35のそれぞれ寸法や屈折率などの諸特性と、両眼の間隔の個人差等の要因により変化する装着者の眼球とグラス部34との位置関係と、により、装着者が視認するグラス部光ビーコン36により囲まれた仮想面222の位置と虚像のディスプレイ221の位置と、の対応が定まる。
グラス部光ビーコン36により囲まれる仮想面222の位置と虚像のディスプレイ221の位置と、の対応を定める、上記種々の要素のうち、装着者の眼球とグラス部34の位置関係以外の要素は変化しない(固定である)。従って、例えば、グラス部光ビーコン36により囲まれた仮想面222における位置と、虚像のディスプレイ221における位置と、を対応付けたテーブル情報を、記憶部40に書き込んでおくことで、カメラ部20で撮像した画像データから計算した角膜球の中心点Cとグラス部光ビーコン36の位置に基づき、テーブル情報の選択が可能となる。
なお、記憶部40に書き込む上記テーブル情報は、光線追跡シミュレーションにより、グラス部34に対する装着者の眼球の相対的な位置を変化させ、各変化点それぞれを、グラス部光ビーコン36に対する角膜球の中心点Cの位置に関連付けることで作成できる。
図14は、瞳の角膜球の中心点Cと、仮想面における虚像のディスプレイの位置を対応付けるテーブル情報の一例を示す図である。図14(a)を参照すると、テーブル情報には、瞳の中心点Cの仮想面222に対する相対位置に応じた仮想面での虚像のディスプレイの位置(座標)が規定されている。例えば、瞳の中心点Cの位置が図14(a)の1行目の場合には、グラス部光ビーコン36により形成される仮想面222における虚像のディスプレイ221の位置は図14(b)のように規定されている。同様に、中心点Cの位置が図14(a)の2行目の場合には、虚像のディスプレイ221の位置は図14(c)のように規定されている。あるいは、グラス部光ビーコン36による仮想面222に対する角膜球中心点Cの相対位置が、テーブル中の位置の中間位置になる場合(テーブルには登録がない場合)には、テーブル中の最も近い位置を採用しても良いし、中心点Cの相対位置を挟んで距離が近い3点(3次元座標上である為、案分する場合、3点のデータが必要)を案分し、算出しても良い。
次に、光ビーコン位置推定部53の動作を図15、図16を参照しつつ説明する。
図15のステップS301において、光ビーコン位置推定部53は、対象物光ビーコン11の1組が発見されたか否かを判定する。具体的には、光ビーコン位置推定部53は、光ビーコン受信部51からの光ビーコン受信完了に係る通知と、角膜球位置推定部52からの眼球位置推定完了に係る通知と、を受信すると、記憶部40に書き込まれている光ビーコンのID情報(光ビーコン受信部51が受信した光ビーコンのID情報)と、予め登録されているID情報と、を比較する。
比較の結果、光ビーコン位置推定部53は、対象物光ビーコン11が一組発見されると(ステップS301、Yes分岐)、ステップS302以降の処理を実行する。比較の結果、対象物光ビーコン11が発見されなければ(ステップS301、No分岐)、光ビーコン位置推定部53は、処理を終了する。
ステップS302において、光ビーコン位置推定部53は、前ステップと同様にして、グラス部光ビーコン36の1組が発見されたか否かを判定する。グラス部光ビーコン36の組が発見されれば(ステップS302、Yes分岐)、光ビーコン位置推定部53は、ステップS303以降の処理を実行する。グラス部光ビーコン36の組が発見されなければ(ステップS302、No分岐)、光ビーコン位置推定部53は、処理を終了する。
ステップS303において、光ビーコン位置推定部53は、角膜球表面の光ビーコンの像と光ビーコンを結ぶ直線を計算する。その際、光ビーコン位置推定部53は、対象物光ビーコン11とグラス部光ビーコン36それぞれに対して、角膜球表面における光ビーコンの像の位置を計算する。
光ビーコン位置推定部53は、記憶部40に書き込まれている既知の情報(カメラ部20の焦点距離fと、撮像素子21の画素ピッチと、角膜球の半径rC)と、光ビーコン受信部51が記憶部40に書き込んだ情報(カメラが撮像した画像データの中における光ビーコンの像の位置)と、角膜球位置推定部52が記憶部40に書き込んだ情報(角膜球の中心点Cの位置)と、に基づき、角膜球表面における光ビーコンの像の位置を計算する。光ビーコン位置推定部53は、カメラレンズの主点と角膜球表面の光ビーコンの像を結ぶ直線を用いて、角膜球表面の光ビーコンの像と光ビーコンを結ぶ直線の向きを計算する。
次に、光ビーコン位置推定部53は、光ビーコンの位置を計算する(ステップS304;図15参照)。
図16を参照すると、光ビーコン位置推定部53は、一組の光ビーコンのうち、光ビーコンP1と角膜球表面の光ビーコンの像とを結ぶ直線g1上の、任意位置に点p1を仮定し、最短距離dp1−g2minを計算する(ステップS401、S402)。
最短距離dp1−g2minと距離d12の差が一定値(所定値)以上の場合(ステップS403、Yes分岐)には、光ビーコン位置推定部53は、位置をずらした位置に点p1を再仮定(ステップS404)し、再び最短距離dp1−g2minを計算する(ステップS402)。具体的には、最短距離dp1−g2minが一定値以上大きければ、光ビーコン位置推定部53は、点p1の位置を眼球から遠い位置に仮定し、再び最短距離dp1−g2minを計算する。一方、最短距離dp1−g2minが一定値以上小さければ、点p1の位置を眼球から近い位置に仮定し、再び最短距離dp1−g2minを計算する。
距離dp1−g2minと距離d12の差が一定値以下であれば(ステップS403、No分岐)、光ビーコン位置推定部53は、当該点p1の位置をp1maxに設定し、点p1が直線g1上のp1maxに存在すると仮定する(ステップS405)。
ステップS406において、光ビーコン位置推定部53は、上述した方法にて、点p1から点p2、点p2から点p3、点p3から点p4、点p4から点p1’をそれぞれ計算する。その後、光ビーコン位置推定部53は、点p1と、点p1を元に計算した最大16個の点p1’との間の距離dp1−p1’を計算する。
光ビーコン位置推定部53は、全ての距離dp1−p1’のうち、一定値以下の距離dp1−p1’が存在する否かを判定する(ステップS407)。全ての距離dp1−p1’が一定値以上であれば(ステップS407、No分岐)、光ビーコン位置推定部53は、点p1の位置を眼球に近い位置に再び仮定(ステップS408)する。
その後、光ビーコン位置推定部53は、p1の位置と眼球の間の距離が一定値以下であるか否かを判定(ステップS409)し、p1の位置を移動させる余地が残っているか否かを判定する。点p1を移動させることをできれば(ステップS409、No分岐)、光ビーコン位置推定部53は、ステップS406、S407に戻り、距離dp1−p1’の計算と、当該計算値と一定値との比較を繰り返す。
最終的に、一定値以下の距離dp1−p1’が発見できない場合(ステップS409、Yes分岐)には、光ビーコン位置推定部53は、処理を終了する。
一定値以下の距離dp1−p1’が発見された場合(ステップS407、Yes分岐)には、光ビーコン位置推定部53は、当該点p1、p2、p3、p4からなる1組を光ビーコンの位置に設定する(ステップS410)。
以上で、図15のステップS304の処理(光ビーコンの位置を計算する処理)が終了し、上位の処理(図15の処理)に戻る。
光ビーコン位置推定部53は、光ビーコンの組それぞれについて、1組ずつステップS304の処理を繰り返し、組となっている全ての光ビーコンの位置を計算する。計算ができなかった場合には(ステップS305、No分岐)、光ビーコン位置推定部53は、処理を終了する。計算ができた場合には(ステップS305、Yes分岐)、光ビーコン位置推定部53は、角膜球の中心点Cと対象物光ビーコン11とを結ぶ直線を計算する(ステップS306)。
次に、光ビーコン位置推定部53は、グラス部光ビーコン36により囲まれた仮想面222を計算する(ステップS307)。
光ビーコン位置推定部53は、上記ステップS307にて計算した仮想面222にて、角膜球の中心点Cと対象物光ビーコン11を結ぶ直線(ステップS306で計算した直線)が通過する点を計算する(ステップS308)。
光ビーコン位置推定部53は、グラス部光ビーコン36により囲まれた範囲(仮想面222)を、光ビーコンが通過したか否かを判定(ステップS309)し、通過しない場合(ステップS309、No分岐)には処理を終了する。
通過する場合には(ステップS309、Yes判定)、光ビーコン位置推定部53は、角膜球の中心点Cとグラス部光ビーコン36の位置から、装着者の角膜球の中心点(中心位置)Cとグラス部との相対位置を計算する。その後、光ビーコン位置推定部53は、グラス部光ビーコン36により囲まれた仮想面222上の虚像のディスプレイ221上の位置に関する複数のテーブル情報(図14(a)参照)の中から、角膜球の中心点Cとグラス部光ビーコン36の位置に対応付けられたテーブルを1つ選択する(ステップS310)。
次に、光ビーコン位置推定部53は、グラス部光ビーコン36により囲まれた仮想面222を通過する点について、装着者から視認した場合の対象物光ビーコン11と重なる虚像のディスプレイ221上の座標に変換する(座標を計算する;ステップS311)。
上記座標が計算できない場合(ステップS312、No分岐)には、光ビーコン位置推定部53は、処理を終了する。座標が計算できた場合(ステップS312、Yes分岐)には、光ビーコン位置推定部53は、当該計算した座標を、光ビーコンのID情報(光ビーコン受信部51が記憶部40に書き込んだ受信した光ビーコンのID情報)に関連付けて、記憶部40に書き込む。
その後、光ビーコン位置推定部53は、拡張現実表示部54に対し、光ビーコン位置推定完了を通知する(ステップS313)。
以上のように、光ビーコン位置推定部53は、画像データに含まれる装着者の瞳に反射したグラス部光ビーコン36の像の画像データにおける位置に基づき、複数のグラス部光ビーコン36により形成される平面を仮想面222として計算し、仮想面222と装着者の角膜球の中心点C(中心位置)の相対的な位置関係に基づき、仮想面222上での虚像のディスプレイ221の位置を特定する。また、光ビーコン位置推定部53は、画像データに含まれる装着者の瞳に反射した対象物光ビーコン11の像の画像データにおける位置に基づき、対象物光ビーコン11の位置を計算し、計算されたビーコンの位置と装着者の角膜球の中心位置を結ぶ直線を計算し、当該直線が仮想面を通過する通過点の座標を、虚像のディスプレイ221での座標に変換することで、虚像のディスプレイ221における対象物光ビーコン11の位置を推定している。
[拡張現実表示部の動作]
拡張現実表示部54は、推定された対象物光ビーコン11の位置に、対象物光ビーコン11の識別情報に関連付けられた拡張現実に係る画像を、現実の景色(シーン)に重畳させて表示する手段である。より具体的には、拡張現実表示部54は、光ビーコンのID情報に基づき、AR画像を読み出し、HMD10の装着者が視認する虚像のディスプレイ221と光ビーコンの位置関係から、装着者が視認しているシーンの対象物に合致するようにAR画像をディスプレイに描画する。
図17は、拡張現実表示部54の動作の一例を示すフローチャートである。
ステップS501において、拡張現実表示部54は、光ビーコン位置推定部53による光ビーコン位置推定完了の通知を受信すると、受信した光ビーコンのID情報(光ビーコン受信部51が書き込んだID情報)と、虚像のディスプレイ221における座標(光ビーコン位置推定部53が書き込んだ座標であって、装着者が視認した対象物光ビーコン11と重なる座標)と、を記憶部40から読み出す。
その後、拡張現実表示部54は、当該ID情報を検索キーとして、予め記憶部40に格納されているAR画像(上記ID情報に関連付けられたAR画像)を読み出す(ステップS502)。
AR画像は、4辺の長さがd12、d23、d34、d41の四角形と相似形であり、一組の対象物光ビーコン11を頂点とする四角形に、重なるように表示されることを想定した内容になっている。また、装着者が視認した対象物光ビーコン11と重なる、虚像のディスプレイ221における座標で囲まれる四角形は、装着者が対象物を見る角度により形が変化する。そこで、拡張現実表示部54は、当該変化する形に合うように、AR画像の変形画像を計算する(ステップS503)。なお、上記計算は、AR画像の4つの頂点と、装着者から視認した対象物光ビーコン11と重なる虚像のディスプレイ221における4つの座標と、に基づいて行う射影変換である。
その後、拡張現実表示部54は、AR画像の変形画像を記憶部40に書き込み、ディスプレイ制御部70に、画像データをディスプレイ部31へ送り出すことを指示する(ステップS504)。
上記指示を受けたディスプレイ制御部70は、記憶部40から変形したAR画像を読み出し、ディスプレイ部31に出力する。
以上のように、第1の実施形態に係るシステムでは、予め位置関係が把握されている1組の光ビーコンを、HMD10のグラス部34に1組と、シーンに1組以上配置する。その上で、HMD10の装着者がシーンを視認した状態で、HMD10に搭載したカメラ部20が装着者の瞳を撮像する。HMD10は、撮像した画像に写っている、装着者の瞳の外形と、角膜表面に反射した光ビーコンの像の、画像中の位置から、眼球の3次元的な幾何モデルを用いて、装着者が見ている光ビーコンの位置を計算する。その後、HMD10は、その装着者が視認している虚像のディスプレイの位置と、シーンの位置の関係を推定する。即ち、HMD10は、HMD10のグラス部34上のグラス部光ビーコン36と、実際の輝点を配置した実像である対象物光ビーコン11と、の位置関係を検出して、現実の像とAR画像のアライメントを行う。その結果、HMD10の装着者ごとに適切なAR画像位置を視野上の指定位置に投影することができる。
第1の実施形態に係るHMD10は、オプティカルシースルー型(ハーフミラー等を使って実視野とAR画像を重ねて表示する)ヘッドマウントディスプレイ(HMD;Head Mounted Display)を用いて、AR画像の空中像を投影し、HMDの装着者に、AR画像を見せる場合に、シーンと、HMDのグラス部に配置した光ビーコンの機能を有する光源から発され、装着者の角膜表面に反射した光を、HMDに搭載したカメラで撮像する。また、HMD10は、眼球の幾何モデルを用いて、光ビーコンの位置を計算することで、装着者が見ているシーン(風景等の実像)と、虚像のディスプレイ(虚像を投射するディスプレイの機能を持つHMD等の映像投射装置による虚像面)との位置関係を推定し、シーン中の適正な位置に虚像であるAR画像を投射する。
なお、第1の実施形態にて説明した、光ビーコンは、点滅等する識別機能を有する光を使った位置誘導の為のデバイスである。第1の実施形態では、対象物光ビーコン11の光は、LED(Light Emitting Diode)等の疑似点光源から、半透過ミラー35もしくはグラス部34を通り、光強度が減衰して装着者の角膜に入射し、一方、グラス部光ビーコン36の光は、その光源の光が、直接、装着者の角膜に入射し、実像が装着者の視野に入る構成を説明した。但し、グラス部光ビーコン36の代わりに、装着者の視野に、光ビーコンの役目を持たせた虚像の輝点を重ねて、グラス部光ビーコンとする構成であっても良い。即ち、ディスプレイ部31から半透過ミラー35までの間の光路のいずれかに、LED等の疑似点光源を設置し、装着者の視野の中に、点状の輝点の空中像(虚像)を結ぶ様にしても良い。あるいは、ディスプレイ部31の表示領域の任意の画素もしくは画素の集合に、光ビーコンと同様に点滅する(同様に変調する、でも良い)輝点を表示して、装着者の視野に空中像として見える、虚像のディスプレイ上の画素、をグラス部光ビーコンとして用いても良い。
上記の説明により、産業上の利用可能性は明らかであるが、本願開示は、シースルー型ヘッドマウントディスプレイを使って、AR画像の空中像を投影し、装着者にAR画像を提供する場合に好適である。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
上述の第1の視点に係る画像表示装置のとおりである。
[付記2]
前記装着者の瞳の前方に配置された半透過ミラーの周囲に配置された複数の第2光ビーコンをさらに備え、
前記光ビーコン位置推定部は、
前記画像データに含まれる前記装着者の瞳に反射した前記第2光ビーコンの像の前記画像データにおける位置に基づき、前記複数の第2光ビーコンにより形成される平面を仮想面として計算し、
前記仮想面と前記装着者の角膜球の中心位置の相対的な位置関係に基づき、前記仮想面上での前記虚像の表示面の位置を特定する、付記1の画像表示装置。
[付記3]
前記光ビーコン位置推定部は、
前記画像データに含まれる前記装着者の瞳に反射した前記第1光ビーコンの像の前記画像データにおける位置に基づき、前記第1光ビーコンの位置を計算し、
前記計算された第1光ビーコンの位置と前記装着者の角膜球の中心位置を結ぶ第1の直線を計算し、
前記第1の直線が前記仮想面を通過する通過点の座標を、前記虚像の表示面上での座標に変換することで、前記虚像の表示面における前記第1光ビーコンの位置を推定する、付記2の画像表示装置。
[付記4]
前記光ビーコン位置推定部は、
前記画像データに含まれる前記装着者の瞳に反射した前記第1光ビーコンの像の前記画像データにおける位置と前記第1光ビーコンを結ぶ第2の直線を、複数の前記第1光ビーコンごとに計算すると共に、
前記計算された第2の直線上の1つに、対応する前記第1光ビーコンを仮定することと、前記仮定された第1光ビーコンと、前記仮定された第1光ビーコンに対応する前記第2の直線に隣接する他の前記第2の直線上に、前記仮定された第1光ビーコンからの距離が最短となる前記第1光ビーコンを仮定することを、前記計算された第2の直線について繰り返し、
最初に前記第2の直線上に仮定した前記第1光ビーコンと、前記繰り返し処理により計算された、前記最初に前記第1光ビーコンを仮定した前記第2の直線上の前記第1光ビーコンと、の間の距離が所定値以下となる場合に、前記所定値以下となる場合の仮定された前記第1光ビーコンの位置を、前記第1光ビーコンの位置とする、付記3の画像表示装置。
[付記5]
前記角膜球位置推定部は、前記画像データが生成される際の焦点位置における画像面に投影される前記装着者の瞳の大きさ及び形状を、楕円を表す式の係数により特定する、付記1乃至4のいずれか一に記載の画像表示装置。
[付記6]
前記角膜球位置推定部は、
前記装着者の瞳を示す楕円の長軸及び短軸の長さを用いて、前記装着者の瞳の傾きを計算し、
前記計算された装着者の瞳の傾きと、前記画像面に投影される前記装着者の瞳の回転角と、に基づき、前記装着者の瞳が向く方向を示す視線ベクトルを計算し、
前記計算された視線ベクトルと、眼球の幾何モデルの所定のパラメータと、前記装着者の角膜球の中心位置と前記画像面との間の距離と、に基づき、前記装着者の角膜球の中心位置を推定する、付記5の画像表示装置。
[付記7]
前記第1光ビーコンが送信する信号は所定の方式により変調されており、
前記光ビーコン受信部は、1フレームに相当する複数の画像データを解析することにより、前記第1光ビーコンが送信する信号を復調すると共に、前記第1光ビーコンの識別情報を取得する、付記1乃至6のいずれか一に記載の画像表示装置。
[付記8]
前記拡張現実表示部は、
前記推定された第1光ビーコンの位置に、前記第1光ビーコンの識別情報に関連付けられた拡張現実に係る画像に射影変換を施した後に、現実の景色に重畳させて表示する、付記1乃至7のいずれか一に記載の画像表示装置。
[付記9]
前記光ビーコン受信部は、前記第1光ビーコンが送信する信号を復元し、前記復元した信号に対する誤り検出処理を行う、付記7又は8の画像表示装置。
[付記10]
予め計算された、角膜球の中心点と前記仮想面における前記虚像の表示面の位置を対応付けるテーブル情報を少なくとも記憶する記憶部をさらに備える、付記1乃至9のいずれか一に記載の画像表示装置。
[付記11]
上述の第2の視点に係る画像表示方法のとおりである。
[付記12]
上述の第3の視点に係るプログラムのとおりである。
なお、付記11及び12の形態は、付記1の形態と同様に、付記2の形態から付記10の形態に展開することが可能である。
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。