(57)【要約】  一側面においては、撮像画像と整合する投影画像が表示可能であるにも関わらず、投影画像の表示を終了してしまうことを抑制することを目的とする。  一態様によれば、表示制御プログラムは、コンピュータに、撮像素子により撮像画像を取得するとともに、前記撮像素子の動き量を取得し、前記撮像素子から取得した撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量未満である場合に、前記表示制御を継続する、処理を実行させる。
2014016862.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
撮像素子から撮像画像を取得するとともに、前記撮像素子の動き量を取得し、
前記撮像素子から取得した撮像画像内から基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量未満である場合に、前記表示制御を継続する、
処理を実行させることを特徴とする表示制御プログラム。
【請求項２】
前記コンピュータに、さらに、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量以上である場合に、前記表示制御を終了する、
処理を実行させることを特徴とする請求項１に記載の表示制御プログラム。
【請求項３】
前記基準物を認識した後、前記撮像素子から取得した撮像画像内に前記基準物の像が認識されない場合に、前記撮像素子の動き量が前記所定量以上であるか否かを判定する、
ことを特徴とする請求項１または請求項２に記載の表示制御プログラム。
【請求項４】
前記基準物を認識した後、前記撮像素子から連続して取得した複数の撮像画像のいずれにおいても、前記基準物の像が含まれない場合に、前記撮像素子の動き量が前記所定量以上であるか否かを判定する、
処理を実行させることを特徴とする請求項１または２に記載の表示制御プログラム。  
【請求項５】
前記コンピュータに、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内に前記基準物の像が含まれる場合に、前記表示制御を継続する、
ことを実行させることを特徴とする請求項１〜４のいずれか１項に記載の表示制御プログラム。
【請求項６】
前記画像モデルは、前記基準物を基準とする座標で定義された３次元のモデル情報であり、前記表示制御により、前記位置関係に応じて投影された画像に調整されて表示される、
ことを特徴とする請求項１〜４のいずれか１項に記載の表示制御プログラム。
【請求項７】
前記動き量は、前記コンピュータに備えられた加速度センサまたは角速度センサにより計測された値に基づいて算出される、
ことを特徴とする請求項１〜５のいずれか１項に記載の表示制御プログラム。
【請求項８】
前記所定量は、前記撮像素子の撮影範囲を基準に定められる動き量である、
ことを特徴とする請求項１〜５のいずれか１項に記載の表示制御プログラム。
【請求項９】
コンピュータに、
撮像素子により撮像画像を取得するとともに、前記撮像素子の動き量を取得し、
前記撮像素子から取得した撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量未満である場合に、前記表示制御を継続する、
処理を実行させることを特徴とする表示制御方法。
【請求項１０】
撮像部と、
前記撮像部の動き量を計測するセンサ部と、
前記撮像部から撮像画像を取得するとともに、前記センサ部から前記動き量を取得する取得部と、
前記撮像部から取得した撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像部から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、また、前記基準物を認識した後、前記撮像部から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量未満である場合に、前記表示制御を継続する制御部と、
を含むことを特徴とする表示制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示制御技術に関する。
【背景技術】
【０００２】
撮像素子により取得された撮像画像を表示する表示領域内に、画像モデルを投影させて得られる画像（投影画像）を撮像画像と整合させて表示させる技術がある。撮像画像と投影画像とが整合した表示は、撮像画像中に含まれる基準物の像の位置、サイズ及び向きなどに応じて、投影画像の表示領域内の位置、サイズ及び向きなどが調整されることにより行なわれる。【０００３】
投影画像の表示調整に用いられる基準物には、基準物が撮像画像内に映された像により、基準物と撮像素子との相対位置及び相対的な向き（相対角度）とを計測可能な識別体が用いられる。例えば、ＡＲ（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ：拡張現実感）マーカーと呼ばれる識別体が基準物として用いられる。ＡＲマーカーは、例えば、ＡＲマーカー自体が撮影された撮像画像に基づいて、撮像素子との相対位置及び相対角度を計測可能な模様（パターン）が印刷された印刷物などである。また、ＡＲマーカーには、撮像画像内のＡＲマーカーの像に基づいて、ＡＲマーカーに印刷されたパターンを解析することにより、ＡＲマーカーから情報を取得可能なものもある。【０００４】
投影画像の表示中に、撮像画像の更新により、基準物と撮像素子との相対位置及び相対角度の少なくとも一方が変化すると、更新された撮像画像と投影画像とが整合しなくなることがある。そのため、基準物と撮像素子との相対位置及び相対角度に応じて、投影画像の再調整が行なわれる。投影画像の再調整において、更新された撮像画像内に基準物の像が含まれない場合には、更新された撮像画像と整合する投影画像の表示位置やサイズが不明となるため、投影画像の表示を終了させる制御が行なわれる。上述のように、撮像画像内に基準物の像が含まれるか否かの判定に応じた投影画像表示の実行制御によって、撮像画像と整合しない恐れのある投影画像の表示を終了させることができる。【０００５】
一方で、投影画像の再描画に関して、投影画像を表示領域に表示した状態で端末装置に設けられた方位センサの値が所定値以上となった場合にのみ、投影画像の再描画を行なう技術がある（特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２３８０９６号公報
【特許文献２】特開２０００−１５６８４９号公報
【特許文献３】特開２００６−１８８１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、撮影範囲が変わらない場合であっても、撮像素子と基準物との間に障害物が入り込むと、基準物が障害物の陰に隠れるため、撮影情報に基準物の像が含まれなくなる。そのような場合に基準物の非認識に基づいて投影画像の表示が終了されると、撮像画像と整合する投影画像の表示が可能であるにも関わらず、投影画像の表示が終了されてしまうこととなる。【０００８】
本開示の一側面においては、撮像画像と整合する投影画像が表示可能であるにも関わらず、投影画像の表示を終了してしまうことを抑制することを目的とする。
【課題を解決するための手段】
【０００９】
一態様によれば、表示制御プログラムが、コンピュータに、  撮像素子から撮像画像を取得するとともに、前記撮像素子の動き量を取得し、前記撮像素子から取得した撮像画像内から基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量未満である場合に、前記表示制御を継続する、処理を実行させる。【００１０】
一態様によれば、コンピュータに、撮像素子により撮像画像を取得するとともに、前記撮像素子の動き量を取得し、前記撮像素子から取得した撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量未満である場合に、前記表示制御を継続する、処理を実行させることを特徴とする表示制御方法が用いられる。【００１１】
一態様によれば、表示制御装置は、撮像部と、前記撮像部の動き量を計測するセンサ部と、前記撮像部から撮像画像を取得するとともに、前記センサ部から前記動き量を取得する取得部と、前記撮像部から取得した撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像部から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、また、前記基準物を認識した後、前記撮像部から取得した撮像画像内より前記基準物が認識されず、かつ、前記動き量が前記所定量未満である場合に、前記表示制御を継続する制御部と、を含む。
【発明の効果】
【００１２】
一側面においては、撮像画像と整合する投影画像が表示可能であるにも関わらず、投影画像の表示を終了してしまうことを抑制することができる。
【図面の簡単な説明】
【００１３】
【図１Ａ−Ｃ】図１Ａ―Ｃは、マーカーと投影画像との関係を示す。
【図２】図２は、本実施形態のシステム構成例を示す。
【図３】図３は、端末装置１の機能ブロックの構成例を示す。
【図４】図４は、端末装置１のハードウェア構成例を示す。
【図５】図５は、サーバ装置２の機能ブロック構成例を示す。
【図６】図６は、サーバ装置２のハードウェア構成例を示す。
【図７Ａ−Ｂ】図７Ａ及びＢは、それぞれ端末装置１及びサーバ装置２で動作するプログラムの構成例を示す。
【図８】図８は、表示制御のフローチャート例を示す。
【図９Ａ−Ｂ】図９Ａ及びＢは、それぞれ認識管理テーブルＴ１および認識結果を格納する記憶領域Ｒ１のデータ構造例を示す。
【図１０】図１０は、マーカー座標テーブルＴ２の例を示す。
【図１１】図１１は、マーカー認識処理のフローチャート例を示す。
【図１２】図１２は、認識管理テーブルＴ１の更新処理のフローチャート例を示す。
【図１３Ａ−Ｃ】図１３Ａ−Ｃは、それぞれ加速度Ａｘ、速度Ｖｘ、位置座標Ｌｘの時間変化例を示す。
【図１４】図１４は、移動量算出処理のフローチャート例を示す。
【図１５Ａ−Ｂ】図１５Ａ及びＢは、座標テーブルＴ３および移動量テーブルＴ４の例を示す。
【図１６】図１６は、画像生成処理のフローチャートを示す。
【図１７】図１７は、投影画像管理テーブルＴ５の例を示す。
【図１８Ａ−Ｂ】図１８Ａ及びＢは、それぞれマーカー座標系とカメラ座標系との関係、およびスクリーン座標系を示す。
【図１９Ａ−Ｂ】図１９Ａ及びＢは、それぞれ変換行列Ｘ１および変換行列Ｘ２の例を示す。
【図２０】図２０は、端末装置１の機能ブロックの構成例を示す。
【図２１】図２１は、端末装置１のプログラムの構成例を示す。
【図２２】図２２は、サーバ装置２の機能ブロックの構成例を示す。
【図２３】図２３は、サーバ装置２のプログラムの構成例を示す。
【発明を実施するための形態】
【００１４】
本発明の実施形態について、図面を用いて説明する。
【００１５】
カメラなどから得られる撮像画像をリアルタイムに表示させる表示デバイスに、撮像画像と整合させて投影画像を重畳表示させる際に、ＡＲマーカーなどのマーカーが基準物として用いられる。マーカーは、画像を撮影する撮像素子に対する相対位置及び相対角度が、撮像画像内に映るマーカー自体の像に基づいて算出可能な識別体である。投影画像は、例えば、マーカーからの位置関係が定義された画像モデルを、マーカーの相対位置及び相対角度に基づいて投影角度やサイズが調整されることで得られる。画像モデルは、事前に形状と表面の模様（パターン）が定義されていても良いし、撮像画像を基に加工されたものでもよい。また、画像モデル自体は、１次元モデル、２次元モデル及び３次元モデルを含む。例えば、モデル自体が、１次元座標や２次元座標で定義されていても、定義されていない方向に定数の座標を与えることで、３次元の座標として表現することとしてもよい。投影画像の表示は、撮像画像を表示する表示デバイスだけでなく、例えば、透過型ディスプレイに対しても行なわれる。透過型ディスプレイに投影画像が表示される場合には、例えば、透過型ディスプレイを介して視認される像と整合するように調整された投影画像が表示される。
【００１６】
図１Ａ乃至Ｃのそれぞれは、マーカーと投影画像との関係の説明図である。フレームＦは、撮像素子により撮影される範囲を示し、フレームＦの内部は、撮像画像及び投影画像を表示させる表示画面の例を示す。図１Ａ乃至Ｃにおいては、実際に表示される内容が実線で表記され、実際に表示されない内容は点線で表記されている（矢印は除く）。
【００１７】
図１Ａは、マーカーが認識された場合の投影画像の表示例を示す。図１Ａに示す例においては、マーカーＭ１の像が撮像画像内に含まれる。また、投影画像ＰＩ１は、マーカーＭ１を基準として定義される画像モデルが、マーカーの相対位置及び相対角度とに基づいて調整されて生成される。画像モデルの定義には、マーカーに対してどの位置に存在するか（図１における矢印に相当する）、どのような形状をしているか（図１では立方体が例示されている）、などの指定が含まれる。
【００１８】
図１Ａに例示されるマーカーＭ１は、撮像素子とほぼ並行な向きを向いており、さらに、マーカーＭ１に対してどの位置に画像モデルが存在するかを示す矢印がほぼマーカーＭ１の面上に存在する。そのため、マーカーＭ１と投影画像ＰＩ１とのそれぞれの奥行きが、ほぼ同じ程度に表示される。投影画像ＰＩ２は、投影画像ＰＩ１と同様の定義がマーカーＭ２を基準として行なわれた画像モデルの投影画像である。図１Ａにおいて、マーカーＭ２は、マーカーＭ１よりも浅い角度で映り込んでいる。そのため、マーカーＭ２を基準とする投影画像ＰＩ２は、マーカーＭ２と異なる奥行きで表示される。マーカーＭ１及びマーカーＭ２を用いて説明したように、マーカーの像（映り方）に応じて、そのマーカーを基準として定義される投影画像の表示位置、サイズ及び向きが調整される。
【００１９】
図１Ｂは、マーカーがフレームアウトした場合の撮像画像の例を示す。図１Ｂの例においては、マーカーＭ３の像がフレームＦ内に含まれない。そのため、マーカーＭ３を基準に定義される画像モデルがあったとしても、その画像モデルに対応する投影画像（投影画像ＰＩ３）の表示は行なわれない。すなわち、マーカーの像がフレームアウトすると、表示の基準が不明になるため、投影画像の表示が中断される。図１Ｂにおいて、投影画像ＰＩ３を点線で示しているのは、マーカーＭ３を基準に定義される３Ｄモデルが存在するが、マーカーＭ３が認識されないために表示されないことを便宜的に示すためである。
【００２０】
例えば、あるマーカーを基準とする投影画像を表示させた後に、別のマーカーを基準とする投影画像を表示させる場合には、カメラが別の撮影対象に向けられるため、先に基準としていたマーカーのフレームアウトが生じうる。先に基準としていたマーカーのフレームアウトと、新しく基準となるマーカーのフレームインによって、投影画像表示の基準の切り換えが行なわれる。また、例えば、マーカーを基準とする投影画像の表示を終了させる場合には、カメラを撮影対象（投影画像表示の基準となるマーカーや投影画像など）に向け続ける必要がなくなる。その際には、操作者が別の操作（重畳表示の終了操作や端末に対する入力操作など）を行なうなどによりマーカーがフレームアウトすることとなり、操作者の意図に沿ったタイミングにおいて投影画像表示が終了となる。
【００２１】
図１Ｃは、障害物（図１Ｃの例では操作者の手）により、マーカーが認識できない場合の撮像画像の例を示す。図１Ｃにおいて、マーカーＭ４はフレームＦ内に収まっているが、障害物の存在により、マーカーＭ４の像が識別できない。そのため、マーカーＭ４を基準とする投影画像ＰＩ４の表示が中断されてしまう。障害物による投影画像表示の中断は、別の撮影対象へのフレームの移動や、操作者の別の操作への移行などの操作者の意図に沿ったフレームアウトによる中断と異なり、操作者が継続して投影画像を表示させようとした場合にも起こり得る。
【００２２】
操作者に投影画像表示を継続させる意図がある場合に、障害物により意図に沿わずに投影画像表示が中断されることとなれば、操作性を損なう要因となる。さらに、投影画像の表示を用いたアプリケーションプログラムに、複数の投影画像を順序立てて表示させるシナリオが存在する場合も想定される。そのようなアプリケーションプログラムの動作中に投影画像の表示が中断された場合には、例えば、シナリオが開始地点に戻ることとなる。もしくは、アプリケーションプログラム自体に、投影画像の表示が中断された場合のシナリオ復帰の仕組みが設けられることとなる。このような事態に対して、マーカーの像が撮像画像内に含まれないことの判定のみでなく、さらに撮影素子そのものが動いたことの検知が行なわれた場合にのみ、投影画像表示の中断が行われることで、操作者が意図しない投影画像表示の中断が抑制される。
【００２３】
図２は、本実施形態のシステム構成を示す。図２に示すシステムは、端末装置１、サーバ装置２、記憶装置３、ネットワーク４及び基地局５を含む。端末装置１とサーバ装置２とは、有線または無線のいずれか少なくとも一方の通信方法により通信可能である。サーバ装置２は、記憶装置３に含まれるデータベース３ａにアクセス可能である。
【００２４】
図３は、端末装置１の機能ブロックの構成を示す。端末装置１は、取得部１１、表示部１２、制御部１３、記憶部１４および通信部１５を含む。取得部１１は、端末装置１に備えられたセンサにより計測された情報を取得する。取得部１１により取得される情報は、例えば、撮像素子により撮影された画像や、端末装置１の動き量を示す情報（加速度・角速度センサにより計測される値など）である。例えば、取得部１１は、設定された時間間隔で情報を取得する。表示部１２は、制御部１３の制御に応じて画像を表示させる。例えば、図１Ａ乃至Ｃに示す画面のように、取得部１１が取得した撮像画像や、投影画像の表示を行なう。制御部１３は、取得部１１が取得した情報および通信部１５を介して取得した情報に応じて処理を行ない、表示部１２及び通信部１５を制御する。記憶部１４は、制御部１３に処理に用いられる情報を記憶する。例えば、後述の認識管理テーブルＴ１、マーカー座標テーブルＴ２、座標テーブルＴ３、移動量テーブルＴ４及び図１７に示す投影画像管理テーブルＴ５などを記憶する。通信部１５は、制御部１３の制御に応じて、サーバ装置２などの装置との通信を行なう。制御部１３は、３Ｄモデルの定義情報を記憶部１２から取得するか、もしくは通信部１５の通信によりサーバ装置２から取得する。すなわち、端末装置１が単体で動作する態様もある一方で、端末装置１とサーバ装置２とが連携して処理を行なう態様もあり得る。
【００２５】
制御部１３は、認識判定部１３１、移動判定部１３２、座標算出部１３３及び画像生成部１３４を含む。
【００２６】
認識判定部１３１は、取得部１１が取得した情報に応じて、マーカーを認識しているか否か判断する。認識判定部１３１は、撮像画像内にマーカーの像が含まれるか否かの判断と、端末装置１が動いたか否かの判断とを行なう。例えば、認識判定部１３１は、撮像画像内にマーカーの像が含まれるか否かの判断を定期的に行ない、認識状態にあったマーカーの像が撮像画像に像が含まれなくなった場合に、端末装置１本体の移動量に応じて、そのマーカーの認識状態を解除するか否かの判定を行なう。
【００２７】
移動判定部１３２は、認識判定部１３１の呼び出しに応じて端末装置１の移動量を算出する。認識判定部１３１は、移動判定部１３２が算出した移動量に応じて、端末装置１本体が動いたか否かの判定を行なう。移動判定部１３２による移動量の算出は、例えば、取得部１１が取得した加速度センサや角速度センサの計測値に基づいて算出される。もしくは、移動判定部１３２が、マーカーの位置座標の履歴に基づいて移動予測量を算出し、認識判定部１３１が移動予測量に基づいて、マーカーの認識状態を解除するか否かの判断を行なってもよい。
【００２８】
座標算出部１３３は、認識判定部１３１の呼び出しに応じて、撮像画像に含まれるマーカーの像に基づき、マーカーと撮像素子との相対位置及び相対角度を算出する処理を行なう。さらに、座標算出部１３３は、画像生成部１３４の呼び出しに応じて、３Ｄモデルに含まれる各頂点の座標変換を行なう。具体的には、座標算出部１３３は、マーカーを基準とする座標系で定義された座標から、３Ｄモデルを画面に表示させた際の表示画面中の位置を示す座標に変換する。この座標変換は、先に計算したマーカーの相対位置及び相対角度に基づいて行なわれる。
【００２９】
画像生成部１３４は、認識判定部１３１により認識されているマーカーに関連付けられた３Ｄモデルについて、座標算出部１３３により変換された各頂点の座標と、３Ｄモデルの定義とに基づいて、３Ｄモデルに対応した投影画像を生成する。制御部１３は、画像生成部１３４により生成された画像を表示部１２に表示させる制御を行なう。
【００３０】
図４は端末装置１のハードウェア構成を示す。図３に示す各機能ブロックは、例えば、図４に示すハードウェア構成により実現される。端末装置１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（入力Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（出力Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（通信Ｉ／Ｆ）３１０、カメラモジュール３１１、加速度センサ３１２、角速度センサ３１３およびバス３１４などを含む。それぞれのハードウェアはバス３１４を介して接続されている。
【００３１】
通信インターフェース３１０はネットワーク４を介した通信の制御を行なう。通信インターフェース３１０が制御する通信は、ネットワーク４に基地局５を介してアクセスする態様もあり得る。入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる。入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードや端末装置１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、端末装置１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。前述の通り、表示デバイスには、透過型ディスプレイが用いられてもよい。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、端末装置１に含まれず、例えば、端末装置１に外部から接続する装置であってもよい。
【００３２】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭ以外にもフラッシュメモリなどが用いられてもよい。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【００３３】
カメラモジュール３１１は、撮像素子（イメージセンサ）を含み、例えば、撮像素子が計測した値を読み出し、カメラモジュール３１１に含まれる入力画像用の画像バッファに書き込む。加速度センサ３１２は、加速度センサ３１２に対して作用する加速度を計測する。角速度センサ３１３は、角速度センサ３１３による動作の角速度を計測する。
【００３４】
プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラム（例えば図７Ａおよび図２２などに例示するプログラム）をＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って制御部１３の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１４の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイルやデータファイルを記憶すること、もしくは、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。
【００３５】
また、カメラモジュール３１１が画像データを生成し、生成された画像データをプロセッサ３０１が取得すること、ならびに加速度センサ３１２及び角速度センサ３１３が計測した値をプロセッサ３０１が取得することにより、取得部１１の機能が実現される。カメラモジュール３１１からプロセッサ３０１に引き渡される画像データは、例えば、カメラモジュール３１１が備える入力画像用のバッファに蓄積され、プロセッサ３０１は、入力画像用のバッファから画像データを読み出す。
【００３６】
さらに、プロセッサ３０１が、出力用の画像データを生成し、生成した画像データが出力デバイス３０９である表示デバイスに表示されることにより、表示部１２の機能が実現される。プロセッサ３０１が生成した出力用の画像データは、出力インターフェース３０８に備えられた出力画像用のバッファに書き込まれ、表示デバイスは出力画像用のバッファから画像データを読み出し、読み出した画像データを表示する。
【００３７】
図５は、サーバ装置２の機能ブロックの構成例を示す。サーバ装置２は、通信部２１、制御部２２、記憶部２３及びＤＢアクセス部２４を含む。通信部２１は、制御部２２の制御に応じて端末装置１と通信を行なう。制御部２２は、通信部２１の通信により端末装置１から情報の取得要求を受けた場合に、記憶部２３から情報を読み出して、読み出した情報を通信部２１に端末装置１に送信させる。もしくは、制御部２２は、ＤＢアクセス部２４が記憶装置３に含まれるデータベース３ａから情報を読み出し、読み出した情報を通信部２１に端末装置１に送信させる。端末装置１から取得を要求される情報は、例えば、マーカーに対応付けられた３Ｄモデルの定義情報などである。記憶部２３は、３Ｄモデルの定義情報などを記憶し、ＤＢアクセス部２４は、制御部２２の制御に応じて記憶装置３に含まれるデータベース３ａにアクセスする。
【００３８】
図６はサーバ装置２のハードウェア構成を示す。図５に示す各機能ブロックは、例えば、図６に示すハードウェア構成により実現される。サーバ装置２は、例えば、プロセッサ４０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０３、ドライブ装置４０４、記憶媒体４０５、入力インターフェース（入力Ｉ／Ｆ）４０６、入力デバイス４０７、出力インターフェース（出力Ｉ／Ｆ）４０８、出力デバイス４０９、通信インターフェース（通信Ｉ／Ｆ）４１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（ＳＡＮ  Ｉ／Ｆ）４１１及びバス４１２などを含む。それぞれのハードウェアはバス４１２を介して接続されている。
【００３９】
通信インターフェース４１０はネットワーク４を介した通信の制御を行なう。入力インターフェース４０６は、入力デバイス４０７と接続されており、入力デバイス４０７から受信した入力信号をプロセッサ４０１に伝達する。出力インターフェース４０８は、出力デバイス４０９と接続されており、出力デバイス４０９に、プロセッサ４０１の指示に応じた出力を実行させる。入力デバイス４０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやサーバ装置２の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス４０９は、サーバ装置２の制御に応じて情報を出力する装置である。出力デバイス４０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス４０７及び出力デバイス４０９として用いられる。また、入力デバイス４０７及び出力デバイス４０９は、サーバ装置２に含まれず、例えば、サーバ装置２に外部から接続する装置であってもよい。
【００４０】
ＲＡＭ４０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭ以外にもフラッシュメモリなどが用いられてもよい。ＲＯＭ４０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置４０４は、記憶媒体４０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体４０５は、ドライブ装置４０４によって書き込まれた情報を記憶する。記憶媒体４０５は、例えば、ハードディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、サーバ装置２は、複数種類の記憶媒体それぞれについて、ドライブ装置４０４及び記憶媒体４０５を設ける。
【００４１】
プロセッサ４０１は、ＲＯＭ４０３や記憶媒体４０５に記憶されたプログラム（例えば図７Ｂまたは図２３に例示するプログラム）をＲＡＭ４０２に読み出し、読み出されたプログラムの手順に従って制御部２２の処理を行なう。その際にＲＡＭ４０２はプロセッサ４０１のワークエリアとして用いられる。記憶部２３の機能は、ＲＯＭ４０３および記憶媒体４０５がプログラムファイルやデータファイル（投影画像の定義情報（ＣＡＤデータ）など）を記憶すること、もしくは、ＲＡＭ４０２がプロセッサ４０１のワークエリアとして用いられることによって実現される。また、プロセッサ４０１の制御に応じてＳＡＮインターフェース４１１が動作することで、データベース３ａへのアクセス処理というＤＢアクセス部２４の機能が実現される。
【００４２】
図７Ａは、端末装置１で動作するプログラムの構成例を示す。端末装置１において、ハードウェア群５０１（図４に示されるハードウェア）の制御を行なうＯＳ（オペレーティング・システム）５０２が動作する。ＯＳ５０２に従った手順でプロセッサ３０１が動作して、ハードウェア５０１の制御・管理が行なわれることにより、アプリケーションプログラム５０４やミドルウェア５０３による処理がハードウェア５０１により実行される。端末装置１において、ＯＳ５０２、ミドルウェア５０３及びアプリケーションプログラム５０４などのプログラムが、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。また、プロセッサ３０１がミドルウェア５０３に基づく処理を行なうことにより、（それらの処理をＯＳ５０２に基づいてハードウェア５０１の制御が行なわれ、）取得部１１、表示部１２、制御部１３、記憶部１４及び通信部１５の機能が実現される。また、ミドルウェア５０３とアプリケーションプログラム５０４とは、連動した動作を実行させる別個のプログラムでもよいし、一体のプログラムでもよい。
【００４３】
アプリケーションプログラム５０４には、例えば、ミドルウェア５０３の投影画像の表示制御機能を用いた処理の手順が示される。例えば、投影画像の表示と、その表示に応じた入力の検知、さらにその入力に応じた投影画像の表示制御など、入力に従った投影画像表示のシナリオが決められてもよい。アプリケーションプログラム５０４に従った処理により、例えば、後述の投影画像管理テーブルＴ５において、マーカーＩＤに関連付けされるモデルの関連付けフラグが変更されてもよい。
【００４４】
図７Ｂは、サーバ装置２で動作するプログラムの構成例を示す。サーバ装置２において、ハードウェア群６０１（図６に示されるハードウェア）の制御を行なうＯＳ６０２が動作する。ＯＳ６０２に従った手順でプロセッサ４０１が動作して、ハードウェア６０１の制御・管理が行なわれることにより、アプリケーションプログラム６０４やミドルウェア６０３による処理がハードウェア６０１により実行される。サーバ装置２において、ＯＳ６０２、ミドルウェア６０３及びアプリケーションプログラム６０４などのプログラムが、ＲＡＭ４０２に読み出されてプロセッサ４０１により実行される。また、プロセッサ４０１がミドルウェア４０３に基づく処理を行なうことにより、（それらの処理をＯＳ６０２に基づいてハードウェア６０１の制御が行なわれ、）通信部２１、制御部２２、記憶部２３及びＤＢアクセス部２４の機能が実現される。また、ミドルウェア６０３とアプリケーションプログラム６０４とは、連動した動作を実行させる別個のプログラムでもよいし、一体のプログラムでもよい。
【００４５】
図８は、端末装置１における表示制御のフローチャートを示す。投影画像の表示機能が呼び出される（Ｓ１００）と、制御部１３が前処理を行なう（Ｓ１０１）。投影画像の表示機能は、例えば、アプリケーションプログラム５０４の手順に従った処理により呼び出される。例えば、Ｓ１０１の前処理において、制御部１３は、加速度・角速度に基づく移動量算出のフローの開始や、認識管理テーブルＴ１およびマーカー座標テーブルＴ２の記憶領域の確保、投影画像管理テーブルＴ５の読出しなどを行なう。さらに、制御部１３は、カウンタＣＴ１の値を初期化する。Ｓ１０１の処理の次に、認識判定部１３１は、取得部１１から取得した撮像画像に基づいて、マーカー認識処理を行なう（Ｓ１０２）。Ｓ１０２のマーカー認識処理については、図１１に基づいて後述する。マーカー認識処理は、例えば、時間間隔Ｉ２で行われる。時間間隔Ｔ２は、カメラモジュール３１１が入力用画像バッファに読み出した画像を書き込む時間間隔Ｔ１に対して、例えば、１〜数倍の時間間隔である。
【００４６】
図９Ａは、認識管理テーブルＴ１を示す。認識管理テーブルＴ１は、認識判定部１３１により認識されたマーカーの識別情報（マーカーＩＤ）、認識されたマーカーの画面内位置を示す座標（Ｘｒ，Ｙｒ）、および認識結果の格納先を示すポインタを格納する。マーカーＩＤは、撮像画像内のマーカーの像に対して画像解析を行なうことにより読み出される情報である。マーカーＩＤは、例えば、備えられるマーカーのそれぞれを一意に特定可能な情報である。マーカーＩＤは、例えば、マーカーのサイズを指定する情報が含まれていてもよい。マーカーＩＤからマーカーのサイズが読み出せ、座標算出部１３３がマーカーのサイズに応じてマーカーの相対位置及び相対角度を算出することとすれば、端末装置１は、サイズが異なる複数種類のマーカーに対応して処理を行なうことができる。
【００４７】
認識管理テーブルＴ１に格納されるマーカーの画面内位置（Ｘｒ，Ｙｒ）は、例えば、マーカー自体が四角形であるとすると、撮像画像内に含まれるマーカーの像の中心座標でもよいし、各頂点を示す４つの座標でもよい。マーカーの画面内位置（Ｘｒ，Ｙｒ）は、例えば、マーカーとの相対位置及び相対角度を算出する際に、マーカーの像の読み出し位置の探索に用いられる。また、図９Ａではマーカーの画面内位置は最新のものが格納されるが、マーカーの画面内位置（Ｘｒ、Ｙｒ）の履歴を数回分残しておき、その履歴を画面内でのマーカー位置の移動予測に用いてもよい。
【００４８】
また、認識結果は、図９Ｂに例示される記憶領域Ｒ１に格納される。記憶領域Ｒ１は、例えば、所定数Ｎ１（図９Ｂの例では１６）ビットのビット列を複数格納可能な記憶領域である。記憶領域Ｒ１において、１つのマーカーの認識結果を格納するのに、１つのビット列が割り当てられている。例えば、認識管理テーブルＴ１に示されるように、マーカーＩＤ「００００」のマーカーの認識結果は、ポインタＰＴ１が開始位置を示すビット列により示される。例えば、マーカーＩＤが「００００」のマーカーについて、ｉ回目の認識判定が行なわれたとすると、ポインタＰＴ１が示す位置からｉ−１ビットシフトさせた位置にマーカーの認識結果が格納される。例えば、マーカーが認識されれば「１」が格納され、マーカーが認識されなければ「０」が格納される。もちろん、「１」と「０」が逆でも良いし、「１」及び「０」に代わる情報で表現されてもよい。例えば、マーカーＩＤ「００００」であるマーカーの認識結果を示すビット列の開始位置は、認識管理テーブルＴ１に格納されるポインタＰＴ１で示される。例えば、９回目の認識判定においてマーカーＩＤ「００００」のマーカーが認識されたとすると、ポインタＰＴ１で示される位置から８ビットシフトした位置のビットが「１」となる。また、所定数Ｎ１ビットの格納領域は、所定数Ｎ１回の認識判定を行なうたびに繰り返し使用される。図９Ｂの例では、１８回目の認識判定の認識結果は、ポインタＰＴ１で示される位置から１ビットシフトした位置のビットに反映される。前述のとおり、マーカーの認識処理は時間間隔Ｉ２で行なわれるので、図９Ｂに示す記憶領域Ｒ１は、１６×Ｉ２秒経過するごとに繰り返し使用される。
【００４９】
図１０は、マーカー座標テーブルＴ２を示す。マーカー座標テーブルＴ２には、認識判定部１３１により認識された各マーカーについて、マーカーＩＤ、撮像素子との相対位置を示す位置座標（Ｘｓ，Ｙｓ，Ｚｓ）及び撮像素子との相対的な角度を示す角度座標（Ｐｓ，Ｑｓ，Ｒｓ）が格納される。Ｐｓが撮像素子基準の座標系のｘ軸周りの回転角を示し、Ｑｓがｙ軸周りの回転角を示し、Ｒｓがｚ軸周りの回転角を示す。
【００５０】
図８に示す表示制御のフローチャートの説明に戻る。Ｓ１０２では、認識判定部１３１が、マーカーの情報を読み取り、読み取った情報を認識管理テーブルＴ１及び記憶領域Ｒ１に反映させる（前述の通り、マーカーが認識された場合に、例えば、記憶領域内の対応する値を「１」にセットする）。認識判定部１３１は、Ｓ１０２の処理後、Ｓ１０２のマーカー認識処理の結果に基づいて、認識管理テーブルＴ１の更新処理を行なう（Ｓ１０３）。認識判定部１３１は、Ｓ１０３の更新処理において、所定数Ｎ２以上連続で認識されなかったマーカーに関する情報を認識管理テーブルＴ１から削除する。所定数Ｎ２は、所定数Ｎ１以下の数である。前述のとおり、マーカーの認識処理は時間間隔Ｉ２で行なわれるので、Ｎ２×Ｉ２秒間マーカーが認識されない場合に、そのマーカーに関する情報が認識管理テーブルＴ１から削除される。例えば、複数の判定において連続で認識されないマーカーのみを削除することで、マーカー認識エラーにより認識されないマーカーの情報を不用意に削除してしまうことが抑制される。
【００５１】
Ｓ１０３の認識管理テーブルＴ１の更新処理が終わると、認識判定部１３１は、カウンタＣＴ１の値をインクリメントし（Ｓ１０４）、さらに、カウンタＣＴ１の値が所定値Ｎ３に達したか否かを判定する（Ｓ１０５）。所定値Ｔ３は、例えば、１〜Ｎ１までのいずれかの数である。カウンタＣＴ１の値が所定値Ｎ３に達している場合（Ｓ１０５：ＹＥＳ）には、座標算出部１３３が、図９Ａの認識管理テーブルＴ１に情報が格納されているマーカーのそれぞれについて、撮像素子からの相対座標（Ｘｓ，Ｙｓ，Ｚｓ）及び相対角度（Ｐｓ，Ｑｓ，Ｒｓ）を算出し、算出した座標をマーカー座標テーブルＴ２に格納する（Ｓ１０６）。この場合、カウンタＣＴ１の値はリセットされる。カウンタＣＴ１の値が所定値Ｎ３に達していない場合（Ｓ１０５：ＮＯ）は、記憶領域Ｒ１のうち、カウンタＣＴ１の値に対応する領域をクリアする（例えば、値を「０」にする）。クリアされるビットは、記憶領域Ｒ１内の各ビット列において、各ポインタが示す位置から、カウンタＣＴ１の値シフトした位置にある各ビットである。ビットのクリアを行なった後、認識判定部１３１は、再度Ｓ１０２の処理を行なう。
【００５２】
制御部１３は、Ｓ１０６の処理を終えると、投影画像の表示ルーチンを呼び出す（Ｓ１０７）。制御部１３は、Ｓ１０７の処理後、投影画像の表示機能の終了指示が入力された否かを判定する（Ｓ１０８）。制御部１３は、終了指示が入力されていなければ（Ｓ１０８：ＮＯ）、Ｓ１０２の処理を再度実行し、終了指示が入力されていれば（Ｓ１０８：ＹＥＳ）、投影画像の表示制御のフローを終了する（Ｓ１０９）。
【００５３】
図１１は、マーカー認識処理のフローチャートを示す。認識判定部１３１は、Ｓ１０２の処理が呼び出される（Ｓ２００）と、取得部１１により取得された撮像画像を読み込む（Ｓ２０１）。Ｓ２０１の撮像画像の読み込みは、入力用の画像バッファに書き込まれる各フレームについて行なわれてもよいし、指定された数のフレームのうち１つを読み込むようにしてもよい。このフレーム数の指定は、予め定められていてもよいし、処理の途中で、処理負荷などに応じて変更されてもよい。このフレーム数は、例えば、入力用の画像バッファから取得部１１が画像を読み出す時間間隔Ｉ２が、撮像画像が入力用の画像バッファに書き込まれる時間間隔Ｉ１に対してどの程度の長さとなるかにより定められる。
【００５４】
次に、認識判定部１３１は、Ｓ２０１で読み出された撮像画像内にマーカーの像が含まれるか否かを判定する（Ｓ２０２）。Ｓ２０２の判定は、認識対象のマーカーが図１に示す形状のマーカーである場合には、太線で四角形の像が存在するか否かに基づいて行なわれる。その場合には、例えば、４つの頂点付近の画像のパターンを複数種類予め記憶しておき、予め記憶された４つの頂点付近の画像の組み合わせと合致する４つの像が撮像画像に含まれるか否かに基づいて、マーカーの存否が判断される。この方法で判断するために、マーカーが様々な方向に向いた場合の画像組み合わせが用意される。
【００５５】
撮像画像内にマーカーの像が存在しない場合には、Ｓ２０６の処理が行なわれる。撮像画像内にマーカーの像が含まれていることが検知された場合（Ｓ２０２：ＹＥＳ）に、認識判定部１３１はマーカーの像を解析することにより情報を取得する（Ｓ２０３）。Ｓ２０３において認識判定部１３１が取得する情報は、例えば、マーカの像の表示位置を示す座標（Ｘｒ，Ｙｒ）や、マーカーのパターンから解読されるマーカーＩＤなどである。表示位置を示す座標（Ｘｒ，Ｙｒ）は、例えば、マーカーの像の中心座標や、マーカーの像の４つの頂点の座標などである。また、図１を用いて前述したように、マーカーＩＤは、マーカー内のパターンに基づいて読み出される。マーカーＩＤの抽出は、例えば、検知されたマーカーの像（並行四辺形や台形に近い形状をしている）を正方形に変形させて、変形させた画像に含まれるパターンに基づいて行なわれる。例えば、変形された画像が２値化された場合に、２値化された「１」と「０」との配列をそのままマーカーＩＤとすればよい。
【００５６】
次に、認識判定部１３１は、Ｓ２０３で取得されたマーカーＩＤが条件ＣＤ１を満たすか否かを判定する（Ｓ２０４）。所定の条件ＣＤ１は、例えば、マーカーＩＤのサイズが定められたビット数であること、マーカーＩＤの値が所定の範囲内であることなどである。条件ＣＤ１は、アプリケーションプログラム５０４に基づく処理により指定されてもよい。例えば、携帯電話番号などの情報が識別情報として用いられることが前提とされるアプリケーションプログラムを用いる場合に、マーカーＩＤが、１１ケタの数値であることや、または「０９０」などから始まる数値であることが所定の条件ＣＤ１とされる。また、条件ＣＤ１が設定されず、Ｓ２０３の判定が行われずに、Ｓ２０４の処理が行われてもよい。
【００５７】
Ｓ２０４において、マーカーＩＤが条件ＣＤ１を満たすと判定された場合（Ｓ２０４：ＹＥＳ）に、認識判定部１３１は、マーカーに関する情報（マーカーＩＤ、マーカーの表示位置（Ｘｒ，Ｙｒ）、認識結果を格納するビット列へのポインタ）を認識管理テーブルＴ１に格納する（Ｓ２０５）。詳細に処理を述べると、Ｓ２０５において、認識判定部１３１は、読み出したマーカーＩＤが既に認識管理テーブルＴ１に格納されているか否か判断する。認識判定部１３１は、読み出したマーカーＩＤが認識管理テーブルＴ１に既に格納されている場合には、認識管理テーブルＴ１の更新と、記憶領域Ｒ１に認識結果の反映とを行なう。また、認識判定部１３１は、読み出したマーカーＩＤが認識管理テーブルＴ１に格納されていない場合には、認識管理テーブルＴ１に新たなレコードの追加と、記憶領域Ｒ１に認識結果の反映とを行なう。前述の通り、認識判定部１３１は、記憶領域Ｒ１のうち、読み出したマーカーＩＤに対応するビット列のうち、カウンタＣＴ１の値が示す順番のビットを「１」（認識を示す）に更新する。Ｓ２０５の処理を終えると、Ｓ１０３の処理が行なわれる（Ｓ２０６）。Ｓ２０２でマーカーを検知できない場合（Ｓ２０２：ＮＯ）や、Ｓ２０３で読み出したマーカーＩＤが条件ＣＤ１を満たさない場合（Ｓ２０４：ＮＯ）にも、Ｓ２０６の処理が行なわれる。
【００５８】
図１２は、認識管理テーブルＴ１の更新処理のフローチャートを示す。図８に示すＳ１０３の処理が呼び出される（Ｓ３００）と、認識判定部１３１は、認識管理テーブルＴ１に格納されたマーカーＩＤのうち、１つを選択する（Ｓ３０１）。例えば、マーカーＩＤを読み取られたマーカーがＮ４個あれば、認識判定部１３１は、認識管理テーブルＴ１のうち、１番目のレコードからＮ４番目のレコードまでを順に選択し、Ｓ３０１〜Ｓ３０６の間の処理を繰り返し行なう。認識判定部１３１は、選択したレコードに対応するマーカーが所定数Ｎ２以上連続で認識されていないか否かを判定する（Ｓ３０２）。所定数Ｎ２以上連続で認識されていないと判定された場合（Ｓ３０２：ＹＥＳ）は、移動判定部１３２が端末装置１の移動量Ｄを図１５Ｂに示す移動量テーブルＴ４から読み出す（Ｓ３０３）。移動量Ｄの算出処理については、図１４を用いて後述する。Ｓ３０２で所定数以上連続で認識されていないマーカーでないと判定された場合（Ｓ３０２：ＮＯ）には、Ｓ３０６の処理が行なわれる。
【００５９】
例えば、Ｓ３０２の処理において、選択されたレコード内のポインタに示されるビット列の中で、カウンタ値ＣＴ１に示される位置のビットまでの所定数Ｎ２個のビットがいずれも「０」であると、所定数Ｎ２以上連続で認識されていないと判定される。例えば、図９Ｂに示す例において、最新で更新されたビットが各ビット列の１１番目のビットであるし、所定数Ｎ２が例えば６であるとする。図９Ｂによれば、マーカーＩＤ「００００」のマーカーとマーカーＩＤ「０００１」のマーカーは、過去６回の認識判定において認識されている（６〜１１番目のビットがすべて０となっていない）ので、Ｓ３０６の処理が行われる。その一方で、マーカーＩＤ「００１０」のマーカーは、過去６回の認識判定において一度も認識されていないので、Ｓ３０３の処理が実行される。
【００６０】
Ｓ３０３において端末装置１本体の移動量Ｄが読み出されると、移動判定部１３２は、読み出された移動量Ｄが所定量Ｄ０以上であるか否かを判定する（Ｓ３０４）。Ｓ３０４において、移動量Ｄが所定量Ｄ０以上であると判定された場合（Ｓ３０４：ＹＥＳ）には、認識判定部１３１は、選択されたレコードを認識管理テーブルＴ１から削除する（Ｓ３０５）。Ｓ３０４で移動量Ｄが所定量Ｄ０以上でない（Ｓ３０４：ＮＯ）と判定された場合には、Ｓ３０６の処理が行なわれる。Ｓ３０６では、認識判断部１３１が認識管理テーブルＴ１に未選択のレコードが存在するか否かを判断し、未選択のレコードがあればＳ３０１の処理を行ない、未選択のレコードが無ければＳ３０７の処理を行なう。Ｓ３０７では、処理フローが図８に示すマーカー管理のフローに移され、Ｓ１０４の処理が行なわれる。
【００６１】
次に、移動量Ｄについて説明する。移動量Ｄは、例えば、加速度、速度、位置座標などの時間変化量である。移動量Ｄは、例えば、時間間隔Ｉ４で算出される。
【００６２】
移動量Ｄの算出処理を説明する前に、図１３Ａ乃至Ｃを用いて、加速度、速度及び位置座標の関係について説明する。横軸は時間の進行を示し、ｔ０〜ｔ１１は、時間間隔Ｉ５で区切られた時刻を示す。図１３Ａ乃至Ｃに示す例において、時間間隔Ｉ５は、時間間隔Ｉ４の１／４の長さである。図１３Ａにはｘ方向の加速度の時間変化、図１３Ｂには速度の時間変化、図１３Ｃには位置座標の時間変化が示される。図１３Ａ乃至Ｃには示されないが、その他の方向についても同様の関係が存在する。
図１３Ａは、ｘ方向の加速度Ａｘの時間変化例を示す。図１３Ａの縦軸は加速度Ａｘを示し、図１３Ａの曲線のグラフは、加速度センサが計測する値の時間変化を示す時刻ｔ０の時のｘ方向の加速度Ａｘは、Ａｘ（ｔ０）と示され、時刻ｔ１の時のｘ方向の加速度Ａｘは、Ａｘ（ｔ１）と示される。それ以降の時刻ｔ２〜ｔ１１についても同様である。加速度の定積分が速度に相当するので、移動判定部１３２は、例えば、時間方向の定積分を、加速度Ａｘ×時間間隔Ｉ５で近似的に算出する。時刻ｔ０の時のｘ方向の速度Ｖｘは、Ｖｘ（ｔ０）と示され、時刻ｔ１の時のｘ方向の速度Ｖｘは、Ｖｘ（ｔ１）と示される。すると、Ｖｘ（ｔ１）＝Ｖｘ（ｔ０）＋Ａｘ（ｔ１）×Ｉ５となる。
【００６３】
図１３Ｂは、図１３Ａに示す加速度Ａｘの時間変化に基づいて算出されるｘ方向の速度Ｖｘの例を示す。図１３Ｂは、横軸が時間を表し、縦軸がｘ方向の速度Ｖｘを表す。図１３Ｂに示される曲線のグラフは、時間間隔Ｉ５を充分に短く設定した場合に算出される速度Ｖｘの時間変化を示す。速度Ｖｘは、実際には、有限の時間間隔Ｉ５刻みに値が得られるのみであり、速度Ｖｘは、Ｖｘ（ｔ０）、Ｖｘ（ｔ１）、Ｖｘ（ｔ２）、・・・と離散的な値で変化する。速度Ｖｘに基づいて、位置座標Ｃｘを算出するには、近似的に得られた速度Ｖｘの定積分を算出する。その結果、例えば、時刻ｔ１におけるｘ方向の位置座標Ｌｘは、Ｌｘ（ｔ１）＝Ｌｘ（ｔ０）＋Ｖｘ（ｔ１）×Ｉ５となる。
【００６４】
図１３Ｃは、図１３Ｂに示す速度Ｖｘの時間変化に基づいて算出されるｘ方向の位置座標Ｌｘの例を示す。図１３Ｃにおいて、横軸は時間を示し、縦軸はｘ方向の位置座標Ｌｘの変化を示す。図１３Ｃに示される曲線グラフは、時間間隔Ｉ５を充分に短く設定して速度Ｖｘの算出と位置座標Ｌｘの算出とが行なわれた場合に得られる位置座標Ｌｘの時間変化を示す。実際には、有限の時間間隔Ｉ５刻みに位置座標Ｌｘが得られる。
【００６５】
図１４は、移動量Ｄ算出のフローチャートを示す。図１２のＳ３０３では、時間間隔Ｉ４ごとに、取得部１１が取得した情報に基づいて、移動判定部１３２が移動量Ｄを算出する。Ｓ３０３で動き判定処理が開始される（Ｓ４００）と、まず、移動判定部１３２は、初期値を設定する（Ｓ４０１）。加速度の初期値、速度の初期値及び位置座標の初期値が図１５Ａに示す座標テーブルＴ３に格納される。さらに、移動判定部１３２は、カウンタＣＴ２の値を初期化する。
【００６６】
図１５Ａに示す座標テーブルＴ３は、加速度、速度及び位置座標を格納するテーブルの例である。図１５Ａの例においては、加速度、速度及び位置座標のｘ，ｙ，ｚ成分それぞれの値が座標テーブルＴ３に格納される。
【００６７】
図１５Ａの例において、加速度Ａ０のレコードに、加速度の時間変化量を算出する際に用いられる基準値が格納される。加速度Ａ１のレコードには、加速度の計測値が格納される。速度Ｖ０のレコードに、速度の時間変化量を算出する際に用いられる基準値が格納される。速度Ｖ１のレコードには、速度の算出値が格納される。位置座標Ｌ０のレコードに、位置座標の時間変化量を算出する際に用いられる基準値が格納される。位置座標Ｌ１のレコードには、位置座標の算出値が格納される。加速度Ａ０、加速度Ａ１、速度Ｖ０、速度Ｖ１、位置座標Ｌ０及び位置座標Ｌ１のレコードには、それぞれｘ方向、ｙ方向、ｚ方向の値が格納される。例えば、Ｓ４０１の処理で格納される加速度、速度及び位置座標の初期値は、それぞれ加速度Ａ０及びＡ１、速度Ｖ０及びＶ１、並びに位置座標Ｌ０及びＬ１のレコードに格納される。
【００６８】
図１４のフローの説明に戻る。まず、移動判定部１３２は、時間間隔Ｉ５経過したか否かの判定を行なう（Ｓ４０２）。時間間隔Ｉ５経過しない場合（Ｓ４０２：ＮＯ）には、時間間隔Ｉ５経過するまでＳ４０３の処理は行なわれない。時間間隔Ｉ５は、例えば、図１３に示す例と同様に、時間間隔Ｉ４の１／４などでよい。時間間隔Ｉ５経過した場合（Ｓ４０２：ＹＥＳ）には、移動判定部１３２は、カウンタＣＴ２の値をインクリメントし、加速度センサの値を読み出し、座標テーブルＴ３の加速度Ａ１のレコードを、ｘ，ｙ，ｚ成分それぞれについて加速度センサの値に更新する（Ｓ４０３）。次に、移動判定部１３２は、Ｓ４０３で記録した加速度Ａ１及び座標テーブルＴ３に格納される速度Ｖ１などに基づいて速度を算出して、座標テーブルＴ３の速度Ｖ１を、算出した速度のｘ，ｙ，ｚ成分それぞれについて更新する（Ｓ４０４）。速度Ｖ１は、例えば、速度Ｖ１（更新値）＝速度Ｖ１（更新前の値）＋加速度Ａ１×時間間隔Ｉ５などにより算出される。また、移動判定部１３２は、Ｓ４０４で記録した速度Ｖ１などに基づいて位置座標を算出し、座標テーブルＴ３の位置座標Ｌ１を、ｘ，ｙ，ｚ成分それぞれについて算出した位置座標Ｌ１に更新する（Ｓ４０５）。位置座標Ｌ１は、例えば、位置座標Ｌ１（更新値）＝Ｌ１（更新前の値）＋速度Ｖ１×時間間隔Ｉ５などにより算出される。
【００６９】
次に、移動判定部１３２は、カウンタＣＴ２の値が所定値Ｎ４に達したか否かを判定する（Ｓ４０６）。カウンタＣＴ２の値が所定値Ｎ４に達していない場合（Ｓ４０６：ＮＯ）には、移動判定部１３２は、再度Ｓ４０２の判定処理を行なう。所定値Ｎ４は、時間間隔Ｉ４と時間間隔Ｉ５とに基づいて、カウンタＣＴ２の値が所定Ｎ４に達した場合に、時間間隔Ｉ４経過するように定められる。図１３の例の通り、時間間隔Ｉ５が、時間間隔Ｉ４の１／４であるとすると、Ｎ４は４となる。
【００７０】
カウンタＣＴ２の値が所定値Ｎ４に達していた場合（Ｓ４０６：ＹＥＳ）に、移動判定部１３２は、加速度、速度及び位置座標のそれぞれについて時間変化量を算出する（Ｓ４０７）。具体的には、加速度の差Ａ２＝Ａ１−Ａ０、速度の差Ｖ２＝Ｖ１−Ｖ０、位置座標の差Ｌ２＝Ｌ１−Ｌ０で算出される。移動判定部１３２は、算出された時間変化量Ａ２，Ｖ２及びＬ２を、図１５Ｂに示す移動量テーブルＴ４に格納する。
【００７１】
図１５Ｂは、移動量テーブルＴ４の例を示す。図１５Ｂに示される移動量テーブルＴ４には、時間間隔Ｉ４で、加速度の時間変化量Ａ２、速度の時間変化量Ｖ２および位置座標の時間変化量Ｌ２が、ｘ、ｙ、ｚ方向のそれぞれについて格納される。さらに、移動量テーブルＴ４には、加速度の時間変化量、速度の時間変化量および位置座標の時間変化量のそれぞれについて、方向に依存しない変化量の絶対値（ｘ方向変化量の２乗＋ｙ方向変化量の２乗＋ｚ方向変化量の２乗など）を格納する領域を設けてもよい。また、さらに、端末本体から被写体に向かうｚ方向の変化量を敢えて除いて算出される変化量（ｘ方向変化量の２乗＋ｙ方向変化量の２乗）を格納する領域を設けてもよい。
【００７２】
さらに、移動判定部１３２は、時間変化量算出の基準値を更新する（Ｓ４０８）。具体的には、移動判定部１３２は、座標テーブルＴ３において、Ａ１に格納された値をＡ０にコピーし、Ｖ１に格納された値をＶ０にコピーし、Ｌ１に格納された値をＬ０にコピーする。さらに、移動判定部１３２は、カウンタの値ＣＴ２をリセットし（Ｓ４０９）、終了指示があるか否かの判定を行なう（Ｓ４１０）。終了指示がある場合（Ｓ４１０：ＹＥＳ）には、移動判定部１３２は処理を終了し（Ｓ４１１）、終了指示がない場合（Ｓ４１０：ＮＯ）には、移動判定部１３２は、Ｓ４０２の判定を再度行なう。
【００７３】
図１２のＳ３０４において、移動判定部１３２は、例えば、移動量Ｄとして、移動量テーブルＴ４に格納された、加速度の時間変化量Ａ２、速度の時間変化量Ｖ２及び位置座標の時間変化量Ｌ２のいずれか少なくとも１つを用いる。図１２のＳ３０３の処理において、これらのパラメータが、予め設定された値よりも大きく変動した場合に、移動判定部１３２は、端末装置１が移動したと判定する。
【００７４】
また、移動量Ｄの算出に、加速度センサ３１２の値でなく、角速度センサ３１３の値が用いられてもよい。角速度に基づく移動量算出においても、加速度に基づく移動量算出と類似の手順が用いられる。図１４に示す加速度センサの値に基づく移動量算出のフローチャートに従って、角速度センサの値に基づく移動量算出について説明する。
【００７５】
Ｓ３０３で動き判定処理が開始される（Ｓ４００´）と、まず、移動判定部１３２は、初期値を設定する（Ｓ４０１´）。角速度の初期値及び角度の初期値が格納される。記憶部１４に記憶される角速度ω０及びω１の値を角速度の初期値とし、角度θ０及びθ１を角度の初期値とする。さらに、移動判定部１３２は、カウンタＣＴ２の値を初期化する。
【００７６】
まず、移動判定部１３２は、時間間隔Ｉ５経過したか否かの判定を行なう（Ｓ４０２´）。時間間隔Ｉ５経過しない場合（Ｓ４０２´：ＮＯ）には、時間間隔Ｉ５経過するまでＳ４０３´の処理は行なわれない。時間間隔Ｉ５経過した場合（Ｓ４０２´：ＹＥＳ）には、移動判定部１３２は、カウンタＣＴ２の値をインクリメントし、角速度センサの値を読み出し、角速度ω１の値を、読み出した角速度センサの値に更新する（Ｓ４０３´）。次に、移動判定部１３２は、Ｓ４０３´で更新された角速度ω１及び角度θ１の値に基づいて角度を算出して、角度θ１を更新する（Ｓ４０４´）。角度θ１は、例えば、角度θ１（更新値）＝角度θ１（更新前の値）＋角速度ω１×時間間隔Ｉ５などにより算出される。また、角速度センサに基づく処理においては、Ｓ４０５に相当する処理は割愛される。
【００７７】
次に、移動判定部１３２は、カウンタＣＴ２の値が所定値Ｎ４に達したか否かを判定する（Ｓ４０６´）。カウンタＣＴ２の値が所定値Ｎ４に達していない場合（Ｓ４０６´：ＮＯ）には、移動判定部１３２は、再度Ｓ４０２´の判定処理を行なう。カウンタＣＴ２の値が所定値Ｎ４に達していた場合（Ｓ４０７´）に、移動判定部１３２は、角速度及び角度のそれぞれについて時間変化量を算出する。具体的には、角速度の差ω２＝ω１−ω０、角度の差θ２＝θ１−θ０で算出される。移動判定部１３２は、算出された時間変化量ω２及びθ２を移動量とする。
【００７８】
さらに、移動判定部１３２は、時間変化量算出の基準値を更新する（Ｓ４０８´）。具体的には、移動判定部１３２は、ω１の値をω０にコピーし、θ１の値をθ０にコピーする。さらに、移動判定部１３２は、カウンタの値ＣＴ２をリセットし（Ｓ４０９´）、終了指示があるか否かの判定を行なう（Ｓ４１０´）。終了指示がある場合（Ｓ４１０´：ＹＥＳ）には、移動判定部１３２は処理を終了し（Ｓ４１１´）、終了指示がない場合（Ｓ４１０´：ＮＯ）には、移動判定部１３２はＳ４０２´の判定を再度行なう。
【００７９】
さらに、加速度センサ３１２と、角速度センサ３１３との双方の値を用いた移動量を算出することとしてもよい。例えば、位置座標の時間変化量Ｌ２と角度の時間変化量θ２とのそれぞれに係数α１およびα２を乗じて、移動量Ｄ＝α１×Ｌ２＋α２×θ２などにより移動量Ｄが算出されることとしてもよい。その際に、例えば、座標テーブルＴ２に格納されるＺｓの値に応じて係数α２の値が調整されることとしてもよい。マーカーの位置が遠いほど、端末装置１本体の水平移動によるフレームアウトが生じにくいので、例えば、Ｚｓの値が大きいほどα１の値が小さく調整される。
【００８０】
また、移動量Ｄを用いた判定の基準である所定値Ｄ０は、例えば、フレームサイズ及び視野角に基づいて決定される。例えば、角度の時間変化量を移動量Ｄとした場合に、視野角の半分の角度を所定量Ｄ０とすると、時間間隔Ｉ４の間に撮影範囲が画面の半分以上変わるので、マーカーが含まれなくなっている可能性が高い。加速度を移動量Ｄに用いて判定する場合においても同様に、マーカーがフレームアウトする可能性が高くなる程度の移動量が、所定量Ｄ０として設定される。
【００８１】
また、例えば、マーカーの像が表示デバイスに表示される位置座標（Ｘｒ，Ｙｒ）の履歴に基づいて算出されるマーカーの像の予測位置を用いて、移動量の判定が行われてもよい。例えば、時間間隔Ｉ２で生成される位置座標（Ｘｒ，Ｙｒ）を数回分記憶しておき、記憶しておいた位置座標群に基づく外挿予測により得られる座標がフレームの外部の座標である場合に、端末装置１本体に動きがあったと判定される。また、外挿予測により得られる位置座標がフレーム内であれば、端末装置１の本体に動きはないと判定される。
【００８２】
次に、投影画像の表示がどのような制御により行われるかについて説明する。
【００８３】
図８のＳ１０７で表示ルーチンが呼び出されると、座標算出部１３３は、Ｓ１０６で算出されたマーカーの相対座標および相対角度に基づいて、画像モデルに定義された各頂点について座標変換を行なう。さらに、画像生成部１３４は、座標算出部１３３により変換された座標に基づいて、画像モデルを撮影画面に投影させた投影画像を生成し、生成した投影画像を画像バッファに書き込む制御を行なう。
【００８４】
図１６は、座標算出部１３３と画像生成部１３４により行なわれる投影画像の生成手順を示す。まず、表示ルーチンが呼び出される（Ｓ５００）と、画像生成部１３４は、認識管理テーブルＴ１に格納されたマーカーＩＤのうち、未選択のマーカーＩＤを選択する（Ｓ５０１）。例えば、マーカーＩＤを読み取られたマーカーがＮ４個あれば、画像生成部１３４は、認識管理テーブルＴ１のうち、１番目のレコードからＮ４番目のレコードまでを順に選択し、Ｓ５０１〜Ｓ５０８の間の処理を繰り返し行なう。Ｓ５０１において、さらに座標算出部１３３は、選択したマーカーＩＤに対応付けられてマーカー座標テーブルＴ２に格納されたマーカーの座標Ｃｓｉ（Ｘｓｉ，Ｙｓｉ，Ｚｓｉ）に基づいて、変換行列Ｘを求める。変換行列Ｘについては後述する。次に、画像生成部１３４は、Ｓ５０１で選択したマーカーＩＤに示されるマーカーを基準として定義された画像モデルを選択する（Ｓ５０２）。
【００８５】
画像モデルの情報は、例えば、図１７に示す投影画像管理テーブルＴ５に格納される。投影画像管理テーブルＴ５には、マーカーＩＤ、各マーカーに関連付けられた画像モデルの識別情報（モデルＩＤ）、画像モデルの表示制御フラグ、各画像モデルに含まれる各要素の識別情報（要素ＩＤ）、各要素のテクスチャの識別情報（テクスチャＩＤ）および各要素に含まれる頂点の座標Ｃｍｉ（Ｘｍｉ，Ｙｍｉ，Ｚｍｉ）などの情報が格納される。要素に含まれる頂点の座標Ｃｍｉは、対応するマーカーを基準（例えば、マーカーの中心が座標系の原点）に定められる座標である。
【００８６】
１つのマーカーＩＤに対して複数のモデルＩＤが関連付けられていてもよいし、１つのマーカーＩＤに１つも関連付けられていない場合もある。投影画像管理テーブルＴ５においては、モデルＩＤそれぞれに表示制御フラグが設けられている。表示制御フラグがセットされている画像モデルについては、投影画像の生成が行われ、表示制御フラグがセットされていない画像モデルについては、投影画像の生成がおこなわれない。この表示制御フラグは、アプリケーションプログラム５０４に従った処理によりオンまたはオフされる。また、１つの画像モデルは１以上の構成要素で構成されており、投影画像管理テーブルＴ５には、１つのモデルＩＤに１以上の要素ＩＤが関連づけられて格納される。
【００８７】
テクスチャＩＤは、各構成要素の模様を示す識別情報である。また、頂点座標Ｃｍｉは、投影画像の構成要素に含まれる頂点のうちの１つの座標を示す。例えば、ｎ個の頂点座標Ｃｍｉ（ｉ＝１〜ｎ）が指定された場合には、画像生成部１３４は、頂点座標Ｃｍ１〜Ｃｍｎに対応する面領域内にテクスチャＩＤに対応する模様が配置された画像を生成する。画像生成部１３４は、テクスチャＩＤに対応する模様の２Ｄ画像を、記憶部１４またはサーバ装置２から取得する。例えば、記憶部１４や、サーバ装置２の記憶部２３、データベース３ａなどには、複数のテクスチャＩＤに対応する複数の２Ｄ画像が格納されている。
【００８８】
Ｓ５０２では、投影画像管理テーブルＴ５において、Ｓ５０１で選択されたマーカーＩＤと対応付けられたモデルＩＤのうち、未選択のモデルＩＤが選択される。次に、画像生成部１３４は、投影画像管理テーブルＴ５において、Ｓ５０２で選択されたモデルＩＤに関連付けられた要素ＩＤのうち、未選択の要素ＩＤを選択する（Ｓ５０３）。
【００８９】
Ｓ５０３で選択された要素ＩＤと関連づけて投影画像管理テーブルＴ５に格納された頂点座標Ｃｍｉ（ｉ＝１〜ｎ）のそれぞれについて、座標算出部１３３は、Ｓ５０１で求められた変換行列Ｘを用いて、頂点座標Ｃｄｉ（ｉ＝１〜ｎ）に変換する（Ｓ５０４）。
【００９０】
次に、画像生成部１３４は、Ｓ５０４で変換された頂点座標Ｃｄｉ（ｉ＝１〜ｎ）に囲まれた領域に、Ｓ５０３で選択された要素に対応するテクスチャに基づいたパターンが付与された画像要素を生成する（Ｓ５０５）。画像生成部１３４は、Ｓ５０４で選択したモデルＩＤに対応する要素で未選択の要素があれば、Ｓ５０３を再度行なう（Ｓ５０６）。また、画像生成部１３４は、Ｓ５０１で選択したマーカーＩＤに対応するモデルＩＤで未選択のモデルＩＤがあれば、Ｓ５０２を再度行なう（Ｓ５０７）。さらに、画像生成部１３４は、投影画像管理テーブルＴ５において未選択のマーカーがある場合には、Ｓ５０１を再度行なう（Ｓ５０８）。
【００９１】
画像生成部１３４は、各要素についてＳ５０５で生成された画像要素を合成して投影画像を生成する（Ｓ５０９）。Ｓ５０９において、画像生成部１３４は、Ｚｄｉの値に応じた順序で画像要素同士を重ね合わせる。Ｚｄｉは、撮像素子に対して奥行き方向の座標であり、例えば、画像生成部１３４は、撮像素子に対して手前に存在する画像要素が上になるように、画像要素同士を重ねる。Ｓ５０９で生成された投影画像は、表示部１２により表示され（Ｓ５１０）、表示ルーチンは終了となる（Ｓ５１１）。具体的には、例えば、Ｓ５０９で生成された投影画像は、制御部１３により、出力デバイス３０９である表示デバイスの出力画像用のバッファに書き込まれる。表示部１２では表示更新のたびに、書き込まれた投影画像の表示を行なう。すなわち、表示部１２により表示される投影画像は、Ｓ１０７の表示ルーチンが呼び出されるたびに、更新される。
【００９２】
次に、変換行列Ｘを用いて行われる座標変換について説明する。
【００９３】
図１８Ａにマーカーと端末装置１との位置関係を示す。例えば、画像モデルＰＩ５の頂点Ａが、マーカーＭ５を基準とするマーカー座標系で座標ＣｍＡ（ＸｍＡ，ＹｍＡ，ＺｍＡ）であるとする。一方、端末装置１は、マーカーＭ５とは別の位置に存在する。そのため、端末装置１を基準とする座標系（カメラ座標系）での頂点Ａは、座標ＣｍＡと異なる座標ＣｃＡ（ＸｃＡ，ＹｃＡ，ＺｃＡ）で表される。マーカー座標系の座標をカメラ座標系に変換する変換行列Ｘ１を座標ＣｍＡに作用させることにより、カメラ座標系の座標ＣｃＡが得られる。変換行列Ｘ１は、マーカーＭ５の端末装置１からの相対位置座標（Ｘｓ，Ｙｓ，Ｚｓ）及び相対角度（Ｐｓ，Ｑｓ，Ｒｓ）に基づいて算出される。
図１９Ａは変換行列Ｘ１を示す。マーカー座標系が、カメラ座標系に対してＸ軸周りにＰｓ回転し、Ｙ軸周りにＱｓ回転し、Ｚ軸周りにＲｓ回転し、さらに、ｘ方向にＸｓ、ｙ方向にＹｓ、ｚ方向にＺｓ並進させた座標系であるため、変換行列Ｘ１が作用するとその逆の操作が行われる。
【００９４】
カメラ座標系での頂点Ａの座標に対して透視変換が行われると、スクリーン座標系での座標ＣｄＡ（ＸｄＡ，ＹｄＡ，ＺｄＡ）が得られる。透視変換においては、ｘ方向及びｙ方向の座標の大きさがｚ方向の座標に応じて補正され、撮像画像に映り込んだ場合に、中心からｘ方向及びｙ方向にどの程度離れた位置に移るかを示す座標に変換される。透視変換において、カメラ座標系におけるｘ方向、ｙ方向及び、ｚ方向の座標が大きいほど小さい係数を乗じて縮小される。例えば、カメラ座標系で表される座標を透視変換させる変換行列を変換行列Ｘ２とする。図１８Ｂは、頂点Ａの座標がスクリーン座標系に変換された場合の頂点Ａの位置を示す。
【００９５】
図１９Ｂは、変換行列Ｘ２を示す。ｗ、ｈ、ｎ及びｆは、カメラスクリーンのサイズやカメラの視野角によって定められる定数である。ｗはスクリーン幅を表す定数であり、ｈはスクリーンの高さを表す。さらに、ｎ及びｆは、スクリーンの表示の遠近を調整するパラメータである。
モデル画像から透視画像を生成する場合には、画像生成部１３４は、モデル画像に含まれる各頂点について、マーカー座標系からスクリーン座標系に変換する。この際に用いられる変換行列Ｘは、変換行列Ｘ＝Ｘ１×Ｘ２で算出される（「×」は行列同士の積を示す）。
【００９６】
次に、他のシステム構成例を説明する。例えば、端末装置１がカメラとして機能し、サーバ装置２において、マーカー管理及び画像モデルの表示制御が行なわれることとしてもよい。例えば、遠隔操作で端末装置１を操作し、端末装置１から取得する撮像画像に基づき、操作者が作業を進めるなどの用途がある。
【００９７】
図２０は、他のシステム構成における端末装置１の機能ブロックの構成例を示す。端末装置１は、取得部１１、表示部１２、通信部１５及び制御部１６を含む。取得部１１、表示部１２及び通信部１５は、図３に示す端末装置１と同様の処理を行なう。制御部１６は、通信部１５を制御して、取得部１１が取得した情報をサーバ装置２に送信する。また、制御部１６は、サーバ装置２から表示指示を受けた場合に、表示部１２に表示指示に基づく表示を行なう。
【００９８】
図２１は、他のシステムにおける端末装置１のプログラム構成例を示す。端末装置１のハードウェア（ＨＷ）５０５は、アプリケーションプログラム（ＡＰ）５０６の手順に従った処理が定義されたオペレーションシステム（ＯＳ）５０２に基づいて、制御される。アプリケーションプログラム５０６には、撮像画像及びセンサ情報を通信する機能、受信した画像を表示させる機能が含まれる。ハードウェア５０１とオペレーションシステム５０２とは、図７Ａに示されるものと同様である。
【００９９】
図２２は、他のシステムにおけるサーバ装置２の機能ブロック構成例を示す。サーバ装置２は、通信部２１、記憶部２３、ＤＢアクセス部２４及び制御部２５を含む。また、制御部２５は、認識判定部２５１、移動判定部２５２、座標算出部２５３及び画像生成部２５４を含む。通信部２１、記憶部２３及びＤＢアクセス部２４は、図５に示すサーバ装置２と同様の処理を行なう。制御部２５は、図２０に示す端末装置１から受けた情報に基づいて、画像モデルの表示制御を行なう。認識判定部２５１、移動判定部２５２、座標算出部２５３及び画像生成部２５４は、それぞれ認識判定部１３１、移動判定部１３２、座標算出部１３３及び画像生成部１３４と同様の処理を行なう。
【０１００】
図２３は、他のシステムにおけるサーバ装置２のプログラム構成例を示す。サーバ装置２においては、ハードウェア（ＨＷ）６０１は、アプリケーションプログラム（ＡＰ）６０６やミドルウェア（ＭＷ）６０３及び６０５の処理要求を受けたオペレーティングシステム（ＯＳ）６０２により制御される。ハードウェア６０１、オペレーティングシステム６０２及びミドルウェア６０３は、図７Ｂに示すものと同様である。ミドルウェア６０５は、図７Ｂ及び図２３に示すミドルウェア６０３と異なり、ハードウェア６０１に、例えば、認識判定部２５１、移動判定部２５２、座標算出部２５３及び画像生成部２５４の機能を実現させる。アプリケーションプログラム６０６は、操作者へのシナリオ提供機能を含み、操作者の指示に応じて、画像モデルの表示制御の呼び出し機能を含む。アプリケーションプログラム６０６に基づく処理により呼び出されると、サーバ装置２は、ミドルウェア６０５を起動し、図８のフローに基づく表示制御を行なう。
図３に示す端末装置１と図５に示すサーバ装置２を用いると、取得部１１が取得した撮像画像に基づき表示される投影画像の生成が端末装置１で行なわれ、生成された投影画像は端末装置１の表示部１２に表示される。一方、図２１に示す端末装置１と、図２３に示すサーバ装置２を用いると、投影画像の生成はサーバ装置２で行なわれ、投影画像の表示は端末装置１及びサーバ装置２の少なくともいずれか一方で行なわれる。
【０１０１】
上記に説明される実施形態は一例であり、発明を実施しうる範囲内で適宜変形可能である。また、上記の説明された各処理のさらに詳細な内容については、当業者に周知の技術が適宜用いられる。
【符号の説明】
【０１０２】
１      端末装置
２      サーバ装置
３      記憶装置
４      ネットワーク
５      基地局
１１    取得部
１２    表示部
１３    制御部
１４    記憶部
１５    通信部
１６    制御部
１３１  認識判定部
１３２  移動判定部
１３３  座標算出部
１３４  画像生成部
２１    通信部
２２    制御部
２３    記憶部
２４    ＤＢアクセス部
２５    制御部
２５１  認識判定部
２５２  移動判定部
２５３  座標算出部
２５４  画像生成部
【図１Ａ−Ｃ】
2014016862.tif 000003
【図２】
2014016862.tif 000004
【図３】
2014016862.tif 000005
【図４】
2014016862.tif 000006
【図５】
2014016862.tif 000007
【図６】
2014016862.tif 000008
【図７Ａ−Ｂ】
2014016862.tif 000009
【図８】
2014016862.tif 000010
【図９Ａ−Ｂ】
2014016862.tif 000011
【図１０】
2014016862.tif 000012
【図１１】
2014016862.tif 000013
【図１２】
2014016862.tif 000014
【図１３Ａ−Ｃ】
2014016862.tif 000015
【図１４】
2014016862.tif 000016
【図１５Ａ−Ｂ】
2014016862.tif 000017
【図１６】
2014016862.tif 000018
【図１７】
2014016862.tif 000019
【図１８Ａ−Ｂ】
2014016862.tif 000020
【図１９Ａ−Ｂ】
2014016862.tif 000021
【図２０】
2014016862.tif 000022
【図２１】
2014016862.tif 000023
【図２２】
2014016862.tif 000024
【図２３】
2014016862.tif 000025
【手続補正書】
【提出日】平成27年3月20日(2015.3.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
撮像素子から撮像画像を取得するとともに、前記撮像素子の移動距離を取得し、
前記撮像素子から取得した撮像画像内から基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記移動距離が前記所定値未満である場合に、前記表示制御を継続する、
処理を実行させることを特徴とする表示制御プログラム。
【請求項２】
前記コンピュータに、さらに、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記移動距離が前記所定値以上である場合に、前記表示制御を終了する、
処理を実行させることを特徴とする請求項１に記載の表示制御プログラム。
【請求項３】
前記基準物を認識した後、前記撮像素子から取得した撮像画像内に前記基準物の像が認識されない場合に、前記撮像素子の移動距離が前記所定値以上であるか否かを判定する、
ことを特徴とする請求項１または請求項２に記載の表示制御プログラム。
【請求項４】
前記基準物を認識した後、前記撮像素子から連続して取得した複数の撮像画像のいずれにおいても、前記基準物の像が含まれない場合に、前記撮像素子の移動距離が前記所定値以上であるか否かを判定する、
処理を実行させることを特徴とする請求項１または２に記載の表示制御プログラム。  
【請求項５】
前記コンピュータに、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内に前記基準物の像が含まれる場合に、前記表示制御を継続する、
ことを実行させることを特徴とする請求項１〜４のいずれか１項に記載の表示制御プログラム。
【請求項６】
前記画像モデルは、前記基準物を基準とする座標で定義された３次元のモデル情報であり、前記表示制御により、前記位置関係に応じて投影された画像に調整されて表示される、
ことを特徴とする請求項１〜４のいずれか１項に記載の表示制御プログラム。
【請求項７】
前記移動距離は、前記コンピュータに備えられた加速度センサまたは角速度センサにより計測された値に基づいて算出される、
ことを特徴とする請求項１〜５のいずれか１項に記載の表示制御プログラム。
【請求項８】
前記所定値は、前記撮像素子の撮影範囲を基準に定められる移動距離である、
ことを特徴とする請求項１〜５のいずれか１項に記載の表示制御プログラム。
【請求項９】
コンピュータに、
撮像素子により撮像画像を取得するとともに、前記撮像素子の移動距離を取得し、
前記撮像素子から取得した撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、
前記基準物を認識した後、前記撮像素子から取得した撮像画像内より前記基準物が認識されず、かつ、前記移動距離が前記所定値未満である場合に、前記表示制御を継続する、
処理を実行させることを特徴とする表示制御方法。
【請求項１０】
撮像部と、
前記撮像部の移動距離を計測するセンサ部と、
前記撮像部から撮像画像を取得するとともに、前記センサ部から前記移動距離を取得する取得部と、
前記撮像部から取得した撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像部から取得した撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、また、前記基準物を認識した後、前記撮像部から取得した撮像画像内より前記基準物が認識されず、かつ、前記移動距離が前記所定値未満である場合に、前記表示制御を継続する制御部と、
を含むことを特徴とする表示制御装置。
【手続補正書】
【提出日】平成28年1月12日(2016.1.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
撮像素子から撮像画像を取得し、
前記撮像素子から取得した前記撮像画像内から基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、
前記撮像素子の移動に関わる計測値を、センサから単位時間ごとに取得し、
前記計測値から、単位時間前の前記撮像素子の位置に対する変化を求め、
複数単位時間経過後の前記撮像素子の位置に関わる変化から、基準に対する、前記撮像素子の移動変化量を求め、
前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値未満である場合に、前記表示制御を継続し、
前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値以上である場合に、前記表示制御を終了する、
処理を実行させることを特徴とする表示制御プログラム。
【請求項２】
前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内に前記基準物の像が認識されない場合に、前記撮像素子の移動変化量が前記所定値以上であるか否かを判定する、
ことを特徴とする請求項１に記載の表示制御プログラム。
【請求項３】
前記基準物を認識した後、前記撮像素子から連続して取得した複数の前記撮像画像内のいずれにおいても、前記基準物の像が含まれない場合に、前記撮像素子の移動変化量が前記所定値以上であるか否かを判定する、
処理を実行させることを特徴とする請求項１に記載の表示制御プログラム。
【請求項４】
前記コンピュータに、
前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内に前記基準物の像が含まれる場合に、前記表示制御を継続する、
ことを実行させることを特徴とする請求項１乃至３のいずれか１項に記載の表示制御プログラム。
【請求項５】
前記画像モデルは、前記基準物を基準とする座標で定義された３次元のモデル情報であり、前記表示制御により、前記位置関係に応じて投影された画像に調整されて表示される、
ことを特徴とする請求項１乃至３のいずれか１項に記載の表示制御プログラム。
【請求項６】
前記センサは、前記コンピュータに備えられた加速度センサまたは角速度センサであって、
前記計測値は、正負を含む加速度の値である、
ことを特徴とする請求項１乃至５のいずれか１項に記載の表示制御プログラム。
【請求項７】
前記所定値は、前記撮像素子の撮影範囲を基準に定められる、
ことを特徴とする請求項１乃至６のいずれか１項に記載の表示制御プログラム。
【請求項８】
コンピュータが、
撮像素子から撮像画像を取得し、
前記撮像素子から取得した前記撮像画像内から基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、
前記撮像素子の移動に関わる計測値を、センサから単位時間ごとに取得し、
前記計測値から、単位時間前の前記撮像素子の位置に対する変化を求め、
複数単位時間経過後の前記撮像素子の位置に関わる変化から、基準に対する、前記撮像素子の移動変化量を求め、
前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値未満である場合に、前記表示制御を継続し、
前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値以上である場合に、前記表示制御を終了する、
処理を実行することを特徴とする表示制御方法。
【請求項９】
撮像部と、
前記撮像部の移動に関わる計測値を計測するセンサ部と、
前記撮像部から撮像画像を取得するとともに、前記センサ部から前記計測値を、単位時間ごとに取得する取得部と、
前記撮像部から取得した前記撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像部から取得した前記撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、また、前記計測値から、単位時間前の前記撮像素子の位置に対する変化を求め、複数単位時間経過後の前記撮像部の位置に関わる変化から、基準に対する、前記撮像部の移動変化量を求め、前記基準物を認識した後、前記撮像部から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値未満である場合に、前記表示制御を継続するとともに、前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値以上である場合に、前記表示制御を終了する制御部と、
を含むことを特徴とする表示制御装置。
【請求項１０】
前記計測値である前記加速度から、前記単位時間あたりの前記撮像素子の速度を求め、
前記速度から、前記変化として、単位時間前の位置座標からの該撮像素子の変化を求め、
前記位置座標に関する前記変化を、前記複数単位時間にわたり演算し、
最新の前記位置座標に関する前記変化と、基準位置座標との差分から、前記移動変化量を求める
ことを特徴とする請求項６に記載の表示制御プログラム。
【請求項１１】
前記位置座標は、３次元方向の各々について、求められ、
前記移動変化量は、前記３次元方向の各々について、求められる
ことを特徴とする請求項１０に記載の表示制御プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
一態様によれば、表示制御プログラムは、コンピュータに、撮像素子から撮像画像を取得し、前記撮像素子から取得した前記撮像画像内から基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、前記撮像素子の移動に関わる計測値を、センサから単位時間ごとに取得し、前記計測値から、単位時間前の前記撮像素子の位置に対する変化を求め、複数単位時間経過後の前記撮像素子の位置に関わる変化から、基準に対する、前記撮像素子の移動変化量を求め、前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値未満である場合に、前記表示制御を継続し、前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値以上である場合に、前記表示制御を終了する、処理を実行させる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
一態様によれば、コンピュータが、撮像素子から撮像画像を取得し、前記撮像素子から取得した前記撮像画像内から基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、前記撮像素子の移動に関わる計測値を、センサから単位時間ごとに取得し、前記計測値から、単位時間前の前記撮像素子の位置に対する変化を求め、複数単位時間経過後の前記撮像素子の位置に関わる変化から、基準に対する、前記撮像素子の移動変化量を求め、前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値未満である場合に、前記表示制御を継続し、前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値以上である場合に、前記表示制御を終了する、処理を実行することを特徴とする表示制御方法が用いられる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
一態様によれば、表示制御装置は、撮像部と、前記撮像部の移動に関わる計測値を計測するセンサ部と、前記撮像部から撮像画像を取得するとともに、前記センサ部から前記計測値を、単位時間ごとに取得する取得部と、前記撮像部から取得した前記撮像画像内より基準物の像を認識した場合に、前記基準物と前記撮像素子との位置関係に応じて調整された画像モデルの表示制御を開始するとともに、前記撮像部から取得した前記撮像画像内より前記基準物が認識されている場合は前記表示制御を継続し、また、前記計測値から、単位時間前の前記撮像素子の位置に対する変化を求め、複数単位時間経過後の前記撮像部の位置に関わる変化から、基準に対する、前記撮像部の移動変化量を求め、前記基準物を認識した後、前記撮像部から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値未満である場合に、前記表示制御を継続するとともに、前記基準物を認識した後、前記撮像素子から取得した前記撮像画像内より前記基準物が認識されず、かつ、前記移動変化量が前記所定値以上である場合に、前記表示制御を終了する制御部と、を含む。
【国際調査報告】
2014016862.tif 000026
2014016862.tif 000027