以下詳細な本発明の実施例に関して説明する。なお、以下の各実施例は、処理の内容を矛盾させない範囲で適宜組み合わせることが可能である。また、以下の実施例では、ビジョンベースARに適用可能である。以下では、マーカー型ビジョンベースARを例に説明するが、マーカーレス型ビジョンベースARにも適用可能である。
また、以下の実施例においては、表示デバイスとして、光学透過型ディスプレイを備えたウェアラブル表示デバイスである光学透過型ヘッドマウントディスプレイ(光学透過型HMD)が利用される。ただし、光学透過型ディスプレイとして機能し得る他のデバイスであっても、以下実施例は適用され得る。例えば、ビデオシースルー型ヘッドマウントディスプレイにおいて、ソフトウェア的にカメラ画像を表示しない形態で利用することで、ユーザーがディスプレイ部分を通して現実空間を見ることができるような場合に、以下の実施例は適用され得る。
以下に開示する実施例では、光学透過型HMDに備えられたカメラで撮影されたカメラ画像が光学透過型HMDに(仮に)表示された時の現実空間の見え方と、ユーザー(眼)が光学透過型HMDを通して見た現実空間の見え方との違い(視差)を考慮する。後述するように、カメラ画像を表示することなく、ARコンテンツのみを光学透過型HMDに表示する場合であっても、この視差を考慮して、ARコンテンツの表示制御が行われている限り、ユーザーが光学透過型HMDを通してみた現実空間とARコンテンツが配置された仮想空間とが対応するようになる。
さらに、この視差は、ユーザーごとに異なる。例えば、ユーザーごとに鼻の高さや耳の高さが異なるため、ユーザー(眼)と光学透過型HMDにおけるディスプレイ部分との距離は、ユーザーごとに変わる。この距離は、光学透過型HMDに備えられたカメラで撮影されたカメラ画像が光学透過型HMDに表示された時の現実空間と、ユーザー(眼)が光学透過型HMDを通して見た現実空間の見え方との違い(視差)に影響を与える要素である。例えば、この距離が大きければ、仮にカメラ画像が光学透過型HMDに表示された時、ユーザーにとってカメラ画像は大きく見えるが、この距離が小さければ、ユーザーにとって小さく見える。
このように、光学透過型HMDに備えられたカメラで撮影されたカメラ画像が光学透過型HMDに(仮に)表示された時の現実空間の見え方が、ユーザーごとに変るということは、光学透過型HMDに備えられたカメラで撮影されたカメラ画像が光学透過型HMDに(仮に)表示された時の現実空間の見え方と、ユーザー(眼)が光学透過型HMDを通して見た現実空間の見え方との違い(視差)も、変わってくる。
そこで、より好ましくは、ユーザーごとの視差を推定し、その視差に基づきARコンテンツの表示を制御することが望まれるため、視差の推定(後述のキャリブレーション処理)は、より簡易な手法で実現されることが必要とされる。そこで、本実施例に関するキャリブレーション処理では、簡易な方法でこの視差を推定する。
[システム構成例]
図1は、本実施例にかかるシステム構成図である。本実施例に係るシステムは、情報処理装置1と表示装置2を含む。さらに、システムは管理装置3を含んでもよい。また、各装置はネットワークを介して情報の送受信を行う事ができる。ネットワークは、無線ネットワークおよび有線ネットワークの両方またはいずれか一方であって、例えば、インターネットである。
情報処理装置1は、表示装置2の表示を制御するコンピュータである。情報処理装置1は、例えば、タブレット型コンピュータやスマートフォンなどのコンピュータである。表示装置2は、光学透過型ディスプレイを有し、情報処理装置1の制御の下、ARコンテンツ等の表示を行う表示デバイスである。例えば、表示装置2は、光学透過型ヘッドマウントディスプレイである。
本実施例においては、情報処理装置1が、キャリブレーション処理や表示制御処理を行う。なお、表示装置2が、キャリブレーション処理や表示制御処理を実行してもよい。つまり、表示装置2が情報処理装置1としても機能してもよい。
情報処理装置1が実行するキャリブレーション処理は、ユーザーとカメラの視差を表す差分情報を生成する処理である。表示制御処理は、差分情報を用いて、光学透過型ディスプレイにおけるARコンテンツの表示位置を制御する処理である。表示制御処理の詳細は後述する。なお、情報処理装置1は、キャリブレーション処理を実行するキャリブレーション装置として機能する場合や、表示制御処理を実行する表示制御装置として機能する場合がある。
また、差分情報は、光学透過型HMDに備えられたカメラで撮影されたカメラ画像が光学透過型HMDに(仮に)表示された時の現実空間の見え方と、ユーザー(眼)が光学透過型HMDを通して見た現実空間の見え方との違い(視差)を示す情報であって、補正情報とも称される。
ここで、表示装置2について、構成の概要を説明する。図2は、表示装置の概略構成の一例を示す図である。表示装置2は、光学透過型ディスプレイ202、カメラ204、フレーム206、透明部材208を含む。なお、図2の例では、透明部材208の一部分に光学透過型ディスプレイ202が埋め込まれている。しかし、透明部材208の全面に光学透過型ディスプレイ202が埋め込まれていてもよい。さらに、光学透過型ディスプレイ202は、左右いずれかの透明部材208にのみ、埋め込まれていてもよい。
光学透過型ディスプレイ202は、シースルー型ディスプレイである。よって、ユーザーは、光学透過型ディスプレイ202を通して、現実世界を視認することができる。例えば、光学透過型ディスプレイ202は、表示すべき画像に対応する光を照射する表示部と、表示部から出射された光を拡大するレンズと、レンズで拡大された光を反射するハーフミラーを含む。ユーザーは、ハーフミラーを介して、表示すべき画像に対応する虚像を視認することとなる。
カメラ204は、ユーザーの前方に広がる現実空間を撮影する。なお、カメラ204は撮影手段の一例であって、撮像素子とレンズを含む。カメラ204が撮影した画像データは、表示装置2が備える通信手段(図示せず)により、情報処理装置1へ送信される。なお、カメラ204は、ユーザーの視線方向を撮影可能な表示装置2の位置に設置されていればよく、図2の例に限定されない。また、カメラ204は、表示装置2に外付けされたデバイスであってもよい。
フレーム206は、ユーザーの頭部に装着可能に構成された部材であって、ユーザーの頭部を左右両側からはさむことが可能である。透明部材208は、フレーム206にはめ込まれた透明な部材である。なお、透明部材208は、例えば、ガラスやプラスチックである。
本実施例において、ユーザーは、表示装置2を、頭部に装着して使用する。例えば、カメラ204が、現実空間に設置されたマーカーを撮影すると、情報処理装置1の制御の下、光学透過型ディスプレイ202には、ARコンテンツが表示される。なお、本実施例においては、カメラ204が撮影した現実空間のカメラ画像は、光学透過型ディスプレイ202には表示されないこととする。なお、カメラ画像は、カメラ204が撮影した画像データに基づき表示される画像である。
図1に戻り、管理装置3は、情報処理装置1における処理に必要な情報を管理するコンピュータである。例えば、管理装置3は、サーバコンピュータである。管理装置3は、ARコンテンツを表示する為に利用されるARコンテンツ情報やテンプレート情報を記憶する。ARコンテンツ情報は、AR表示される対象のARコンテンツにかかわる情報である。テンプレート情報は、ARコンテンツとして利用されるオブジェクトを、予めテンプレートとして準備した場合の、当該テンプレートの形状や模様等が定義された情報である。
さらに、管理装置3は、キャリブレーション処理により生成された補正情報も、併せて、管理してもよい。例えば、ユーザーを識別するユーザーIDや表示装置2を識別するデバイスIDごとに、補正情報を管理する。補正情報をユーザーIDやデバイスIDごとに管理する事で、ユーザーごとに表示装置2を装着する位置が異なる場合(例えば、鼻の高さが個人ごとに異なる)や、表示装置2ごとにカメラ204の取り付け位置が異なる場合などにも対応できる。
情報処理装置1からの要求に応じて、管理装置3は、ARコンテンツ情報、テンプレート情報、補正情報を、情報処理装置1へ提供する。また、管理装置3は、ユーザーの属性に応じて、ユーザーに提供するARコンテンツを切り替えることもできる。この場合、ユーザーの属性に応じて表示させるARコンテンツのARコンテンツ情報が、選択的に情報処理装置1へ提供される。
[光学透過型ディスプレイを利用したAR表示の問題]
ここで、表示装置2として光学透過型ディスプレイを利用したAR表示における問題を説明する。前述したように、本実施例においては、光学透過型ディスプレイ202にカメラ画像は表示されない。図3は、光学透過型ディスプレイにカメラ画像を表示しない理由を説明するための図である。
図3の例では、ヒビ214が入ったパイプ210上に、マーカー212が添付されている現実空間において、ユーザーが表示装置2を装着しており、その現実空間をカメラ204が撮影している。図3のように、カメラ204が撮影したカメラ画像を光学透過型ディスプレイ202に表示すると、ユーザーは、光学透過型ディスプレイ202に投影表示された、カメラ画像に含まれるパイプ220、マーカー222、ヒビ224の各画像を見ることになる。一方で、ユーザーは、光学透過型ディスプレイ202の透明部材208を通して現実空間を直接的にも見ることができ、それによりパイプ210、マーカー212、ヒビ214を直接視認することとなる。
したがって、ユーザーには、直接的に見た現実空間に存在する物体(パイプ210、マーカー212、ヒビ214)と、光学透過型ディスプレイ202に表示された虚像(パイプ220、マーカー222、ヒビ224)とが二重になって見えることとなる。よって、光学透過型ディスプレイ202にカメラ画像を表示することは、かえってユーザーの視認性を低下させる恐れがある。
そこで、本実施例においては、カメラ204から取得した画像データは、後述のキャリブレーション処理や表示制御処理に利用するが、当該画像データに対応するカメラ画像を光学透過型ディスプレイ202に表示することは行わない。
図4は、表示装置を利用したARコンテンツ表示の問題点を説明するための図(その1)である。なお、図4ではこの問題点を説明するために、図3同様、カメラ画像を光学透過型ディスプレイ202に表示した様子を示している。
図4では、光学透過型ディスプレイ202に表示されたヒビ224の付近にARコンテンツ226が表示されている。ARコンテンツ226は、マーカー222に応じて表示が制御されており、現実空間におけるマーカー212については考慮されていない。つまり、マーカー212同様、現実空間に存在するヒビ214との位置関係は考慮されていない。
従来の表示制御処理においては、画像データからマーカーが認識された場合、マーカーの見え方や大きさから、現実空間におけるマーカーとカメラとの位置関係が推定される。そして、ARコンテンツは、マーカーとの位置関係が予め設定されているため、マーカーとカメラとの位置関係が推測されると、カメラとARコンテンツとの仮想的な位置関係が推定される。そして、カメラとARコンテンツとの位置関係に応じて、仮にカメラでARコンテンツを撮影した場合の像(ARコンテンツ226)が、光学透過型ディスプレイ202上に表示される。
このように、ARコンテンツ226の表示は、ユーザーが光学透過型ディスプレイ202を通してみる現実空間については、従来の表示制御処理の過程で一切考慮されていない。よって、ユーザーとカメラ204のとの間に視差がある場合、ユーザーが光学透過型ディスプレイ202を通してみる現実空間とARコンテンツ226とが対応しなくなってしまう。例えば、図4に示すように、ARコンテンツ226は、カメラ画像におけるヒビ224の付近に表示されるものの、ユーザーが透明部材208を通して視認するヒビ214の付近には表示されなくなってしまう。
図5は、表示装置を利用したARコンテンツ表示の問題点を説明するための図(その2)である。図4で説明した問題点に対し、ユーザーの視認性向上を目的として、光学透過型ディスプレイ202にカメラ画像を表示しなかった場合には、ユーザーの見え方は図5のような状態となる。
図5のようにカメラ画像の表示を行わずに、ARコンテンツ226のみを表示しただけでは、ARコンテンツ226の表示位置は図4と同様であるため、直接的に視認するヒビ214と、ARコンテンツ226の表示位置とが離れている。このように、ユーザーは、現実空間に存在する物体(ヒビ214)と仮想空間に存在するARコンテンツ226とを対応付けて認識する、というAR技術のメリットを享受できない。さらには、ARコンテンツ226が作業等の指示を示すような性質のオブジェクトである場合、ユーザーのミスを誘発する可能性もある。
そこで、以下で説明する実施例では、光学透過型ディスプレイを利用する際に、ユーザーの視認性向上を狙って、カメラ画像を光学透過型ディスプレイに表示せず、ARコンテンツとユーザーの視線でとらえた現実空間の物体とが対応するように、ARコンテンツの表示を制御する。
[ARコンテンツの表示制御]
ARコンテンツの表示制御においては、まず、カメラが撮影した画像データからマーカーが認識された場合に、マーカーの見え方に基づき、カメラとマーカーとの位置関係が推測される。通常は、この位置関係を利用して、カメラから仮想空間に存在するARコンテンツを見た場合のARコンテンツの像に対応する表示データが生成される。本実施例では、カメラとマーカーとの位置関係を、カメラとユーザー(眼)との視差に基づき補正して、ARコンテンツを表示する為の表示データを生成する。
初めに、カメラとマーカーとの位置関係を説明するために、カメラを中心とするカメラ座標系と、マーカーを中心とするマーカー座標系について説明する。図6は、カメラ座標系およびマーカー座標系の関係を示す図である。なお、マーカーMは、例えば、建物内の壁や天井、設備などに添付された紙に印刷された特有の形状を有する模様である。例えば、マーカーMは、1辺の長さが5cmである正方形形状を有する。
図6では、カメラ座標系の原点を、Oc(0,0,0)とする。なお、原点Ocは、実際のカメラの焦点であってもよいし、光軸上の1点を原点Ocに設定してもよい。カメラ座標系は、(Xc,Yc,Zc)の3次元で構成される。Xc−Yc平面は、例えば、カメラの撮影素子面と平行な面である。また、Zc軸は、例えば、撮影素子面に垂直な軸である。
次に、マーカー座標系の原点は、Om(0,0,0)である。なお、原点Omは、マーカーMの中心である。マーカー座標系は、(Xm,Ym,Zm)の3次元で構成される。例えば、マーカー座標系のXm−Ym平面はマーカーMと平行な面であり、Zm軸はマーカーMの面と垂直な軸である。なお、マーカー座標系では、画像データにおけるマーカーM一つ分の大きさを、単位座標とする。
一方、マーカー座標系の原点Omは、カメラ座標系では、(X1c,Y1c,Z1c)であらわされるものとする。カメラ座標系におけるOmの座標(X1c,Y1c,Z1c)は、カメラから取得した画像データからマーカーMの4隅の座標値に基づき算出される。
つまり、カメラとマーカーMとが正対している状態を理想形としたときに、この理想形と検出した実際の状態との差分に基づき、Omの座標(X1c,Y1c,Z1c)は算出される。よって、マーカーMの形状には、マーカーMとカメラと位置関係が判別可能な形状が採用される。なお、カメラ座標系におけるOmの座標(X1c,Y1c,Z1c)は、並進ベクトルV1c(X1c,Y1c,Z1c)と称する。
また、マーカーMの大きさも予め決定される。これにより、画像データに対して物体認識を行うことでマーカーMを認識できるとともに、画像データにおけるマーカーMの像の形状や大きさから、カメラに対するマーカーMの位置関係が判別できる。
次に、カメラ座標系(Xc,Yc,Zc)に対するマーカー座標系(Xm,Ym,Zm)の回転角は、回転行列G1c(P1c,Q1c,R1c)で示される。P1cはXc軸回りの回転角であり、Q1cはYc軸回りの回転角であり、R1cはZc軸回りの回転角である。図6に例示されるマーカー座標系は、Ym軸回りにのみ回転しているため、P1cおよびR1cは0である。なお、各々の回転角は、既知のマーカーM形状と、カメラによる撮影画像におけるマーカーMの像の形状との比較に基づき、算出される。
並進ベクトルV1c(X1c,Y1c,Z1c)や、回転行列G1c(P1c,Q1c,R1c)の算出方法は、例えば、非特許文献1や特願2013−190309号に開示の方法を利用することができる。
図7は、ARコンテンツの配置を説明するための図(その1)である。図7に示すARコンテンツCは、吹き出し形状を有する画像データであって、かつ吹き出し内に「ヒビあり!」というテキスト情報を含む。さらに、ARコンテンツCには、事前にマーカーM相対での位置情報と回転情報が、配置情報として、設定されている。例えば、位置情報はマーカー座標系での座標値であって、回転情報はマーカー座標系の各軸を基準としたときの回転量である。
位置情報および回転情報について詳しく説明する。図7におけるARコンテンツCの先の黒丸は、ARコンテンツCの基準点V2m(X2m,Y2m,Z2m)である。基準点V2m(X2m,Y2m,Z2m)が位置情報の一例である。
また、ARコンテンツCの姿勢は回転行列G2m(P2m,Q2m,R2m)で定められており、回転行列G2m(P2m,Q2m,R2m)が回転情報の一例である。ARコンテンツCの回転行列G2mは、マーカー座標系に対してARコンテンツがどの程度回転した状態で配置されるのかを示す。例えば、図7の例とは異なるが、G2mが(0,0,0)である場合には、マーカーMと平行にARコンテンツがAR表示されることとなる。
次に、基準点以外のARコンテンツCを構成する各点の座標も、基準点相対で、個別に設定されることで、ARコンテンツCの形状が設定される。本実施例においては、ARコンテンツCの形状は、事前に作成されたテンプレートを流用するものとして説明する。つまり、ARコンテンツCの形状の雛型であるテンプレートに、ARコンテンツCを形成する各点の座標が定義されている。ただし、テンプレートにおいては、基準点を座標(0,0,0)とし、基準点以外の各点は基準点の座標に対する相対値として定義される。よって、ARコンテンツCの基準点V2mが設定されると、テンプレートを構成する各点の座標は、座標V2mに基づいて平行移動される。そして、テンプレートに含まれる各点の座標は、設定された回転行列G2mに基づいて回転される。
さらに、テンプレートを利用する場合には、ARコンテンツCのサイズを指定するための倍率D(Jx,Jy,Jz)が定められる。よって、平行移動および回転されたARコンテンツCは、さらに、倍率Dで隣接する点同士の距離が拡縮される。以上のように、図7のARコンテンツCは、テンプレートに定義された各点が、基準点の座標V2m、回転行列G2mおよび倍率Dに基づいて調整された点に基づいて構成された状態を示している。
カメラ204とマーカーMとの位置関係(並進ベクトルV1c)と、マーカーMとARコンテンツCとの位置関係(ベクトルV2m)が取得されると、カメラ204とARコンテンツCとの位置関係(V2c)を求めることができる。しかし、先に説明したとおり、カメラ204とユーザー(眼)との視差を考慮しない状態では、ARコンテンツCは現実空間に対応する位置に表示されるとは限らない。
図8は、ARコンテンツの配置を説明するための図(その2)である。なお、図8におけるARコンテンツCの配置は図7と同様であって、ベクトルV2mで示される。ユーザー(眼)の位置は、Oeで示される。ユーザー(眼)とカメラと位置関係は、ベクトルVTで示されるとする。なお、ベクトルVTは、ユーザー(眼)とカメラとの視差に相当し、カメラ座標系の座標(XT,YT,ZT)に相当するものとする。なお、ベクトルVTは、補正情報の一例である。また、補正情報の詳細や生成処理については、後述する。
そして、図8に示すとおり、画像データから得られる並進ベクトルV1cをベクトルVTを用いて補正する事で、ユーザー(眼)とマーカーとの位置関係に対応する、並進ベクトルV1eが得られる。例えば、並進ベクトルV1eは、並進ベクトルV1c(X1c,Y1c,Z1c)とVT(XT,YT,ZT)とのベクトル減算で与えられる。なお、以下の説明においては、並進ベクトルV1eは、カメラ座標系の座標(X2c,Y2c,Z2c)で表されるとする。
このようにして、カメラとユーザー(眼)との視差を考慮した並進ベクトルV1eを得ることができる。よって、情報処理装置1は、並進ベクトルV1eとARコンテンツCとの配置位置V2mとに基づき、ユーザー(眼)から見たARコンテンツCの配置(ベクトルV2e)を行うことができる。よって、光学透過型ディスプレイ202に表示されたARコンテンツCは、ユーザーが視認する現実空間と対応することとなる。
なお、視差については、位置のずれと回転のずれがある。ここまでは、位置のずれについて、並進ベクトルV1cを補正するとして説明したが、回転のずれについても、回転行列G1c(P1c,Q1c,R1c)も、補正する。この場合、回転行列G1c(P1c,Q1c,R1c)を、回転行列にかかる補正情報GT(PT,QT,RT)を用いて補正する事で、ユーザー(眼)とマーカー座標系との回転方向のずれが補正された回転行列G2c(P2c,Q2c,R2c)を得る。
図9は、マーカー座標系からカメラ座標系への変換行列Tと回転行列Rを示す。変換行列Tは、マーカーMとユーザー(眼)との位置関係を示す並進ベクトル(X2c,Y2c,Z2c)と、回転行列G2c(P2c,Q2c,R2c)とに基づき、マーカー座標系で定義されたARコンテンツの各点を、マーカー座標系からカメラ座標系に変換するための行列式である。
変換行列Tは、4×4の行列である。変換行列Tと、マーカー座標系の座標Vmに関する列ベクトル(Xm,Ym,Zm,1)との積により、カメラ座標系の対応する座標Vcに関する列ベクトル(Xc,Yc,Zc,1)が得られる。
変換行列Tの1〜3行目且つ1〜3列の部分行列(回転行列R)がマーカー座標系の座標に作用することにより、マーカー座標系の向きとカメラ座標系との向きを合わせるための回転操作が行なわれる。変換行列Tの1〜3行目且つ4列目の部分行列が作用することにより、マーカー座標系の向きとカメラ座標系との位置を合わせるための並進操作が行なわれる。
図10は、回転行列R1、R2およびR3を示す。なお、図9に示す回転行列Rは、回転行列R1、R2およびR3の積(R1・R2・R3)により算出される。また、回転行列R1は、Xc軸に対するXm軸の回転を示す。回転行列R2は、Yc軸に対するYm軸の回転を示す。回転行列R3は、Zc軸に対するZm軸の回転を示す。
回転行列R1、R2およびR3は、撮影画像内のマーカーMの像に基づき、生成される。つまり、回転角P1c、Q1c、R1cは、先に述べたとおり、既知の形状を有するマーカーMが、処理対象となる撮影画像において、どのような像として撮影されているかに基づき、算出される。
そして、情報処理装置1は、算出された回転角P1c、Q1c、R1cを、補正情報(PT,QT,RT)を用いて補正する事で、回転行列G2c(P2c,Q2c,R2c)を得る。そして、回転行列G2c(P2c,Q2c,R2c)に基づき、各回転行列R1、R2およびR3は生成される。
変換行列における列ベクトル(Xm,Ym,Zm,1)に座標変換対象のマーカー座標系の点座標を代入して、行列演算を行なうことにより、カメラ座標系の点座標を含む列ベクトル(Xc,Yc,Zc,1)が得られる。つまり、マーカー座標系の点(Xm,Ym,Zm)を、カメラ座標系(Xc,Yc,Zc)に変換することができる。なお、座標変換は、モデル−ビュー変換とも称される。
つぎに、ARコンテンツCの各点のカメラ座標系の座標は、スクリーン座標系に変換される。スクリーン座標系は、(Xs,Ys)の2次元で構成される。そして、カメラ座標系に変換されたARコンテンツCの各点の座標を、仮想のスクリーンとなる2次元平面(Xs,Ys)に投影することで、AR表示されるARコンテンツCの像が生成される。つまり、スクリーン座標系の一部分がディスプレイの表示画面と対応する。なお、カメラ座標系の座場をスクリーン座標系に変換することを、透視変換と称する。
投影面となる仮想のスクリーンは、例えば、カメラ座標系のXc−Yc平面と平行に、かつZc方向に所定の距離に設定される。透視変換は、例えば、カメラの焦点距離fに基づいて行なわれる。カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のXs座標は、以下の式1で求められる。また、カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のYs座標は、以下の式2で求められる。
Xs=f・Xc/Zc (式1)
Ys=f・Yc/Zc (式2)
透視変換により得られるスクリーン座標系の座標値に基づいて、ARコンテンツCの像が生成される。なお、通常、表示デバイスは、左上の画素を(0,0)として描画処理が行われるため、スクリーン座標系の原点と表示デバイスの原点との間に違いがある場合には、さらに、スクリーン座標系の座標値(Xs,Ys)は、表示デバイスに応じた座標値に変換される。
以上のようにして、モデル―ビュー変換および透視変換を、ARコンテンツCを構成する各点について行ったあと、ARコンテンツCを構成する複数の点を補間して得られる面にテクスチャをマッピングすることにより、ARコンテンツCの表示データは生成される。なお、ARコンテンツCの元になるテンプレートには、どの点を補間して面を形成するか、どの面にどのテクスチャをマッピングするかが定義されている。
[機能ブロック図]
図11は、情報処理装置および表示装置の機能ブロック図である。情報処理装置1は、制御部10、通信部11、取得部12、出力部13、記憶部14、認識部15、生成部16、補正部17、表示制御部18を含む。
制御部10は、情報処理装置1における各種処理を実行または制御する。例えば、制御部10はキャリブレーション処理および表示制御処理を実行する。通信部11は、管理装置3と通信を行う。例えば、通信部11は、管理装置3から、ARコンテンツ情報、テンプレート情報、補正情報を受信する。
取得部12は、表示装置2から情報を取得する。例えば、取得部12は、表示装置2から、画像データを取得する。出力部13は、表示装置2へ情報を出力する。例えば、出力部13は、後述する指示情報やARコンテンツCの表示データを表示装置2へ出力する。
記憶部14は、各種情報を記憶する。記憶部14は、ARコンテンツ情報、テンプレート情報、補正情報を記憶する。また、記憶部14は、取得部12が取得した画像データを記憶してもよい。
ここで、ARコンテンツ情報およびテンプレート情報について説明する。図12は、ARコンテンツ情報を記憶するデータテーブルの構成例である。ARコンテンツ情報は、少なくとも、ARコンテンツID、位置情報、回転情報を含む。さらに、ARコンテンツ情報は、倍率情報、テンプレートID、マーカーID、追加情報を含んでもよい。
データテーブルには、ARコンテンツID、マーカー座標系におけるARコンテンツの位置情報、回転情報が互いに対応付けられて格納される。ARコンテンツIDは、ARコンテンツを一意に識別する識別情報である。位置情報は、マーカーMに対するARコンテンツの位置を指定するための情報であって、例えば、マーカー座標系における、ARコンテンツCを形成する基準点の位置座標(Xm,Ym,Zm)である。回転情報は、マーカーMに対するARコンテンツCの回転を指定するための情報であって、例えば、マーカー座標系に対する、ARコンテンツCの回転行列(Pm,Qm,Rm)である。位置情報および回転情報は、ARコンテンツCの配置を決定するための配置情報である。
また、ARコンテンツCのモデル形状が、テンプレートを用いて作成される場合には、データテーブルには、テンプレートIDおよび倍率情報が格納される。テンプレートIDは、ARコンテンツCに適用されるテンプレートを識別する識別情報である。倍率情報は、テンプレートをARコンテンツCとして適用する際の倍率Dの情報であって、例えば、各軸方向に、各々拡大または縮小するための倍率(Jx,Jy,Jz)である。
さらに、認識したマーカーMの識別情報に応じて、AR表示するARコンテンツCを切り替える場合には、各ARコンテンツCを対応付けるマーカーMのマーカーIDが、データテーブルに格納される。なお、同一のマーカーMでも、ユーザーの属性情報によって、AR表示するARコンテンツCを切り替える場合には、マーカーIDと合わせて、各ARコンテンツCについて、ユーザーの属性を識別する情報がさらに格納される。
データテーブルには、さらに、追加情報が格納されてもよい。追加情報として、例えば、ARコンテンツC内に描画されるテキストの情報が記憶される。図12のARコンテンツID「1000」の例では、ARコンテンツ内に「ヒビあり!」というテキストが描画されることになる。
図13は、テンプレート情報を記憶するデータテーブルの構成例である。テンプレート情報は、テンプレートの識別情報(テンプレートID)、テンプレートを構成する各頂点の座標情報、およびテンプレートを構成する各面の構成情報(頂点順序およびテクスチャIDの指定)を含む。
頂点順序は、面を構成する頂点の順序を示す。テクスチャIDは、面にマッピングされるテクスチャの識別情報を示す。テンプレートの基準点は例えば0番目の頂点である。テンプレート情報テーブルに示される情報により、3次元モデルの形状および模様が定められる。
図11の説明に戻り、制御部10は、更に、認識部15、生成部16、補正部17、表示制御部18を含む。情報処理装置1がキャリブレーション装置として機能する場合には、制御部10は認識部15および生成部16を含む。情報処理装置1が表示制御装置として機能する場合には、制御部10は認識部15、補正部17および表示制御部18を含む。
認識部15は、画像認識処理を実行する。なお、認識部15は、キャリブレーション処理においては認識処理結果を、生成部16へ入力し、表示制御処理においては認識処理結果を、補正部17へ入力する。
画像認識処理は、認識部15に対して入力された画像データに、特定の画像データが含まれるか判定する処理である。また、画像認識処理は、特定の画像データが含まれる場合に、カメラと特定の画像データに係る所定の物体(マーカー)との位置関係を示す情報を算出する処理を含む。例えば、並進ベクトルや回転行列が算出される。さらに、画像認識処理は、特定の画像データを解析することで、特定の画像データを識別する情報(例えばマーカーID)を抽出する処理を含んでもよい。
例えば、認識部15は、マーカーの画像データが含まれるかを判定する。さらに、認識部15は、特定の画像データが含まれることを判定した場合、当該特定の画像データの領域を示す領域情報を生成する。例えば、領域情報は、マーカーMの四隅の座標値である。
さらに、認識部15は、特定の画像データが含まれることを判定した場合、領域情報に基づき、画像データを撮影したカメラとマーカーとの位置関係を示す並進ベクトルV1c(X1c,Y1c,Z1c)や、マーカー座標系とカメラ座標系の回転角を示す回転行列G1c(P1c,Q1c,R1c)を算出する。
さらに、特定の画像データが含まれる場合に、さらに、識別情報を抽出してもよい。例えば、マーカーの画像データが含まれることが判定された場合に、当該マーカー部分に相当する画像データから、マーカーIDを抽出する。例えば、二次元バーコードと同様に、白部分と黒部分の配置から、一意のマーカーIDが抽出される。
生成部16は、キャリブレーション処理において、補正情報を生成する。補正情報は、ユーザー(眼)とカメラとの視差を示す情報であって、ARコンテンツCの表示位置や表示サイズを補正するための情報である。例えば、補正情報は、ベクトルVT(XT,YT,ZT)や、GT(PT,QT,RT)である。
また、補正情報を生成するために、生成部16は、キャリブレーション処理において、指示情報を生成する。指示情報は、補正情報を生成するために必要な画像データをユーザーに撮影させるための指示に関する情報である。
例えば、指示情報は、表示装置2(光学透過型ヘッドマウントディスプレイ)を装着したユーザーに対して、光学透過型ディスプレイ202に表示された特定の領域と、ユーザーが光学透過型ディスプレイ202を通して直接見る特定の物体とが合致するように、ユーザーに移動を促す情報である。例えば、特定の領域は、すでにカメラ204に撮影された画像データにおけるマーカーに対応する領域である。つまり、本実施例においては、ユーザーが表示装置2を装着した状態で、カメラ204がマーカーMを含む画像データを2回以上撮影する。
図14Aおよび図14Bは、指示情報を説明するための図である。なお、図14Aおよび図14Bにおいては、図3等に示すパイプ等の図示を省略している。図14Aでは、図3等のマーカー212を利用してキャリブレーション処理が実行されるとして説明するが、キャリブレーション用に別途マーカーを準備してもよい。
図14Aは、ユーザーが、光学透過型ディスプレイ202を通してマーカー212を視認している状態を示している。このマーカー212は光学透過型ディスプレイ202に表示された画像ではない。図14Bは、図14Aの状態で、カメラ204が撮影した画像データのイメージ図である。図14Bに示す通り、画像データに対応するカメラ画像304において、カメラ204が撮影した画像データにおけるマーカー306は、図14Aに示されるマーカー212と、大きさや位置が異なる。
生成部16は、認識部15から出力される領域情報に基づき、画像データにおけるマーカー306に対応する領域(枠)を、光学透過型ディスプレイ202に描画するための指示情報を生成する。さらに、生成部16は、ユーザーに対して、「表示された枠にマーカーが合致するような位置へ移動してください」等の音声情報やテキスト情報も併せて生成してもよい。さらに、生成部16は、ユーザーに対して、「表示された枠とマーカーが合致したら、決定ボタンを押下してください」等の音声情報やテキスト情報も生成してもよい。ここで、決定ボタンは、表示装置2の入力部25に備えられたものであってもいいし、情報処理装置1が備えるものであってもよい。
指示情報は、出力部13を介して表示装置2に送信されると、指示情報に基づき、マーカー306に対応する領域が表示装置2における光学透過型ディスプレイ202に描画される。例えば、図14Aのように、枠302が描画される。
その後、指示情報に基づき、ユーザーは、光学透過型ディスプレイ202を通してみているマーカー212が、枠302に合致するように、前後左右に移動する。また、枠302に合うように、表示装置2を装着した頭部を傾ける等する。
図15Aおよび図15Bは、指示情報に基づきユーザーが移動を行った際のイメージ図である。図15Aおよび図15Bにおいては、図14Aおよび図14Bと同様に、図3等に示すパイプ等の図示を省略している。図15Aは、ユーザーが指示情報に基づき移動を完了した際の、ユーザーの見え方を示している。このように、枠312(図14における枠302が継続的に描画された状態)と、光学透過型ディスプレイ202を通して見えるマーカー314とが一致している。なお、マーカー314は、現実空間においてマーカー212と同一であるが、ユーザーの見え方としては異なっているため、異なる番号を付与する。
図15Bは、図15Aにおいて、撮影されたカメラ画像を示している。なお、ユーザーは、指示情報に基づき移動が完了した場合に、決定入力を行う。カメラ204は、ユーザーの決定入力に応じて画像データを取得する。図15Bは、この時撮影された画像データのカメラ画像である。カメラ画像におけるマーカー312を、図15Bにおいてはマーカー318と示す。
次に、生成部16は、図14Bのカメラ画像に相当する画像データと図15Bのカメラ画像に相当する画像データとを用いて、補正情報を生成する。具体的には、図14Bの画像データ(第一の画像データ)に対して認識部15が画像認識処理を実行したときの認識処理結果と、図15Bの画像データ(第二の画像データ)に対して認識部15が画像認識処理を実行したときの認識処理結果とを用いて、補正情報を生成する。
例えば、第一の画像データに対する認識処理結果には、並進ベクトルV1c´(X1c´,Y1c´,Z1c´)と回転行列G1c´(P1c´,Q1c´,R1c´)が含まれる。つぎに、第二の画像データに対する認識処理結果には、並進ベクトルV1c´´(X1c´´,Y1c´´,Z1c´´)と回転行列G1c´´(P1c´´,Q1c´´,R1c´´)が含まれる。
このとき、並進ベクトルにかかる補正情報VT(XT,YT,ZT)は、並進ベクトルV1c´(X1c´,Y1c´,Z1c´)から、並進ベクトルV1c´´(X1c´´,Y1c´´,Z1c´´)を引いた値となる。なお、並進ベクトルV1c´´(X1c´´,Y1c´´,Z1c´´)から並進ベクトルV1c´(X1c´,Y1c´,Z1c´)を引いてもよい。
また、回転行列にかかる補正情報GT(PT,QT,RT)は、回転行列G1c´(P1c´,Q1c´,R1c´)から回転行列G1c´´(P1c´´,Q1c´´,R1c´´)を引いた値となる。なお、回転行列G1c´´(P1c´´,Q1c´´,R1c´´)からG1c´(P1c´,Q1c´,R1c´)を引いてもよい。
このように、第一の画像データと、第一の画像データにおけるマーカー領域(枠302)にユーザーが光学透過型ディスプレイ202を通してみるマーカー312が合致するときの第二の画像データとを利用する事で、生成部16は、カメラ204とユーザー(眼)の視差を推定できる。つまり、生成部16は、この視差を示す補正情報が生成できる。
図11に戻り、補正部17は、表示制御処理において、認識部15から入力された認識処理結果を補正情報を用いて補正する。つまり、並進ベクトルV1c(X1c,Y1c,Z1c)と補正情報VT(XT,YT,ZT)とを加算することで、補正部17は、ユーザー(眼)とマーカーMとの位置関係を示す、並進ベクトルV2c(X2c,Y2c,Z2c)を生成する。また、回転行列G1c(P1c,Q1c,R1c)と補正情報GT(PT,QT,RT)とを加算することで、補正部17は、ユーザー(眼)とマーカーMとの回転関係を示す、回転行列G2c(P2c,Q2c,R2c)を生成する。
表示制御部18は、表示制御処理において、補正部17が補正した補正結果を用いて、ARコンテンツの表示データを生成する。例えば、表示制御部18は、認識部15が抽出したマーカーIDに対応するARコンテンツCをARコンテンツ情報テーブルから取得する。さらに、ARコンテンツCに利用されたテンプレートのテンプレート情報も取得される。
そして、表示制御部18は、ARコンテンツ情報およびテンプレート情報を用いて、並進ベクトルV2c(X2c,Y2c,Z2c)および回転行列G2c(P2c,Q2c,R2c)を適用した変換行列Tに基づき、モデル―ビュー変換を行う。さらに、表示制御部18は、透視変換を実行する。そして、表示制御部18は、これら処理の結果を含む表示データを、出力部13を介して、表示装置2へ出力する。
表示装置2は、制御部20、送信部21、受信部22、撮影部23、表示部24、入力部25を有する。制御部20は、表示装置2における各種処理を制御する。例えば、情報処理装置1から受信した指示情報に基づき、枠302を表示部24に描画する。また、情報処理装置1から受信した表示データに基づき、ARコンテンツCを表示部24に描画する。
送信部21は、各種情報を情報処理装置1へ送信する。例えば、送信部21は、撮影部23が撮影した画像データを送信する。受信部22は、各種情報を情報処理装置1から受信する。例えば、受信部22は、指示情報や表示データを受信する。
撮影部23は、撮影処理を実行する事で、画像データを生成する。撮影部23は、例えば、カメラ204である。表示部24は、制御部20の制御の下、指示情報に基づく枠や、表示情報に基づくARコンテンツCを表示する。例えば、表示部24は、光学透過型ディスプレイ202である。入力部25は、ユーザーからの各種入力を受け付ける。例えば、ユーザーから、ユーザーが指示情報に基づく移動が完了した旨の情報を受け付ける。例えば、入力部25は、表示装置2と通信可能なウェアラブル入力デバイスである。
図16は、本実施例を適用した場合のARコンテンツの見え方のイメージ図である。ユーザー(眼)とカメラの視差が考慮されるため、補正情報を用いて表示が制御されたARコンテンツ320は、光学透過型ディスプレイ202を通して見えるヒビ214の付近に表示される。また、補正情報を用いたことで、図5と比較してより大きく表示される。
ユーザーの眼で見た所定の物体とカメラ画像における所定の物体との間に大きさの差異がある場合であっても、本実施例に係るキャリブレーション方法で生成された補正情報には、大きさを補正する成分も含まれている。大きさの補正に関しては、例えば、奥行き方向(Z方向)の成分が影響を与える。
[フローチャート]
図17は、本実施例に係るキャリブレーション処理のフローチャートである。制御部10は、キャリブレーション開始の命令を受け付けると、前処理を行なう(Op.1)。例えば、制御部10は、表示装置2が起動していない場合に、起動命令を出す。なお、表示装置2は、起動命令を受けて、撮影部23による撮影処理を開始する。
そして、取得部12は、表示装置2から画像データを取得する(Op.2)。なお、制御部10の制御の下、表示装置2に対して画像データが要求された場合に、取得部12が表示装置2からの画像データを取得することとしてもよい。また、表示装置2で撮影部23が新たな画像データを生成するたびに、取得部12に対して画像データが送られるとしてもよい。この場合、取得部12は、取得した画像データを、一時的に記憶部14に記憶するとしてもよい。
そして、認識部15は、取得した画像データに対して画像認識処理を実行する(Op.3)。そして、認識部15は、画像データにマーカーが含まれるか否かを判定する(Op.4)。なお、マーカーが含まれる場合に、認識は成功と判定される。なお、認識が成功した場合、領域情報も併せて生成され、生成部16に入力される。
認識が成功した場合(Op.4Yes)、認識部15は、認識処理結果を生成するとともに、記憶部14へ保存する(Op.5)。つまり、並進ベクトルV1c´(X1c´,Y1c´,Z1c´)と回転行列G1c´(P1c´,Q1c´,R1c´)が記憶される。なお、キャリブレーション処理における画像認識処理では、マーカーIDの抽出は省略されるとしてもよい。一方、認識が失敗した場合(Op.4No)、制御部10はOp.2へ戻る。
次に、生成部16は、認識部15から入力される領域情報に基づき、指示情報を生成する(Op.6)。例えば、指示情報は、マーカーの四隅の点を直線で結んだ枠を描画するための情報である。そして、出力部13は、指示情報を表示装置2へ出力する(Op.7)。
その後、生成部16は、取得部12が表示装置2からユーザー入力を取得したか判定する(Op.8)。ユーザー入力は、表示装置2の入力部25を介してユーザーが入力する情報であって、指示情報に基づく移動が完了したことを示す入力である。表示装置2における制御部20は、ユーザー入力が入力部25に対して入力されたことを検知すると、撮影部23が撮影した画像データとともにユーザー入力があった旨を、情報処理装置1の取得部12へ送信する。
そして、ユーザー入力があるまで待機し(Op.8No)、ユーザー入力があった場合に(Op.8Yes)、取得部12は、画像データを取得する(Op.9)。認識部15は、新たに取得した画像データに対して、画像認識処理を実行する(Op.10)。
認識が失敗した場合(Op.11No)、制御部10はOp.7へ戻る。認識が成功した場合(Op.11Yes)、認識部15は、認識処理結果を生成する。認識処理結果には、並進ベクトルV1c´´(X1c´´,Y1c´´,Z1c´´)と回転行列G1c´´(P1c´´,Q1c´´,R1c´´)が含まれる。
生成部16は、補正情報を生成する(Op.12)。並進ベクトルにかかる補正情報VT(XT,YT,ZT)および回転行列にかかる補正情報GT(PT,QT,RT)が生成される。そして、生成部16による制御の下、記憶部14は、補正情報を記憶する(Op.13)。さらに、補正情報は管理装置3へ送信され、管理装置3にて管理されてもよい。この場合、補正情報は、表示装置2を識別する識別情報と対応付けて管理されてもよい。
図18は、本実施例に係る表示制御処理のフローチャートである。まず、情報処理装置1が表示制御開始の命令を受け付けると、制御部10は、前処理を行う(Op.21)。前処理においては、ARコンテンツ情報やテンプレート情報が管理装置3から取得される。また、記憶部14から補正情報が取得される。なお、補正情報は、管理装置3から取得されるとしてもよい。
そして、取得部12は、表示装置2から画像データを取得する(Op.22)。認識部15は、取得した画像データに対して画像認識処理を実行する(Op.23)。認識部15は、画像データにマーカーが含まれるか否かを判定する(Op.24)。認識が失敗した場合には(Op.24No)、制御部10はOp.22へ戻る。
認識が成功した場合には(Op.24Yes)、認識部15は、認識処理結果を生成する。認識処理結果には、並進ベクトルV1c(X1c,Y1c,Z1c)と回転行列G1c(P1c,Q1c,R1c)が含まれる。そして、補正部17は、補正情報を用いて、認識処理結果を補正する(Op.25)。例えば、認識処理結果に対して、補正情報を加算する。
表示制御部18は、補正された認識処理結果に基づき、ARコンテンツCの表示データを生成する(Op.26)。補正された認識処理結果は、上記並進ベクトルV2c(X2c,Y2c,Z2c)および回転行列G2c(P2c,Q2c,R2c)に相当する。表示データは、スクリーン座標系に変換されたARコンテンツを構成する各点の座標値や、テンプレート情報に規定されたテクスチャ情報等を含む。
そして、表示制御部18の制御の下、出力部13は、表示装置2に対して表示データを出力する(Op.27)。なお、表示装置2は、受信部22が表示データを受信すると、制御部20の制御の下、表示部24にARコンテンツCを表示する。
そして、制御部10は、表示制御処理の終了が命令されるまで(Op.28No)、一連の表示制御処理を繰り返し、表示制御処理の終了が命令された場合に(Op.28Yes)、処理を終了する。なお、ユーザーが、表示装置2の入力部25を介して終了を命令すると、送信部21から、情報処理装置1に対して、終了が命令される。
以上のように、本実施例の情報処理装置1は、ユーザー(眼)とカメラの視差を取り除くための補正情報を生成することができる。また、情報処理装置1は、当該補正情報を利用する事で、光学透過型ディスプレイを通してユーザーが見る現実空間と、ARコンテンツCとを、対応させて表示することができる。
[変型例1]
図19Aおよび図19Bは、補正情報の他の例を説明するための図である。上記実施例では、並進ベクトルにかかる補正情報については、奥行き方向(Zc方向)も含めて算出される事とした。なお、奥行き情報により、ARコンテンツCの大きさは制御される。一方、変型例においては、XcおよびYc方向のみ並進ベクトルの差分を求め、補正情報を生成する。さらに、変形例は、ARコンテンツCの大きさを調節するための補正情報を、画像データにおけるマーカーの大きさの割合で設定してもよい。
図19Aは、図14Bに対応するカメラ画像である。さらには、図19Aは、位置(Xm1,Ym1)に存在するマーカーの大きさを、M1(ピクセル)で示している。なお、マーカーの大きさは、領域情報から求めることができる。また、図19Bは、図15Bに対応するカメラ画像である。図19Bでは、位置(Xm2,Ym2)に存在するマーカーの大きさはM2(ピクセル)である。変型例にかかる生成部16は、M1とM2との比を、ARコンテンツCの大きさにかかる補正情報として、生成する。
[変型例2]
変型例2にかかる情報処理装置1は、1枚の画像データに基づき補正情報を生成する。図20、図21Aおよび図21Bは、変型例2にかかる指示情報を説明するための図である。なお、生成部16は、図18におけるOp.1終了後、Op.2乃至Op.5を省略して、Op.6を実行する。
図20に示すように、変型例2にかかる情報処理装置1は、表示装置2に、予め表示位置や大きさが指定された枠402を表示させる。なお、枠402は、指示情報に基づき表示される。ユーザーは、この枠402にマーカーが合致するように移動する。
図21Aは、枠412にマーカー414が合致したときのユーザーの見え方を示す。なお、枠412は枠402の表示が継続して表示されているものに対応する。また、ユーザーは、枠412とマーカー414とが一致した旨を示す入力を行う。これによって、カメラ204は画像データを撮影し、表示装置2から情報処理装置1へ画像データが送られる。
また、図21Bは、枠412にマーカー414が合致したときの画像データに対応するカメラ画像416である。このように、カメラ画像においては、マーカー414は、マーカー418のように撮影される。指示情報に基づく枠402(または412)は、並進ベクトルや回転行列が既知である(予め設定されている)。よって、予め設定されている並進ベクトルや回転行列と、図21Bの状態で撮影された画像データに対する画像認識処理結果(並進ベクトルおよび回転行列)とから、補正情報が生成される。
[変型例3]
変型例3にかかる情報処理装置1は、キャリブレーション処理におけるOp.2で取得した画像データが、補正情報を生成するために適切か画像データであるか否かを判定する処理を、追加的に実行する。
例えば、Op.4において認識部15による画像認識が成功した場合に(Op.4Yes)、制御部10は、領域情報で示されるマーカーの大きさ(ピクセル)が、所定の範囲に収まっているか否かを判定する。マーカーの大きさが所定の範囲に収まる場合に、制御部10は、当該画像データは補正情報を生成するために適切であると判定する。
また、認識部15の画像認識処理結果における回転行列に基づき、画像データが補正情報を生成するために適切であるか否かを判定してもよい。例えば、回転行列が所定の閾値よりも大きい場合(マーカーが傾きすぎている場合)、制御部10は、当該画像データは補正情報を生成するために適切でないと判定する。さらに、複数のマーカーが認識された場合には、制御部10は、当該画像データは補正情報を生成するために適切でないと判定する。
[変型例4]
変型例4にかかる情報処理装置1は、キャリブレーション処理におけるOp.9で取得した画像データが、正確な補正情報を生成するために適切か否かを判定する処理を、追加的に実行する。ここでは、ユーザーが指示情報に応じて適切に移動を行ったかを判定することで、例えば、図15Aにおける枠322とマーカー314とが一致していないにもかかわらず、ユーザーがユーザー入力を行った場合に、その画像データを用いて補正情報が生成されることを防止する。
例えば、Op.5にて保存されている認識処理結果と、Op.10で認識されたときの認識処理結果とが、一定割合以上異なる値である場合には、制御部10は、Op.9で取得した画像データは、適切な補正情報を生成するために適切であると判定する。
[変型例5]
補正情報は、ARコンテンツCの表示制御処理においてのみではなく、ARコンテンツCの生成処理においても利用されてもよい。ARコンテンツCの生成処理とは、ARコンテンツCとして利用するモデルデータを生成するとともに、特定の物体(例えばマーカーM)相対でのモデルデータの配置を決定する処理である。なお、ARコンテンツCの生成処理は、オーサリング処理とも呼ばれる。また、配置が決定されたモデルデータが、ARコンテンツCとなる。
ARコンテンツCの生成処理では、非透過型ディスプレイが表示デバイスとして用いられ、ユーザーはカメラが撮影したカメラ画像が表示された非透過型ディスプレイを見ながら、モデルデータの配置を指定することが一般的である。非透過型ディスプレイで指定された位置(スクリーン座標系)が、カメラとマーカーMとの位置関係に基づき、マーカー座標系の位置に変換され、ARコンテンツCの配置情報(位置情報および回転情報)として保存される。この一連の処理についての詳細は後述するが、上記透視変換処理およびモデルビュー変換処理を、AR表示制御処理とは逆順序で実行することで、スクリーン座標がマーカー座標に変換される。
しかし、光学透過型HMDのような表示装置2を表示デバイスとして利用して、ARコンテンツCの配置を決定した場合、ユーザーは自身の眼で見た現実空間に対して、ARコンテンツCの配置位置を、入力用デバイスを用いて指定する事となる。つまり、画像データにおいて、必ずしもARコンテンツCの配置位置は、現実空間の対象物(例えば、ヒビ)と合致しているとは限らない。
そこで、情報処理装置1は、ユーザー(眼)とカメラとの視差を考慮して、ユーザーが指定した位置に対応する光学透過型ディスプレイ202上の位置を推定する必要がある。例えば、視差を示す補正情報を用いてユーザーの指定位置を補正した上で、透視変換およびモデル―ビュー変換を実行する。
なお、本変型例5では、先の実施例と同様に、表示装置2におけるカメラ204が撮影した画像データを、情報処理装置1が取得し、取得した画像データを用いて、情報処理装置1がARコンテンツ情報の生成を行うものとする。
[ハードウェア構成例]
各実施例に示した情報処理装置1、表示装置2、管理装置3のハードウェア構成について説明する。図22は、情報処理装置のハードウェア構成例である。各実施例における情報処理装置1は、コンピュータ1000によって、実現される。図11に示す機能ブロックは、例えば、図22に示すハードウェア構成により実現される。コンピュータ1000は、例えば、プロセッサ1001、Random Access Memory(RAM)1002、Read Only Memory(ROM)1003、ドライブ装置1004、記憶媒体1005、入力インターフェース(入力I/F)1006、入力デバイス1007、出力インターフェース(出力I/F)1008、出力デバイス1009、通信インターフェース(通信I/F)1010、カメラモジュール1011、加速度センサ1012、角速度センサ1013、表示インターフェース1014、表示デバイス1015およびバス1016などを含む。それぞれのハードウェアはバス1016を介して接続されている。
通信インターフェース1010はネットワークNを介した通信の制御を行なう。通信インターフェース1010が制御する通信は、無線通信を利用して、無線基地局を介してネットワークNにアクセスする態様でもよい。通信インターフェース1010の一例は、ネットワーク・インタフェース・カード(NIC)である。入力インターフェース1006は、入力デバイス1007と接続されており、入力デバイス1007から受信した入力信号をプロセッサ1001に伝達する。出力インターフェース1008は、出力デバイス1009と接続されており、出力デバイス1009に、プロセッサ1001の指示に応じた出力を実行させる。入力インターフェース1006および出力インターフェース1008の一例は、I/Oコントローラである。
入力デバイス1007は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ1000の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス1009は、プロセッサ1001の制御に応じて情報を出力する装置である。出力デバイス1009は、例えば、スピーカーなどの音声出力装置などである。
表示インターフェース1014は、表示デバイス1015と接続されている。表示インターフェース1014は、表示インターフェース1014に設けられた表示用バッファにプロセッサ1001により書き込まれた画像データを、表示デバイス1015に表示させる。表示インターフェース1014の一例は、グラフィックカードやグラフィックチップである。表示デバイス1015は、プロセッサ1001の制御に応じて情報を出力する装置である。表示デバイス1015は、非ディスプレイなどの画像出力装置が用いられる。
また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス1007及び表示デバイス1015として用いられる。また、入力デバイス1007及び表示デバイス1015が、コンピュータ1000内部に組み込まれる代わりに、例えば、入力デバイス1007及び表示デバイス1015が、コンピュータ1000に外部から接続されてもよい。
RAM1002は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAM以外にもフラッシュメモリなどが用いられてもよい。ROM1003は、PROM(Programmable ROM)なども含む。
ドライブ装置1004は、記憶媒体1005に記憶された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体1005は、ドライブ装置1004によって書き込まれた情報を記憶する。記憶媒体1005は、例えば、ハードディスク、SSD(Solid State Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの種類の記憶媒体のうちの少なくとも1つである。また、例えば、コンピュータ1000は、コンピュータ1000内の記憶媒体1005の種類に対応したドライブ装置1004を含む。
カメラモジュール1011は、撮像素子(イメージセンサ)を含み、撮像素子が光電変換して得られたデータを、カメラモジュール1011に含まれる入力画像用の画像バッファに書き込む。加速度センサ1012は、加速度センサ1012に対して作用する加速度を計測する。角速度センサ1013は、角速度センサ1013による動作の角速度を計測する。
プロセッサ1001は、ROM1003や記憶媒体1005に記憶されたプログラムをRAM1002に読み出し、読み出されたプログラムの手順に従って処理を行なう。プロセッサ1001は、例えば、Central Processing Unit(CPU)、Micro−Processing Unit(MPU)、Digital Signal Processor(DSP)などである。例えば、制御部10の機能は、プロセッサ1001が、キャリブレーション処理や表示制御処理が規定されたプログラムに基づいて、他のハードウェアの制御を行なうことにより実現される。
通信部11や取得部12、出力13の機能は、プロセッサ1001が、通信インターフェース1010を制御してデータ通信を実行させ、受信したデータを記憶媒体1005に格納させることにより実現される。
記憶部14の機能は、ROM1003および記憶媒体1005がプログラムファイルやデータファイルを記憶すること、また、RAM1002がプロセッサ1001のワークエリアとして用いられることによって実現される。例えば、ARコンテンツ情報、テンプレート情報などがRAM1002に格納される。
次に、図23は、コンピュータ1000で動作するプログラムの構成例を示す。コンピュータ1000において、ハードウェア群の制御を行なうOS(オペレーティング・システム)2002が動作する。OS2002に従った手順でプロセッサ1001が動作して、HW(ハードウェア)2001の制御・管理が行なわれることで、AP(アプリケーションプログラム)2004やMW(ミドルウェア)2003による処理がHW2001上で実行される。
コンピュータ1000において、OS2002、MW2003及びAP2004などのプログラムは、例えば、RAM1002に読み出されてプロセッサ1001により実行される。また、各実施例に示したプログラムは、例えば、MW2003としてAP2004から呼び出されるプログラムである。
キャリブレーションプログラムや表示制御プログラムは、記憶媒体1005に記憶される。記憶媒体1005は、本実施例に係るプログラム単体または、他のプログラムを含むAR制御プログラムを記憶した状態で、コンピュータ1000本体と切り離して流通され得る。
また、表示装置2は、図2に示す各種構成に加え、プロセッサ、通信I/F、カメラモジュール等を含む。
次に、各実施例における管理装置3のハードウェア構成について説明する。図24は、管理装置3のハードウェア構成例である。管理装置3は、コンピュータ3000によって、実現される。管理装置3は、例えば、図24に示すハードウェア構成により実現される。
コンピュータ3000は、例えば、プロセッサ3001、RAM3002、ROM3003、ドライブ装置3004、記憶媒体3005、入力インターフェース(入力I/F)3006、入力デバイス3007、出力インターフェース(出力I/F)3008、出力デバイス3009、通信インターフェース(通信I/F)3010、SAN(Storage Area Network)インターフェース(SAN I/F)3011、及びバス3012などを含む。それぞれのハードウェアはバス3012を介して接続されている。
例えば、プロセッサ3001はプロセッサ1001と同様なハードウェアである。RAM3002は、例えばRAM1002と同様なハードウェアである。ROM3003は、例えばROM1003と同様なハードウェアである。ドライブ装置3004は、例えばドライブ装置1004と同様なハードウェアである。記憶媒体3005は、例えば記憶媒体1005と同様なハードウェアである。入力インターフェース(入力I/F)3006は、例えば入力インターフェース1006と同様なハードウェアである。入力デバイス3007は、例えば入力デバイス1007と同様なハードウェアである。
出力インターフェース(出力I/F)3008は、例えば出力インターフェース1008と同様なハードウェアである。出力デバイス3009は、例えば出力デバイス1009と同様なハードウェアである。通信インターフェース(通信I/F)3010は、例えば通信インターフェース1010と同様なハードウェアである。SAN(Storage Area Network)インターフェース(SAN I/F)3011は、コンピュータ3000をSANに接続するためのインターフェースであり、HBA(Host Bus Adapter)を含む。
プロセッサ3001は、ROM3003や記憶媒体3005に記憶された管理プログラムをRAM3002に読み出し、読み出された管理プログラムの手順に従って処理を行なう。その際にRAM3002はプロセッサ3001のワークエリアとして用いられる。なお、管理プログラムは、管理装置3の管理機能にかかるプログラムであって、管理装置3側で表示制御を行う場合には各実施例にかかる表示制御プログラムも含まれる。
ROM3003および記憶媒体3005が、プログラムファイルやデータファイルを記憶すること、もしくは、RAM3002がプロセッサ3001のワークエリアとして用いられることによって、管理装置3は、各種情報を記憶する。また、プロセッサ3001が、通信インターフェース3010を制御して通信処理を行なう。