以下詳細な本発明の実施例に関して説明する。なお、以下の各実施例は、処理の内容を矛盾させない範囲で適宜組み合わせることが可能である。以下、図面に基づいて各実施例について説明する。
まず、現実空間に対応する3次元の仮想空間上に配置されたARオブジェクトを、カメラが撮像する撮像画像に重ねて表示させるAR技術について説明する。ARオブジェクトは、仮想空間上に配置される三次元物体のモデルデータである。また、ARコンテンツは、どういったARオブジェクトを、仮想空間上にどのように配置するかが規定された情報である。
ARオブジェクトは、例えば、複数の点を含むモデルデータである。複数の点を直線や曲線で補間して得られる複数の面ごとに模様(テクスチャ)が設定され、複数の面が合成されることで3次元のモデルが形成される。ARオブジェクトの仮想空間上での配置は、ARオブジェクトを構成する各点の座標が現実空間内に存在する基準物を基準として定められることで行なわれる。現実空間において各点の座標の位置にオブジェクトが存在するわけではなく、各点の座標は基準物を基準として仮想空間上に定められるものである。
ARオブジェクトが仮想空間上に配置される一方で、カメラが撮像した撮像画像内に写り込んだ基準物の見え方(像)に基づいて、カメラと基準物との現実空間における位置関係が求められる。現実空間内に存在する基準物を基準とする仮想空間上の座標と、現実空間におけるカメラと基準物との位置関係により、現実空間に対応する3次元の仮想空間上でのカメラとARオブジェクトの各点の座標との位置関係が求められる。
これらの位置関係に基づいて、仮想空間上でカメラがARオブジェクトを撮像した場合に得られるARオブジェクトの像が決定される。つまり、ARコンテンツが、撮像画像に重畳して表示される。ARオブジェクトの像を算出するための演算について、図1、図2、図3、および図4に基づいてさらに説明する。
図1は、カメラ座標系とマーカー座標系との関係を示す。図1に示されるマーカーMは、基準物の一例である。図1に例示されるマーカーMは、正方形形状をしており、予めサイズが定められている(例えば1辺の長さが5cmなど)。なお、図1に示されるマーカーMは正方形形状であるが、複数の視点のうち、いずれの視点から、撮像して得られる像に基づいても、カメラからの相対的な位置および向きが判別可能な形状の他の物体が、基準物に用いられてもよい。例えば、撮像画像から生成される特徴点などを基準物として用いてもよい。
カメラ座標系は、(Xc,Yc,Zc)の3次元で構成され、例えばカメラの焦点を原点(原点Oc)とする。例えば、カメラ座標系のXc−Yc平面はカメラの撮像素子面と平行な面であり、Zc軸は撮像素子面に垂直な軸である。
マーカー座標系は、(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は、カメラ座標系とマーカー座標系とにおけるARオブジェクトEの例を示す。図2に示すARオブジェクトEは、吹き出し形状のオブジェクトであり、吹き出し内に「ヒビあり!」というテキストデータを含む。ARオブジェクトEの吹き出しの先の黒丸は、ARオブジェクトEの基準点を示す。ARオブジェクトEのマーカー座標系における座標は、V2m(X2m,Y2m,Z2m)とする。さらにARオブジェクトEの向きは回転座標G2m(P2m,Q2m,R2m)で定められ、ARオブジェクトEのサイズは倍率D(Jx,Jy,Jz)で定められる。
ARオブジェクトEを構成する各点の座標は、ARオブジェクトEの雛型である定義データ(ARテンプレート)に定義されている各点の座標が、基準点の座標V2m、回転座標G2mおよび倍率Dに基づいて調整された座標である。なお、ARテンプレートにおいては、基準点の座標を(0,0,0)として、各点の座標が定義される。
その後、当該ARテンプレートを採用したARオブジェクトの基準点V2mが設定されると、ARテンプレートを構成する各点の座標は、座標V2mに基づいて平行移動される。さらに、ARテンプレートに含まれる各座標は、設定された回転座標G2mに基づいて回転され、倍率Dで拡縮される。つまり、図2のARオブジェクトEは、ARテンプレートに定義された各点が、基準点の座標V2m、回転座標G2mおよび倍率Dに基づいて調整された点に基づいて構成された状態を示している。
マーカー座標系で座標が設定されたARオブジェクトEの各点の座標が、カメラ座標系に変換され、さらにカメラ座標系の座標に基づいて画面内の位置が算出されることにより、ARオブジェクトEを重畳表示するための像が生成される。
ARオブジェクトEに含まれる各点のカメラ座標系における座標は、マーカー座標系における各点の座標を、マーカーの原点Omのカメラ座標系における座標V1cおよび、カメラ座標系に対するマーカー座標系の回転座標G1cに基づき、座標変換(モデル−ビュー変換)することで算出される。例えば、モデル−ビュー変換が、ARオブジェクト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は生成される。
ARオブジェクトEを構成する各点のマーカー座標系の座標(Xm,Ym,Zm)は、変換行列Mに基づくモデル−ビュー変換により、カメラ座標系の座標(Xc,Yc,Zc)に変換される。例えば、座標V2mはモデル−ビュー変換により座標V2cに変換される。モデル−ビュー変換により得られた座標(Xc,Yc,Zc)は、ARオブジェクトEが存在する仮想的な空間にカメラが存在するとした場合のカメラからの相対的な位置を示す。
次に、ARオブジェクトEの各点のカメラ座標系の座標は、スクリーン座標系に変換される。スクリーン座標系は、(Xs,Ys)の2次元で構成される。また、スクリーン座標系(Xs,Ys)は、例えばカメラの撮像処理により得られる撮像画像の中心を原点(原点Os)とする。この座標変換(透視変換)により得られる各点のスクリーン座標系の座標に基づいて、ARオブジェクトEを撮像画像に重畳表示する為の像が生成される。
カメラ座標系からスクリーン座標系への座標変換(透視変換)は、例えば、カメラの焦点距離fに基づいて行なわれる。カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のXs座標は、以下の式1で求められる。また、カメラ座標系における座標(Xc,Yc,Zc)に対応するスクリーン座標系の座標のYs座標は、以下の式2で求められる。
Xs=f・Xc/Zc (式1)
Ys=f・Yc/Zc (式2)
ARオブジェクトEを構成する各点の座標(カメラ座標系)が透視変換されて得られる座標(スクリーン座標系)に基づいて、ARオブジェクトEの像が生成される。ARオブジェクトEは、ARオブジェクトEを構成する複数の点を補間して得られる面にテクスチャをマッピングすることにより生成される。ARオブジェクトEの元になるARテンプレートには、どの点を補間して面を形成するか、どの面に殿テクスチャをマッピングするかが定義される。
上述のモデル−ビュー変換および透視変換により、マーカー座標系の座標に対応する撮像画像上の座標が算出され、その座標を利用することで、カメラの視点に応じたARオブジェクトEの像が生成される。なお、生成されるARオブジェクトEの像は、ARオブジェクトEの投影画像と呼ばれる。ARオブジェクトEの投影画像が撮像画像に合成されることで、ユーザに提供される視覚的な情報が拡張される。
また、他の態様では、透過型ディスプレイにARオブジェクトEの投影画像が表示される。この態様においても、ユーザがディスプレイを透過して得られる現実空間の像と、ARオブジェクトの投影画像とが整合するので、ユーザに提供される視覚的な情報が拡張される。
本実施例では、カメラ機能および表示機能を有する情報処理装置1により、上述のAR技術の適用対象であるARオブジェクトEの位置や向きの指定が行なわれる。情報処理装置1は、ユーザからの入力に応じてARオブジェクトEの位置や向きの指定を行なう。
図5は、合成画像の例を示す。図5の合成画像S1は、マーカーMの像および物体Hの像を含む撮像画像に、ARオブジェクトEの投影画像が合成された合成画像の例である。撮像画像は、例えば、後述する情報処理装置1のカメラ機能により取得された画像であって、現実空間に存在する物体の像をとらえる。なお、情報処理装置1のカメラ機能は、ユーザにより撮像指示が行われなくとも、所定のフレーム間隔で撮像を行う。
撮像画像は工場内で撮像された画像であり、撮像画像内に写り込んだ物体Hはカーブしたパイプである。そして、物体Hのカーブした部分にひび割れが生じている。工場の保守点検の作業などにおいては、ひび割れなどが生じていた場合に、ひび割れ箇所の指摘を申し送り事項として記録することが行なわれる。
ひび割れ箇所と整合する位置に「ヒビあり!」というメッセージを含む吹き出し形状のARオブジェクトEが設定されることで、申し送り事項の記録が行なわれる。なお、吹き出し形状のARオブジェクトEを、ひび割れ箇所と整合する位置に配置する作業は、ARコンテンツを作成する作業の一例である。
後から現場に訪れたユーザは、マーカーMおよび物体Hの像を含む撮像画像に、前の作業者により設定されたARオブジェクトEの投影画像が、図1乃至図4に示す方法で生成された合成画像を見ることにより、ひび割れ箇所を把握することができる。
ARオブジェクトEを含むARコンテンツに関するデータが作成された場合、例えば、当該データは、管理装置にアップロードされる。そして、後から現場に訪れるユーザが操作する情報処理装置1は、現場に向かう前かもしくは現場で管理装置から当該データを、管理装置からダウンロードして入手する。なお、ARコンテンツに関するデータは、ARコンテンツ情報と称する。詳細は後述する。また、ARコンテンツを作成する情報処理装置と、後から現場を訪れるユーザが操作する情報処理装置は、同一の装置であってもよいし、異なる装置であってもよい。
そして、情報処理装置1は、撮像画像に含まれるマーカーMの像(形状およびサイズ)に基づいて、カメラに対するマーカーMの位置座標V1cおよび回転座標G1cを求める。また、マーカーMの模様に基づいて、マーカーの識別情報(マーカーID)などの情報が情報処理装置1に読みとられる。基準物として画像の特徴点を用いる場合には、例えば、情報処理装置1が、特徴点の情報とマーカーIDとを予め対応づけておき、その対応関係に基づいてマーカーIDを取得する。本実施例におけるマーカーMは、現実空間内での位置および向きが固定されている。
ARオブジェクトEの座標(カメラ座標系)は、ARオブジェクトEに設定された各点の座標(マーカー座標系)を位置座標V1cおよび回転座標G1cに基づきモデル−ビュー変換することにより得られる。情報処理装置1は、ARオブジェクトEの各点の座標(カメラ座標系)を透視変換して得られるスクリーン座標系の座標に基づいて、ARオブジェクトEの投影画像を生成する。座標変換については前述の通りである。
情報処理装置1は、前述の座標変換により、ARオブジェクトEを情報処理装置1のカメラの視点から眺めるという仮想的な状況におけるARオブジェクトの像(投影画像)を生成する。さらに、情報処理装置1は、生成した投影画像を撮像画像に合成することで、ARオブジェクトがあたかも現実空間に存在するかのように見せることができる。
上述の通り、AR技術により生成される合成画像S1は、人間の知覚により収集される情報の拡張に用いられる。図5に例示される合成画像S1では、ARオブジェクトEがパイプのひび割れ部分に「ヒビあり!」の吹き出しが付加されることで、現実空間に存在する物体に対して情報が付加されている。
ここで、先に述べたとおり、合成画像S1を生成する為には、事前にARコンテンツを作成することが必要である。しかし、ARコンテンツの作成においてARオブジェクトの配置位置が正確に指定されない場合、情報処理装置1の位置によっては、ARオブジェクトの投影画像は、情報の付加対象とは整合しない位置に表示される可能性がある。よって、現実空間に存在する物体に対する情報の付加という目的が果たされなくなる。
例えば、ARオブジェクトEがひび割れと異なる位置に配置されてしまうと、ARオブジェクトEによる申し送りを受けるユーザがひび割れを発見できない可能性がある。さらには、ARオブジェクトEが情報の付加対象の物体とは異なる物体の位置に指定されてしまうと、誤った情報が提供されることとなってしまう。
ARオブジェクトEが別のパイプの位置に配置されてしまうと、ARオブジェクトEによる申し送りを受けた場合に、ひび割れが無い箇所に対してひび割れの存否の確認を行なうという余分な作業が発生する。そのため、ARオブジェクトEの位置の設定は、ARオブジェクトEによる申し送りを受けるユーザがARオブジェクトEと現実空間内の物体(例えばひび割れ箇所)との対応関係を把握可能な程度に現実空間と整合することが求められる。
ここで、ARコンテンツの作成について説明する。なお、ARコンテンツの作成においては、ARオブジェクトを生成するとともに、マーカー座標系における該ARオブジェクトの位置(例えば基準点の位置座標)を指定する。例えば、ARオブジェクトは、予め作成されたARテンプレートから、ユーザは所望のテンプレートを選択することで生成される。
一方、位置の指定に関しては、例えば、ユーザが、表示された撮像画像内の位置を指定することが考えられる。つまり、位置指定を行うユーザは、ARオブジェクトEの投影画像を表示したい位置を、撮像画像において指定する。
本指定方法ならば、ユーザはARオブジェクトEの投影画像が、撮像画像のどの位置に合成されるのかを推定して、ARオブジェクトの配置位置を指定することができる。そのため、ユーザが、撮像画像が表示された画面を確認しながら、位置指定を行なうことより、ARオブジェクトEの投影画像が物体Hのひび割れ箇所と整合する位置に配置される。ひいては、申し送りを受けるユーザが所持する情報処理装置1は、ひび割れ箇所と整合した位置にARオブジェクトEが重畳表示された、合成画像S1を生成することができる。
ここで、上記指定方法における問題点を説明する。図6は、ARオブジェクトEの配置例と情報処理装置1との位置関係を示す。図6に示す配置例は、図5に例示されたマーカーM、物体HおよびARオブジェクトEを俯瞰した状態の位置関係を示す。ただし、ARオブジェクトEは、現実空間に存在しないため、仮想的に配置された像である。
さらに、図6に示す配置例は、マーカーMおよび物体Hを撮像する撮像装置を備える情報処理装置1も示す。なお、図6は、情報処理装置1、マーカーM、物体HおよびARオブジェクトEをカメラ座標系のXc軸およびZc軸の2次元空間に投影して示した図である。
図6は、図5に例示されるARオブジェクトEの配置として、2通りの例を示す。情報処理装置1に対して手前に配置された場合のARオブジェクトE(E1)が図6に示される。また、もうひとつの例として、奥に配置された場合のARオブジェクトE(E2)が示される。
すなわち、図5を用いて例示された合成画像S1内でARオブジェクトEの位置を設定したとしても、ARオブジェクトE(E1)のように配置されるか、オブジェクトE(E2)のように配置されるかは定められない。2つの例はいずれも、ある位置から撮像された撮像画像を用いた合成画像においては、図5に示す投影画像においては、同一のARオブジェクトEとして認識される。
ただし、実際の俯瞰図からわかるように、ARオブジェクトE(E1)のように配置されれば、ARオブジェクトEは、Zc方向においても、パイプのひび割れと整合した位置に設定されている。その一方で、ARオブジェクトE(E2)のように配置されると、ARオブジェクトEはパイプと整合しない位置(実質的に離れた位置)に設定されたことになる。
図7は、他の合成画像の例を示す。図7に例示される合成画像S2も、合成画像S1と同様に、情報処理装置1が備える撮像装置により撮像された撮像画像と、ARオブジェクトEの投影画像とが合成されて表示された画面である。ただし、情報処理装置1が、撮像画像を撮像した位置が、図5や図6の例とは異なる。例えば、ARオブジェクトEが設定された後に現場を訪れたユーザは、合成画像S2のような画角でARオブジェクトEを確認する可能性がある。
合成画像S2内のARオブジェクトE(E1)およびARオブジェクトE(E2)の像は、図6に例示されるARオブジェクトE(E1)およびARオブジェクトE(E2)に対応する投影画像である。なお、実際の合成画像では、いずれかのARオブジェクトが表示されなければならないが、図6を用いて説明したとおり、Zc方向の位置が指定されていない場合には、図7のように、異なる位置に、複数のARオブジェクトが表示される可能性があることとなる。
図8は、ARオブジェクトEの配置例と情報処理装置との他の位置関係を示す。図8は、図6と同様に情報処理装置1、マーカーM、物体HおよびARオブジェクトEを俯瞰した状態の位置関係を示す。図7に例示される合成画像S2の撮像画像は、図8に示す位置に配置された情報処理装置1により撮像された撮像画像である。
ARオブジェクトEの位置が図6におけるARオブジェクトE(E1)の位置であれば、図7に示す合成画像S2のARオブジェクトE(E1)のように、ARオブジェクトEの投影画像は物体Hと整合した位置に表示される。
その一方で、ARオブジェクトEの位置が図8におけるARオブジェクトE(E2)の位置であれば、図7に示す合成画像S2のARオブジェクトE(E2)のように、ARオブジェクトEの投影画像は、物体Hとは異なる位置に表示される。
ARオブジェクトE(E2)のように表示されてしまうと、「ヒビあり!」と情報が付加された位置にはひび割れが存在しないため、「ヒビあり!」という情報の付加という目的が果たされていない。また、ARオブジェクトE(E2)に示される位置にひび割れがあるかのようにユーザに誤解され得る。すなわち、ARオブジェクトEがE2の位置に設定されることにより、必要な情報の提供に漏れが生じるとともに、不要な情報の提供が行なわれてしまう。
このように、ARコンテンツを作成する作業においては、撮像画像(例えば、図5の合成画像S1からARオブジェクトEを除いた画像)に対して、ARオブジェクトEの配置位置が指定されたとしても、Zc方向の配置位置を適切に指定しない限り、図7のような合成画像S2が作成されることとなる。つまり、適切なARオブジェクトの配置位置(例えば、ARオブジェクトの基準点の座標V2m)の指定を行うことができない。
ここで、ARオブジェクトの配置位置を、一意に定めるために、次のようなことが行われていた。なお、以下に説明する方法は、ARオブジェクトの配置位置を一意に定めるための方法であって、必ずしも、適切な位置にARオブジェクトの配置を決定するものではない。
例えば、従来の位置指定方法は、カメラ座標系における、マーカーの原点座標(X1c,Y1c,Z1c)を取得する。そして、当該マーカーの原点座標の「Z1c」と、撮像画像内で指定された位置(Xs、Ys)とを利用して、ARオブジェクトの位置V2m(Xm、Ym、Zm)を決定していた。
従来の位置指定方法は、図6に示すARオブジェクトE(E1)やARオブジェクトE(E2)のうち、マーカーと同じ奥行き方向(Zc方向)の位置を有するARオブジェクトE(E2)の位置に、ARオブジェクトが仮想提起に配置されることとなる。したがって、図7の合成画像S2においては、ARオブジェクトE(E2)の投影画像が、合成画像上に表示されることとなり、合成画像を閲覧するユーザは、適切な情報を取得することが難しくなっていた。
上述のように、撮像画像に表示される物体Hの像を確認しながらARオブジェクトEの投影画像の位置を指定したとしても、ARオブジェクトEのZc方向の位置が、適切に指定されない。そのため、他の角度から撮像した合成画像S2には、物体Hにおけるひび割れ箇所と整合しない位置に、ARオブジェクトの投影画像が表示される事態が生じる。
なお、申し送り作業以外にも、AR技術は、作業者の作業内容の指示にも利用可能である。例えば、ARコンテンツを作成するユーザは、パイプに設けられたバルブ(図示せず)が、閉まっていることを確認する作業を指示するARコンテンツを作成する。その際、バルブと整合する位置に、「バルブがしまっていることを確認」というメッセージを含む吹き出し形状のARオブジェクトE´(図示せず)を配置する必要がある。
ARコンテンツが作成された後に、確認作業を行うユーザが、当該パイプ付近に設置された基準物を情報処理装置で撮像する事で、ARオブジェクトE´が重畳表示された合成画像を閲覧することができる。そして、ユーザは、当該バルブが閉まっていることを確認する必要があることを認識することができる。しかし、申し送りの例と同様に、バルブとは整合しない位置にARオブジェクトE´が表示されると、ユーザは、確認作業を正確に、またはスムーズに行うことができない。
本実施例に開示の技術においては、ARコンテンツを作成する際に、まず、ユーザは、ARオブジェクトを配置したい位置において撮像操作を行う。なお、ここでいう撮像操作は、シャッターボタンを押下することであって、撮像装置が一定のフレーム間隔で撮像を行う操作とは異なる。
そして、本実施例に係る情報処理装置1は、撮像された画像を入力画像として取得し、入力画像から認識された基準物の像に基づいて、基準物を基準とした撮像位置を示す位置情報を算出する。そして、情報処理装置1は、当該位置情報を、ARオブジェクトの配置位置として設定する。
例えば、ユーザは、パイプHのヒビが存在する位置から、マーカーMを撮像する。すると、撮像された撮像画像を、入力画像として取得した情報処理装置1は、マーカー座標系における撮像位置の座標を算出する。そして、当該座標を、ARオブジェクトの基準点の座標V2mとして設定する。
図9は、本実施例における、ARオブジェクトの配置を説明するための図である。情報処理装置1が備える撮像装置は、パイプHのひび割れ箇所の付近で、撮像を行う。なお、XcおよびZcだけでなく、高さYcについても、ヒビの位置に接近していることが望ましい。また、撮像装置は、マーカーMも撮像可能な位置および画角で撮影を行う。
すると、情報処理装置1は、マーカー座標系における、情報処理装置1の座標を示す位置情報(Xm,Ym,Zm)を算出する。つまり、マーカー座標系における、カメラ座標系の原点が対応する座標が求められる。詳細は後述する。そして、位置情報は、ARオブジェクトの配置位置として設定される。
例えば、図9における情報処理装置1の位置に、ARオブジェクトは仮想的に配置されることとなる。よって、後から、同様のマーカーMを撮像した情報処理装置1は、図9における情報処理装置1の位置にARオブジェクトが配置された仮想的な空間を、撮像したような合成画像を生成することとなる。なお、後から同様のマーカーMを撮像する情報処理装置1の位置がいずれの位置であっても、合成画像における適切な位置に、ARオブジェクトの投影画像が表示されることとなる。
以上のように、ARコンテンツを作成するユーザは撮像操作を実行するだけで、ARオブジェクトの配置位置を指定することができる。つまり、ARコンテンツの作成作業を簡略化することができる。なお、ARコンテンツが示す内容が関連する対象箇所に近接した位置で、撮像操作が行われる。
[第一の実施例]
まず、第一の実施例に係る詳細な処理および情報処理装置等の構成について説明する。図10は、システム構成図である。図10の例では、情報処理装置の例として、通信端末1−1および通信端末1−2を示す。以下、これらを総称して、情報処理装置1とする。さらに、情報処理装置1は、ネットワークNを介して、管理装置2と通信する。
情報処理装置1は、例えば、撮像装置を有する、タブレットPCやスマートフォンなどのコンピュータである。管理装置2は、例えば、サーバコンピュータであって、情報処理装置1を管理する。ネットワークNは、例えば、インターネットである。なお、本実施例に係るシステムは、情報処理装置1および管理装置2を含む。
情報処理装置1は、ARコンテンツの作成を行う。情報処理装置1は、具体的には、ARオブジェクトの作成および、マーカー座標系におけるARオブジェクトの配置位置を決定する。そして、情報処理装置1は、作成したARコンテンツに関わるARコンテンツ情報を生成する。また、情報処理装置1は、作成されたARコンテンツ情報を利用して、合成画像を生成してもよい。
一方、管理装置2は、情報処理装置1が作成したARコンテンツの情報を管理する。例えば情報処理装置1は、ARコンテンツの作成が終了した場合、作成したARコンテンツに関するARコンテンツ情報を、管理装置2へ送信する。管理装置2は、ARコンテンツ情報を受信すると、管理装置2の記憶部にARコンテンツ情報を格納する。
また、情報処理装置1が、ARコンテンツ情報を利用した合成画像を生成する場合に、管理装置2は、情報処理装置1からARコンテンツ情報の要求を受信する。管理装置2は、要求に応じてARコンテンツ情報を情報処理装置1へ送信する。なお、後述するように、AR表示においてはARコンテンツ情報以外に、ARオブジェクトのテンプレートを規定するテンプレート情報も必要である。よって、管理装置2は、テンプレート情報も併せて情報処理装置1へ送信する。
詳細は後述するが、ARコンテンツ情報は、ARコンテンツを定義するための情報である。本実施例においては、ARコンテンツ情報は、情報処理装置1により作成される。テンプレート情報は、ARコンテンツのモデルデータを描画するための情報である。また、ARコンテンツ情報は、設定情報の一例である。
次に、情報処理装置1の機能的構成について説明する。図11は、情報処理装置1の機能ブロック図である。情報処理装置1は、通信部11、撮像部12、制御部13、記憶部14、表示部15を含む。また、情報処理装置1が撮像部12を有さない場合は、他の撮像装置から撮像画像を、通信により取得してもよい。この場合には、他の撮像装置による撮像位置が、ARコンテンツの作成に利用される。
通信部11は、他のコンピュータと通信を行う。例えば、通信部11は、生成したARコンテンツ情報を管理装置2へ送信する。また、合成画像を生成する為に、ARコンテンツ情報、テンプレート情報を、管理装置2から受信する。
撮像部12は、画像を撮像する。そして、撮像部12は、撮像した画像を、制御部13へ入力する。
制御部13は、情報処理装置1が実行する各種処理を制御する。例えば、制御部13は、撮像部12が撮像した撮像画像を、入力画像として受け付けるとともに、マーカーを基準とした場合の撮像位置に関する位置情報を算出する。さらに、制御部13は、ARコンテンツ情報を生成する。なお、制御部13は、認識部16、算出部17、コンテンツ生成部18、画像生成部19を含む。
認識部16は、入力画像から基準物を認識する。本実施例においては、認識部16は、マーカーMを認識する。マーカーMの認識方法は、従来の物体認識方法が適用される。例えば、認識部16は、マーカーMの形状を既定したテンプレートを用い、テンプレートマッチングを行うことでマーカーMを認識する。
さらに、認識部16は、基準物が撮像装置に含まれることを認識すると、基準物を識別する識別情報を取得する。例えば、マーカーIDが取得される。なお、マーカーIDは、マーカーを識別する識別情報である。また、マーカーIDを取得する方法は、従来の取得方法が適用される。例えば、基準物がマーカーである場合には、二次元バーコードと同様に、白と黒の配置から、一意のマーカーIDが取得される。
また、認識部16は、基準物を認識した場合、基準物の像に基づいて、基準物の位置・回転座標を算出する。なお、基準物の位置・回転座標は、カメラ座標系での値である。さらに、認識部16は、基準物の位置・回転座標に基づき、変換行列Mを生成する。
次に、算出部17は、認識部16が認識した基準物の像に基づいて、基準物を基準としたときの、入力画像の撮像位置を示す位置情報を算出する。なお、ここでは、認識部16が生成した変換行列Mが利用される。例えば、算出部17は、入力画像内のマーカーの像の形状に基づき、マーカー座標系の座標位置を算出する。
ここで、位置情報の算出方法について、図1、図3および図4を用いて、説明する。まず、認識部16は変換行列Mを生成する。なお、変換行列Mの生成方法は、先に述べたとおりである。算出部17は、認識部16により変換行列Mが生成されたあと、マーカー座標系からカメラ座標系への変換行列Mの逆行列M
−1と、列ベクトルAc(Xc,Yc,Zc,1)との積により、列ベクトルAm(Xm,Ym,Zm,1)を求める。具体的には、算出部17は、以下の式3により、列ベクトルAm(Xm,Ym,Zm,1)を求める。
なお、撮像位置は、カメラ座標系の原点と略一致すると考えると、撮像位置は(0,0,0)である。よって、Acに列ベクトル(0,0,0,1)を代入する事で、式1により、カメラ座標系の原点が、マーカー座標系のどの点に対応するのかを求めることができる。
以下、カメラ座標系の原点に対応するマーカー座標系の点をU(Xu,Yu,Zu)とする。なお、点Uは、式3により求められる列ベクトルAu(Xu,Yu,Zu,1)の、3次元までの値により構成される点である。つまり、算出部17は、位置情報としてU(Xu,Yu,Zu)を算出する。
図11に戻る。コンテンツ生成部18は、ARコンテンツ情報を生成する。つまり、コンテンツ生成部18は、位置情報と、ARオブジェクトに関する表示データと対応付けて、ARコンテンツ情報を生成する。なお、表示データは、例えば、適用されるテンプレートを指定する情報や、テンプレート内にテキスト情報として表示する付属情報などを含む。詳細は、後述する。
画像生成部19は、ARコンテンツを作成する処理により生成されたARコンテンツ情報、テンプレート情報に基づき、合成画像を生成する。なお、合成画像の生成においても、認識部16が生成した変換行列Mが利用される。
また、画像生成部19は、合成画像以外にも、種々の画像を生成する。例えば、予め準備されたテンプレートの一覧を表示するテンプレート選択用の画像を生成する。なお、テンプレート選択用の画像については、後述する。画像生成部19は、生成した画像を、表示部15を制御することで、表示する。
記憶部14は、制御部13の制御の下、各種情報を記憶する。記憶部14は、ARコンテンツ作成時に生成されたARコンテンツ情報を記憶する。また、マーカー管理情報等の情報も一時的に記憶する。なお、マーカー管理情報は、入力画像から認識したマーカーに関する情報である。詳細は、後述する。
さらに、ARコンテンツ作成時に生成されたARコンテンツ情報以外にも、過去に生成されたARコンテンツ情報、テンプレート情報を、管理装置2から取得した場合、記憶部14は、これら情報を記憶する。
最後に、表示部15は、画像生成部19により生成された合成画像や、その他の画像を表示する。
次に、各種情報について説明する。図12、図13、図14は、ARオブジェクトEの位置指定処理に用いられるデータのデータ構造を示す。
図12は、マーカー管理テーブルT1を示す。マーカー管理テーブルT1は、マーカー管理情報を記憶する。なお、マーカー管理情報は、入力画像に含まれるマーカーMの像から得られた認識結果に関する情報である。認識部16は、マーカーMを認識すると、マーカー管理テーブルT1にマーカー管理情報を格納する。
マーカー管理テーブルT1は、認識部16が認識したマーカーのそれぞれについて、マーカーID、カメラ座標系での座標(Xc,Yc,Zc,Pc,Qc,Rc)、およびコンテンツ追加フラグなどの情報を含む。
マーカー管理テーブルT1に格納された情報によれば、本実施例におけるマーカーMのマーカーIDは「100」であり、位置座標は(X1c,Y1c,Z1c)であり、回転座標は(P1c,Q1c,R1c)である。コンテンツ追加フラグは、コンテンツを追加する対象となるマーカーを識別するための情報である。例えば、マーカーID「100」のマーカーに対応付けるARコンテンツを作成する際には、マーカーID「100」に対応するコンテンツフラグは「1」となる。
図13は、テンプレート情報テーブルT2を示す。テンプレート情報テーブルT2は、ARオブジェクトのモデルデータとして適用される各テンプレートを定義するためのテンプレート情報を格納する。テンプレート情報は、テンプレートの識別情報(テンプレートID)、テンプレートを構成する各頂点の座標情報T21、およびテンプレートを構成する各面の構成情報T22(頂点順序およびテクスチャIDの指定)を含む。
頂点順序は、面を構成する頂点の順序を示す。テクスチャIDは、面にマッピングされるテクスチャの識別情報を示す。テンプレートの基準点は例えば0番目の頂点である。テンプレート情報テーブルT2に示される情報により、3次元モデルの形状および模様が定められる。
図14は、ARコンテンツ情報テーブルT3を示す。ARコンテンツ情報テーブルT3は、ARコンテンツに関するARコンテンツ情報を格納する。ARコンテンツ情報テーブルT3には、ARコンテンツのコンテンツID、基準点のマーカー座標系における位置座標(Xm,Ym,Zm)、マーカー座標系における回転座標(Pm,Qm,Rm)、ARテンプレートを基準とする倍率D(Jx,Jy,Jz)、ARテンプレートのテンプレートID、マーカーIDおよび追加情報が格納される。
ARコンテンツ情報テーブルT3に格納される位置座標は、同じレコードに格納されたマーカーIDに示されるマーカーを基準とするマーカー座標系での座標である。算出部17は、位置座標を位置情報として算出する。
また、本実施例においては、回転座標(Pm,Qm,Rm)は、(0,0,0)とする。つまり、ARコンテンツのARオブジェクトは、マーカー座標系の各軸と平行な3軸で定義される。
画像生成部19がARオブジェクトEの投影画像を生成する際には、図13に示されるARテンプレートが、ARコンテンツ情報(位置、向きおよびサイズ)に基づいて調整される。すなわちARオブジェクトEの位置・向き・サイズの指定は、ARコンテンツ情報テーブルT3で管理される情報の設定により行なわれる。また、追加情報は、ARオブジェクトEに追加される情報である。追加情報として、テキストや、Webページやファイルへのアクセス情報などが用いられる。
例えば、図14に示されたコンテンツIDが「1000」のARコンテンツは、ARテンプレート「10」に定義される各頂点座標が、Xm、Ym、Zm方向のそれぞれに1倍され、回転座標(0,0,0)で回転され、位置座標(20,25,10)に応じて並進されて得られる各頂点により構成される。ARコンテンツは、さらにARオブジェクトEを構成する面に追加情報のマッピングを行なう。
コンテンツ生成部18は、ARコンテンツ情報を生成するとともに、記憶部14のARコンテンツ情報テーブルT3に格納する。なお、ARコンテンツ情報テーブルT3は、新たに生成したARコンテンツに関するARコンテンツ情報を格納する一方、さらに、過去に生成したARコンテンツ情報も併せて格納してもよい。
なお、過去に生成されたARコンテンツ情報は、管理装置2から取得される。例えば、ARコンテンツ作成時であっても、新たにARコンテンツを対応付けようと考えるマーカーに対して、過去に生成されたARコンテンツ情報を含む合成画像が、ユーザに対して提供される。よって、ARコンテンツを作成するユーザは、過去に生成されたARコンテンツの配置を認識したうえで、新たなARコンテンツに係るARオブジェクトの配置位置を指定することもできる。
次に、本実施例に関する各種処理の流れについて説明する。図15は、位置指定処理の処理手順例を示す。位置指定処理が規定された位置指定プログラムは、制御部13により実行される位置指定処理の手順が定義されたプログラムである。
制御部13は、位置指定プログラムが起動されると、位置指定の前処理を行なう(Op.101)。Op.101の処理においては、テンプレート情報が管理装置2から取得される。
Op.101の前処理が行なわれると、制御部13は、AR表示モードの起動指示を行なう(Op.102)。Op.102において、制御部13は、例えば撮像部12に所定時間間隔での撮影を開始させ、撮影された画像について認識部16にマーカー検知処理を開始させる。さらに、制御部13は、表示部15に、撮像部12により撮影された撮像画像を表示させる。
撮像部12は、制御部13から撮影を指示されると、撮像素子により生成される画像を所定の時間間隔で取得し、取得した画像を記憶部14に記憶する。記憶部14には、複数枚の画像を格納するバッファが設けられ、撮像部12により撮影された画像は、そのバッファに格納される。例えば、記憶部14に設けられるバッファは、表示部15が表示させる画像が格納される表示用バッファである。表示用バッファに格納される画像は、順次、表示部15に表示される。
認識部16は、記憶部14に設けられたバッファに格納された画像を取得し、取得した画像にマーカーMの像が含まれているか否か判定する(Op.103)。認識部16は、バッファに格納される所定枚数のうちの1枚の画像について検知処理を行なうこととしてもよい。
また、認識部16は、マーカーMのマーカーIDの読みとりを行なう。マーカーIDの読みとりは、例えば、四角形の枠内の輝度の情報に基づいて行なわれる。例えば、四角形枠を分割した各領域について、輝度が所定値以上の領域を「1」とし、輝度が所定値未満の領域を「0」として、各領域を所定の順序で、「1」または「0」のいずれであるかを判定し、判定して得られた情報の列をマーカーIDとする。
また、例えば、輝度が所定値以上の領域と所定値未満の領域の四角形枠内での配置をパターン化しておき、パターンに対応するマーカーIDを用いることとしてもよい。さらに、マーカーIDに割り当てられる数値範囲が予め定められており、読みとったマーカーIDがその数値範囲内でない場合には、マーカーIDが読みとれなかったと判定することとしてもよい。
認識部16は読みとったマーカーIDを、記憶部14に記憶されたマーカー管理テーブルT1に格納する。さらに、認識部16は、マーカーMの像の位置座標(スクリーン座標系)を制御部13に通知する。
認識部16がマーカーMを検知した場合(Op.103:YES)、マーカー認識処理を実行する(S104)。認識部16がマーカーMを検知しなかった場合(Op.103:NO)には、プログラムの終了を指示されたか否かを判定する(Op.108)。終了を指示されていなければ(Op.108:NO)、制御部13は、マーカーを検知したか否かの判定(Op.103)を行なう。
図16は、マーカー認識処理の処理手順例を示す。マーカー認識処理が開始されると、画像生成部19は、認識部16の指示の下、認識されたマーカーMが表示部14の表示画面内で表示される位置に、マーカーの存在を示す強調表示(ハイライト表示)を行なう(Op.201)。強調表示は、例えば、マーカーMの表示位置に四角い枠を表示するなどにより行なわれ、マーカーMが検知されたことをユーザに通知する役割を果たす。
認識部16は、画像生成部19に、マーカーMの位置座標(スクリーン座標系)を通知する。画像生成部19は、表示部15に表示させる画像(表示用バッファ内の画像)に対し、認識部16からの通知に応じた位置に強調表示図形を合成する。強調表示図形は、例えば四角い赤枠などの表示要素である。
Op.201の処理が行なわれると、認識部16は、マーカーMの位置・回転座標を算出する(Op.202)。つまり、変換行列Mを生成するための情報を算出する。認識部16は、Op.103で検知されたマーカーMの像に基づき、マーカーMの位置・回転座標(カメラ座標系)を算出する。マーカーMの位置・回転座標(カメラ座標系)は、例えば、マーカーMの像の形状および画像内の位置に基づいて算出される。算出された位置・回転座標(カメラ座標系)は、マーカー管理テーブルT1に格納される。
次に、画像生成部19は、マーカー管理テーブルT1に登録されたマーカーと対応付けられたARコンテンツの表示処理(Op.203、Op.204、Op.205)を行なう。なお、ARコンテンツの表示処理は、認識されたマーカーに対応付けられたARコンテンツ(過去に作成されたARコンテンツ)が、管理装置2から取得されている場合に実行される。ARコンテンツが存在しない場合には、ARコンテンツの表示処理は、省略される。
画像生成部19は、ARコンテンツ情報テーブルT3に登録されたARコンテンツ情報のうち、マーカー管理テーブルT1に登録されたマーカーIDを含むものを探索する。該当するARコンテンツが存在する場合には、画像生成部19は、ARコンテンツ情報をARコンテンツ情報テーブルT3から取得する。そして、取得したARコンテンツ情報に含まれるテンプレートIDに対応するテンプレート情報テーブルを読みだす。
そして、画像生成部19は、テンプレート情報で定義されるARオブジェクトの各点の座標を、マーカー座標系からカメラ座標系に変換する(Op.203)。そして、画像生成部19は、ARオブジェクトの各点の座標を、カメラ座標系からスクリーン座標系へ変換することで、ARオブジェクトの投影画像を生成する(Op.204)。
画像生成部19は、ARオブジェクトについて投影画像が生成されると、投影画像を表示用バッファ内の撮影画像に合成する(Op.205)。Op.205の処理が行なわれると、制御部13は、表示部15に編集開始ボタンB10を表示させる(Op.206)。Op.206の処理が行なわれると、制御部13は、図16に示すマーカー認識処理を終了し、図15に示す位置指定処理のフローチャートに戻る。
続いて制御部13は、Op.206で編集開始ボタンB10が表示されてから所定時間内に編集開始ボタンB3への入力が検知されるか否かの判定を行なう(Op.105)。編集開始ボタンへの入力が検知される(Op.105:YES)と、制御部13は図18に示す編集処理を実行する(Op.106)。所定時間内に編集ボタンB10への入力が検知されない場合(Op.105:NO)には、制御部13は、プログラムの終了を指示されたか否かを判定する(Op.108)。
図17は、編集処理の処理手順例を示す。編集処理が開始されると、制御部13は、ユーザからの撮像指示を受け付けたか否かを判定する(Op.301)。ここでは、例えば、ユーザによりシャッターボタンが押下されたか否かを判定する。なお、撮像部12は、ユーザからの撮像指示を受け付けることなく、一定のフレーム間隔で撮像を実行する。撮像部12は、ユーザにより撮像指示を受け付けた場合には、当該撮像指示のタイミングで、別途画像を撮像する。
撮像指示を受け付けるまで、制御部13は、待機する(Op.301:No)。一方、撮像指示を受け付けた場合(Op.301:Yes)、撮像部12が、画像を撮像するとともに、算出部17は、撮像部12から画像を取得する。そして、算出部17は、当該撮像画像を入力画像として、入力画像における基準物の像に基づき、基準物を基準とした撮像位置を示す位置情報を算出する(Op.302)。なお、回転座標には、例えば、(0,0,0)が設定される。
そして、コンテンツ生成部18は、テンプレートの選択を受け付ける(Op.303)。例えば、撮像位置を算出したのち、算出部17は、画像生成部19にテンプレート選択用画面の生成を依頼する。表示部15が、テンプレート選択用画面を表示したのち、コンテンツ生成部18は、ユーザがテンプレート選択用画面にて指定したテンプレートのテンプレートIDを取得する。なお、テンプレート選択用画面については後述する。なお、撮像指示の取得に先駆けて、テンプレートが選択される態様であってもよい。
つぎに、コンテンツ生成部18は、算出部17が算出した位置情報と、指定されたテンプレートのテンプレートIDを含むARコンテンツ情報を生成する(Op.304)。なお、Op.303において、ARオブジェクトとして採用されたテンプレートに関して、倍率情報や、追加情報の入力を受け付けてもよい。この場合、ARコンテンツ情報は、倍率情報や、追加情報を含む。
Op.304の処理が行なわれると、制御部13は、図17に示す編集処理を終了し、図15に示す位置指定処理のフローチャートに戻る。制御部13の制御の下、通信部11は、生成したARコンテンツ情報を管理装置2へ送信する(Op.107)。なお、記憶部14におけるARコンテンツ情報テーブルのうち、新たに作成されたARコンテンツに関するARコンテンツ情報のみを、通信部11は、管理装置2へ送信することとしてもよい。
そして、制御部13は、Op.108の処理において、プログラムの終了が指示されている場合(Op.108:YES)には、位置指定プログラムの処理を終了する。一方、プログラムの終了が指示されていない場合(Op.108:NO)には、制御部13は、Op.103の処理に戻る。
ここで、テンプレート選択画面について説明する。図18は、テンプレート選択画面例を示す。図17に示すOp.303の処理において、テンプレート選択画面S3が表示される。テンプレート選択画面には、ARテンプレートのタイプを選択可能なボタン群(ボタン1〜ボタン9)が表示される。テンプレート選択画面の説明において、ボタン領域内に示される番号に基づいてボタンを識別して説明する。例えば、「1」という番号が示される四角いボタンが「ボタン1」である。また、テンプレート選択画面は、図18に示したボタン群以外にも選択可能なボタン群を含み、それらのボタン群を表示させるためのスクロール操作をさせるためのスクロールボタンB11を含む。また、テンプレート選択画面は、ARテンプレートの選択を終了させるメニュークローズボタンB12を含む。
各ボタンは、それぞれ個別のテンプレートIDに対応する。すなわち、それぞれのボタンに対応するテンプレート情報テーブルが設けられている。いずれかのボタンに対して入力が行なわれると、そのボタンに対応するテンプレートIDが選択され、選択されたテンプレートIDに基づいてテンプレート情報テーブルが呼び出される。
ボタン1には、吹き出しタイプのARテンプレートが対応付けられている。吹き出しタイプのARテンプレートでは、吹き出し形状の図形内にテキスト情報が追加される。ボタン2は、引き出しボックスタイプのARテンプレートが対応付けられている。引き出しボックスタイプのARテンプレートでは、引き出し線と、引き出し線の先に接合する四角形の図形とを含み、四角形の図形内にテキスト情報が追加される。
ボタン3は、テキストボックスタイプのARテンプレートが対応付けられている。テキストボックスタイプのARテンプレートでは、四角形の枠状の図形に対してテキスト情報が追加される。ボタン4は、写真タイプのARテンプレートが対応付けられている。写真タイプのARテンプレートでは、四角形の枠状の図形内に画像データがマッピングされる。この画像データは、記憶部14に記憶された画像ファイルが用いられる。
ボタン5は、撮影タイプのARテンプレートが対応付けられている。撮影タイプのARテンプレートも写真タイプのARテンプレートと同様のARテンプレートであるが、画像データの取得先が異なる。撮影タイプのARテンプレートが使用されると、撮影モードが呼び出され、撮像部12による撮像処理が行なわれる。撮影タイプのARテンプレートを使用すると、四角形の枠状の図形内に、撮影処理により撮影された画像データがマッピングされる。写真タイプや撮影タイプでマッピングされる画像データは、静止画でも動画でもよい。
ボタン6は、手書きタイプのARテンプレートである。手書きタイプのARテンプレートは、透明で四角形の図形であり、さらに図形の模様が手書き操作により編集される。ボタン7は、リンクタイプのARテンプレートであり、テキストボックスタイプのARテンプレートと同様のテンプレートである。リンクタイプのARテンプレートが選択されると、Webページのリストが表示され、リスト内から選択されたWebページへのアクセス情報がARテンプレートに付加される。Webページのリストは、例えば、Webブラウザのブックマークやアクセス履歴から取得される。
ボタン8は、図形タイプのARテンプレートと対応付けられている。図形タイプのARテンプレートは、3次元の立体モデル図形が定義されている。例えば、ボタン8への入力に応じて、立体モデル図形の形状を選択させる画面表示を行なうこととしてもよい。立体モデル図形の形状は、例えば、立方体、直方体、円柱、球、円錐および三角柱などである。また、ボタン8への入力に応じて、CADデータの呼び出しを行なうこととしてもよい。CADデータは、例えば、記憶部14に格納されたCADデータのファイルが選択される。
ボタン9は、ファイルタイプのARテンプレートと対応づけられている。ファイルタイプのARテンプレートは、ファイルを示すアイコン画像がマッピングされた四角形の図形である。ファイルタイプのARテンプレートが選択されると、記憶部14内のファイルを選択させ、選択されたファイルへのリンクをARテンプレートに付加させる。
以上のように、本実施例における情報処理装置1は、マーカー座標系における撮像位置を、ARオブジェクトの配置位置として利用することで、簡易にARコンテンツの作成を可能とする。つまり、ユーザが、ARオブジェクトを配置したい場所において、基準物を撮像する操作を実行するだけで、ARオブジェクトの配置位置を、仮想空間における撮像位置に紐付けることができる。
[第二の実施例]
第一の実施例においては、マーカー座標系における、カメラ原点に対応する点を、ARオブジェクトの配置位置として利用する例を説明した。第二の実施例は、カメラ座標系における原点の位置を仮想的に変更する事で、実際の撮像装置の位置(撮像位置)とは異なる位置に、ARオブジェクトを配置する。なお、カメラ座標系における原点の位置を仮想的に変更することを、オフセットを設定すると称する。また、オフセット値は、カメラ座標系におけるXc,Yc,Zc各々について設定することができる。例えば、カメラの奥行き方向へ、ARオブジェクトの配置位置を変更したい場合には、Zcに関するオフセット値が与えられる。
ARオブジェクトを配置したい場所とマーカーの設置位置との関係によっては、ARオブジェクトを配置した位置からマーカーを撮像することが難しい場合がある。例えば、マーカーMが装置の前面に設置されていて、ARオブジェクトの配置は、装置の奥側である場合などである。
第二の実施例は、オフセットを利用することで、撮像位置とは異なる位置にARオブジェクトを配置する。第二の実施例に係る位置指定方法について説明する。なお、第二の実施例に係る情報処理装置1の機能的構成は、第一の実施例と同様である。
例えば、図15に示すOp.105において編集処理の呼び出しが実行されたあと、図17に示す編集処理におけるOp.301の前に、制御部13は、ユーザからオフセットモードの指定を受け付けたか否かを判定する。なお、オフセットモードの指定を受け付けない場合には、第一の実施例と同様の処理が実行される。一方、オフセットモードの指定を受け付けた場合には、Op.302の前に、カメラの原点Ocを、仮のカメラ原点Oc´へ変換する処理を実行する。
つまり、オフセット値として、各々Xc座標に関してXo、Yc座標に関してYo、Zc座標に関してZoが与えられた場合には、仮想的なカメラ原点は(Xo,Yo,Zo)となる。なお、カメラ原点を、仮想的な撮像位置とする。
そして、算出部17は、仮想的な撮像位置(Xo,Yo,Zo)を用いて、対応する列ベクトルAc(Xo,Yo,Zo,1)を生成する。そして、式3に、Acを代入することで、仮想的な撮像位置に対応する、マーカー座標系での位置を示す位置情報を算出する(Op.302)。なお、以下の処理は第一の実施例と同様である。
ここで、オフセット値は予め設定された値でも良いし、ユーザにより入力された値でも良い。なお、カメラ座標系における各軸における「1」が現実空間でどの程度の長さに相当するのかは、予め設定される。例えば、基準物として1辺5cmのマーカーを利用する場合には、各軸における「1」は、例えば、実空間における5cmに対応させる等してもよい。
[第三の実施例]
第三の実施例では、第二の実施例同様、オフセットを利用してARオブジェクトの位置指定を行う。ただし、第三の実施例では、位置指定をより容易にするために、ARオブジェクトの配置位置の目安を、ガイド表示する。ユーザはガイド表示を見ながら、ARオブジェクトがどの位置に配置されるのかを把握することができる。そして、ガイド表示を閲覧したユーザが決定指示を入力した時点で、ARオブジェクトの位置が決定される。
第三の実施例に係る位置指定処理における編集処理について、図19を用いて説明する。なお、第三の実施例に係る情報処理装置1の機能的構成は、第一の実施例と同様である。図19は、第三の実施例に係る編集処理の処理手順例である。
なお、制御部13は、第二の実施例と同様に、ユーザからオフセットモードの選択を受け付けた場合に、以下の処理を実行する。オフセットモードの選択を受け付けない場合には、第一の実施例と同様の処理が実行される。
制御部13は、ユーザによるオフセット値の入力を受け付ける事により、または予め設定されたオフセット値を記憶部14から取得することにより、オフセット値を取得する(Op.401)。次に、認識部16は、記憶部14のバッファから、最新の撮像画像を取得する(Op.402)。そして、最新の撮像画像から、基準物を認識する(OP.403)。そして、認識部16は、基準物の像に基づき、変換行列を生成する。
認識部16が変換座標を生成すると、算出部17は、変換行列を利用して位置座標を算出する(Op.404)。具体的には、まず、第二の実施例と同様に、撮像位置を(0,0,0)から、仮想的な撮像位置へ変換する。オフセット値として、Xc座標に関してXo、Yc座標に関してYo、Zc座標に関してZoの値を取得した場合には、仮想的な撮像位置として、(Xo,Yo,Zo)を算出する。
そして、算出部17は、仮想的な撮像位置(Xo,Yo,Zo)を用いて、列ベクトルAc(Xo,Yo,Zo,1)を生成する。そして、式3に、Acを代入することで、仮想的な撮像位置に対応する、マーカー座標系での位置を示す位置情報を算出する。
次に、画像生成部19は、Op.404で算出された位置情報に基づき、ARオブジェクトの仮の配置位置を、Op.402で取得した撮像画像上に表示するガイド表示画面を生成する(Op.405)。そして、画像生成部19の制御の下、表示部15は、ガイド表示画面を表示する。
図20は、仮の指定位置を示すガイド表示を説明するための図である。図20に示すガイド表示画像S4は、柱100、柱100に設置されたマーカーM´、モニタ101等が存在する実空間を撮像した撮像画像に、ガイド表示102が重畳表示された画像である。
ガイド表示102の先端は、Op.404にて算出された位置情報に基づき、決定される。ガイド表示の先端位置は、合成画像におけるARコンテンツの投影画像と同様に、位置情報で指定された位置座標(マーカー座標系)を、スクリーン座標系に変換することで得られる。なお、仮の指定位置は、ガイド表示の先端部分のみで表示されてもよいし、図20のように棒状の形状で表示されてもよい。
図19に戻り、制御部13は、ユーザからの決定入力を受け付けたか否かを判定する(Op.406)。決定入力は、例えば、表示画像S4上に、決定ボタンを配置した場合、当該決定ボタンが押下されることで、行われる。また、撮像ボタンが押下された場合に、決定入力が行われたことを判定してもよい。
決定入力を受け付けなかった場合(Op.406:No)、制御部13は、認識部16に、新たな最新画像の取得を指示する(Op.402へ)。一方、決定入力を受け付けた場合(Op.406:Yes)、コンテンツ生成部18は、テンプレートの選択を受け付ける(Op.407)。つぎに、コンテンツ生成部18は、算出部17が算出した位置情報と、指定されたテンプレートのテンプレートIDを含むARコンテンツ情報を生成する(Op.408)。
以上のように、第三の実施例によれば、ARコンテンツを作成するユーザは、ARオブジェクトの仮の配置位置を、表示画面S4により確認することができる。そして、適切な配置位置を確認したうえで、ARオブジェクトの配置位置を決定することができる。
[第四の実施例]
上記第一の実施例、第二の実施例、および第三の実施例は、撮像装置を有する情報処理装置1が、ARコンテンツ情報を生成することとして説明を行ったが、これに限られない。
例えば、管理装置2がARコンテンツ情報の生成を行ってもよい。つまり、管理装置2は、撮像装置を有する情報処理装置1から、撮像画像を取得することで、当該撮像画像を入力画像として、位置指定処理を実行する。
第一の実施例および第二の実施例に示した位置指定処理を管理装置2が実行する場合には、撮像画像はリアルタイムに情報処理装置1から取得してもよいし、別の時点で取得してもよい。なお、情報処理装置1から取得する撮像画像は、ユーザにより撮像指示が行われた時点よりも前で、かつ最も近い時点で撮像された画像である。
一方、第三の実施例に示した位置指定処理を管理装置2が実行する場合には、情報処理装置1から撮像画像を適宜取得するとともに、表示画像S4を生成した場合には、情報処理装置1へ送信する。
[ハードウェア構成例]
各実施例に示した情報処理装置1および管理装置2のハードウェア構成について説明する。図21は、各実施例の情報処理装置のハードウェア構成例である。各実施例における情報処理装置1は、コンピュータ300によって、実現される。図11に示す機能ブロックは、例えば、図21に示すハードウェア構成により実現される。コンピュータ300は、例えば、プロセッサ301、Random Access Memory(RAM)302、Read Only Memory(ROM)303、ドライブ装置304、記憶媒体305、入力インターフェース(入力I/F)306、入力デバイス307、出力インターフェース(出力I/F)308、出力デバイス309、通信インターフェース(通信I/F)310、カメラモジュール311、加速度センサ312、角速度センサ313、表示インターフェース(表示I/F)314、表示デバイス315およびバス316などを含む。それぞれのハードウェアはバス316を介して接続されている。
通信インターフェース310はネットワーク3を介した通信の制御を行なう。通信インターフェース310が制御する通信は、無線通信を利用して、無線基地局を介してネットワークNにアクセスする態様でもよい。入力インターフェース306は、入力デバイス307と接続されており、入力デバイス307から受信した入力信号をプロセッサ301に伝達する。出力インターフェース308は、出力デバイス309と接続されており、出力デバイス309に、プロセッサ301の指示に応じた出力を実行させる。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ300の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、プロセッサ301の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、スピーカーなどの音声出力装置などである。
表示インターフェース314は、表示デバイス315と接続されている。表示インターフェース314は、表示インターフェース314に設けられた表示用バッファにプロセッサ301により書き込まれた画像情報を、表示デバイス315に表示させる。表示デバイス315は、プロセッサ301の制御に応じて情報を出力する装置である。表示デバイス315は、ディスプレイなどの画像出力装置や、透過型ディスプレイなどが用いられる。
透過型ディスプレイが用いられる場合には、ARコンテンツの投影画像は、撮像画像と合成されるのではなく、例えば透過型ディスプレイ内の適切な位置に表示されるように制御されてもよい。これにより、ユーザは、現実空間とARコンテンツが整合した状態の視覚が得られる。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307及び表示デバイス315として用いられる。また、入力デバイス307及び表示デバイス315が、コンピュータ300内部に組み込まれる代わりに、例えば、入力デバイス307及び表示デバイス315が、コンピュータ300に外部から接続されてもよい。
RAM302は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAM以外にもフラッシュメモリなどが用いられてもよい。ROM303は、PROM(Programmable ROM)なども含む。
ドライブ装置304は、記憶媒体305に記憶された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体305は、ドライブ装置304によって書き込まれた情報を記憶する。記憶媒体305は、例えば、ハードディスク、SSD(Solid State Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの種類の記憶媒体のうちの少なくとも1つである。また、例えば、コンピュータ300は、コンピュータ300内の記憶媒体305の種類に対応したドライブ装置304を含む。
カメラモジュール311は、撮像素子(イメージセンサ)を含み、例えば、撮像素子が測定した値を読み出し、カメラモジュール311に含まれる入力画像用の画像バッファに書き込む。加速度センサ312は、加速度センサ312に対して作用する加速度を計測する。角速度センサ313は、角速度センサ313による動作の角速度を計測する。
プロセッサ301は、ROM303や記憶媒体305に記憶されたプログラムをRAM302に読み出し、読み出されたプログラムの手順に従って処理を行なう。例えば、制御部13の機能は、プロセッサ301が、図15に示される位置指定プログラムに基づいて、他のハードウェアの制御を行なうことにより実現される。通信部11の機能は、プロセッサ301が、通信インターフェース310を制御してデータ通信を実行させ、受信したデータを記憶媒体305に格納させることにより実現される。
記憶部14の機能は、ROM303および記憶媒体305がプログラムファイルやデータファイルを記憶すること、また、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。例えば、ARコンテンツ情報、テンプレート情報などがRAM302に格納される。
撮像部12の機能は、カメラモジュール311が入力画像用の画像バッファに画像データを書込み、入力画像用の画像バッファ内の画像データをプロセッサ301が読み出すことにより実現される。画像データは、モニタリングモードにおいては、例えば、入力画像用の画像バッファに書き込まれるとともに、表示デバイス315の表示用バッファに並行して書き込まれる。
また、表示部15の機能は、プロセッサ301により生成された画像データが表示インターフェース314に備えられた表示用バッファに書き込まれ、表示デバイス315が表示用バッファ内の画像データの表示を行なうことにより実現される。
次に、図22は、コンピュータ300で動作するプログラムの構成例を示す。コンピュータ300において、ハードウェア群の制御を行なうOS(オペレーティング・システム)502が動作する。OS502に従った手順でプロセッサ301が動作して、HW(ハードウェア)501の制御・管理が行なわれることで、AP(アプリケーションプログラム)504やMW(ミドルウェア)503による処理がHW501上で実行される。
コンピュータ300において、OS502、MW503及びAP504などのプログラムは、例えば、RAM302に読み出されてプロセッサ301により実行される。また、各実施例に示した位置指定プログラムを含むAR制御プログラムは、例えば、MW503としてAP504から呼び出されるプログラムである。
または、例えば、位置指定プログラムを含むAR制御プログラムは、AP504としてAR機能を実現させるプログラムである。AR制御プログラムは、記憶媒体305に記憶される。記憶媒体305は、本実施例に係る位置指定プログラム単体または、位置指定プログラムを含むAR制御プログラムを記憶した状態で、コンピュータ300本体と切り離して流通され得る。
次に、各実施例における管理装置2のハードウェア構成について説明する。図23は、各実施例の管理装置のハードウェア構成例である。管理装置2は、コンピュータ400によって、実現される。
管理装置2は、例えば、図23に示すハードウェア構成により実現される。コンピュータ400は、例えば、プロセッサ401、RAM402、ROM403、ドライブ装置404、記憶媒体405、入力インターフェース(入力I/F)406、入力デバイス407、出力インターフェース(出力I/F)408、出力デバイス409、通信インターフェース(通信I/F)410、SAN(Storage Area Network)インターフェース(SAN I/F)411及びバス412などを含む。それぞれのハードウェアはバス412を介して接続されている。
例えば、プロセッサ401はプロセッサ301と同様なハードウェアである。RAM402は、例えばRAM302と同様なハードウェアである。ROM403は、例えばROM303と同様なハードウェアである。ドライブ装置404は、例えばドライブ装置304と同様なハードウェアである。記憶媒体405は、例えば記憶媒体305と同様なハードウェアである。入力インターフェース(入力I/F)406は、例えば入力インターフェース(入力I/F)306と同様なハードウェアである。入力デバイス407は、例えば入力デバイス307と同様なハードウェアである。
出力インターフェース(出力I/F)408は、例えば出力インターフェース(出力I/F)308と同様なハードウェアである。出力デバイス409は、例えば出力デバイス309と同様なハードウェアである。通信インターフェース(通信I/F)410は、例えば通信インターフェース(通信I/F)310と同様なハードウェアである。SAN(Storage Area Network)インターフェース(SAN I/F)411は、コンピュータ400をSANに接続するためのインターフェースであり、HBA(Host Bus Adapter)を含む。
プロセッサ401は、ROM403や記憶媒体405に記憶された管理プログラムをRAM402に読み出し、読み出された管理プログラムの手順に従って処理を行なう。その際にRAM402はプロセッサ401のワークエリアとして用いられる。なお、管理プログラムは、管理装置2における位置指定処理に係る位置指定プログラムを含む。
ROM403および記憶媒体405が、プログラムファイルやデータファイルを記憶すること、もしくは、RAM402がプロセッサ401のワークエリアとして用いられることによって、管理装置2は、各種情報を記憶する。また、プロセッサ401が、通信インターフェース410を制御して通信処理を行なう。