(57)【特許請求の範囲】
【請求項１】
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、
前記環境認識行列の逆行列を計算する計算部と、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置し、配置される前記仮想オブジェクトの位置及び姿勢を表現するオブジェクト配置行列を前記環境と関連付けて記憶媒体に記憶させるオブジェクト配置部と、
第１の時点で前記オブジェクト配置行列が記憶され、後続する第２の時点で新たに前記環境認識行列が認識された場合に、前記オブジェクト配置行列と新たに認識された前記環境認識行列とにより表現される位置及び姿勢で前記仮想オブジェクトを前記端末の画面に表示させる表示制御部と、
を備え、
前記仮想オブジェクトは、予め定義される基準面を有し、
前記表示制御部は、前記端末の画面に前記仮想オブジェクトの前記基準面が映るか否かに応じて、前記仮想オブジェクトの表示を変化させる、
画像処理装置。
【請求項２】
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、
前記環境認識行列の逆行列を計算する計算部と、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置し、配置される前記仮想オブジェクトの位置及び姿勢を表現するオブジェクト配置行列を前記環境と関連付けて記憶媒体に記憶させるオブジェクト配置部と、
第１の時点で前記オブジェクト配置行列が記憶され、後続する第２の時点で新たに前記環境認識行列が認識された場合に、前記オブジェクト配置行列と新たに認識された前記環境認識行列とにより表現される位置及び姿勢で前記仮想オブジェクトを前記端末の画面に表示させる表示制御部と、
を備え、
前記オブジェクト配置部は、ユーザ入力が検出された場合に、複数の前記画像にわたって前記オブジェクト配置行列を前記環境と関連付けて連続的に記憶媒体に記憶させる、
画像処理装置。
【請求項３】
前記表示制御部は、連続的に記憶された前記オブジェクト配置行列を用いて、前記仮想オブジェクトの軌跡を前記環境内に表示させる、請求項２に記載の画像処理装置。
【請求項４】
前記表示制御部は、連続的に記憶された前記オブジェクト配置行列を用いて、前記仮想オブジェクトが前記環境内で動くアニメーションを表示させる、請求項２に記載の画像処理装置。
【請求項５】
前記表示制御部は、異なる時点で記憶された前記オブジェクト配置行列から、当該異なる時点の間の前記仮想オブジェクトの位置及び姿勢を補間する、請求項３又は４に記載の画像処理装置。
【請求項６】
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、
前記環境認識行列の逆行列を計算する計算部と、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置し、配置される前記仮想オブジェクトの位置及び姿勢を表現するオブジェクト配置行列を前記環境と関連付けて記憶媒体に記憶させるオブジェクト配置部と、
を備え、
前記端末は、撮像装置であり、
前記仮想オブジェクトは、前記画像の撮像位置及び撮像姿勢を記録するために前記環境内に配置される、
画像処理装置。
【請求項７】
前記オブジェクト配置部は、撮像指示に対応するユーザ入力が検出された場合に、前記オブジェクト配置行列を記憶媒体に記憶させる、請求項６に記載の画像処理装置。
【請求項８】
前記認識部、前記計算部及び前記オブジェクト配置部のうち少なくとも１つが前記画像処理装置の代わりにクラウドコンピューティング環境上に存在する装置により実現される、請求項１〜７のいずれか１項に記載の画像処理装置。
【請求項９】
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識することと、
前記環境認識行列の逆行列を計算することと、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置することと、
配置される前記仮想オブジェクトの位置及び姿勢を表現するオブジェクト配置行列を前記環境と関連付けて記憶媒体に記憶させることと、
第１の時点で前記オブジェクト配置行列が記憶され、後続する第２の時点で新たに前記環境認識行列が認識された場合に、前記オブジェクト配置行列と新たに認識された前記環境認識行列とにより表現される位置及び姿勢で前記仮想オブジェクトを前記端末の画面に表示させることと、
を含み、
前記仮想オブジェクトは、予め定義される基準面を有し、
前記端末の画面に前記仮想オブジェクトの前記基準面が映るか否かに応じて、前記仮想オブジェクトの表示を変化させる、
画像処理方法。
【請求項１０】
コンピュータを、
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、
前記環境認識行列の逆行列を計算する計算部と、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置し、配置される前記仮想オブジェクトの位置及び姿勢を表現するオブジェクト配置行列を前記環境と関連付けて記憶媒体に記憶させるオブジェクト配置部と、
第１の時点で前記オブジェクト配置行列が記憶され、後続する第２の時点で新たに前記環境認識行列が認識された場合に、前記オブジェクト配置行列と新たに認識された前記環境認識行列とにより表現される位置及び姿勢で前記仮想オブジェクトを前記端末の画面に表示させる表示制御部と、
として機能させ、
前記仮想オブジェクトは、予め定義される基準面を有し、
前記表示制御部は、前記端末の画面に前記仮想オブジェクトの前記基準面が映るか否かに応じて、前記仮想オブジェクトの表示を変化させる、
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、実世界に付加的な情報を重畳してユーザに呈示する拡張現実（ＡＲ：Augmented  Reality）と呼ばれる技術が注目されている。ＡＲ技術においてユーザに呈示される情報は、アノテーションとも呼ばれ、テキスト、アイコン又はアニメーションなどの様々な形態の仮想的なオブジェクトを用いて可視化され得る。既存のＡＲ技術において、仮想オブジェクトをＡＲ空間に配置する役割は、主にＡＲアプリケーションの開発者が担っている。開発者は、どの仮想オブジェクトをＡＲ空間のどこにどういった姿勢で配置するかを決定する。決定された仮想オブジェクトの配置は、何らかの環境（例えば、実世界の特定の空間、場所、物体又は物体の集合など）と関連付けてデータとして記憶される。その結果、その環境をエンドユーザが撮像装置で撮像するとそこに関連付けられた仮想オブジェクトが撮像画像に重畳されるという、ＡＲアプリケーションが実現される。
【０００３】
下記非特許文献１は、仮想オブジェクトを配置する前の段階で実空間をモデリングするための技術の一例を示している。下記非特許文献２は、仮想オブジェクトを撮像画像に重畳する際に必要とされる撮像装置の位置及び姿勢を算出することを目的とした、自然マーカを利用した技術の一例を示している。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】A.  van  den  Hengel,  R.Hill,  B.Ward  and  A.Dick,  “In  Situ  Image-based  Modeling”（In  Proc.  8th  IEEE  International  Symposium  on  Mixed  and  Augmented  Reality，  2009）
【非特許文献２】W.Daniel,  G.Reitmayr,  A.Mulloni,  T.Drummond,  and  D.Schmalstieg,  “Pose  Tracking  from  Natural  Features  on  Mobile  Phones”（In  Proc.  7th  IEEE  International  Symposium  on  Mixed  and  Augmented  Reality，2008）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、既存のＡＲ技術では、ＡＲアプリケーションの開発者のような専門知識を有する者でなければ、ＡＲ空間に仮想オブジェクトを適切に配置することが困難であった。これに対し、専門知識を有しない一般のユーザでもＡＲ空間に仮想オブジェクトを簡易かつ自在に配置してこれを閲覧又は共有することが可能となれば、ＡＲアプリケーションの用途が広がり、ＡＲ技術のメリットがより多くのユーザに享受されるものと期待される。
【０００６】
従って、本開示に係る技術は、ＡＲ空間に仮想オブジェクトを簡易かつ自在に配置することのできる仕組みを提供しようとするものである。
【課題を解決するための手段】
【０００７】
本開示によれば、画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、前記環境認識行列の逆行列を計算する計算部と、前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置するオブジェクト配置部と、を備える画像処理装置が提供される。
【０００８】
また、本開示によれば、画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識することと、前記環境認識行列の逆行列を計算することと、前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置することと、を含む画像処理方法が提供される。
【０００９】
また、本開示によれば、コンピュータを、画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、前記環境認識行列の逆行列を計算する計算部と、前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置するオブジェクト配置部と、として機能させるためのプログラムが提供される。
【発明の効果】
【００１０】
本開示に係る技術によれば、ＡＲ空間に仮想オブジェクトを簡易かつ自在に配置することのできる仕組みが提供される。
【図面の簡単な説明】
【００１１】
【図１】本開示に係る技術が適用され得る環境の一例を示す説明図である。
【図２】本開示に係る技術の基本的な原理について説明するための第１の説明図である。
【図３】本開示に係る技術の基本的な原理について説明するための第２の説明図である。
【図４】本開示に係る技術の基本的な原理について説明するための第３の説明図である。
【図５】本開示に係る技術の基本的な原理について説明するための第４の説明図である。
【図６Ａ】例示的なシナリオに沿って仮想オブジェクトが配置される様子を示す第１の説明図である。
【図６Ｂ】例示的なシナリオに沿って仮想オブジェクトが配置される様子を示す第２の説明図である。
【図７】オブジェクト配置データの基本的な構成例について説明するための説明図である。
【図８】本開示に係る技術の基本的な原理について説明するための第５の説明図である。
【図９】第１の実施形態に係る画像処理装置のハードウェア構成の一例を示すブロック図である。
【図１０】第１の実施形態に係る画像処理装置の構成の一例を示すブロック図である。
【図１１】第１の操作シナリオに沿って新たな仮想オブジェクトが基準環境内に配置される様子を示す説明図である。
【図１２】第２の操作シナリオに沿って配置済みの仮想オブジェクトが移動される様子を示す説明図である。
【図１３】基準環境の乗り換えについて説明するための説明図である。
【図１４】第１の実施形態に係る画像処理の流れの一例を示すフローチャートである。
【図１５】図１４に例示したオブジェクト配置処理の詳細な流れの一例を示すフローチャートである。
【図１６】仮想オブジェクトの基準面の判定について説明するための説明図である。
【図１７】仮想オブジェクトの距離に応じた表示について説明するための説明図である。
【図１８】仮想オブジェクトの整列表示について説明するための説明図である。
【図１９】オブジェクト配置行列の連続的な記憶について説明するための説明図である。
【図２０】第２の実施形態に係る画像処理システムについて説明するための第１の説明図である。
【図２１Ａ】第２の実施形態に係る画像処理システムについて説明するための第２の説明図である。
【図２１Ｂ】第２の実施形態に係る画像処理システムについて説明するための第３の説明図である。
【図２２】第２の実施形態に係る管理サーバの構成の一例を示すブロック図である。
【図２３】オブジェクト配置データの一例について説明するための説明図である。
【図２４】オブジェクトデータの一例について説明するための説明図である。
【図２５】第２の実施形態に係る端末装置の構成の一例を示すブロック図である。
【図２６】第２の実施形態における仮想オブジェクトの表示の第１の例を示す説明図である。
【図２７】第２の実施形態における仮想オブジェクトの表示の第２の例を示す説明図である。
【図２８】第２の実施形態における通信アプリケーションの起動について説明するための説明図である。
【図２９】第２の実施形態に係る装置間の処理の流れの一例を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１３】
また、以下の順序で説明を行う。
１．基本的な原理
１−１．概要
１−２．基本的なパラメータ
１−３．パラメータの記憶
１−４．仮想オブジェクトの表示
２．第１の実施形態
２−１．ハードウェア構成
２−２．機能構成
２−３．操作シナリオ
２−４．処理の流れ
２−５．表示のバリエーション
２−６．応用例
３．第２の実施形態
３−１．システムの概要
３−２．サーバの構成
３−３．端末の構成
３−４．処理の流れ
４．まとめ
【００１４】
＜１．基本的な原理＞
まず、図１〜図８を用いて、本開示に係る技術の基本的な原理について説明する。
【００１５】
［１−１．概要］
図１は、本開示に係る技術が適用され得る環境の一例を示す説明図である。図１を参照すると、環境１、及び環境１を映す画像を撮像する画像処理装置１００が示されている。図１の例において、環境１には、テーブル１１、本１２及びコーヒーカップ１３が存在している。画像処理装置１００は、典型的には、撮像部（図示せず）及び表示部１１０を備える。画像処理装置１００の撮像部は、環境１を映す映像を構成する一連の画像を撮像する。そして、画像処理装置１００は、撮像画像を入力画像として画像処理を行い、３次元空間に仮想オブジェクトを配置する。画像処理装置１００の表示部１１０は、仮想オブジェクトが重畳された出力画像を表示する。
【００１６】
画像処理装置１００は、仮想オブジェクトを何らかの基準環境内に配置する。即ち、仮想オブジェクトの位置及び姿勢は、基準環境と関連付けられる座標系（以下、基準座標系という）において定義される。以下の説明では、テーブル１１、本１２及びコーヒーカップ１３を含む環境１が、基準環境であるものとする。実際には、基準環境は、屋内であるか屋外であるかを問わず、任意の環境であってよい。他の実施形態として、物体固有の座標系を有する１つの物体が基準環境として扱われてもよい。その場合、物体固有の座標系が基準座標系となる。
【００１７】
図１では、画像処理装置１００の一例としてタブレットＰＣを示している。しかしながら、画像処理装置１００は、かかる例に限定されない。画像処理装置１００は、例えば、ノートブックＰＣ、ポケットＰＣ、スマートフォン、ゲーム端末、ＰＮＤ（Portable  Navigation  Device）、コンテンツプレーヤ又はデジタル家電機器などであってもよい。
【００１８】
［１−２．基本的なパラメータ］
本開示に係る技術において、基準環境内に配置される仮想オブジェクトの位置及び姿勢は、いくつかのパラメータを用いた計算を通じて決定される。最も基本的なパラメータは、環境認識行列である。
【００１９】
（１）環境認識行列
環境認識行列は、入力画像を撮像した端末の基準環境内の位置及び姿勢を基準として、基準環境の位置及び姿勢を表現する行列である。環境認識行列は、典型的には、３次元空間内の並行移動、回転及びスケーリング（拡大／縮小）を表す座標変換行列（例えば、４行４列の同次変換行列）であってよい。
【００２０】
図２を参照すると、基準環境１と関連付けられる基準座標系ＣＳ１、及び画像処理装置１００の装置固有の座標系ＣＳ０が示されている。装置固有の座標系ＣＳ０は、例えば、表示部１１０の画面の２次元座標軸と奥行き軸とにより構成され得る。画像処理装置１００の装置固有の座標系ＣＳ０を基準とする基準座標系ＣＳ１の相対的な位置及び姿勢は、公知の画像認識技術を活用することにより、入力画像を用いて認識され得る。ここで活用される画像認識技術とは、例えば、ＳｆＭ（Structure  from  Motion）法、ＳＬＡＭ（Simultaneous  Localization  And  Mapping）法、又は上記非特許文献１若しくは２に記載されている手法などであってよい。その代わりに、赤外線センサを用いたより簡易な環境認識技術が活用されてもよい。
【００２１】
ここで、画像処理装置１００の装置固有の座標系ＣＳ０の位置及び姿勢が、単位行列Ｍ０により表現されるものと仮定する。すると、基準環境１内の任意の位置及び姿勢を行列Ｍ０からの座標変換（並行移動、回転及びスケーリング）として認識することが可能となる。従って、位置及び姿勢のセットが１つの座標変換行列によって表現される。上述した環境認識行列は、そうした座標変換行列の１つである。環境認識行列Ｍｒｅｃｏｇは、画像処理装置１００の位置及び姿勢（即ち単位行列Ｍ０）を基準として、基準座標系ＣＳ１の位置及び姿勢を表現する。
【００２２】
（２）オブジェクト配置行列
上述した前提の下で、環境認識行列Ｍｒｅｃｏｇの逆行列Ｍｒｅｃｏｇ−１は、基準座標系ＣＳ１の位置及び姿勢を基準とした画像処理装置１００の位置及び姿勢を表現する行列となる。本開示に係る技術において、仮想オブジェクトは、このような環境認識行列の逆行列Ｍｒｅｃｏｇ−１に基づく位置及び姿勢で基準環境内に配置される。図３は、環境認識行列の逆行列Ｍｒｅｃｏｇ−１が表現する座標変換を概念的に示している。
【００２３】
オブジェクト配置行列Ｍａｒｒａｎｇｅは、配置される仮想オブジェクトの位置及び姿勢を表現する行列である。オブジェクト配置行列Ｍａｒｒａｎｇｅは、例えば、次式のように、環境認識行列の逆行列Ｍｒｅｃｏｇ−１と等しくてもよい。この場合、仮想オブジェクトは、当該仮想オブジェクトが配置される時点の画像処理装置１００の位置及び姿勢と同じ位置及び姿勢で配置される。
【００２４】
【数１】
0005942456.tif 000002
【００２５】
但し、仮想オブジェクトの位置及び姿勢を画像処理装置１００の位置及び姿勢に完全には一致させない場合には、次に説明するようなオフセット行列が用いられてもよい。
【００２６】
（３）オフセット行列
図４は、オフセット行列の一例としての前方オフセット行列Ｔｏｆｆｓｅｔを算入して決定されるオブジェクト配置行列Ｍａｒｒａｎｇｅを概念的に示している。前方オフセット行列Ｔｏｆｆｓｅｔは、画像処理装置１００の位置から入力画像の撮像方向（奥行き方向）への所定の距離の並行移動を表現する座標変換行列である。前方オフセット行列Ｔｏｆｆｓｅｔが算入される場合、オブジェクト配置行列Ｍａｒｒａｎｇｅは、次式のように計算され得る。
【００２７】
【数２】
0005942456.tif 000003
【００２８】
このように前方オフセット行列Ｔｏｆｆｓｅｔを算入して仮想オブジェクトを画像処理装置１００の前方に配置することにより、ユーザは、画像処理装置１００を動かすことなく、配置された仮想オブジェクトを画面上で直ちに視認することができる。
【００２９】
図５は、オフセット行列の一例としての操作オフセット行列Ｔｔｏｕｃｈを算入して決定されるオブジェクト配置行列Ｍａｒｒａｎｇｅを概念的に示している。操作オフセット行列Ｔｔｏｕｃｈは、画像処理装置１００の画面上でのユーザ入力位置に応じて決定される、当該画面に沿った方向への並行移動を表現する座標変換行列である。操作オフセット行列Ｔｔｏｕｃｈが算入される場合、オブジェクト配置行列Ｍａｒｒａｎｇｅは、次式のように計算され得る。
【００３０】
【数３】
0005942456.tif 000004
【００３１】
このように操作オフセット行列Ｔｔｏｕｃｈが算入される場合、ユーザにとって、画像処理装置１００を動かす代わりに画面上の所望の位置で操作（例えば、タッチ又はクリックなど）を行うことで、仮想オブジェクトの配置を細かく調整することが容易となる。
【００３２】
［１−３．パラメータの記憶］
上述した原理に従って仮想オブジェクトの配置が確定すると、オブジェクト配置行列Ｍａｒｒａｎｇｅが基準環境と関連付けて記憶される。
【００３３】
例えば、図６Ａ〜図６Ｂのシナリオを参照すると、まず、時刻ｔ１において、仮想オブジェクトＶ０１が基準環境１内に配置される。仮想オブジェクトＶ０１の位置及び姿勢は、オブジェクト配置行列Ｍａｒｒａｎｇｅ（ｔ１）により表現される（図６Ａ参照）。次に、時刻ｔ２において、仮想オブジェクトＶ０２が基準環境１内に配置される。仮想オブジェクトＶ０２の位置及び姿勢は、オブジェクト配置行列Ｍａｒｒａｎｇｅ（ｔ２）により表現される（図６Ｂ参照）。
【００３４】
その結果、例えば、図７に例示したようなオブジェクト配置データが形成され得る。図７の例において、オブジェクト配置データは、「基準環境」、「オブジェクトＩＤ」、「配置」及び「時刻」という４つのデータ項目を有する。「基準環境」は、各仮想オブジェクトが配置された環境を識別する識別子である。「オブジェクトＩＤ」は、各仮想オブジェクトを一意に識別するための識別子である。「配置」は、各仮想オブジェクトのオブジェクト配置行列を格納するデータ項目である。「時刻」は、各仮想オブジェクトが配置された時刻を示す。このようなオブジェクト配置データを用いて、仮想オブジェクトの表示が行われ得る。
【００３５】
［１−４．仮想オブジェクトの表示］
仮想オブジェクトが配置された後、端末と基準環境との間の位置関係が変わった状況を想定する。端末が移動し若しくは基準環境が移動し、又はその双方のケースで、この状況は想定され得る。なお、本明細書において、特に「並行」移動と明示されない場合には、「移動」との用語は並行移動及び回転の双方を含み得るものとする。上述した状況において、画像処理装置１００の画面上での仮想オブジェクトの表示は、記憶されているオブジェクト配置行列Ｍａｒｒａｎｇｅと最新の時点で認識される環境認識行列Ｍｒｅｃｏｇとにより表現される位置及び姿勢で行われる。例えば、図６Ｂに示した時刻ｔ２における画像処理装置１００からの仮想オブジェクトＶ０１の見え方は、オブジェクト配置行列Ｍａｒｒａｎｇｅ（ｔ１）と時刻ｔ２における環境認識行列Ｍｒｅｃｏｇ（ｔ２）との積に相当する次のような座標変換として表現され得る。
【００３６】
【数４】
0005942456.tif 000005
【００３７】
図８は、式（４）により表現される座標変換を概念的に示している。図８の出力画像Ｉｍ１には、オブジェクト配置行列Ｍａｒｒａｎｇｅ（ｔ１）と環境認識行列Ｍｒｅｃｏｇ（ｔ２）とにより表現される位置及び姿勢で、仮想オブジェクトＶ０１が表示されている。
【００３８】
本節で説明した原理に従って、ユーザは、画像処理装置１００のような端末を動かしながらこれを操作することにより、基準環境内に所望の位置及び姿勢で仮想オブジェクトを配置することができる。また、オブジェクト配置行列が基準座標系と関連付けて記憶されるため、端末と基準環境との間の位置関係が変化する場合にも、基準環境に対する相対的な仮想オブジェクトの位置及び姿勢が維持されるように、仮想オブジェクトを表示することができる。このような原理によれば、仮想オブジェクトの配置を目的とする、基準環境に付箋を貼るような直感的なユーザインタフェースが提供され得る。
【００３９】
以下、上述した原理に基づく、本開示に係る技術の２つの例示的な実施形態について詳細に説明する。
【００４０】
＜２．第１の実施形態＞
第１の実施形態では、図１に例示した画像処理装置１００により仮想オブジェクトが配置される。配置された仮想オブジェクトは、画像処理装置１００の画面に表示される。
【００４１】
［２−１．ハードウェア構成］
図９は、第１の実施形態に係る画像処理装置１００のハードウェア構成の一例を示すブロック図である。図９を参照すると、画像処理装置１００は、撮像部１０２、センサ部１０４、入力部１０６、記憶部１０８、表示部１１０、通信部１１２、バス１１６及び制御部１１８を備える。
【００４２】
（１）撮像部
撮像部１０２は、画像を撮像するカメラモジュールである。撮像部１０２は、ＣＣＤ（Charge  Coupled  Device）又はＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）などの撮像素子を用いて実空間を撮像し、撮像画像を生成する。撮像部１０２により生成される一連の撮像画像は、映像を構成する。なお、撮像部１０２は、必ずしも画像処理装置１００の一部でなくてもよい。例えば、画像処理装置１００と有線又は無線で接続される撮像装置が撮像部１０２として扱われてもよい。また、撮像部１０２は、撮像部１０２と被写体との間の距離を画素ごとに測定する深度（depth）センサを含んでいてもよい。深度センサから出力される深度データは、環境の認識のために利用され得る。
【００４３】
（２）センサ部
センサ部１０４は、測位センサ、加速度センサ及びジャイロセンサなどの様々なセンサを含み得る。センサ部１０４において得られる測定結果は、環境の認識の支援、地理的な位置に特化したデータの取得、又はユーザ入力の検出などの様々な用途のために利用されてよい。なお、センサ部１０４は、画像処理装置１００の構成から省略されてもよい。
【００４４】
（３）入力部
入力部１０６は、ユーザが画像処理装置１００を操作し又は画像処理装置１００へ情報を入力するために使用される入力デバイスである。入力部１０６は、例えば、表示部１１０の画面上へのユーザによるタッチを検出するタッチセンサを含んでもよい。その代わりに（又はそれに加えて）、入力部１０６は、マウス若しくはタッチパッドなどのポインティングデバイスを含んでもよい。さらに、入力部１０６は、キーボード、キーパッド、ボタン又はスイッチなどのその他の種類の入力デバイスを含んでもよい。
【００４５】
（４）記憶部
記憶部１０８は、半導体メモリ又はハードディスクなどの記憶媒体により構成され、画像処理装置１００による処理のためのプログラム及びデータを記憶する。記憶部１０８により記憶されるデータは、例えば、撮像画像データ、センサデータ及び後に説明するデータベース（ＤＢ）内のデータを含み得る。なお、本明細書で説明するプログラム及びデータの一部は、記憶部１０８により記憶されることなく、外部のデータソース（例えば、データサーバ、ネットワークストレージ又は外付けメモリなど）から取得されてもよい。
【００４６】
（５）表示部
表示部１１０は、ＬＣＤ（Liquid  Crystal  Display）、ＯＬＥＤ（Organic  light-Emitting  Diode）又はＣＲＴ（Cathode  Ray  Tube）などのディスプレイを含む表示モジュールである。表示部１１０は、例えば、画像処理装置１００により生成される出力画像を表示するために使用される。なお、表示部１１０もまた、必ずしも画像処理装置１００の一部でなくてもよい。例えば、画像処理装置１００と有線又は無線で接続される表示装置が表示部１１０として扱われてもよい。
【００４７】
（６）通信部
通信部１１２は、画像処理装置１００による他の装置との間の通信を仲介する通信インタフェースである。通信部１１２は、任意の無線通信プロトコル又は有線通信プロトコルをサポートし、他の装置との間の通信接続を確立する。
【００４８】
（７）バス
バス１１６は、撮像部１０２、センサ部１０４、入力部１０６、記憶部１０８、表示部１１０、通信部１１２及び制御部１１８を相互に接続する。
【００４９】
（８）制御部
制御部１１８は、ＣＰＵ（Central  Processing  Unit）又はＤＳＰ（Digital  Signal  Processor）などのプロセッサに相当する。制御部１１８は、記憶部１０８又は他の記憶媒体に記憶されるプログラムを実行することにより、後に説明する画像処理装置１００の様々な機能を動作させる。
【００５０】
［２−２．機能構成］
図１０は、図９に示した画像処理装置１００の記憶部１０８及び制御部１１８により実現される論理的機能の構成の一例を示すブロック図である。図１０を参照すると、画像処理装置１００は、画像取得部１２０、認識部１３０、計算部１４０、オブジェクト配置部１５０、オブジェクトＤＢ１６０、操作制御部１８０及び表示制御部１９０を備える。
【００５１】
（１）画像取得部
画像取得部１２０は、撮像部１０２により生成される撮像画像を入力画像として取得する。画像取得部１２０により取得される入力画像は、実空間を映す映像を構成する個々のフレームであってよい。画像取得部１２０は、取得した入力画像を、認識部１３０及び表示制御部１９０へ出力する。
【００５２】
（２）認識部
認識部１３０は、画像取得部１２０から入力される入力画像を用いて、基準環境の位置及び姿勢を表現する上述した環境認識行列を認識する。認識部１３０は、環境認識行列を認識するために、ＳｆＭ法又はＳＬＡＭ法などの公知の画像認識技術を活用し得る。その代わりに又はそれに加えて、認識部１３０は、撮像部１０２に設けられ得る深度センサからの深度データに基づいて、環境認識行列を認識してもよい。また、認識部１３０は、赤外線測距システム又はモーションキャプチャシステムなどの環境認識システムからの出力データに基づいて、環境認識行列を認識してもよい。
【００５３】
例えば、ＳＬＡＭ法が活用される場合には、認識部１３０は、端末の位置、姿勢、速度及び角速度、並びに入力画像に映る１つ以上の特徴点の位置を含む状態変数を、拡張カルマンフィルタの原理に基づいてフレームごとに更新する。それにより、端末の位置及び姿勢を基準とする基準環境の位置及び姿勢を、単眼カメラからの入力画像を用いて認識することができる。認識部１３０は、認識した基準環境の位置及び姿勢を、端末の位置及び姿勢からの座標変換に相当する環境認識行列Ｍｒｅｃｏｇによって表現する。なお、ＳＬＡＭ法の詳しい説明は、“Real-Time  Simultaneous  Localization  and  Mapping  with  a  Single  Camera”（Andrew  J.Davison，Proceedings  of  the  9th  IEEE  International  Conference  on  Computer  Vision  Volume  2,  2003,  pp.1403-1410）に記載されている。
【００５４】
認識部１３０は、このように認識される環境認識行列Ｍｒｅｃｏｇを、計算部１４０及びオブジェクト配置部１５０へ出力する。
【００５５】
（３）計算部
計算部１４０は、認識部１３０から入力される環境認識行列の逆行列Ｍｒｅｃｏｇ−１を計算する。例えば、環境認識行列Ｍｒｅｃｏｇは、４行４列の同次変換行列である。従って、環境認識行列の逆行列Ｍｒｅｃｏｇ−１もまた４行４列の同次変換行列であり、Ｍｒｅｃｏｇ・Ｍｒｅｃｏｇ−１＝Ｍ０（単位行列）を満たす。環境認識行列の逆行列Ｍｒｅｃｏｇ−１は、基準座標系の位置及び姿勢から端末の位置及び姿勢への座標変換を表現する。計算部１４０は、計算した環境認識行列の逆行列Ｍｒｅｃｏｇ−１をオブジェクト配置部１５０へ出力する。
【００５６】
（４）オブジェクト配置部
オブジェクト配置部１５０は、環境認識行列の逆行列Ｍｒｅｃｏｇ−１に基づく位置及び姿勢を有する仮想オブジェクトを、基準環境内に配置する。配置される仮想オブジェクトの位置及び姿勢は、上述したオブジェクト配置行列Ｍａｒｒａｎｇｅにより表現される。添付図面では、仮想オブジェクトの位置及び姿勢を簡明に示すために、矩形の仮想オブジェクトが主に描かれる。しかしながら、オブジェクト配置部１５０により配置される仮想オブジェクトは、いかなる形状を有していてもよい。また、当該仮想オブジェクトは、いかなる種類の情報を呈示するオブジェクトであってもよい。
【００５７】
オブジェクト配置部１５０は、例えば、上記式（１）に従って、環境認識行列の逆行列Ｍｒｅｃｏｇ−１により表現される位置及び姿勢で、端末の位置及び姿勢に重ねるように仮想オブジェクトを配置してもよい。また、オブジェクト配置部１５０は、端末の位置及び姿勢から、上述した前方オフセット行列及び操作オフセット行列の一方又は双方を用いてオフセットされる位置に、仮想オブジェクトを配置してもよい。
【００５８】
前方オフセット行列Ｔｏｆｆｓｅｔが用いられる場合には、オブジェクト配置部１５０は、上記式（２）に従って、環境認識行列の逆行列Ｍｒｅｃｏｇ−１により表現される位置から入力画像の撮像方向にオフセットされる位置に、仮想オブジェクトを配置し得る。また、操作オフセット行列Ｔｔｏｕｃｈが用いられる場合には、オブジェクト配置部１５０は、上記式（３）に従って、画面上でのユーザ入力位置に応じて当該画面に沿った方向にオフセットされた位置に、仮想オブジェクトを配置し得る。
【００５９】
オブジェクト配置部１５０は、基準環境内に配置した仮想オブジェクトのオブジェクト配置行列Ｍａｒｒａｎｇｅ（及び他のパラメータ）を、表示制御部１９０へ出力する。また、オブジェクト配置部１５０は、操作制御部１８０により所定のユーザ入力が検出された場合に、オブジェクト配置行列Ｍａｒｒａｎｇｅを基準環境と関連付けてオブジェクトＤＢ１６０に記憶させる。仮想オブジェクトの配置に関するユーザインタフェースの様々な例について、後にさらに説明する。
【００６０】
（５）オブジェクトＤＢ
オブジェクトＤＢ１６０は、オブジェクト配置部１５０により配置される仮想オブジェクトのオブジェクト配置行列を記憶するデータベースである。オブジェクトＤＢ１６０は、図７に例示したような構成を有するオブジェクト配置データを記憶し得る。オブジェクトＤＢ１６０において、オブジェクト配置行列は、いずれかの基準環境と関連付けられる。そして、オブジェクト配置データは、表示制御部１９０により仮想オブジェクトの表示処理が実行される際に、オブジェクトＤＢ１６０から読み出される。
【００６１】
（６）操作制御部
操作制御部１８０は、画像処理装置１００において実行されるＡＲアプリケーションをユーザに操作させるためのユーザインタフェースを提供する。例えば、操作制御部１８０は、表示制御部１９０を介して、ＡＲアプリケーションの操作を促す標識を画面に表示させる。そして、操作制御部１８０は、入力部１０６を介する様々なユーザ入力を検出する。
【００６２】
第１のユーザ入力は、仮想オブジェクトの暫定的な配置及び表示のトリガであってよく、第２のユーザ入力は、仮想オブジェクトの配置の確定及びオブジェクト配置行列の記憶のトリガであってよい。これら第１及び第２のユーザ入力は、それぞれ一連の操作の開始及び終了に対応するように定義され得る。一連の操作とは、例えば、タッチ又はドラッグに相当し得る。典型的には、タッチ又はドラッグの開始はプレス（Press）イベントとして検出され、タッチ又はドラッグの終了はリリース（Release）イベントとして検出される。このようなユーザインタフェースによれば、ユーザは、画面にタッチ（又はドラッグ）しつつ当該画面を見ながら端末を動かすという簡単かつ直感的な操作のみで、仮想オブジェクトの配置を所望の位置及び姿勢に自在に調整することができる。
【００６３】
操作制御部１８０は、上述したユーザ入力を検出すると、検出したユーザ入力の種類及び入力位置を示す入力情報を、オブジェクト配置部１５０へ出力する。なお、ユーザ入力の種類は、上述した例に限定されない。例えば、所定のキー若しくはボタンの押下、タッチジェスチャの認識、表情の認識、音声コマンドの認識、又はヘッドマウントディスプレイにおける視線の認識などが、ユーザ入力として定義されてもよい。
【００６４】
（７）表示制御部
表示制御部１９０は、オブジェクト配置部１５０による配置に従って、仮想オブジェクトを入力画像に重畳することにより、出力画像を生成する。そして、表示制御部１９０は、生成した出力画像を表示部１１０の画面に表示させる。仮想オブジェクトは、図８を用いて説明したように、当該仮想オブジェクトのオブジェクト配置行列と表示の時点で認識される環境認識行列とにより表現される位置及び姿勢で、入力画像に重畳される。例えば、表示制御部１９０による仮想オブジェクトの表示のトリガは、上述した第１のユーザ入力の検出であってもよい。その代わりに、表示制御部１９０による仮想オブジェクトの表示のトリガは、他の装置からのオブジェクト配置データの受信又は入力画像内の何らかのパターンの認識などであってもよい。
【００６５】
［２−３．操作シナリオ］
次に、図１１〜図１３を用いて、仮想オブジェクトの操作に関する２つの操作シナリオを説明する。第１の操作シナリオでは、新たな仮想オブジェクトが、基準環境内に配置される。第２の操作シナリオでは、配置済みの仮想オブジェクトがユーザによる操作を通じて移動される。
【００６６】
（１）新たな仮想オブジェクトの配置
図１１は、第１の操作シナリオに沿って、新たな仮想オブジェクトが基準環境内に配置される様子を示している。
【００６７】
まず、時刻ｔ１０において、画像処理装置１００は、テーブル１１の上方に位置し、やや傾いた姿勢を有する。この時点で、ユーザ入力は検出されない。
【００６８】
次に、時刻ｔ１１において、プレス（Press）イベントが第１のユーザ入力として検出される。すると、オブジェクト配置部１５０は、画像処理装置１００の前方に仮想オブジェクトＶ１１を配置する。表示制御部１９０は、配置された仮想オブジェクトＶ１１を画面に表示させる。
【００６９】
時刻ｔ１２において、ユーザは、プレスを継続したまま、画像処理装置１００を右に回転させている。オブジェクト配置部１５０は、仮想オブジェクトＶ１１から回転された姿勢を有する仮想オブジェクトＶ１２を画像処理装置１００の前方に配置する。即ち、ユーザによる操作が継続されている間、仮想オブジェクトの配置は、端末の位置及び姿勢に追随する。
【００７０】
次に、時刻ｔ１３において、リリース（Release）イベントが第２のユーザ入力として検出される。オブジェクト配置部１５０は、画像処理装置１００の前方に仮想オブジェクトＶ１３を配置し、仮想オブジェクトＶ１３のオブジェクト配置行列をオブジェクトＤＢ１６０に記憶させる。表示制御部１９０は、配置の確定した仮想オブジェクトＶ１１３を画面に表示させる。このような時刻ｔ１１〜ｔ１３にかけての一連の操作によって、ユーザは、新たな仮想オブジェクトを基準環境内に自在に配置することができる。
【００７１】
その後、時刻ｔ１４では、画像処理装置１００は、時刻ｔ１３と比較して左に移動している。認識部１３０は、時刻ｔ１４の入力画像を用いて、新たな環境認識行列を認識する。すると、表示制御部１９０は、時刻ｔ１３において確定した仮想オブジェクトＶ１３のオブジェクト配置行列と新たに認識された環境認識行列とにより表現される位置及び姿勢で、仮想オブジェクトＶ１３を画面に表示させる。
【００７２】
（２）仮想オブジェクトの移動
上述したように、第１の操作シナリオによれば、ユーザによる操作が継続されている間、仮想オブジェクトの配置は、端末の位置及び姿勢に追随する。こうした追随動作は、配置済みの仮想オブジェクトについては、次のような仕組みによって実現され得る。
【００７３】
図１２は、第２の操作シナリオに沿って、配置済みの仮想オブジェクトが移動される様子を示している。
【００７４】
時刻ｔ２０において、プレス（Press）イベントが検出される。表示制御部１９０は、例えばプレス位置に従って操作対象の仮想オブジェクトＶ０を特定し、仮想オブジェクトＶ０のオブジェクト配置行列Ｍａｒｒａｎｇｅ（Ｖ０）を取得する。そして、表示制御部１９０は、時刻ｔ２０における環境認識行列Ｍｒｅｃｏｇ（ｔ２０）とオブジェクト配置行列Ｍａｒｒａｎｇｅ（Ｖ０）との積である相対配置行列Ｍｒｅｌを計算する。ここで計算される相対配置行列Ｍｒｅｌは、リリース（Release）イベントが検出されるまで維持され、操作継続中の仮想オブジェクトＶ０の表示のために使用される。
【００７５】
時刻ｔ２１において、ユーザは、プレスを継続したまま、画像処理装置１００を右に回転させている。表示制御部１９０は、時刻ｔ２０において計算された相対配置行列Ｍｒｅｌを用いて、画像処理装置１００に対する仮想オブジェクトＶ０の相対的な位置及び姿勢が維持されるように、仮想オブジェクトＶ０を画面に表示させる。
【００７６】
その後、時刻ｔ２２において、リリース（Release）イベントが検出される。認識部１３０は、時刻ｔ２２の入力画像を用いて、新たな環境認識行列Ｍｒｅｃｏｇ（ｔ２２）を認識する。すると、オブジェクト配置部１５０は、新たな環境認識行列の逆行列Ｍｒｅｃｏｇ−１（ｔ２２）と相対配置行列Ｍｒｅｌとの積である新たなオブジェクト配置行列Ｍ´ａｒｒａｎｇｅ（Ｖ０）を計算する。そして、オブジェクト配置部１５０は、新たなオブジェクト配置行列Ｍ´ａｒｒａｎｇｅ（Ｖ０）をオブジェクトＤＢ１６０に記憶させる。
【００７７】
このような時刻ｔ２０〜ｔ２２にかけての一連の操作によって、ユーザは、配置済みの仮想オブジェクトを３次元空間内でドラッグするように自在に動かすことができる。なお、ここで説明するユーザインタフェースによって操作される仮想オブジェクトの数は、１つでなくてもよい。即ち、複数の仮想オブジェクトが一連の操作によってまとめて移動されてもよい。
【００７８】
（３）基準環境の乗り換え
上述した相対配置行列Ｍｒｅｌを用いることにより、仮想オブジェクトが関連付けられている基準環境を、異なる環境へ乗り換えることも可能となる。
【００７９】
図１３は、基準環境の乗り換えについて説明するための説明図である。
【００８０】
時刻ｔ３０において、プレス（Press）イベントが検出される。表示制御部１９０は、例えばプレス位置に従って操作対象の仮想オブジェクトＶ０を特定し、仮想オブジェクトＶ０のオブジェクト配置行列Ｍａｒｒａｎｇｅ（Ｖ０）を取得する。ここでは、オブジェクト配置行列Ｍａｒｒａｎｇｅ（Ｖ０）は、基準座標系ＣＳ２を有する基準環境Ｅｎ２に関連付けられているものとする。そして、表示制御部１９０は、時刻ｔ３０における環境認識行列Ｍｒｅｃｏｇ（ｔ３０）とオブジェクト配置行列Ｍａｒｒａｎｇｅ（Ｖ０）との積である相対配置行列Ｍｒｅｌを計算する。
【００８１】
時刻ｔ３１において、ユーザは、プレスを継続したまま、画像処理装置１００を移動させている。表示制御部１９０は、時刻ｔ３０において計算された相対配置行列Ｍｒｅｌを用いて、画像処理装置１００に対する仮想オブジェクトＶ０の相対的な位置及び姿勢が維持されるように、仮想オブジェクトＶ０を画面に表示させる。
【００８２】
その後、時刻ｔ３２において、リリース（Release）イベントが検出される。認識部１３０は、時刻ｔ３２の入力画像に映る新たな環境Ｅｎ３の位置及び姿勢を表現する新たな環境認識行列Ｍｒｅｃｏｇ（ｔ３２）を認識する。環境Ｅｎ３は、固有の座標系ＣＳ３を有する。すると、オブジェクト配置部１５０は、新たな環境認識行列の逆行列Ｍｒｅｃｏｇ−１（ｔ３２）と相対配置行列Ｍｒｅｌとの積である新たなオブジェクト配置行列Ｍ´ａｒｒａｎｇｅ（Ｖ０）を計算する。そして、オブジェクト配置部１５０は、新たなオブジェクト配置行列Ｍ´ａｒｒａｎｇｅ（Ｖ０）を、新たな基準環境Ｅｎ３と関連付けてオブジェクトＤＢ１６０に記憶させる。
【００８３】
このような時刻ｔ３０〜ｔ３２にかけての一連の操作によって、ユーザは、配置済みの仮想オブジェクトをある環境から他の環境へドラッグアンドドロップするように、あるいは付箋を貼り替えるように自在に動かすことができる。
【００８４】
［２−４．処理の流れ］
図１４は、第１の実施形態に係る画像処理装置１００による画像処理の流れの一例を示すフローチャートである。
【００８５】
図１４を参照すると、まず、画像取得部１２０は、撮像部１０２により生成される撮像画像を入力画像として取得する（ステップＳ１１０）。そして、画像取得部１２０は、取得した入力画像を、認識部１３０及び表示制御部１９０へ出力する。
【００８６】
次に、認識部１３０は、画像取得部１２０から入力される入力画像を用いて、基準環境の位置及び姿勢を表現する環境認識行列Ｍｒｅｃｏｇを認識する（ステップＳ１２０）。そして、認識部１３０は、認識した環境認識行列Ｍｒｅｃｏｇを、計算部１４０、オブジェクト配置部１５０及び表示制御部１９０へ出力する。
【００８７】
次に、表示制御部１９０は、基準環境内に配置済みの仮想オブジェクトが存在する場合には、当該配置済みの仮想オブジェクトのオブジェクト配置データを、オブジェクトＤＢ１６０から取得する（ステップＳ１２５）。そして、表示制御部１９０は、表示すべき仮想オブジェクトの各々について、環境認識行列Ｍｒｅｃｏｇとオブジェクト配置行列Ｍａｒｒａｎｇｅとの積である相対配置行列Ｍｒｅｌを計算する（ステップＳ１３０）。
【００８８】
次に、図１４の画像処理は、操作状態に応じて分岐する。まず、ユーザにより所定の操作が開始され又は当該所定の操作が継続中である場合には、処理はステップＳ１５０へ進む（ステップＳ１３５）。また、それまでに継続されていた操作の終了が検出された場合には、処理はステップＳ１６０へ進む（ステップＳ１４０）。それ以外の場合には、処理はステップＳ１７０へ進む。
【００８９】
ステップＳ１５０では、図１５を用いて詳細に説明されるオブジェクト配置処理が実行される。
【００９０】
ステップＳ１６０においても、図１５を用いて詳細に説明されるオブジェクト配置処理が実行される。その後、操作対象の仮想オブジェクトについて新たに決定され又は更新されるオブジェクト配置行列が、オブジェクトＤＢ１６０により記憶される（ステップＳ１６５）。
【００９１】
そして、表示制御部１９０は、操作対象の仮想オブジェクト及びその他の表示すべき仮想オブジェクトが重畳された出力画像を生成し、生成した出力画像を表示部１１０の画面に表示させる（ステップＳ１７０）。
【００９２】
図１５は、図１４のステップＳ１５０及びＳ１６０に相当するオブジェクト配置処理の詳細な流れの一例を示すフローチャートである。
【００９３】
図１５のオブジェクト配置処理は、まず、操作対象の仮想オブジェクトが既存の（配置済みの）オブジェクトであるか否かに応じて分岐する（ステップＳ１５１）。操作対象の仮想オブジェクトが既存のオブジェクトではない場合には、処理はステップＳ１５７へ進む。一方、操作対象の仮想オブジェクトが既存のオブジェクトである場合には、処理はステップＳ１５２へ進む。
【００９４】
ステップＳ１５２において、オブジェクト配置処理は、さらに操作対象の仮想オブジェクトについて相対配置行列Ｍｒｅｌが計算済みであるか否かに応じて分岐する。相対配置行列Ｍｒｅｌが計算済みでない場合には、処理はステップＳ１５３へ進む。一方、相対配置行列Ｍｒｅｌが計算済みである場合には、処理はステップＳ１５５へ進む。
【００９５】
操作対象の仮想オブジェクトが既存のオブジェクトであって、相対配置行列Ｍｒｅｌが計算済みでない場合には、表示制御部１９０は、まず、操作対象の仮想オブジェクトのオブジェクト配置行列Ｍａｒｒａｎｇｅを取得する（ステップＳ１５３）。そして、表示制御部１９０は、この時点の環境認識行列Ｍｒｅｃｏｇと取得したオブジェクト配置行列Ｍａｒｒａｎｇｅとに基づいて、相対配置行列Ｍｒｅｌを計算する（ステップＳ１５４）。
【００９６】
操作対象の仮想オブジェクトが既存のオブジェクトであって、相対配置行列Ｍｒｅｌが計算済みである場合には、表示制御部１９０は、まず、操作終了が検出されたか否かを判定する（ステップＳ１５５）。そして、操作終了が検出された場合には、表示制御部１９０は、相対配置行列Ｍｒｅｌとこの時点の環境認識行列Ｍｒｅｃｏｇとに基づいて、操作対象の仮想オブジェクトのオブジェクト配置行列Ｍａｒｒａｎｇｅを再計算する（ステップＳ１５６）。
【００９７】
新たな仮想オブジェクトが配置されようとしている場合には、計算部１４０により、認識部１３０から入力される環境認識行列の逆行列Ｍｒｅｃｏｇ−１が計算される（ステップＳ１５７）。また、オブジェクト配置部１５０は、前方オフセット行列Ｔｏｆｆｓｅｔ及び操作オフセット行列Ｔｔｏｕｃｈを決定する（ステップＳ１５８）。なお、これらオフセット行列が使用されない場合には、ステップＳ１５８の処理は省略されてもよい。そして、オブジェクト配置部１５０は、環境認識行列の逆行列Ｍｒｅｃｏｇ−１、前方オフセット行列Ｔｏｆｆｓｅｔ及び操作オフセット行列Ｔｔｏｕｃｈに基づいて、新たに配置される仮想オブジェクトのオブジェクト配置行列Ｍａｒｒａｎｇｅを決定する（ステップＳ１５９）。
【００９８】
［２−５．表示のバリエーション］
本開示に係る技術において、仮想オブジェクトは、様々な形態で表示され得る。本項では、仮想オブジェクトの様々な表示のバリエーションについて説明する。
【００９９】
（１）基準面の判定
例えば、仮想オブジェクトは、予め定義される基準面を有してもよい。仮想オブジェクトがカード状の平面的な形状を有する場合には、一方の面が基準面、他方の面が非基準面として定義され得る。仮想オブジェクトが立体的な形状を有する場合には、当該仮想オブジェクトの基準面は、基準面から外へ向かう法線ベクトルによって識別され得る。このように仮想オブジェクトが基準面を有する場合、表示制御部１９０は、画像処理装置１００の画面に当該仮想オブジェクトの基準面が映るか否かに応じて、当該仮想オブジェクトの表示を変化させてよい。
【０１００】
例えば、図１６の例を参照すると、画像処理装置１００の画面に２つの仮想オブジェクトＶ１１及びＶ１２が映っている。画像処理装置１００の画面に映っている仮想オブジェクトＶ１１の面は、非基準面である。画像処理装置１００の画面に映っている仮想オブジェクトＶ１２の面は、基準面である。従って、表示制御部１９０は、例えば、仮想オブジェクトＶ１２の形状、スケール、透明度、色、解像度又はエッジの太さなどの表示属性を、仮想オブジェクトＶ１１とは異なる値に設定し得る。また、表示制御部１９０は、仮想オブジェクトＶ１１及びＶ１２により示される情報の内容を、基準面が映っているか否かに応じて変化させてもよい。
【０１０１】
このような表示の制御によって、表示される仮想オブジェクトがどの方向を向いているかをユーザが容易に把握することができる。
【０１０２】
（２）距離に応じた表示
表示制御部１９０は、画像処理装置１００と仮想オブジェクトとの間の距離に応じて、当該仮想オブジェクトの表示を変化させてもよい。
【０１０３】
例えば、図１７の例を参照すると、画像処理装置１００の画面に４つの仮想オブジェクトＶ２１、Ｖ２２、Ｖ２３及びＶ２４が映っている。このうち、仮想オブジェクトＶ２１及びＶ２４は、仮想オブジェクトＶ２２及びＶ２３と比較して、画像処理装置１００からより遠くに位置する。この場合、表示制御部１９０は、例えば、仮想オブジェクトＶ２２及びＶ２３がより明瞭にユーザに視認されるように、仮想オブジェクトＶ２２及びＶ２３のいずれかの表示属性を強調し得る。また、表示制御部１９０は、仮想オブジェクトＶ２２及びＶ２３について、より詳細な情報の内容を表示させてもよい。
【０１０４】
このような表示の制御によって、多数の仮想オブジェクトが画面に表示されるような状況下で、ユーザがより関心を持っている（即ち、端末を近付けている）仮想オブジェクトの（又はその表示内容の）視認性を高めることができる。
【０１０５】
（３）整列表示
表示制御部１９０は、所定の条件が満たされる場合に、表示すべき複数の仮想オブジェクトが所定の間隔を空けて整列するように、当該複数の仮想オブジェクトを再配置してもよい。
【０１０６】
例えば、図１８の例を参照すると、画像処理装置１００の画面に６つの仮想オブジェクトＶ３１〜Ｖ３６が映っている。しかし、これら仮想オブジェクトがその配置の通りに表示されると、画面内で仮想オブジェクトが密集してしまい、仮想オブジェクトの視認性が低下する。そこで、例えば、表示制御部１９０は、所定のユーザ入力が検出された場合に、これら仮想オブジェクトを整列させる。図１８の例では、画像処理装置１００のより近くに位置する４つの仮想オブジェクトＶ３２、Ｖ３３、Ｖ３５及びＶ３６が、所定の間隔を空けて整列するように再配置されている。仮想オブジェクトを再配置させるための上記所定の条件は、ユーザ入力の代わりに、例えば画面内の仮想オブジェクトの個数が所定の閾値を上回ることなどであってもよい。
【０１０７】
このような表示の制御によって、多数の仮想オブジェクトが画面に表示されるような状況下で、仮想オブジェクトの各々が示す情報の内容の視認性を高めることができる。
【０１０８】
［２−６．応用例］
本開示に係る技術は、ここまでに説明したようなＡＲアプリケーションに限定されず、様々な用途に応用され得る。本項では、２つの応用例について説明する。
【０１０９】
（１）軌跡／アニメーションの記憶
例えば、オブジェクト配置部１５０は、記憶開始を指示するユーザ入力が検出された場合に、複数の画像にわたって、仮想オブジェクトのオブジェクト配置行列を基準環境と関連付けて連続的にオブジェクトＤＢ１６０に記憶させる。それにより、移動する画像処理装置１００の軌跡に沿った仮想オブジェクトの軌跡又は移動する仮想オブジェクトのアニメーションを簡易に生成することが可能となる。
【０１１０】
例えば、表示制御部１９０は、連続的に記憶された複数のオブジェクト配置行列に従って仮想オブジェクトの複数のインスタンスを１つの入力画像に重畳することにより、仮想オブジェクトの軌跡を当該入力画像に映る環境内に表示させてもよい。また、表示制御部１９０は、連続的に記憶された複数のオブジェクト配置行列の各々に従って一連の入力画像の各々に仮想オブジェクトのインスタンスを順次重畳することにより、仮想オブジェクトが動くアニメーションを表示させてもよい。
【０１１１】
図１９の例を参照すると、時刻ｔ４１から時刻ｔ４４にかけて画像処理装置１００が移動した軌跡に沿って、仮想オブジェクトＶ０の４つのインスタンスのオブジェクト配置行列Ｍａｒｒａｎｇｅ（ｔ４１）〜Ｍａｒｒａｎｇｅ（ｔ４４）が、基準環境Ｅｎ１と関連付けて記憶されている。仮想オブジェクトＶ０のこれら４つのインスタンスを１つのフレームに重畳すれば、仮想オブジェクトＶ０の軌跡が表示される。一方、仮想オブジェクトＶ０のこれら４つのインスタンスをそれぞれ対応するタイミングで別々のフレームに重畳すれば、仮想オブジェクトＶ０の動くアニメーションが表示される。
【０１１２】
表示制御部１９０は、異なる時点で記憶されたオブジェクト配置行列から、当該異なる時点の間の仮想オブジェクトの位置及び姿勢を表現する追加的なオブジェクト配置行列を補間してもよい。それにより、より少ないオブジェクト配置データからより時間解像度の高い軌跡又はアニメーションを生成することができる。また、ここでの補間手法として、例えば３次元スプライン曲線又はベジエ曲線を用いた曲線補間法を採用すれば、滑らかな補間が可能である。
【０１１３】
（２）撮像位置及び撮像姿勢の記録
本開示に係る技術が撮像装置に搭載される場合には、撮像の履歴を被写体の環境と関連付けて記録することが可能となる。例えば、画像処理装置１００がデジタルカメラ又は撮像機能を有する何らかの端末であるものと仮定する。その場合、入力画像は、何らかの被写体を映す写真である。オブジェクト配置部１５０は、写真が撮像された際の撮像位置及び撮像姿勢を記録するために、上述したオブジェクト配置行列をデータベースに登録する。その後、同じ環境において、登録されたオブジェクト配置行列に従って仮想オブジェクトが端末の画面に表示されると、ユーザは、どのような撮像位置及び撮像姿勢で写真が撮像されたかを事後的に知ることができる。オブジェクト配置行列の登録のトリガは、例えば、撮像指示に対応するユーザ入力（例えば、シャッターボタンの押下）であってよい。かかる構成によれば、撮像指示が検出された場合に自動的にオブジェクト配置行列がデータベースに登録されるため、写真を撮像するユーザに追加的な負担を課すことなく、撮像位置及び撮像姿勢を記録することが可能となる。
【０１１４】
＜３．第２の実施形態＞
第２の実施形態では、上述した画像処理装置１００と同等の構成をそれぞれ含む複数の端末装置３００が、ＡＲ空間に配置される仮想オブジェクトを共有する。
【０１１５】
［３−１．システムの概要］
図２０を参照すると、第２の実施形態に係る画像処理システムを構成する管理サーバ２００、端末装置３００ａ及び端末装置３００ｂが示されている。なお、本明細書において、端末装置３００ａ及び端末装置３００ｂを互いに区別する必要がない場合には、これらを端末装置３００と総称する。
【０１１６】
端末装置３００は、仮想オブジェクトを何らかの基準環境内に配置する。図２０の例では、基準環境として、テーブル１１を含む１つの空間に相当する環境４が示されている。しかしながら、本開示に係る技術が適用される基準環境は、このような環境に限定されない。例えば、端末装置３００ａが存在する空間と端末装置３００ｂが存在する空間とが異なる場合であっても、それら空間の間で共通する特徴点群若しくは物体が存在し、又は同視し得る校正された座標系が存在する場合には、それら空間に相当する複数の環境が１つの共通的な基準環境として扱われてよい。また、１つの空間において互いに異なる時刻に認識される環境が、１つの共通的な基準環境として扱われてもよい。
【０１１７】
例えば、図２１Ａを参照すると、環境５ａ内に、端末装置３００ａと本１５ａとが存在する。図２１Ｂを参照すると、環境５ｂ内に、端末装置３００ｂと本１５ｂとが存在する。本１５ａ及び本１５ｂは、共通的な特徴点群を有する。従って、端末装置３００ａ及び３００ｂは、それら特徴点群を用いて１つの共通的な基準座標系ＣＳ５を認識し、基準座標系ＣＳ５と関連付けられる仮想オブジェクトを共有することができる。
【０１１８】
管理サーバ２００は、共有される仮想オブジェクトのデータを管理する情報処理装置である。管理サーバ２００は、端末装置３００とは別体に構成される装置であってもよく、又は端末装置３００の一部であってもよい。
【０１１９】
［３−２．サーバの構成］
図２２は、管理サーバ２００の構成の一例を示すブロック図である。図２２を参照すると、管理サーバ２００は、通信部２１０、制御部２２０及び記憶部２５０を備える。
【０１２０】
通信部２１０は、管理サーバ２００による他の装置との間の通信を仲介する通信インタフェースである。通信部２１０は、任意の無線通信プロトコル又は有線通信プロトコルをサポートし、他の装置との間の通信接続を確立する。
【０１２１】
制御部２２０は、ＣＰＵ又はＤＳＰなどのプロセッサに相当する。制御部２２０は、記憶部２５０又は他の記憶媒体に記憶されるプログラムを実行することにより、管理サーバ２００の機能を動作させる。ユーザ管理部２３０及びオブジェクト管理部２４０は、管理サーバ２００の機能モジュールの一例である。
【０１２２】
ユーザ管理部２３０は、仮想オブジェクトの共有に参加するユーザを管理する機能モジュールである。ユーザ管理部２３０は、例えば、ユーザの認証、ユーザのグルーピング及び端末装置３００へのユーザ情報の提供などを制御する。
【０１２３】
オブジェクト管理部２４０は、共有される仮想オブジェクトのデータを管理する機能モジュールである。オブジェクト管理部２４０は、例えば、基準環境に仮想オブジェクトを配置した端末装置３００から、通信部２１０を介してデータ登録要求を受信する。データ登録要求には、共有される仮想オブジェクトのオブジェクト配置データが含まれる。オブジェクト管理部２４０は、仮想オブジェクトの形状及び仮想オブジェクトにより示される情報の内容を示すオブジェクトデータを、端末装置３００から受信してもよい。オブジェクト管理部２４０は、かかるデータ登録要求の受信に応じて、オブジェクト配置データ及びオブジェクトデータを記憶部２５０に記憶させる。また、オブジェクト管理部２４０は、端末装置３００からのデータ配信要求に応じて、又は定期的に、通信部２１０を介して、登録されているオブジェクト配置データ（及びオブジェクトデータ）を端末装置３００へ配信する。
【０１２４】
記憶部２５０は、半導体メモリ又はハードディスクなどの記憶媒体により構成され、管理サーバ２００による処理のためのプログラム及びデータを記憶する。記憶部２５０により記憶されるデータは、オブジェクト配置データ２５２及びオブジェクトデータ２５４を含む。
【０１２５】
図２３には、一例としてのオブジェクト配置データ２５２が示されている。図２３の例において、オブジェクト配置データ２５２は、「基準環境」、「オブジェクトＩＤ」、「作成者ＩＤ」及び「配置」という４つのデータ項目を有する。「基準環境」は、各仮想オブジェクトが配置された環境を識別する識別子である。「オブジェクトＩＤ」は、各仮想オブジェクトを一意に識別するための識別子である。「作成者ＩＤ」は、各仮想オブジェクトを配置したデバイス又はユーザを識別するための識別子である。「配置」は、各仮想オブジェクトのオブジェクト配置行列を格納するデータ項目である。
【０１２６】
図２４には、一例としてのオブジェクトデータ２５４が示されている。図２４の例において、オブジェクトデータ２５４は、「オブジェクトＩＤ」、「表示属性データ」、「ユーザデータ」、「ステータス」及び「デバイスデータ」という５つのデータ項目を有する。「オブジェクトＩＤ」は、各仮想オブジェクトを一意に識別するための識別子である。「表示属性データ」は、各仮想オブジェクトの表示属性を定義するデータであり、端末装置３００における当該仮想オブジェクトの表示のために用いられる。「ユーザデータ」、「ステータス」及び「デバイスデータ」は、各仮想オブジェクトを配置した端末に関連する関連情報の一例である。例えば、「ユーザデータ」は、当該端末のユーザの識別情報、名称又は顔写真データなどを含み得る。「ステータス」は、当該端末のユーザのプレゼンス情報又は操作ステータス情報などを含み得る。「デバイスデータ」は、当該端末の識別情報、名称又は外観データなどを含み得る。
【０１２７】
オブジェクト管理部２４０は、図２４に例示したような関連情報の少なくとも一部を端末装置３００に配信し、配信した関連情報を仮想オブジェクトと共に端末装置３００に表示させてよい。
【０１２８】
［３−３．端末の構成］
端末装置３００のハードウェア構成は、図９に例示した画像処理装置１００のハードウェア構成と同様であってよい。図２５は、端末装置３００の論理的機能の構成の一例を示すブロック図である。図２５を参照すると、端末装置３００は、画像取得部１２０、データ取得部３２５、認識部１３０、計算部１４０、オブジェクト配置部３５０、登録部３５５、オブジェクトＤＢ３６０、操作制御部３８０及び表示制御部３９０を備える。
【０１２９】
（１）データ取得部
データ取得部３２５は、定期的に又はユーザからの指示に応じて、データ配信要求を管理サーバ２００へ送信する。そして、データ取得部３２５は、他の端末との間で共有される仮想オブジェクトのオブジェクト配置データ及びオブジェクトデータを取得する。
【０１３０】
データ取得部３２５により取得されるオブジェクト配置データは、他の端末により配置される仮想オブジェクトのオブジェクト配置行列を含む。当該オブジェクト配置行列は、他の端末において認識される環境認識行列の逆行列に基づいて決定される行列であって、当該他の端末により配置される仮想オブジェクトの基準環境内での位置及び姿勢を表現する。また、データ取得部３２５により取得されるオブジェクトデータは、仮想オブジェクトを配置した端末に関連する、図２４に例示したような関連情報を含む。データ取得部３２５は、これらオブジェクト配置データ及びオブジェクトデータを、オブジェクトＤＢ３６０に記憶させる。
【０１３１】
（２）オブジェクト配置部
オブジェクト配置部３５０は、画像処理装置１００のオブジェクト配置部１５０と同様、認識部１３０により認識される環境認識行列の逆行列に基づく位置及び姿勢を有する仮想オブジェクトを、基準環境内に配置する。配置される仮想オブジェクトの位置及び姿勢は、オブジェクト配置行列により表現される。
【０１３２】
オブジェクト配置部３５０は、例えば、環境認識行列の逆行列Ｍｒｅｃｏｇ−１により表現される位置及び姿勢で、端末の位置及び姿勢に重ねるように仮想オブジェクトを配置してもよい。また、オブジェクト配置部３５０は、端末の位置及び姿勢から、上述した前方オフセット行列及び操作オフセット行列の一方又は双方を用いてオフセットされる位置に、仮想オブジェクトを配置してもよい。
【０１３３】
オブジェクト配置部３５０は、基準環境内に配置した仮想オブジェクトのオブジェクト配置行列を、表示制御部３９０へ出力する。また、オブジェクト配置部３５０は、操作制御部３８０により所定のユーザ入力が検出された場合に、オブジェクト配置行列を、基準環境と関連付けてオブジェクトＤＢ３６０に記憶させると共に、登録部３５５へ出力する。
【０１３４】
（３）登録部
登録部３５５は、オブジェクト配置部３５０からオブジェクト配置行列が入力されると、通信部１１２を介してデータ登録要求を管理サーバ２００へ送信する。データ登録要求には、オブジェクト配置行列と共に、仮想オブジェクトの表示属性を定義する表示属性データ及び上述した様々な関連情報が含まれてよい。
【０１３５】
（４）オブジェクトＤＢ
オブジェクトＤＢ３６０は、画像処理装置１００のオブジェクトＤＢ１６０と同様、オブジェクト配置部３５０により配置される仮想オブジェクトのオブジェクト配置行列を記憶するデータベースである。さらに、オブジェクトＤＢ３６０は、データ取得部３２５により管理サーバ２００から受信されるオブジェクト配置データ及びオブジェクトデータを記憶する。オブジェクトＤＢ３６０により記憶されるこれらデータは、表示制御部３９０により仮想オブジェクトの表示処理が実行される際に読み出される。
【０１３６】
（５）操作制御部
操作制御部３８０は、画像処理装置１００の操作制御部１８０と同様、端末装置３００において実行されるＡＲアプリケーションをユーザに操作させるためのユーザインタフェースを提供する。例えば、操作制御部３８０は、タッチ又はドラッグの開始から終了までの一連の操作を通じて、ユーザに仮想オブジェクトの配置を所望の位置及び姿勢に自在に調整させる。操作制御部３８０は、ユーザ入力を検出すると、検出したユーザ入力の種類及び入力位置を示す入力情報を、オブジェクト配置部３５０へ出力する。
【０１３７】
（６）表示制御部
表示制御部３９０は、オブジェクトＤＢ３６０により記憶されるオブジェクト配置データに従って、仮想オブジェクトを入力画像に重畳することにより、出力画像を生成する。そして、表示制御部３９０は、生成した出力画像を表示部１１０の画面に表示させる。
【０１３８】
本実施形態において表示される仮想オブジェクトは、他の端末において基準環境内に配置された仮想オブジェクトを含む。他の端末において基準環境内に配置された仮想オブジェクトは、当該他の端末の入力画像に映る基準環境の位置及び姿勢を表現する第１の環境認識行列の逆行列に基づいて決定されるオブジェクト配置行列を有する。一方、認識部１３０は、画像取得部１２０により取得される入力画像に映る基準環境の位置及び姿勢を表現する第２の環境認識行列を認識する。この場合、表示制御部３９０は、図８を用いて説明した手法に従って、第２の環境認識行列と他の端末において配置された仮想オブジェクトのオブジェクト配置行列とにより表現される位置及び姿勢で、当該仮想オブジェクトを入力画像に重畳する。
【０１３９】
第１の実施形態に係る表示制御部１９０と同様、表示制御部３９０は、仮想オブジェクトが基準面を有する場合、画像処理装置１００の画面に当該仮想オブジェクトの基準面が映るか否かに応じて、当該仮想オブジェクトの表示を変化させてもよい。また、表示制御部３９０は、端末装置３００と仮想オブジェクトとの間の距離に応じて、当該仮想オブジェクトの表示を変化させてもよい。また、表示制御部３９０は、所定の条件が満たされる場合に、表示すべき複数の仮想オブジェクトが所定の間隔を空けて整列するように、当該複数の仮想オブジェクトを再配置してもよい。
【０１４０】
また、本実施形態において、表示制御部３９０は、仮想オブジェクトに対応する位置に当該仮想オブジェクトを配置した端末が存在しているか否かに応じて、当該仮想オブジェクトの表示を変化させてもよい。
【０１４１】
例えば、画像に映る端末を識別する標識としての役割を有する仮想オブジェクトが用いられるものと仮定する。配置された仮想オブジェクトの近傍に当該仮想オブジェクトを配置した端末が存在する場合、実空間において当該端末が視認され得るため、当該端末（又はそのユーザ）の詳細な情報（ユーザデータ、ステータス及びデバイスデータなど）は必ずしも表示されなくよい。これに対し、配置された仮想オブジェクトの近傍に当該仮想オブジェクトを配置した端末が存在しない場合、当該端末（又はそのユーザ）のより詳細な情報が表示されることが有益である。
【０１４２】
図２６を参照すると、端末装置３００ｂの画面に、端末装置３００ａにより配置された仮想オブジェクトＶＡ１が表示されている。仮想オブジェクトＶＡ１の近傍には、端末装置３００ａが存在する。このような状況において、表示制御部３９０は、端末装置３００ａのユーザについての簡易な情報（図２６の例ではユーザＩＤ“Ｕａ”）のみを仮想オブジェクトＶＡ１に付加する。
【０１４３】
一方、図２７を参照すると、端末装置３００ｂの画面に、端末装置３００ａにより配置された仮想オブジェクトＶＡ１が再び表示されている。仮想オブジェクトＶＡ１の近傍には、端末装置３００ａは存在しない。端末装置３００ａは、端末装置３００ｂとは異なる空間（但し、共通的な基準環境を有する空間）に存在していてもよく、又は端末装置３００ｂと同じ空間において過去に存在したのであってもよい。このような状況において、表示制御部３９０は、端末装置３００ａのユーザについての詳細な情報（図２７の例ではユーザＩＤ、ステータス及び顔写真）を仮想オブジェクトＶＡ１に付加する。それにより、端末装置３００ｂのユーザは、視認されない端末装置３００ａのユーザの詳細を知ることができる。
【０１４４】
表示制御部３９０は、例えば、図２６又は図２７に例示したような仮想オブジェクトを指定するユーザ入力が検出された場合に、当該仮想オブジェクトを配置した端末との間の通信を用いるアプリケーションを起動してもよい。ここで起動されるアプリケーションは、メーラ、インスタントメッセンジャ、ＳＮＳ（Social  Networking  Service）ツール又はコンテンツ共有アプリケーションなどの任意のアプリケーションであってよい。図２８の例では、端末装置３００ｂのユーザが仮想オブジェクトＶＡ１をタップすることにより、端末装置３００ａとの通信を開始するためにインスタントメッセンジャが起動されている。このような構成により、ユーザ間で仮想オブジェクトを介して手軽に通信をすることが可能となる。
【０１４５】
［３−４．処理の流れ］
図２９は、第２の実施形態に係る装置間の処理の流れの一例を示すシーケンス図である。
【０１４６】
図２９を参照すると、まず、端末装置３００ａからデータ配信要求が管理サーバ２００へ送信され、管理サーバ２００から応答が返される（ステップＳ２１０）。この時点では、基準環境に仮想オブジェクトは配置されていないものとする。従って、端末装置３００ａは、オブジェクト配置データを受信しない。同様に、端末装置３００ｂからデータ配信要求が管理サーバ２００へ送信され、管理サーバ２００から応答が返される（ステップＳ２１５）。
【０１４７】
次に、図１４及び図１５を用いて説明した画像処理を通じて、端末装置３００ａにより基準環境に仮想オブジェクトが配置される（ステップＳ２２０）。すると、端末装置３００ａは、データ登録要求を管理サーバ２００へ送信する（ステップＳ２２５）。データ登録要求には、配置された仮想オブジェクトのオブジェクト配置行列が含まれる。
【０１４８】
管理サーバ２００は、データ登録要求を受信すると、オブジェクト配置行列及びその他のデータをデータベースに登録する（ステップＳ２３０）。そして、管理サーバ２００は、登録完了を端末装置３００ａに通知する（ステップＳ２３５）。
【０１４９】
その後、端末装置３００ａからデータ配信要求が再び管理サーバ２００へ送信され、管理サーバ２００から応答が返される（ステップＳ２４０）。また、端末装置３００ｂからもデータ配信要求が管理サーバ２００へ送信され、管理サーバ２００から応答が返される（ステップＳ２４５）。この時点で、端末装置３００ａにより配置された仮想オブジェクトが管理サーバ２００のデータベースに登録されているため、管理サーバ２００から端末装置３００ｂへオブジェクト配置データが配信され得る。
【０１５０】
端末装置３００ａにより配置された仮想オブジェクトは、端末装置３００ａにおいて表示される（ステップＳ２５０）。また、端末装置３００ｂにおいても、管理サーバ２００から受信されたオブジェクト配置データを用いて、仮想オブジェクトが表示される（ステップＳ２５５）。この時点では、表示される仮想オブジェクトの近傍に端末装置３００ａが存在するため、端末装置３００ｂにおいて簡易な情報のみが当該仮想オブジェクトに付加され得る。
【０１５１】
その後、端末装置３００ａが端末装置３００ｂの画面に映らない場所へ移動したものとする。端末装置３００ｂは、引き続き管理サーバ２００とのやり取りを行い（ステップＳ２６０）、仮想オブジェクトを表示する（ステップＳ２６５）。この時点で、表示される仮想オブジェクトの近傍に端末装置３００ａが存在しないため、端末装置３００ｂにおいて端末装置３００ａの詳細な情報が当該仮想オブジェクトに付加され得る。
【０１５２】
＜４．まとめ＞
ここまで、図１〜図２９を用いて、本開示に係る技術の２つの実施形態について詳細に説明した。これら実施形態によれば、基準環境内の端末の位置及び姿勢を基準として基準環境の位置及び姿勢を表現する環境認識行列が認識され、認識された環境認識行列の逆行列に基づく位置及び姿勢で、仮想オブジェクトが基準環境内に配置される。従って、ユーザは、端末を３次元空間内で動かすことにより、ＡＲ空間に仮想オブジェクトを簡易かつ自在に配置することができる。また、仮想オブジェクトの配置が基準環境と関連付けられるため、共通する環境を認識可能な端末の間で、ＡＲ空間に配置された仮想オブジェクトを容易に共有することができる。
【０１５３】
また、仮想オブジェクトの配置が環境認識行列の逆行列により表現される位置から画像の撮像方向にオフセットされることで、ユーザは、配置された仮想オブジェクトを画面上で直ちに視認することができる。よって、ユーザにとって、仮想オブジェクトを見ながらその配置を調整することも容易となる。
【０１５４】
また、仮想オブジェクトの配置が環境認識行列の逆行列により表現される位置から画面でのユーザ入力位置に応じて当該画面に沿った方向にオフセットされることで、ユーザは、端末を動かすことなく仮想オブジェクトの配置を細かく調整することができる。
【０１５５】
また、仮想オブジェクトの配置はオブジェクト配置行列により表現され、当該オブジェクト配置行列と最新の環境認識行列とにより表現される位置及び姿勢で仮想オブジェクトが画面に表示され得る。それにより、端末と基準環境との間の位置関係が変化する場合にも、基準環境に対する相対的な仮想オブジェクトの位置及び姿勢が維持されるように、仮想オブジェクトを表示することができる。従って、付箋のように仮想オブジェクトをＡＲ空間に貼りつけるような仮想オブジェクトの配置が可能となる。
【０１５６】
なお、本明細書において説明した各装置による一連の制御処理は、ソフトウェア、ハードウェア、及びソフトウェアとハードウェアとの組合せのいずれを用いて実現されてもよい。ソフトウェアを構成するプログラムは、例えば、各装置の内部又は外部に設けられる記憶媒体に予め格納される。そして、各プログラムは、例えば、実行時にＲＡＭ（Random  Access  Memory）に読み込まれ、ＣＰＵなどのプロセッサにより実行される。
【０１５７】
また、各装置の論理的機能の一部は、当該装置上に実装される代わりに、クラウドコンピューティング環境内に存在する装置上に実装されてもよい。その場合には、論理的機能の間でやり取りされる情報が、図９に例示した通信部１１２を介して装置間で送信され又は受信され得る。
【０１５８】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１５９】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、
前記環境認識行列の逆行列を計算する計算部と、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置するオブジェクト配置部と、
を備える画像処理装置。
（２）
前記オブジェクト配置部は、配置される前記仮想オブジェクトの位置及び姿勢を表現するオブジェクト配置行列を前記環境と関連付けて記憶媒体に記憶させる、前記（１）に記載の画像処理装置。
（３）
前記オブジェクト配置部は、前記環境認識行列の前記逆行列により表現される位置から前記画像の撮像方向にオフセットされた位置に前記仮想オブジェクトを配置する、前記（２）に記載の画像処理装置。
（４）
前記画像処理装置は、
第１の時点で前記オブジェクト配置行列が記憶され、後続する第２の時点で新たに前記環境認識行列が認識された場合に、前記オブジェクト配置行列と新たに認識された前記環境認識行列とにより表現される位置及び姿勢で前記仮想オブジェクトを前記端末の画面に表示させる表示制御部、
をさらに備える、前記（２）又は前記（３）に記載の画像処理装置。
（５）
前記オブジェクト配置部は、前記端末の画面上でのユーザ入力位置に応じて当該画面に沿った方向にオフセットされた位置に前記仮想オブジェクトを配置する、前記（２）〜（４）のいずれか１項に記載の画像処理装置。
（６）
前記表示制御部は、第１のユーザ入力が検出された場合に、前記仮想オブジェクトを前記端末の画面に表示させ、
前記オブジェクト配置部は、第１のユーザ入力に後続する第２のユーザ入力が検出された場合に、前記表示制御部により表示されている前記仮想オブジェクトの前記オブジェクト配置行列を前記環境と関連付けて記憶媒体に記憶させる、
前記（４）に記載の画像処理装置。
（７）
前記第１のユーザ入力及び前記第２のユーザ入力は、一連の操作の開始及び終了にそれぞれ対応する、前記（６）に記載の画像処理装置。
（８）
前記表示制御部は、前記第１のユーザ入力の検出から前記第２のユーザ入力の検出までの間、前記第１のユーザ入力の検出の時点の前記端末に対する前記仮想オブジェクトの相対的な位置及び姿勢が維持されるように、前記仮想オブジェクトの表示を制御する、前記（６）又は前記（７）に記載の画像処理装置。
（９）
前記オブジェクト配置部は、前記第２のユーザ入力が検出された時点の画像から新たな環境が認識された場合に、表示されている前記仮想オブジェクトの位置及び姿勢を表現する新たな前記オブジェクト配置行列を前記新たな環境と関連付けて記憶媒体に記憶させる、前記（８）に記載の画像処理装置。
（１０）
前記オブジェクト配置部は、第３のユーザ入力が検出された場合に、複数の画像にわたって前記オブジェクト配置行列を前記環境と関連付けて連続的に記憶媒体に記憶させる、前記（４）に記載の画像処理装置。
（１１）
前記表示制御部は、連続的に記憶された前記オブジェクト配置行列を用いて、前記仮想オブジェクトの軌跡を前記環境内に表示させる、前記（１０）に記載の画像処理装置。
（１２）
前記表示制御部は、連続的に記憶された前記オブジェクト配置行列を用いて、前記仮想オブジェクトが前記環境内で動くアニメーションを表示させる、前記（１０）に記載の画像処理装置。
（１３）
前記表示制御部は、異なる時点で記憶された前記オブジェクト配置行列から、当該異なる時点の間の前記仮想オブジェクトの位置及び姿勢を補間する、前記（１１）又は前記（１２）に記載の画像処理装置。
（１４）
前記端末は、撮像装置であり、
前記仮想オブジェクトは、前記画像の撮像位置及び撮像姿勢を記録するために前記環境内に配置される、
前記（２）〜（４）のいずれか１項に記載の画像処理装置。
（１５）
前記オブジェクト配置部は、撮像指示に対応する第４のユーザ入力が検出された場合に、前記オブジェクト配置行列を記憶媒体に記憶させる、前記（１４）に記載の画像処理装置。
（１６）
前記仮想オブジェクトは、予め定義される基準面を有し、
前記表示制御部は、前記端末の画面に前記仮想オブジェクトの前記基準面が映るか否かに応じて、前記仮想オブジェクトの表示を変化させる、
前記（４）に記載の画像処理装置。
（１７）
前記表示制御部は、前記端末と前記仮想オブジェクトとの間の距離に応じて、前記仮想オブジェクトの表示を変化させる、前記（４）に記載の画像処理装置。
（１８）
前記表示制御部は、それぞれ前記オブジェクト配置行列を有する複数の前記仮想オブジェクトが存在する場合において、所定の条件が満たされるときに、複数の前記仮想オブジェクトを所定の間隔を空けて整列するように再配置する、前記（４）に記載の画像処理装置。
（１９）
前記認識部、前記計算部及び前記オブジェクト配置部のうち少なくとも１つが前記画像処理装置の代わりにクラウドコンピューティング環境上に存在する装置により実現される、前記（１）〜（１８）のいずれか１項に記載の画像処理装置。
（２０）
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識することと、
前記環境認識行列の逆行列を計算することと、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置することと、
を含む画像処理方法。
（２１）
コンピュータを、
画像を撮像した端末の位置及び姿勢を基準として前記画像に映る環境の位置及び姿勢を表現する環境認識行列を認識する認識部と、
前記環境認識行列の逆行列を計算する計算部と、
前記環境認識行列の前記逆行列に基づく位置及び姿勢を有する仮想オブジェクトを前記環境内に配置するオブジェクト配置部と、
として機能させるためのプログラム。
【符号の説明】
【０１６０】
１００，３００    画像処理装置（端末装置）
１２０            画像取得部
３２５            データ取得部
１３０            認識部
１４０            計算部
１５０，３５０    オブジェクト配置部
３５５            登録部
１８０，３８０    操作制御部
１９０，３９０    表示制御部
【図１】
0005942456.tif 000006
【図２】
0005942456.tif 000007
【図３】
0005942456.tif 000008
【図４】
0005942456.tif 000009
【図５】
0005942456.tif 000010
【図６Ａ】
0005942456.tif 000011
【図６Ｂ】
0005942456.tif 000012
【図７】
0005942456.tif 000013
【図８】
0005942456.tif 000014
【図９】
0005942456.tif 000015
【図１０】
0005942456.tif 000016
【図１１】
0005942456.tif 000017
【図１２】
0005942456.tif 000018
【図１３】
0005942456.tif 000019
【図１４】
0005942456.tif 000020
【図１５】
0005942456.tif 000021
【図１６】
0005942456.tif 000022
【図１７】
0005942456.tif 000023
【図１８】
0005942456.tif 000024
【図１９】
0005942456.tif 000025
【図２０】
0005942456.tif 000026
【図２１Ａ】
0005942456.tif 000027
【図２１Ｂ】
0005942456.tif 000028
【図２２】
0005942456.tif 000029
【図２３】
0005942456.tif 000030
【図２４】
0005942456.tif 000031
【図２５】
0005942456.tif 000032
【図２６】
0005942456.tif 000033
【図２７】
0005942456.tif 000034
【図２８】
0005942456.tif 000035
【図２９】
0005942456.tif 000036