(57)【特許請求の範囲】
【請求項１】
撮像手段と、
前記撮像手段で撮像した現実世界に存在する複数の物体のそれぞれの３次元的な位置と、ユーザの位置及び姿勢情報とに基づいて、前記複数の物体のそれぞれに対応する仮想オブジェクトの仮想３次元空間内での位置を決定する決定手段と、
前記撮像手段で撮像した現実世界の画像に、前記決定手段によって決定された位置に従って前記仮想３次元空間内に配置された複数の前記仮想オブジェクトを重畳した重畳画像を、所定のディスプレイに表示させる表示制御手段と、
ユーザの視線を検出する視線検出手段と、
前記ユーザの視線に基づいて、前記仮想３次元空間内に配置された複数の前記仮想オブジェクトのうち操作対象を選択する選択手段と、を備え、
前記表示制御手段は、前記操作対象として選択された前記仮想オブジェクトが前記ユーザの手が届く範囲に表示されるように、前記仮想３次元空間内で該仮想オブジェクトを前記ユーザの方に引き寄せる表示制御を行うことを特徴とする、
情報処理装置。
【請求項２】
前記決定手段は、前記仮想オブジェクトの前記仮想３次元空間での前記ユーザから見た奥行き方向における位置を、該仮想オブジェクトに対応する物体の前記現実世界での前記ユーザから見た奥行き方向における位置に基づいて決定することを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記複数の物体の現実世界に存在する３次元的な位置に関する情報、および前記ユーザの方位・姿勢情報を取得する取得手段を備え、
前記決定手段は、前記取得手段によって取得された情報に基づいて前記仮想オブジェクトの前記仮想３次元空間内での位置を決定することを特徴とする請求項１または２記載の情報処理装置。
【請求項４】
前記現実世界に存在する複数の物体は、建物を含むことを特徴とする請求項１〜３のいずれか１項記載の情報処理装置。
【請求項５】
前記現実世界に存在する複数の物体に対応する前記仮想オブジェクトは、前記物体に関する付加情報をユーザに提示するために表示され、前記付加情報は、前記物体の名前や説明、広告を含むことを特徴とする請求項１〜４のいずれか１項記載の情報処理装置。
【請求項６】
前記撮像手段で撮像した画像から、前記ユーザが指示を行うための指示入力体の動きを認識するジェスチャ認識手段を備えており、
前記選択手段は、前記ユーザの視線に基づいて複数の前記仮想オブジェクトを選択し、
前記表示制御手段は、前記ジェスチャ認識手段で認識した前記指示入力体の動きに応じて、前記操作対象として選択された前記複数の仮想オブジェクトを前記ユーザの方に引き寄せる表示制御を行うことを特徴とする、
請求項１〜５のいずれか１項記載の情報処理装置。
【請求項７】
前記ジェスチャ認識手段は、前記指示入力体の第１のジェスチャ及び第２のジェスチャを認識し、
前記表示制御手段は、前記ジェスチャ認識手段が前記第１のジェスチャを認識すると、前記仮想オブジェクトを前記ユーザに向かって引き寄せ、前記ジェスチャ認識手段が前記第２のジェスチャを認識すると、該仮想オブジェクトの引き寄せを停止する表示制御を行うことを特徴とする、
請求項６記載の情報処理装置。
【請求項８】
前記表示制御手段は、前記複数の仮想オブジェクトのうち、前記操作対象として選択されていない仮想オブジェクトを非表示にし、前記仮想オブジェクトの引き寄せが停止すると、非表示にした仮想オブジェクトを再び表示することを特徴とする、
請求項７記載の情報処理装置。
【請求項９】
前記表示制御手段は、前記操作対象として選択された前記仮想オブジェクトを引き寄せる際に前記ユーザの視線が移動して他の仮想オブジェクトを選択すると、すでに引き寄せている前記仮想オブジェクトの引き寄せを停止して、前記他の仮想オブジェクトを前記ユーザの方に引き寄せる表示制御を行うことを特徴とする、
請求項７又は８記載の情報処理装置。
【請求項１０】
前記表示制御手段は、前記ジェスチャ認識手段が前記指示入力体の第３のジェスチャを認識すると、前記操作対象として選択された前記仮想オブジェクトを引き寄せる速度を変えることを特徴とする、
請求項６〜９のいずれか１項記載の情報処理装置。
【請求項１１】
前記表示制御手段は、前記仮想３次元空間で前記ユーザの手が届く範囲に仮想タッチ平面を設け、前記操作対象として選択された前記仮想オブジェクトを前記仮想タッチ平面まで引き寄せる表示制御を行うことを特徴とする、
請求項１〜１０のいずれか１項記載の情報処理装置。
【請求項１２】
前記表示制御手段は、前記所定のディスプレイに、前記仮想タッチ平面を既定の時間だけ表示させることを特徴とする、
請求項１１記載の情報処理装置。
【請求項１３】
前記表示制御手段は、前記操作対象として選択された１以上の前記仮想オブジェクトが前記仮想タッチ平面で重ならないように、前記所定のディスプレイに表示させることを特徴とする、
請求項１１又は１２記載の情報処理装置。
【請求項１４】
前記表示制御手段は、前記操作対象として選択された１以上の前記仮想オブジェクトが前記仮想タッチ平面よりも前記ユーザに接近すると、該仮想オブジェクトを非表示にすることを特徴とする、
請求項１１〜１３のいずれか１項記載の情報処理装置。
【請求項１５】
前記表示制御手段は、前記ユーザの視線が変化して選択する前記仮想オブジェクトが変わると、引き寄せていた前記仮想オブジェクトを元の位置に戻すことを特徴とする、
請求項１〜１４のいずれか１項記載の情報処理装置。
【請求項１６】
前記表示制御手段は、前記所定のディスプレイに、は、前記撮像手段が撮像した前記現実世界に存在する複数の物体の画像に紐付けて複数の前記仮想オブジェクトを重畳した前記重畳画像を表示させることを特徴とする、
請求項１〜１５のいずれか１項記載の情報処理装置。
【請求項１７】
メガネ型ウェアラブルデバイスであり、
前記撮像手段は、ユーザに装着されたときに前記ユーザの視界を撮像することを特徴とする、
請求項１〜１６のいずれか１項記載の情報処理装置。
【請求項１８】
撮像手段を備えた情報処理装置により実行される方法であって、
前記撮像手段で撮像した現実世界に存在する複数の物体のそれぞれの３次元的な位置と、ユーザの位置及び姿勢情報とに基づいて、複数の前記物体のそれぞれに対応する仮想オブジェクトの仮想３次元空間内での位置を決定し、
前記撮像手段で撮像した現実世界を撮影した画像に、前記決定手段によって決定された位置に従って前記仮想３次元空間内に配置された複数の前記仮想オブジェクトを重畳した重畳画像を、所定のディスプレイに表示させ、
ユーザの視線を検出して、検出した前記ユーザの視線に基づいて、前記仮想３次元空間内に配置された複数の前記仮想オブジェクトのうち操作対象を選択し、
前記操作対象として選択された前記仮想オブジェクトが前記ユーザの手が届く範囲に表示されるように、前記仮想３次元空間内で該仮想オブジェクトを前記ユーザの方に引き寄せる表示制御を行うことを特徴とする、
仮想オブジェクトの操作方法。
【請求項１９】
撮像手段を備えたコンピュータを、
前記撮像手段で撮像した現実世界に存在する複数の物体のそれぞれの３次元的な位置と、ユーザの位置及び姿勢情報とに基づいて、前記複数の物体のそれぞれに対応する仮想オブジェクトの仮想３次元空間内での位置を決定する決定手段、
前記撮像手段で撮像した現実世界の画像に、前記決定手段によって決定された位置に従って前記仮想３次元空間内に配置された複数の前記仮想オブジェクトを重畳した重畳画像を、所定のディスプレイに表示させる表示制御手段、
ユーザの視線を検出する視線検出手段、
前記ユーザの視線に基づいて、前記仮想３次元空間内に配置された複数の前記仮想オブジェクトのうち操作対象を選択する選択手段、として機能させ、
前記表示制御手段を、前記操作対象として選択された前記仮想オブジェクトが前記ユーザの手が届く範囲に表示されるように、前記仮想３次元空間内で該仮想オブジェクトを前記ユーザの方に引き寄せる表示制御を行うように機能させるためのコンピュータプログラム。
【請求項２０】
請求項１９記載のコンピュータプログラムを記憶するコンピュータにより読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばメガネ型のウェアラブルデバイスを用いたユーザインタフェースに関する。
【背景技術】
【０００２】
デジタルカメラで撮像した「現実世界」に、コンピュータグラフィックス等で用いる仮想オブジェクトを重畳して拡張現実（ＡＲ：Augmented Reality）や複合現実（ＭＲ：Mixed Reality）に用いる技術が提案されている。例えば、スマートフォンやタブレット端末のカメラで撮像した現実世界の画像に仮想オブジェクトを重畳してタッチパネルディスプレイに表示することで、ユーザは表示された仮想オブジェクトをタッチ操作により簡単に操作することができる。
【０００３】
ヘッドマウントディスプレイ（ＨＭＤ：Head Mount Display）やメガネ型のウェアラブルデバイスでＡＲやＭＲを実現する場合、仮想オブジェクトは、現実世界に対応する仮想３次元空間の座標にマッピングされて表示される。この場合、仮想オブジェクトは、仮想３次元空間内の奥行きを表す奥行き情報を持つために、タッチパネルディスプレイに表示する場合よりも、よりリアルに現実世界に重畳される。
【０００４】
現実世界の画像に仮想オブジェクトが重畳された重畳画像では、狭い範囲に多数の仮想オブジェクトが表示されることがある。この場合、ユーザによる仮想オブジェクトの選択、操作が困難になる。特許文献１は、仮想オブジェクトと仮想オブジェクトを操作する指先との距離が閾値よりも小さい場合に、該仮想オブジェクトのサイズを大きくして、仮想オブジェクトを選択、操作しやすくする技術を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１０８８４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示される技術では、仮想オブジェクトと指先との距離が閾値よりも接近した場合に、該仮想オブジェクトを選択しやすくなるように、仮想オブジェクトの表示形態が変更される。そのために、仮想オブジェクトが仮想３次元空間の手が届かないほどの遠方に表示される場合、仮想オブジェクトと指先との距離が閾値よりも接近することが無く、仮想オブジェクトの選択、操作ができない場合がある。
【０００７】
本発明は、上記の問題を解決するために、仮想オブジェクトが仮想３次元空間の遠方に表示される場合であっても該仮想オブジェクトの選択、操作を容易にする技術を提供することを主たる課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決する本発明の情報処理装置は、撮像手段と、前記撮像手段で撮像した現実世界に存在する複数の物体のそれぞれの３次元的な位置と、ユーザの位置及び姿勢情報とに基づいて、前記複数の物体のそれぞれに対応する仮想オブジェクトの仮想３次元空間内での位置を決定する決定手段と、前記撮像手段で撮像した現実世界の画像に、前記決定手段によって決定された位置に従って前記仮想３次元空間内に配置された複数の前記仮想オブジェクトを重畳した重畳画像を、所定のディスプレイに表示させる表示制御手段と、ユーザの視線を検出する視線検出手段と、前記ユーザの視線に基づいて、前記仮想３次元空間内に配置された複数の前記仮想オブジェクトのうち操作対象を選択する選択手段と、を備え、前記表示制御手段は、前記操作対象として選択された前記仮想オブジェクトが前記ユーザの手が届く範囲に表示されるように、前記仮想３次元空間内で該仮想オブジェクトを前記ユーザの方に引き寄せる表示制御を行うことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、仮想オブジェクトが仮想３次元空間の遠方に表示される場合であっても、該仮想オブジェクトを選択、操作可能な位置まで引き寄せて表示することで、仮想オブジェクトの選択、操作が容易になる。
【図面の簡単な説明】
【００１０】
【図１】（ａ）、（ｂ）はＡＲ技術の説明図。
【図２】ＡＲグラスのハードウェア構成図。
【図３】ＡＲグラスの機能ブロック図。
【図４】（ａ）〜（ｃ）は引き寄せ処理の説明図。
【図５】仮想オブジェクトの操作処理を表すフローチャート。
【図６】仮想オブジェクトの重畳表示処理を表すフローチャート。
【図７】（ａ）〜（ｆ）は仮想オブジェクトの操作の説明図。
【図８】（ａ）〜（ｃ）は複数の仮想オブジェクトの引き寄せ処理の説明図。
【図９】（ａ）〜（ｃ）は複数の仮想オブジェクトの引き寄せ処理の説明図。
【図１０】（ａ）〜（ｃ）は複数の仮想オブジェクトの引き寄せ処理の説明図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態を詳細に説明する。ただし、本実施形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定するものではない。
【００１２】
本実施形態では、メガネ型ウェアラブルデバイスである情報処理装置をユーザが装着して街中を散策する場合を例に説明を行う。ユーザが装着するメガネ型ウェアラブルデバイスである情報処理装置を、以降「ＡＲグラス」と記す。なお、このような情報処理装置は、ヘッドマウントディスプレイにより実現することも可能である。図１は、本実施形態によるＡＲ技術の説明図である。
【００１３】
ＡＲグラス１００は、ステレオカメラを搭載しており、現実世界を撮像してステレオ画像を生成する。ＡＲグラス１００は、ＧＰＳ（Global Positioning System）センサ等の位置情報取得機能及びジャイロセンサ等の方位取得機能を備える。ユーザ１０１は、ＡＲグラス１００を頭部に装着する。ＡＲグラス１００のステレオカメラは、ユーザ１０１に装着された状態でユーザの前方を撮像するように設けられており、ユーザ１０１の視界と同じ領域を撮像する。図１（ａ）の例では、ステレオカメラがユーザ１０１の視界にある現実世界の物体（ここでは建物）を撮像する。仮想オブジェクト１０３ａ〜１０３ｅは、撮像した画像に含まれる現実世界の物体に紐付いて重畳表示される。図１（ａ）では、吹き出し形状の仮想オブジェクト１０３ａ〜１０３ｅが、関連する物体の付加情報（説明や広告など）を表す。
【００１４】
仮想オブジェクト１０３ａ〜１０３ｅは、図１（ｂ）に示すように、現実世界に対応する仮想３次元空間内に位置する。仮想オブジェクト１０３ａ〜１０３ｅは、ステレオカメラで撮像された画像に重畳して表示される。そのために仮想オブジェクト１０３ａ〜１０３ｅは、仮想３次元空間における奥行きを表す奥行き情報を含む。仮想３次元空間は、ＡＲグラス１００の表示面１０４をｘｙ平面として座標系が定義される。仮想オブジェクト１０３ａ〜１０３ｅの奥行き情報は、この座標系のｚ軸方向の値として表される。仮想３次元空間の座標系は、ユーザ１０１がＡＲグラス１００を装着して移動する間、その移動方向や向きに応じて変化するが、常に、表示面１０４がｘｙ平面であり、奥行きがｚ軸方向である。
【００１５】
ＡＲグラス１００は、クラウドに代表されるネットワーク上の計算資源１０６を用いて仮想オブジェクト１０３ａ〜１０３ｅの重畳表示を行う。計算資源１０６には、現実世界に存在する山や川、建物といったランドマークの位置情報、並びにそれらに関連する付加情報が格納される。ＡＲグラス１００は、それら関連する付加情報を高速の無線通信１０５により取得する。本実施形態では、建物や場所に関連する地理的な付加情報を利用する例を説明しているが、例えば図書館の中であれば蔵書の情報、店舗の中であれば商品の情報を利用することができる。つまり現実世界に存在する物体とそれに関連する付加情報が結びついたデータの集まりを記憶する装置であれば、計算資源１０６として適用することができる。このような計算資源１０６は、ＡＲグラス１００が付加情報を記憶する大容量記憶装置を搭載する場合には不要となる。
【００１６】
ＡＲグラス１００は、視差を考慮して、左目用の画像及び右目用の画像を生成し、表示面１０４に表示する。そのためにＡＲグラス１００を装着したユーザ１０１は、ＡＲグラス１００を通して実空間を眺めることで、実空間に立体的に浮かぶ吹き出し形状の仮想オブジェクト１０３ａ〜１０３ｅを見ることになる。ユーザ１０１は、これらの仮想オブジェクト１０３ａ〜１０３ｅを、手１０２を指示入力体として操作する。ＡＲグラス１００は、手１０２の動きを認識することでユーザ１０１の操作を検出する。なお指示入力体には、手１０２の他に、スタイラスペンや差し棒などの操作器具を用いることができる。
【００１７】
ＡＲグラス１００を通して観測される仮想３次元空間の座標系と実空間の世界座標系とは、ＡＲグラス１００が搭載するＧＰＳセンサ、ジャイロセンサ、及びステレオカメラから取得する情報に基づいて、適切にキャリブレーションされる。そのために、仮想空間の座標系と世界座標系とは、各点が１対１に対応する。
【００１８】
図２は、このようなＡＲグラス１００のハードウェア構成図である。ＡＲグラス１００は、ＣＰＵ（Central Processing Unit）２００、ＲＡＭ（Random Access Memory）２０１、及びＲＯＭ（Read Only Memory）２０２を備える。ＡＲグラス１００は、上記の通り、ＧＰＳセンサ２１０、ジャイロセンサ２０９、及びステレオカメラ２０７を備える。ＧＰＳセンサ２１０、ジャイロセンサ２０９、及びステレオカメラ２０７は、入力インタフェース（Ｉ／Ｆ）２０６に接続される。また、ＡＲグラス１００は、表示面１０４を形成するメガネ型のディスプレイ２０５を備える。ディスプレイ２０５は、光学シースルー方式のディスプレイ、ビデオシースルー方式のディスプレイのいずれの方式であってもよい。ディスプレイ２０５は、ディスプレイインタフェース（Ｉ／Ｆ）２０４に接続される。ＡＲグラス１００は、計算資源１０６との間で無線通信１０５を行うためのネットワークインタフェース（Ｉ／Ｆ）２１３を備える。ＡＲグラス１００は、仮想オブジェクト１０３ａ〜１０３ｅやＵＩ（User Interface）部品を表示するためのデータやコンピュータプログラムを保存するストレージ２１２を備える。ストレージ２１２は、ストレージインタフェース（Ｉ／Ｆ）２１１に接続される。ＣＰＵ２００、ＲＡＭ２０１、ＲＯＭ２０２、ディスプレイＩ／Ｆ２０４、入力Ｉ／Ｆ２０６、ストレージＩ／Ｆ２１１、及びネットワークＩ／Ｆ２１３は、バス２０３を介して、相互に通信可能に接続される。
【００１９】
ＣＰＵ２００は、ＲＯＭ２０２やストレージ２１２からコンピュータプログラムを読み出し、ＲＡＭ２０１を作業領域に用いて実行することで、ＡＲグラス１００の各構成要素の動作を制御する。ＣＰＵ２００は、ステレオカメラ２０７で撮像された画像を取得し、ディスプレイ２０５に表示される画像を生成する。
【００２０】
ディスプレイＩ／Ｆ２０４は、ＣＰＵ２００の制御により、ディスプレイ２０５に画像を表示させる。入力Ｉ／Ｆ２０６は、ステレオカメラ２０７が撮像した画像、及びＧＰＳセンサ２１０、ジャイロセンサ２０９による検出結果をＣＰＵ２００に送信する。ステレオカメラ２０７は、視線センサ２０８を備える。視線センサ２０８は、ユーザ１０１の視線を検出し、検出した視線を表す視線情報を入力Ｉ／Ｆ２０６を介してＣＰＵ２００に送信する。ＧＰＳセンサ２１０は、ＧＰＳ衛星から受信する電波に応じて現在位置を表す位置情報及び現在時刻を検出する。ジャイロセンサ２０９は、ＡＲグラス１００の姿勢を表す角速度等を検出する。
【００２１】
ストレージ２１２は、ディスクデバイスやフラッシュメモリ、ネットワークドライブ、ＵＳＢドライブ等の大容量記憶装置である。ストレージ２１２は、複数の記憶装置を並列に接続して構成されていてもよい。また、ストレージ２１２は、クラウド上の計算資源１０６に含まれる構成であってもよい。ネットワークＩ／Ｆ２１３は、クラウド上の計算資源１０６と無線通信１０５を行う。本実施形態では、高速無線通信の利用を想定しているが、有線通信を利用する形態であってもよい。
【００２２】
図３は、ＡＲグラス１００の機能ブロック図である。本実施形態では、各機能ブロックは、ＣＰＵ２００がコンピュータプログラムを実行することで実現されるが、少なくとも一部がハードウェアにより実現されてもよい。ＡＲグラス１００は、仮想オブジェクトの表示に必要な情報を取得するために、位置情報取得部３００、方位・姿勢算出部３０１、データ入出力部３０２、記憶部３０３として機能する。ＡＲグラス１００は、現実世界の撮像及び仮想オブジェクトの操作を行うために、撮像部３０４、領域検出部３０５、距離算出部３０６、手領域検出部３０７、ジェスチャ認識部３０８、指先位置決定部３０９として機能する。ＡＲグラス１００は、仮想オブジェクトの選択のために、視線検出部３１０、オブジェクト選択部３１１、位置合せ処理部３１２、表示制御部３１３、表示部３１４として機能する。本実施形態の機能ブロックは、図１に示すように、ＡＲグラス１００に現実世界の画像と仮想オブジェクト１０３ａ〜１０３ｅとの重畳画像を表示し、ユーザ１０１による仮想オブジェクト１０３ａ〜１０３ｅの操作を可能にする。
【００２３】
位置情報取得部３００は、ＧＰＳセンサ２１０が受信するＧＰＳ衛星からの電波により、ＡＲグラス１００を装着するユーザ１０１の実空間の位置を表す位置情報を取得する。位置情報取得部３００は、取得した位置情報をＲＡＭ２０１に保存する。なお、ＡＲグラス１００がＧＰＳ衛星からの電波を受信できない場所、例えば屋内で使用される場合、位置情報取得部３００は、Ｗｉ−Ｆｉ（登録商標）やBluetooh（登録商標）、超音波などを用いた屋内位置測位技術により、位置情報を取得してもよい。方位・姿勢算出部３０１は、ジャイロセンサ２０９が検出する角速度により、ユーザ１０１（ＡＲグラス１００）が向いている方位を表す方位情報並びにＡＲグラス１００の姿勢情報を算出する。方位・姿勢算出部３０１は、算出した方位・姿勢情報をＲＡＭ２０１に保存する。
【００２４】
データ入出力部３０２は、ストレージ２１２により実現される記憶部３０３及び計算資源１０６との間でデータの入出力を行う。例えばデータ入出力部３０２は、ＲＡＭ２０１に保存した位置情報並びに方位情報を計算資源１０６に送信し、計算資源１０６からユーザ１０１の位置から見える実在の物体（図１では建物）に関連する付加情報を取得する。記憶部３０３は、仮想オブジェクト１０３ａ〜１０３ｅやＵＩ（User Interface）部品を表示するためのデータの他に、位置情報取得部３００で取得したＡＲグラス１００の過去の位置情報や入力履歴などを記憶する。
【００２５】
撮像部３０４は、ステレオカメラ２０７からステレオ画像を所定周期で取得し、ＲＡＭ２０１に随時保存する。ステレオ画像は、ステレオカメラ２０７の２つの視点から撮像された２つのＲＧＢ画像から構成される。また、２つのＲＧＢ画像間にはズレ（視差）があり、それぞれ右目と左目に対応付けられる。保存された２つのＲＧＢ画像は、ＡＲグラス１００において順次処理される。なお、本実施形態において、撮像部３０４がステレオ画像を取得する周期は、ステレオカメラ２０７が撮像する画像のフレームレートに一致する。但し、フレームレートによらない所定の時間を取得周期として設定してもよい。また本実施形態では、左目に対応付けられた画像をマスター画像、右目に対応づけられた画像をスレーブ画像として処理するがこの限りではない。
【００２６】
領域検出部３０５は、ＲＡＭ２０１に保存されている２つのＲＧＢ画像から、各ＲＧＢ画像内の肌色領域（ユーザ１０１の手１０２を含む）とそれ以外の色の領域とを区別して検出する。領域検出部３０５は、検出した肌色領域をラベリングし、その結果をＲＡＭ２０１に保存する。
【００２７】
距離算出部３０６は、領域検出部３０５で検出された肌色領域に基づいて、ステレオ画像の各画素のＡＲグラス１００からの距離（深さ）を表す距離情報を算出する。具体的な算出方法は後述するが、距離算出部３０６は、ステレオ画像を構成する２つのＲＧＢ画像（マスター画像とスレーブ画像）から対応点を探索し、対応点における２つのＲＧＢ画像の視差から三角測量を用いて深さを算出する。「対応点」とは、空間中のある一点を２つの視点から同時に撮像したとき、それぞれの視点で撮像した画像中に写った当該点のことであり、一般的に「ステレオ対応点」と呼ばれる。距離算出部３０６は、算出した肌色領域の各画素の距離情報をＲＡＭ２０１に保存する。なお、距離算出部３０６は、２つのＲＧＢ画像の他に、赤外線ステレオカメラによる２つの赤外線画像を用いて、距離情報を算出してもよい。また、距離算出部３０６は、距離画像センサにより距離情報を算出してもよい。
【００２８】
手領域検出部３０７は、ＲＡＭ２０１に保存される肌色領域と距離情報とに基づいて、所定の距離範囲内にある肌色領域を手領域として検出する。検出方法の詳細は後述する。手領域検出部３０７は、検出した手領域をラベリングし、その結果をＲＡＭ２０１に保存する。
ジェスチャ認識部３０８は、ラベリングされた手領域に基づいて、手１０２の形状を検出してジェスチャを認識する。本実施形態で認識するジェスチャは、ステレオカメラ２０７の画角内で、ユーザ１０１が手１０２を後述の「指差し形状」に変える動作である。ジェスチャ認識部３０８は、検出した手形状をＲＡＭ２０１に保存する。
指先位置決定部３０９は、ラベリングされた手領域、距離情報、及び手形状に基づいて指先位置を決定し、その結果をＲＡＭ２０１に保存する。指先位置決定部３０９の処理の詳細は後述する。
【００２９】
視線検出部３１０は、視線センサ２０８により、ユーザ１０１の左右の目の画像から、基準点となる目の動かない部分（例えば、目頭）と動く部分（例えば、虹彩）とを検出し、これらの位置関係に基づいてユーザ１０１の視線を検出する。
オブジェクト選択部３１１は、視線検出部３１０によって検出された視線に基づいて、操作対象となる仮想オブジェクトを選択する。
位置合わせ処理部３１２は、ユーザ１０１の位置、方位・姿勢情報、及び計算資源１０６から取得した付加情報を用いて、実空間の物体とそれに関連する仮想オブジェクトの表示位置の位置合わせを行う。位置合わせ処理部３１２は、位置合わせ結果をＲＡＭ２０１に保存する。
【００３０】
表示制御部３１３は、位置合わせ結果に応じて仮想オブジェクトを生成する。表示制御部３１３は、仮想オブジェクトに対するユーザ１０１の操作に応じて表示を制御する。表示制御部３１３は視差を考慮して左目用画像及び右目用画像を生成し、表示部３１４に出力する。
表示部３１４は、左目用、右目用の２つのディスプレイであり、表示制御部３１３から出力された左目用画像、右目用画像を対応するディスプレイに表示する。
【００３１】
このような構成のＡＲグラス１００は、スマートフォンやタブレット端末を用いたＡＲ技術とは異なり、仮想オブジェクトを、奥行きを持って表現することができる。近くに表示されるべき仮想オブジェクトは近くに表示され、遠くに表示されるべき仮想オブジェクトは遠くに表示されるために、従来よりもリアルに、現実世界の画像に仮想オブジェクトを重畳表示することができる。このような表示では、ユーザ１０１は、手１０２が届かない位置に表示される仮想オブジェクト１０３ａ〜１０３ｅを操作することができない。また、例えば図１（ａ）の仮想オブジェクト１０３ｃ〜１０３ｅのように小さく表示されたり、密集して表示される場合、ユーザ１０１は、付加情報を読み取ることができないこともある。そのために本実施形態のＡＲグラス１００は、ユーザ１０１が操作できない位置に表示される仮想オブジェクトを、ユーザ１０１が操作可能な範囲に表示されるように、仮想３次元空間内でユーザ１０１の方に引き寄せる。ユーザ１０１は、引き寄せられた仮想オブジェクトを選択、操作、閲覧することができるようになる。このような処理の実現方法について、以降説明する。
【００３２】
図４は、仮想オブジェクトをユーザ１０１が操作可能な範囲に引き寄せる引き寄せ処理の説明図である。図５は、ＡＲグラス１００による仮想オブジェクトの操作処理を表すフローチャートである。この処理は、ユーザ１０１がＡＲグラス１００を頭部に装着して電源を投入することで開始される。ＡＲグラス１００は、この処理を所定周期でステレオ画像を取得する度に実行する。
【００３３】
ＡＲグラス１００は、ステレオカメラ２０７で撮像した画像に仮想オブジェクトを重畳した重畳画像をディスプレイ２０５に表示する（Ｓ１００）。図６は、仮想オブジェクトの重畳表示処理を表すフローチャートである。位置情報取得部３００は、ユーザ１０１（ＡＲグラス１００）の実空間上の位置情報を、ＧＰＳセンサ２１０の検出結果から取得する（Ｓ２００）。方位・姿勢算出部３０１は、ジャイロセンサ２０９の検出結果からユーザ１０１（ＡＲグラス１００）が向いている方位及びＡＲグラス１００の姿勢を表す方位・姿勢情報を算出する（Ｓ２０１）。
【００３４】
データ入出力部３０２は、取得した位置情報及び算出した方位・姿勢情報を計算資源１０６へ送信する（Ｓ２０２）。計算資源１０６は受信した位置情報及び方位・姿勢情報に応じて、ユーザ１０１の視界に存在する現実世界の物体（建物）の付加情報をＡＲグラス１００へ送信する。データ入出力部３０２は、計算資源１０６から、ユーザ１０１の視界に存在する現実世界の建物の付加情報を受信する。データ入出力部３０２は、受信した付加情報をＲＡＭ２０１に保存する。付加情報は、建物の名前や説明、広告以外に、ユーザ１０１の位置、ＡＲグラス１００の方位・姿勢でユーザ１０１が建物を見たときの、建物の大きさ、形状などの３次元情報を含み、後述する位置合わせ処理で利用される。Ｓ２００〜Ｓ２０２の処理の間、撮像部３０４は、ユーザ１０１が見ている現実世界のステレオ画像をステレオカメラ２０７から取得してＲＡＭ２０１に保存する（Ｓ２０３）。
【００３５】
位置合わせ処理部３１２は、位置情報、方位・姿勢情報、及び付加情報に基づいて、撮像したステレオ画像に映っている建物と付加情報の位置合わせ処理を行う（Ｓ２０４）。位置合わせ処理部３１２は、ステレオ画像に映っている実空間の建物と、取得した付加情報とをマッチングする。位置合わせ処理部３１２は、マッチングの結果をＲＡＭ２０１に保存する。なお、本実施形態ではＡＲグラス１００で実空間上の建物とそれに関連する付加情報との位置合わせを行ったが、この限りではない。ＡＲグラス１００と計算資源１０６との無線通信１０５がさらに高速になれば、ＡＲグラス１００で撮像したステレオ画像をリアルタイムで計算資源１０６に送信して計算資源１０６で位置合わせを行い、その結果を受信する構成も可能である。
【００３６】
表示制御部３１３は、位置合わせ処理の結果に基づいて仮想オブジェクトを生成する（Ｓ２０５）。表示部３１４は、仮想オブジェクトをＡＲグラス１００のディスプレイ２０５に重畳表示する（Ｓ２０６）。図４（ａ）は、このようにして表示される画像の説明図である。表示画像４００には、３つの吹き出し形状の仮想オブジェクト１０３ａ〜１０３ｃが、対応する建物に紐付いて表示される。仮想オブジェクト１０３ａが最もＡＲグラス１００に近く、仮想オブジェクト１０３ｃが最もＡＲグラス１００から遠くなるように、各仮想オブジェクト１０３ａ〜１０３ｃの奥行きが設定される。表示画像４００では、奥行き情報に基づいて遠近感を考慮して、仮想オブジェクト１０３ａ〜１０３ｃが異なる大きさで表示される。仮想オブジェクト１０３ａ〜１０３ｃは、いずれもユーザ１０１が手１０２で直接操作できない遠方に表示される。
【００３７】
仮想オブジェクトの重畳表示処理が終了すると、視線検出部３１０は、ユーザ１０１の右目及び左目のそれぞれの視線を検出し、これに基づいて表示画像上におけるユーザ１０１の視線を決定する（Ｓ１０１）。図４（ａ）の例では、視線検出部３１０は、左右の視線１０７ａ、１０７ｂを検出して、表示画像上における視線１０７を決定する。本実施形態において、ユーザ１０１の視線１０７は既定の小領域で表される。図７は、仮想オブジェクトの操作の説明図である。図７（ａ）に示すように、表示画像は、１０＊８の小領域８０１に分割されている。視線１０７は、この小領域８０１で表される。つまり、１０＊８の分解能で視線１０７の位置が検出される。なお、ピクセル単位で視線が検出可能であれば、画面上の１点（１ピクセル）を視線の位置として検出しても構わない。
【００３８】
視線１０７の決定後、オブジェクト選択部３１１は、ユーザ１０１の視線１０７の小領域に含まれる、或いは小領域に接する１以上の仮想オブジェクトを操作対象オブジェクトに選択する（Ｓ１０２）。図４（ａ）の例では、仮想オブジェクト１０３ｃが操作対象オブジェクトに選択される。操作対象オブジェクトは、例えば表示画像４００において、色や線、形を変更することによって強調表示されてもよい。
【００３９】
オブジェクト選択部３１１は、操作対象オブジェクトが前フレームで選択された操作対象オブジェクトと同じか否かを判定する（Ｓ１０３）。つまりオブジェクト選択部３１１は、前回の周期で取得したステレオ画像に対する処理により選択した操作対象オブジェクトと、今回選択した操作対象オブジェクトとが同一であるか否かを判定する。操作対象オブジェクトが前フレームと異なる場合（Ｓ１０３：N）、オブジェクト選択部３１１は、操作対象オブジェクトが引き寄せ状態か否かを判定する（Ｓ１０４）。ここで「引き寄せ状態」とは、図４に示すように、仮想オブジェクト１０３をｚ軸のマイナス方向（ユーザ１０１の方向）へ近づける表示変更制御である。
【００４０】
操作対象オブジェクトが同じである場合（Ｓ１０３：Y）、或いは操作対象オブジェクトが引き寄せ状態ではない場合（Ｓ１０４：N）、領域検出部３０５は、ＲＡＭ２０１に保存したステレオ画像から肌色領域の有無を検出する（Ｓ１０５）。領域検出部３０５は、マスター画像及びスレーブ画像中の各々について肌色領域の有無を検出する。
【００４１】
肌色領域が検出されなかった場合（Ｓ１０５：N）、ＡＲグラス１００は、処理を終了するか否かを判断する（Ｓ１１５）。本実施形態では、ＡＲグラス１００に設けられる物理ボタンやＧＵＩ（Graphical User Interface）により電源オフの指示が入力された場合に、ＡＲグラス１００が処理を終了する（Ｓ１１５：Y）。処理を終了しない場合（Ｓ１１５：N）、ＡＲグラス１００は、Ｓ１００以降の処理を、処理の終了まで繰り返し実行する。
【００４２】
肌色領域が検出された場合（Ｓ１０５：Y）、距離算出部３０６は、検出されたステレオ画像の肌色領域を解析し、マスター画像の肌色領域の各画素に対応するＡＲグラス１００からの距離を算出する（Ｓ１０６）。例えば、マスター画像中の肌色領域の画素（ｍ、ｎ）の距離を算出する場合、距離算出部３０６は、まず画素（ｍ、ｎ）に対応する対応点（ｍ１、ｎ１）をスレーブ画像から探索する。距離算出部３０６は、マスター画像中の画素（ｍ、ｎ）とスレーブ画像中の対応点（ｍ１、ｎ１）との視差から、三角測量によって、画素（ｍ、ｎ）の距離（深さ）を求める。距離算出部３０６は、マスター画像中の全ての肌色領域の画素に対し、距離算出を行い、その結果をＲＡＭ２０１に保存する。
【００４３】
手領域検出部３０７は、マスター画像の肌色領域及び距離情報に基づいて、距離が２０［ｃｍ］〜７０［ｃｍ］の範囲にある肌色領域を手領域として検出する（Ｓ１０７）。手領域検出部３０７は、検出した手領域をラベリングして、ＲＡＭ２０１に保存する。本実施形態で手領域を「距離が２０［ｃｍ］〜７０［ｃｍ］の範囲にある肌色領域」としたのは、人の手が届く範囲に基づいている。手領域として設定する領域を２０［ｃｍ］より近くした場合、撮像されるステレオ画像は肌色領域ばかりとなってしまい、手かどうかの判断が難しくなる。また逆に、手領域として設定する肌色領域を７０［ｃｍ］より大きくすると、背景の肌色がノイズとなってしまう可能性が高くなる。なお、このような設定理由が問題とならない場合、或いは解決可能な場合、手領域とする肌色領域を「２０［ｃｍ］〜７０［ｃｍ］」以外に設定してもよい。
【００４４】
ジェスチャ認識部３０８は、ＲＡＭ２０１に保存された手領域のラベル情報と距離情報とに基づいて、手形状を検出する（Ｓ１０８）。本実施形態で検出する手形状を図７（ｃ）、（ｄ）に示す。ジェスチャ認識部３０８は、図７（ｃ）、（ｄ）の手領域を囲んだ凸領域８０２ａ、８０２ｂに基づいて手形状を検出する。例えば、ジェスチャ認識部３０８は、凸領域８０２ａ、８０２ｂ中に含まれる手領域の割合により手形状を検出する。また、ジェスチャ認識部３０８は、検出したい指差し形状の画像をテンプレートとして用意しておき、撮像したステレオ画像とマッチングして手形状を検出してもよい。図７（ｂ）は、指差し形状を例示する。また、ジェスチャ認識部３０８は、手領域の形状から既定の特徴量を抽出し、機械学習することによって手形状を検出してもよい。本実施形態では、手形状が指差し形状かそれ以外かを判定できれば十分である。
【００４５】
ジェスチャ認識部３０８は、検出した手形状による引き寄せジェスチャを認識したか否かを判定する（Ｓ１０９）。本実施形態において「引き寄せジェスチャ」は、ユーザ１０１がステレオカメラ２０７の画角内で手１０２を「指差し形状」に変える動作である。引き寄せジェスチャが認識されない場合（Ｓ１０９：N）、ＡＲグラス１００は、処理を終了するか否かを判断する（Ｓ１１５）。
【００４６】
引き寄せジェスチャを認識した場合（Ｓ１０９：Y）、指先位置決定部３０９は、ＲＡＭ２０１に保存されている手領域と距離情報とから指先位置を決定する。指先位置は、例えば手領域に含まれる画素の中でＡＲグラス１００から遠い順に選定した複数個の画素を平均化することで決定される。例えば図７（ｂ）の指差し形状の場合、指先位置決定部３０９は、白丸で表す位置を指先位置１０８に決定する。表示制御部３１３は、指先位置１０８から所定の距離に、操作対象オブジェクト（図４の例では、仮想オブジェクト１０３ｃ）を含む平面と略平行な仮想タッチ平面を設定する（Ｓ１１０）。表示制御部３１３は、設定した仮想タッチ平面を既定の時間だけ表示させる。これは、ユーザの使い勝手をよくするために行われる。例えば、図４（ｂ）に示すように、指先位置１０８の近傍に一定時間だけ仮想タッチ平面１０９が表示されれば、ユーザは、現在何の処理が行われているかを認知し易い。仮想タッチ平面１０９をずっと表示させておくことも可能であるが、その場合は仮想オブジェクト１０３やＡＲグラス１００を通して閲覧できるその他の情報が見えにくくなってしまう。仮想タッチ平面１０９を一定時間だけ表示する場合でも、仮想タッチ平面１０９の透過率をあげて透明にするなど、視認性を低下させない表示をする方が好ましい。
【００４７】
表示制御部３１３は、ｚ軸方向の移動距離である引き寄せ位置を算出する（Ｓ１１１）。例えば、仮想３次元空間上でｚ＝１０［ｍ］の位置に仮想オブジェクトが表示されており、ステレオ画像を１フレーム処理する毎に０．２［ｍ］ずつ引き寄せる表示制御を行うとすると、最初のフレームを処理した後の位置ｚ１＝９．８［ｍ］が引き寄せ位置となる。１フレーム毎に引き寄せる距離は、全仮想オブジェクトを通して均一でもよく、遠くに表示されている仮想オブジェクトほど大きな距離を引き寄せるように、表示制御を行ってもよい。
【００４８】
表示制御部３１３は、操作対象オブジェクトが複数であるか否かを判定する（Ｓ１１２）。操作対象オブジェクトが複数の場合（Ｓ１１２：Y）の処理については、後述する。操作対象オブジェクトが１つの場合（Ｓ１１２：N）、表示制御部３１３は、図４（ｂ）に示すように、Ｓ１１１で算出した引き寄せ位置に基づいて、操作対象オブジェクトの表示位置を変更する。これにより操作対象オブジェクトとなっている仮想オブジェクトの奥行き情報が引き寄せ位置に基づいて更新される。操作対象オブジェクトは、更新された奥行き情報で表される位置に表示される。また、操作対象オブジェクトの状態を“引き寄せ状態”に変更する（Ｓ１１４）。ＡＲグラス１００は、操作対象オブジェクトの表示位置を変更して引き寄せ状態とすると、Ｓ１００以降の処理を処理終了の指示があるまで繰り返し行う。
【００４９】
本実施形態では、操作対象オブジェクトへの視認性を高めるために、引き寄せ処理を開始したタイミングで操作対象オブジェクト以外の仮想オブジェクトを非表示にし、引き寄せ処理が中断或いは終了したタイミングで再びすべての仮想オブジェクトを表示する。しかし、その限りではない。例えば、操作対象オブジェクトより手前にある非操作対象の仮想オブジェクトのみを非表示にしてもよい。この場合、操作対象オブジェクトが引き寄せ表示制御によって徐々に近づくために、その動きに応じて非表示される非操作対象の仮想オブジェクトも随時変更される。
【００５０】
本実施形態では、図４（ｃ）に示すように、仮想タッチ平面１０９上に操作対象オブジェクトが引き寄せられた時点で、操作対象オブジェクトの引き寄せ処理を停止する。操作対象オブジェクトが仮想タッチ平面１０９まで引き寄せられたことをユーザ１０１に通知するために、このタイミングで、仮想タッチ平面１０９が再び既定の時間表示される。表示画像４００、４０１、４０２で示すように、表示制御部３１３は、仮想オブジェクト１０３ｃの吹き出し部分が指す位置（指し示している建物）が変化しないように表示制御する。これは、仮想オブジェクト１０３ａ〜１０３ｃと実空間上の建物の対応関係をユーザ１０１が常に把握できるようにするためである。仮想オブジェクト１０３ｃと実際の建物の対応関係を保持する方法としては、この他に、引き寄せ処理中も仮想オブジェクト１０３ｃが元々あった位置をグレーアウト／半透明化して表示し続けてもよい。
【００５１】
本実施形態では、ディスプレイ２０５の表示面１０４及びすべての仮想オブジェクト１０３ａ〜１０３ｃをｘｙ平面に対して平行であるものとして表示し、奥行き方向をｚ軸として説明した。これは、ＡＲグラス１００の仮想３次元空間の座標系（ａｘ、ａｙ、ａｚ）と世界座標系（ｘ、ｙ、ｚ）とを一致させている場合に相当する。しかし実際は、ユーザ１０１が見る方向によって、ＡＲグラス１００の仮想３次元空間の座標系と世界座標系との３軸の関係は変化する。つまり、図５のＳ１１１の処理において、表示制御部３１３は、実際にはＡＲグラス１００の座標系のａｚ方向に関して引き寄せ位置を算出し、それを世界座標系に変換する必要がある。また、仮想オブジェクトは、実際には表示面１０４（ＡＲグラス座標系のａｘａｙ平面）に対して様々な傾き（角度）で表示される。本実施形態では、表示面１０４に対して傾いて表示される仮想オブジェクトをそのままの状態で引き寄せるため、設定する仮想タッチ平面１０９を操作対象オブジェクトがなす平面と略平行であるとした。
【００５２】
なお、本実施形態では詳述しないが、操作対象オブジェクトが仮想タッチ平面１０９まで引き寄せられた後、ユーザ１０１は、引き寄せられた操作対象オブジェクトに対してタッチ操作を行うことができる。その際、ＡＲグラス１００は、仮想タッチ平面１０９と指先位置１０８との接触を検出することでタッチ操作を検出する。つまり、図４（ａ）の表示画像４００の状態では手が届かずに操作できなかった仮想オブジェクト１０３ｃが、引き寄せ表示制御によって図４（ｃ）の表示画像４０２の状態となり、直接操作（タッチ操作）できるようになる。
【００５３】
Ｓ１０４で操作対象オブジェクトが引き寄せ状態である場合（Ｓ１０４：Y）の処理について説明する。この条件は、Ｓ１１４で操作対象オブジェクトが引き寄せ状態に設定され、かつ操作対象オブジェクトが前フレームと異なる場合（Ｓ１０３：N）に満たされる。これはユーザ１０１の視線が移動することによって操作対象オブジェクトが変更されたことに相当する。つまり、ユーザ１０１の興味が引き寄せ中の仮想オブジェクトから他の仮想オブジェクトに変化したことを示している。この場合、表示制御部３１３は、Ｓ１１６の処理において、引き寄せ表示制御をキャンセルし、仮想オブジェクトを最初の状態（図４（ａ）の表示画像４００）に戻して表示する。また、操作対象オブジェクトの状態を引き寄せ状態ではない“通常状態”に戻す。
【００５４】
Ｓ１１２で操作対象オブジェクトが複数である場合（Ｓ１１２：Y）の処理について説明する。図８は、複数の仮想オブジェクトの引き寄せ処理の説明図である。この場合、ユーザ１０１の視線領域に含まれる、或いは接する仮想オブジェクトが図８（ａ）に示すように複数存在する。ここでは、オブジェクト選択部３１１は、仮想オブジェクト１０３ｃ、１０３ｄ、１０３ｅを操作対象オブジェクトとして選択する（Ｓ１０２）。Ｓ１０３〜Ｓ１１０の処理は、操作対象オブジェクトが１つの場合と同様の処理である。
【００５５】
Ｓ１１１の処理において、表示制御部３１３は、複数の操作対象オブジェクトのそれぞれに対して引き寄せ位置を算出する。操作対象オブジェクトが複数であるために（Ｓ１１２：Y）、表示制御部３１３は、仮想タッチ平面１０９に並行なｘｙ平面内での各操作対象オブジェクトの移動位置を算出する（Ｓ１１３）。本実施形態では、引き寄せる複数の操作対象オブジェクトが仮想タッチ平面１０９に到達した際にお互い重なり合う部分が生じないように、表示制御部３１３は、各操作対象オブジェクトの移動方向及び１フレーム毎の移動距離を算出する。
【００５６】
表示制御部３１３は、図８（ｂ）に示すように、算出した移動方向及び１フレーム毎の移動距離、Ｓ１１１で算出した引き寄せ位置に基づいて、各操作対象オブジェクトを引き寄せ表示する（Ｓ１１４）。操作対象オブジェクトが複数の場合においても、仮想タッチ平面１０９まで引き寄せられた複数の操作対象オブジェクトに対して、ユーザ１０１は、タッチ操作を行うことができる。
【００５７】
本実施形態では、図８（ｃ）に示すように、操作対象である仮想オブジェクト１０３ｃ、１０３ｄ、１０３ｅが仮想タッチ平面１０９へ同時に到達するように引き寄せ処理を行う。各操作対象オブジェクトが仮想タッチ平面１０９に到達したタイミングで引き寄せ処理が停止する。図８（ａ）で示すように、引き寄せる前の状態では、ＡＲグラス１００に対して仮想オブジェクト１０３ｃが最も近く、仮想オブジェクト１０３ｄが最も遠くに表示されている。従って、各操作対象オブジェクトを仮想タッチ平面１０９に同時に到達させるために、表示制御部３１３は、「１フレーム毎の移動距離」を操作対象オブジェクト毎に設定して、引き寄せ位置を決定する。なお、「１フレーム毎の移動距離」を各操作対象オブジェクトで一定にして引き寄せてもよい。その場合、最も手前に表示されている操作対象オブジェクト（図７の場合は仮想オブジェクト１０３ｃ）が、仮想タッチ平面１０９に到達したタイミングで引き寄せ処理が停止する。
【００５８】
以上、説明したように、本実施形態のＡＲグラス１００は、遠くに表示されて操作できない仮想オブジェクトを操作可能な範囲内（手の近く）に引き寄せる表示制御を行う。このような処理により、ユーザ１０１は、仮想オブジェクトの表示位置に関係なく、すべての仮想オブジェクトに対して直観的な操作を行うことが可能になる。つまり、ユーザ１０１は、近く（手が届く範囲）に表示されている仮想オブジェクトに対しては「直ちにタッチ操作」、遠く（手が届かない）に表示されている仮想オブジェクトに対しては、「引き寄せてからタッチ操作」を行う。これにより、仮想オブジェクトに対する最終的な操作方法がタッチ操作に統一される。その結果、複数の操作方法を覚えなければならないというユーザの認知負荷を低減でき、操作性（ユーザビリティ）が向上する。
【００５９】
なお、本実施形態では片手を使った操作について説明したが、両手を使った操作であってもよい。例えば、一方の手で仮想オブジェクトを引き寄せている状態で、他方の手を図７（ｅ）に示すように、掌をＡＲグラス１００側に向けて傾ける。これにより、引き寄せ中の仮想オブジェクトが仮想タッチ平面１０９まで一気に引き寄せられる（引き寄せ表示制御のショートカット）。
【００６０】
（変形例１）
図９は、複数の操作対象オブジェクトの引き寄せ処理の変形例の説明図である。この例では、図９（ａ）に示すように、仮想オブジェクト１０３ｃ、１０３ｄが操作対象オブジェクトとなる。
【００６１】
図９（ｂ）に示すように、複数の操作対象オブジェクトは、仮想タッチ平面１０９の方へ引き寄せられる。ディスプレイ２０５の表示が表示画像６００から表示画像６０１に変わり、ユーザ１０１の視線及び指先位置１０８は、目的の操作対象オブジェクトに移動する。ＡＲグラス１００は、視線検出部３１０及び指先位置決定部３０９により、視線１０７の移動及び指先位置１０８の移動をそれぞれ検出することで、操作対象オブジェクトを絞り込む。図９は、操作対象である複数の仮想オブジェクト１０３ｃ、１０３ｄが最終的に仮想オブジェクト１０３ｃのみに絞り込まれていることを示す。その結果、図９（ｃ）に示すように、表示制御部３１３は、絞り込まれた仮想オブジェクト１０３ｃを仮想タッチ平面１０９まで引き寄せ、途中で操作対象外となった仮想オブジェクト１０３ｄを元の表示位置に戻す表示制御を行う。なお、表示制御部３１３は、仮想オブジェクト１０３ｄを、元に戻さずその場で停止させる或いは非表示にしてもよい。
【００６２】
このような表示制御を行うのは、図９の初期の表示画像６００の状態ではユーザ１０１が仮想オブジェクトの内容が分からない（見えない）ためである。ユーザ１０１は表示内容がわからないため、当初は複数の仮想オブジェクトを引き寄せるが、徐々に近づいて表示内容がわかるようになると、目的の仮想オブジェクトを把握できるようになる。この時点で操作対象となる仮想オブジェクトを更に絞り込み、ユーザ１０１が意図する仮想オブジェクトのみを引き寄せる。
【００６３】
以上、説明したように、ＡＲグラス１００は、複数の操作対象となる仮想オブジェクトを引き寄せ処理中にユーザ１０１の視線及び指先位置に応じて絞り込んでもよい。絞り込まれた仮想オブジェクトについては引き寄せを継続し、操作対象から外れた仮想オブジェクトについては元の位置まで戻す。その結果、大まかに仮想オブジェクトを選択した後に、徐々に絞り込んでいくといったより柔軟な仮想オブジェクトの選択操作が可能となる。
【００６４】
（変形例２）
図１０は、複数の操作対象オブジェクトの引き寄せ処理の変形例の説明図である。この例では、図１０（ａ）に示すように、仮想オブジェクト１０３ｃ〜１０３ｅが操作対象オブジェクトとなる。
【００６５】
図１０（ｂ）に示すように、複数の操作対象オブジェクトは、仮想タッチ平面１０９の方へ引き寄せられる。但し、ここではジェスチャ認識部３０８で検出するユーザ１０１の手の形状が上記の実施形態とは異なる。Ｓ１０８の処理において、ジェスチャ認識部３０８は、図７（ｃ）、（ｄ）に示す「指差し形状」、「手を開く形状」及びそれ以外の手の形状を検出する。「手を開く形状」を検出した場合、引き寄せ処理が行われる。ディスプレイ２０５の表示が表示画像７００から表示画像７０１に変わる。このとき、複数の操作対象オブジェクト同士の重なり具合や位置関係は変化しない。
【００６６】
引き寄せ処理は、操作対象オブジェクトが仮想タッチ平面１０９に到達したタイミングではなく、ジェスチャ認識部３０８が、「指差し形状」を検出したタイミングで停止する。このような処理では、仮想オブジェクトの引き寄せからタッチ操作までを、一連の動作としてユーザ１０１は行うことができる。つまり、引き寄せ中にユーザ１０１が手形状を「指差し形状」に変更するというジェスチャは、ユーザ１０１が操作したいと思った仮想オブジェクトが手の届く範囲に近づき、タッチ操作しようとするユーザ１０１の意図と捉えることができる。その結果、ユーザ１０１はより直観的に仮想オブジェクトを操作することができる。
【００６７】
なお、図１０（ｃ）に示すように、仮想タッチ平面１０９を通過して、仮想タッチ平面１０９よりもユーザ１０１に接近した操作対象オブジェクト（この場合は仮想オブジェクト１０３ｃ）は、表示画像７０２に表示されない。仮想タッチ平面１０９の近傍にある操作対象オブジェクトを強調表示することで、引き寄せを停止するタイミングをユーザにフィードバックしてもよい。ユーザ１０１が手形状を「指差し形状」から「手を開く形状」に変更すると、引き寄せ表示制御が再開される。図７（ｆ）に示すように、「手を開く形状」で手１０２を前方（ＡＲグラス１００から離れる方向）に２回倒すと、仮想タッチ平面１０９を通り過ぎて非表示となった操作対象オブジェクトを再び仮想タッチ平面１０９上に戻し、表示してもよい。この処理は、ユーザ１０１が操作したいと思っていた仮想オブジェクトが仮想タッチ平面１０９を通り過ぎて非表示となってしまった場合のアンドゥ機能として有効である（引き寄せ表示制御の部分的なキャンセル）。
【００６８】
（変形例３）
操作対象オブジェクトを引き寄せる際の仮想オブジェクトの速度は、ユーザ１０１が自在に変更可能であってもよい。この場合、ＡＲグラス１００は、撮像部３０４で撮像したステレオ画像を、領域検出部３０５、距離算出部３０６、及び手領域検出部３０７により処理する過程で、ユーザ１０１の手１０２のｚ軸方向における傾きを求めて、ＲＡＭ２０１に保存する。
【００６９】
ＡＲグラス１００は、Ｓ１０８及びＳ１０９の処理において、ジェスチャ認識部３０８が「手を開く形状」を検出したタイミングで、引き寄せ表示制御を開始する。表示制御部３１３は、ＲＡＭ２０１に保存した手１０２のｚ軸方向の傾きに応じて、操作対象オブジェクトを引き寄せる速度を変更する。図７（ｅ）に示すように、掌をＡＲグラス１００側に向けて徐々に倒すと、倒した角度（手１０２の傾き）に応じて、引き寄せ速度は増加する。図７（ｆ）に示すように、逆に手の甲をＡＲグラス１００側に向けて徐々に倒すと、倒した角度に応じて、引き寄せ速度を減速する。引き寄せられていた操作対象オブジェクトは、負の速度に応じて元の表示位置に戻るように表示される。
【００７０】
以上、説明したように、引き寄せ速度をユーザ１０１が自在に変更することで、仮想オブジェクトに対する操作性が向上する。
【００７１】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵ、ＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0006611501.tif 000002
【図２】
0006611501.tif 000003
【図３】
0006611501.tif 000004
【図４】
0006611501.tif 000005
【図５】
0006611501.tif 000006
【図６】
0006611501.tif 000007
【図７】
0006611501.tif 000008
【図８】
0006611501.tif 000009
【図９】
0006611501.tif 000010
【図１０】
0006611501.tif 000011