以下詳細な本発明の実施例に関して説明する。なお、以下の各実施例は、処理の内容を矛盾させない範囲で適宜組み合わせることが可能である。
さらに、以下ではマーカーを利用するマーカー型ビジョンベースARを例に説明する。ただし、各実施例に開示の技術は、マーカーレス型ビジョンベースARにも適用可能である。本開示の技術がマーカーレス型ビジョンベースARに適用される場合には、画像認識処理において、認識対象の物体の形状を定義した辞書を予め準備し、当該辞書を用いて、画像データに対して画像認識処理が実行される。
[第一の実施例]
第一の実施例においては、カメラによる撮影処理が実行されている間に、画像認識処理を実行するか否かを制御する。例えば、第一の実施例は、カメラによる撮影処理が実行されている間に、撮影処理による撮影された画像データを画像認識処理に入力する第一のモードと、カメラによる撮影処理が実行されている間に、撮影処理により撮影された画像データに対して画像認識処理を行わない第二のモードとを用意し、各モードの実行を制御する。
図2は、第一の実施例に係るシステム構成例である。図2の例では、AR表示を行う表示装置の例として、通信端末1−1および通信端末1−2を示す。以下、これらを総称して、表示装置1とする。 また、表示装置1は、ネットワークNを介して、管理装置3と通信する。本実施例に係る表示装置1は、ビジョンベースARを実現するコンピュータである。本実施例に係るシステムは、表示装置1および管理装置3を含む。
表示装置1は、例えば、カメラおよびディスプレイを有する、タブレット型コンピュータやスマートフォンなど、プロセッサ(回路)を含むデバイスである。カメラは撮影装置の一例である。管理装置3は、例えば、サーバコンピュータであって、表示装置1を管理する。ネットワークNは、例えば、インターネットである。
そして、表示装置1は、カメラが取得した画像データから特定の画像データを検出する画像認識処理を実行するモードと、画像データに対して画像認識処理を行わないモードとの実行を制御することで、CPU使用率が高い画像認識処理の実行を抑える。表示装置1は、例えば、表示装置1の状態に応じて、実行するモードを制御する。
これは、発明者らによる以下の発見および検証に基づくものである。発明者らは、図1のような処理を行うビジョンベースARにおける電力消費の大きな一因は画像認識処理であることを突き止めた。そして、発明者らの検証によれば、一例として、画像認識処理によるCPU使用率は40%から50%を占めることが分かっている。そこで、本実施例に係る表示装置1は、画像認識処理の実行を制御することで、必要な場合に画像認識処理を実行する。よって、電力消費の削減、処理負荷の低減が達成される。
また、表示装置1は、画像認識処理を実行した結果、カメラから取得した画像データに特定の画像データが検出された場合に、特定の画像データに対応する他の画像データを画像データに重畳表示する。画像データはカメラが撮影した画像データであって、特定の画像データは、例えば、マーカーの画像データであって、他の画像データは、ARコンテンツの画像データである。
管理装置3は、ARコンテンツ情報やテンプレート情報を記憶するとともに、必要に応じて、それら情報を表示装置1へ提供する。ARコンテンツ情報は、AR表示される対象のARコンテンツにかかわる情報である。テンプレート情報は、ARコンテンツがテンプレートを用いて生成される場合に、テンプレートの形状や模様等が定義された情報である。詳細は、後述する。
本実施例において、表示装置1は、AR表示を行う前に、管理装置3からARコンテンツ情報やテンプレート情報を取得する。管理装置3は、複数のARコンテンツにかかるARコンテンツ情報、複数のテンプレートにかかるテンプレート情報を記憶するが、一部のARコンテンツまたはテンプレートにかかるARコンテンツ情報およびテンプレート情報のみを表示装置1に提供してもよい。例えば、管理装置3は、表示装置1を操作するユーザの属性に応じて、ユーザに対して提供する可能性のあるARコンテンツおよび、そのARコンテンツにかかわるテンプレートのみを表示装置1に提供してもよい。
図3は、第一の実施例に係る表示装置の機能ブロック図である。表示装置1は、制御部10、通信部11、撮影部12、表示部13、記憶部14、検出部15を含む。前述したように、図2に示す通信端末1−1および通信端末1−2の一例が、図3に示す表示装置1である。
通信部11は、他のコンピュータと通信を行う。例えば、通信部11は、ARコンテンツ情報、テンプレート情報を、管理装置3から受信する。撮影部12は、一定のフレーム間隔で撮影を行い、画像データを生成する。そして、撮影部12は、画像データを、制御部10へ入力する。撮影部12による撮影処理の開始および終了は、制御部10により制御される。例えば、撮影部12は、上述のカメラである。
表示部13は、各種画像を表示する。各種画像には、カメラ画像や、カメラ画像にARコンテンツを重畳した合成画像も含まれる。なお、カメラ画像は、撮影部12から取得した画像データに対応する画像である。記憶部14は、制御部10の制御の下、各種情報を記憶する。記憶部14は、ARコンテンツ情報、テンプレート情報を記憶する。なお、記憶部14は、撮影部11から取得した画像データを、制御部10の制御の下、一時的に記憶してもよい。
検出部15は、表示装置1の状態を推定可能な情報を検出する。検出部15が検出する情報は、検出値と称される。そして、検出部15は検出した検出値を制御部10へ入力する。例えば、検出部15は、本実施例においては、検出値として、表示装置1の移動状態を検出可能な加速度を検出する。
加速度は、表示装置1に対して設定された3軸方向各々について検出されるものとする。例えば、表示装置1の表示部13(ディスプレイ)の水平および垂直方向をX軸およびY軸として、さらにディスプレイの奥行き方向がZ軸に設定される。
制御部10は、表示装置1全体の各種処理を制御する。例えば、制御部10は、撮影部12による撮影処理、表示部13による表示処理、検出部15による検出処理、記憶部14への情報の記憶処理を制御する。
また、制御部10は、撮影部12により撮影された画像データに対して特定の画像データを検出する画像認識処理を実行する第一のモードと、前記撮影部12から入力された前記画像データに対して前記画像認識処理を実行しない第二のモードとの実行を制御する。さらに、制御部10は、画像認識処理が実行され、特定の画像データが入力された画像データに含まれることを検出した場合には、ARコンテンツを当該画像データに重畳するための表示制御処理を行う。
以下、制御部10の詳細な処理を説明する。制御部10は、判定部16、入力制御部17、認識部18、表示制御部19を含む。
判定部16は、検出部15から検出値を取得するとともに、検出値に基づき表示装置1の移動状態を判定する。移動状態は、例えば、表示装置1が移動している状態、および移動していない状態を含む。そして、移動状態は、移動していることを示すフラグ「True(1)」と、移動していないことを示すフラグ「False(0)」で管理される。
また、判定部16により設定されたフラグが、後述の入力制御部17による画像データの入力処理を制御するモード設定値として利用される。例えば、フラグ「True(1)」であれば、上記第二のモードが設定される。一方、フラグ「False(0)」であれば、上記第一のモードが設定される。
本実施例においては、ある時点における検出値と、その前に検出された検出値との差分が、予め設定された閾値以上であるか否かに基づき、移動状態を判定する。差分が閾値よりも小さい場合に、移動していない状態であることが判定される。例えば、閾値は、3.0m/s2である。
このように、本実施例における「表示装置が移動していない状態」とは、必ずしも完全に表示装置1が停止していることを示すものではない。なお、検出値の変化量と閾値との比較の代わりに、検出値と閾値との比較によって移動状態が判定されてもよい。
次に、入力制御部17は、撮影部12から入力された画像データを、後述の認識部18へ入力するかを、フラグ(モード設定値)により判定し、判定結果に応じて認識部18へ入力する。なお、撮影部12から入力された画像データが、記憶部14に一時的に記憶されている場合には、第二のモードが設定されている時は、入力制御部17は、記憶部14から画像データを取得して、認識部18へ入力する。
例えば、第一のモードであれば(フラグ「False(0)」)、入力制御部17は、画像認識処理の実行が必要であると判断して、画像データを認識部18へ入力する。一方、第二のモードであれば(フラグ「True(1)」)、入力制御部17は、画像認識処理の実行は不要であると判断して、画像データを認識部18へ入力しない。なお、第二のモードが設定されている場合には、入力制御部17は、そのまま画像データを表示部13へ表示させるように、表示制御部19に対して命令することとするが、表示部13へ表示させることなく破棄してもよい。
認識部18は、入力制御部17から画像データが入力された場合に、当該画像データを対象に、画像認識処理を行う。
具体的には、マーカー型ビジョンベースARにおいては、認識部18は、マーカーの形状を定義した物体認識用のテンプレートを用いて、入力された画像データにマーカーの画像データが含まれるかを判断する。
そして、入力された画像データにマーカーの画像データが含まれることを判断した場合、認識部18は、入力された画像データにおけるマーカーの領域を示す領域情報を生成する。例えば、領域情報は、マーカーを構成する4つの頂点の座標値である。そして、認識部18は、領域情報に基づいて、カメラから見たマーカーの位置座標および回転座標を算出する。なお、マーカーの位置座標、回転座標、カメラ座標系については、後述する。
認識部18は、算出した位置座標および回転座標を表示制御部19へ出力する。なお、画像データに、マーカーの画像データが含まれないと判断した場合には、認識部18は、認識不能の旨を、表示制御部17へ出力する。
さらに、認識部18は、画像データにマーカーが含まれることを判定すると、マーカーを識別する識別情報を取得する。例えば、マーカーIDが取得される。例えば、二次元バーコードと同様に、マーカー内の白部分と黒部分の配置から、一意のマーカーIDが取得される。マーカーIDを取得する方法として、他の既知の取得方法が適用されてもよい。
表示制御部19は、位置座標、回転座標、マーカーID、ARコンテンツ情報、テンプレート情報に基づき、AR表示を行うための表示制御処理を実行する。
ここで、AR表示を行うための表示制御処理について、説明する。さらに、説明の中で、先述のマーカーの位置座標、回転座標、カメラ座標系、ARコンテンツ情報、テンプレート情報も併せて説明する。
初めに、カメラを中心とするカメラ座標系と、マーカーMを中心とするマーカー座標系との関係を説明する。図4は、カメラ座標系およびマーカー座標系との関係を示す図である。なお、マーカーMは、例えば、建物内の壁や天井、設備などに添付された紙に印刷された特有の形状を有する模様である。例えば、マーカーMは、1辺の長さが5cmである正方形形状を有する。
図4では、カメラ座標系の原点を、Oc(0,0,0)とする。なお、原点Ocは、実際のカメラの焦点であってもよいし、カメラの焦点とは異なる位置を原点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とカメラと位置関係が判別可能な形状が採用される。また、マーカーMの大きさも予め決定される。これにより、画像データに対して物体認識を行うことでマーカーMを認識できるとともに、画像データにおけるマーカーMの像の形状や大きさから、カメラに対するマーカーMの位置関係が判別できる。
次に、カメラ座標系(Xc,Yc,Zc)に対するマーカー座標系(Xm,Ym,Zm)の回転角は、回転座標G1c(P1c,Q1c,R1c)で示される。P1cはXc軸回りの回転角であり、Q1cはYc軸回りの回転角であり、R1cはZc軸回りの回転角である。図4に例示されるマーカー座標系は、Ym軸回りにのみ回転しているため、P1cおよびR1cは0である。なお、各々の回転角は、既知のマーカーM形状と、撮影画像におけるマーカーMの像の形状との比較に基づき、算出される。
カメラ座標系におけるOmの座標(X1c,Y1c,Z1c)や、回転座標G1c(P1c,Q1c,R1c)の算出方法は、例えば、加藤博一ら、“マーカー追跡に基づく拡張現実感システムとそのキャリブレーション”、日本バーチャルリアリティ学会論文誌(TVRSJ) Vol.4、No.4、1999年に開示の方法を利用することができる。
図5は、ARコンテンツの例を示す。図5に示すARコンテンツCは、吹き出し形状を有する画像データであって、かつ吹き出し内に「バルブが閉まっていることを確認」というテキスト情報を含む。さらに、ARコンテンツCには、事前にマーカーM相対での位置情報と回転情報が設定されている。つまり、マーカー座標系におけるARコンテンツの位置情報および回転情報が設定される。
ここで、位置情報および回転情報について詳しく説明する。図5におけるARコンテンツCの先の黒丸は、ARコンテンツCの基準点V2m(X2m,Y2m,Z2m)である。また、さらにARコンテンツCの姿勢は回転座標G2m(P2m,Q2m,R2m)で定められ、ARコンテンツCのサイズは倍率D(Jx,Jy,Jz)で定められる。なお、ARコンテンツCの回転座標G2mは、マーカー座標系に対してARコンテンツがどの程度回転した状態で配置されるのかを示す。例えば、図5の例とは異なるが、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に基づいて回転され、倍率Dで隣接する点同士の距離が拡縮される。つまり、図5のARコンテンツCは、テンプレートに定義された各点が、基準点の座標V2m、回転座標G2mおよび倍率Dに基づいて調整された点に基づいて構成された状態を示している。
以上のように、ARコンテンツの位置情報および回転情報に基づき、マーカーMに対するARコンテンツの配置が決定される。よって、ユーザがカメラを使ってマーカーMを撮影すると、表示装置1は、マーカーM相対で配置が決定されているARコンテンツをカメラが撮影したと仮定したときのARコンテンツの像を表す画像データを生成することができる。つまり、生成された画像データに基づきARコンテンツを描画することで、カメラが撮影したカメラ画像と重ね合わせたときに、カメラ画像の中に映る物体とARコンテンツが、対応しているかのような合成画像となる。
次に、ARコンテンツの像を表す画像データを生成する過程の処理をさらに詳しく説明する。マーカー座標系で定義された各点の座標をカメラ座標系に変換する処理と、カメラ座標系に変換された各点をディスプレイに描画するためにディスプレイ平面に投影する処理とが実行される。以下、各変換処理を説明する。
図6は、マーカー座標系からカメラ座標系への変換行列Tと回転行列Rを示す。変換行列Tは、マーカー座標系の原点となるOmのカメラ座標系における座標値(X1c,Y1c,Z1c)と、カメラ座標系に対するマーカー座標系の回転座標G1c(P1c,Q1c,R1c)とに基づき、マーカー座標系で定義された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列目の部分行列が作用することにより、マーカー座標系の向きとカメラ座標系との位置を合わせるための並進操作が行なわれる。
図7は、回転行列R1、R2およびR3を示す。なお、図6に示す回転行列Rは、回転行列R1、R2およびR3の積(R1・R2・R3)により算出される。また、回転行列R1は、Xc軸に対するXm軸の回転を示す。回転行列R2は、Yc軸に対するYm軸の回転を示す。回転行列R3は、Zc軸に対するZm軸の回転を示す。
回転行列R1、R2およびR3は、撮影画像内のマーカーMの像に基づき、生成される。つまり、回転角P1c、Q1c、R1cは、先に述べたとおり、既知の形状を有するマーカーMが、処理対象となる撮影画像において、どのような像として撮影されているかに基づき、算出される。算出された、回転角P1c、Q1c、R1cに基づき、各回転行列R1、R2およびR3は生成される。
以上のように、列ベクトル(Xm,Ym,Zm,1)に座標変換対象のマーカー座標系の点座標を代入して、行列演算を行なうことにより、カメラ座標系の点座標を含む列ベクトル(Xc,Yc,Zc,1)が得られる。つまり、マーカー座標系の点(Xm,Ym,Zm)を、カメラ座標系(Xc,Yc,Zc)に変換することができる。なお、座標変換は、モデル−ビュー変換とも称される。
例えば、図5のように、モデル−ビュー変換が、ARコンテンツCの基準点V2mに対して行なわれることにより、マーカー座標系で規定された基準点V2mが、カメラ座標系におけるどの点V2c(X2c,Y2c,Z2c)に対応するのかが求められる。ここまでの処理で、カメラに対するARコンテンツの位置(カメラとARコンテンツの位置関係)が、マーカーMを利用する事で算出される。
つぎに、ARコンテンツCの各点のカメラ座標系の座標は、スクリーン座標系に変換される。スクリーン座標系は、(Xs,Ys)の2次元で構成される。そして、カメラ座標系に変換されたARコンテンツCの各点の座標を、仮想のスクリーンとなる2次元平面(Xs,Ys)に投影することで、AR表示されるARコンテンツCの像が生成される。つまり、スクリーン座標系の一部分がディスプレイの表示画面と対応する。なお、カメラ座標系の座場をスクリーン座標系に変換することを、透視変換と称する。
投影面となる仮想のスクリーンは、例えば、カメラ座標系のXc−Yc平面と平行に、かつZc方向に所定の距離に設定される。この時、カメラ座標系における原点Oc(0,0,0)が、カメラの焦点からZc方向に一定距離に設定される場合には、スクリーン座標系における原点(0,0)も、カメラの光軸上の一点に対応する。
透視変換は、例えば、カメラの焦点距離fに基づいて行なわれる。カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のXs座標は、以下の式1で求められる。また、カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のYs座標は、以下の式2で求められる。
Xs=f・Xc/Zc (式1)
Ys=f・Yc/Zc (式2)
透視変換により得られるスクリーン座標系の座標値に基づいて、ARコンテンツCの像が生成される。ARコンテンツCは、ARコンテンツCを構成する複数の点を補間して得られる面にテクスチャをマッピングすることにより生成される。ARコンテンツCの元になるテンプレートには、どの点を補間して面を形成するか、どの面にどのテクスチャをマッピングするかが定義される。
つぎに、ARコンテンツ情報およびテンプレート情報について説明する。図8は、ARコンテンツ情報を記憶するデータテーブルの構成例である。ARコンテンツ情報は、少なくとも、ARコンテンツID、位置情報、回転情報を含む。さらに、ARコンテンツ情報は、倍率情報、テンプレートID、マーカーID、追加情報を含んでもよい。
データテーブルには、ARコンテンツID、マーカー座標系におけるARコンテンツの位置情報、回転情報が互いに対応付けられて格納される。ARコンテンツIDは、ARコンテンツを一意に識別する識別情報である。位置情報は、マーカーMに対するARコンテンツの位置を指定するための情報であって、例えば、マーカー座標系における、ARコンテンツを形成する基準点の位置座標(Xm,Ym,Zm)である。回転情報は、マーカーMに対するARコンテンツの回転を指定するための情報であって、例えば、マーカー座標系に対する、ARコンテンツの回転座標(Pm,Qm,Rm)である。位置情報および回転情報は、ARコンテンツの配置を決定するための情報となる。
また、ARコンテンツのモデル形状が、テンプレートを用いて作成される場合には、データテーブルには、テンプレートIDおよび倍率情報が格納される。テンプレートIDは、ARコンテンツに適用されるテンプレートを識別する識別情報である。倍率情報は、テンプレートをARコンテンツとして適用する際の倍率Dの情報であって、例えば、各軸方向に、各々拡大または縮小するための倍率(Jx,Jy,Jz)である。
さらに、認識したマーカーMの識別情報に応じて、AR表示するARコンテンツを切り替える場合には、各ARコンテンツを対応付けるマーカーMのマーカーIDが、データテーブルに格納される。なお、同一のマーカーMでも、ユーザの属性情報によって、AR表示するARコンテンツを切り替える場合には、マーカーIDと合わせて、各ARコンテンツについて、ユーザの属性を識別する情報がさらに格納される。
データテーブルには、さらに、追加情報が格納されてもよい。追加情報として、例えば、ARコンテンツ内に描画されるテキストの情報が記憶される。図8のARコンテンツID「C1」の例では、ARコンテンツ内に「バルブが閉まっていることを確認」というテキストが描画されることになる。
図9は、テンプレート情報を記憶するデータテーブルの構成例である。テンプレート情報は、テンプレートの識別情報(テンプレートID)、テンプレートを構成する各頂点の座標情報、およびテンプレートを構成する各面の構成情報(頂点順序およびテクスチャIDの指定)を含む。
頂点順序は、面を構成する頂点の順序を示す。テクスチャIDは、面にマッピングされるテクスチャの識別情報を示す。テンプレートの基準点は例えば0番目の頂点である。テンプレート情報テーブルに示される情報により、3次元モデルの形状および模様が定められる。
以上のように、表示制御部19が、認識部18から取得したマーカーIDに応じて、AR表示すべきARコンテンツのARコンテンツIDを特定する。また、表示制御部19は、認識部18が算出した位置座標および回転座標を利用して、変換行列Tを生成する。
そして、特定されたARコンテンツのARコンテンツ情報、ARコンテンツ情報に設定されているテンプレートIDのテンプレート情報、変換行列Tを用いて、ARコンテンツの各点の座標をマーカー座標系からカメラ座標系へ座標変換する。そして、表示制御部19は、上述の式1や式2を用いて、カメラ座標系をスクリーン座標系へ変換することで、ARコンテンツを重畳するための画像データを生成する。
そして、表示制御部19は、カメラから取得した画像データと、重畳用の画像データとを重ね合わせて、表示部13に表示させることで、表示部13にはカメラ画像とARコンテンツとが合成された合成画像が表示される。
ここから、表示装置1による処理の流れを説明する。図10は、第一の実施例に係る制御方法の処理フローである。なお、表示装置1として機能するコンピュータが、AR処理プログラムを起動および実行する事で、以下に示す、制御処理を含む一連のAR処理が実行される。
制御部10は、AR処理プログラムを起動する(Op.11)。制御部10が、AR処理プログラムを実行することで、以下の処理が実行される。なお、AR処理プログラムが起動されると、テンプレート情報やARコンテンツ情報が管理装置3から取得される。さらに、制御部10は、撮影部12へ撮影処理を開始するよう命令する(Op.12)。
撮影部12は、制御部10から撮影を指示されると、撮影素子により生成される画像データを所定の時間間隔で取得し、画像データを記憶部14に記憶する。記憶部14には、複数の画像データを格納するバッファが設けられ、画像データは、そのバッファに格納される。また、制御部10の制御の下、当該画像データに対応するカメラ画像の表示が開始される。ここでは、表示部13は、リアルタイムで、カメラ画像を表示するとともに、表示制御部19による表示制御処理が実行された場合には、合成画像を表示する。
次に、判定部16は、モード設定処理を行う(Op.13)。モード設定処理は、表示装置1の移動状態を判定し、移動状態に応じて、入力制御部17による認識部18への画像データの入力を制御するための処理である。
図11は、モード設定処理の詳細の処理フローである。判定部16は、検出部15から検出値を取得する(Op.31)。なお、先に述べたとおり、検出値は、例えば、予め設定された3軸(または2軸)方向各々について検出された加速度である。
判定部16は、前回取得した検出値のデータがあるか否かを判定する(Op.32)。例えば、AR処理プログラム起動時など、検出値が初めて取得された場合には、前回取得した検出値のデータはないと判定される(Op.32No)。一方、前回取得した検出値がある場合には(Op.32Yes)、判定部16は、前回取得した検出値と今回取得した検出値との差分の絶対値を算出する(Op.33)。
次に、判定部16は、差分は予め設定された閾値以上であるか否かを判定する(Op.34)。差分が閾値以上である場合には(Op.34Yes)、表示装置1は移動している状態にあると推測されるため、判定部16は、第二のモード(画像認識処理を実行しないモード)を設定する(Op.35)。なお、モードを管理するためのフラグにはTrue(1)が設定されるものとする。
一方、差分が閾値よりも小さい場合には(Op.34No)、表示装置1は移動していない状態にあると推測されるため、判定部16は、第一のモード(画像認識処理を実行するモード)を設定する(Op.37)。なお、モードを管理するためのフラグにはFalse(0)が設定されるものとする。
次に、判定部16は、次回以降のモード設定処理に利用するために、Op.31で取得した検出値を記憶部14へ記憶(または更新)する(Op.36)。なお、前回取得した検出値のデータはないと判定された場合には(Op.32No)、判定部16はOp.37および36を実行する。そして、判定部16は、一連のモード設定処理を終了する。
モード設定処理が終了すると、入力制御部17は、記憶部14から画像データを取得する(Op.14)。そして、入力制御部17は、設定されているモードを確認し、第一のモードであるかを判定する(Op.15)。つまり、入力制御部17は、フラグがFalse(0)であるか否かを判定する。
第一のモードが設定されている場合(Op.15Yes)、つまり、フラグがFalse(0)である場合、入力制御部17は、画像データを認識部18へ入力する(Op.16)。そして、認識部18は、画像認識処理を実行する(Op.17)。なお、画像認識処理は、入力された画像データから特定の画像データを検出する処理である。さらに、本実施例では、画像認識処理において、特定の画像データが検出された場合に、認識部18は、当該特定の画像データに対応する物体(マーカーM)の位置座標および回転座標(カメラ座標系)を算出するとともに、マーカーIDを抽出する。
次に、制御部10は、画像認識が成功したか否かを判定する(Op.18)。つまり、制御部10は、画像データから特定の画像データ(マーカーM)が検出できたか否かを判定する。画像認識が成功した場合には(Op.18Yes)、表示制御部19に画像認識結果が入力されるため、表示制御部19は表示制御処理を実行する(Op.19)。具体的には、表示制御処理においては、ARコンテンツ情報、テンプレート情報、変換行列Tに基づき、モデル−ビュー変換が行われるとともに、式1および2に基づき透視変換が行われる。
そして、表示部13は、表示制御部19の制御の下、合成画像を表示する(Op.20)。つまり、表示部13は、画像データ(カメラ画像)の特定の位置に他の画像データ(ARコンテンツ)を重畳して表示することができる。よって、ユーザは、現実空間においてマーカーMと特定の位置関係に存在する他の物体に対して、ARコンテンツが重畳表示されているような合成画像を閲覧することができる。
また、画像認識処理を実行した結果、認識が失敗した場合(Op.18No)、すなわち特定の画像データが検出できなかった場合には、制御部10の制御の下、表示部13はカメラ画像を表示する(Op.24)。つまり、Op.14で取得した画像データがそのまま表示部13に表示される。
また、第一のモードが設定されていない場合(Op.15No)、すなわちフラグがTrue(1)であって、第二のモードが設定されている場合、入力制御部17は画像データを認識部18へ入力せずに、制御部10の制御の下、表示部13はカメラ画像を表示する(Op.24)。つまり、画像認識処理(Op.17)は実行されないこととなる。
このように画像認識処理によって特定の画像データが認識されない場合には表示制御処理(Op.19)は実行されないため、表示部13にはカメラ画像が表示される。言い換えると、合成画像は表示されないこととなり、表示部13に画像を表示する際のARコンテンツに関する描画処理は不要となる。そこで、合成画像の表示処理(Op.20)と、カメラ画像の表示処理(Op.24)とを実行する上での、制御部10の描画処理方法を異なるものとしてもよい。例えば、制御部10は、合成画像の描画処理には、OpenGLのようなグラフィック専用のアプリケーションプログラミングインターフェース(API)を利用する。一方、制御部10は、カメラ画像の描画処理には、OSのアプリケーション実行基盤が提供するような、アプリケーションのUI描画用のAPIを利用する。
そして、制御部10は、AR処理プログラムを終了するか否かを判定する(Op.21)。例えば、ユーザから、AR処理プログラムを終了する旨の入力があった場合には、制御部10は、AR処理プログラムの終了処理を行う。AR処理プログラムを終了しない場合には(Op.21No)、Op.13以降の処理を繰り返す。
一方、AR処理プログラムを終了する場合には(Op.21Yes)、制御部10は、撮影部12に対して撮影処理の終了を命令する事で、撮影部12は撮影処理を終了する(Op.22)。さらに、制御部10はAR処理プログラムを終了する(Op.23)。
つぎに、合成画像について説明する。図12は合成画像のイメージ図である。表示部13に表示された合成画像410には、ARコンテンツ406およびARコンテンツ407が表示されている。一方、マーカー401、タンク402、パイプ403、バルブ404、パイプ405は現実空間に存在する物体であって、カメラ画像に映っている。なお、図12の例では、一つのマーカー401に二つのARコンテンツが予め紐づけられていたため、合成画像には2つのARコンテンツが重畳表示されることとなる。なお、図12のとおり、マーカー401は、タンク402に張り付けられている。
画像認識処理および表示制御処理によって、マーカー401と所定の位置関係を保った位置に、ARコンテンツ406およびARコンテンツ407が各々重畳表示される。その結果として、合成画像410において、マーカー401と第一の位置関係にあるバルブ404の付近にARコンテンツ406が表示され、マーカー401と第二の位置関係にあるパイプ403の付近にARコンテンツ407が表示される。よって、合成画像410を閲覧するユーザは、ARコンテンツ406はバルブ404に対する作業指示であって、ARコンテンツ407はパイプ403に対する注意事項であることを容易に把握できる。
以上のように、第一の実施例によれば、認識部18による画像認識処理の実施を制御することができる。つまり、表示装置1の状態によっては、認識部18に画像データの入力を行わないことで、認識部18による画像認識処理を停止する。よって、処理負荷が軽減される。CPU使用率が高い画像認識処理の実行を制御する事で、表示装置1の消費電力の低減を図ることができる。
さらに、本実施例においては、撮影部12による撮影処理は継続されるため、表示部13にはリアルタイムでカメラ画像が表示される。ユーザは、内部的に画像認識処理および表示制御処理が停止していることを意識せずに、カメラ画像を確認し、必要な作業を行う事が出来る。
[第一の実施例にかかる変型例]
第一の実施例においては、表示装置1の移動状態に応じて、第一のモードおよび第二のモードを設定することとしたが、表示装置1の他の状態に応じて、モードが設定されることとしてもよい。例えば、表示装置1が特定の場所に存在する状態であれば、第一のモードが設定されることとし、表示装置1が特定の場所以外に存在する状態であれば、第二のモードが設定されることとしてもよい。例えば、GPS(Global Positioning System)やiBeaconにより、表示装置1の存在場所が特定される。
さらなる他の例として、表示装置1に対してユーザが画像認識処理の実行を解除する入力を行った状態であれば、第二のモードを設定する事としてもよく、それ以外の場合には、第一のモードを設定するとしてもよい。
また、適時、Op.34の処理で利用される閾値の設定が変更されることとしてもよい。例えば、上述の実施例においては、画像認識処理の実行を制御するための閾値として、移動状態を判定するための閾値が設定されるとして説明した。しかし、画像認識処理の実行を制御するための閾値として、他の状態を判定可能な閾値が設定されてもよい。この場合、表示部13は、制御部10の制御の下、ユーザが閾値を入力するための入力画面を表示し、ユーザにより入力された閾値をその後の判定部16による判定処理(Op.34)に利用するとしてもよい。
例えば、ユーザが表示装置1を携帯して歩行している間は、第二のモードが設定される。一方、ユーザが、移動停止状態で、かつ、表示装置1を保持しながら少しずつカメラの撮影範囲を変化させ、カメラの撮影範囲にマーカーMが含まれるようなカメラの撮影方向を探している状態(表示装置は移動状態にあるがユーザは歩行状態にはない)であれば、第一のモードを設定する。このように、変型例にかかる表示装置1は、閾値の調節を受け付けることも可能である。
そのほか、第一のモードから第二のモードへの切り替えについては、他のセンサから取得した情報を活用してもよい。例えば、人間の目が閉じていることを検出した場合や、人間の脳波が非活性を示す場合など、人間がARコンテンツCの表示を必要としていないことが推測される場合には、第二のモードへの切り替えが行われる。また、例えば、閾値以下の照度を検出した場合など、画像データが画像認識処理に適さない場合には、第二のモードへの切り替えが行われる。
[第二の実施例]
第二の実施例においては、さらなる省電力化を狙い、第一の実施例と比較して、より細かく、各処理の実行制御を行う。例えば、第一の実施例では、画像認識処理の中に、特定の画像データを検出する処理、位置座標および回転座標を算出する処理、マーカーIDを取得する処理が含まれるとした。一方、第二の実施例では、画像認識処理には、特定の画像データを検出する処理、位置座標および回転座標を算出する処理のみが含まれるものとし、マーカーIDを取得する処理はID取得処理として別の処理とみなす。そして、第二の実施例は、画像認識処理の実行およびID取得処理の実行を個別に制御する。
第二の実施例に係るシステム構成は第一の実施例に係るシステム構成と同様であるため、説明は割愛する。次に、第二の実施例に係る表示装置の機能的構成について説明する。なお、システム構成例(図2)における通信端末1−1および通信端末1−2の一例が、以下説明する表示装置2である。
図13は、第二の実施例に係る表示装置の機能ブロック図である。表示装置2は、制御部20、通信部21、撮影部22、表示部23、記憶部24、検出部25、計時部26を含む。
通信部21、撮影部22、表示部23、記憶部24、検出部25は、各々、制御部20の制御の下、第一の実施例における通信部11、撮影部12、表示部13、記憶部14、検出部15と同様の処理を行う。計時部26は、制御部20の制御の下、制御部20により起動が命令されたタイミングからの経過時間を計測する。例えば、計時部26は、タイマーである。
制御部20は、表示装置2全体の各種処理を制御する。例えば、制御部20は、撮影部22による撮影処理、表示部23による表示処理、記憶部24への情報の格納、検出部25による検出処理、計時部26による計時処理を制御する。
さらに、以下、制御部20の詳細な処理を説明する。制御部20は、第一判定部201、第一入力制御部202、第一認識部203、第二認識部204、第一算出部205、第一表示制御部206、第二算出部207、第二判定部208、第三判定部209、第二入力制御部210、第二表示制御部211を含む。
第一判定部201は、検出部25から入力される検出値に基づき、画像データを取得する旨を判定する。例えば、第一判定部201は、検出部25から入力される検出値に基づき、撮影部22による撮影処理を開始するか否かを判定する。そして、第一判定部201は、撮影処理が開始された場合に、記憶部24から画像データを取得する。また、撮影処理開始後、第一判定部201は、撮影部22から、焦点合わせ処理の完了を示す入力を受けて、画像データを取得することを判定してもよい。なお、本実施例において画像データを取得する旨を判定することは、第一の実施例における第一のモード(画像処理を実施するモード)の設定に相当する。
第一入力制御部202は、画像認識処理を実施するモードである場合に、画像認識処理を行う第一認識部203に、画像データを入力する。例えば、第一入力制御部202は、第一判定部201による判定結果または、後述する第二判定部208による判定結果に基づき、画像データを記憶部24から取得して、第一認識部203へ入力する。
第一認識部203は、第一入力制御部202または後述の第二入力制御部210から入力された画像データに対して、画像認識処理を行う処理部である。なお、本実施例における画像認識処理は、入力された画像データから特定の画像データを検出するとともに、特定の画像データが検出された場合にカメラとマーカーMとの位置関係を示す位置座標および回転座標を算出する処理である。
第二認識部204は、第一入力制御部202が第一認識部203に画像データを入力した場合であって、該第一認識部203による画像認識処理が終了した後に、ID取得処理を行う処理部である。本実施例におけるID取得処理は、入力された画像データからマーカーIDを抽出する処理である。なお、第二入力制御部210が第一認識部203に画像データを入力した場合には、第二認識部204によるID取得処理は実行されない。これは、後述するように、過去に取得したマーカーIDを流用することを前提としており、ID取得処理を実行しないことによって、計算量の軽減を図るためである。
第一算出部205は、第一認識部203による画像認識結果に基づき、カメラ画像におけるマーカー位置を算出する。また、第一算出部205は、第一認識部203による画像認識結果から算出されたマーカー位置を用いて、マーカーMと表示部13の表示領域との距離を示す閾値T2を算出する。閾値T2は、マーカーMが表示部13の表示範囲内に存在するかを判定するための閾値である。つまり、ある時点で撮影された画像データにおけるマーカーMの位置からの移動が、画面内に収まっているかを判定するための閾値である。詳細は後述する。
さらに、第一算出部205は、後述の第三判定部209による判定処理に利用される閾値T3を算出する。閾値T3は、マーカーMの移動が画面内の移動であっても、その移動量が微小であるか否かを判定するための閾値である。本実施例においては、第一認識部203がマーカーMを認識した場合に、マーカーM1辺の長さ(ピクセル)を閾値T3とする。
ここで、第一算出部205によるマーカー位置、閾値T2、閾値T3の算出方法の一例について説明する。図14は、マーカー位置および各種閾値の算出方法を説明するための図である。図14は、表示部13における表示領域500にマーカー501を含むカメラ画像が表示されている状態を例示している。
図14に示される通り、表示部13の表示領域500は、左上を原点Os(O,O)とし、水平方向右向きをXs軸の正方向、垂直方向下向きをYs軸の正方向とする。さらに、表示領域500のXs方向に配列した画素数をXd(ピクセル)、Ys方向に配列した画素数をYd(ピクセル)とする。
まず、第一の実施例と同様に、画像認識処理によってマーカーM画像が認識された場合、マーカーM領域を示す領域情報(マーカーMを構成する4つの頂点の座標値)が、第一認識部203から第一算出部205へ入力される。図14では、領域情報として、P1,P2,P3,P4の4点の座標値が第一算出部205に入力される。
本実施例においては、直線P1−P3および直線P2−P4の交点で表されるマーカーMの中心点を、マーカー位置PM(Xsm,Ysm)とする。第一算出部205は、P1,P2,P3,P4の4点の座標値の座標値から、マーカー位置PM(Xsm,Ysm)を求める。
次に、第一算出部205は、マーカー位置PMから、表示領域500の各辺まで、どの程度余裕があるかを示す閾値T2を算出する。図14に示す通り、マーカー位置PMから、表示領域500を構成する各辺までのピクセル数が、閾値T2(T2(Xl)、T2(Xr)、T2(Yd)、T2(Yt))となる。なお、T2(Xl)、T2(Xr)、T2(Yd)、T2(Yt)は、各々以下の式で算出される。
T2(Xl)=Xsm (式3)
T2(Xr)=Xd-Xsm (式4)
T2(Yt)=Ysm (式5)
T2(Yd)=Yd−Ysm (式6)
次に、第一算出部205は、閾値T3を求める。本実施例においては、マーカーMを構成する4つの頂点のうち、隣り合う2点間の距離(マーカーM1辺の長さ)を閾値T3とする。例えば、第一算出部205は、P2とP3との距離を求め、その距離を閾値T3として設定する。
図13に戻り、第一表示制御部206は、第一認識部203による画像認識結果に基づき、表示制御処理を行う。例えば、第一の実施例における表示制御部19と同様に、第二認識部204によるID取得結果(マーカーID)に基づき、ARコンテンツ情報およびテンプレート情報を、記憶部24から取得する。そして、第一表示制御部206は、第一認識部203から入力される位置座標および回転座標を用いてモデル−ビュー変換を行うとともに、式1および式2を用いて透視変換を行う。さらに、表示制御部206は、表示部23を制御して、カメラ画像上にARコンテンツが重畳された合成画像を表示する。
次に、第二算出部207は、第一認識部203による画像認識処理結果を利用せずに、検出部25から入力される検出値を用いて、マーカー位置PMの移動量を推定する。第二算出部207は、検出値を用いて、マーカー位置PMを推定することが可能であるため、処理負荷が高い第一認識部203による画像認識処理を省略することができる。そして、第二算出部207によって算出された移動量は、新たな画像データに対して画像認識処理を実行するか否かを判定するために利用される。
例えば、第二算出部207は、検出部25から入力される検出値(加速度a)と、計時部26が計測している経過時間tとを用いて、次の式により移動量X
MAおよびY
MAを算出する。なお、X
MAは、マーカー位置PMのXs方向の移動量であって、Y
MAは、マーカー位置PMのYs方向の移動量である。
なお、検出部25は、第一の実施例と同様に、表示装置2に対して予め設定された3軸(X,Y,Z)方向各々について、加速度(ax,ay,az)を検出する。表示装置2に対して予め設定された3軸のうちのX軸がXs軸と、Y軸がYs軸方向と一致する場合には、第二算出部207は、検出部25が検出した加速度(ax,ay,az)のうち、axをXs軸方向の加速度として、ayをYs軸方向の加速度として、そのまま利用する。一方、表示装置2に対して予め設定された3軸と、スクリーンにおけるXs軸方向およびYs軸方向が一致しない場合には、検出部25が検出した加速度(ax,ay,az)の各々を、X軸とXs軸とのずれ(角度)に応じて、Xs軸方向およびYs軸方向に分解する。なお、本実施例においては、X軸とXs軸とが一致し、Y軸とYs軸とが一致するとして説明する。
次に、第二判定部208は、マーカーの移動量XMAおよびYMAと閾値T2を用いて、マーカーMの移動は画面内の移動かを判定する。つまり、第二判定部208は、移動量が閾値T2以下であるか否かを判定することで、マーカーM自体が表示領域500から消失していないかを判断する。
例えば、第二判定部208は、XMAが負の値である場合に、XMAの絶対値が条件1「T2(Xl)以下か」を判定する。また、XMAが正の値である場合に、XMAが条件2「T2(Xr)以下か」に当てはまるかを判定する。
さらに、第二判定部208は、YMAが負の値である場合に、YMAの絶対値が、条件3「T2(Yt)以下か」を判定する。また、第二判定部208は、YMAが正の値である場合に、YMA が条件4「T2(Yd)以下か」を判定する。
XMA およびYMA各々の判定結果が、いずれも肯定である場合にのみ、マーカーMの移動は画面内の移動であることが判定される。また、XMAおよびYMAのいずれか一方の判定結果が否定である場合には、マーカーMの移動は画面外への移動であることが判定される。
さらに、第二判定部208が、判定結果に応じて、第一のモード(画像認識処理を実行するモード)と、第二のモード(画像認識処理を実行しないモード)とを制御する。例えば、マーカーMの移動が画面内の移動であると判断された場合には、第二判定部208は、第二のモードを設定する。なお、以下では、第二のモードを設定した後に、さらに、判定結果よっては、第一のモードに復帰させることもありうる。一方、マーカーMの移動が画面外への移動であると判定された場合には、第二判定部208は、第一のモードを継続する。つまり、新たな画像データを取得して、画像認識処理が実行される。
このように、マーカーMの移動が画面外への移動であれば、過去の画像データに対する画像認識処理結果を流用することは、適切ではない。そこで、表示装置2は、新たな画像データを取得して、当該画像データにマーカーMが写っているかを判断する。そして、マーカーMが写っている場合には、新たなマーカーMの位置座標や回転座標が算出される。一方、マーカーMの移動が画面内での移動であれば、過去の画像データに対する画像認識処理結果を流用して、合成画像の表示を継続することができる。過去の画像データに対する画像認識処理結果を流用することで、画像認識処理に係る負荷を軽減することができる。
次に、本実施例においては、表示装置2は、第二判定部208に加え第三判定部209を含むとしてもよい。第三判定部209は、第二判定部208がマーカーMの移動は画面内での移動であることが判定された場合(第二のモードが設定)に、さらにその移動は微小な移動であるかを判定する。例えば、第三判定部209は、マーカーの移動量XMAの絶対値およびYMAの絶対値と、閾値T3とを比較する。マーカーの移動量XMAの絶対値およびYMAの絶対値がともに、閾値T3よりも小さい場合、マーカーMの移動は微小な移動であると判断される。
また、第三判定部209は、移動が微小でないと判定した後に、さらに、移動が急速な移動であるのかを、判定してもよい。例えば、第三判定部209は、すでに取得した検出値(加速度)が予め設定された閾値T4以上であるのかを判定する。検出値が閾値T4以上であれば、移動は急速な移動であることが判定される。なお、閾値T4は、例えば、3.0m/s2である。
例えば、第三判定部209は、移動が微小でなく、かつ移動が急速な移動である場合に、画像認識処理を実行する第一のモードを設定する。つまり、第三判定部209は、後述の第二入力制御部210に対して、新たな画像データを第一認識部203へ入力するよう命令する。一方、第三判定部209は、移動が微小である場合や、移動が微小でなく、かつ移動が急速な移動でない場合に、後述の第二入力制御部210に対して、過去の画像認識処理結果を流用した表示制御処理を命令する。
第二入力制御部210は、第二判定部208の判定結果に応じて、記憶部24から新たな画像データを取得するとともに、いずれの処理部に入力するかを制御する。なお、本実施例においては、第三判定部209の判定結果も利用し、画像データの入力を制御する。
例えば、第三判定部209が移動は微小であると判定された場合には、画像データを破棄する。また、第三判定部209が移動は微小でないと判断された場合であって、かつ、移動は急速な移動でないと判断された場合には、第二入力制御部210は、取得した画像データを第二表示制御部211へ入力する。
一方、第三判定部209が移動は微小でないと判定された場合であって、かつ移動が急速な移動であると判定された場合にさらに、第二入力制御部210は、移動が急速な移動である場合には、第二入力制御部210は、新たな画像データを第一認識部203へ入力する。なお、このとき、ID取得処理は行われないとしてもよい。第一認識部203による画像認識処理のみが実行され、第二認識部204によるID取得処理を省略する事で、ID取得処理に係る処理負荷を軽減することができる。これは、画面内の移動であれば、過去に取得したマーカーIDを流用することが可能であるという点に着目したものである。
このように、第二入力制御部210は、マーカーMの移動が急速な移動である場合には、ARコンテンツの重畳位置を調整する必要があるため、第一認識部203へ新たな画像データを入力する。新たな画像データが第一認識部203に入力されると、画像認識結果が第一表示制御部206へ出力されるため、ARコンテンツの重畳位置が再度計算される。よって、ARコンテンツの追従性を担保することができる。一方、マーカーMの移動が急速な移動でない場合には、過去の画像認識結果を利用して合成画像を生成することで、十分追従性が担保されるため、後述の第二表示制御部211に画像データを入力し、より簡易な表示制御処理を実行させる。
第二表示制御部211は、第三判定部209から入力された判定結果に応じた表示制御処理を実行する。例えば、移動は微小でなく、急速な移動でないことを示す場合に、第二表示制御部211は、過去に第一表示制御部206が表示制御処理により決定したARコンテンツの重畳位置を流用する。そして、第二表示制御部211は、新たに取得した画像データに対して、過去の画像認識処理結果に基づき配置位置が決定されたARコンテンツを重畳する合成画像を生成する。つまり、モデル−ビュー変換や透視変換は行わない。
また、第二表示制御部211は、第三判定部209から入力された判定結果が、移動は微小であることを示す場合に、過去に表示した合成画像の表示を継続するように表示部23を制御する。つまり、移動は微小であるため、過去の合成画像の表示を継続する事で、ユーザに違和感を与えることなく、かつ処理負荷の軽減を図ることができる。
つぎに、表示装置2による処理の流れを説明する。図15、図16、図17は、第二の実施例に係る制御方法の処理フローである。なお、表示装置2として機能するコンピュータが、AR処理プログラムを実行することで、制御方法が実行される。
まず、制御部20は、第一の実施例と同様に、AR処理プログラムを起動する(Op.41)。なお、表示装置2として機能するコンピュータが、AR処理プログラムを起動および実行する事で、以下に示す、制御処理を含む一連のAR処理が実行される。
第一判定部201は、検出部25から入力される検出値に基づき、加速度が閾値T1以下であるかを判定する(Op.42)。なお、閾値T1は、手振れを判定するための閾値である。閾値T1は、例えば、0.2m/s2である。ここでは、手振れがおさまる場合(Op.42Yes)に、制御部20は、撮影部22による撮影処理を開始させる(Op.43)。なお、手振れがおさまるまで(Op.42No)、撮影処理は開始されない。
そして、撮影処理が開始された場合に、第一判定部201は、撮影部22から焦点を合わせる処理が完了した旨を示す入力を受けたか判定する(Op.44)。なお、この判定は、撮影部22(カメラ)からオートフォーカスが終了したことを示す信号が入力されたか否かに基づき、行われる。
オートフォーカスが終了するまで(Op.44No)待機し、オートフォーカスが終了した場合に(Op.44Yes)、第一入力制御部202は、記憶部24から画像データを取得する(Op.45)。そして、第一入力制御部202は、画像データを、第一認識部203に入力する(Op.46)。
第一認識部203は、画像認識処理を実行する(Op.47)。特定の画像データが入力された画像データに含まれる場合(Op.48Yes)、第一認識部203は、画像認識処理結果を第二認識部204へ入力するとともに、第二認識部204は、ID取得処理を実行する(Op.49)。一方、特定の画像データが入力された画像データに含まれない場合(Op.48No)、制御部20はOp.45に戻り、第一入力制御部202は、新たな画像データを取得する。
第二認識部204がマーカーIDの取得に成功した場合(Op.50Yes)、第二認識部204は、マーカーIDや第一認識部203から入力された画像認識処理結果を第一表示制御部206へ入力するとともに、第一算出部205は、タイマー(計時部206)を起動する(Op.61)。一方、第二認識部204がマーカーIDの取得に失敗した場合(Op.50No)、制御部20はOp.45に戻り、第一入力制御部202は、新たな画像データを取得する。なお、ID取得処理を所定回数繰り返したのちに、マーカーIDを取得できなければ、制御部20は、Op.45に戻るとしてもよい。
さらに、第一算出部205は、画像認識処理結果に含まれる領域情報に基づき、マーカー位置PMを算出する(Op.62)。また、第一算出部205は、マーカー位置PMを用いて閾値T2を算出する(Op.63)。閾値T2は、マーカーMの移動が画面内の移動か否かを判定するための閾値である。さらに、第一算出部205は、閾値T3を算出する(Op.64)。閾値T3は、マーカーMの移動が画面内の移動であっても、その移動量が微小であるか否かを判定するための閾値である。
そして、第一算出部205は、マーカー位置PM、閾値T2および閾値T3を記憶部24に記憶する(Op.65)。なお、すでに閾値T2および閾値T3が記憶されている場合には、新たに算出された閾値T2および閾値T3で、記憶部24の情報を更新する。
第一表示制御部206は、画像認識処理結果およびID取得処理結果に基づき、表示制御処理を行う(Op.66)。なお、第一表示制御部206により実行される表示制御処理は、第一の実施例における表示制御処理(Op.19)と同様である。
表示部23は、第一表示制御部206の制御の下、合成画像を表示する(Op.67)。ここでは、画像認識処理の対象となった画像データに対して、ARコンテンツが重畳表示された合成画像が表示される。
次に、制御部20は、AR処理プログラムを終了するか否かを判定する(Op.68)。AR処理プログラムを終了する場合には(Op.68Yes)、制御部20は、撮影部22に対して撮影処理の終了を命令する事で、撮影部12は撮影処理を終了する(Op.69)。さらに、制御部20はAR処理プログラムを終了する(Op.70)。
一方、AR処理プログラムを終了しない場合には(Op.68No)、第二算出部207は、検出部25から入力される検出値を取得する(Op.81)。そして、第二算出部207は、検出値を用いて、マーカーの移動量XMAおよびYMAを推定する(Op.82)。第二判定部208は、マーカーの移動量XMA およびYMA と閾値T2を用いて、マーカーMの移動は画面内の移動かを判定する(Op.83)。マーカーMの移動が画面外への移動であれば(Op.83No)、Op.45に戻り、第一入力制御部202は、新たな画像データを取得する。
一方、マーカーMの移動が画面内での移動であれば(Op.83Yes)、マーカーMの移動は微小な移動であるかを判定する(Op.84)。例えば、第三判定部209は、マーカーの移動量XMA の絶対値およびYMA の絶対値と、閾値T3とを比較する。
移動が微小でない場合(Op.84No)、第三判定部209は、移動が急速な移動であるのかを、判定する(Op.86)。つまり、第三判定部209は、すでに取得した検出値(加速度)が予め設定された閾値T4以上であるのかを判定する。
移動が急速な移動であると判定された場合(Op.86Yes)、第二入力制御部210は、新たな画像データを取得する(Op.87)。そして、第二入力制御部210は、新たな画像データを第一認識部203へ入力する(Op.88)。第一認識部203は、画像認識処理を実行する(Op.89)。なお、このとき、ID取得処理は行われない。
認識が成功した場合には(Op.90Yes)、第一表示制御部206は、Op.89における画像認識処理結果およびOp.49におけるID取得処理結果に基づき、表示制御処理を行う(Op.91)。つまり、モデル−ビュー変換および透視変換によって、ARコンテンツの配置位置が決定される。さらに、表示部23は、第一表示制御部206の制御の下、合成画像を表示する(Op.98)。
一方、認識が失敗した場合には(Op.90No)、制御部20はOp.45に戻り、第一入力制御部202は、新たな画像データを取得する。
また、移動が急速な移動でない場合に(Op.86No)、第二入力制御部210は、画像データを記憶部24から取得する(Op.92)。そして、第二入力制御部210は画像データを第二表示制御部211へ入力するとともに、第二表示制御部211は合成画像を生成する。表示部23は、第二表示制御部211による制御の下、合成画像を表示する(Op.93)。
Op.93にて表示される合成画像は、Op.92で取得された画像データにARコンテンツが重畳された画像である。また、当該画像データに重畳されるARコンテンツは、過去の画像認識処理結果に応じて決定された位置に配置される。
マーカーMの移動が微小な移動である場合(Op.84Yes)には、第三判定部209の判定結果を受けて、第二表示制御部211は、過去に表示された合成画像の表示を継続する(Op.85)。
Op.85、Op.93、Op.98が終了した後、第二算出部207は、閾値T2の更新処理に入る。閾値T2を動的に更新する事で、今後の判定処理を適切に行うことができる。第二算出部207は、タイマー(計時部26)をリセットし、起動する(Op.94)。ただし、リセットする前の計測時間については、Op.95の処理に利用されるため、一時的に記憶される。なお、新たに計測される経過時間は、新たなマーカーの移動量を推定する(Op.82)際に利用される。
つぎに、第二算出部207は、Op.81で取得した加速度および、過去のマーカー位置PMを利用して、現時点でのマーカー位置PM’を推定する(Op.95)。なお、本実施例においては、Op.82においては、移動量の推定のみを行い、新たなマーカー位置PM’は算出しないとしたため、Op.95にて、タイマーをリセットする前の経過時間とOp.81で取得した加速度を用いてマーカー位置PM’を推定する。ただし、マーカー位置PM’をOp.82で求めることとした場合には、Op.95は不要であって、Op.82を実行するまでの経過時間とOp.81で取得した加速度を用いて、マーカー位置PM’が推定される。
加速度(ax,ay,az)を取得した時点でのマーカー位置PM’(Xs’,Ys’)は以下の式9および式10により求められる。ただし、式9および式10において利用される経過時間tは、Op.94にてリセットされる前のタイマー(計時部26)の計測時間である。また、XsおよびYsは、過去に計算されたマーカー位置PMである。
次に、第二算出部207は、新たに推定したマーカー位置PM’を用いて、新たな閾値T2’を算出する(Op.96)。なお、閾値T2’は、閾値T2同様、マーカー位置PM’(Xs’,Ys’)と式3乃至式6により求められる。
第二算出部207は、新たに算出したマーカー位置PM’と、閾値T2’で、過去に算出したマーカー位置PMと閾値T2を更新する(Op.97)。閾値T2の更新処理によって、閾値T2は、随時更新されるため、第二判定部208は、Op.83において、適切に判定を行う事ができる。
以上のように、第二の実施例に係る表示装置2は、画像認識処理の実行をより細かく制御する事で、第一の実施例と比較してさらなる処理負荷の軽減を図ることができる。
[第二の実施例における変型例]
さらに、第二の実施例において、撮影処理の停止および開始(再開)についても、細かく制御されるとしてもよい。例えば、Op.61の処理の後、制御部20は、撮影部22による撮影処理を終了させる。そして、Op.83で否定の判定がなされた場合、Op.90で否定の判定がなされた場合、Op.84で否定の判定がなされた場合などに、制御部20による制御の下、撮影部22は撮影処理を再開する。
このように、新たな画像データが必要となった場合に撮影処理が再開されるため、それ以外の期間は、撮影処理は停止される。よって、撮影部22による撮影処理にかかる処理負荷や消費電力が、さらに節減される。
[すべての実施例における変型例]
開示した実施例における他の態様では、透過型ディスプレイにARコンテンツの投影画像が表示されてもよい。この態様においても、ユーザがディスプレイを透過して得られる現実空間の像と、ARコンテンツの投影画像とが整合するので、ユーザに提供される視覚的な情報が拡張される。
[ハードウェア構成例]
各実施例に示した表示装置1、表示装置2、および管理装置3のハードウェア構成について説明する。図18は、各実施例の表示装置のハードウェア構成例である。各実施例における表示装置(表示装置1および表示装置2)は、コンピュータ1000によって、実現される。図3及び図13に示す機能ブロックは、例えば、図18に示すハードウェア構成により実現される。
コンピュータ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は、ディスプレイなどの画像出力装置や、透過型ディスプレイなどが用いられる。
透過型ディスプレイが用いられる場合には、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に読み出し、読み出されたプログラムの手順に従って処理を行なう。例えば、制御部10や制御部20の機能は、プロセッサ1001が、各実施例のフローチャートに例示された制御方法が規定された制御プログラムに基づいて、他のハードウェアの制御を行なうことにより実現される。
通信部11や通信部21の機能は、プロセッサ1001が、通信インターフェース1010を制御してデータ通信を実行させ、受信したデータを記憶媒体1005に格納させることにより実現される。撮影部12および撮影部22の機能は、カメラモジュール1011が入力画像用の画像バッファに画像データを書込み、入力画像用の画像バッファ内の画像データをプロセッサ1001が読み出すことにより実現される。画像データは、モニタリングモードにおいては、例えば、入力画像用の画像バッファに書き込まれるとともに、表示デバイス1015の表示用バッファに並行して書き込まれる。
また、表示部13および表示部23の機能は、プロセッサ1001により生成された画像データが表示インターフェース1014に備えられた表示用バッファに書き込まれ、表示デバイス1015が表示用バッファ内の画像データの表示を行なうことにより実現される。記憶部14および記憶部24の機能は、ROM1003および記憶媒体1005がプログラムファイルやデータファイルを記憶すること、また、RAM1002がプロセッサ1001のワークエリアとして用いられることによって実現される。例えば、ARコンテンツ情報、テンプレート情報などがRAM1002に格納される。
次に、図19は、コンピュータ1000で動作するプログラムの構成例を示す。コンピュータ1000において、ハードウェア群の制御を行なうOS(オペレーティング・システム)2002が動作する。OS2002に従った手順でプロセッサ1001が動作して、HW(ハードウェア)2001の制御・管理が行なわれることで、AP(アプリケーションプログラム)2004やMW(ミドルウェア)2003による処理がHW2001上で実行される。
コンピュータ1000において、OS2002、MW2003及びAP2004などのプログラムは、例えば、RAM1002に読み出されてプロセッサ1001により実行される。また、各実施例に示した制御プログラムは、例えば、MW2003としてAP2004から呼び出されるプログラムである。
または、制御プログラムは、AP2004としてAR機能を実現させるプログラムである。制御プログラムは、記憶媒体1005に記憶される。記憶媒体1005は、各実施例に係る制御プログラム単体または、他のプログラムを含むAR制御プログラムを記憶した状態で、コンピュータ1000本体と切り離して流通され得る。
また、MW2003のプログラムとAP2004のプログラムとが共同して、表示装置1または表示装置2の機能ブロック図に示すような各処理部を実現するとしてもよい。例えば、図3に示す判定部16、入力制御部17、表示制御部19は、MW2003により実現され、認識部18はAP2004により実現されるとしてもよい。
次に、各実施例における管理装置3のハードウェア構成について説明する。図20は、管理装置3のハードウェア構成例である。管理装置3は、コンピュータ3000によって、実現される。管理装置3は、例えば、図20に示すハードウェア構成により実現される。
コンピュータ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を制御して通信処理を行なう。