以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。図面の説明において、同一又は同等の要素には同一符号を用い、重複する説明を省略する。
本実施形態に係る表示装置は、拡張現実感(AR:AugmentedReality)技術を利用することにより、撮像装置によって撮像した現実空間の画像に仮想オブジェクトを同期して表示する装置である。より詳細には、本実施形態に係る表示装置は、撮像した物体の動きから撮像画像における物体の加速度を計算し、当該計算した加速度により仮想オブジェクトを制御することによって、現実の物理現象に沿ったリアリティのある態様で仮想オブジェクトを表示する装置である。
図1は、本実施形態に係る端末装置の表示イメージを示す図である。図1(a)に示される表示イメージでは、撮像装置により撮像された現実空間の物体である箱Rと、箱Rの中に入っているかのように表示された仮想オブジェクトであるボールBVとが端末装置のディスプレイに表示されている。そして、図1(b)に示されるように箱Rが上方向に移動させられると、箱R及び仮想オブジェクトであるボールBVがともに上方向に移動して表示される。更に、図1(c)に示されるように上方向に移動していた箱Rの移動方向が下方向に変化させられると、箱Rは下方向に移動して表示される。一方で、ボールBVは図1(b)に示した上方向への移動によって上方向の速度を有しているため図1(c)に示されるように箱Rが下方向に移動した場合には箱Rから離れて上方向に跳ね上げられるように表示される。このような表示は現実の物理現象に沿ったリアリティのある表示であり、撮像画像における物体の加速度を導出することによって実現している。以下、図2を参照しながら本実施形態に係る表示装置の一例である端末装置の機能について詳細に説明する。
図2は、本実施形態に係る端末装置の機能ブロック図である。図2に示される端末装置1は、仮想空間のオブジェクト(仮想オブジェクト)を現実空間の画像に同期させて表示する表示装置である。仮想オブジェクトとは、例えばコンピュータを用いて作成されるコンピュータグラフィックス(CG:computer graphics)である。現実空間の画像とは、例えば撮像装置により撮像された静止画像(撮像画像)である。仮想オブジェクトを現実空間の画像に同期させて表示するとは、現実空間の画像のうち仮想オブジェクトが関連付けられた所定の位置に、仮想オブジェクトを重畳表示することをいう。例えば、図1(a)に示される表示イメージでは、現実空間の物体である箱Rの中に仮想オブジェクトであるボールBVが入っているように見える位置が、仮想オブジェクトが関連付けられた所定の位置であり、当該所定の位置にボールBVが表示されている。
端末装置1は、ユーザにより用いられ、撮像機能を有する装置である。端末装置1は、例えば、スマートフォン等の携帯電話機、タブレット型端末、ノートPC(Personal Computer)等である。端末装置1は、機能的には、画像取得部11と、画像記憶部21と、速度計算部22と、速度記憶部23と、加速度計算部24と、画像加速度記憶部25と、端末加速度取得部31と、端末加速度記憶部32と、決定部41と、オブジェクト記憶部42と、画像合成部43と、表示部44と、を備える。
端末装置1は、図3に示されるハードウェアによって構成される。図3は、本実施形態に係る端末装置のハードウェア構成図である。図3に示されるように、端末装置1は、物理的には、1又は複数のCPU(Central Processing Unit)101、主記憶装置であるRAM(RandomAccessMemory)102及びROM(Read Only Memory)103、データ送受信デバイスである通信モジュール104、半導体メモリ等の補助記憶装置105、タッチパネル等のユーザの入力を受け付ける入力装置106、ディスプレイ等の出力装置107、カメラ等の撮像装置108、並びに、端末装置1の加速度を測定する加速度センサ109等のハードウェアを備えるコンピュータとして構成される。撮像装置108は、現実空間を撮像することにより撮像画像を生成する。図2における端末装置1の各機能は、CPU101、RAM102等のハードウェア上に1又は複数の所定のコンピュータソフトウェアを読み込ませることにより、CPU101の制御のもとで通信モジュール104、入力装置106、出力装置107、撮像装置108及び加速度センサ109を動作させるとともに、RAM102及び補助記憶装置105におけるデータの読み出し及び書き込みを行うことで実現される。
図2に戻って、端末装置1の機能構成について詳細に説明する。画像取得部11は、撮像装置108により撮像されて生成された撮像画像を取得する画像取得手段として機能する。画像取得部11は、撮像装置108によって撮像画像が生成される度に撮像画像を取得するものであってもよいし、所定の間隔で撮像装置108から撮像画像を取得するものであってもよい。画像取得部11が取得する撮像画像のメタ情報には、少なくとも撮像時刻(画像を撮像した時刻)が含まれている。画像取得部11は、取得した撮像画像及び該撮像画像のメタ情報を画像記憶部21に格納する。
画像記憶部21は、画像取得部11により取得された複数の撮像画像を記憶する画像記憶手段として機能する。画像記憶部21は、第1記憶領域と第2記憶領域とを有している。第1記憶領域には、画像取得部11により取得された複数の撮像画像のうち最新の撮像画像及び該撮像画像のメタ情報が記憶されている。第2記憶領域には、第1記憶領域に記憶された撮像画像よりも過去の(撮像時刻が古い)撮像画像及び該撮像画像のメタ情報が記憶されている。画像取得部11は、画像記憶部21に新たな撮像画像を格納する際には、第1記憶領域に記憶された情報を第2記憶領域に格納し直した後に、新たな撮像画像及び該撮像画像のメタ情報を第1記憶領域に格納する。
速度計算部22は、画像記憶部21に記憶された複数の撮像画像それぞれに表示された同一の物体の各撮像画像間での位置の差、及び各撮像画像が撮像された時刻の差に基づき、物体の速度である画像速度を計算する速度計算手段として機能する。なお、以下の説明において、ベクトル量である速度及び加速度等の演算は、全てベクトル量の演算を示している。速度計算部22は、物体特定処理、動きベクトル導出処理、及び画像速度導出処理を行う。
物体特定処理とは、撮像画像中の特徴点を抽出し、当該特徴点に基づいて撮像画像中に含まれる物体を特定する処理である。特徴点とは、画像の境目及び角等の特徴となる点であり、例えば画像の色彩が大きく変化する箇所、濃淡の濃い箇所、輪郭などである。特徴点に基づいて撮像画像中に含まれる物体を特定するために、例えば、抽出した特徴点と、予め記憶された特徴点とがマッチングされる。予め記憶された特徴点は、現実の物体に対応づけられている。上記マッチングによって、撮像画像中に含まれている物体を特定することができる。なお、物体に対応づけられた特徴点は、端末装置1中に記憶されていてもよいし、端末装置1と通信可能な外部のデータベースに記憶されていてもよい。速度計算部22は、画像記憶部21の第1記憶領域に格納された撮像画像(以下、第1画像と記載する場合がある)及び第2記憶領域に格納された撮像画像(以下、第2画像と記載する場合がある)の双方に対して、物体特定処理を行う。
動きベクトル導出処理とは、第1画像及び第2画像を比較することにより、物体特定処理において特定された物体の動きを動きベクトルとして導出する処理である。動きベクトルとは、基準となる画像(フレーム)からの物体の動きをベクトルで表現したものである。速度計算部22は、第1画像及び第2画像の双方に表示されている物体について、第1画像における位置と第2画像における位置とを比較し、第2画像における位置から第1画像における位置までの移動量及び移動方向を動きベクトルとして導出する。速度計算部22は、同一の物体に含まれる複数の特徴点それぞれの動きベクトルを導出する。すなわち、同一の物体について複数の動きベクトルが導出される。なお、複数の画像から動きベクトルを導出する処理については、例えば「Bruce D. Lucas and Takeo Kanade. An Iterative Image RegistrationTechnique with an Application to Stereo Vision.International Joint Conferenceon Artificial Intelligence, pages 674-679, 1981.」等に記載された手法を用いて行うことができる。
画像速度導出処理とは、第1記憶領域に記憶された第1画像のメタ情報及び第2記憶領域に記憶された第2画像のメタ情報と、動きベクトル導出処理において導出された動きベクトルとに基づいて、撮像画像中の物体の速度である画像速度を導出する処理である。速度計算部22は、第2画像のメタ情報に含まれた第2画像の撮像時刻と第1画像のメタ情報に含まれた第1画像の撮像時刻との差である撮像時刻差を導出する。また、速度計算部22は、第1画像及び第2画像から導出された、同一の物体に係る複数の特徴点の動きベクトルから一の動きベクトルを求める。当該一の動きベクトルは、例えば複数の特徴点の動きベクトルの平均のベクトル(以下、平均ベクトルと記載する場合がある)とされる。速度計算部22は、撮像時刻差と一の動きベクトルとから画像速度を導出する。速度計算部22は、導出した画像速度及び該画像速度の時刻情報を速度記憶部23に格納する。ここで、画像速度の時刻情報は、例えば第1画像のメタ情報に含まれている撮像時刻とされる。
また、簡単のため撮像装置108による撮像画像の生成が同一間隔で周期的に行われる場合(すなわち撮像時刻差が常に一定である場合)と仮定して、平均ベクトルに定数を乗算した値を画像速度としてもよい。なお、撮像時刻差が一定でない場合には、時刻差に反比例した数を乗算して画像速度を求め、位置を更新する場合には画像速度に時刻差に比例した数を乗算したものを位置に加算すればよい。また、動きベクトルの始点の奥行が推定できる場合には、透視変換の逆変換を適用して、見かけの動きベクトルの大きさを奥行によって補正した値の平均値を画像速度としてもよい。奥行によって補正することにより、精度の高い画像速度が導出される。なお、動画像から特徴点の座標(奥行)を推定する方法としては、例えば「Carlo Tomasi and Takeo Kanade. (November 1992). "Shape andmotion from image streams under orthography: a factorization method.".International Journal of Computer Vision, 9 (2): 137-154.」に記載された公知のTomasi-Kanada法等を用いることができる。
速度記憶部23は、速度計算部22により導出(計算)された画像速度を記憶する速度記憶手段として機能する。速度記憶部23は、第3記憶領域と第4記憶領域とを有している。第3記憶領域には、速度計算部22により導出された画像速度のうち最新の画像速度及び該画像速度の時刻情報が記憶されている。第4記憶領域には、第3記憶領域に記憶された画像速度よりも過去の(時刻情報が古い)画像速度及び該画像速度の時刻情報が記憶されている。速度計算部22は、速度記憶部23に新たな画像速度を格納する際には、第3記憶領域に記憶された情報を第4記憶領域に格納し直した後に、新たな画像速度及び該画像速度の時刻情報を第3記憶領域に格納する。
加速度計算部24は、速度記憶部23に記憶された複数の画像速度の差に基づき、撮像画像における物体の加速度である画像加速度を計算する加速度計算手段として機能する。すなわち、加速度計算部24は、第3記憶領域に記憶された画像速度及び第4記憶領域に記憶された画像速度の差である速度差と、第3記憶領域に記憶された時刻情報及び第4記憶領域に記憶された時刻情報の差である時刻差とをそれぞれ求め、当該速度差及び時刻差から画像加速度を導出(計算)する。加速度計算部24は、導出した画像加速度及び該画像加速度の時刻情報を画像加速度記憶部25に格納する。ここで、画像加速度の時刻情報は、例えば、第3記憶領域に記憶されている時刻情報(つまり第1画像の撮像時刻)、及び、画像加速度を導出した時刻(導出タイミング)を示す情報とされる。
画像加速度記憶部25は、加速度計算部24により導出(計算)された画像加速度を記憶する画像加速度記憶手段として機能する。画像加速度記憶部25は、少なくとも、加速度計算部24によって導出された最新の画像加速度及び該画像加速度の時刻情報を記憶している。なお、画像加速度記憶部25は、複数の画像加速度及び時刻情報を記憶してもよい。
上述した、画像記憶部21、速度計算部22、速度記憶部23、加速度計算部24、及び画像加速度記憶部25によって、画像加速度を導出する加速度導出部20が構成されている。すなわち、加速度導出部20は、画像取得部11により取得された複数の撮像画像それぞれに表示された同一の物体の各撮像画像間での位置の差、及び各撮像画像が撮像された時刻の差に基づき、画像加速度を導出する加速度導出手段として機能する。
端末加速度取得部31は、端末装置1の加速度である端末加速度(装置加速度)を取得する加速度取得手段として機能する。端末加速度取得部31は、例えば加速度センサ109によって測定された加速度を所定の間隔(例えば数10m秒〜数秒間隔)で取得する。また、端末加速度取得部31は、一定の間隔ではなくランダムに、加速度センサ109から加速度を取得してもよい。端末加速度取得部31は、加速度とともに該加速度の測定時刻を加速度センサ109から取得する。加速度センサ109によって測定される加速度には、端末加速度及び重力加速度の双方が含まれている。そのため、端末加速度取得部31は、加速度センサ109によって測定された加速度から重力加速度を減算した値を端末加速度として取得する。
端末加速度記憶部32は、端末加速度取得部31により取得された端末加速度を、該端末加速度の測定時刻を示すタイムスタンプと対応づけて記憶する装置加速度記憶手段として機能する。端末加速度記憶部32は、端末加速度取得部31によって取得された端末加速度のうち、最新の端末加速度のみではなく、該最新の端末加速度よりも過去に取得された端末加速度を、タイムスタンプと対応づけて加速度テーブルに記憶している。図4は、図2の端末加速度記憶部32の加速度テーブルを示す表である。図4に示される例では、端末加速度記憶部32の加速度テーブルTにおいて、20ミリ秒間隔で取得された端末加速度の測定時刻である11時41分12.000秒〜12.060秒を示すタイムスタンプ(11:41:12.000〜12.060)それぞれに対応して、端末加速度(0.1、0.2、0.0、0.0)が記憶されている。すなわち、加速度テーブルTには、端末加速度取得部31によって20ミリ秒ごとに取得された端末加速度が記憶されている。
端末加速度記憶部32は、加速度テーブルTを記憶するためのバッファを有している。当該バッファは、一定のサイズにされてリングバッファの形態とされてもよい。この場合、端末加速度取得部31により新たな端末加速度が格納される際に、バッファ内の最も古い(最も過去に格納された)端末加速度の値に上書きするようにして、新たな端末加速度が記憶されてもよい。
図2に戻って、決定部41は、加速度導出部20により導出された画像加速度を、端末加速度記憶部32に記憶された端末加速度によって補正した補正加速度を導出し、当該補正加速度を用いて仮想オブジェクトの表示態様(具体的には表示位置)を決定する決定手段として機能する。すなわち、決定部41は、補正加速度導出処理及び表示態様決定処理を行う。以下、それぞれの処理について詳細に説明する。
まず、補正加速度導出処理について説明する。決定部41は、画像加速度から端末加速度を減算することにより補正加速度を導出する。また、決定部41は、画像加速度の導出に要する時間を考慮して補正加速度を導出してもよい。すなわち、決定部41は、加速度導出部20(より詳細には加速度計算部24)により画像加速度が導出された時刻を導出タイミングとして特定する。具体的には、決定部41は、画像加速度記憶部25を参照し、画像加速度の時刻情報(より詳細には、画像加速度を導出した時刻(導出タイミング)を示す情報)を、最新の画像加速度の導出タイミングとして特定する。そして、決定部41は、端末加速度記憶部32に記憶された端末加速度のうち、上述した導出タイミングよりも所定の時間分だけ過去の端末加速度により画像加速度を補正する。当該所定の時間は、撮像画像から画像加速度を導出するために要する時間(以下、導出タイムラグと記載する場合がある)に相当する時間とされる。
図5は、撮像画像から画像加速度を導出するイメージを示す図である。図5に示されるように、画像加速度aIを導出するためには、少なくとも異なる時刻t,t−1,t−2に撮像された複数の撮像画像I(t),I(t−1),I(t−2)が必要となる。このことから、導出タイムラグには、複数の撮像画像I(t),I(t−1),I(t−2)を撮像するための撮像間隔が含まれる。この場合の撮像間隔とは、撮像画像I(t−2)が撮像された時刻t−2から撮像画像I(t)が撮像された時刻である時刻tまでの時間である。また、図5に示されるように、複数の撮像画像I(t),I(t−1),I(t−2)から少なくとも速度V(t),V(t−1)が計算され、速度V(t),V(t−1)から画像加速度aIが導出されるので、導出タイムラグには、計算時間が含まれる。以上より、導出タイムラグは、上述した撮像間隔及び計算時間を含んだ時間である。
図4を用いてより詳細に説明する。例えば上述した所定の時間(すなわち撮像間隔及び計算時間を含んだ時間である導出タイムラグ)が20ミリ秒とされ、導出タイミングが11時41分12.040秒であったとする。この場合、決定部41は、加速度テーブルTを参照して、導出タイミングである11時41分12.040秒よりも20ミリ秒過去の11時41分12.020秒の端末加速度を画像加速度の値から減算することにより、補正加速度を導出する。なお、導出タイムラグが一定値である場合には、加速度テーブルTにおいてタイムスタンプの記録を省略し、一定数古い画像加速度の値を用いるようにしてもよい。
つづいて、表示態様決定処理について説明する。決定部41は、補正加速度導出処理により導出した補正加速度に基づいて、オブジェクト記憶部42に記憶された仮想オブジェクトのパラメータ値を更新することにより、仮想オブジェクトの表示態様を決定する。決定部41は、仮想オブジェクトのパラメータ値の更新が完了すると、画像合成部43に更新完了通知を出力する。ここで、オブジェクト記憶部42は、撮像画像中の仮想オブジェクト毎に、各種パラメータ値及び実世界同期フラグを記憶している。各種パラメータとは、例えば、仮想オブジェクトの位置、姿勢、形状、速度、質量、オブジェクト間の摩擦係数、衝突時の弾性係数、推進力、引力、及び電磁力等の、物理計算(詳細は後述)に用いられるパラメータである。
また、実世界同期フラグとは、仮想オブジェクトを表示する際に、現実空間の物体(すなわち撮像画像中の物体)の一部又は全てを表すオブジェクトとして表示するか否かを示すフラグである。すなわち、例えば箱を撮像している場合に箱の一部である底面を表す仮想オブジェクトは、現実空間の物体の一部そのものを表すオブジェクトであるので、仮想オブジェクトの実世界同期フラグはY(Yes)に設定される。一方で、例えば箱を撮像している場合に箱の中に入っているように見せる仮想的なボールを表す仮想オブジェクトは、現実空間の物体を表すオブジェクトではないので、仮想オブジェクトの実世界同期フラグはN(No)に設定される。実世界同期フラグがYの仮想オブジェクトは、当該仮想オブジェクトが表す撮像画像中の物体の一部又は全てに位置合わせされて表示される。一方で、実世界同期フラグがNの仮想オブジェクトは、速度等のパラメータ値を考慮した物理計算(詳細は後述)と、仮想オブジェクト間の衝突判定とに基づき時々刻々の位置及び速度が変化し、当該変化に応じた態様で表示される。
図6(a)は図2のオブジェクト記憶部42が記憶するオブジェクトのイメージを示す図であり、図6(b)は図2のオブジェクト記憶部42のオブジェクトテーブルを示す表である。図6(a)に示される物体Bは、撮像画像中に含まれる箱の底面を表す仮想オブジェクトである。また、図6(a)に示される物体Oは、撮像画像中の箱の中に入っているように表示されるボールを表す仮想オブジェクトである。なお、図6(a)の例では、撮像画像中に含まれる箱の底面のみが仮想オブジェクトとされているが、箱全体が仮想オブジェクトとされていてもよい。
図6(b)に示される例では、図6(a)に示された仮想オブジェクトである物体O及び物体Bに関する情報が、オブジェクト記憶部42のオブジェクトテーブルOTに記憶されている。オブジェクトテーブルOTでは、仮想オブジェクトに関する情報として、仮想オブジェクトを特定する物体IDと、仮想オブジェクトのパラメータである位置・形状及び速度と、実世界同期フラグとが対応づけられて記憶されている。図6(b)に示される例では、パラメータとして位置・形状及び速度が記憶されているとして説明する。なお、各仮想オブジェクトは剛体であると仮定されており、速度のパラメータ値は一つの仮想オブジェクトにつき一つとされている。また、速度の初期値はゼロベクトルとされる。
物体ID:Oで示される物体Oは球体物体であるボールの仮想オブジェクトであるところ、中心座標(物体Oの中心を示す撮像画像中の座標)p0及び半径rが位置・形状のパラメータ値とされている。また、物体Oでは速度v0が速度のパラメータ値とされている。また、物体Oは撮像画像中の物体(現実空間の物体)を表すオブジェクトではないので実世界同期フラグがNとされている。
一方で、物体ID:Bで示される物体Bは平面物体である箱の底面の仮想オブジェクトであるところ、頂点座標(物体Bの頂点を示す撮像画像中の座標)p1,p2,p3,p4が位置・形状のパラメータ値とされている。また、物体Bでは速度vbが速度のパラメータ値とされている。また、物体Bは撮像画像中の物体(現実空間の物体)である箱の一部(底面)そのものを表すオブジェクトであるので実世界同期フラグがYとされている。
ここで、実世界同期フラグがNの仮想オブジェクトである物体Oの時々刻々の位置及び速度は、仮想オブジェクト間の衝突判定を考慮した上で、パラメータ値及び補正加速度に基づく物理計算によって導出される。なお、仮想オブジェクト間の衝突判定については、周知の衝突判定技術を用いて行うことができるので、詳細な説明を省略する。
決定部41は、時刻tにおける物体Oの速度v
0(t)を、オブジェクト記憶部42のオブジェクトテーブルOTに記憶された時刻t−1の速度v
0(t−1)、重力加速度g、及び補正加速度a
cから導出しており、例えば以下の(1)式により求めることができる。なお、以下の(1)式における重力加速度g及び補正加速度a
cは、単位時間あたりの値である。重力加速度gの向きは、加速度センサ109により測定されてもよいし、端末装置1の下方向とみなされてもよい。決定部41は導出した速度v
0(t)を物体Oの速度の新たなパラメータ値とし、オブジェクトテーブルOTを更新する。
また、決定部41は、時刻tにおける物体Oの位置p
0(t)を、オブジェクト記憶部42のオブジェクトテーブルOTに記憶された時刻t−1の位置p
0(t−1)及び時刻t−1の速度v
0(t−1)から導出しており、例えば以下の(2)式により求めることができる。なお、以下の(2)式における速度v
0は、単位時間あたりの値である。決定部41は導出した位置p
0(t)を物体Oの位置の新たなパラメータ値とし、オブジェクトテーブルOTを更新する。
このように、物体Oの位置p0が補正加速度及び速度v0に基づいて求められるので、物体Oを現実の物理現象に沿ったリアリティのある態様で表示することができる。なお、物体Oの速度及び位置を求める方法は、上述した簡便な手法(オイラー法)に限られず、より精度の高いルンゲ=クッタ法であってもよい。
ここで、決定部41は、端末加速度記憶部32に記憶された端末加速度の大きさが所定の値よりも大きい場合に、画像加速度及び端末加速度を共に0として、すなわち補正加速度を0として仮想オブジェクトの表示態様を決定してもよい。端末加速度の大きさとは、端末加速度取得部31によって取得された端末加速度の絶対値である。端末装置1が激しく動いている状態で導出された画像加速度は信頼性が低いと考えられる。そこで、上記所定の値は、例えば、撮像された撮像画像から導出される画像加速度の値の信頼性が低くなると考えられる端末加速度の下限値とされる。また、決定部41は、端末加速度記憶部32に記憶されている端末加速度の大きさが所定の値よりも大きいと判定した場合に、当該判定した時点から上述した所定の時間(すなわち撮像間隔及び計算時間を含んだ時間である導出タイムラグ)よりも長い一定時間の間、画像加速度及び端末加速度を共に0として、すなわち補正加速度を0として仮想オブジェクトの表示態様を決定してもよい。
画像合成部43は、仮想オブジェクトを現実空間の撮像画像に合成する(同期させる)。画像合成部43は、決定部41からの更新完了通知を契機として、画像記憶部21から、更新完了通知に係る更新に用いられた画像加速度に関する撮像画像を取得する。そして、オブジェクト記憶部42のオブジェクトテーブルOTを参照し、実世界同期フラグがYの仮想オブジェクトを特定するとともに、当該仮想オブジェクトの最新の位置を撮像画像から特定する。画像合成部43は、実世界同期フラグがYの仮想オブジェクトの位置が、撮像画像から特定した最新の位置となるように、オブジェクト記憶部42のオブジェクトテーブルOTを更新する。その後、画像合成部43は、オブジェクト記憶部42のオブジェクトテーブルOTを参照し、記憶された全ての仮想オブジェクト(実世界同期フラグがYの仮想オブジェクト及びNの仮想オブジェクト)の位置・形状を特定する。そして、画像合成部43は、各仮想オブジェクトの位置・形状が、上記特定した位置・形状となるように、取得済みの撮像画像に対して各仮想オブジェクトを合成し、合成画像を生成する。画像合成部43は、合成画像を表示部44に出力する。
表示部44は、決定部41が決定した表示態様によって、仮想オブジェクトを現実空間の撮像画像に同期させて表示する表示手段として機能する。具体的には、表示部44は、画像合成部43が生成した合成画像を出力装置107に表示させる。
次に、図7を参照して端末装置1による一連の処理を説明する。図7は、図2の端末装置1が行う表示方法の一連の処理を示すフローチャートである。図7に示される処理は、例えば、端末装置1にインストールされた専用のソフトウェア(アプリケーション)が起動された後に、撮像装置108が撮像画像を生成することに応じて開始される。
まず、画像取得部11により、撮像装置108が現実空間を撮像して生成した撮像画像が取得される(ステップS1、撮像画像を取得するステップ)。画像取得部11は、取得した撮像画像及び該撮像画像のメタ情報を画像記憶部21に格納する。つづいて、速度計算部22により、画像記憶部21に記憶された複数の撮像画像から動きベクトルが導出される(ステップS3、画像加速度を導出するステップ)。具体的には、速度計算部22は、第1画像及び第2画像の双方に対して、物体特定処理を行った後に、第1画像及び第2画像の双方に表示されている物体について、第1画像における位置と第2画像における位置とを比較し、第2画像における位置から第1画像における位置までの移動量及び移動方向を動きベクトルとして導出する。
つづいて、速度計算部22により、動きベクトルと、第1画像のメタ情報及び第2画像のメタ情報とに基づいて、画像速度が導出される(ステップS5、画像加速度を導出するステップ)。速度計算部22は、導出した画像速度及び該画像速度の時刻情報を速度記憶部23に格納する。つづいて、加速度計算部24により、速度記憶部23に記憶された複数の画像速度の差に基づき、画像加速度が導出される(ステップS7、画像加速度を導出するステップ)。具体的には、加速度計算部24は、第3記憶領域に記憶された画像速度及び第4記憶領域に記憶された画像速度の差である速度差と、第3記憶領域に記憶された時刻情報及び第4記憶領域に記憶された時刻情報の差である時刻差とをそれぞれ求め、当該速度差及び時刻差から画像加速度を導出(計算)する。加速度計算部24は、導出した画像加速度及び該画像加速度の時刻情報を画像加速度記憶部25に格納する。
つづいて、端末加速度取得部31により、加速度センサ109が測定した加速度に基づき端末加速度が取得される(ステップS9、装置加速度を取得するステップ)。端末加速度取得部31は、端末加速度、及び該端末加速度の測定時刻を示すタイムスタンプを端末加速度記憶部32に格納する。つづいて、決定部41により、画像加速度を端末加速度によって補正した補正加速度が導出される(ステップS11、表示態様を決定するステップ)。具体的には、決定部41は、画像加速度から端末加速度を減算することにより補正加速度を導出する。
つづいて、決定部41により、補正加速度に基づき仮想オブジェクトの表示態様が決定される(ステップS13、表示態様を決定するステップ)。具体的には、決定部41は、補正加速度導出処理により導出した補正加速度に基づいて、オブジェクト記憶部42に記憶された仮想オブジェクトのパラメータ値を更新することにより、仮想オブジェクトの表示態様を決定する。決定部41は、仮想オブジェクトのパラメータ値の更新が完了すると、画像合成部43に更新完了通知を出力する。そして、画像合成部43が仮想オブジェクトを現実空間の撮像画像に合成した後に、表示部44により、決定部41が決定した表示態様にて、仮想オブジェクトが現実空間の撮像画像に同期して表示される(ステップS15、表示するステップ)。
次に、本実施形態に係る端末装置1の作用・効果について説明する。
AR技術を用いて撮像画像に仮想オブジェクトを同期して表示する際、現実空間の物体の位置が変化する(現実空間の物体が動く)場合がある。このような場合には、衝突判定を行うとともに現実空間の重力方向を考慮して、現実空間の物体に位置合わせするようにして仮想オブジェクトを表示することが考えられる。例えば、図8に示した比較例に係る端末装置151は、撮像された物体の加速度を考慮せず単に現実空間の重力方向のみを考慮した端末装置である。端末装置151では、撮像装置により撮像された現実空間の物体である箱Rと、箱Rの中に入っているかのように表示された仮想オブジェクトであるボールBVとが端末装置のディスプレイに表示されている。そして、図8(b)に示されるように箱Rが上方向に移動させられると、箱R及び仮想オブジェクトであるボールBVがともに上方向に移動して表示される。更に、図8(c)に示されるように上方向に移動していた箱Rの移動方向が下方向に変化させられると、箱Rは下方向に移動して表示され、仮想オブジェクトであるボールBVも箱Rに追従して下方向に移動して表示される。しかしながら、現実空間においてボールを入れた箱を上下方向に動かした場合には、箱の中からボールが飛び出すことがあると考えられる。つまり、図8の例のように、衝突判定が行われるとともに現実空間の重力方向が考慮されたのみでは、仮想オブジェクトであるボールBVが常に箱に追従するように表示されてしまい、現実の物理現象に沿った表示とならないおそれがある。
この点、本実施形態の端末装置1によれば、加速度導出部20によって同一の物体の各撮像画像間での位置の差及び各撮像画像が撮像された時刻の差に基づいて画像加速度が導出されるとともに、端末加速度取得部31によって端末加速度が取得される。そして、決定部41によって画像加速度を端末加速度にて補正した補正加速度が導出され、表示部44によって当該補正加速度に基づいた表示態様にて仮想オブジェクトが撮像画像に同期表示される。
このように、撮像された物体の加速度である画像加速度が考慮されて仮想オブジェクトの表示態様が決定されることにより、現実空間の物体の加速度に応じて仮想オブジェクトが表示される。これにより、現実の物理現象に沿った、リアリティのある態様で仮想オブジェクトを表示することができる。例えば、図1(c)に示されるように、上方向に移動していた箱Rの移動方向が下方向に変化させられると、箱Rは下方向に移動して表示される。一方で、ボールBVは図1(b)に示した上方向への移動によって上方向の速度を有しているため図1(c)に示されるように箱Rが下方向に移動した場合には箱Rから離れて上方向に跳ね上げられるように表示される。このような表示は現実の物理現象に沿ったリアリティのある表示であり、撮像画像における物体の加速度を考慮することによって実現している。
また、例えば端末装置自体が動きながら撮像した複数の撮像画像から画像加速度が導出される場合においては、端末装置自体の動きに起因して撮像画像に表示される物体の位置が相対的に変化し、導出される画像加速度の値が物体の現実の動きから乖離した値となるおそれがある。例えば、図9に示した比較例に係る端末装置152は、端末装置自体の動き(加速度)を考慮しない端末装置である。端末装置152では、撮像装置により撮像された現実空間の物体である箱Rと、箱Rの中に入っているかのように表示された仮想オブジェクトであるボールBVとが表示装置のディスプレイに表示されている。そして、図9(b)に示されるように箱Rが上方向に移動させられると、箱R及び仮想オブジェクトであるボールBVがともに上方向に移動して表示される。この場合において、箱Rの現実空間における位置を変化させずに、端末装置152自体の位置を上方向に移動させると、撮像画像に表示される箱の位置が相対的に下方向に変化するため、図9(c)に示されるように、ボールBVが上方向に跳ね上げられるように表示されてしまう。現実空間では箱Rの位置は変化していないため、ボールBVの表示(上方向に跳ね上げられるような表示)は現実の物理現象に沿ったリアリティのある表示とは言い難い。
この点、本実施形態の端末装置1では、画像加速度を端末加速度によって補正した補正加速度が用いられているので、端末装置1自体の動きが考慮されて仮想オブジェクトの表示態様が決定される。このことにより、端末装置1が動きながら撮像した複数の撮像画像を用いる場合であっても、現実空間の物体の動きに合わせた仮想オブジェクトを表示することができる。
また、本実施形態の端末装置1では、決定部41が画像加速度から端末加速度を減算することにより補正加速度を導出するので、画像加速度から、端末装置1の動きに応じた端末加速度を適切にキャンセルすることができ、現実の物体の動きを適切に反映した補正加速度を導出できる。
また、本実施形態の端末装置1では、決定部41が、端末加速度の大きさが所定の値よりも大きい場合に、画像加速度、及び端末加速度を0として、表示態様を決定する。端末加速度が大きい場合すなわち端末装置1が激しく動いている場合には、各撮像画像間における物体の位置の差から導出される画像加速度の値の信頼性が低いと考えられる。このため、端末加速度が所定の値よりも大きい場合に、画像加速度及び端末加速度を0として表示態様を決定することにより、信頼性が低い情報に基づいて仮想オブジェクトの表示態様が決定されることを回避することができる。
また、本実施形態の端末装置1は、端末加速度取得部31により取得された端末加速度を、端末加速度が測定された時刻と対応づけて記憶する端末加速度記憶部32を備えている。そして、決定部41は、加速度導出部20(より詳細には加速度計算部24)により画像加速度が導出された時刻を導出タイミングとして特定するとともに、端末加速度記憶部32に記憶された端末加速度のうち、導出タイミングよりも所定の時間分だけ過去の端末加速度を用いて、画像加速度を補正する。画像加速度は、異なる時刻に撮像された複数の撮像画像から導出されるので、その導出には撮像間隔が必要となる。また、画像加速度の導出には計算時間が必要となる。当該撮像間隔及び計算時間等を考慮すると、導出された画像加速度は導出タイミングよりも所定の時間分だけ過去の端末加速度に対応している。このため、導出タイミングよりも所定の時間分だけ過去の端末加速度を用いて画像加速度を補正することによって、より適切に現実の物体の動きを反映した補正加速度を導出することができる。
また、本実施形態の端末装置1では、決定部41が、端末加速度の大きさが所定の値よりも大きい場合に、上記所定の時間よりも長い一定時間の間、画像加速度、及び端末加速度を0として、表示態様を決定する。端末加速度が大きくなったときに、所定の時間よりも長い一定時間、画像加速度及び端末加速度を0とすることによって、少なくとも、端末加速度が大きくなったタイミングに係る画像加速度及び端末加速度を0として表示態様を決定することができる。これにより、信頼性が低い情報に基づいて仮想オブジェクトの表示態様が決定されることをより確実に回避することができる。
以上、本発明の実施形態について説明したが本発明は上記実施形態に限定されるものではない。例えば、上記実施形態では画像取得部11は、端末装置1の撮像装置108により撮像された撮像画像を取得しているがこれに限定されず、端末装置の外部において撮像された撮像画像を取得してもよい。また、決定部41は、画像加速度から端末加速度を減算することにより補正加速度を導出しているが、例えば減算以外の演算により、画像加速度及び端末加速度に基づき補正加速度を導出してもよい。
また、図7を用いた処理フローの説明においては、画像加速度が導出された後に端末加速度が取得されるとして説明したがこれに限定されず、画像加速度の導出よりも前に端末加速度が取得されるものであってもよい。また、決定部41が補正加速度を用いて決定する仮想オブジェクトの表示態様の例として仮想オブジェクトの表示位置を説明したが、補正加速度に基づき決定される仮想オブジェクトの表示態様はこれに限定されない。例えば、決定部41は、補正加速度を用いて、仮想オブジェクトの形状を仮想オブジェクトの表示態様として決定してもよい。具体例として、撮像画像中の物体である板に位置合わせされて表示される、実世界同期フラグがY(Yes)である板の仮想オブジェクト(以下、板オブジェクトと記載する)と、板の仮想オブジェクトの動きに合わせて、板オブジェクトに弾かれるように表示される、実世界同期フラグがN(No)である柔らかいボールの仮想オブジェクト(以下、ボールオブジェクトと記載する)とが仮想オブジェクトとして表示される例を説明する。決定部41は、現実空間において勢いよく板が振り回されて撮像画像中の板の加速度である画像加速度が大きくなり補正加速度が大きくなるほど、板オブジェクトに弾かれる際のボールオブジェクトの形状が潰された形状(変形した形状)となるようにボールオブジェクトの形状を決定してもよい。なお、補正加速度に基づき決定される仮想オブジェクトの表示態様は、仮想オブジェクトの表示位置、及び仮想オブジェクトの形状に限られず、仮想オブジェクトをリアリティのある態様で表示することを可能にする他の表示態様であってもよい。