(57)【特許請求の範囲】
【請求項１】
表示データを投影面に投影する投影手段と、
前記投影手段の水平方向の全周囲の画像を撮影する撮影手段と、
前記画像に基づいて、前記投影手段の位置を基準とした、ユーザ位置を特定するユーザ位置特定手段と、
前記画像に基づいて、ユーザにより操作子を用いて行われた指示操作の対象となる投影面上の指示位置を特定する指示位置特定手段と、
前記投影手段の位置及び前記ユーザ位置を通り、かつ前記投影面に対応する、予め定められた平面における前記投影手段の位置と前記ユーザ位置との間の位置関係と、前記ユーザによる前記指示位置と、に基づいて、前記指示位置を示し、かつ前記ユーザ位置と前記指示位置との関係を示す第１のアイコンの傾きを決定する傾き決定手段と、
前記投影手段の位置と前記ユーザ位置との位置関係に基づいて、前記傾き決定手段により傾きが決定された前記第１のアイコンを投影するよう前記投影手段を制御する表示制御手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記ユーザ位置特定手段は、前記ユーザの顔の位置を前記ユーザ位置として特定し、
前記画像に基づいて、前記投影手段の位置を基準とした、操作子位置を特定する操作子位置特定手段をさらに有し、
前記指示位置特定手段は、前記操作子位置と前記顔の位置とに基づいて、前記投影面上の指示位置を特定し、
前記表示制御手段は、前記指示位置特定手段により特定された前記指示位置を示し、かつ前記ユーザ位置と前記指示位置との関係を示す前記第１のアイコンを投影するよう制御することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記平面は、鉛直方向に対し垂直な面であることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記位置関係に基づいて、前記投影面における前記第１のアイコンの進入位置を決定する進入位置決定手段をさらに有し、
前記傾き決定手段は、前記進入位置と前記指示位置とに基づいて、前記第１のアイコンの傾きを決定することを特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記表示制御手段は、前記進入位置から前記指示位置に向かって前記第１のアイコンが移動するアニメーションを投影するよう制御することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記表示制御手段は、前記第１のアイコンが前記指示位置に到達した後、一定時間経過後に前記第１のアイコンを非表示にするよう制御することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記指示位置と前記操作子位置との間の距離に基づいて、前記第１のアイコンの長さを決定する長さ決定手段をさらに有し、
前記表示制御手段は、前記長さ決定手段により長さが決定された前記第１のアイコンを投影するよう制御することを特徴とする請求項２に記載の情報処理装置。
【請求項８】
前記投影手段は移動可能であり、
前記表示制御手段は、前記投影手段の移動により前記指示位置が前記投影面の外側になった場合に、前記指示位置の方向を示す第２のアイコンを投影するよう前記投影手段を制御することを特徴とする請求項２に記載の情報処理装置。
【請求項９】
前記指示位置を記憶手段に記録する記録手段をさらに有し、
前記表示制御手段は、前記記憶手段に記録された前記指示位置に基づいて、前記第２のアイコンを投影するよう制御することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
情報処理装置が実行する情報処理方法であって、
表示データを投影面に投影する投影手段の水平方向の全周囲の画像を撮影する撮影ステップと、
前記画像に基づいて、前記投影手段の位置を基準とした、ユーザ位置を特定するユーザ位置特定ステップと、
前記画像に基づいて、ユーザにより操作子を用いて行われた指示操作の対象となる投影面上の指示位置を特定する指示位置特定ステップと、
前記投影手段の位置及び前記ユーザ位置を通り、かつ前記投影面に対応する、予め定められた平面における前記投影手段の位置と前記ユーザ位置との間の位置関係と、前記ユーザによる前記指示位置と、に基づいて、前記指示位置を示し、かつ前記ユーザ位置と前記指示位置との関係を示す第１のアイコンの傾きを決定する傾き決定ステップと、
前記投影手段の位置と前記ユーザ位置との位置関係に基づいて、前記傾き決定ステップで傾きが決定された前記第１のアイコンを投影するよう前記投影手段を制御する表示制御ステップと
を含むことを特徴とする情報処理方法。
【請求項１１】
コンピュータを、
表示データを投影面に投影する投影手段の水平方向の全周囲の画像を撮影するよう制御する撮影制御手段と、
前記画像に基づいて、前記投影手段の位置を基準とした、ユーザ位置を特定するユーザ位置特定手段と、
前記画像に基づいて、ユーザにより操作子を用いて行われた指示操作の対象となる投影面上の指示位置を特定する指示位置特定手段と、
前記投影手段の位置及び前記ユーザ位置を通り、かつ前記投影面に対応する、予め定められた平面における前記投影手段の位置と前記ユーザ位置との間の位置関係と、前記ユーザによる前記指示位置と、に基づいて、前記指示位置を示し、かつ前記ユーザ位置と前記指示位置との関係を示す第１のアイコンの傾きを決定する傾き決定手段と、
前記投影手段の位置と前記ユーザ位置との位置関係に基づいて、前記傾き決定手段により傾きが決定された前記第１のアイコンを投影するよう前記投影手段を制御する表示制御手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、プロジェクタが画像を投影する投影面に対するポインティングには、プロジェクタを制御するＰＣに接続したポインティングデバイス（マウスやタッチパット）やレーザーポインタ等が利用されるのが一般的である。また、近年ではカメラで撮像した画像から操作者の表示画像に対する指差しを検出し、操作者が指差している投影面上の位置を推定することでポインティングする方法も提案されている。
【０００３】
特許文献１には、複数人が同時に表示画面に対してポインティングした場合に、操作者の顔と手を、画面を表示するディスプレイの上に設置されたカメラで撮影した撮影画像から検出している。そして、表示画面上に顔アイコンと手アイコンとして表示してそれぞれを紐で繋ぐことによって操作者とポインタの関連性を提示する技術が開示されている。これにより、複数のユーザそれぞれとポインティングとを対応付けることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５３４３７７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術においては、プロジェクタの全周囲にユーザがいる場合に、複数のユーザのアイコンが重なってしまって区別できなくなることがある。この場合、ユーザとプロジェクタにより投影されるポインティングとの対応関係がわかり難くなってしまうという問題があった。
【０００６】
本発明はこのような問題点に鑑みなされたもので、投影面に対し、複数のユーザそれぞれの指示操作に応じた複数のアイコンが表示される場合に、指示操作を行っているユーザを区別し、ユーザとアイコンとの対応関係をわかり易く提示することを目的とする。
【課題を解決するための手段】
【０００７】
そこで、本発明は、情報処理装置であって、表示データを投影面に投影する投影手段と、前記投影手段の水平方向の全周囲の画像を撮影する撮影手段と、前記画像に基づいて、前記投影手段の位置を基準とした、ユーザ位置を特定するユーザ位置特定手段と、前記画像に基づいて、ユーザにより操作子を用いて行われた指示操作の対象となる投影面上の指示位置を特定する指示位置特定手段と、前記投影手段の位置及び前記ユーザ位置を通り、かつ前記投影面に対応する、予め定められた平面における前記投影手段の位置と前記ユーザ位置との間の位置関係と、前記ユーザによる前記指示位置と、に基づいて、前記指示位置を示し、かつ前記ユーザ位置と前記指示位置との関係を示す第１のアイコンの傾きを決定する傾き決定手段と、前記投影手段の位置と前記ユーザ位置との位置関係に基づいて、前記傾き決定手段により傾きが決定された前記第１のアイコンを投影するよう前記投影手段を制御する表示制御手段とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、投影面に対し、複数のユーザそれぞれの指示操作に応じた複数のアイコンが表示される場合に、指示操作を行っているユーザを区別し、ユーザとアイコンとの対応関係をわかり易く提示することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係るプロジェクタシステムと、その利用形態を示す図である。
【図２】プロジェクタのハードウェア構成の一例を示す図である。
【図３】プロジェクタの機能構成の一例を示す図である。
【図４】情報処理を示すフローチャートである。
【図５】指差し形状を検出する処理の説明図である。
【図６】操作子位置を決定する処理の説明図である。
【図７】ポインタアイコンを表示する処理の説明図である。
【図８】アイコンの変更例を示す図である。
【図９】第２の実施形態に係るマッピング処理の説明図である。
【図１０】第３の実施形態に係るプロジェクタの説明図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面に基づいて説明する。
（第１の実施形態）
図１は、第１の実施形態に係るプロジェクタシステムと、その利用形態を示す図である。本実施形態においては、複数のユーザがプロジェクタ１００により投影される表示画像を見ながら会議やプレゼンテーションを行う場合を例に、プロジェクタ１００について説明する。本実施形態に係るプロジェクタシステムは、情報処理装置としてのプロジェクタ１００とネットワーク上に配置されたサーバ装置１６０とを有している。プロジェクタ１００とサーバ装置１６０は、高速な無線回線１６１で接続されており、プロジェクタ１００はサーバ装置１６０に蓄積されている各種データ（コンテンツ）をネットワーク経由で取得することによって情報を投影する。もちろんプロジェクタ１００がもともと保持しているデータを投影することも可能である。
【００１１】
本実施形態では、プロジェクタ１００は、テーブル１２０上に設置されており、投影面１４０に表示データ１５０を投影している。さらに、プロジェクタ１００の周りを囲うようにユーザ１３０ａ〜１３０ｃが存在している。なお、以降において、各ユーザ１３０ａ〜１３０ｃを特に区別する必要がない場合に、単にユーザ１３０と称する。ユーザ１３０ａ〜１３０ｃは、プロジェクタ１００によって投影される表示データ１５０を見ながら、会議やプレゼンテーションを行う。この時、投影面１４０に投影された表示データ１５０に対する各種操作はユーザ１３０ａ〜１３０ｃのジェスチャ操作によって行われる。プロジェクタ１００は、プロジェクタ１００に搭載される全周囲ステレオカメラ１１０により撮影された画像に基づいて、ジェスチャ操作を検出する。
【００１２】
そして、プロジェクタ１００は、ジェスチャ操作が、表示データ１５０上のある位置、すなわち投影面１４０上の位置を指し示す指示操作である場合には、ポインタアイコンを表示する。ここで、ポインタアイコンは、指示操作により指示された点を示すアイコンであり、かつポインタアイコンがいずれのユーザ１３０ａ〜１３０ｃによる指示操作に対応しているかを示すアイコンである。図１の例では、投影面１４０には、表示データ１５０に重畳して、２つのポインタアイコン１４１ａ，１４１ｂが表示されている。本実施形態においては、ポインタアイコン１４１ａ，１４１ｂは、矢印を示す画像であるものとする。矢印の先端は、指示操作により指示される位置を示し、矢印の傾きによりポインタアイコンがいずれのユーザ１３０ａ〜１３０ｃの指示操作に対応するアイコンであるかを示している。このため、ポインタアイコンの傾きは、プロジェクタ１００とユーザ１３０ａ〜１３０ｃの間の位置関係に応じて変化する。詳細については後述する。また、本実施形態においては、指示操作をユーザの指先で行う場合について説明するが指示操作を行う操作子は、指先に限定されるものではない。操作子は、例えば手や腕、差し棒等であってもよい。
【００１３】
本実施形態のプロジェクタ１００には、全周囲ステレオカメラ１１０が搭載されている。全周囲ステレオカメラ１１０は、２つのカメラ１１１，１１２を有している。各カメラ１１１，１１２は、いずれも水平方向における全周囲（３６０°）を撮像できる全周囲カメラであり、半天球の画像（上と左右の全方位）を撮影することができる。２つのカメラ１１１，１１２は、図に示すように上下に搭載されており、左右全方位（ｙ軸に対して全周囲）の画像を利用することで、ステレオカメラとして機能することができる。
【００１４】
本実施形態では、プロジェクタ１００の周りに存在するユーザ１３０ａ〜１３０ｃ全員の指差し操作を検出できるように、プロジェクタ１００には撮像デバイスとして全周囲ステレオカメラ１１０が搭載されている。さらに、プロジェクタ１００から各オブジェクトまでの距離を算出可能とすべく、全周囲ステレオカメラ１１０をステレオ構成とし、ステレオ法により距離を算出するものとする。すなわち、図１に示すように、全周囲ステレオカメラ１１０は、２つのカメラ１１１，１１２を有している。カメラ１１１及びカメラ１１２は、上下に搭載され、各カメラ１１１，１１２は、左右全方位（ｙ軸に対する全周囲）の画像を撮影する。なお、本実施形態において、撮影制御部３０２が画像を撮像する周期は、全周囲ステレオカメラ１１０が撮像する画像のフレームレートに一致するものとする。ただし、フレームレートよらない所定の時間を撮像の周期として設定することもできる。
【００１５】
図２は、プロジェクタ１００のハードウェア構成の一例を示す図である。ＣＰＵ２００は、バス２０３を介して接続される各デバイスを統括的に制御する。オペレーティングシステム（ＯＳ）をはじめ、後述するプロジェクタ１００の機能や処理に係る各処理プログラム、デバイスドライバ等はＲＯＭ２０２に記憶されており、ＲＡＭ２０１に一時記憶され、ＣＰＵ２００によって適宜実行される。ＲＡＭ２０１は、高速にアクセス可能なＣＰＵ２００の主メモリ、ワークエリア等の一時記憶領域として用いられる。ここで、ＯＳ及び各処理プログラム等はストレージ２０９に記憶されていてもよく、その場合は電源投入時に必要な情報がＲＡＭ２０１に適宜読み込まれる。また、ディスプレイＩ／Ｆ２０４は、プロジェクタ１００で生成する表示データを投影部２０５が出力可能な信号に変換する。入力Ｉ／Ｆ２０６は、全周囲ステレオカメラ１１０により撮影された画像をプロジェクタ１００が処理可能な形式に変換する。
【００１６】
ストレージＩ／Ｆ２０８は、ストレージ２０９へのデータの入出力を行う。ストレージ２０９には、プロジェクタ１００が投影する表示データのＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の部品となる画像やサーバ装置１６０から取得したデータのコピー、プロジェクタ１００が内部で起動するプログラム等が格納されている。ストレージ２０９としては、ディスクデバイスやフラッシュメモリ、ネットワークドライブやＵＳＢドライブ等の大容量記憶装置が使用できる。また、複数の記憶装置を並列に接続して構成されていてもよいし、サーバ装置１６０に含まれるストレージであっても構わない。ネットワークＩ／Ｆ２１０は、ネットワーク上のサーバ装置１６０とリモートで通信を行う。本実施形態では、高速な無線のネットワークの利用を想定しているが、有線のネットワークを利用する形態であっても構わない。
【００１７】
図示していないが、サーバ装置１６０も、プロジェクタ１００と同様に、ＣＰＵ２００、ＲＡＭ２０１、ＲＯＭ２０２、バス２０３といったハードウェアで構成されている。さらに、ストレージＩ／Ｆ２０８、ストレージ２０９、ネットワークＩ／Ｆ２１０から構成されている。それぞれのハードウェアの機能はプロジェクタ１００と同様である。サーバ装置１６０のストレージ２０９には、プレゼン資料やドキュメント、画像や動画といったデータが膨大に格納されているものとし、プロジェクタ１００はそれらデータを高速の無線回線１６１経由で取得することが可能である。
【００１８】
図３は、プロジェクタ１００の機能構成の一例を示す図である。プロジェクタ１００は、通信制御部３００、記憶部３０１、撮影制御部３０２、領域検出部３０３及び形状検出部３０４を有している。さらに、プロジェクタ１００は、３次元位置算出部３０５、基準点特定部３０６、指差し検出部３０７及び表示制御部３０８を有している。これら各機能部は、ＣＰＵ２００が、ＲＯＭ２０２に格納されたプログラムをＲＡＭ２０１に展開し、後述する各フローチャートに従った処理を実行することで実現されている。また、ＣＰＵ２００を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。
【００１９】
通信制御部３００は、ストレージＩ／Ｆ２０８を介して、ストレージ２０９とのデータの入出力を制御する。また、通信制御部３００は、ネットワークＩ／Ｆ ２１０を介して、ネットワーク上のサーバ装置１６０とのデータ通信を行う。記憶部３０１は、ストレージ２０９により実現される。前述した通り、記憶部３０１には各種ＵＩ部品やサーバ装置１６０から取得したデータのコピー、プロジェクタ１００が実行するプログラムが格納されている。
【００２０】
撮影制御部３０２は、全周囲ステレオカメラ１１０による撮影を制御する。撮影制御部３０２は、全周囲ステレオカメラ１１０で撮像される全周囲のＲＧＢステレオ画像を所定時間間隔で取得し、ＲＡＭ２０１に随時保存する。ＲＧＢステレオ画像は、２つの視点から撮像された２枚のＲＧＢ画像から構成される。これら２つの画像間にはズレ（視差）があり、その視差に基づいて距離（ｄｅｐｔｈ）を算出できる。保存されたＲＧＢステレオ画像は、プロジェクタ１００の各機能ブロックにおいて順次処理される。なお、本実施形態において、撮影制御部３０２が画像を撮像する周期は、プロジェクタ１００が撮像する画像のフレームレートに一致するものとする。ただし、フレームレートよらない所定の時間を撮像の周期として設定することもできる。また、撮影制御部３０２は、カメラ１１１により撮影された画像をマスタ画像、カメラ１１２により撮影された画像をスレーブ画像として処理するものとするが、この限りではない。
【００２１】
領域検出部３０３は、ＲＡＭ２０１に保持されているＲＧＢステレオ画像の色情報を利用することによって、画像内の肌色領域（ユーザ１３０の顔や手を含む）とそれ以外の領域を検出する。さらに、領域検出部３０３は、検出した肌色領域をラベリングし、その結果をＲＡＭ２０１に保持する。さらに領域検出部３０３は、ＲＡＭ２０１に保存されている肌色領域から顔領域を検出し、その領域をラベリングしてＲＡＭ２０１に保持する。詳細は後述する。形状検出部３０４は、ＲＡＭ２０１に保持されている肌色領域及び顔領域の情報を利用し、顔領域以外の肌色領域から、指示操作として、指差し形状を検出する。詳細は後述する。さらに、形状検出部３０４は、検出した指差し形状領域をラベリングし、その結果をＲＡＭ２０１に保持する。本実施形態では、指示操作として検出する形状を人の手の指差し形状としたが、その限りではない。
【００２２】
３次元位置算出部３０５は、ＲＡＭ２０１に保持されている顔領域及び指差し形状領域の情報を利用して、プロジェクタ１００から各領域の各画素までの三次元位置を算出する。具体的な計算方法は後述するが、ステレオ画像を構成する２つの画像（マスタ画像とスレーブ画像）から対応点を探索し、視差から三角測量を用いて空間上の位置を算出する。ここで、対応点とは、空間中のある一点を二つの視点で同時に撮影したとき、それぞれの視点で撮影した画像中に写ったその点のことであり、一般的に「ステレオ対応点」と呼ばれる点である。例えば、図１に示す点Ｄを空間中の１点とし、カメラ１１１，１１２の２つの視点で点Ｄを同時に撮像したとき、カメラ１１１による撮影画像中の点Ｄと、カメラ１１２による撮影画像中の点Ｄが対応点となる。３次元位置算出部３０５は、算出した各画素の３次元位置情報をＲＡＭ２０１に保持する。
【００２３】
本実施形態では、３次元位置計測の手段として全周囲カメラ（全周囲ステレオカメラ１１０）を用いたが、必ずしもカラー画像である必要はなく、赤外ステレオカメラを用いて全周囲ステレオ画像を取得しても良い。また全周囲ステレオカメラではなく、全周囲画像を撮像可能な距離画像センサを用いることによって３次元位置情報を取得してもよい。さらに、1台のカメラではなく、複数のカメラで全周囲を撮像して３次元位置情報を算出してもよい。
【００２４】
基準点特定部３０６は、ＲＡＭ２０１に保持されている顔領域の３次元位置情報を利用し、顔領域の位置をユーザ位置として特定し、特定したユーザ位置をＲＡＭ２０１に保持する。基準点特定部３０６はまた、ＲＡＭ２０１に保持されている指差し形状領域の３次元位置情報を利用し、指差し形状領域の位置を操作子位置として特定し、特定した操作子位置をＲＡＭ２０１に保持する。なお、ユーザ位置及び操作子位置は、いずれも３次元座標系における位置とする。指差し検出部３０７は、ＲＡＭ２０１に保持されているユーザ位置と操作子位置とに基づいて、投影面１４０への指差し操作を検出する。詳細は後述する。表示制御部３０８は、記憶部３０１に保持されているデータやネットワーク上のサーバ装置１６０から取得したデータから表示データを生成し、投影部２０５が表示データを投影するよう制御する。表示制御部３０８はさらに、指差し検出部３０７によってユーザの指差し操作が検出されている場合には、ユーザが指差した位置に対応する投影面１４０上の位置にポインタアイコンを表示するよう制御する。
【００２５】
図４は、プロジェクタ１００による情報処理を示すフローチャートである。プロジェクタ１００は、本処理により表示データ１５０を投影面１４０に投影し、さらにユーザの指示操作を検出すると、指示操作に対応するポインタアイコンを表示データ１５０上に重畳して投影表示する。プロジェクタ１００の電源をＯＮにして起動すると、プロジェクタ１００は、まずステップＳ４００の処理を実行する。ステップＳ４００において、表示制御部３０８は、表示データを生成し、これを投影面１４０に投影するよう投影部２０５を制御する。なお、ここで投影される表示データは、ストレージ２０９やサーバ装置１６０に記憶されている会議で利用するプレゼン資料等である。投影部２０５は、表示制御部３０８の制御の下、表示データを投影面に投影表示する（投影処理）。
【００２６】
次に、ステップＳ４０１において、撮影制御部３０２は、既定のフレームレートでＲＧＢの全周囲ステレオ画像を撮像するよう全周囲ステレオカメラ１１０を制御する（撮影制御処理）。撮影制御部３０２は、得られた全周囲ステレオ画像をＲＡＭ２０１に保持する。全周囲ステレオカメラ１１０は、撮影制御部３０２の制御の下、全周囲ステレオ画像を撮影する（撮影処理）。次に、ステップＳ４０２において、領域検出部３０３は、ＲＡＭ２０１に保持されている全周囲ステレオ画像を解析し、マスタ画像及びスレーブ画像中に肌色領域があるか否かを検出する。領域検出部３０３は、肌色領域を検出しなかった場合は（ステップＳ４０２でＮｏ）、処理をステップＳ４１１へ進める。領域検出部３０３は、肌色領域を検出した場合は（ステップＳ４０２でＹｅｓ）、処理をステップＳ４０３へ進める。
【００２７】
ステップＳ４０３において、領域検出部３０３は、検出した肌色領域をラベリングし、その結果をＲＡＭ２０１に保持する。さらに、ステップＳ４０３において、領域検出部３０３は、ＲＡＭ２０１に保持されている肌色領域から顔領域を検出する。顔の検出については種々のアルゴリズムが知られているが、本実施形態では、顔を局所的な明暗差の集合であると捉え、肌色領域の明暗と複数の単純な明暗パターンとのマッチングを行うことによって顔領域を検出するものとする。そして、領域検出部３０３は、検出した顔領域をラベリングし、その結果をＲＡＭ２０１に保持する。
【００２８】
次に、ステップＳ４０４において、形状検出部３０４は、ＲＡＭ２０１に保持されている肌色領域のラベル画像と顔領域のラベル画像を利用して、顔領域以外の肌色領域から、指示操作として指差し形状を検出する。図５は、指差し形状を検出する処理の説明図である。形状検出部３０４は、図５に示す凸形状５００を指差し形状として検出する一方で、凸形状５０１については指差し形状ではないと判断し、指差し形状としては検出しない。具体的には、形状検出部３０４は、凸形状５００の領域中の肌色領域の割合と、凸形状５０１の領域中の肌色領域の割合との差に着目し、肌色割合に応じて、凸形状５００を検出する。
【００２９】
なお、指差し形状を検出するための処理は、実施形態に限定されるものではない。他の例としては、プロジェクタ１００は、検出したい指差し形状の画像をテンプレートとして予めＲＯＭ２０２等に記憶しておき、形状検出部３０４は、撮像した全周囲ステレオ画像と照らし合わせて（マッチングして）指差し形状を検出してもよい。また、他の例としては、形状検出部３０４は、肌色領域の形状から既定の特徴量を抽出し、機械学習することによって指差し形状を検出することも可能である。そして、形状検出部３０４は、検出した指差し形状の領域をラベリングし、その結果をＲＡＭ２０１に保持する。次に、ステップＳ４０５において、形状検出部３０４は、指差し形状が存在するか否かを判断する。形状検出部３０４は、指差し形状が存在しない場合は（ステップＳ４０５でＮｏ）、処理をステップＳ４１１へ進める。形状検出部３０４は、指差し形状が存在する場合は（ステップＳ４０５でＹｅｓ）、処理をステップＳ４０６へ進める。
【００３０】
ステップＳ４０６において、３次元位置算出部３０５は、ＲＡＭ２０１に保存されている全周囲ステレオ画像から、マスタ画像中の顔領域と指差し形状領域の各画素に対する３次元位置を算出する。例えば、マスタ画像中の指差し形状領域の画素（ｍ，ｎ）の３次元位置を算出する場合、３次元位置算出部３０５は、まず画素の位置（ｍ，ｎ）に対応するステレオ対応点（ｍ１，ｎ１）をスレーブ画像から探索する。そして、３次元位置算出部３０５は、マスタ画像中の画素の位置（ｍ，ｎ）とスレーブ画像中のステレオ対応点（ｍ１，ｎ１）との視差から三角測量によって、画素の位置（ｍ，ｎ）までの距離（深さ、ｄｅｐｔｈ）を求め、３次元空間上の位置を算出する。３次元位置算出部３０５は、マスタ画像中の顔領域及び指差し形状領域の全ての画素に対し、前述した３次元位置の算出を行い、その結果をＲＡＭ２０１に保持する。
【００３１】
次に、ステップＳ４０７において、基準点特定部３０６は、ＲＡＭ２０１に保持されている顔領域及び指差し形状領域の３次元位置情報を利用して、ユーザ位置及び操作子位置を特定する。以下、まず操作子位置を特定する処理について説明する。本実施形態に係るプロジェクタ１００は、指差し形状領域内の指先の位置を操作子位置として決定する。図６は、操作子位置を決定する処理の説明図である。基準点特定部３０６は、指差し形状領域の輪郭を利用して、指先の位置を決定する。具体的には、基準点特定部３０６は、図６に示すように、まず輪郭上の等間隔の３点（ａ，ｂ，ｃ）がなす角度Θが既定の閾値内である指先らしき点を複数個求める。そして、基準点特定部３０６は、指先らしき点が連続する部分を検出する。基準点特定部３０６はさらに、その連続する複数の指先らしい点の平均位置を指先位置６００、すなわち操作子位置としてＲＡＭ２０１に保持する。
【００３２】
次に、ユーザ位置を特定する処理について説明する。本実施形態に係るプロジェクタ１００は、顔のアゴの位置をユーザ位置として特定する。基準点特定部３０６は、前述した顔検出の場合と同様に、顔の局所的な明暗差から目の位置と口の位置を求め、両目を結んだ線から口の方向へ垂線を下ろし、顔領域の輪郭線と交わった位置をアゴの位置として特定する。そして、基準点特定部３０６は、アゴの位置をユーザ位置としてＲＡＭ２０１に保持する。なお、アゴの位置をユーザ位置としたのは、実際の指差しポインティングの状況やユーザビリティ的な観点を考慮した結果である。なお、本実施形態では顔領域の基準点をアゴの位置としたが、顔領域の重心位置や鼻の位置、両目間の中点をユーザ位置としてもよい。なお、ステップＳ４０７の処理は、操作子位置特定処理及びユーザ位置特定処理の一例である。
【００３３】
ステップＳ４０７の処理の後、ステップＳ４０８において、指差し検出部３０７は、ステップＳ４０７において特定した、操作子位置とユーザ位置の間の距離（以下、ユーザ距離と称する）が距離範囲内か否かを判断する。指差し検出部３０７は、ユーザ距離が距離範囲内である場合には（ステップＳ４０８でＹｅｓ）、指示操作としての指差し操作を検出したと判断し、処理をステップＳ４０９へ進める。指差し検出部３０７は、ユーザ距離が距離範囲外である場合には（ステップＳ４０８でＮｏ）、指示操作を検出しなかったと判断し、処理をステップＳ４１１へ進める。ステップＳ４０９において、指差し検出部３０７は、ユーザ１３０の指差しを検出したことを確定し、ユーザ１３０の指差しを検出したことを示す検出イベント（２つの基準点の３次元位置情報を含む）を表示制御部３０８へ通知する。
【００３４】
本実施形態に係るプロジェクタ１００においては、距離範囲を２０〜７０ｃｍとした。距離範囲の上限値を７０ｃｍとしたのは、人の手が届く範囲を考慮した結果である。また、距離範囲の下限値を２０ｃｍとしたのは、アゴの位置と指先位置があまりにも近い場合は、ユーザは指差し操作（ポインティング）をしようとしたわけでなく、顔近くで偶然に指差し形状をしているだけの可能性が高いからである。つまり指差し操作の誤認識を考慮した結果である。もちろん、距離範囲を「２０ｃｍから７０ｃｍ」以外に設定しても構わない。
【００３５】
次に、ステップＳ４１０において、表示制御部３０８は、指差し検出部３０７から指差し操作検出イベントを通知される。そして、表示制御部３０８は、プロジェクタ１００とユーザ１３０の位置関係を示すポインタアイコンを投影面１４０に表示中の表示データ１５０に合成して投影表示するよう制御する（表示制御処理）。以下、ポインタアイコンを表示する処理について、図１及び図７を参照しつつ説明する。前提として、図１に示すように、ユーザ１３０ａ，１３０ｂの２人が投影面１４０に表示された表示データ１５０に対して指差し操作を行い、図４のステップＳ４０９において指差し検出部３０７が指差し操作を検出しているものとする。
【００３６】
この場合、表示制御部３０８は、ＲＡＭ２０１上に保持されている顔領域と指差し形状領域の３次元位置情報に基づいて、図７（ａ）に示すようなＸＺ平面（鉛直方向に垂直な面）に平行な面上にマップを作成する（マッピングする）。すなわち、マップは、プロジェクタ１００とユーザ１３０ａ，１３０ｂの位置関係を地図のように上面から見た図（上面図）に相当する。つまり、マップ上では、Ｚ軸のマイナス方向を上方向とした場合には、プロジェクタ１００に対してユーザ１３０ａは下側に、ユーザ１３０ｂは右側にマッピングされる。なお、三角形の領域７０１は投影領域の範囲、円形の領域７０２は全周囲ステレオカメラ１１０で３次元位置情報を算出可能な領域を示している。また、７０３はプロジェクタ１００を上から見た際の中心点、７０４ａ，７０４ｂは、それぞれ基準点特定部３０６が特定したユーザ１３０ａ，１３０ｂのユーザ位置（アゴの位置）である。
【００３７】
さらに表示制御部３０８は、マップ上のプロジェクタ１００の中心点７０３とユーザ位置７０４ａ，７０４ｂを結ぶ直線７０５ａ，７０５ｂを求める。そして、表示制御部３０８は、図７（ｂ）に示すように、マップ上のプロジェクタ１００の中心点７０３を投影面１４０の対応中心点７１３に対応付ける。ここで、対応中心点７１３は、予め定められた位置であり、本実施形態においては、投影面１４０の中心位置とする。但し、対応中心点７１３の位置は、予め定められた投影面１４０の中心付近の位置であればよく、中心位置に限定されるものではない。さらに、表示制御部３０８は、２つの直線７０５ａ，７０５ｂそれぞれを、投影面１４０の対応中心点７１３に対応付けることにより２つの直線７１５ａ，７１５ｂを描画し、さらに各直線７１５ａ，７１５ｂを表示データ１５０の境界線まで引き伸ばす。そして、表示制御部３０８は、各直線７１５ａ，７１５ｂと表示データ１５０の境界線との交点７２０ａ，７２０ｂを求める。表示制御部３０８は、求めた交点７２０ａ，７２０ｂをそれぞれユーザ１３０ａ，１３０ｂに対して割り当てるポインタアイコン１４１ａ，１４１ｂの進入位置として決定する（進入位置決定処理）。
【００３８】
さらに、表示制御部３０８は、ユーザ１３０ａについての、ユーザ位置と操作子位置とを結ぶ直線に基づいて、ユーザ１３０ａが指差している表示データ１５０上の位置（投影面１４０上の位置）をユーザ１３０ａの指示位置として特定する。本処理は、投影面上の指示位置を特定する指示位置特定処理の一例である。具体的には、表示制御部３０８は、ユーザ位置と操作子位置とを結ぶ直線と、投影面１４０とが交わる位置７２１ａを、指示位置として特定する。同様に、表示制御部３０８は、ユーザ１３０ｂについての、ユーザ位置と操作子位置とを結ぶ直線に基づいて、ユーザ１３０ｂの指示位置７２１ｂを特定する。
【００３９】
表示制御部３０８は、進入位置７２０ａと指示位置７２１ａとを結ぶ直線に沿って、指示位置７２１ａを先端位置とする矢印形状のポインタアイコン１４１ａを投影表示するよう制御する。また、表示制御部３０８は、進入位置７２０ｂと指示位置７２１ｂとを結ぶ直線に沿って、指示位置７２１ｂを先端位置とする矢印形状のポインタアイコン１４１ｂを投影表示するよう制御する。
【００４０】
ここで、ポインタアイコン１４１ａ，１４１ｂは、いずれもユーザ位置と指示位置との関係を示すアイコンの一例である。また、進入位置７２０ａと指示位置７２１ａとを結ぶ直線は、ポインタアイコン１４１ａの傾きを定める直線であり、この直線を求める処理は、ポインタアイコンの傾きを決定する傾き決定処理の一例である。なお、表示制御部３０８は、ポインタを表示した後、ユーザ位置や操作子位置が移動した場合には、移動後の位置に応じて、適宜ポインタの表示を更新する。
【００４１】
図４に戻り、ステップＳ４１１において、ＣＰＵ２００は、プロジェクタ１００の動作を終了するか否かを判定する。ＣＰＵ２００は、プロジェクタ１００に設けられた物理ボタンやＧＵＩに対する入力によりプロジェクタ１００を終了する指示がなされた場合に、プロジェクタ１００の動作を終了すると判断する。ＣＰＵ２００は、動作を終了する場合には（ステップＳ４１１でＹｅｓ）、処理を終了する。ＣＰＵ２００は、動作を終了しない場合には（ステップＳ４１１でＮｏ）、処理をＳ４００へ進め、処理を続ける。
【００４２】
以上説明したように、本実施形態に係るプロジェクタ１００は、投影部２０５とユーザ１３０の位置関係からポインタの進入位置を求め、そのポインタ進入位置に応じて傾きの変化するポインタを表示した。このように、プロジェクタ１００とユーザ位置関係をポインタの表示形態に対応させて投影面１４０に合成表示することにより、ポインティングを行っているユーザのプロジェクタ１００に対するおおよその相対位置をユーザに認識させることができる。
【００４３】
地図に代表されるように、上面から見た位置、すなわち水平面へのマッピングに人は慣れているので、一度マッピングルールを理解すれば、表示されているポインタアイコンを見るだけで位置関係を直観的に把握可能である。そのために必要な表示領域はポインタアイコンを表示する領域のみであるので、従来型のポインタアイコンを表示する場合と比較してもリーズナブルである。
【００４４】
さらに、本実施形態で説明したような投影面に投影された表示データを利用しながら会議を行うユースケースでは、プロジェクタ１００の周りにユーザがいる場合が多い。従って、本実施形態で示すように、全周囲ステレオカメラ１１０をプロジェクタ１００に一体化させることにより、ユーザ位置を簡単に全周囲でマッピングすることができる。
【００４５】
本実施形態の第１の変更例としては、アイコンは、矢印型のポインタアイコンに限定されるものではない。図８は、アイコンの変更例を示す図である。表示制御部３０８は、図８に示すように、ユーザの腕を模した透過性のある影アイコン８００ａ，８００ｂを表示してもよい。
【００４６】
また、第２の変更例としては、表示制御部３０８は、ポインタアイコンをアニメーション表示してもよい。例えば、図７（ｂ）に示す例において、ポインタアイコン１４１ａ，１４１ｂがそれぞれ進入位置７２０ａ，７２０ｂから指示位置７２１ａ，７２１ｂまで移動するようなアニメーションを表示してもよい。これにより、ユーザにポインタアイコン１４１ａ，１４１ｂの進入位置７２０ａ，７２０ｂを明確に認識してもらうことができる。さらに、表示制御部３０８は、ポインタアイコン１４１ａ，１４１ｂがそれぞれ指示位置７２１ａ，７２１ｂに到達した後、指差し操作が未検出となってから一定時間経過後に、ポインタアイコン１４１ａ，１４１ｂを非表示にするよう制御してもよい。
【００４７】
また、第３の変更例としては、本実施形態では、全周囲画ステレオ画像からユーザの顔や指差しを検出したが、これに限定されるものではない。他の例としては、プロジェクタ１００は、位置情報が取得可能なデバイスから取得できる位置情報を用いてユーザの顔や指差しを検出してもよい。
【００４８】
また、第３の変更例としては、プロジェクタ１００は、ポインタアイコンとしての矢印の長さを、指示位置とユーザ位置の間の距離に基づいて決定してもよい（長さ決定処理）。
【００４９】
（第２の実施形態）
次に、第２の実施形態に係るプロジェクタ１００について説明する。第２の実施形態に係るプロジェクタ１００は、図４のステップＳ４１０において、プロジェクタ１００とユーザ１３０との位置関係をＸＹ平面に平行な面上にマッピングし、このマッピング結果に基づいてポインタアイコンを表示する。以下、第２の実施形態に係るプロジェクタ１００について第１の実施形態に係るプロジェクタ１００と異なる点について説明する。図９は、第２の実施形態に係るマッピング処理の説明図である。図９（ａ）に示す９０２は操作子位置、９０３はユーザ位置である。９００は、操作子位置９０２とユーザ位置９０３を結ぶ直線が投影面１４０と交わる位置、すなわち指示位置である。
【００５０】
本実施形態においては、表示制御部３０８は、操作子位置９０２とユーザ位置９０３とに基づいて、操作位置９００を求める。さらに、表示制御部３０８は、操作位置９００と操作子位置９０２とを結ぶ線分のｘ，ｙ成分であるｘ１，ｙ１を求める。ここで、ｘ１は、図９（ｂ）に示すように線分をｘ方向に射影した長さである。また、ｙ１は、図９（ｃ）に示すように線分をｙ方向に射影した長さである。さらに、表示制御部３０８は、操作子位置９０２から投影面１４０上への垂線の長さ、すなわちｚ方向の成分ｚ１の大きさに応じてポインタの奥行（矢印の遠近感）を調整する。なお、第２の実施形態に係るプロジェクタ１００のこれ以外の構成及び処理は、第１の実施形態に係るプロジェクタ１００の構成及び処理と同様である。
【００５１】
このように、第２の実施形態に係るプロジェクタ１００は、カーナビの一人称視点表示のように、プロジェクタ１００に対するユーザの位置関係を一人称視点でマッピングしてポインタ（アイコン）を投影表示する。１人称視点のマッピングは、上面から見た位置へのマッピング（上面図）と比較すると見たままとなるので、直観的に各ユーザのおおよその位置をユーザ自身に認識させることができる。
【００５２】
（第３の実施形態）
図１０は、第３の実施形態に係るプロジェクタ１０１０の説明図である。第３の実施形態に係るプロジェクタ１０１０は、懐中電灯型のモバイルデバイスである。すなわち、プロジェクタ１０１０は移動可能である。このため、プロジェクタ１０１０の位置は一定ではなく、またプロジェクタ１０１０の位置に応じて投影方向も変化する。プロジェクタ１０１０は、変化するプロジェクタ１０１０の位置に応じて、ポインタを表示する。以下、第３の実施形態に係るプロジェクタ１０１０について他の実施形態に係るプロジェクタ１０１０と異なる点について説明する。なお、本実施形態においては、美術館の学芸員がプロジェクタ１０１０を持ち、プロジェクタ１０１０により表示データを投影表示させながら、来客者に対して美術品１０８０についての説明を行う場合を例にプロジェクタ１００について説明する。図１０に示す１０４０は投影面を示している。なお、投影面１０４０は、美術品１０８０の後方に設けられているものとする。また、他の例としては、投影面１０４０は、美術品１０８０の前方に設けられていてもよい。この場合には、投影面１０４０は透明な面であるものとする。
【００５３】
図１０（ａ）に示すように、第３の実施形態に係る全周囲ステレオカメラ１０１０は、２つのカメラ１０１１，１０１２の他に、距離画像センサ１０１３を有している。プロジェクタ１０１０は、ユーザとしての美術館の学芸員１０３０ａによって携帯されるモバイルデバイスであり、投影対象物や投影面は変化する。また、プロジェクタ１０１０と、ユーザとしての来客者１０３０ａ，１０３０ｂ，１０３０ｃとの間の位置関係も頻繁に変化する。このため、プロジェクタ１０１０は、全周囲ステレオ画像だけでなく、距離画像センサ１０１３の検出結果を利用して、既定のフレームレートで距離画像を撮像する。プロジェクタ１０１０は、領域検出部３０３と形状検出部３０４で撮像した距離画像を処理することによって、投影対象物が何であるかを識別する。つまり、投影対象物がある特定の美術品であることを識別する。プロジェクタ１０１０は、この識別情報を利用し、ネットワーク上のサーバ装置１６０から識別した美術品１０８０に関する情報を取得し、美術品１０８０自体に情報を重畳表示する。プロジェクタ１０１０は、例えば、美術品の名前や作者等の付加情報を重畳表示することができる。
【００５４】
図１０（ａ）は、学芸員１０３０ａがプロジェクタ１０１０を用いて来客者１０３０ｂ，１０３０ｃに対して美術品１０８０の説明をしている時に、来客者１０３０ｂ，１０３０ｃの２人が美術品１０８０の一部をポインティングしている場面を示している。第１の実施形態の場合と同様に、来客者１０３０ｂ，１０３０ｃの指差し操作は、プロジェクタ１０１０によって検出され、その結果、投影面１０４０に各来客者１０３０ｂ，１０３０ｃに対応するポインタアイコン１０４１ｂ，１０４１ｃが表示されている。また、図１０（ａ）の１０４２ｂ，１０４２ｃは、それぞれポインタアイコン１０４１ｂ，１０４１ｃの進入位置を示している。
【００５５】
ここで、来客者１０３０ｂが指差した位置、すなわちポインタアイコン１０４１ｂの先端の位置に関して学芸員１０３０ａが説明しようとして、図１０（ａ）に示す矢印Ａの方向にプロジェクタ１０１０を回転させたとする。この場合、図１０（ｂ）に示すように、投影面は、１０４０から他の面１０５０に変化する。なお、このとき、来客者１０３０ｂ，１０３０ｃが指差しの対象としている位置は変わっていないものとするが、プロジェクタ１０１０の回転移動に起因して、プロジェクタ１０１０と来客者１０３０ｂ，１０３０ｃとの間の位置関係が変化する。これに従い、来客者１０３０ｂに対応するポインタアイコン１０４１ｂは、図１０（ｂ）に示すポインタアイコン１０５１ｂに変化する。ここで、１０５２ｂは、ポインタアイコン１０５１ｂの進入位置である。すなわち、ユーザ１３０ｂに対応するポインタが指差し対象とする美術品１０８０の位置は変わらないが、ポインタアイコンの進入位置及び傾きが変化する。
【００５６】
一方で、プロジェクタ１０１０の回転移動に起因して、プロジェクタ１０１０と来客者１０３０ｃとの間の位置関係が変化し、来客者１０３０ｃに対応するポインタアイコン１０４１ｃは、図１０（ｂ）に示すポインタアイコン１０５１ｃに変化する。しかしながら、ポインタアイコン１０５１ｃの位置は、投影面１０５０の範囲外、すなわち投影範囲の外側になってしまう。このように、プロジェクタ１０１０は、ポインタアイコンの位置が投影面１０５０の範囲外になった時点で、ポインタアイコンの表示を終了し、ポインタアイコンに替えて、矢尻型の関連アイコン１０６０を投影面１０５０の境界位置に表示する。関連アイコン１０６０は、その方向に来客者１０３０ｃが指している位置があることを示している。さらに、プロジェクタ１０１０は、再びポインタアイコン１０５１ｃが投影面１０５０の範囲内になった場合には、関連アイコン１０６０の表示を終了し、関連アイコン１０６０に替えてポインタアイコン１０５１ｃを表示する。
【００５７】
プロジェクタ１０１０が、このような表示制御を行うことにより、学芸員１０３０ａは、来客者１０３０ｂ，１０３０ｃがポインティングしている箇所（説明を聞きたいと思っている箇所）を順番に１つずつ説明することができる。さらに、本実施形態のプロジェクタ１０１０は、指示位置をＲＡＭ２０１等の記憶部に記録しておく（記録処理）。そして、プロジェクタ１０１０は、一定時間以上指差し操作が継続した場合には、指差し操作が終了した後も、対応するポインタアイコン又は関連アイコンの表示を継続するよう制御してもよい。これにより、来客者は、説明の順番が回ってくるまで、指差し操作を継続する必要がなくなり、プロジェクタ１０１０の利便性を向上させることができる。
【００５８】
以上説明したように、懐中電灯型のモバイルデバイスのような実施形態においても、ポインタアイコンを操作しているユーザのおおまかな位置を伝えることができる。つまり、プロジェクタ１０１０に対するユーザ位置関係をポインタアイコンの進入位置やポインタの傾きを利用してユーザにフィードバックすることにより、ユーザはポインティングしているユーザのおおよその位置を認識可能となる。
【００５９】
以上、上述した各実施形態によれば、投影面に対し、複数のユーザそれぞれの指示操作に応じた複数のアイコンが表示される場合においても、指示操作を行っているユーザとアイコンとの対応関係をわかり易く提示することができる。
【００６０】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【００６１】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６２】
１００  プロジェクタ
１１０  全周囲ステレオカメラ
１４０  投影面
１５０  表示データ
【図１】
0006632298.tif 000002
【図２】
0006632298.tif 000003
【図３】
0006632298.tif 000004
【図４】
0006632298.tif 000005
【図５】
0006632298.tif 000006
【図６】
0006632298.tif 000007
【図７】
0006632298.tif 000008
【図８】
0006632298.tif 000009
【図９】
0006632298.tif 000010
【図１０】
0006632298.tif 000011