端末装置、オブジェクト制御方法及びプログラム
【課題】ARの仮想オブジェクトの操作をAR空間へのユーザの没入感を損なうことなく実現すること。
【解決手段】実空間を映した入力画像を取得する画像取得部と、前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、ユーザ入力を検出する検出部と、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、を備える端末装置を提供する。
【解決手段】実空間を映した入力画像を取得する画像取得部と、前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、ユーザ入力を検出する検出部と、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、を備える端末装置を提供する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、端末装置、オブジェクト制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、実世界に付加的な情報を重畳してユーザに呈示する拡張現実(AR:Augmented Reality)と呼ばれる技術が注目されている。AR技術においてユーザに呈示される情報は、アノテーションとも呼ばれ、テキスト、アイコン又はアニメーションなどの様々な形態の仮想的なオブジェクトを用いて可視化され得る。
【0003】
AR技術は、ユーザとのインタラクションを伴うアプリケーションにおいても活用され得る。例えば、広告又はナビゲーションなど、情報提供を目的とするアプリケーションでは、ARの仮想オブジェクトをユーザに操作させることで、ユーザのニーズに見合う情報を効果的にユーザに提供することができる。ARの仮想オブジェクトの操作に関する文献としては、例えば下記特許文献1が存在する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−238098号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記特許文献1に記載された技術では、ユーザにより操作される仮想オブジェクトの動きが、実世界の状況とは無関係に決定される。そのため、AR技術の利点の1つである空間へのユーザの没入感が損なわれやすい。
【0006】
従って、ARの仮想オブジェクトの操作をAR空間へのユーザの没入感を損なうことなく実現できる仕組みが提供されることが望ましい。
【課題を解決するための手段】
【0007】
本開示によれば、実空間を映した入力画像を取得する画像取得部と、前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、ユーザ入力を検出する検出部と、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、を備える端末装置が提供される。
【0008】
また、本開示によれば、実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置におけるオブジェクト制御方法であって、ユーザ入力を検出するステップと、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定するステップと、を含む、オブジェクト制御方法が提供される。
【0009】
また、本開示によれば、実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置を制御するコンピュータを、ユーザ入力を検出する検出部と、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、として機能させるためのプログラムが提供される。
【発明の効果】
【0010】
以上説明したように、本開示によれば、ARの仮想オブジェクトの操作をAR空間へのユーザの没入感を損なうことなく実現することができる。
【図面の簡単な説明】
【0011】
【図1】一実施形態に係る端末装置の概要について説明するための説明図である。
【図2】一実施形態に係る端末装置のハードウェア構成の一例を示すブロック図である。
【図3】一実施形態に係る端末装置の論理的機能の構成の一例を示すブロック図である。
【図4】画像認識の結果の一例について説明するための説明図である。
【図5A】一実施形態において設定される拘束領域の第1の例を示す説明図である。
【図5B】一実施形態において設定される拘束領域の第2の例を示す説明図である。
【図5C】一実施形態において設定される拘束領域の第3の例を示す説明図である。
【図6】タッチセンサを介する仮想オブジェクトの操作について説明するための第1の説明図である。
【図7】タッチセンサを介する仮想オブジェクトの操作について説明するための第2の説明図である。
【図8】モーションセンサを介する仮想オブジェクトの操作について説明するための第1の説明図である。
【図9】モーションセンサを介する仮想オブジェクトの操作について説明するための第2の説明図である。
【図10】モーションセンサを介する仮想オブジェクトの操作について説明するための第3の説明図である。
【図11】モーションセンサを介する仮想オブジェクトの操作について説明するための第4の説明図である。
【図12】一実施形態に係るオブジェクト制御処理の流れの一例を示すフローチャートである。
【図13】一実施形態に係る画像取得処理の詳細な流れの一例を示すフローチャートである。
【図14A】仮想オブジェクトの操作の第1のシナリオについて説明するための第1の説明図である。
【図14B】仮想オブジェクトの操作の第1のシナリオについて説明するための第2の説明図である。
【図15A】仮想オブジェクトの操作の第2のシナリオについて説明するための第1の説明図である。
【図15B】仮想オブジェクトの操作の第2のシナリオについて説明するための第2の説明図である。
【図16A】仮想オブジェクトの操作の第3のシナリオについて説明するための第1の説明図である。
【図16B】仮想オブジェクトの操作の第3のシナリオについて説明するための第2の説明図である。
【図17】仮想オブジェクトの可動方向を表現する補助オブジェクトについて説明するための説明図である。
【発明を実施するための形態】
【0012】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0013】
また、以下の順序で説明を行う。
1.概要
2.一実施形態に係る端末装置の構成例
2−1.ハードウェア構成
2−2.機能構成
3.処理の流れ
4.操作シナリオ
4−1.第1のシナリオ
4−2.第2のシナリオ
4−3.第3のシナリオ
4−4.補助的なオブジェクトの表示
5.まとめ
【0014】
<1.概要>
図1は、本明細書で開示する技術の一実施形態の概要について説明するための説明図である。図1を参照すると、実空間1内でユーザにより携帯されている端末装置100が示されている。
【0015】
端末装置100は、ユーザとのインタラクションを伴うARアプリケーションをユーザに提供する装置である。端末装置100は、例えば、スマートフォン、PC(Personal Computer)、PDA(Personal Digital Assistant)、ゲーム端末又は携帯用音楽プレーヤなどであってよい。
【0016】
実空間1は、ARアプリケーションが利用され得る空間の一例である。実空間1内には、物体12a、12b及び12cが存在する。物体12aは、案内用の看板である。物体12aには、シンボルマーク13aが付されている。物体12bは、情報表示用の掲示板である。物体12cは、広告用のポスターである。端末装置100は、このような実空間1を撮像した画像を入力画像として取得する。そして、端末装置100は、入力画像に映る物体の認識結果に基づいて、ARのための仮想オブジェクトを入力画像に重畳する。仮想オブジェクトを通じてユーザに呈示される情報は、ナビゲーション情報、広告情報、店舗情報、ニュース、天気予報又は列車の運行情報など、任意の情報であってよい。ユーザは、端末装置100の画面上に表示される仮想オブジェクトを操作し、ARアプリケーションをインタラクティブに利用する。
【0017】
図1には示していないが、実空間1には、仮想オブジェクト又は仮想オブジェクトを通じてユーザに呈示すべき情報についてのデータベースを有するデータサーバが設けられてもよい。端末装置100は、例えば無線接続によってデータサーバと通信し、端末装置100の所在位置と関連付けられる最新のデータを当該データサーバからダウンロードしてもよい。
【0018】
<2.一実施形態に係る端末装置の構成例>
[2−1.ハードウェア構成]
図2は、本実施形態に係る端末装置100のハードウェア構成の一例を示すブロック図である。図2を参照すると、端末装置100は、撮像部102、センサ部104、入力部106、記憶部108、表示部112、通信部114、バス118及び制御部120を備える。
【0019】
(撮像部)
撮像部102は、画像を撮像するカメラモジュールである。撮像部102は、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などの撮像素子を用いて実空間を撮像し、撮像画像を生成する。撮像部102は、映像入力のための撮像回路と静止画入力のための撮像回路の双方又はいずれか一方のみを有していてもよい。
【0020】
(センサ部)
センサ部104は、端末装置100の位置及び姿勢の認識を支援し、又は端末装置100への一部のユーザ入力を検出するセンサ群である。例えば、センサ部104は、GPS(Global Positioning System)信号を受信して端末装置100の緯度、経度及び高度を測定するGPSセンサを含んでもよい。また、センサ部104は、無線アクセスポイントから受信される無線信号の強度に基づいて端末装置100の位置を測定する測位センサを含んでもよい。また、センサ部104は、端末装置100の3軸加速度を測定する加速度センサ又は傾き角を測定するジャイロセンサなどのモーションセンサを含んでもよい。
【0021】
(入力部)
入力部106は、ユーザが端末装置100を操作し又は端末装置100へ情報を入力するために使用される入力デバイスである。入力部106は、典型的には、表示部112の画面上へのユーザによるタッチを検出するタッチセンサを含む。その代わりに(又はそれに加えて)、入力部106は、マウス若しくはタッチパッドなどのポインティングデバイス、画像に映るユーザのジェスチャを認識するジェスチャ認識モジュール、又はHMD(Head Mounted Display)を装着したユーザの視線方向を検出する視線検出モジュールを含んでもよい。さらに、入力部106は、キーボード、キーパッド、ボタン又はスイッチなどのその他の種類の入力デバイスを含んでもよい。
【0022】
(記憶部)
記憶部108は、半導体メモリ又はハードディスクなどの記憶媒体により構成され、端末装置100による処理のためのプログラム及びデータを記憶する。記憶部108により記憶されるデータには、例えば、撮像部102により生成される画像データ及びセンサ部104により生成されるセンサデータが含まれ得る。また、記憶部108により記憶されるデータには、例えば、端末装置100による画像認識の際に用いられる特徴量データ及び仮想オブジェクトを定義するオブジェクトデータなども含まれ得る。
【0023】
(表示部)
表示部112は、LCD(Liquid Crystal Display)、OLED(Organic light-Emitting Diode)又はCRT(Cathode Ray Tube)などにより構成される表示モジュールである。表示部112は、例えば、撮像部102により撮像される画像、又は制御部120により実現されるARアプリケーションの画像を画面上に表示する。表示部112は、ユーザにより把持される端末装置100の画面であってもよく、又はユーザにより装着されるシースルー型若しくは非シースルー型のHMDであってもよい。
【0024】
(通信部)
通信部114は、端末装置100による他の装置(例えば、上述したデータサーバ)との間の通信を仲介する通信インタフェースである。通信部114は、任意の無線通信プロトコル又は有線通信プロトコルをサポートし、他の装置との間の通信接続を確立する。
【0025】
(バス)
バス118は、撮像部102、センサ部104、入力部106、記憶部108、表示部112、通信部114及び制御部120を相互に接続する。
【0026】
(制御部)
制御部120は、CPU(Central Processing Unit)又はDSP(Digital Signal Processor)などのプロセッサに相当する。制御部120は、記憶部108又は他の記憶媒体に記憶されるプログラムを実行することにより、後に説明する端末装置100の様々な機能を動作させる。
【0027】
[2−2.機能構成]
図3は、図2に示した端末装置100の記憶部108及び制御部120により実現される論理的機能の構成の一例を示すブロック図である。図3を参照すると、端末装置100は、画像取得部110、フレームメモリ112、画像認識部130、特徴量データベース(DB)132、拘束領域設定部140、検出部150、操作制御部160、データ取得部170、オブジェクトDB172及び表示制御部190を含む。
【0028】
(1)画像取得部
画像取得部110は、実空間を映した画像を入力画像として取得する。本実施形態において、画像取得部110は、リアルタイムモード及びスナップショットモードという2つの入力モードをサポートする。リアルタイムモードでは、画像取得部110は、撮像部102からの映像入力の最新のフレームを入力画像として順次取得する。スナップショットモードでは、画像取得部110は、まず、スナップショットモードの開始時に、撮像部102により撮像されるスナップショットをフレームメモリ112に記憶させる。撮像部102が映像入力のための撮像回路と静止画入力のための撮像回路とを有する場合には、スナップショットは、静止画入力のための撮像回路によって撮像される画像であってもよい。その後、画像取得部110は、フレームメモリ112により記憶されたスナップショットを継続的に入力画像として取得する。リアルタイムモードとスナップショットモードとの間の切り替えは、入力部106を介する所定のユーザ入力によって行われてよい。画像取得部110は、このように取得される入力画像を画像認識部130へ出力する。
【0029】
(2)画像認識部
画像認識部130は、画像取得部110から入力される入力画像にどの物体が映っているかを認識する。また、画像認識部130は、入力画像に映っている物体の実空間内での位置及び姿勢を認識する。より具体的には、例えば、画像認識部130は、入力画像の特徴量を抽出する。そして、画像認識部130は、抽出した特徴量を、特徴量DB132に予め記憶されている既知の様々な物体画像の特徴量と照合することにより、入力画像に映る物体を識別し、当該物体の位置及び姿勢を認識する。画像認識部130が用いる特徴量抽出アルゴリズムは、例えば、“Fast Keypoint Recognition using Random Ferns”(Mustafa Oezuysal,IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.32, Nr.3, pp.448-461, March 2010)に記載されたRandom Ferns法、又は“SURF: Speeded Up Robust Features”(H.Bay, A.Ess, T.Tuytelaars and L.V.Gool, Computer Vision and Image Understanding(CVIU), Vol.110, No.3, pp.346--359, 2008)に記載されたSURF法などであってよい。その代わりに、画像認識部130は、既知の図形若しくは記号(例えば、図1に示した物体12aのシンボルマーク13aのような、案内看板に画一的に付されるマーク)、物体に付される人工マーカ(例えば、バーコード若しくはQRコード)又は自然マーカなどを用いて入力画像に映る物体を識別し、入力画像内での当該物体のサイズ及び形状からその位置及び姿勢を認識してもよい。
【0030】
図4は、画像認識部130による画像認識の結果の一例について説明するための説明図である。図4を参照すると、画像認識部130へ入力される一例としての入力画像Im1が示されている。画像認識部130による画像認識の結果として、入力画像Im1に映る物体12aの位置Xa及び姿勢Wa、物体12bの位置Xb及び姿勢Wb、並びに物体12cの位置Xc及び姿勢Wcが認識されている。各物体の位置Xは、3次元のグローバル座標系(x,y,z)によって、各物体の基準点の位置として与えられ得る。グローバル座標系は、例えば、端末装置100の位置を原点とする相対的な位置座標を表す座標系であってもよい。その代わりに、グローバル座標系は、実空間内に固定的に定義される座標系であってもよい。各物体の姿勢Wは、グローバル座標系を基準とした各物体の回転を表す回転行列又はクォータニオン(四元数)として与えられ得る。なお、本明細書では、説明の簡明さのために各物体の位置X及び姿勢Wを別個の変量として説明する。しかしながら、各物体の位置X及び姿勢Wは、グローバル座標系と各物体のモデル座標系との間の変換を表す4行4列の1つの同次変換行列によって統合的に表現されてもよい。その場合には、各物体の位置X及び姿勢Wは、1つの同次変換行列から必要に応じて抽出され用いられ得る。画像認識部130は、このように認識した入力画像に映る各物体の識別子、位置及び姿勢を、拘束領域設定部140、データ取得部170及び表示制御部190へ出力する。
【0031】
(3)拘束領域設定部
拘束領域設定部140は、画像認識部130により認識される物体の姿勢に基づいて、入力画像に映る実空間内に、ユーザ入力に応じて操作される仮想オブジェクトの動きを拘束する拘束領域を設定する。拘束領域は、線又は面によって表現される高々2次元の領域である。拘束領域設定部140は、典型的には、操作可能な仮想オブジェクトと関連付けられる物体ごとに拘束領域を設定し得る。拘束領域は、例えば、入力画像内で認識される物体の表面に沿って設定されてもよい。この場合、仮想オブジェクトが略平面状のオブジェクトであれば、当該仮想オブジェクトは、関連付けられる物体の表面に沿って配置され、その表面に沿って移動、拡大、縮小又はスクロールし得る。拘束領域は、例えば、入力画像内で認識される物体との間に所定のオフセットを有する位置に設定されてもよい。なお、略平面状のオブジェクトとは、その形状が必ずしも完全な平面状に限定されず、多少の凹凸や厚みの変化などを有する平面状のオブジェクトを含むものとする。
【0032】
図5Aは、本実施形態において拘束領域設定部140により実空間1内に設定される拘束領域の第1の例を示す説明図である。図5Aを参照すると、物体12aと関連付けて設定される一例としての拘束領域14aが示されている。拘束領域14aは、物体12aの表面に沿って設定される平面状の領域である。物体12aと関連付けられる仮想オブジェクトの動きは、このような拘束領域14aにより拘束される(例えば、拘束領域14aから離れて移動しない)。
【0033】
図5Bは、本実施形態において拘束領域設定部140により実空間1内に設定される拘束領域の第2の例を示す説明図である。図5Bを参照すると、物体12bと関連付けて設定される一例としての拘束領域14bが示されている。拘束領域14bは、物体12bの中央を通り、物体12bの上下方向に沿って設定される線状の領域である。物体12bと関連付けられる仮想オブジェクトの動きは、このような拘束領域14bにより拘束される(例えば、拘束領域14bに沿った上下方向にのみスクロール可能である)。
【0034】
図5Cは、本実施形態において拘束領域設定部140により実空間1内に設定される拘束領域の第3の例を示す説明図である。図5Cを参照すると、物体12cと関連付けて設定される一例としての拘束領域14cが示されている。拘束領域14cは、物体12cの表面に沿って設定される曲面状の領域である。このように、拘束領域の形状は、平面状又は直線状に限定されず、曲面状、多面的な形状、曲線状又は折れ線状などであってもよい。
【0035】
(4)検出部
検出部150は、ユーザ入力を検出し、ユーザ入力情報を操作制御部160へ出力する。検出部150により検出されるユーザ入力は、例えば、図2に示した入力部106のタッチセンサへの様々なタッチ入力(例えば、タッチ、タップ、ダブルタップ、ドラッグ、フリック、ピンチイン及びピンチアウトなど)を含み得る。また、検出部150により検出されるユーザ入力は、例えば、図2に示したセンサ部104のセンサ群により測定される端末装置100の動き(例えば、傾き又は揺れなど)をも含み得る。
【0036】
(5)操作制御部
操作制御部160は、端末装置100の画面上に表示される仮想オブジェクトのユーザによる操作を制御する。より具体的には、操作制御部160は、検出部150によりユーザ入力が検出されると、まず、操作対象の仮想オブジェクトを特定する。次に、操作制御部160は、特定した仮想オブジェクトの動きを、ユーザ入力に応じて、当該仮想オブジェクトに対応する物体と関連付けられる拘束領域内で決定する。そして、操作制御部160は、決定した仮想オブジェクトの動きを表示制御部190に通知して、仮想オブジェクトの画面上での配置、サイズ又はスクロール位置などを表示制御部190により変更させる。それにより、仮想オブジェクトの移動、拡大、縮小又はスクロールなどといった動きが可視化される。
【0037】
(5−1)タッチセンサでのユーザ入力
図6及び図7は、操作制御部160により制御される、タッチセンサを介する仮想オブジェクトの操作について説明するための説明図である。図6を参照すると、実空間内に設定される平面状の拘束領域14、及び撮像装置の撮像面103が示されている。拘束領域14の位置X0及び姿勢W0は、拘束領域14と関連付けられる物体の位置及び姿勢と等しくてもよく、又は当該物体の位置及び姿勢との間で所定のオフセットを有していてもよい。タッチセンサへのユーザ入力の入力位置Cinは、撮像面103上のカメラ座標系(u,v,1)により与えられる。操作制御部160は、例えば、以下のようなピンホールモデルに従って、入力位置Cinに対応する拘束領域14内の位置Xinを算出し得る。
【0038】
【数1】
【0039】
式(1)において、C0は拘束領域14の基準位置X0に対応する撮像面上の位置、Aはカメラ内部パラメータ、λは正規化のためのパラメータである。カメラ内部パラメータAは、撮像部102の特性に応じて、予め次式のように与えられる。
【0040】
【数2】
【0041】
ここで、fは焦点距離、θは画像軸の直交性(理想値は90°)、kuは撮像面の縦軸のスケール(実空間の座標系からカメラ座標系へのスケール変化率)、kvは撮像面の横軸のスケール、(uo,vo)は撮像面の中心位置である。
【0042】
例えばドラッグのようなベクトルを指定するユーザ入力については、操作制御部160は、ベクトルの始点及び終点に対応する2つの入力位置Cin1及びCin2に基づいて、次式のように、拘束領域14内の仮想オブジェクトの動きベクトルVinを決定し得る:
【0043】
【数3】
【0044】
式(3)において、Xin1及びXin2は、入力位置Cin1及びCin2にそれぞれ対応する拘束領域内の位置である。なお、拘束領域が曲面状又は多面的な形状である場合にも、操作制御部160は、同様に、ユーザ入力の入力位置を拘束領域に投影することにより、各入力位置に対応する拘束領域内の位置を決定することができる。また、拘束領域が線状である場合には、操作制御部160は、ユーザ入力の入力位置を1次元の当該拘束領域に投影する。
【0045】
上述した式(3)のようにユーザ入力の入力位置を拘束領域に投影して動きベクトルVinを決定する際、拘束領域14と端末装置100との間の距離が大きい場合には、ユーザ入力に対して動きベクトルVinの大きさが過度に大きくなり得る。そこで、操作制御部160は、端末装置100と拘束領域14との間の距離に応じて、画面上の入力ベクトルの大きさに対する動きベクトルVinの大きさの割合を変化させてもよい。それにより、仮想オブジェクトの動きをユーザが微調整することがより容易となる。入力ベクトルの大きさとは例えば画面上でのドラッグ量、動きベクトルVinの大きさとは例えば仮想オブジェクトの動きの量にそれぞれ対応する。
【0046】
例えば、図7の例において、操作制御部160は、入力位置Cin1からCin2へのドラッグが検出された場合に、入力位置Cin1及びCin2にそれぞれ対応する拘束領域14内の位置Xin1及びXin2を算出する。ここで、端末装置100と拘束領域14との間の距離Dは、所定の閾値Thを上回る。そこで、操作制御部160は、位置Xin1からXin2への動きベクトルVinに係数k(k<1)を乗じることにより、仮想オブジェクトの修正後の動きベクトルV´inを算出する。係数kは、例えば、端末装置100と拘束領域14との間の距離が増加するにつれて減少するような係数であってもよい。
【0047】
(5−2)モーションセンサでのユーザ入力
図8〜図11は、操作制御部160により制御される、モーションセンサを介する仮想オブジェクトの操作について説明するための説明図である。
【0048】
図8を参照すると、端末装置100の加速度センサのセンサ座標系(a1,a2,a3)が示されている。一例として、a1軸は端末装置100の画面の水平方向、a2軸は当該画面の垂直方向、a3軸は当該画面の奥行き方向に沿った軸である。ここで、例えばユーザが入力位置Cin3をタッチしながら端末装置100の画面の水平方向の左に向けて端末装置100を振ったものとする。すると、加速度センサからのセンサデータにおいてa1軸成分に大きな値を有する加速度ベクトルAin3が生じる。操作制御部160は、このようなセンサデータが検出部150から入力されると、加速度ベクトルAin3に対応する拘束領域内の動きベクトルを算出する。図9の例では、加速度ベクトルAin3に対応する動きベクトルVin3が、加速度ベクトルAin3を拘束領域14の平面に投影することにより算出される様子が示されている。
【0049】
図10を参照すると、端末装置100のジャイロセンサにより測定される傾き角についてのセンサ座標系(w1,w2,w3)が示されている。ここで、例えばユーザが入力位置Cin4をタッチしながら端末装置100の画面に垂直な軸の周り(w1方向)に端末装置100を傾けたものとする。すると、ジャイロセンサからのセンサデータにおいてw1軸成分の値が増加する。操作制御部160は、このようなセンサデータが検出部150から入力されると、端末装置100に重力Gの水平方向成分Gin4が加わっていることを認識する。そこで、操作制御部160は、重力Gの水平方向成分Gin4に対応する拘束領域内の動きベクトルを算出する。図11の例では、水平方向成分Gin4に対応する動きベクトルVin4が、水平方向成分Gin4を拘束領域14の平面に投影することにより算出される様子が示されている。
【0050】
なお、ここでは主にタッチセンサ又はモーションセンサを介するユーザ入力について説明した。しかしながら、操作制御部160は、例えばユーザの所定のジェスチャなど、上述した例とは異なる種類のユーザ入力に応じて、仮想オブジェクトの操作を制御してもよい。ユーザのジェスチャは、ユーザに向けられる(入力画像を撮像する装置と別の)撮像装置によって撮像される画像から認識されてもよい。その代わりに、ユーザのジェスチャは、例えばHMDを用いる場合のように、ユーザの視線方向に向けられる撮像装置によって撮像される画像から認識されてもよい。
【0051】
(5−3)操作対象の特定
操作制御部160は、操作対象の仮想オブジェクトをユーザ入力の入力位置に応じて決定してもよい。例えば、タッチセンサ上のタッチ又はドラッグの開始により操作対象の仮想オブジェクトが選択される場合には、入力位置とカメラの焦点位置とを結ぶ投影線上に判定域が存在する仮想オブジェクトが、操作対象として決定される。本明細書において、判定域とは、仮想オブジェクトと関連付けられ、ユーザにより指定されることで当該仮想オブジェクトが操作対象であると判定される画面上の領域をいう。投影線上に複数の仮想オブジェクトの判定域が存在する場合には、端末装置100の最も近くに位置する仮想オブジェクトが操作対象とされてよい。仮想オブジェクトの判定域は、必ずしも仮想オブジェクトが表示されている領域と一致していなくてもよい。また、操作制御部160は、判定域によらず、端末装置100の画面上で最も大きく表示されている仮想オブジェクト、端末装置100の最も近くに位置する仮想オブジェクト、又は端末装置100の画面に正対している仮想オブジェクトなどを操作対象として特定してもよい。
【0052】
(5−4)仮想オブジェクトの動きの例
本実施形態において、仮想オブジェクトの動きは、ユーザ入力の種類と、ユーザ入力に応じて決定される拘束領域内の位置又は動きベクトルとに応じて決定され得る。
【0053】
例えば、仮想オブジェクトが所定の情報を表示する略平面状のオブジェクトであるものとする。所定の情報とは、例えば、ナビゲーション情報、広告情報、店舗情報、ニュース、天気予報又は列車の運行情報などであってよい。この場合、操作制御部160は、例えば、上記略平面状の仮想オブジェクトがユーザによりドラッグされると、ドラッグ方向に応じて決定される拘束領域内の動きベクトルの方向に沿って、表示されている情報を3次元空間内でスクロールさせる。スクロール量は、動きベクトルの大きさに相当し得る。また、操作制御部160は、上記略平面状の仮想オブジェクトがユーザによりピンチイン又はピンチアウトされると、ピンチイン又はピンチアウトに対応する拘束領域内の動きベクトルの大きさに応じて、表示されている情報を縮小し又は拡大してもよい。また、操作制御部160は、上記略平面状の仮想オブジェクトが特定されている状態で画面上のいずれかの位置がタップされると、タップ位置に対応する拘束領域内の位置に、当該仮想オブジェクトを移動させてもよい。また、操作制御部160は、上記略平面状の仮想オブジェクトが特定されている状態で端末装置100に加速度が加えられると、発生した加速度ベクトルに対応する拘束領域内の動きベクトルの方向に沿って、表示されている情報を3次元空間内でスクロールさせてもよい。このような仮想オブジェクトの動きのいくつかの例について、後に図面を用いてさらに説明する。
【0054】
なお、上述した例に限定されず、仮想オブジェクトは、例えば立体的なオブジェクト(ナビゲーション用の案内板、広告の対象である商品のポリゴンなど)であってもよい。その場合にも、仮想オブジェクトの配置又はサイズなどが、ユーザ入力の種類と、ユーザ入力に応じて決定される拘束領域内の位置又は動きベクトルとに応じて決定され得る。
【0055】
(6)データ取得部
データ取得部170は、表示制御部190により入力画像に重畳される仮想オブジェクトに関するデータを取得する。データ取得部170により取得されるデータは、仮想オブジェクトを定義するオブジェクトデータを含む。オブジェクトデータは、例えば、仮想オブジェクトの種類、関連付けられる物体の識別子、当該物体からの相対的な表示位置、及びユーザに呈示される情報の内容などを定義し得る。ユーザに呈示される情報の内容は、テキスト形式で与えられてもよく、又はイメージ形式で与えられてもよい。データ取得部170は、オブジェクトDB172により予め記憶されるオブジェクトデータを取得してもよい。その代わりに、データ取得部170は、実空間内に設置されるデータサーバから通信部114を介して最新のオブジェクトデータを取得してもよい。データサーバから提供されるオブジェクトデータは、例えば、センサ部104により測定される端末装置100の位置に応じて異なるデータであってもよい。データ取得部170は、このようなオブジェクトデータを表示制御部190へ出力する。
【0056】
(7)表示制御部
表示制御部190は、入力画像に仮想オブジェクトを重畳することにより出力画像を生成する。より具体的には、例えば、表示制御部190には、画像認識部130により入力画像に映っていると認識された物体と関連付けられている仮想オブジェクトのオブジェクトデータが、データ取得部170から入力される。表示制御部190は、かかるオブジェクトデータに基づいて、仮想オブジェクトのオブジェクト画像を生成する。表示制御部190により生成されるオブジェクト画像は、典型的には、3次元の実空間内に仮想的に配置される仮想オブジェクトを(例えば上述したピンホールモデルに従って)端末装置100の撮像面に投影した画像である。実空間内での仮想オブジェクトの位置及び姿勢は、関連付けられる物体の位置及び姿勢、並びにオブジェクトデータでの定義に従って決定され得る。そして、表示制御部190は、生成した出力画像を表示部112へ出力することにより、ARアプリケーションの画像を表示する。
【0057】
また、表示制御部190は、仮想オブジェクトの状態(位置、姿勢、サイズ又はスクロール位置など)を、操作制御部160により決定される仮想オブジェクトの動きに応じて変更する。表示制御部190は、例えば、リアルタイムモードにおいては、画像取得部110により順次取得される各入力画像に、ユーザ入力に応じて時々刻々と状態が変化する仮想オブジェクトのオブジェクト画像を重畳する。それにより、リアルタイムで更新される出力画像において、仮想オブジェクトの動きが表現される。また、表示制御部190は、スナップショットモードにおいては、画像取得部110によりフレームメモリ112から取得される入力画像のスナップショットを複数のフレーム分複製し、複製されたスナップショットの各々に仮想オブジェクトの動きを表現するオブジェクト画像を重畳する。それにより、静止画のスナップショット上での仮想オブジェクトの動きが表現される。
【0058】
また、表示制御部190は、仮想オブジェクトの拘束領域内での可動方向を表現する補助的なオブジェクトを、入力画像にさらに重畳してもよい。また、表示制御部190は、各仮想オブジェクトの判定域を表現する補助的なオブジェクトを、入力画像にさらに重畳してもよい。表示制御部190により表示される補助的なオブジェクトの例について、後に図面を用いて説明する。
【0059】
<3.処理の流れ>
図12は、本実施形態に係る端末装置100によるオブジェクト制御処理の流れの一例を示すフローチャートである。
【0060】
図12を参照すると、まず、画像取得部100は、撮像部102により撮像され又はフレームメモリ112により記憶されている入力画像を取得する(ステップS102)。次に、画像認識部130は、取得された入力画像に映る物体、並びに当該物体の位置及び姿勢を認識する(ステップS104)。次に、データ取得部170は、認識された物体に関するオブジェクトデータをオブジェクトDB172又は外部のデータサーバから取得する(ステップS106)。
【0061】
次に、操作制御部160は、仮想オブジェクトを操作するためのユーザ入力が検出部150により検出されたか否かを判定する(ステップS108)。ここで、検出部150によりユーザ入力が検出された場合には、処理はステップS110へ進む。一方、ユーザ入力が検出されていない場合には、処理はステップS118へ進む。
【0062】
ユーザ入力が検出された場合には、操作制御部160は、当該ユーザ入力の入力位置、仮想オブジェクトの画面上での大きさ又は仮想オブジェクトと端末装置100との距離などの基準に基づいて、操作対象の仮想オブジェクトを特定する(ステップS110)。次に、操作制御部160は、特定した仮想オブジェクトと関連付けて拘束領域設定部140により設定される拘束領域を認識する(ステップS112)。次に、操作制御部160は、ユーザ入力の入力位置又は入力ベクトルに対応する拘束領域内の3次元的な位置又はベクトルを算出する(ステップS114)。そして、操作制御部160は、算出した拘束領域内の位置又はベクトルとユーザ入力の種類とに基づいて、操作対象の仮想オブジェクトの動きを決定する(ステップS116)。
【0063】
ステップS118では、表示制御部190は、実空間内に仮想的に配置される仮想オブジェクトを撮像面に投影することにより、仮想オブジェクトのオブジェクト画像を生成し、生成したオブジェクト画像を入力画像に重畳する(ステップS118)。ここでの仮想オブジェクトの状態は、当該仮想オブジェクトが操作されていない場合には、初期状態である(初期状態は、オブジェクトデータにより定義され得る)。一方、仮想オブジェクトの状態は、当該仮想オブジェクトが操作されている場合には、操作制御部160により決定される動きに従って変更された状態である。次に、表示制御部190は、各仮想オブジェクトの拘束領域内での可動方向を表現する補助的なオブジェクトを、入力画像にさらに重畳する(ステップS120)。そして、仮想オブジェクト及び補助的なオブジェクトが重畳された出力画像が、画面上に表示される(ステップS122)。
【0064】
図12に示したオブジェクト制御処理は、リアルタイムモードにおいては、撮像部102により撮像される各フレームについて繰り返され得る。また、スナップショットモードにおいては、上記オブジェクト制御処理は、画像取得部110によりフレームメモリ112から取得されるスナップショットを入力画像として用いて行われ得る。スナップショットモードでは、1回(あるいは1ストローク)のユーザ入力についてステップS118〜S122の処理が複数回繰り返して行われることにより、仮想オブジェクトの動きがアニメーションとして表現され得る。
【0065】
図13は、図12のステップS102における画像取得処理の詳細な流れの一例を示すフローチャートである。
【0066】
図13を参照すると、画像取得部110は、まず、現在のモードがスナップショットモードかリアルタイムモードかを判定する(ステップS132)。ここで、現在のモードがリアルタイムモードである場合には、画像取得部110は、撮像部102から最新の入力画像を取得する(ステップS134)。一方、現在のモードがスナップショットモードである場合には、画像取得部110は、スナップショットを新たに取得すべきか否かを判定する(ステップS136)。例えば、スナップショットモードが新たに開始される場合、又はスナップショットのリフレッシュがユーザにより指示された場合には、画像取得部110は、スナップショットを新たに取得すべきであると判定する。ここで、スナップショットを新たに取得すべきであると判定された場合には、画像取得部110は、撮像部102から最新の入力画像を取得し(ステップS138)、取得した入力画像をスナップショットとしてフレームメモリ112に記憶させる(ステップS140)。一方、スナップショットを新たに取得しなくてよいと判定された場合には、画像取得部110は、フレームメモリ112に記憶されているスナップショットを入力画像として取得する(ステップS142)。
【0067】
<4.操作シナリオ>
次に、上述した端末装置100を用いて実現され得る仮想オブジェクトの操作の例示的な3つのシナリオについて説明する。
【0068】
[4−1.第1のシナリオ]
図14A及び図14Bは、仮想オブジェクトの操作の第1のシナリオについて説明するための説明図である。
【0069】
図14Aを参照すると、実空間に存在する物体12dが映っている画像が、端末装置100の画面に表示されている。物体12dは、駅に設置される案内用の看板である。端末装置100のデータ取得部170は、入力画像に物体12dが映っていることが画像認識部130により認識されると、物体12dと関連付けられている仮想オブジェクト16dのオブジェクトデータを取得する。仮想オブジェクト16dは、例えば、駅の見取り図、出口案内、及び時刻表などを表示する略平面状のオブジェクトである。図14Aの例では、仮想オブジェクト16dの一部のみが物体12dに重畳されている。仮想オブジェクト16dの拘束領域は、例えば、物体12dの表面に沿った領域である。拘束領域設定部140は、物体12dの位置及び姿勢に基づいて、仮想オブジェクト16dの拘束領域を設定する。そして、例えば、ユーザが端末装置100の画面上で物体12dを左上方向(図中の矢印参照)に向けてドラッグしたものとする。
【0070】
図14Bを参照すると、上述したドラッグの結果、仮想オブジェクト16dが左奥の方向へスクロールしている。そして、ドラッグの前には表示されていなかった仮想オブジェクト16dの時刻表の部分が、物体12dに重畳されている。
【0071】
[4−2.第2のシナリオ]
図15A及び図15Bは、仮想オブジェクトの操作の第2のシナリオについて説明するための説明図である。
【0072】
図15Aを参照すると、実空間に存在する物体12eが映っている画像が、端末装置100の画面に表示されている。物体12eは、地図が描かれた案内板である。端末装置100のデータ取得部170は、入力画像に物体12eが映っていることが画像認識部130により認識されると、物体12eと関連付けられている仮想オブジェクト16eのオブジェクトデータを取得する。仮想オブジェクト16eは、例えば、地図情報を表示する略平面状のオブジェクトである。地図情報の初期の表示内容は、物体12eに実際に描かれている地図と同様の内容であってよい。仮想オブジェクト16eの拘束領域は、例えば、物体12eの表面に沿った領域である。拘束領域設定部140は、物体12eの位置及び姿勢に基づいて、仮想オブジェクト16eの拘束領域を設定する。そして、例えば、ユーザが端末装置100の画面上の地図部分でピンチアウトを行ったものとする。
【0073】
図15Bを参照すると、上述したピンチアウトの結果、仮想オブジェクト16eにより表示されている地図が拡大している。但し、当該地図は、単純に画面内で拡大されているのではなく、物体12eの姿勢に応じて物体12eの表面に沿った平面内で拡大されている。
【0074】
なお、操作制御部160は、例えば、地図部分においてピンチイン又はピンチアウトが行われた場合には拘束領域内で地図を縮小又は拡大させ、地図部分以外の部分においてピンチイン又はピンチアウトが行われた場合には画像全体を撮像面と平行に縮小又は拡大させてもよい。
【0075】
[4−3.第3のシナリオ]
図16Aを参照すると、図14Bの例と同様、端末装置100の画面に表示された物体12d及び仮想オブジェクト16dが再び示されている。ここで、例えば、ユーザが端末装置100の本体を右へ傾けたものとする。
【0076】
図16Bを参照すると、端末装置100が傾けられた結果、仮想オブジェクト16dが右手前の方向へスクロールしている。そして、図16Bの例において物体12dに重畳されていた仮想オブジェクト16dの時刻表の部分が画面外へ消え、仮想オブジェクト16dの出口案内の部分が物体12dに重畳されている。
【0077】
これらシナリオの例のように、本実施形態では、仮想オブジェクトは、ユーザ入力に応じて単純に画面内で上下左右に動くのではなく、関連付けられている物体の姿勢に応じてあたかも3次元の実空間内で動くかのように操作され得る。それにより、ユーザがまさに拡張された実空間内にいるという感覚、即ちAR空間へのユーザの没入感を損なうことなく、ARの仮想オブジェクトをユーザに操作させることができる。
【0078】
なお、ここでは、入力画像に映る物体の表面に仮想オブジェクトが重畳される例について主に説明したが、仮想オブジェクトは、物体の表面から離れた位置に重畳されてもよい。また、表示制御部190は、入力画像のテクスチャなどに基づいて仮想オブジェクトを重畳すべき面を認識してもよい。例えば、建物の壁面、通路の床面など、入力画像内で一様なテクスチャを有する平面が、仮想オブジェクトを重畳すべき面として認識されてもよい。
【0079】
[4−4.補助的なオブジェクトの表示]
図17は、仮想オブジェクトの可動方向を表現する補助オブジェクトについて説明するための説明図である。
【0080】
図17を参照すると、端末装置100の画面上に3つの物体12a、12b及び12cが表示されている。物体12aには、仮想オブジェクト16aが重畳されている。仮想オブジェクト16aの左端には、仮想オブジェクト16aが左手前方向へスクロール可能であることを表現する補助オブジェクト17a(シャドウグラデーション)が表示されている。また、物体12bには、仮想オブジェクト16bが重畳されている。仮想オブジェクト16bの下方には、仮想オブジェクト16bが下方向へスクロール可能であることを表現する補助オブジェクト17b(矢印)が表示されている。物体12cには、仮想オブジェクト16cが重畳されている。仮想オブジェクト16cの四隅には、仮想オブジェクト16cが物体12cの表面に沿って拡大可能であることを表現する補助オブジェクト17c(三角形のツメ)が表示されている。
【0081】
このように、仮想オブジェクトの可動方向を表現する補助オブジェクトを仮想オブジェクトと関連付けて表示することで、仮想オブジェクトをどのように操作し得るかをユーザに容易に把握させることができる。
【0082】
また、図17の例において、仮想オブジェクト16aは、端末装置100の最も近くに位置する仮想オブジェクトである。仮想オブジェクト16aには、太線枠である補助オブジェクト18aが重畳されている。補助オブジェクト18aは、いわゆるフォーカスを表現するオブジェクトである。複数の仮想オブジェクト16aのいずれも特にユーザに指定されることなく何らかのユーザ入力が行われた場合には、このようにフォーカスが当てられている仮想オブジェクトが操作制御部160により操作対象として特定され得る。
【0083】
<5.まとめ>
ここまで、図1〜図17を用いて、一実施形態に係る端末装置100について詳細に説明した。本実施形態によれば、ユーザ入力に応じて操作されるARの仮想オブジェクトの動きが、入力画像内で認識される物体の姿勢に基づいて実空間内に設定される拘束領域内で決定される。従って、仮想オブジェクトは、実世界の状況と無関係に操作されるのではなく、実世界に存在する物体の姿勢に即して3次元的に動くかのように操作され得る。それにより、仮想オブジェクトの操作に際して、AR空間へのユーザの没入感を損なうことなく、自然な操作及び表示を実現することができる。
【0084】
また、本実施形態によれば、上記拘束領域は、入力画像内で認識される物体の表面に沿って設定され得る。そして、仮想オブジェクトは、所定の情報を表示する略平面状のオブジェクトであって、上記物体の表面に沿って移動、拡大、縮小又はスクロールされ得る。従って、ユーザは、あたかも実世界の物体上に表された情報を直接操作するかのような現実感を持ちながら、より豊富に与えられる情報を自在に閲覧することができる。
【0085】
なお、本明細書において説明した端末装置100による処理は、ソフトウェア、ハードウェア、及びソフトウェアとハードウェアとの組合せのいずれを用いて実現されてもよい。ソフトウェアを構成するプログラムは、例えば、各装置の内部又は外部に設けられる記憶媒体に予め格納される。そして、各プログラムは、例えば、実行時にRAM(Random Access Memory)に読み込まれ、CPU(Central Processing Unit)などのプロセッサにより実行される。
【0086】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本技術はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【0087】
なお、本技術は以下のような構成も取ることができる。
(1)
実空間を映した入力画像を取得する画像取得部と、
前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
を備える端末装置。
(2)
前記領域は、前記入力画像内で認識される前記物体の表面に沿って設定される、前記(1)に記載の端末装置。
(3)
前記仮想オブジェクトは、所定の情報を表示する略平面状のオブジェクトであり、
前記仮想オブジェクトの動きは、前記仮想オブジェクトの移動、拡大、縮小又はスクロールである、
前記(2)に記載の端末装置。
(4)
前記検出部は、前記仮想オブジェクトが表示される画面へのユーザ入力を検出し、
前記操作制御部は、前記画面上の入力位置に対応する前記領域内の位置を算出し、算出した当該位置から前記仮想オブジェクトの動きを決定する、
前記(2)又は(3)に記載の端末装置。
(5)
前記検出部は、前記画面上でのドラッグをユーザ入力として検出し、
前記操作制御部は、前記端末装置と前記領域との間の距離に応じて、前記画面上でのドラッグ量に対する前記仮想オブジェクトの動きの量の割合を変化させる、
前記(4)に記載の端末装置。
(6)
前記検出部は、前記端末装置の動きをセンサを用いてユーザ入力として検出し、
前記操作制御部は、前記端末装置の動きを表す第1のベクトルに対応する前記領域内の第2のベクトルを算出し、算出した当該第2のベクトルから前記仮想オブジェクトの動きを決定する、
前記(2)又は(3)に記載の端末装置。
(7)
前記表示制御部は、前記仮想オブジェクトの前記領域内での可動方向を表現する補助的なオブジェクトを、前記入力画像にさらに重畳する、前記(1)〜(6)のいずれか1項に記載の端末装置。
(8)
前記画像取得部は、所定のユーザ入力が検出された場合に、撮像装置により撮像されるスナップショットを入力画像として取得し、
前記表示制御部は、前記仮想オブジェクトの動きを前記スナップショット上で表現するする、
前記(1)〜(7)のいずれか1項に記載の端末装置。
(9)
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置におけるオブジェクト制御方法であって、
ユーザ入力を検出するステップと、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定するステップと、
を含む、オブジェクト制御方法。
(10)
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置を制御するコンピュータを、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
として機能させるためのプログラム。
【符号の説明】
【0088】
100 端末装置
110 画像取得部
150 検出部
160 操作制御部
190 表示制御部
【技術分野】
【0001】
本発明は、端末装置、オブジェクト制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、実世界に付加的な情報を重畳してユーザに呈示する拡張現実(AR:Augmented Reality)と呼ばれる技術が注目されている。AR技術においてユーザに呈示される情報は、アノテーションとも呼ばれ、テキスト、アイコン又はアニメーションなどの様々な形態の仮想的なオブジェクトを用いて可視化され得る。
【0003】
AR技術は、ユーザとのインタラクションを伴うアプリケーションにおいても活用され得る。例えば、広告又はナビゲーションなど、情報提供を目的とするアプリケーションでは、ARの仮想オブジェクトをユーザに操作させることで、ユーザのニーズに見合う情報を効果的にユーザに提供することができる。ARの仮想オブジェクトの操作に関する文献としては、例えば下記特許文献1が存在する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−238098号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記特許文献1に記載された技術では、ユーザにより操作される仮想オブジェクトの動きが、実世界の状況とは無関係に決定される。そのため、AR技術の利点の1つである空間へのユーザの没入感が損なわれやすい。
【0006】
従って、ARの仮想オブジェクトの操作をAR空間へのユーザの没入感を損なうことなく実現できる仕組みが提供されることが望ましい。
【課題を解決するための手段】
【0007】
本開示によれば、実空間を映した入力画像を取得する画像取得部と、前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、ユーザ入力を検出する検出部と、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、を備える端末装置が提供される。
【0008】
また、本開示によれば、実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置におけるオブジェクト制御方法であって、ユーザ入力を検出するステップと、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定するステップと、を含む、オブジェクト制御方法が提供される。
【0009】
また、本開示によれば、実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置を制御するコンピュータを、ユーザ入力を検出する検出部と、前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、として機能させるためのプログラムが提供される。
【発明の効果】
【0010】
以上説明したように、本開示によれば、ARの仮想オブジェクトの操作をAR空間へのユーザの没入感を損なうことなく実現することができる。
【図面の簡単な説明】
【0011】
【図1】一実施形態に係る端末装置の概要について説明するための説明図である。
【図2】一実施形態に係る端末装置のハードウェア構成の一例を示すブロック図である。
【図3】一実施形態に係る端末装置の論理的機能の構成の一例を示すブロック図である。
【図4】画像認識の結果の一例について説明するための説明図である。
【図5A】一実施形態において設定される拘束領域の第1の例を示す説明図である。
【図5B】一実施形態において設定される拘束領域の第2の例を示す説明図である。
【図5C】一実施形態において設定される拘束領域の第3の例を示す説明図である。
【図6】タッチセンサを介する仮想オブジェクトの操作について説明するための第1の説明図である。
【図7】タッチセンサを介する仮想オブジェクトの操作について説明するための第2の説明図である。
【図8】モーションセンサを介する仮想オブジェクトの操作について説明するための第1の説明図である。
【図9】モーションセンサを介する仮想オブジェクトの操作について説明するための第2の説明図である。
【図10】モーションセンサを介する仮想オブジェクトの操作について説明するための第3の説明図である。
【図11】モーションセンサを介する仮想オブジェクトの操作について説明するための第4の説明図である。
【図12】一実施形態に係るオブジェクト制御処理の流れの一例を示すフローチャートである。
【図13】一実施形態に係る画像取得処理の詳細な流れの一例を示すフローチャートである。
【図14A】仮想オブジェクトの操作の第1のシナリオについて説明するための第1の説明図である。
【図14B】仮想オブジェクトの操作の第1のシナリオについて説明するための第2の説明図である。
【図15A】仮想オブジェクトの操作の第2のシナリオについて説明するための第1の説明図である。
【図15B】仮想オブジェクトの操作の第2のシナリオについて説明するための第2の説明図である。
【図16A】仮想オブジェクトの操作の第3のシナリオについて説明するための第1の説明図である。
【図16B】仮想オブジェクトの操作の第3のシナリオについて説明するための第2の説明図である。
【図17】仮想オブジェクトの可動方向を表現する補助オブジェクトについて説明するための説明図である。
【発明を実施するための形態】
【0012】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0013】
また、以下の順序で説明を行う。
1.概要
2.一実施形態に係る端末装置の構成例
2−1.ハードウェア構成
2−2.機能構成
3.処理の流れ
4.操作シナリオ
4−1.第1のシナリオ
4−2.第2のシナリオ
4−3.第3のシナリオ
4−4.補助的なオブジェクトの表示
5.まとめ
【0014】
<1.概要>
図1は、本明細書で開示する技術の一実施形態の概要について説明するための説明図である。図1を参照すると、実空間1内でユーザにより携帯されている端末装置100が示されている。
【0015】
端末装置100は、ユーザとのインタラクションを伴うARアプリケーションをユーザに提供する装置である。端末装置100は、例えば、スマートフォン、PC(Personal Computer)、PDA(Personal Digital Assistant)、ゲーム端末又は携帯用音楽プレーヤなどであってよい。
【0016】
実空間1は、ARアプリケーションが利用され得る空間の一例である。実空間1内には、物体12a、12b及び12cが存在する。物体12aは、案内用の看板である。物体12aには、シンボルマーク13aが付されている。物体12bは、情報表示用の掲示板である。物体12cは、広告用のポスターである。端末装置100は、このような実空間1を撮像した画像を入力画像として取得する。そして、端末装置100は、入力画像に映る物体の認識結果に基づいて、ARのための仮想オブジェクトを入力画像に重畳する。仮想オブジェクトを通じてユーザに呈示される情報は、ナビゲーション情報、広告情報、店舗情報、ニュース、天気予報又は列車の運行情報など、任意の情報であってよい。ユーザは、端末装置100の画面上に表示される仮想オブジェクトを操作し、ARアプリケーションをインタラクティブに利用する。
【0017】
図1には示していないが、実空間1には、仮想オブジェクト又は仮想オブジェクトを通じてユーザに呈示すべき情報についてのデータベースを有するデータサーバが設けられてもよい。端末装置100は、例えば無線接続によってデータサーバと通信し、端末装置100の所在位置と関連付けられる最新のデータを当該データサーバからダウンロードしてもよい。
【0018】
<2.一実施形態に係る端末装置の構成例>
[2−1.ハードウェア構成]
図2は、本実施形態に係る端末装置100のハードウェア構成の一例を示すブロック図である。図2を参照すると、端末装置100は、撮像部102、センサ部104、入力部106、記憶部108、表示部112、通信部114、バス118及び制御部120を備える。
【0019】
(撮像部)
撮像部102は、画像を撮像するカメラモジュールである。撮像部102は、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などの撮像素子を用いて実空間を撮像し、撮像画像を生成する。撮像部102は、映像入力のための撮像回路と静止画入力のための撮像回路の双方又はいずれか一方のみを有していてもよい。
【0020】
(センサ部)
センサ部104は、端末装置100の位置及び姿勢の認識を支援し、又は端末装置100への一部のユーザ入力を検出するセンサ群である。例えば、センサ部104は、GPS(Global Positioning System)信号を受信して端末装置100の緯度、経度及び高度を測定するGPSセンサを含んでもよい。また、センサ部104は、無線アクセスポイントから受信される無線信号の強度に基づいて端末装置100の位置を測定する測位センサを含んでもよい。また、センサ部104は、端末装置100の3軸加速度を測定する加速度センサ又は傾き角を測定するジャイロセンサなどのモーションセンサを含んでもよい。
【0021】
(入力部)
入力部106は、ユーザが端末装置100を操作し又は端末装置100へ情報を入力するために使用される入力デバイスである。入力部106は、典型的には、表示部112の画面上へのユーザによるタッチを検出するタッチセンサを含む。その代わりに(又はそれに加えて)、入力部106は、マウス若しくはタッチパッドなどのポインティングデバイス、画像に映るユーザのジェスチャを認識するジェスチャ認識モジュール、又はHMD(Head Mounted Display)を装着したユーザの視線方向を検出する視線検出モジュールを含んでもよい。さらに、入力部106は、キーボード、キーパッド、ボタン又はスイッチなどのその他の種類の入力デバイスを含んでもよい。
【0022】
(記憶部)
記憶部108は、半導体メモリ又はハードディスクなどの記憶媒体により構成され、端末装置100による処理のためのプログラム及びデータを記憶する。記憶部108により記憶されるデータには、例えば、撮像部102により生成される画像データ及びセンサ部104により生成されるセンサデータが含まれ得る。また、記憶部108により記憶されるデータには、例えば、端末装置100による画像認識の際に用いられる特徴量データ及び仮想オブジェクトを定義するオブジェクトデータなども含まれ得る。
【0023】
(表示部)
表示部112は、LCD(Liquid Crystal Display)、OLED(Organic light-Emitting Diode)又はCRT(Cathode Ray Tube)などにより構成される表示モジュールである。表示部112は、例えば、撮像部102により撮像される画像、又は制御部120により実現されるARアプリケーションの画像を画面上に表示する。表示部112は、ユーザにより把持される端末装置100の画面であってもよく、又はユーザにより装着されるシースルー型若しくは非シースルー型のHMDであってもよい。
【0024】
(通信部)
通信部114は、端末装置100による他の装置(例えば、上述したデータサーバ)との間の通信を仲介する通信インタフェースである。通信部114は、任意の無線通信プロトコル又は有線通信プロトコルをサポートし、他の装置との間の通信接続を確立する。
【0025】
(バス)
バス118は、撮像部102、センサ部104、入力部106、記憶部108、表示部112、通信部114及び制御部120を相互に接続する。
【0026】
(制御部)
制御部120は、CPU(Central Processing Unit)又はDSP(Digital Signal Processor)などのプロセッサに相当する。制御部120は、記憶部108又は他の記憶媒体に記憶されるプログラムを実行することにより、後に説明する端末装置100の様々な機能を動作させる。
【0027】
[2−2.機能構成]
図3は、図2に示した端末装置100の記憶部108及び制御部120により実現される論理的機能の構成の一例を示すブロック図である。図3を参照すると、端末装置100は、画像取得部110、フレームメモリ112、画像認識部130、特徴量データベース(DB)132、拘束領域設定部140、検出部150、操作制御部160、データ取得部170、オブジェクトDB172及び表示制御部190を含む。
【0028】
(1)画像取得部
画像取得部110は、実空間を映した画像を入力画像として取得する。本実施形態において、画像取得部110は、リアルタイムモード及びスナップショットモードという2つの入力モードをサポートする。リアルタイムモードでは、画像取得部110は、撮像部102からの映像入力の最新のフレームを入力画像として順次取得する。スナップショットモードでは、画像取得部110は、まず、スナップショットモードの開始時に、撮像部102により撮像されるスナップショットをフレームメモリ112に記憶させる。撮像部102が映像入力のための撮像回路と静止画入力のための撮像回路とを有する場合には、スナップショットは、静止画入力のための撮像回路によって撮像される画像であってもよい。その後、画像取得部110は、フレームメモリ112により記憶されたスナップショットを継続的に入力画像として取得する。リアルタイムモードとスナップショットモードとの間の切り替えは、入力部106を介する所定のユーザ入力によって行われてよい。画像取得部110は、このように取得される入力画像を画像認識部130へ出力する。
【0029】
(2)画像認識部
画像認識部130は、画像取得部110から入力される入力画像にどの物体が映っているかを認識する。また、画像認識部130は、入力画像に映っている物体の実空間内での位置及び姿勢を認識する。より具体的には、例えば、画像認識部130は、入力画像の特徴量を抽出する。そして、画像認識部130は、抽出した特徴量を、特徴量DB132に予め記憶されている既知の様々な物体画像の特徴量と照合することにより、入力画像に映る物体を識別し、当該物体の位置及び姿勢を認識する。画像認識部130が用いる特徴量抽出アルゴリズムは、例えば、“Fast Keypoint Recognition using Random Ferns”(Mustafa Oezuysal,IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.32, Nr.3, pp.448-461, March 2010)に記載されたRandom Ferns法、又は“SURF: Speeded Up Robust Features”(H.Bay, A.Ess, T.Tuytelaars and L.V.Gool, Computer Vision and Image Understanding(CVIU), Vol.110, No.3, pp.346--359, 2008)に記載されたSURF法などであってよい。その代わりに、画像認識部130は、既知の図形若しくは記号(例えば、図1に示した物体12aのシンボルマーク13aのような、案内看板に画一的に付されるマーク)、物体に付される人工マーカ(例えば、バーコード若しくはQRコード)又は自然マーカなどを用いて入力画像に映る物体を識別し、入力画像内での当該物体のサイズ及び形状からその位置及び姿勢を認識してもよい。
【0030】
図4は、画像認識部130による画像認識の結果の一例について説明するための説明図である。図4を参照すると、画像認識部130へ入力される一例としての入力画像Im1が示されている。画像認識部130による画像認識の結果として、入力画像Im1に映る物体12aの位置Xa及び姿勢Wa、物体12bの位置Xb及び姿勢Wb、並びに物体12cの位置Xc及び姿勢Wcが認識されている。各物体の位置Xは、3次元のグローバル座標系(x,y,z)によって、各物体の基準点の位置として与えられ得る。グローバル座標系は、例えば、端末装置100の位置を原点とする相対的な位置座標を表す座標系であってもよい。その代わりに、グローバル座標系は、実空間内に固定的に定義される座標系であってもよい。各物体の姿勢Wは、グローバル座標系を基準とした各物体の回転を表す回転行列又はクォータニオン(四元数)として与えられ得る。なお、本明細書では、説明の簡明さのために各物体の位置X及び姿勢Wを別個の変量として説明する。しかしながら、各物体の位置X及び姿勢Wは、グローバル座標系と各物体のモデル座標系との間の変換を表す4行4列の1つの同次変換行列によって統合的に表現されてもよい。その場合には、各物体の位置X及び姿勢Wは、1つの同次変換行列から必要に応じて抽出され用いられ得る。画像認識部130は、このように認識した入力画像に映る各物体の識別子、位置及び姿勢を、拘束領域設定部140、データ取得部170及び表示制御部190へ出力する。
【0031】
(3)拘束領域設定部
拘束領域設定部140は、画像認識部130により認識される物体の姿勢に基づいて、入力画像に映る実空間内に、ユーザ入力に応じて操作される仮想オブジェクトの動きを拘束する拘束領域を設定する。拘束領域は、線又は面によって表現される高々2次元の領域である。拘束領域設定部140は、典型的には、操作可能な仮想オブジェクトと関連付けられる物体ごとに拘束領域を設定し得る。拘束領域は、例えば、入力画像内で認識される物体の表面に沿って設定されてもよい。この場合、仮想オブジェクトが略平面状のオブジェクトであれば、当該仮想オブジェクトは、関連付けられる物体の表面に沿って配置され、その表面に沿って移動、拡大、縮小又はスクロールし得る。拘束領域は、例えば、入力画像内で認識される物体との間に所定のオフセットを有する位置に設定されてもよい。なお、略平面状のオブジェクトとは、その形状が必ずしも完全な平面状に限定されず、多少の凹凸や厚みの変化などを有する平面状のオブジェクトを含むものとする。
【0032】
図5Aは、本実施形態において拘束領域設定部140により実空間1内に設定される拘束領域の第1の例を示す説明図である。図5Aを参照すると、物体12aと関連付けて設定される一例としての拘束領域14aが示されている。拘束領域14aは、物体12aの表面に沿って設定される平面状の領域である。物体12aと関連付けられる仮想オブジェクトの動きは、このような拘束領域14aにより拘束される(例えば、拘束領域14aから離れて移動しない)。
【0033】
図5Bは、本実施形態において拘束領域設定部140により実空間1内に設定される拘束領域の第2の例を示す説明図である。図5Bを参照すると、物体12bと関連付けて設定される一例としての拘束領域14bが示されている。拘束領域14bは、物体12bの中央を通り、物体12bの上下方向に沿って設定される線状の領域である。物体12bと関連付けられる仮想オブジェクトの動きは、このような拘束領域14bにより拘束される(例えば、拘束領域14bに沿った上下方向にのみスクロール可能である)。
【0034】
図5Cは、本実施形態において拘束領域設定部140により実空間1内に設定される拘束領域の第3の例を示す説明図である。図5Cを参照すると、物体12cと関連付けて設定される一例としての拘束領域14cが示されている。拘束領域14cは、物体12cの表面に沿って設定される曲面状の領域である。このように、拘束領域の形状は、平面状又は直線状に限定されず、曲面状、多面的な形状、曲線状又は折れ線状などであってもよい。
【0035】
(4)検出部
検出部150は、ユーザ入力を検出し、ユーザ入力情報を操作制御部160へ出力する。検出部150により検出されるユーザ入力は、例えば、図2に示した入力部106のタッチセンサへの様々なタッチ入力(例えば、タッチ、タップ、ダブルタップ、ドラッグ、フリック、ピンチイン及びピンチアウトなど)を含み得る。また、検出部150により検出されるユーザ入力は、例えば、図2に示したセンサ部104のセンサ群により測定される端末装置100の動き(例えば、傾き又は揺れなど)をも含み得る。
【0036】
(5)操作制御部
操作制御部160は、端末装置100の画面上に表示される仮想オブジェクトのユーザによる操作を制御する。より具体的には、操作制御部160は、検出部150によりユーザ入力が検出されると、まず、操作対象の仮想オブジェクトを特定する。次に、操作制御部160は、特定した仮想オブジェクトの動きを、ユーザ入力に応じて、当該仮想オブジェクトに対応する物体と関連付けられる拘束領域内で決定する。そして、操作制御部160は、決定した仮想オブジェクトの動きを表示制御部190に通知して、仮想オブジェクトの画面上での配置、サイズ又はスクロール位置などを表示制御部190により変更させる。それにより、仮想オブジェクトの移動、拡大、縮小又はスクロールなどといった動きが可視化される。
【0037】
(5−1)タッチセンサでのユーザ入力
図6及び図7は、操作制御部160により制御される、タッチセンサを介する仮想オブジェクトの操作について説明するための説明図である。図6を参照すると、実空間内に設定される平面状の拘束領域14、及び撮像装置の撮像面103が示されている。拘束領域14の位置X0及び姿勢W0は、拘束領域14と関連付けられる物体の位置及び姿勢と等しくてもよく、又は当該物体の位置及び姿勢との間で所定のオフセットを有していてもよい。タッチセンサへのユーザ入力の入力位置Cinは、撮像面103上のカメラ座標系(u,v,1)により与えられる。操作制御部160は、例えば、以下のようなピンホールモデルに従って、入力位置Cinに対応する拘束領域14内の位置Xinを算出し得る。
【0038】
【数1】
【0039】
式(1)において、C0は拘束領域14の基準位置X0に対応する撮像面上の位置、Aはカメラ内部パラメータ、λは正規化のためのパラメータである。カメラ内部パラメータAは、撮像部102の特性に応じて、予め次式のように与えられる。
【0040】
【数2】
【0041】
ここで、fは焦点距離、θは画像軸の直交性(理想値は90°)、kuは撮像面の縦軸のスケール(実空間の座標系からカメラ座標系へのスケール変化率)、kvは撮像面の横軸のスケール、(uo,vo)は撮像面の中心位置である。
【0042】
例えばドラッグのようなベクトルを指定するユーザ入力については、操作制御部160は、ベクトルの始点及び終点に対応する2つの入力位置Cin1及びCin2に基づいて、次式のように、拘束領域14内の仮想オブジェクトの動きベクトルVinを決定し得る:
【0043】
【数3】
【0044】
式(3)において、Xin1及びXin2は、入力位置Cin1及びCin2にそれぞれ対応する拘束領域内の位置である。なお、拘束領域が曲面状又は多面的な形状である場合にも、操作制御部160は、同様に、ユーザ入力の入力位置を拘束領域に投影することにより、各入力位置に対応する拘束領域内の位置を決定することができる。また、拘束領域が線状である場合には、操作制御部160は、ユーザ入力の入力位置を1次元の当該拘束領域に投影する。
【0045】
上述した式(3)のようにユーザ入力の入力位置を拘束領域に投影して動きベクトルVinを決定する際、拘束領域14と端末装置100との間の距離が大きい場合には、ユーザ入力に対して動きベクトルVinの大きさが過度に大きくなり得る。そこで、操作制御部160は、端末装置100と拘束領域14との間の距離に応じて、画面上の入力ベクトルの大きさに対する動きベクトルVinの大きさの割合を変化させてもよい。それにより、仮想オブジェクトの動きをユーザが微調整することがより容易となる。入力ベクトルの大きさとは例えば画面上でのドラッグ量、動きベクトルVinの大きさとは例えば仮想オブジェクトの動きの量にそれぞれ対応する。
【0046】
例えば、図7の例において、操作制御部160は、入力位置Cin1からCin2へのドラッグが検出された場合に、入力位置Cin1及びCin2にそれぞれ対応する拘束領域14内の位置Xin1及びXin2を算出する。ここで、端末装置100と拘束領域14との間の距離Dは、所定の閾値Thを上回る。そこで、操作制御部160は、位置Xin1からXin2への動きベクトルVinに係数k(k<1)を乗じることにより、仮想オブジェクトの修正後の動きベクトルV´inを算出する。係数kは、例えば、端末装置100と拘束領域14との間の距離が増加するにつれて減少するような係数であってもよい。
【0047】
(5−2)モーションセンサでのユーザ入力
図8〜図11は、操作制御部160により制御される、モーションセンサを介する仮想オブジェクトの操作について説明するための説明図である。
【0048】
図8を参照すると、端末装置100の加速度センサのセンサ座標系(a1,a2,a3)が示されている。一例として、a1軸は端末装置100の画面の水平方向、a2軸は当該画面の垂直方向、a3軸は当該画面の奥行き方向に沿った軸である。ここで、例えばユーザが入力位置Cin3をタッチしながら端末装置100の画面の水平方向の左に向けて端末装置100を振ったものとする。すると、加速度センサからのセンサデータにおいてa1軸成分に大きな値を有する加速度ベクトルAin3が生じる。操作制御部160は、このようなセンサデータが検出部150から入力されると、加速度ベクトルAin3に対応する拘束領域内の動きベクトルを算出する。図9の例では、加速度ベクトルAin3に対応する動きベクトルVin3が、加速度ベクトルAin3を拘束領域14の平面に投影することにより算出される様子が示されている。
【0049】
図10を参照すると、端末装置100のジャイロセンサにより測定される傾き角についてのセンサ座標系(w1,w2,w3)が示されている。ここで、例えばユーザが入力位置Cin4をタッチしながら端末装置100の画面に垂直な軸の周り(w1方向)に端末装置100を傾けたものとする。すると、ジャイロセンサからのセンサデータにおいてw1軸成分の値が増加する。操作制御部160は、このようなセンサデータが検出部150から入力されると、端末装置100に重力Gの水平方向成分Gin4が加わっていることを認識する。そこで、操作制御部160は、重力Gの水平方向成分Gin4に対応する拘束領域内の動きベクトルを算出する。図11の例では、水平方向成分Gin4に対応する動きベクトルVin4が、水平方向成分Gin4を拘束領域14の平面に投影することにより算出される様子が示されている。
【0050】
なお、ここでは主にタッチセンサ又はモーションセンサを介するユーザ入力について説明した。しかしながら、操作制御部160は、例えばユーザの所定のジェスチャなど、上述した例とは異なる種類のユーザ入力に応じて、仮想オブジェクトの操作を制御してもよい。ユーザのジェスチャは、ユーザに向けられる(入力画像を撮像する装置と別の)撮像装置によって撮像される画像から認識されてもよい。その代わりに、ユーザのジェスチャは、例えばHMDを用いる場合のように、ユーザの視線方向に向けられる撮像装置によって撮像される画像から認識されてもよい。
【0051】
(5−3)操作対象の特定
操作制御部160は、操作対象の仮想オブジェクトをユーザ入力の入力位置に応じて決定してもよい。例えば、タッチセンサ上のタッチ又はドラッグの開始により操作対象の仮想オブジェクトが選択される場合には、入力位置とカメラの焦点位置とを結ぶ投影線上に判定域が存在する仮想オブジェクトが、操作対象として決定される。本明細書において、判定域とは、仮想オブジェクトと関連付けられ、ユーザにより指定されることで当該仮想オブジェクトが操作対象であると判定される画面上の領域をいう。投影線上に複数の仮想オブジェクトの判定域が存在する場合には、端末装置100の最も近くに位置する仮想オブジェクトが操作対象とされてよい。仮想オブジェクトの判定域は、必ずしも仮想オブジェクトが表示されている領域と一致していなくてもよい。また、操作制御部160は、判定域によらず、端末装置100の画面上で最も大きく表示されている仮想オブジェクト、端末装置100の最も近くに位置する仮想オブジェクト、又は端末装置100の画面に正対している仮想オブジェクトなどを操作対象として特定してもよい。
【0052】
(5−4)仮想オブジェクトの動きの例
本実施形態において、仮想オブジェクトの動きは、ユーザ入力の種類と、ユーザ入力に応じて決定される拘束領域内の位置又は動きベクトルとに応じて決定され得る。
【0053】
例えば、仮想オブジェクトが所定の情報を表示する略平面状のオブジェクトであるものとする。所定の情報とは、例えば、ナビゲーション情報、広告情報、店舗情報、ニュース、天気予報又は列車の運行情報などであってよい。この場合、操作制御部160は、例えば、上記略平面状の仮想オブジェクトがユーザによりドラッグされると、ドラッグ方向に応じて決定される拘束領域内の動きベクトルの方向に沿って、表示されている情報を3次元空間内でスクロールさせる。スクロール量は、動きベクトルの大きさに相当し得る。また、操作制御部160は、上記略平面状の仮想オブジェクトがユーザによりピンチイン又はピンチアウトされると、ピンチイン又はピンチアウトに対応する拘束領域内の動きベクトルの大きさに応じて、表示されている情報を縮小し又は拡大してもよい。また、操作制御部160は、上記略平面状の仮想オブジェクトが特定されている状態で画面上のいずれかの位置がタップされると、タップ位置に対応する拘束領域内の位置に、当該仮想オブジェクトを移動させてもよい。また、操作制御部160は、上記略平面状の仮想オブジェクトが特定されている状態で端末装置100に加速度が加えられると、発生した加速度ベクトルに対応する拘束領域内の動きベクトルの方向に沿って、表示されている情報を3次元空間内でスクロールさせてもよい。このような仮想オブジェクトの動きのいくつかの例について、後に図面を用いてさらに説明する。
【0054】
なお、上述した例に限定されず、仮想オブジェクトは、例えば立体的なオブジェクト(ナビゲーション用の案内板、広告の対象である商品のポリゴンなど)であってもよい。その場合にも、仮想オブジェクトの配置又はサイズなどが、ユーザ入力の種類と、ユーザ入力に応じて決定される拘束領域内の位置又は動きベクトルとに応じて決定され得る。
【0055】
(6)データ取得部
データ取得部170は、表示制御部190により入力画像に重畳される仮想オブジェクトに関するデータを取得する。データ取得部170により取得されるデータは、仮想オブジェクトを定義するオブジェクトデータを含む。オブジェクトデータは、例えば、仮想オブジェクトの種類、関連付けられる物体の識別子、当該物体からの相対的な表示位置、及びユーザに呈示される情報の内容などを定義し得る。ユーザに呈示される情報の内容は、テキスト形式で与えられてもよく、又はイメージ形式で与えられてもよい。データ取得部170は、オブジェクトDB172により予め記憶されるオブジェクトデータを取得してもよい。その代わりに、データ取得部170は、実空間内に設置されるデータサーバから通信部114を介して最新のオブジェクトデータを取得してもよい。データサーバから提供されるオブジェクトデータは、例えば、センサ部104により測定される端末装置100の位置に応じて異なるデータであってもよい。データ取得部170は、このようなオブジェクトデータを表示制御部190へ出力する。
【0056】
(7)表示制御部
表示制御部190は、入力画像に仮想オブジェクトを重畳することにより出力画像を生成する。より具体的には、例えば、表示制御部190には、画像認識部130により入力画像に映っていると認識された物体と関連付けられている仮想オブジェクトのオブジェクトデータが、データ取得部170から入力される。表示制御部190は、かかるオブジェクトデータに基づいて、仮想オブジェクトのオブジェクト画像を生成する。表示制御部190により生成されるオブジェクト画像は、典型的には、3次元の実空間内に仮想的に配置される仮想オブジェクトを(例えば上述したピンホールモデルに従って)端末装置100の撮像面に投影した画像である。実空間内での仮想オブジェクトの位置及び姿勢は、関連付けられる物体の位置及び姿勢、並びにオブジェクトデータでの定義に従って決定され得る。そして、表示制御部190は、生成した出力画像を表示部112へ出力することにより、ARアプリケーションの画像を表示する。
【0057】
また、表示制御部190は、仮想オブジェクトの状態(位置、姿勢、サイズ又はスクロール位置など)を、操作制御部160により決定される仮想オブジェクトの動きに応じて変更する。表示制御部190は、例えば、リアルタイムモードにおいては、画像取得部110により順次取得される各入力画像に、ユーザ入力に応じて時々刻々と状態が変化する仮想オブジェクトのオブジェクト画像を重畳する。それにより、リアルタイムで更新される出力画像において、仮想オブジェクトの動きが表現される。また、表示制御部190は、スナップショットモードにおいては、画像取得部110によりフレームメモリ112から取得される入力画像のスナップショットを複数のフレーム分複製し、複製されたスナップショットの各々に仮想オブジェクトの動きを表現するオブジェクト画像を重畳する。それにより、静止画のスナップショット上での仮想オブジェクトの動きが表現される。
【0058】
また、表示制御部190は、仮想オブジェクトの拘束領域内での可動方向を表現する補助的なオブジェクトを、入力画像にさらに重畳してもよい。また、表示制御部190は、各仮想オブジェクトの判定域を表現する補助的なオブジェクトを、入力画像にさらに重畳してもよい。表示制御部190により表示される補助的なオブジェクトの例について、後に図面を用いて説明する。
【0059】
<3.処理の流れ>
図12は、本実施形態に係る端末装置100によるオブジェクト制御処理の流れの一例を示すフローチャートである。
【0060】
図12を参照すると、まず、画像取得部100は、撮像部102により撮像され又はフレームメモリ112により記憶されている入力画像を取得する(ステップS102)。次に、画像認識部130は、取得された入力画像に映る物体、並びに当該物体の位置及び姿勢を認識する(ステップS104)。次に、データ取得部170は、認識された物体に関するオブジェクトデータをオブジェクトDB172又は外部のデータサーバから取得する(ステップS106)。
【0061】
次に、操作制御部160は、仮想オブジェクトを操作するためのユーザ入力が検出部150により検出されたか否かを判定する(ステップS108)。ここで、検出部150によりユーザ入力が検出された場合には、処理はステップS110へ進む。一方、ユーザ入力が検出されていない場合には、処理はステップS118へ進む。
【0062】
ユーザ入力が検出された場合には、操作制御部160は、当該ユーザ入力の入力位置、仮想オブジェクトの画面上での大きさ又は仮想オブジェクトと端末装置100との距離などの基準に基づいて、操作対象の仮想オブジェクトを特定する(ステップS110)。次に、操作制御部160は、特定した仮想オブジェクトと関連付けて拘束領域設定部140により設定される拘束領域を認識する(ステップS112)。次に、操作制御部160は、ユーザ入力の入力位置又は入力ベクトルに対応する拘束領域内の3次元的な位置又はベクトルを算出する(ステップS114)。そして、操作制御部160は、算出した拘束領域内の位置又はベクトルとユーザ入力の種類とに基づいて、操作対象の仮想オブジェクトの動きを決定する(ステップS116)。
【0063】
ステップS118では、表示制御部190は、実空間内に仮想的に配置される仮想オブジェクトを撮像面に投影することにより、仮想オブジェクトのオブジェクト画像を生成し、生成したオブジェクト画像を入力画像に重畳する(ステップS118)。ここでの仮想オブジェクトの状態は、当該仮想オブジェクトが操作されていない場合には、初期状態である(初期状態は、オブジェクトデータにより定義され得る)。一方、仮想オブジェクトの状態は、当該仮想オブジェクトが操作されている場合には、操作制御部160により決定される動きに従って変更された状態である。次に、表示制御部190は、各仮想オブジェクトの拘束領域内での可動方向を表現する補助的なオブジェクトを、入力画像にさらに重畳する(ステップS120)。そして、仮想オブジェクト及び補助的なオブジェクトが重畳された出力画像が、画面上に表示される(ステップS122)。
【0064】
図12に示したオブジェクト制御処理は、リアルタイムモードにおいては、撮像部102により撮像される各フレームについて繰り返され得る。また、スナップショットモードにおいては、上記オブジェクト制御処理は、画像取得部110によりフレームメモリ112から取得されるスナップショットを入力画像として用いて行われ得る。スナップショットモードでは、1回(あるいは1ストローク)のユーザ入力についてステップS118〜S122の処理が複数回繰り返して行われることにより、仮想オブジェクトの動きがアニメーションとして表現され得る。
【0065】
図13は、図12のステップS102における画像取得処理の詳細な流れの一例を示すフローチャートである。
【0066】
図13を参照すると、画像取得部110は、まず、現在のモードがスナップショットモードかリアルタイムモードかを判定する(ステップS132)。ここで、現在のモードがリアルタイムモードである場合には、画像取得部110は、撮像部102から最新の入力画像を取得する(ステップS134)。一方、現在のモードがスナップショットモードである場合には、画像取得部110は、スナップショットを新たに取得すべきか否かを判定する(ステップS136)。例えば、スナップショットモードが新たに開始される場合、又はスナップショットのリフレッシュがユーザにより指示された場合には、画像取得部110は、スナップショットを新たに取得すべきであると判定する。ここで、スナップショットを新たに取得すべきであると判定された場合には、画像取得部110は、撮像部102から最新の入力画像を取得し(ステップS138)、取得した入力画像をスナップショットとしてフレームメモリ112に記憶させる(ステップS140)。一方、スナップショットを新たに取得しなくてよいと判定された場合には、画像取得部110は、フレームメモリ112に記憶されているスナップショットを入力画像として取得する(ステップS142)。
【0067】
<4.操作シナリオ>
次に、上述した端末装置100を用いて実現され得る仮想オブジェクトの操作の例示的な3つのシナリオについて説明する。
【0068】
[4−1.第1のシナリオ]
図14A及び図14Bは、仮想オブジェクトの操作の第1のシナリオについて説明するための説明図である。
【0069】
図14Aを参照すると、実空間に存在する物体12dが映っている画像が、端末装置100の画面に表示されている。物体12dは、駅に設置される案内用の看板である。端末装置100のデータ取得部170は、入力画像に物体12dが映っていることが画像認識部130により認識されると、物体12dと関連付けられている仮想オブジェクト16dのオブジェクトデータを取得する。仮想オブジェクト16dは、例えば、駅の見取り図、出口案内、及び時刻表などを表示する略平面状のオブジェクトである。図14Aの例では、仮想オブジェクト16dの一部のみが物体12dに重畳されている。仮想オブジェクト16dの拘束領域は、例えば、物体12dの表面に沿った領域である。拘束領域設定部140は、物体12dの位置及び姿勢に基づいて、仮想オブジェクト16dの拘束領域を設定する。そして、例えば、ユーザが端末装置100の画面上で物体12dを左上方向(図中の矢印参照)に向けてドラッグしたものとする。
【0070】
図14Bを参照すると、上述したドラッグの結果、仮想オブジェクト16dが左奥の方向へスクロールしている。そして、ドラッグの前には表示されていなかった仮想オブジェクト16dの時刻表の部分が、物体12dに重畳されている。
【0071】
[4−2.第2のシナリオ]
図15A及び図15Bは、仮想オブジェクトの操作の第2のシナリオについて説明するための説明図である。
【0072】
図15Aを参照すると、実空間に存在する物体12eが映っている画像が、端末装置100の画面に表示されている。物体12eは、地図が描かれた案内板である。端末装置100のデータ取得部170は、入力画像に物体12eが映っていることが画像認識部130により認識されると、物体12eと関連付けられている仮想オブジェクト16eのオブジェクトデータを取得する。仮想オブジェクト16eは、例えば、地図情報を表示する略平面状のオブジェクトである。地図情報の初期の表示内容は、物体12eに実際に描かれている地図と同様の内容であってよい。仮想オブジェクト16eの拘束領域は、例えば、物体12eの表面に沿った領域である。拘束領域設定部140は、物体12eの位置及び姿勢に基づいて、仮想オブジェクト16eの拘束領域を設定する。そして、例えば、ユーザが端末装置100の画面上の地図部分でピンチアウトを行ったものとする。
【0073】
図15Bを参照すると、上述したピンチアウトの結果、仮想オブジェクト16eにより表示されている地図が拡大している。但し、当該地図は、単純に画面内で拡大されているのではなく、物体12eの姿勢に応じて物体12eの表面に沿った平面内で拡大されている。
【0074】
なお、操作制御部160は、例えば、地図部分においてピンチイン又はピンチアウトが行われた場合には拘束領域内で地図を縮小又は拡大させ、地図部分以外の部分においてピンチイン又はピンチアウトが行われた場合には画像全体を撮像面と平行に縮小又は拡大させてもよい。
【0075】
[4−3.第3のシナリオ]
図16Aを参照すると、図14Bの例と同様、端末装置100の画面に表示された物体12d及び仮想オブジェクト16dが再び示されている。ここで、例えば、ユーザが端末装置100の本体を右へ傾けたものとする。
【0076】
図16Bを参照すると、端末装置100が傾けられた結果、仮想オブジェクト16dが右手前の方向へスクロールしている。そして、図16Bの例において物体12dに重畳されていた仮想オブジェクト16dの時刻表の部分が画面外へ消え、仮想オブジェクト16dの出口案内の部分が物体12dに重畳されている。
【0077】
これらシナリオの例のように、本実施形態では、仮想オブジェクトは、ユーザ入力に応じて単純に画面内で上下左右に動くのではなく、関連付けられている物体の姿勢に応じてあたかも3次元の実空間内で動くかのように操作され得る。それにより、ユーザがまさに拡張された実空間内にいるという感覚、即ちAR空間へのユーザの没入感を損なうことなく、ARの仮想オブジェクトをユーザに操作させることができる。
【0078】
なお、ここでは、入力画像に映る物体の表面に仮想オブジェクトが重畳される例について主に説明したが、仮想オブジェクトは、物体の表面から離れた位置に重畳されてもよい。また、表示制御部190は、入力画像のテクスチャなどに基づいて仮想オブジェクトを重畳すべき面を認識してもよい。例えば、建物の壁面、通路の床面など、入力画像内で一様なテクスチャを有する平面が、仮想オブジェクトを重畳すべき面として認識されてもよい。
【0079】
[4−4.補助的なオブジェクトの表示]
図17は、仮想オブジェクトの可動方向を表現する補助オブジェクトについて説明するための説明図である。
【0080】
図17を参照すると、端末装置100の画面上に3つの物体12a、12b及び12cが表示されている。物体12aには、仮想オブジェクト16aが重畳されている。仮想オブジェクト16aの左端には、仮想オブジェクト16aが左手前方向へスクロール可能であることを表現する補助オブジェクト17a(シャドウグラデーション)が表示されている。また、物体12bには、仮想オブジェクト16bが重畳されている。仮想オブジェクト16bの下方には、仮想オブジェクト16bが下方向へスクロール可能であることを表現する補助オブジェクト17b(矢印)が表示されている。物体12cには、仮想オブジェクト16cが重畳されている。仮想オブジェクト16cの四隅には、仮想オブジェクト16cが物体12cの表面に沿って拡大可能であることを表現する補助オブジェクト17c(三角形のツメ)が表示されている。
【0081】
このように、仮想オブジェクトの可動方向を表現する補助オブジェクトを仮想オブジェクトと関連付けて表示することで、仮想オブジェクトをどのように操作し得るかをユーザに容易に把握させることができる。
【0082】
また、図17の例において、仮想オブジェクト16aは、端末装置100の最も近くに位置する仮想オブジェクトである。仮想オブジェクト16aには、太線枠である補助オブジェクト18aが重畳されている。補助オブジェクト18aは、いわゆるフォーカスを表現するオブジェクトである。複数の仮想オブジェクト16aのいずれも特にユーザに指定されることなく何らかのユーザ入力が行われた場合には、このようにフォーカスが当てられている仮想オブジェクトが操作制御部160により操作対象として特定され得る。
【0083】
<5.まとめ>
ここまで、図1〜図17を用いて、一実施形態に係る端末装置100について詳細に説明した。本実施形態によれば、ユーザ入力に応じて操作されるARの仮想オブジェクトの動きが、入力画像内で認識される物体の姿勢に基づいて実空間内に設定される拘束領域内で決定される。従って、仮想オブジェクトは、実世界の状況と無関係に操作されるのではなく、実世界に存在する物体の姿勢に即して3次元的に動くかのように操作され得る。それにより、仮想オブジェクトの操作に際して、AR空間へのユーザの没入感を損なうことなく、自然な操作及び表示を実現することができる。
【0084】
また、本実施形態によれば、上記拘束領域は、入力画像内で認識される物体の表面に沿って設定され得る。そして、仮想オブジェクトは、所定の情報を表示する略平面状のオブジェクトであって、上記物体の表面に沿って移動、拡大、縮小又はスクロールされ得る。従って、ユーザは、あたかも実世界の物体上に表された情報を直接操作するかのような現実感を持ちながら、より豊富に与えられる情報を自在に閲覧することができる。
【0085】
なお、本明細書において説明した端末装置100による処理は、ソフトウェア、ハードウェア、及びソフトウェアとハードウェアとの組合せのいずれを用いて実現されてもよい。ソフトウェアを構成するプログラムは、例えば、各装置の内部又は外部に設けられる記憶媒体に予め格納される。そして、各プログラムは、例えば、実行時にRAM(Random Access Memory)に読み込まれ、CPU(Central Processing Unit)などのプロセッサにより実行される。
【0086】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本技術はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【0087】
なお、本技術は以下のような構成も取ることができる。
(1)
実空間を映した入力画像を取得する画像取得部と、
前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
を備える端末装置。
(2)
前記領域は、前記入力画像内で認識される前記物体の表面に沿って設定される、前記(1)に記載の端末装置。
(3)
前記仮想オブジェクトは、所定の情報を表示する略平面状のオブジェクトであり、
前記仮想オブジェクトの動きは、前記仮想オブジェクトの移動、拡大、縮小又はスクロールである、
前記(2)に記載の端末装置。
(4)
前記検出部は、前記仮想オブジェクトが表示される画面へのユーザ入力を検出し、
前記操作制御部は、前記画面上の入力位置に対応する前記領域内の位置を算出し、算出した当該位置から前記仮想オブジェクトの動きを決定する、
前記(2)又は(3)に記載の端末装置。
(5)
前記検出部は、前記画面上でのドラッグをユーザ入力として検出し、
前記操作制御部は、前記端末装置と前記領域との間の距離に応じて、前記画面上でのドラッグ量に対する前記仮想オブジェクトの動きの量の割合を変化させる、
前記(4)に記載の端末装置。
(6)
前記検出部は、前記端末装置の動きをセンサを用いてユーザ入力として検出し、
前記操作制御部は、前記端末装置の動きを表す第1のベクトルに対応する前記領域内の第2のベクトルを算出し、算出した当該第2のベクトルから前記仮想オブジェクトの動きを決定する、
前記(2)又は(3)に記載の端末装置。
(7)
前記表示制御部は、前記仮想オブジェクトの前記領域内での可動方向を表現する補助的なオブジェクトを、前記入力画像にさらに重畳する、前記(1)〜(6)のいずれか1項に記載の端末装置。
(8)
前記画像取得部は、所定のユーザ入力が検出された場合に、撮像装置により撮像されるスナップショットを入力画像として取得し、
前記表示制御部は、前記仮想オブジェクトの動きを前記スナップショット上で表現するする、
前記(1)〜(7)のいずれか1項に記載の端末装置。
(9)
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置におけるオブジェクト制御方法であって、
ユーザ入力を検出するステップと、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定するステップと、
を含む、オブジェクト制御方法。
(10)
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置を制御するコンピュータを、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
として機能させるためのプログラム。
【符号の説明】
【0088】
100 端末装置
110 画像取得部
150 検出部
160 操作制御部
190 表示制御部
【特許請求の範囲】
【請求項1】
実空間を映した入力画像を取得する画像取得部と、
前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
を備える端末装置。
【請求項2】
前記領域は、前記入力画像内で認識される前記物体の表面に沿って設定される、請求項1に記載の端末装置。
【請求項3】
前記仮想オブジェクトは、所定の情報を表示する略平面状のオブジェクトであり、
前記仮想オブジェクトの動きは、前記仮想オブジェクトの移動、拡大、縮小又はスクロールである、
請求項2に記載の端末装置。
【請求項4】
前記検出部は、前記仮想オブジェクトが表示される画面へのユーザ入力を検出し、
前記操作制御部は、前記画面上の入力位置に対応する前記領域内の位置を算出し、算出した当該位置から前記仮想オブジェクトの動きを決定する、
請求項2に記載の端末装置。
【請求項5】
前記検出部は、前記画面上でのドラッグをユーザ入力として検出し、
前記操作制御部は、前記端末装置と前記領域との間の距離に応じて、前記画面上でのドラッグ量に対する前記仮想オブジェクトの動きの量の割合を変化させる、
請求項4に記載の端末装置。
【請求項6】
前記検出部は、前記端末装置の動きをセンサを用いてユーザ入力として検出し、
前記操作制御部は、前記端末装置の動きを表す第1のベクトルに対応する前記領域内の第2のベクトルを算出し、算出した当該第2のベクトルから前記仮想オブジェクトの動きを決定する、
請求項2に記載の端末装置。
【請求項7】
前記表示制御部は、前記仮想オブジェクトの前記領域内での可動方向を表現する補助的なオブジェクトを、前記入力画像にさらに重畳する、請求項1に記載の端末装置。
【請求項8】
前記画像取得部は、所定のユーザ入力が検出された場合に、撮像装置により撮像されるスナップショットを入力画像として取得し、
前記表示制御部は、前記仮想オブジェクトの動きを前記スナップショット上で表現するする、
請求項1に記載の端末装置。
【請求項9】
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置におけるオブジェクト制御方法であって、
ユーザ入力を検出するステップと、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定するステップと、
を含む、オブジェクト制御方法。
【請求項10】
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置を制御するコンピュータを、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
として機能させるためのプログラム。
【請求項1】
実空間を映した入力画像を取得する画像取得部と、
前記入力画像に仮想オブジェクトを重畳して表示する表示制御部と、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
を備える端末装置。
【請求項2】
前記領域は、前記入力画像内で認識される前記物体の表面に沿って設定される、請求項1に記載の端末装置。
【請求項3】
前記仮想オブジェクトは、所定の情報を表示する略平面状のオブジェクトであり、
前記仮想オブジェクトの動きは、前記仮想オブジェクトの移動、拡大、縮小又はスクロールである、
請求項2に記載の端末装置。
【請求項4】
前記検出部は、前記仮想オブジェクトが表示される画面へのユーザ入力を検出し、
前記操作制御部は、前記画面上の入力位置に対応する前記領域内の位置を算出し、算出した当該位置から前記仮想オブジェクトの動きを決定する、
請求項2に記載の端末装置。
【請求項5】
前記検出部は、前記画面上でのドラッグをユーザ入力として検出し、
前記操作制御部は、前記端末装置と前記領域との間の距離に応じて、前記画面上でのドラッグ量に対する前記仮想オブジェクトの動きの量の割合を変化させる、
請求項4に記載の端末装置。
【請求項6】
前記検出部は、前記端末装置の動きをセンサを用いてユーザ入力として検出し、
前記操作制御部は、前記端末装置の動きを表す第1のベクトルに対応する前記領域内の第2のベクトルを算出し、算出した当該第2のベクトルから前記仮想オブジェクトの動きを決定する、
請求項2に記載の端末装置。
【請求項7】
前記表示制御部は、前記仮想オブジェクトの前記領域内での可動方向を表現する補助的なオブジェクトを、前記入力画像にさらに重畳する、請求項1に記載の端末装置。
【請求項8】
前記画像取得部は、所定のユーザ入力が検出された場合に、撮像装置により撮像されるスナップショットを入力画像として取得し、
前記表示制御部は、前記仮想オブジェクトの動きを前記スナップショット上で表現するする、
請求項1に記載の端末装置。
【請求項9】
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置におけるオブジェクト制御方法であって、
ユーザ入力を検出するステップと、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定するステップと、
を含む、オブジェクト制御方法。
【請求項10】
実空間を映した入力画像を取得し、前記入力画像に仮想オブジェクトを重畳して表示する端末装置を制御するコンピュータを、
ユーザ入力を検出する検出部と、
前記ユーザ入力に応じて操作される前記仮想オブジェクトの動きを、前記入力画像内で認識される物体の姿勢に基づいて前記実空間内に設定される高々2次元の領域内で決定する操作制御部と、
として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図5C】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図15A】
【図15B】
【図16A】
【図16B】
【図17】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図5C】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図15A】
【図15B】
【図16A】
【図16B】
【図17】
【公開番号】特開2012−212345(P2012−212345A)
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願番号】特願2011−78075(P2011−78075)
【出願日】平成23年3月31日(2011.3.31)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.QRコード
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願日】平成23年3月31日(2011.3.31)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.QRコード
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]