以下、本発明を実施するための形態について、図面を参照しながら説明する。
(第1の実施形態)
第1の実施形態では、ユーザがタッチすることで操作可能なユーザインタフェース(以下、UI)として、複数のメニューを表す複数のオブジェクトから構成される操作メニューを投影する。そして、ユーザが操作メニューをタッチするために、操作メニューを構成するオブジェクトを投影する投影光を手で遮断した場合には、決定された位置にオブジェクトを移動させる。また、ユーザによるオブジェクトへのタッチ操作に応じて、新たに拡張メニューを投影する。この際、投影光が照射される方向に基づいて、ユーザが、各オブジェクトが示す操作メニューの内容を、ユーザがタッチ操作に用いる物体の影に阻害さることなく識別しやすい位置を決定する。
図1は、本発明による情報処理装置及び画像処理システムの一例を示す外観図である。図1(a)の、情報処理装置100は、プロジェクタ101及びカメラ102を内蔵している。この例では、一般的なテーブル104の机上を投影面とし、投影画像103を投影している。本実施形態においては、投影画像103内に含まれる各種オブジェクトを、ユーザがタッチしたことを検知する。距離センサ105は、例えば赤外線センサで、ユーザが操作のために使用する物体(以下、代表的な例としてユーザの手であるものとする。)と、投影面104との距離を検知し、投影画像103に対してタッチが行われたかを判定することができる。ただし、カメラ102が撮影した画像を解析することにより、ユーザの手と投影面104との距離を判定し、タッチを判定することもできる。その場合、距離センサ105の構成は省略可能である。一方、図1(b)は、独立した情報処理装置100、プロジェクタ101、カメラ102からなる情報処理システムである。距離センサ105は、ここではカメラ102と兼用であるとし、撮影した画像から投影画像103に対するタッチを検知するもとしているが、赤外線カメラなどの各種センサによって構成されてもよい。また、このようなテーブルトップ型の情報処理システムでは、テーブル104にタッチセンサを設けることによって、ユーザのタッチを検知することもできる。図1(b)の例においても、テーブル104の机上を投影面として、投影画像103がプロジェクタ101によって投影されている。以下、本実施形態では図1(a)のように、プロジェクタ101とカメラ102が内蔵された情報処理装置100を例に説明する。この際、ユーザは情報処理装置100を机上の、左手側に設置し、右手側に向かって投影光を照射するものとする。本実施形態において、投影光とは、プロジェクタ101が、投影面104に対して投影画像103を投影するために照射する光であり、オブジェクトを投影する投影光とは、投影画像103のうち、UIを構成するオブジェクトの部分を投影する光のことである。
図2(a)は、情報処理装置100のハードウェア構成を示すブロック図である。同図において、CPU200は、システムバス205を介して接続する各デバイスを総括的に制御する。CPU200は、読み出し専用メモリ(ROM)202もしくはハードディスク(HD)203に記憶された処理ステップやプログラムを読み出して実行する。ネットワークデバイス204は、本実施例では無線LANデバイスで、一般的な無線LANの規格により通信を行う。情報処理装置100は、無線LANを介して他の通信機器と画像データや情報データをやり取りすることができる。この際、CPU200がコントローラとして機能する。ランダムアクセスメモリ(RAM)201は高速にアクセス可能なCPU200の主メモリ、ワークエリア等の一時記憶領域として用いられる。プロジェクタ101は、デジタルに制御可能な一般的な投影液晶プロジェクタで、液晶表示素子、液晶制御回路、発光回路、表示メモリから構成され、CPU200からの指示に従い、画像や文字を投影面に投影させる。カメラ102は、CCD等の撮像センサ、レンズ、撮影画像メモリから構成され、CPU200からの指示に従い、プロジェクタ101による投影画像103を含む投影面104上の映像を撮影し、撮影画像メモリに保持する。距離センサ105は、本実施例では赤外線センサであって、ユーザの手と投影面104との距離に基づいて、ユーザの投影面に対するタッチを検知する。なお、プロジェクタ101及びカメラ102は、情報処理装置100にインタフェースを介して接続される外部装置であってもよい。
図2(b)は、本実施形態による情報処理装置100の機能構成を示すブロック図である。撮像部210は、カメラ102の機能部であり、投影面104上の投影画像103を含む領域の映像を撮像し、撮影画像メモリに保持する。取得部211は撮像部210の撮影画像メモリから、撮像された映像の各フレームを表す静止画像を取得し、RAM201に保持する。検出部212は、RAM201に保持された静止画像から、ユーザの手(あるいは、タッチ操作を行うために使用される物体)が写っている領域を検出する。この際、検出部212は、制御部217が投影部218に出力した投影画像103と、取得部211から取得した画像との差分を抽出する。抽出された差分に対し、予め保持部215に保持されているテンプレート画像とのマッチング処理を行うことによって、ユーザの手が投影部218と投影面104の間に存在することを検出する。また、検出部212は、検出した手の形状を認識して、指の先端の位置を検出し、その位置情報をRAM201に保持する。なお、本実施形態では、ユーザが手の指を使って投影面に対するタッチ操作を行うものとして説明するが、例えばタッチペンなど、手以外の物体によって操作が行われる場合にも、同様に物体とその先端の位置が検出される。その場合にも、検出部212は予め予め登録されたテンプレート画像とのマッチングから、ユーザが投影面をタッチするために用いる物体が投影部218と投影面104の間に存在することを検出するとともに、その先端の位置を検出する。検知部213は、検出部212が検出した手によって操作メニューの投影面への投影が遮断されたことを検知する。距離検知部214は、ユーザの手と投影面104との距離を検知し、所定の閾値よりも小さい場合に、投影面104がタッチされたと判定する。保持部215は、UIを構成するオブジェクトの画像データ、オブジェクトを配置する際の位置関係を示す複数種類のレイアウトのデータ、ユーザの手を検出する際にマッチングに用いるテンプレートなど情報処理装置100が処理する各種データを保持している。また、保持部215には、オブジェクトの画像データとオブジェクトが示す操作メニューの内容の対応関係を示す情報が保持されている。情報処理装置100で実行される実行可能な操作メニューが、階層構造を有する場合には、下位の階層の操作メニューを、上位階層のメニューを示すオブジェクトに対して拡張メニューとして関連付け、その関連情報を保持する。決定部216は、UIを構成する複数のオブジェクトを投影する位置を決定する。本実施形態では、決定部216は、オブジェクトを配置する基準位置及び保持部215に予め保持されているレイアウト情報に基づき、オブジェクトを配置する位置及びレイアウトを決定する。また、検知部213が、検出部212が検出した手によって操作メニューの投影面への投影が遮断されたことを検知した場合には、オブジェクトを投影する位置を移動させるための移動後のレイアウトと、レイアウトに従ってオブジェクトを投影させる位置を決定する。制御部217は、決定部216が決定したレイアウトに従い、オブジェクトを投影させるための投影画像を生成し、投影部218に出力する。投影部218は、プロジェクタ101の機能部であり、制御部217から取得した投影画像を投影するための投影光を照射する。
図3は、UIを構成するオブジェクトを投影する処理の一例を示すフローチャートである。本実施形態による情報処理装置100は、ユーザによってUIを投影させる指示がなされたことを認識すると、投影部218が投影している内容に対応するUIを加えた投影画像103を生成し、投影面104に投影させるものとする。
まず、ステップS300において、認識部が、UIを投影させる指示がなされたか否かを判定する。本実施形態においては、撮像部が撮影している映像の複数のフレームにおいて、検出部212が取得したユーザの手が写っている領域の変化を認識部が認識し、手の動きが所定の動作に対応しているかによって判定を行う。ここでは、UIを投影させる指示として、手を所定時間よりも長い間、投影部218と投影面104の間にかざす動作を行うものとする。ユーザの手によって、UIを投影させる指示がなされた場合には、ステップS301に進む。指示がなされていない場合には、指示があるまで待機する。
次に、ステップS301においては、制御部217が、指示に応じて投影するUIとして、現在投影部218によって投影されている内容に対応した操作メニューを特定し、特定された操作メニューを構成するためのオブジェクトを保持部215から取得する。例えば、投影部218によって保持部215に保持された動画が再生されている場合には、巻き戻し・早送り・一時停止などの操作メニューを投影するためのオブジェクトが取得される。また、情報処理装置100のスタート画面を投影していれば、次に実行可能なメニューのリストを投影させるため、各メニューの項目を示すオブジェクトが取得される。本実施形態では、ユーザの指示に応じてリスト形式の操作メニューを投影させ、ユーザにリストの中から所望とするメニューをタッチ操作で特定させる例を説明する。
次に、ステップS302において、投影制御手段が、ステップS301で取得したオブジェクトを初期状態での投影位置に投影する。本実施形態において、初期状態での投影位置は、ユーザがUIを投影させる指示のために投影部218と投影面104の間にかざした手の、人差し指の先端位置を基準に決定部が決定するものとする。ステップS302で実行されるオブジェクト投影処理の詳細は後述する。
次に、ステップS303において、ユーザの手によって、オブジェクトの投影が遮断されたかを判定する。本実施形態では、検知部213が、ユーザの手によってオブジェクトの投影が遮断されたことを検知したか否かによって判定を行う。投影部218が照射する投影光が、検出部212が検出しているユーザの手によって遮断されると、投影面上にはユーザの手の影が生じる。オブジェクトを投影する部分の光が遮断されると、ユーザにとっては、自分の手の影が操作メニューに重なるように見えるため、操作メニューの視認性が低下してしまう。特に、リスト形式のメニューのうち、複数のメニューが手の影によって視認できなくなった場合、各メニューの識別性が低下してユーザがリストの中から所望とするメニューを特定しようとする場合に支障をきたす。検知部213が、ユーザの手によってオブジェクトの投影が遮断されたことを検知する方法は、情報処理装置100の特性に合った方法を用いればよい。例えば、検出部212がユーザの手が写っている領域の色が変化したことを検知し、投影したオブジェクトの少なくとも一部がユーザの手の上に投影されたことによる変化であるかを判定する。この方法は、図1(a)の情報処理装置100のように、プロジェクタ101とカメラ102が比較的近い位置に設置された小型の装置において、投影光の照射方向とカメラが撮影する方向が類似する場合に、検知し易い方法である。別の方法として、検出部212が、取得部211が取得した画像に基づいて、ユーザの手に対応する手の影が写った領域をさらに検出し、手の影が、オブジェクトが投影されるべき範囲内に存在することを検知してもよい。この方法は、図1(b)のように、プロジェクタ101とカメラ102を離れた位置に設置し、異なる角度から投影面に向けることができる画像処理システムなどにおいて、手と手の影を区別して検出し易いために使用し易い方法となる。オブジェクトの投影が遮断されたと判定された場合には、ステップS304に進み、遮られていないと判定された場合には、ステップS303に戻って待機する。
ステップS304において、オブジェクトの投影位置を移動させる処理を行う。ここでは、手の影によって操作メニューの各アイコンに対する識別性が低下しないように各アイコンを投影する位置を移動させる。ステップS304において行われる処理の詳細は後述する。
ステップS305において、ユーザによって、投影されているオブジェクトがタッチされたかを判定する。ここでは、距離センサがユーザの指の先端と、投影面104との間の距離が所定の閾値未満になったことが検知された時に、検出部212によって検出されている指の先端の位置が、いずれかのオブジェクトを投影している範囲内であるかを判定する。本実施形態では、閾値を0とし、指が投影面に触れたときにタッチ操作がなされたと判定する。そしてその位置情報に基づき、タッチされたオブジェクトを特定する。このとき、制御部217は、タッチされたオブジェクトの色を変化させるなどして、タッチ操作が認識されたことがユーザにわかるように投影画像の表示を変更する。オブジェクトがタッチされたと判定された場合には、ステップS306に進む。オブジェクトがタッチされていないと判定された場合には、ステップS305に戻ってオブジェクトがタッチされるまで待機する。
ステップ306では、決定部216が、特定されたオブジェクトが示す操作メニューには、対応する拡張メニューがあるかを判定する。決定部216は、保持部215に保持された関連情報を参照して、特定されたオブジェクトが示す操作メニューに下位の階層の操作である拡張メニューが関連付けられているかを判定する。そして、拡張メニューがあると判定された場合には、ステップS307に進み、拡張メニューがないと判定された場合にはステップS309に進む。
ステップS307において、特定されたオブジェクトの拡張メニューを投影する。ここでは、投影面をタッチしている手の影によって拡張メニューを構成する各オブジェクトの識別性が低下しない位置に各アイコンを投影する。ステップS307において実行される処理の詳細は後述する。
次に、ステップS308では、投影されているオブジェクトの上で、投影面に対するユーザのタッチが解除されたかを判定する。ここでは、距離センサがユーザの指の先端と、投影面104との間の距離が所定の閾値よりも大きくなったことが検知された時に、検出部212によって検出されている指の先端の位置が、いずれかのオブジェクトを投影している範囲内であるかを判定する。本実施形態では、オブジェクトが投影されている範囲内において、ユーザの指が投影面から離れた場合に、その位置に投影されているオブジェクトが示す拡張メニューが特定されたと認識する。投影されているオブジェクトの上で、ユーザの指による投影面に対するタッチが解除されたと判定された場合には、ステップS309に進む。タッチが解除されていないと判定された場合には、ステップS308でタッチが解除されるまで待機する。
ステップS309では、ユーザの操作によって特定された情報処理装置100への指示を実行する。すなわち、ステップS306において、ユーザがタッチしたことによって特定されたオブジェクト、あるいはステップS308において、ユーザがタッチを解除したことによって特定されたオブジェクトが示す操作メニューの処理を実行する。特定された処理を実行すると、本実施形態によるユーザインタフェースを投影する処理は終了する。
以上が、本実施形態によって、UIを構成するオブジェクトを投影する処理である。
ここで、図4(a)は、ステップS302で実行されるオブジェクト投影処理を示すフローチャートである。
まず、ステップS400において、検出部212が、投影面を撮影した画像からユーザの手を検出する。検出部212は、取得部211が取得したフレームを表す静止画像から、ステップS300においてUIを投影させる指示をおこなったユーザの手を追跡し、撮影された映像の最新のフレームを表す静止画像におけるユーザの手を検出する。
ステップS401において、検出部212は。ユーザの指の先端の位置(以下、位置Rとする)を検出する。ここでは、保持部215に保持されたテンプレートとのマッチングを基に、ユーザの人差し指の先端を検出する。本実施形態では、投影画像103の右下の隅を原点とする座標平面を設定し、検出した人差し指の先端から投影面に鉛直に下ろした点の座標を、位置Rを示す情報としてRAM201に保持する。
ステップS402において、決定部216は、位置Rに基づいて、操作メニューを構成するオブジェクトを投影する位置を決定する。本実施形態では、ユーザのUI投影指示に従って初期位置に操作メニューを投影させる際には、オブジェクトを縦に整列させる初期レイアウトに従ってオブジェクトを配置するものとする。図5(a)は、3つの項目による操作メニューを構成するオブジェクト501〜503を配置するための初期レイアウトの一例を示す。決定部216は、位置Rの座標情報と、保持部215から取得した初期レイアウトの情報を基に、各オブジェクトを配置する位置の座標情報を決定する。本実施形態では、位置Rの座標が縦に整列したオブジェクトの右下の端に一致するように、投影画像内でのオブジェクトの位置を決定する。
ステップS403において、制御部217が、決定された位置にオブジェクトを投影する。その際、制御部217は、決定部によって決定された位置に、オブジェクトを配置した投影画像を生成し、投影部218に出力する。
このように、ユーザの指の先端を検出した位置Rに基づいて、オブジェクトを投影する位置を決定することで、ユーザはUIを操作するために手を大きく動かす必要がない。さらに、ユーザがUIを投影させる位置を任意に調整できるという効果がある。従って、例えば、視聴している映像の内容を阻害しないように操作を行いたい場合や、複数人で投影画像を視聴している環境で、自分の近くにUIを投影させたい場合などに利便性を高める効果を有する。決定部によって初期位置が決定されると、その位置情報を制御部217が取得し、初期位置に配置されたオブジェクトを含む投影画像を生成し、投影部218に出力を指示する。投影部218は、制御部217からの指示を受け、投影画像を投影する投影光を照射する。
次に、図4(b)は、ステップS304で実行されるオブジェクトを投影する位置を移動させる処理を示すフローチャートである。
ステップS410において、決定部216が、投影光が照射される方向の情報を取得する。本実施形態において、投影光は、投影部212を機能部とするプロジェクタ101の発光回路を光源として照射されている。また、投影光が照射される方向の情報とは、投影面に投影されているオブジェクトに対して、投影光がオブジェクトを囲む360度の全方向のうちどの方向から照射されているか、すなわち、光源が存在する方向を示す情報である。ここで、図5(b)は、投影光が照射される方向を角度の情報として得る方法を表現した図である。まず、単位円504の中心が、投影されているオブジェクトの中心にあると仮定する。そして、投影光が照射される方向を差すベクトル505が、横軸506となす角度507をθとして、その角度の大きさを、投影光が照射されている方向の情報として特定する。本実施形態では、情報処理装置100は、図1(a)のように、カメラ102とプロジェクタ101が一体となった装置である。また、本実施形態の情報処理装置100では、1人のユーザが、ユーザ自身の左手側に情報処理装置100を設置して、右手側に投影光を照射させて使用するものとしている。情報処理装置100は、初期設定情報として、投影画像103に対するユーザが存在する方向を示す情報を保持しており、制御部217は、初期設定情報に従ってユーザの存在する方向に上下方向を合わせた投影画像103を生成し、投影部218に出力している。従って、決定部216は、保持部215に保持された情報処理装置100の初期設定情報から、投影光が照射される方向は、投影されているオブジェクトの上下方向に対して左側であることを示す情報を取得することができる。この場合、角度507(θ)は、90≦θ<270であるとして情報が取得される。
次に、ステップS411では、決定部216が、ステップS410で取得した投影の方向に基づいて、移動後のオブジェクトのレイアウトを決定する。図5(c)は、本実施形態の保持部215に保持されている、投影部218からの投影光が照射される方向(項目508)と、移動後のレイアウト(項目509)の対応関係の一例を示している。これらのレイアウトは、投影光が照射される方向を考慮し、複数のオブジェクトがユーザの手の影と同時に重なって、オブジェクトの識別性を低下させる状態が発生し難いように設定されたものである。本実施形態では、90≦θ<270であったので、複数のオブジェクトを右上から左下の方向に並べたレイアウトが、移動後のレイアウトとして決定される。これは、光源が左側に存在する場合には、ユーザの手の影は、手より右側に生じるため、メニューを左方向に広げることによって、ユーザからの視認性を低下させないようにしたものである。
次に、ステップS412では、決定部216が、決定されたレイアウトに従って移動される各オブジェクトの投影位置を決定する。本実施形態では、初期レイアウトで縦に整列していた複数のオブジェクトのうち、中心部にあるものほど移動する距離が少なくなるように移動後の投影位置を決定する。例えば、図5(a)のような3つの操作メニューの項目を表すオブジェクトを、真ん中のオブジェクトは移動させず、上下のオブジェクトの投影位置を左右に平行移動させるように投影位置の座標情報を決定する。
ステップS413では、各オブジェクトを決定された投影位置まで移動して投影する。このとき、制御部217は、本実施形態では、初期レイアウトによる投影位置から、移動後の投影位置までオブジェクトが移動する軌跡を、アニメーションを用いて表現する投影画像103を生成し、投影部218に出力する。アニメーションを用いて移動を表現することで、ユーザは、操作メニューが投影される位置が変わっても元の位置と移動後の位置を関連付けて把握することが容易になるため、移動後でも所望とするメニューを見つけやすい。
以上のように、本実施形態では、投影光が照射される方向を考慮し、ユーザが操作に用いる物体によって、複数のオブジェクトの投影が同時に遮断されない位置を、オブジェクトを投影する位置として決定する。従って、ユーザの手の影によって複数のオブジェクトの識別性が低下することを防ぐことができる。
ここで、投影光を照射する光源(投影部218)が存在する方向を取得するための異なる処理の一例を説明する。本実施形態では、図1(a)のように、カメラ102とプロジェクタ101が一体となった情報処理装置100を用いるため、ステップS410では、初期設定情報を基に光源の存在する方向を取得した。一方、例えば図1(b)のように、プロジェクタ101とカメラ102、情報処理装置100を別々に設置可能な情報処理システムの場合には、投影面を撮影した画像を基に、投影光が照射される方向の情報を取得する。図4(c)は、画像から光源の方向を取得する処理の一例を示すフローチャートである。ステップS420において、検出部212が、投影面を撮影した画像から、ユーザの手の影を検出する。この際、検出部212は、ステップS400で検出し、追跡しているユーザの手の形状と、予め登録された影の色情報を基に、手の影が写っている領域を検出する。次に、検出部212は、ステップS412において、指の先端の影の位置(以下、位置Sとする)を特定する。位置Sは、位置Rに対応する影の位置である。検出部212は、投影画像103の右下を原点とした座標平面での位置Sの座標情報が取得する。次に、ステップS422において、位置Sから位置Rへのベクトル方向を取得する。ここで取得される方向は、図5(b)の単位円におけるベクトル505が示す角度507の大きさの情報に相当する。次に、ステップS423において、取得されたベクトル方向を、投影光が照射される方向の情報として、保持する。以上が、画像から光源の方向を取得する処理の一例である。このように、手と手の影の位置関係に基づいて、光源の存在する方向を推定することで、プロジェクタ101の位置情報を情報処理装置100が予め保持していない場合にも、手の影に影響されずにオブジェクトを投影させる位置を決定し易くなる。
図4(d)は、ステップS307において実行される、タッチされたオブジェクトに対応した拡張メニューを投影する処理を示すフローチャートである。
ステップS430において、制御部217が、タッチされているオブジェクトに対応した拡張メニューを示すオブジェクトを取得する。
次に、ステップS431において、決定部216が、ステップS410で取得した光源の存在する方向の情報に基づいて、拡張メニューを投影するレイアウトを決定する。図5(c)は、投影光が照射される方向(項目508)と、拡張メニューのレイアウト(項目510)の対応関係の一例を示している。図5(c)において、拡張メニューのレイアウト(項目510)は、タッチされたオブジェクト(オブジェクト0)に対して、それぞれ拡張メニューを示す3つのオブジェクト(0−1、0−2、0−3)が投影される位置を表している。本実施形態では、90≦θ<270であったので、複数の拡張メニューを示すオブジェクトを右上から左下の方向に並べたレイアウトが、拡張メニューのレイアウトとして決定される。これは、光源が左側に存在する場合には、ユーザの手の影は、手より右側に生じるため、メニューを左方向に広げることによって、ユーザからの視認性を低下させないようにしたものである。
ステップ432において、決定されたレイアウトに従って、拡張メニューを投影する位置を決定する。このとき、決定部216は、ユーザによってタッチされているオブジェクトが投影される位置は動かないように、拡張メニューを示す複数のオブジェクトを配置する座標を決定する。
ステップS433において、決定された位置に拡張メニューが投影する。このとき、制御部217が、拡張メニューのオブジェクトが、タッチされているオブジェクトに重なっていた状態から、決定された位置まで移動するような軌跡を、アニメーションを用いて表現する投影画像103を生成し、投影部218に出力する。
以上が、ステップ307において実行される、拡張メニューを投影する処理である。このように、本実施形態では、ユーザがタッチしたオブジェクトに対応する操作メニューに、さらに下位階層の拡張メニューが存在する場合にも、投影光が照射される方向を考慮して拡張メニューの投影位置を決定する。これにより、ユーザの操作によって新たに投影されるオブジェクトについても、ユーザによる識別性を低下させないようにすることができる。
ここで、図6は、本実施形態によって投影されたUIに対するタッチ操作の一例を示す概要図である。この例において、オブジェクトを投影する投影光が照射する光源606は、ユーザの左側(90≦θ<270)の方向に存在するものとする。図6(a)は、ユーザが投影面上に差し出した手605とその先端に位置R604を、検出部212が検出し、初期レイアウトに従って3つのオブジェクト601〜603からなる操作メニューが投影された様子を示す。図6(b)は、ユーザがタッチ操作を行うために手605を動かしたことによって、操作メニューを構成するオブジェクトの投影を遮断した状態を示す。ユーザの手の影607に、複数のオブジェクトの一部が重なってしまうため、ユーザにとっては各メニュー項目の識別性が低下した状態にある。本実施形態では、検知部213が、ユーザの手605に、オブジェクトの一部が投影されていることを検知することに応じて、オブジェクトの投影位置を移動させる処理が実行される。図6(c)は、光源の存在する方向が、ユーザの左側であることに基づいて、オブジェクトが右上から左下の方向に並ぶように、オブジェクトの投影位置が移動された状態を示す。移動された投影位置では、ユーザの手の影、特にオブジェクトをタッチしようとする指の影が、同時に複数のオブジェクトに重なってオブジェクトの識別性を低下させることが少ないようにオブジェクトを配置している。次に、図6(d)は、ユーザがメニュー2という項目を示すオブジェクト602をタッチした状態を示す。制御部217によって、タッチされたオブジェクトの色が変えられている。位置608は、ユーザがタッチしているオブジェクトの基準となる位置であり、次に拡張メニューを投影させる場合には、ユーザがタッチしているオブジェクトが投影される位置を変更させないため、位置608が基準となって投影位置が決定される。図6(e)は、位置608を基準として、メニュー2に対応した拡張メニュー(サブメニュー1〜サブメニュー3)を示す3つのオブジェクト609〜611が投影された様子を示す。ここでも、光源606がユーザの左側に存在するため、オブジェクトが右上から左下の方向に並べられている。拡張メニューの投影位置では、ユーザの手の影、特にオブジェクトをタッチしようとする指の影が、同時に複数のオブジェクトに重なることが少ないようにオブジェクトを配置しているため、ユーザは各メニュー項目を容易に識別することができる。
図7は、本実施形態によって投影されたUIに対するタッチ操作の別な例を示す概要図である。この例において、オブジェクトを投影する投影光が照射する光源706は、ユーザの右側(0≦θ<90、270<θ<360)の方向に存在するものとする。図7(a)は、ユーザが投影面上に差し出した手705とその先端に位置R704を、検出部212が検出し、初期レイアウトに従って3つのオブジェクト701〜703からなる操作メニューが投影された様子を示す。図7(b)は、ユーザがタッチ操作を行うために手705を動かしたことによって、操作メニューを構成するオブジェクトの投影を遮断した状態を示す。ユーザの手の影707に、複数のオブジェクトの一部が重なってしまうため、ユーザにとっては各メニュー項目の識別性が低下した状態にある。本実施形態では、検知部213が、ユーザの手705に、オブジェクトの一部が投影されていることを検知することに応じて、オブジェクトの投影位置を移動させる処理が実行される。図7(c)は、光源の存在する方向が、ユーザの右側であることに基づいて、オブジェクトが左上から右下の方向に並ぶように、オブジェクトの投影位置が移動された状態を示す。移動された投影位置では、ユーザの手の影、特にオブジェクトをタッチしようとする指の影が、同時に複数のオブジェクトに重なることが少ないようにオブジェクトを配置しているため、ユーザは各メニュー項目を識別することができる。次に、図7(d)は、ユーザがメニュー1という項目を示すオブジェクト701をタッチした状態を示す。制御部217によって、タッチされたオブジェクトの色が変えられている。位置708は、ユーザがタッチしているオブジェクトの基準となる位置であり、次に拡張メニューを投影させる場合には、ユーザがタッチしているオブジェクトが投影される位置を変更させないため、位置708が基準となって投影位置が決定される。図7(e)は、位置708を基準として、メニュー1に対応した拡張メニュー(サブメニュー1〜サブメニュー3)を示す3つのオブジェクト709〜711が投影された様子を示す。ここでも、光源706がユーザの左側に存在するため、オブジェクトが左上から右下の方向に並べられている。拡張メニューの投影位置では、ユーザの手の影、特にオブジェクトをタッチしようとする指の影が、同時に複数のオブジェクトに重なることが少ないようにオブジェクトを配置しているため、ユーザは各メニュー項目を容易に識別することができる。
以上説明したように、本実施形態では、ユーザが、投影面をタッチするために用いる物体によって、オブジェクトの投影を遮断した場合にオブジェクトの投影位置を変更させる。その際、投影光を照射する光源の位置を考慮し、物体の影によって複数のオブジェクトの識別性が低下しない位置にオブジェクトの投影位置を変更させる。従って、ユーザが、投影された複数のオブジェクトから、タッチ操作によって少なくとも1つのオブジェクトを特定する操作を行う際の操作性を向上させることができる。
なお、本実施形態では、ステップS308において、オブジェクトが投影されている範囲内において、ユーザの指が投影面から離れた場合に、その位置に投影されているオブジェクトが示す拡張メニューが特定されたと認識した。このようにユーザがタッチを解除する位置に意味を持たせることで、ユーザが直感的に情報処理装置100に対して複数の意思を伝えることができる。例えば、拡張メニューを示すオブジェクトではなく、ステップS305でタッチしたオブジェクトが投影されている位置でタッチを解除した場合には、オブジェクトの特定をキャンセルしたものとする。タッチされたオブジェクト上で、タッチが解除された場合、処理はステップS304に戻り、上位階層の操作メニューを投影するものを再度投影するものとする。また、タッチした指を投影面から離さずに移動させた後、いずれのオブジェクトも投影されていいない位置でタッチを解除した場合には、UIを投影させる指示そのものをキャンセルしたものとして、処理を中断し、終了するようにすることができる。ただし、ユーザがオブジェクトを特定する際には、拡張メニューを示すオブジェクトであるか否かに関わらず、常にオブジェクトをタッチした後に指を離すタップ操作を用いるように設定することもできる。タップ操作によってオブジェクトを特定するようにすることで、ユーザは手を投影面から離すことができるので、投影画像103の内容の視認性を下げてしまう影響を最小限に抑えることができる。
(第2の実施形態)
上述した第1の実施形態では、ユーザが操作メニューをタッチするために、UIを構成するオブジェクトを投影する投影光を、操作用の物体(例えば、ユーザの手)で遮断した場合に、それを検知してオブジェクトが投影される位置を変更した。この際、第1の実施例では、投影光が照射される方向に基づいて、ユーザが、各オブジェクトが示す操作メニューの内容を、物体の影に阻害さることなく識別しやすい位置にオブジェクトを配置していた。第2の実施形態では、ユーザが手によって投影されたオブジェクトをタッチする操作を行う場合に、更にユーザが手を出した方向、及び右手あるいは左手のいずれを用いているかに基づいて、オブジェクトを投影させる方向及びレイアウトを決定する例を示す。
第2の実施形態における、ハードウェアの構成図は実施形態1と同様、図2(a)に示される。また、本実施形態における機能の構成図も、第1の実施形態同様に図2(b)で表される。ただし、第2の実施形態の検出部212は、投影面を撮影した画像からユーザの手及びその先端の位置Rを検出する際に、ユーザが手を出した方向、及び操作に用いられる手が右手か左手かを検出し、それらを示す情報をRAM201に保持して管理する。また、保持部215は、ユーザの手を検出する際にマッチングに使用されるテンプレートとして、右手を検出するためのテンプレートと左手を検出するためのテンプレートを区別して保持している。また、各オブジェクトに対応する拡張メニューを示すオブジェクトを配置するためのレイアウトも、右手用のものと左手用のものを保持する。
図8は、第2の実施形態によってUIを構成するオブジェクトを投影する処理の流れを示すフローチャートである。なお、以降において第1の実施形態のフローチャートに準じる処理ステップについては、同番号を付し、処理内容の詳細な説明を省略する。
第2の実施形態では、ステップS302において、投影するオブジェクトを取得すると、ステップS800に進む。
ステップS800においては、ユーザが手を出した方向に向けて、オブジェクトを投影する。ここで図9(a)は、本実施形態において実行されるオブジェクト投影処理の流れを示すフローチャートである。本実施形態では、ステップS400において、投影面を撮影した画像からユーザの手を検出した後、ステップS900において、検出部212が、検出された手は右手であるか左手であるかを特定する。検出部212は、マッチングされたテンプレートが、右手用のテンプレートか左手用のテンプレートであったかによって、操作に用いられている手が右手か左手かを特定する。ステップS901では、検出されたユーザの手とテンプレートのマッチングにより、ユーザの人差し指の先端の位置Rを特定するとともに、ユーザが手を差し出している方向を特定する。検出部212は、第1の実施形態と同様、位置Rの座標を取得するとともに、検出されたユーザの手について、指の先端が向く方向とは逆の、手首側の方向を、ユーザの手が差し出された方向として特定する。次に、ステップS902において、位置Rと手が出された方向に基づいて、オブジェクトの投影方向及び位置を決定する。本実施形態では、ユーザの手が差し出された方向に、ユーザが存在すると考え、オブジェクトを投影する際に、オブジェクトの下方向を、ユーザが存在する方向に合わせて投影する。従って、決定部216は、ステップS901で特定した方向に基づいて、オブジェクトの投影方向を決定するとともに、位置Rが初期レイアウトに従って配置される複数のオブジェクトの下端中央部に相当するように、オブジェクトを投影する位置を決定する。そして、ステップS903において、決定された方向及び位置に、オブジェクトを投影する。ここでは、制御部217が、決定された方向に及び位置にオブジェクトを配置した投影画像を生成し、投影部218に出力する。このようにオブジェクトの投影方向及び位置を決めることで、ユーザが任意の方向から投影面に対して操作を行う場合にも、オブジェクトに含まれる文字を読んだり、画像を正しい方向から見たりすることができる。なお、ここで投影されたオブジェクトの投影位置を移動させる場合、及びここで投影されたオブジェクトに対応する拡張メニューを投影する場合にも、ステップS902で決定された方向に向けてオブジェクトを投影する。
また、第2の実施形態では、ステップS304において、ユーザの手によってオブジェクトの投影が遮断されたと判定された場合には、ステップS801に進む。ここで図9(b)は、本実施形態において実行されるオブジェクト投影位置移動処理の流れを示すフローチャートである。本実施形態では、ステップS411において、投影光が照射される方向に基づいて、移動後のレイアウトを決定した後は、ステップS904に進む。ステップS904では、ステップS900において特定された、操作に用いられる手が右手か左手かに基づいて、決定されたレイアウトに従って移動されるオブジェクトの投影位置を決定する。本実施形態では、ユーザが右手で操作を行っている場合には、初期レイアウトに従って投影されている複数のオブジェクトを、左方向に動かすことによって、決定されたレイアウトに従った配置に移動させる。これは、ユーザが右手で操作を行う場合には、ユーザの手よりも右側に投影された内容はユーザにとって視認性が低下すると考えられる為、ユーザの手よりも左側にオブジェクトの投影するためである。例えば投影光が照射される方向を示す角度θが、90≦θ<270の範囲内であった場合、第1の実施形態と同様、図5(c)の対応関係に基づいて、移動後のレイアウトは右上から左下の方向にオブジェクトを並べることになる。その際、第2の実施形態では、縦に整列した複数のオブジェクトのうち一番上のオブジェクトの位置を動かさず、その他のオブジェクトを左側に移動させるように移動後の投影位置の座標を決定する。そして、ステップS413において、各オブジェクトを決定された投影位置まで移動するように投影する。本実施形態においても、制御部217が、移動の軌跡をアニメーションで表現する投影画像を生成して、投影部218に出力することによって、ユーザは各オブジェクトがどのように移動したのかを容易に把握することができる。
さらに、第2の実施形態では、ステップS307において、ユーザがタッチしたオブジェクトに対応する拡張メニューがあった場合には、ステップS802に進む。ここで図9(c)は、本実施形態において実行される拡張オブジェクト投影処理の流れを示すフローチャートである。本実施形態では、拡張メニュー用のオブジェクトを取得したら、ステップS905において、投影光が照射される方向と、操作に用いられる手が右手か左手かに基づいて、拡張メニューを投影するレイアウトを決定する。ここで、図10は、第2の実施形態における、投影光が照射される方向と、操作される手が右手の場合と左手の場合に、それぞれ拡張メニューを投影するレイアウトの対応関係を示している。図10においても、拡張メニューのレイアウトは、タッチされたオブジェクト(オブジェクト0)に対して、それぞれ拡張メニューを示す3つのオブジェクト(0−1、0−2、0−3)が投影される位置を表す。本実施形態においても、タッチされているオブジェクトの投影位置は動かさず、拡張メニューが投影される位置を決定する際の基準とする。そして、ユーザが右手で操作を行っている場合には、必ず手よりも左側に拡張メニューを投影させ、ユーザが左手で操作を行っている場合には、必ず手よりも右側に拡張メニューを投影させるように、レイアウトが設定されている。従って、ステップS422では、タッチされているオブジェクトの位置を基準に、決定されたレイアウトに従って拡張メニューを投影する位置を決定し、ステップS423において、決定された位置に拡張メニューを投影する。
図8のフローチャートにおけるその他の処理ステップは、第1の実施形態の図3のフローチャーと同様に実行される。
ここで、図11(a)は、第1の実施形態における図6(e)に対応するもので、第2の実施形態において光源606の位置がユーザの左側である例を示した図である。図11(a)では、ユーザが左手605で操作を行っていた場合に、位置608を基準として、メニュー2に対応した拡張メニュー(サブメニュー1〜サブメニュー3)を示す3つのオブジェクト609〜611が投影された様子を示す。図6(a)では、位置608を基準に、右上から左下に向かう方向に並べられていたオブジェクトが、左手で操作するユーザにとって見えやすいように、操作に用いている左手よりも右側方向に投影されている。また、図11(b)は、第1の実施形態において光源706の位置がユーザの右側であるときの例を示した図7(e)に対応する図である。この例では、ユーザが右手705で操作を行っているため、位置708を基準として右手705よりも左側に、メニュー2に対応した拡張メニューを示す3つのオブジェクト709〜711が投影されている。
以上説明したように、第2の実施形態では、ユーザが手を出した方向、及びユーザが操作に用いる手が右手であるか左手であるかに基づいて、オブジェクトを投影する方向及び位置を決定する。従って、ユーザが任意の位置から投影面に対してタッチ操作を行おうとする場合にも、ユーザが文字や画像を正しい方向から視認することができるため、複数のオブジェクトの中から少なくとも1つのオブジェクトを特定する操作を行う際の操作性を向上できる。また、例えば複数のユーザが異なる方向から投影面に対して操作を行おうとする場合にも、それぞれのユーザが手を出した方向に向けてオブジェクトを投影することによって、ユーザに適したユーザインタフェースを提供することができる。また、本実施形態では、ユーザの手がオブジェクトの投影を遮断した場合に、投影光が照射される方向と、ユーザが操作に用いる手が右手か左手かに基づいて、オブジェクトを投影する位置を移動させる。一般的に、右手で操作を行おうとする場合には、ユーザは右手の位置よりも左側から投影面を視認し、一方左手で操作を行おうとする場合には、ユーザは左手よりも右側から投影面を視認する場合が多い。従って、本実施形態のように、投影光が照射される方向と共にユーザが操作に用いる手が右手か左手かに基づいて、オブジェクトを投影する位置を決定することで、ユーザはより各オブジェクトを視認し易くなる。そして、ユーザが複数のオブジェクトのうち少なくとも1つのオブジェクトを特定する際の操作性が向上する。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。