以下、図面に基づいて各実施例について説明する。なお、以下の各実施例は、処理の内容を矛盾させない範囲で適宜組み合わせることが可能である。
まず、現実空間に対応する3次元の仮想空間上に配置されたコンテンツを、カメラが撮像する撮像画像(入力画像と言う)に、重ねて表示させるAR技術について説明する。コンテンツは、仮想空間上に配置される3次元物体のモデルデータである。また、モデルデータは、オブジェクトと称される。
コンテンツを撮像画像に重畳表示するためには、オブジェクトに対して仮想空間上での配置位置や配置姿勢を設定することで、コンテンツを作成する作業が必要となる。なお、この作業のことを、一般的に、コンテンツのオーサリング作業と称することがある。
オブジェクトは、例えば、複数の点を含むモデルデータである。複数の点を直線や曲線で補間して得られる複数の面ごとに模様(テクスチャ)が設定され、複数の面が合成されることで3次元のモデルが形成される。
コンテンツの仮想空間上での配置は、オブジェクトを構成する各点の座標が現実空間内に存在する基準物を基準に定められる。現実空間においてコンテンツが存在するわけではなく、基準物を基準として仮想空間上に、コンテンツは仮想的に配置される。
コンテンツが仮想空間上に配置される一方で、カメラが撮像した撮像画像内に写り込んだ基準物の見え方(像)に基づいて、現実空間におけるカメラと基準物との位置関係が求められる。現実空間におけるカメラと基準物との位置関係と、仮想空間におけるコンテンツの配置位置(基準物とコンテンツの位置関係)により、仮想空間上でのカメラとコンテンツの位置関係が求められる。そして、仮想空間上でのカメラとコンテンツの位置関係に基づき、仮想空間に配置された仮想カメラがコンテンツを撮像した場合に得られる像が決定されるため、コンテンツを撮像画像に重畳表示することが可能となる。
ここで、仮想カメラは、あくまでも仮想空間に仮想的に配置されるカメラであるので、仮想的に仮想空間をどの位置(視線)からも撮像することが可能である。つまり、仮想カメラの位置は設定により変更することができ、合成画像におけるコンテンツの表示状態を制御することができる。
例えば、仮想カメラの位置を現実空間のカメラと同様に設定する場合は、現実空間に対応する仮想空間において、現実空間におけるカメラと同じ位置からコンテンツを撮像した場合の像が、合成画像に投影される。一方、仮想カメラの位置を実カメラとは独立に設定することで、現実空間におけるカメラとは異なる位置から、仮想空間を撮像した場合の像が、合成画像に投影される。詳細については、後述するが、仮想カメラの設定によっては、コンテンツが配置された仮想空間を俯瞰的に撮像したような合成画像が生成される。
コンテンツの像を生成するための演算について、図1、図2、図3、および図4に基づいてさらに説明する。図1は、カメラ座標系とマーカー座標系との関係を示す。図1に示されるマーカーMは、基準物の一例である。図1に例示されるマーカーMは、正方形形状をしており、予めサイズが定められている(例えば1辺の長さが5cmなど)。なお、図1に示されるマーカーMは正方形形状であるが、複数の視点のうち、いずれの視点から、撮像して得られる像に基づいても、カメラからの相対的な位置および向きが判別可能な形状の他の物体が、基準物に用いられてもよい。
カメラ座標系は、(Xc,Yc,Zc)の3次元で構成され、例えばカメラの焦点を原点(原点Oc)とする。例えば、カメラ座標系のXc−Yc平面はカメラの撮像素子面と平行な面であり、Zc軸は撮像素子面に垂直な軸である。
なお、ここで原点として設定された位置が、仮想カメラの位置となる。つまり、俯瞰的に仮想空間をとらえるような仮想カメラを設定する場合には、カメラ座標系のXc−Yc平面はカメラの撮像素子面と垂直な面として設定されるとともに、Zc軸は撮像素子面に平行な軸となる。なお、AR技術における仮想カメラの設定について、従来の手法が利用される。
マーカー座標系は、(Xm,Ym,Zm)の3次元で構成され、例えばマーカーMの中心を原点(原点Om)とする。例えば、マーカー座標系のXm−Ym平面はマーカーMと平行な面であり、Zm軸はマーカーMの面と垂直である。原点Omは、カメラ座標系においては、座標V1c(X1c,Y1c,Z1c)で示される。
また、カメラ座標系(Xc,Yc,Zc)に対するマーカー座標系(Xm,Ym,Zm)の回転角は、回転座標G1c(P1c,Q1c,R1c)で示される。P1cはXc軸回りの回転角であり、Q1cはYc軸回りの回転角であり、R1cはZc軸回りの回転角である。図1に例示されるマーカー座標系は、Ym軸回りにのみ回転しているため、P1cおよびR1cは0である。なお、各々の回転角は、既知の形状を有する基準物が、処理対象となる撮像画像において、どのような像として撮像されているかに基づき、算出される。
図2は、カメラ座標系とマーカー座標系とにおけるコンテンツEの例を示す。図2に示すコンテンツEは、吹き出し形状のオブジェクトであり、吹き出し内に「ヒビあり!」というテキストデータを含む。コンテンツEの吹き出しの先の黒丸は、コンテンツEの基準点を示す。基準点のマーカー座標系における座標は、V2m(X2m,Y2m,Z2m)とする。
さらにコンテンツEの向きは回転座標G2m(P2m,Q2m,R2m)で定められ、コンテンツEのサイズは倍率D(Jx,Jy,Jz)で定められる。なお、コンテンツEの回転座標G2mは、マーカー座標系に対してコンテンツがどの程度回転した状態で配置されるのかを示す。例えば、G2mが(0,0,0)である場合には、マーカーと平行にコンテンツがAR表示されることとなる。
コンテンツEを構成する各点の座標は、オブジェクトの雛型である定義データ(ARテンプレート)に定義されている各点の座標が、基準点の座標V2m、回転座標G2mおよび倍率Dに基づいて調整された座標である。なお、ARテンプレートにおいては、基準点の座標を(0,0,0)として、各点の座標が定義される。
その後、当該ARテンプレートを採用したコンテンツの基準点V2mが設定されると、ARテンプレートを構成する各点の座標は、座標V2mに基づいて平行移動される。さらに、ARテンプレートに含まれる各座標は、設定された回転座標G2mに基づいて回転され、倍率Dで拡縮される。つまり、図2のコンテンツEは、ARテンプレートに定義された各点が、基準点の座標V2m、回転座標G2mおよび倍率Dに基づいて調整された点に基づいて構成された状態を示している。
マーカー座標系で座標が設定されたコンテンツEの各点の座標が、カメラ座標系に変換され、さらにカメラ座標系の座標に基づいて画面内の位置が算出されることにより、コンテンツEを重畳表示するための像が生成される。
コンテンツEに含まれる各点のカメラ座標系における座標は、マーカー座標系における各点の座標を、マーカーの原点Omのカメラ座標系における座標V1cおよび、カメラ座標系に対するマーカー座標系の回転座標G1cに基づき、座標変換(モデル−ビュー変換)することで算出される。例えば、モデル−ビュー変換が、コンテンツEの基準点V2mに対して行なわれることにより、マーカー座標系で規定された基準点が、カメラ座標系におけるどの点V2c(X2c,Y2c,Z2c)に対応するのかが求められる。
図3は、マーカー座標系からカメラ座標系への変換行列Mと、変換行列M内の回転行列Rを示す。変換行列Mは、4×4の行列である。変換行列Mと、マーカー座標系の座標Vmに関する列ベクトル(Xm,Ym,Zm,1)との積により、カメラ座標系の対応する座標Vcに関する列ベクトル(Xc,Yc,Zc,1)が得られる。
すなわち、列ベクトル(Xm,Ym,Zm,1)に座標変換(モデル−ビュー変換)対象のマーカー座標系の点座標を代入して、行列演算を行なうことにより、カメラ座標系の点座標を含む列ベクトル(Xc,Yc,Zc,1)が得られる。
変換行列Mの1〜3行目且つ1〜3列の部分行列(回転行列R)がマーカー座標系の座標に作用することにより、マーカー座標系の向きとカメラ座標系との向きを合わせるための回転操作が行なわれる。変換行列Mの1〜3行目且つ4列目の部分行列が作用することにより、マーカー座標系の向きとカメラ座標系との位置を合わせるための並進操作が行なわれる。
図4は、回転行列R1、R2およびR3を示す。なお、図3に示す回転行列Rは、回転行列R1、R2およびR3の積(R1・R2・R3)により算出される。また、回転行列R1は、Xc軸に対するXm軸の回転を示す。回転行列R2は、Yc軸に対するYm軸の回転を示す。回転行列R3は、Zc軸に対するZm軸の回転を示す。
回転行列R1、R2およびR3は、撮像画像内の基準物の像に基づき、生成される。つまり、回転角P1c、Q1c、R1cは、先に述べたとおり、既知の形状を有する基準物が、処理対象となる撮像画像において、どのような像として撮像されているかに基づき、算出される。算出された、回転角P1c、Q1c、R1cに基づき、各回転行列R1、R2およびR3は生成される。モデル−ビュー変換により得られた座標(Xc,Yc,Zc)は、仮想空間に仮想カメラが存在するとした場合について、コンテンツEの仮想カメラからの相対的な位置を示す。
ここで、仮想空間を俯瞰的に撮像する仮想カメラが設定された場合は、撮像画像内の基準物の像に基づき、回転角P1c、Q1c、R1cが算出されたのちに、各回転角P1cの値に−90(度)が加算される。そして、−90が加算されたP1cの値を用いて、回転行列Rが生成される。よって、回転行列Rに基づき得られる座標(Xc,Yc,Zc)は、仮想カメラの設定が反映された座標値となる。ただし、図1の例では、カメラ座標の原点を、実空間のカメラの焦点とし、さらに、仮想カメラを当該実空間のカメラと同様の位置に設定しているため、回転行列Rに基づき得られる座標(Xc,Yc,Zc)は、実空間のカメラの焦点からの相対位置となる。
つぎに、コンテンツEの各点のカメラ座標系の座標は、スクリーン座標系に変換される。スクリーン座標系は、(Xs,Ys)の2次元で構成される。また、スクリーン座標系(Xs,Ys)は、例えばカメラの撮像処理により得られる撮像画像の中心を原点(原点Os)とする。この座標変換(透視変換)により得られる各点のスクリーン座標系の座標に基づいて、コンテンツEを撮像画像に重畳表示する為の像が生成される。
カメラ座標系からスクリーン座標系への座標変換(透視変換)は、例えば、カメラの焦点距離fに基づいて行なわれる。カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のXs座標は、以下の式1で求められる。また、カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のYs座標は、以下の式2で求められる。
Xs=f・Xc/Zc (式1)
Ys=f・Yc/Zc (式2)
コンテンツEを構成する各点の座標(カメラ座標系)が透視変換されて得られる座標(スクリーン座標系)に基づいて、コンテンツEの像が生成される。コンテンツEは、コンテンツEを構成する複数の点を補間して得られる面にテクスチャをマッピングすることにより生成される。コンテンツEの元になるARテンプレートには、どの点を補間して面を形成するか、どの面にどのテクスチャをマッピングするかが定義される。
上述のモデル−ビュー変換および透視変換により、マーカー座標系の座標に対応する撮像画像上の座標が算出され、その座標を利用することで、カメラの視点に応じたコンテンツEの像が生成される。なお、生成されるコンテンツEの像は、コンテンツEの投影画像と呼ばれる。コンテンツEの投影画像が撮像画像に合成されることで、ユーザに提供される視覚的な情報が拡張される。
また、他の態様では、透過型ディスプレイにコンテンツEの投影画像が表示される。この態様においても、ユーザがディスプレイを透過して得られる現実空間の像と、コンテンツの投影画像とが整合するので、ユーザに提供される視覚的な情報が拡張される。
図5は、合成画像の例である。合成画像10は、パイプ11およびマーカーMが存在する現実空間を撮像した入力画像に対して、コンテンツEの投影画像が重畳表示されている。コンテンツEは、パイプH上のヒビを示して、「ヒビあり!」という情報を表示する。つまり、情報処理装置1のユーザは、マーカーMを撮像することで、合成画像11を介して、現実には存在しないコンテンツを閲覧することができ、ヒビの存在を容易に把握することができる。
以上、ARコンテンツが投影表示された合成画像の生成について説明した。このように、情報処理装置は、従来、カメラから順次入力画像を取得するとともに、処理対象の入力画像から基準物(マーカー)を認識した場合に、入力画像上にコンテンツの投影画像が重畳表示された合成画像を生成していた。よって、ユーザは合成画像に対して何らかの操作を実行する際、合成画像の表示が継続されるように、情報処理装置におけるマーカー認識を継続可能なように、情報処理装置を保持することが強いられていた。
そこで、本発明にかかわる情報処理装置は、所定のタイミングで、第一のモードと第二のモードとを切り替える。なお、第一のモードは、撮像装置から順次取得した複数の画像を記憶領域に格納するとともに、新たに取得した第一の画像から基準物が認識された場合に、該第一の画像に、該基準物に応じた表示データを重畳して表示するモードである。一方、第二のモードは、自装置に対する特定の動作が検出された場合に、該特定の動作を検出する前に前記記憶部に格納された前記第二の画像を取得するとともに、該第二の画像に対して前記表示データを重畳して表示するモードである。つまり、特定の動作が検出された場合には、順次取得される画像ではなく、過去の特定の画像を処理対象にAR表示が実行される。
[第一の実施例]
まず、第一の実施例に係る詳細な処理および情報処理装置等の構成について説明する。図6は、第一の実施例にかかるシステム構成図である。システムは、通信端末1−1および通信端末1−2、管理装置2を含む。なお、以下、通信端末1−1および通信端末1−2を総称して、情報処理装置1とする。
情報処理装置1は、例えば、カメラを有する、タブレットPCやスマートフォンなどのコンピュータである。たとえば、情報処理装置1は、点検作業を行う作業者により携帯される。情報処理装置1は、第一のモードと第二のモードを実行する。さらに、情報処理装置1は、ネットワークNを介して、管理装置2と通信する。ネットワークNは、例えば、インターネットである。
管理装置2は、例えば、サーバコンピュータであって、複数の情報処理装置1を管理する。管理装置2は、合成画像を生成するために必要な情報(コンテンツ情報、およびテンプレート情報)を記憶するとともに、必要に応じて、情報処理装置1に、これら情報を提供する。詳細については、後述する。
情報処理装置1は、入力画像から基準物を認識すると、合成画像を生成するために必要な情報に基づき、合成画像を生成するとともに、ディスプレイに表示する。さらに、基準物の認識した入力画像は、少なくとも一定時間、情報処理装置1のバッファ(後述の画像記憶部)に保持される。そして、特定の動作が検出された場合に、第一のモードから第二のモードへ切り替える。第二のモードにおいては、情報処理装置1は、順次取得される最新の画像ではなく、過去にバッファに記憶された画像を用いて合成画像を生成する。
本実施例においては、特定の動作は、情報処理装置1を保持するユーザが、情報処理装置1を傾ける動作等である。なお、特定の動作を、情報処理装置1で検知するための具体的手法については、後述する。
このように、たとえば、ユーザはカメラでマーカーを撮像することで、情報処理装置1は第一のモードにおいて合成画像を生成するとともに表示する。ユーザは、合成画像を長時間閲覧したい場合や、合成画像に対して操作を行いたい場合には、情報処理装置1を傾ける。情報処理装置1が傾けられた場合には、情報処理装置1は第一のモードから第二のモードへ切り替えを行うため、最新の画像から基準物が入力画像から認識されなくなったとしても、過去の画像に基づく合成画像を表示することができる。
次に、情報処理装置1の機能的構成について説明する。図7は、第一の実施例にかかる情報処理装置の機能ブロック図である。情報処理装置1は、制御部100、通信部101、撮像部102、計測部103、表示部104、記憶部109を含む。
制御部100は、情報処理装置1全体の各種処理を制御する。通信部101は、他のコンピュータと通信を行う。例えば、通信部101は、合成画像を生成する為に、コンテンツ情報およびテンプレート情報を、管理装置2から受信する。なお、コンテンツ情報およびテンプレート情報の詳細については、後述する。
撮像部102は、一定のフレーム間隔で画像を撮像するとともに、制御部100へ入力画像として、撮像した画像を入力する。たとえば、撮像部102は、カメラである。
計測部103は、自装置に対して与えられた回転量にかかわる情報を計測する。たとえば、計測部103は、加速度センサやジャイロセンサである。そして、計測部103は、加速度や角速度を、回転量にかかわる情報として計測する。なお、計測値(加速度や角速度)は、検出部105へ出力される。
表示部104は、合成画像やその他の画像を表示する。表示部104は、例えば、タッチパネル式ディスプレイである。記憶部109は、各種処理に必要な情報を記憶する。なお、各種処理に必要な用法については、後述する。
まず、制御部100について説明する。制御部100は、さらに、検出部105、取得部106、認識部107、生成部108を有する。検出部105は、計測部103から出力された計測値に基づき、情報処理装置1に対する特定の動作を検出する。また、検出部105は、検出結果に基づき、情報処理装置1が実行するモードを制御する。
具体的には、検出部105は、計測値に基づき、所定時間(T秒)内の回転量を計算する。なお、ここでは、加速度や角速度から、所定時間内の回転量を求めるが、加速度や角速度を閾値と比較することとしてもよい。回転量が閾値Th以上である場合、検出部105は、情報処理装置1に対する回転動作を検出する。なお、Tは、例えば1(秒)であって、Thは、例えば60°である。
特定の動作を検出するまでは、検出部105は、第一のモードの実行を制御する。一方、特定の動作が検出された場合には、検出部105は、第二のモードの実行を制御する。第一のモードは、新たに撮像された画像を処理の対象として、合成画像を生成する処理である。なお、撮像部102が新たに撮像された画像とは、画像記憶部110(上記バッファ)が格納する画像のうち、最も直近で格納された画像である。
一方、第二のモードは、画像記憶部110が記憶する画像のうち、特定の動作が検出される前に撮像された画像を処理の対象として、合成画像を生成する処理である。例えば、所定時間(T秒)前に撮像された画像が処理対象とされる。なお、処理対象の画像は、T秒よりもさらに前の画像であってもよい。また、画像記憶部110が、直近T秒間の間に撮影された画像を保持する構成である場合には、第二のモードにおいて、画像記憶部110における最も古い画像が処理対象とされる。
ユーザは、まず、基準物を含む画像を撮像することで、合成画像を閲覧する。そして、ユーザが合成画像に対して選択操作等の操作を行いたいと考える場合、情報処理装置1を傾ける。例えばユーザは、情報処理装置1に対して1秒間に60°以上の回転量を与える。したがって、特定の動作を検出した時点からT秒前に撮像された画像は、基準物を含む可能性が高い。言い換えると、特定の動作を検出した時点からT秒前に撮像された画像は、T秒前に実行されていた第一のモードにおいて、合成画像生成処理の処理対象となった画像である。
さらに、検出部105は、第二のモードを設定した場合には、画像記憶部110(上記バッファ)への画像データの書き込みを停止する。例えば、第一のモードが設定されている間は、制御部100は、撮像部102から順次画像を取得するたびに、画像記憶部110へ画像データを保存する。ただし、一定の間隔で、保存する画像データを間引いてもよい。また、画像記憶部110が、所定枚数の画像を保持する構成である場合には、最も古い画像データが最も新しい画像データに更新される。
一方、検出部105が、第二のモードを設定した場合には、画像記憶部110への画像データの保存を停止する。これは、第二のモードにおいては、過去の画像を処理対象とするが、処理対象の画像を、画像記憶部110に保持しておくためである。なお、検出部105は、撮像部102による撮像自体を停止することとしてもよい。
つぎに、取得部106は、合成画像生成処理の処理対象となる画像を取得する。例えば、取得部106は、第一のモードが設定されている場合、画像記憶部110に記憶された画像のうち、最新の画像を取得する。一方、取得部106は、第二のモードが設定されている場合、画像記憶部110に記憶された画像のうち、最も古い画像を取得する。
次に、認識部107は、処理対象の画像から基準物を認識する。本実施例においては、認識部107は、マーカーを認識する。例えば、認識部107は、マーカーの形状を既定したテンプレートを用い、テンプレートマッチングを行うことでマーカーを認識する。マーカーの認識方法として、他の既知の物体認識方法が適用されてもよい。
さらに、認識部107は、基準物が画像に含まれることを認識すると、基準物を識別する識別情報を取得する。例えば、マーカーIDが取得される。なお、マーカーIDは、マーカーを識別する識別情報である。例えば、基準物がマーカーである場合には、二次元バーコードと同様に、白と黒の配置から、一意のマーカーIDが取得される。マーカーIDを取得する方法として、他の既知の取得方法が適用されてもよい。
また、認識部107は、基準物を認識した場合、画像における基準物の像に基づいて、基準物の位置座標および回転座標を算出する。なお、基準物の位置座標および回転座標は、カメラ座標系での値である。さらに、認識部107は、基準物の位置座標および回転座標に基づき、変換行列Mを生成する。
生成部108は、処理対象の画像を用いて、合成画像を生成する。なお、合成画像の生成において、認識部107が生成した変換行列M、テンプレート情報、およびコンテンツ情報が利用される。生成部108は、生成した合成画像を、表示部104を制御することで、表示する。
次に、記憶部109について説明する。記憶部109は、さらに、画像記憶部110、テンプレート記憶部111、コンテンツ記憶部112を有する。画像記憶部110は、少なくとも、第一のモードが設定されている間の直近T秒間に撮像された画像について、画像データを記憶する。
図8は、画像記憶部のデータ構成例を示す。なお、撮像部102のフレームレートが20fpsであって、4フレームごとに画像記憶部110への画像データの格納が実行されることとする。また、検出部105は、1秒間(T秒間)の回転量に基づき、特定の動作を検出するものとする。
画像記憶部110は、最新の画像(Image1)、0.2秒前の画像(Image2)、0.4秒前の画像(Image3)、0.6秒前の画像(Image4)、0.8秒前の画像(Image5)、1.0秒前(Image6)の画像を記憶する。また、画像記憶部110は、1.2秒前の画像(Image7)を、予備の画像として保持してもよい。
図8のように、画像記憶部110は、予め決められた枚数分の画像を記憶する領域を有する。図8の例では、最新からT秒前の6枚分の画像データ、および、予備の画像データを合わせて、7枚分の画像データが、保持される。なお、画像記憶部110は、例えば、リングバッファにより構成される。撮像部102から、新たな画像が入力されると、4フレームごとに、最も古い画像のデータが、新しい画像のデータに書き換えられる。
第一のモードが実行されている間は、最新の画像(Image1)が書き換えられるとともに、書き換えられたImage1が処理の対象となる。一方、第二のモードにおいては、画像記憶部110への画像の書き込みが停止されるため、第二のモードに設定が変更された時点でT秒前に撮像されたImage6が書き換わることなく、第二のモードが設定されている間は、同一のImage6が処理対象とされる。
図9は、テンプレート記憶部のデータ構成例を示す。テンプレート記憶部111は、テンプレート情報を記憶する。なお、テンプレート情報は、オブジェクトとして適用される各テンプレートを定義するための情報を格納する。テンプレート情報は、テンプレートの識別情報(テンプレートID)、テンプレートを構成する各頂点の座標情報T21、およびテンプレートを構成する各面の構成情報T22(頂点順序およびテクスチャIDの指定)を含む。
頂点順序は、面を構成する頂点の順序を示す。テクスチャIDは、面にマッピングされるテクスチャの識別情報を示す。テンプレートの基準点は例えば0番目の頂点である。テンプレート情報テーブルに示される情報により、3次元モデルの形状および模様が定められる。
図10は、コンテンツ記憶部のデータ構成例を示す。コンテンツ記憶部112は、コンテンツに関するコンテンツ情報を格納する。なお、コンテンツは、オブジェクトに対して配置情報等が設定された情報である。
コンテンツ情報は、コンテンツのコンテンツID、マーカー座標系における基準点の位置座標(Xm,Ym,Zm)、マーカー座標系における回転座標(Pm,Qm,Rm)、ARテンプレートを基準とする倍率D(Jx,Jy,Jz)、ARテンプレートのテンプレートID、マーカーIDおよび追加情報を含む。なお、位置座標および回転座標は、同じレコードに格納されたマーカーIDに示されるマーカーを基準とするマーカー座標系での座標である。また、追加情報は、コンテンツEに追加される情報である。追加情報として、テキストや、Webページやファイルへのアクセス情報などが用いられる。
例えば、図10に示されたコンテンツIDが「C1」のコンテンツは、ARテンプレート「T1」に定義される各頂点座標が、Xm、Ym、Zm方向のそれぞれに拡縮され、回転座標(Pm1,Qm1,Rm1)で回転され、位置座標(Xm1、Ym1、Zm1)に応じて並進されて得られる各頂点により構成される。さらにコンテンツEを構成する面に追加情報がマッピングされる。
例えば、図10の例では、コンテンツID「C1」に対して、追加情報「いずれかの操作を行って、マニュアルを呼び出してください。上フリック:作業Aマニュアル、下フリック:作業Bマニュアル」が対応付けられている。これは、ユーザに対する指示内容を示す。例えば、ユーザは、追加情報を含むコンテンツを閲覧することで、次の作業内容を把握することができる。
次に、本実施例に関する各種処理の流れについて説明する。図11は、第一の実施例にかかるモード制御処理フローを示す。モード制御プログラムは、制御部100により実行されるモード制御処理の手順が定義されたプログラムである。まず、制御部100は、モード制御プログラムが起動されると、前処理を実施する。前処理においては、計測部103を起動させるとともに、モードを第一のモードに設定する。
そして、検出部105は、計測部103から計測値を取得する(Op.11)。検出部105は、計測値に基づき、T秒間の回転量を演算するとともに、回転量が閾値Th以上であるかを判定する(Op.13)。回転量が閾値Th以上である場合(Op.13Yes)、検出部105は、モードを、第一のモードから第二のモードへ変更する(OP.21)。また、検出部105は、画像記憶部110への画像データの書き込みを停止する(Op.23)。
一方、回転量が閾値Thよりも小さい場合には(Op.13No)、検出部105は、現在設定されているモードが、第二のモードであるかを判定する(Op.15)。第二のモードが設定されていない場合は(Op.15No)、検出部105はそのまま処理を終了する。
一方、第二のモードが設定されている場合には(Op.15Yes)、検出部105は、第二のモードの解除が入力されたか否かを判定する(Op.17)。例えば、ユーザにより、第二のモードを解除する旨の入力がなされた場合や、Op.13と同様に、T秒間に閾値Th以上の回転量を計測した場合には、第二のモードの解除が入力されたことが判定される。
第二のモードの解除が入力された場合には(Op.17Yes)、検出部105は、第二のモードを解除して、第一のモードを設定する(Op.19)。そして、検出部105は、画像記憶部110への画像の書き込みを再開する(Op.20)。一方、第二のモードの解除が入力されていない場合には(Op.17No)、検出部105は、そのまま処理を終了する。つまり、第二のモードが設定されたのちは、第二のモードが解除されるまで、第二のモードが継続される。
次に、モード制御処理と並行して行われる合成画像生成処理について、説明する。図12は、第一の実施例にかかる合成画像生成処理の処理フローチャートである。まず、制御部100は、合成画像生成プログラムが起動されると、前処理を行なう。前処理においては、テンプレート情報やコンテンツ情報が管理装置2から取得される。さらに、制御部100は、前処理において、AR表示モードの起動指示を行なう。なお、本実施例においては、仮想カメラとして、現実空間に存在するカメラと同じ視線を有するカメラが設定される。
また、制御部100は、前処理において、撮像部102に所定時間間隔での撮像を開始させる。なお、制御部100は、撮像部102から取得した画像を、画像記憶部110へ格納する。ただし、制御部100は、第二のモードの実行に伴い、画像の書き込みが停止されている場合には、画像記憶部110への画像の格納を行わない。
まず、取得部106は、現在設定されているモードが第一のモードであるのか判定する(Op.31)。そして、第一のモードが設定されている場合には(Op.31Yes)、取得部106は、画像記憶部110から、最新の画像を取得する(Op.33)。一方、第一のモードが設定されていない場合、すなわち、第二のモードが設定されている場合には(Op.31No)、取得部106は、画像記憶部110から、特定の動作が検知された時点からT秒前の画像を取得する(Op.35)。また、Op.33またはOp.35にて取得された画像が、以降の処理における処理対象の画像となる。
次に、認識部107は、処理対象の画像から、マーカーを認識可能か判定する(Op.37)。例えば、認識部107は、マーカーの形状を既定したテンプレートを用い、テンプレートマッチングを行うことでマーカーを認識する。
また、マーカーが認識された場合には、認識部107は、Op.37において、マーカーのマーカーIDの読みとりを行なう。マーカーIDの読みとりは、例えば、マーカーに該当する画像領域内の輝度の情報に基づいて行なわれる。例えば、マーカーが四角形状である場合、マーカーとして認識された四角形の画像領域を分割した各領域について、輝度が所定値以上の領域を「1」とし、輝度が所定値未満の領域を「0」として、各領域を所定の順序で、「1」または「0」のいずれであるかを判定し、判定して得られた情報の列をマーカーIDとする。
また、例えば、輝度が所定値以上の領域と所定値未満の領域の四角形枠内での配置をパターン化しておき、パターンに対応するマーカーIDを用いることとしてもよい。さらに、マーカーIDとして採用される数値範囲が予め定められており、読みとったマーカーIDがその数値範囲内でない場合には、マーカーIDが読みとれなかったと判定することとしてもよい。
認識部107がマーカーを認識しなかった場合(Op.37No)には、制御部100は、合成画像生成処理の終了が指示されたかを判定する(Op.45)。なお、第二のモードが設定された状態で、認識部107がマーカーを認識しなかった場合(Op.37No)は、画像記憶部110に記憶された他の画像に対して、マーカーの認識可否を判定してもよい。例えば、取得部106は、特定の動作を検出した時点からT秒よりもさらに前の画像を、処理対象として取得してもよい。そして、認識部107は、当該処理対象の画像に対して、マーカーの認識処理を行ってもよい。
処理の終了が指示されていなければ(Op.45No)、制御部100は、Op.31へ戻る。処理の終了が指示されている場合は(Op.45Yes)、一連の合成画像生成処理を終了する。
一方、認識部107が、マーカーを認識した場合には(Op.37Yes)、認識部107は、処理対象の画像におけるマーカーの像に基づき、マーカーの位置座標および回転座標を算出する(Op.39)。さらに、認識部107は、Op.39において、マーカーの位置座標および回転座標に基づき、変換行列Mを生成する。
次に、生成部108は、処理対象の画像、認識された基準物に対応するコンテンツ情報、テンプレート情報、変換行列Mを用いて、合成画像を生成する(Op.41)。そして、表示部104は、生成部108の制御の下、合成画像を表示する(Op.43)。そして、制御部100は、Op.45を実行する。
第一のモードが設定されている間は、合成画像は、最新の画像に対して、コンテンツの投影画像が重畳表示された画像である。一方、第二のモードが設定されている間は、合成画像は、T秒前の画像に対して、コンテンツの投影画像が重畳表示された画像である。つまり、基準物を含む可能性が高いT秒前の画像に基づく合成画像が、表示部104に表示される。
以上のように、本実施例によれば、情報処理装置1は、ユーザが特定の動作を実行したことを検知した場合、ユーザが特定の動作を行う前の撮像画像に対してコンテンツの重畳表示を行う。よって、最新の画像に対するAR表示(第一のモード)と、過去の画像に対するAR表示(第二のモード)とが切り替えられるとともに、第二のモードが解除されない限り、過去の画像に対するAR表示が継続される。よって、ユーザは、第二のモードの下、継続されているAR表示に対して、種々の操作を行うことができる。
また、本実施例においては、ユーザが情報処理装置1を回転させる動作を契機に、第一のモードと第二のモードとが切り替えられる。情報処理装置1はディスプレイ(表示部104)の裏側にカメラが配置されていることが多い。よって、情報処理装置1を回転させる動作を契機にすることで、動作後、ユーザは、合成画像が表示されたディスプレイに対する操作を容易に実施することができる。
図13Aおよび図13Bは、ユーザによる情報処理装置の保持姿勢と負荷の関係を説明するための図である。なお、図13Aおよび図13Bは、壁にマーカーMが添付されている状態を示す。そして、図13Aにおいて、ユーザは、情報処理装置1のディスプレイ裏面に配置されたカメラで、マーカーMを撮像している。そして、マーカーMに対応するコンテンツが重畳表示された合成画像が、情報処理装置1のディスプレイに表示される。なお、合成画像には、マーカーMの像M’も含まれる。
次に、図13Bは、ユーザが、情報処理装置1を、図13Aの状態から60°以上、回転させた場合を示す。すると、情報処理装置1のカメラは、マーカーMを撮像することはできなくなる。その一方、ユーザは、図13Bにおける左手でより安定的に情報処理装置1を支えることができる。したがって、ユーザは、ディスプレイに対して、右手で操作を行うことが容易となる。従来は、図13Bの状態であれば、合成画像の表示が行われなかったため、ユーザは図13Aの状態を意識的に継続せざるを得なかった。
本実施例においては、ユーザは、情報処理装置1によりマーカーMを撮像したのち、図13Bのように情報処理装置1を回転させることをトリガーに、過去の画像に対するAR表示に切り替えられる。つまり、ユーザが、図13Aのように、情報処理装置1を支持する負担が大きい状態から、図13Bのように、負担が小さい状態へ変化させたとしても、情報処理装置1は、合成画像の表示を継続することができる。
[第二の実施例]
第一の実施例においては、特定の動作が検出された場合に、第一のモードと第二のモードとが切り替える情報処理装置1について説明した。第二の実施例は、第二のモードに切り替えられたときに、コンテンツに関連する付加コンテンツを、管理装置からダウンロードする。なお、第二の実施例にかかる情報処理装置は、情報処理装置3と称する。
図14は、付加コンテンツを説明するための図である。合成画像20は、マーカー22およびバルブ26を含む現実空間を撮像した画像に、コンテンツ24が投影された画像である。コンテンツ24は、「いずれかの操作を行って、マニュアルを呼び出してください。上フリック:作業Aマニュアル、下フリック:作業Bマニュアル」というテキスト情報を含む。情報処理装置3は、ユーザによるフリック操作を検知することで、操作に応じて、各作業のマニュアルを、付加コンテンツとして新たに表示する。
ここで、付加コンテンツのデータを取得するタイミングについて、説明する。なお、付加コンテンツは、管理装置2により管理される。また、付加コンテンツは、マニュアルや動画、音声等、データ量の大きなデータとなることも多い。よって、コンテンツ24とともに一度に表示するのではなく、ユーザがフリック操作等を行うことで、付加コンテンツが表示される。つまり、コンテンツ24と付加コンテンツとが段階的に表示される。
例えば、テンプレート情報、コンテンツ情報と同様に、付加コンテンツのデータも、予め管理装置2から取得されることが考えられる。しかし、この場合、ユーザが呼び出す可能性が低い付加データも、予め管理装置2から取得することとなるため、特にデータ量が大きい付加データの場合には、ネットワークNに対する通信負荷が高くなる。
そこで、本実施例においては、情報処理装置3は、ユーザによる特定の動作を検出したタイミングで、付加コンテンツのデータを管理装置2から取得する。例えば、ユーザが、情報処理装置3を、一定時間内に閾値以上の回転量で回転させた場合に、情報処理装置3は、管理装置2に対して、付加コンテンツの送信を要求する。なお、第一の実施例同様、モードの切り替えも実行される。
付加コンテンツは、コンテンツ(合成画像)に対するユーザの操作に応じて呼び出される。よって、ユーザが、第一のモードから第二のモードへ切り替えるために、特定の動作を行ったということは、その後、コンテンツに対する操作に応じて、付加コンテンツが呼び出される可能性が高いことが推測される。
よって、情報処理装置3は、特定の動作を検出した場合であって、かつ、合成画像に含まれるコンテンツに対して付加コンテンツが存在する場合には、管理装置2から付加コンテンツを取得する。テンプレート情報やコンテンツ情報と同様に予め付加コンテンツを管理装置2から取得する場合と比較して、ネットワークNの負荷が増大することを防ぐことができる。
図15は、第二の実施例にかかる情報処理装置の機能ブロック図である。情報処理装置3は、通信部101、撮像部102、計測部103、表示部104、制御部300、記憶部304を含む。なお、第一の実施例にかかる情報処理装置1と同様の処理を行う処理部については、同一の符号を付し、説明を省略する。
制御部300は、検出部301、取得部106、認識部302、生成部303を含む。検出部301は、第一の実施例と同様に、特定の動作を検出するとともに、特定の動作が検出された場合に、第一の実施例と同様に、第一のモードから第二のモードへ切り替える。さらに、特定の動作が検出された場合であって、合成画像内のコンテンツに付加コンテンツが対応付けられている場合には、検出部301は、通信部101を制御して、付加コンテンツの要求を行う。なお、コンテンツと、付加コンテンツの対応関係は、管理情報によって定義される。
認識部302は、第一の実施例と同様、処理対象の画像から基準物を認識する。ただし、第二のモードが設定されている場合であって、基準物を画像から認識した場合には、検出部301に認識した基準物の識別情報(マーカーID)を出力する。
生成部303は、第一の実施例と同様、処理対象の画像に基づき、合成画像を生成する。さらに、合成画像表示後、ユーザによる操作に応じて、表示部104を制御して、付加コンテンツを表示する。例えば、図14における合成画像20が表示された後、ユーザにより下フリックが入力された場合には、生成部303は、表示部104を制御して、作業Bマニュアルを表示する。
記憶部304は、画像記憶部110、テンプレート記憶部111、コンテンツ記憶部112、管理情報記憶部305を含む。管理情報記憶部305は、管理情報を記憶する。管理情報は、コンテンツに対応する付加コンテンツおよび付加コンテンツを呼び出すための操作を管理する情報である。
管理情報記憶部305は、コンテンツID、操作種別、付加コンテンツID、アクセス先等の情報を対応付けて記憶する。
図16は、管理情報記憶部305のデータ構成例を示す。例えば、コンテンツID「C1」のコンテンツについては、上フリック操作が入力された場合に、付加コンテンツID「SC1」が表示されることが規定されている。さらに、付加コンテンツID「SC1」は、アクセス先「URL1」から取得されることが規定されている。なお、アクセス先は、管理装置2が付加コンテンツID「SC1」に対応するデータを格納する場所を示す情報である。
例えば、検出部301は特定の動作を検出した場合、第二のモードに切り替えを行う。そして、第二のモードにおいては、取得部106は、特定の動作が検出された時点からT秒前の画像を画像記憶部110から取得する。そして、認識部302は、T秒前の画像からマーカーを認識すると、認識したマーカーのマーカーIDを、検出部301へ出力する。
検出部301は、コンテンツ記憶部112から、マーカーIDに対応するコンテンツIDを取得するとともに、管理情報記憶部305を参照し、通信部101を制御して、コンテンツIDに対応するアクセス先へアクセスする。つまり、検出部301は、付加コンテンツの送信要求を、管理装置2に対して行う。このように、第二のモードにおいて認識された基準物について、付加コンテンツが設定されている場合には、第二のモードへの切り替えが行われた後に、付加コンテンツが管理装置2より取得される。
次に、本実施例に関する各種処理の流れについて説明する。図17は、第二の実施例にかかるモード制御処理フローを示す。モード制御プログラムは、制御部300により実行されるモード制御処理の手順が定義されたプログラムである。なお、第一の実施例にかかるモード制御処理と同様の処理については、同一の符号を付すとともに、説明を簡略化する。
まず、制御部300は、モード制御プログラムが起動されると、第一の実施例と同様の前処理を実施する。そして、検出部301は、計測部103から計測値を取得する(Op.11)。検出部301は、計測値に基づき、回転量が閾値Th以上であるかを判定する(Op.13)。回転量が閾値Th以上である場合(Op.13Yes)、検出部301は、モードを、第一のモードから第二のモードへ変更する(OP.21)。また、検出部301は、画像記憶部110への画像データの書き込みを停止する(Op.23)。
さらに、検出部301は、認識部302から、マーカーIDを取得しているか判定する(Op.51)。マーカーIDを取得するまで待機する(Op.51No)。なお、後述の合成画像生成処理において、第二のモードが設定されている場合であって、かつ基準物が認識されなかった場合には、ユーザに対して、再度基準物を撮影するようにメッセージを出力してもよい。そして、認識部302は、第二のモードを解除する旨の命令を検出部301に出力する。この場合には、検出部301は、Op.51における待機状態を解除するとともに、第二のモードを解除する。
マーカーIDを取得した場合は(Op.51Yes)、検出部301は、付加コンテンツがあるか判定する(Op.53)。つまり、検出部301は、マーカーIDをキーに、コンテンツ記憶部112を検索し、対応するコンテンツIDを取得する。さらに、検出部301は、コンテンツIDをキーに、管理情報記憶部305を検索し、対応する付加コンテンツのアクセス先を特定する。なお、ここで、対応するコンテンツIDやアクセス先が検索されなかった場合には、付加コンテンツがないことが判定される。
付加コンテンツが存在する場合には(Op.53Yes)、検出部301は、通信部101を制御して、管理装置2から付加コンテンツを取得する(Op.55)。一方、付加コンテンツが存在しない場合には(Op.53No)、制御部300は、一連の処理を終了する。
なお、第一の実地例と同様、回転量が閾値Thよりも小さい場合には(Op.13No)、検出部301は、現在設定されているモードが、第二のモードであるかを判定する(Op.15)。第二のモードが設定されていない場合は(Op.15No)、検出部301はそのまま処理を終了する。
一方、第二のモードが設定されている場合には(Op.15Yes)、検出部301は、第二のモードの解除が入力されたか否かを判定する(Op.17)。例えば、ユーザにより、第二のモードを解除する旨の入力がなされた場合、T秒間に閾値Th以上の回転量を計測した場合、認識部302から第二のモードの解除命令が入力された場合には、第二のモードの解除が入力されたことが判定される。
第二のモードの解除が入力された場合には(Op.17Yes)、検出部301は、第二のモードを解除して、第一のモードを設定する(Op.19)。そして、検出部301は、画像記憶部110への画像の書き込みを再開する(Op.20)。一方、第二のモードの解除が入力されていない場合には(Op.17No)、検出部301は、そのまま処理を終了する。
次に、モード制御処理と並行して行われる第二の実施例にかかる合成画像生成処理について、説明する。図18は、第二の実施例にかかる合成画像生成処理の処理フローチャートである。なお、第一の実施例にかかる合成画像生成処理と同様の処理については、同一の符号を付すとともに説明を簡略化する。
まず、制御部300は、合成画像生成プログラムが起動されると、第一の実施例と同様の前処理を行なう。ただし、前処理においては、テンプレート情報やコンテンツ情報、管理情報が管理装置2から取得されるが、付加コンテンツのデータは取得されない。
取得部106は、現在設定されているモードが第一のモードであるのか判定する(Op.31)。そして、第一のモードが設定されている場合には(Op.31Yes)、取得部106は、画像記憶部110から、最新の画像を取得する(Op.33)。そして、認識部302は、最新の画像からマーカーが認識可能か判定する(Op.61)。マーカーが認識可能な場合には(Op.61Yes)、Op.39が実行される。
第一のモードが設定されていない場合、すなわち、第二のモードが設定されている場合には(Op.31No)、取得部106は、画像記憶部110から、T秒前の画像を取得する(Op.35)。そして、認識部302は、T秒前の画像からマーカーを認識可能か判定する(Op.63)。マーカーを認識可能である場合には(Op.63Yes)、認識部302は、認識したマーカーのマーカーIDを検出部301へ出力する(Op.65)。そして、Op.39が実行される。なお、Op.65で出力されたマーカーIDは、図17におけるOp.51にて検出部301により取得される。
一方、マーカーを認識不能である場合には(Op.63No)、認識部302は、検出部301へ第二のモードの解除を命令する(Op.67)。認識部302は画像記憶部110に記憶された他の画像に対して、マーカーの認識可否を判定してもよい。また、制御部300は、ユーザに対して、再度マーカーを撮像する旨のメッセージを、表示部104を介して出力してもよい。
ここで、検出部301は解除命令を取得すると、Op.51においてマーカーIDの取得を待機する検出部301の待機状態を解除し、いったん、モード制御処理を終了する。そして、新たに、モード制御処理が開始されたのちに、検出部301は、図17におけるOp.17にて肯定の判定を行い、Op.19において、第二のモードを解除する。
次に、Op.39において、認識部302は、処理対象の画像におけるマーカーの像に基づき、マーカーの位置座標および回転座標を算出する(Op.39)。また、認識部302は、マーカーの位置座標および回転座標に基づき、変換行列Mを生成する。
次に、生成部303は、認識された基準物に対応するコンテンツ情報、テンプレート情報、変換行列Mを用いて、合成画像を生成する(Op.41)。そして、表示部104は、生成部303の制御の下、合成画像を表示する(Op.43)。そして、制御部300は、合成画像に対するユーザの操作が入力されたか否かを判定する(Op.69)。例えば、表示部104がタッチパネルである場合に、時系列で入力されたタッチ位置の変化に基づき、フリック操作およびフリック操作の方向が検出される。
そして、ユーザの操作が入力された場合に(Op.69Yes)、表示部104は、生成部303の制御の下、付加コンテンツを表示する(Op.71)。なお、第一のモードから第二のモードに切り替えられたのちに、ユーザが操作を実行することが前提となるが、第一のモードにおいてユーザが操作を実行した場合には、Op.71の前に、付加コンテンツを管理装置2から取得してもよい。ただし、取得するまで、付加コンテンツの表示は待機される。
Op.61にて否定の判定がなされた場合、Op.67が実行された後、Op.69にて否定の判定がなされた場合、さらにはOp.71が実行された後には、制御部300は、処理の終了が指示されたかを判定する(Op.45)。処理の終了が指示されていなければ(Op.45No)、制御部300は、Op.31へ戻る。処理の終了が指示されている場合は(Op.45Yes)、一連の合成画像生成処理を終了する。
以上のように、情報処理装置3は、第二のモードへの切り替えのタイミングで、付加コンテンツの取得を行う。つまり、情報処理装置3はユーザが第二のモードへの切り替えを行ったということを、コンテンツに対する操作の入力の前段階であると推定する。つまり、コンテンツが付加コンテンツに対応付けられている場合には、その後のユーザの操作によって、情報処理装置3は付加コンテンツが呼び出される可能性が高いと推定する。よって、情報処理装置3は、ユーザによる合成画像に対する操作にかかわる負荷を軽減するとともに、操作に伴い呼び出される可能性が高い付加コンテンツのダウンロードタイミングを制御することができる。
[第三の実施例]
第三の実施例は、第二のモードにおいて、過去の画像に対するAR表示を行う点は、第一の実施例および第二の実施例と同様である。ただし、仮想カメラの設定を、第一のモードと第二のモードで切り替える。第三の実施例は、第二のモードにおいては、仮想カメラを俯瞰的な視点となるように設定する。つまり、合成画像におけるARコンテンツの表示状態が、第一のモードにおける正対表示から、第二のモードにおける俯瞰表示に切り替えられる。なお、第三の実施例にかかる情報処理装置は、情報処理装置4と称する。
具体的には、第三の実施例は、コンテンツが仮想的に配置された仮想空間を、上からとらえたようなコンテンツの投影画像を、処理対象の画像上に重畳することで、合成画像を生成する。ただし、合成画素の元となる現実空間の撮像画像は、現実空間に存在するカメラが撮像した画像であるため、コンテンツのみが俯瞰的な視点で投影されることとなる。
図19Aおよび図19Bは、第三の実施例を説明するための図である。図19Aは、第一のモードにおいて生成された合成画像30を示す。また、図19Bは、第二のモードにおいて生成された合成画像50を示す。
図19Aのように、合成画像30が、マーカー38に対応する複数のコンテンツ40を含む場合がある。なお、コンテンツ40は、コンテンツ40−1、コンテンツ40−2、コンテンツ40−3、コンテンツ40−4、コンテンツ40−5、コンテンツ40−6、コンテンツ40−7の総称である。なお、合成画像30は、パイプ32と、計器34、計器36、マーカー38を含む現実空間の撮像画像に対して、コンテンツ40が重畳表示された画像である。
合成画像30においては、コンテンツ40同士が重複して配置されてしまい、ユーザが、コンテンツのすべてを視認することができない場合がある。例えば、ユーザがコンテンツのいずれかを指定することで、指定されたコンテンツが拡大表示されたり、最前面に表示される機能を有する場合もあるが、ユーザが、合成画像上でいずれかのコンテンツを選択すること自体が困難な場合もある。
そこで、本実施例においては、第二のモードにおいて生成される合成画像については、仮想カメラの位置を制御することで、図19Bの合成画像50を生成する。合成画像50は、合成画像30と同様に、パイプ32、計器34、計器36、マーカー38を含む撮像画像に基づき生成される。ただし、複数のコンテンツ52は、上から撮像されたように、投影される。
なお、コンテンツ52は、コンテンツ52−1、コンテンツ52−2、コンテンツ52−3、コンテンツ52−4、コンテンツ52−5、コンテンツ52−6、コンテンツ52−7の総称である。また、コンテンツ52−1、コンテンツ52−2、コンテンツ52−3、コンテンツ52−4、コンテンツ52−5、コンテンツ52−6、コンテンツ52−7は、仮想空間において、コンテンツ40−1、コンテンツ40−2、コンテンツ40−3、コンテンツ40−4、コンテンツ40−5、コンテンツ40−6、コンテンツ40−7と同一である。
つまり、合成画像30においては、複数のコンテンツ40が重なった状態で表示されていたが、仮想カメラの視線を制御することで、合成画像50においては、複数のコンテンツ52の重なりを回避した状態で表示される。
例えば、ユーザが、合成画像30を閲覧して、コンテンツ40の重なりにより、コンテンツ40の選択操作が困難であると判断した場合に、ユーザは、情報処理装置4を回転させる。すると、第二のモードが設定されるため、他の視線からコンテンツを投影した合成画像50が表示される。すると、ある視線では重なりがあったコンテンツ40が、重なりが解除された状態で表示される。
なお、後述するように、ユーザは、合成画像50におけるいずれかのコンテンツ52を選択することで、さらに、選択されたコンテンツ50は、正対表示される。例えば、コンテンツ52−1が選択された場合には、コンテンツ40−1の状態の投影画像が表示される。よって、コンテンツ52内にテキストが表示される場合等には、ユーザは、俯瞰表示されたコンテンツ52を正対表示させることで、コンテンツ52内に表示されたテキストを視認することができる。
ここで、通常、オーサリング作業においては、コンテンツ同士が重ならないように、コンテンツの位置座標(三次元)が設定されることが好ましい。しかし、コンテンツ同士が重ならないように、コンテンツの位置座標(三次元)が設定されたとしても、実際にAR表示が実行される際には、カメラの位置によっては、コンテンツ同士が重なった状態で表示されうる。
しかし、オーサリング作業において、同一の位置座標を与えていない限り、ある一つの視線からの投影においては、コンテンツ同士が重なって表示されたとしても、他の視線からの投影においては、重なりが解除される。よって、第二のモードが設定されることで、コンテンツ同士の重なりが解除される可能性が高い。
次に、第三の実施例にかかる情報処理装置4の機能的構成について、説明する。図20は、第三の実施例にかかる情報処理装置の機能ブロック図である。なお、第一の実施例と同様の処理部については、同一の符号を付して、説明を省略する。
情報処理装置4は、通信部101、撮像部102、計測部103、表示部104、制御部400、記憶部109を含む。また、制御部400は、検出部401、取得部106、認識部402、生成部108を含む。さらに、記憶部109は、画像記憶部110、テンプレート記憶部111、コンテンツ記憶部112を含む。なお、記憶部109は、第二の実施例にかかる記憶部304であってもよい。この場合は、制御部400は、付加コンテンツの取得も行う。
検出部401は、第一の実施例同様、特定の動作を検出するとともに、特定の動作を検出した場合には、第一のモードから、第二のモードへ切り替える。第一の実施例と同様に、第一のモードは、最新の画像を処理対象としてAR表示を実行するモードであって、第二のモードは、特定の動作が検出された時点よりも過去の画像を処理対象としてAR表示を実行するモードである。
ただし、第三の実施例においては、各モードにおける仮想カメラの設定が異なる。第一のモードは、第一の実施例と同様に、仮想空間を現実空間のカメラと同様の位置から撮影する仮想カメラが設定される。一方、第二のモードにおいては、仮想カメラが仮想空間を俯瞰的に撮像する位置に設定される。なお、仮想カメラの設定は、検出部401により制御されるモードに応じて、制御部400が行う。
認識部402は、第一の実施例と同様に、処理対象の画像から基準物を認識する。また、認識部402は、変換行列Mを生成する過程で、仮想カメラの視線に基づき、回転行列を生成する。つまり、先に述べたとおり、例えば、第二のモードにおいては、処理対象の画像における基準物の像に基づき得られたP1cの値に、−90(度)を加算することで、表示状態を切り替える。
よって、認識部402は、検出部401により設定されたモードに応じて、仮想カメラの位置を設定する。そして、認識部402は、各モードにおける仮想カメラの位置に応じて、変換行列Mを生成する。なお、生成部108は、第一の実施例と同様に、変換行列Mに基づき、合成画像を生成するが、変換行列Mが各モードにおける仮想カメラに応じて生成されているため、先の実施例と同様の処理により、合成画像を生成することができる。
第三の実施例にかかるモード制御処理について説明する。第三のモード制御処理は、図11に示す第一のモード制御処理または、第二の実施例にかかるモード制御処理と同様である。ただし、いずれの処理においても、制御部400における検出部401が各種処理を行う。
次に、モード制御処理と並行して行われる合成画像生成処理について、説明する。図21は、第三の実施例にかかる合成画像生成処理の処理フローチャートである。なお、第一の実施例と同様の処理については、同一の符号を付すとともに、説明を簡略化する。
まず、制御部400は、合成画像生成プログラムが起動されると、第一の実施例と同様に、前処理を行なう。そして、取得部106は、現在設定されているモードが第一のモードであるのか判定する(Op.31)。そして、第一のモードが設定されている場合には(Op.31Yes)、取得部106は、画像記憶部110から、最新の画像を取得する(Op.33)。
一方、第一のモードが設定されていない場合、すなわち、第二のモードが設定されている場合には(Op.31No)、制御部400は、仮想カメラの設定を変更する(Op.81)。通常、仮想カメラは、現実空間に存在するカメラと同様の視線を有する位置に設定されるが、第二のモードが設定されている場合には、仮想空間を俯瞰的に撮像する位置に設定される。そして、取得部106は、画像記憶部110から、T秒前の画像を取得する(Op.35)。
次に、認識部402は、処理対象の画像から、マーカーを認識可能か判定する(Op.37)。認識部402がマーカーを認識しなかった場合(Op.37No)には、制御部400は、処理の終了が指示されたかを判定する(Op.45)。処理の終了が指示されていなければ(Op.45No)、制御部400は、Op.31へ戻る。処理の終了が指示されている場合は(Op.45Yes)、一連の合成画像生成処理を終了する。
一方、認識部402が、マーカーを認識した場合には(Op.37Yes)、認識部402は、処理対象の画像における、マーカーの像に基づき、マーカーの位置座標および回転座標を算出する(Op.83)。そして、認識部107は、マーカーの位置座標および回転座標に基づき、変換行列Mを生成する。ここで、マーカーの位置座標および回転座標の算出が算出される際、仮想カメラの位置が反映される。例えば、Op.81において、仮想カメラの設定が変更されている場合には、算出された回転座標が、仮想カメラの設定に応じて変換される。
次に、生成部108は、認識された基準物に対応するコンテンツ情報、テンプレート情報、変換行列Mを用いて、合成画像を生成する(Op.41)。そして、表示部104は、生成部108の制御の下、合成画像を表示する(Op.43)。そして、制御部400は、コンテンツ選択処理を実行する(Op.85)。そして、制御部400は、Op.45を実行する。
ここで、コンテンツ選択処理について説明する。図22は、コンテンツ選択処理のフローチャートである。表示部104が合成画像を表示したあと(Op.43)、制御部400は、指定位置情報を取得したかを判定する(Op.91)。なお、指定位置情報は、ユーザによるディスプレイに対する押下が行われた場合に、表示部104が備えるタッチセンサから出力される情報であって、ディスプレイ上の指定位置にかかる情報である。例えば、指定位置情報は、スクリーン座標系の座標値(Xs,Ys)である。
指定位置情報を取得していない場合には(Op.91No)、制御部400は、コンテンツ選択処理を終了する。一方、指定位置情報を取得している場合には(Op.91Yes)、制御部400は、コンテンツが選択されたか否かを判定する(Op.93)。具体的には、制御部400は、Op.91にて取得した指定位置情報(Xs,Ys)が、いずれかのARオブジェクトの投影画像の領域に含まれているか判定する。
コンテンツが選択されていない場合(Op.93No)、制御部400は、処理を終了する。一方、コンテンツが選択されている場合には(Op.93Yes)、選択されたコンテンツを特定するとともに、制御部400は、現在設定されているモードが第一のモードであるか判定する(Op.95)。
第一のモードが設定されている場合(Op.95Yes)、制御部400は、表示部104を制御し、選択されたコンテンツを拡大表示する(Op.97)。なお、ここでは、拡大表示の代わりに、選択されたコンテンツが最前面に表示されることとしてもよい。そして、制御部400は一連の処理を終了する。
また、第一のモードが設定されていない場合(Op.95No)、制御部400は、選択されたコンテンツを正対表示する(Op.99)。そして、制御部400は一連の処理を終了する。
以上のように、第三の実施例にかかる情報処理装置4は、コンテンツ同士が重なって表示されたことにより、ユーザによるコンテンツの選択操作が困難となる状況を回避する。さらに、ユーザが、いずれかのコンテンツを選択した場合に、第二のモードにおいて選択されたコンテンツが正対表示されるため、コンテンツ内にテキストが記述されている場合であっても、ユーザは、コンテンツの内容を閲覧することができる。
[変型例1]
第一の実施例、第二の実施例、第三の実施例においては、特定の動作を、ユーザによる情報処理装置の回転動作とした。つまり、情報処理装置は、T秒内の回転量が閾値以上である場合に、特定の動作を検出した。変型例1は、特定の動作として、他の動作を採用する例である。
例えば、特定の動作として、ユーザが、撮像部を物体で覆う動作が採用される。情報処理装置の筐体において、表示部(ディスプレイ)が設置された面と逆の面にカメラが設置されていることが多い。よって、ユーザが、カメラが備え付けられた面を下にして、情報処理装置が机やひざの上におく動作を行ったことを、検出部が検出する。
具体的には、検出部は、入力画像の輝度ヒストグラムを生成する。そして、検出部は、所定の輝度値以下の画素数が、閾値以上であるかを判定する。検出部は、所定の輝度値以下の画素数が閾値以上である場合に、カメラの視界が物体で遮られる動作が行われたことを検出する。
本変型例によれば、ユーザは、情報処理装置を、安定した物体の上においた状態で、合成画像に対する操作を行うことが可能である。なお、本変型例においては、入力画像の輝度ヒストグラムにおいて、所定の輝度値以下の画素数が、閾値よりも少なくなった場合に、検出部は、第二のモードを解除する判定を行う。
以上のように、所定の動作は、基準物が認識された入力画像を撮像装置が撮影したときの撮像方向を、基準物を撮像不能な方向へ変化させる動作である。
[変型例2]
第三の実施例において、仮想カメラの設定は、変換行列Mを生成する前段階で行われることを説明した。変型例2においては、情報処理装置は、変換行列Mの生成後に仮想カメラの設定による表示切替の制御を行う。
コンテンツEを構成する各点のマーカー座標系の座標(Xm,Ym,Zm)は、変換行列Mに基づくモデル−ビュー変換により、カメラ座標系の座標(Xc,Yc,Zc)に変換される。例えば、座標V2mはモデル−ビュー変換により座標V2cに変換される。そして、そのあと、第二のモードにおいては、さらに、図23に示す回転行列R4により、表示状態の切り替えが行われる。
図23は、仮想カメラの設定に応じた変換を行うための回転行列R4を示す。まず、仮想カメラを現実空間のカメラと同様の位置に設定したとして、先に説明した変換行列Mによってモデル−ビュー変換を行う。なお、モデル−ビュー変換された、コンテンツのカメラ座標系における座標(Xc,Yc,Zc)を、(X2c,Y2c,Z2c)とする。
そして、情報処理装置のチルト角の回転量をθとすると、回転行列R4を利用して、(X2c,Y2c,Z2c)を(X2c’,Y2c’,Z2c’)に変換する。つまり、仮想カメラが、現実空間における情報処理装置のチルト角においてθ回転させた位置に設定される。なお、変換後の座標(X2c’,Y2c’,Z2c’)が、式1および式2に基づき透視変換されることで、表示状態の切り替えが行われる。θは一定の値(例えば、90°)である。または、θは、ジャイロセンサ等から取得された値であってもよい。
[変型例3]
各実施例にかかる画像記憶部には、第一のモードにおいて、基準物が認識された画像のみが格納されるとしてもよい。よって、第二のモードは、画像記憶部から、基準物を含む画像が取得可能であって、必ず合成画像が生成される。
具体的には、各実施例にかかる第一のモードにおいて、撮像部から制御部は入力画像を取得する。そして、認識部が入力画像から基準物を認識した場合、生成部が合成画像を生成するとともに、認識部は画像記憶部に画像を格納する。なお、画像記憶部は、最新の入力画像(基準物を含む)のみを保持してもよいし、所定フレーム分の入力画像を保持してもよい。
そして、検出部の制御の下、第一のモードから第二のモードへ切り替わった場合に、取得部は、画像記憶部から画像を取得するが、取得される画像は、所定の動作を検出する前の画像であって、かつ基準物を含む画像である。先の実施例においては、画像記憶部から取得される画像は、基準物を含む可能性が高い画像であったが、変型例においては、画像記憶部から取得される画像は、基準物を確実に含む画像である。
以上のように、変型例3は、モード切り替え前に撮像された、基準物を確実に含む画像に対して、AR表示を継続することができる。
[ハードウェア構成例]
各実施例に示した装置のハードウェア構成について説明する。図24は、各実施例の情報処理装置のハードウェア構成例である。情報処理装置1、情報処理装置3、情報処理装置4は、コンピュータ1000によって、実現される。つまり、図7、図15及び図20に示す機能ブロックは、例えば、図24に示すハードウェア構成により実現される。
コンピュータ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、表示インターフェース(表示I/F)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は、ディスプレイなどの画像出力装置や、透過型ディスプレイなどが用いられる。
透過型ディスプレイが用いられる場合には、ARコンテンツの投影画像は、撮像画像と合成されるのではなく、例えば透過型ディスプレイ内の適切な位置に表示されるように制御されてもよい。これにより、ユーザは、現実空間とARコンテンツが整合した状態の視覚が得られる。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス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が、モード制御プログラムや合成画像生成プログラムに基づいて、他のハードウェアの制御を行なうことにより実現される。
通信部の機能は、プロセッサ1001が、通信インターフェース1010を制御してデータ通信を実行させ、受信したデータを記憶媒体1005に格納させることにより実現される。
記憶部の機能は、ROM1003および記憶媒体1005がプログラムファイルやデータファイルを記憶すること、また、RAM1002がプロセッサ1001のワークエリアとして用いられることによって実現される。例えば、コンテンツ情報、テンプレート情報、管理情報などがRAM1002に格納される。
撮像部の機能は、カメラモジュール1011が入力画像用の画像バッファに画像データを書込み、入力画像用の画像バッファ内の画像データをプロセッサ1001が読み出すことにより実現される。画像データは、モニタリングモードにおいては、例えば、入力画像用の画像バッファに書き込まれるとともに、表示デバイス1015の表示用バッファに並行して書き込まれる。
また、表示部の機能は、プロセッサ1001により生成された画像データが表示インターフェース1014に備えられた表示用バッファに書き込まれ、表示デバイス1015が表示用バッファ内の画像データの表示を行なうことにより実現される。
次に、図25は、コンピュータ1000で動作するプログラムの構成例を示す。コンピュータ1000において、ハードウェア群の制御を行なうOS(オペレーティング・システム)3002が動作する。OS3002に従った手順でプロセッサ1001が動作して、HW(ハードウェア)3001の制御・管理が行なわれることで、AP(アプリケーションプログラム)3004やMW(ミドルウェア)3003による処理がHW3001上で実行される。
コンピュータ1000において、OS3002、MW3003及びAP3004などのプログラムは、例えば、RAM1002に読み出されてプロセッサ1001により実行される。また、各実施例に示したモード制御プログラムおよび合成画像生成プログラムは、例えば、MW3003としてAP3004から呼び出されるプログラムである。
なお、モード制御プログラムと合成画像生成プログラムは、AR制御プログラムに含まれるとしてもよい。例えば、AR制御プログラムは、AP3004としてAR機能を実現させるプログラムである。AR制御プログラムは、記憶媒体1005に記憶される。記憶媒体1005は、モード制御プログラム若しくは合成画像生成プログラム単体または、AR制御プログラムを記憶した状態で、コンピュータ1000本体と切り離して流通され得る。
次に、各実施例における管理装置2のハードウェア構成について説明する。図26は、管理装置のハードウェア構成例である。管理装置2は、コンピュータ2000によって、実現される。管理装置2は、例えば、図26に示すハードウェア構成により実現される。コンピュータ2000は、例えば、プロセッサ2001、RAM2002、ROM2003、ドライブ装置2004、記憶媒体2005、入力インターフェース(入力I/F)2006、入力デバイス2007、出力インターフェース(出力I/F)2008、出力デバイス2009、通信インターフェース(通信I/F)2010、SAN(Storage Area Network)インターフェース(SAN I/F)2011及びバス2012などを含む。それぞれのハードウェアはバス2012を介して接続されている。
例えば、プロセッサ2001はプロセッサ1001と同様なハードウェアである。RAM2002は、例えばRAM1002と同様なハードウェアである。ROM2003は、例えばROM1003と同様なハードウェアである。ドライブ装置2004は、例えばドライブ装置1004と同様なハードウェアである。記憶媒体2005は、例えば記憶媒体1005と同様なハードウェアである。入力インターフェース(入力I/F)2006は、例えば入力インターフェース1006と同様なハードウェアである。入力デバイス2007は、例えば入力デバイス1007と同様なハードウェアである。
出力インターフェース(出力I/F)2008は、例えば出力インターフェース1008と同様なハードウェアである。出力デバイス2009は、例えば出力デバイス1009と同様なハードウェアである。通信インターフェース(通信I/F)2010は、例えば通信インターフェース1010と同様なハードウェアである。SAN(Storage Area Network)インターフェース(SAN I/F)2011は、コンピュータ2000をSANに接続するためのインターフェースであり、HBA(Host Bus Adapter)を含む。
プロセッサ2001は、ROM2003や記憶媒体2005に記憶されたプログラムをRAM2002に読み出し、読み出されたプログラムの手順に従って処理を行なう。その際にRAM2002はプロセッサ2001のワークエリアとして用いられる。なお、プログラムは、管理装置2における各種処理に係るプログラムを含む。たとえば、当該プログラムは、コンピュータ1000へ提供するテンプレート情報、コンテンツ情報、撮像条件情報を選択する処理等が、記述されたプログラムである。
ROM2003および記憶媒体2005が、プログラムファイルやデータファイルを記憶すること、もしくは、RAM2002がプロセッサ2001のワークエリアとして用いられることによって、管理装置2は、各種情報を記憶する。また、プロセッサ2001が、通信インターフェース2010を制御して通信処理を行なう。