以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。
[実施形態1]
図1(a)は、本実施形態における情報処理装置による情報処理システムの構成を示す概要図である。本実施形態では、ネットワーク上に3つの情報処理装置10〜12が接続されている。各情報処理装置には、ディスプレイ13〜15、及びカメラ16〜18が接続あるいは搭載されている。情報処理装置10〜12は、それぞれが単体に処理を行うものとする。なお、ここでは3つの情報処理装置が接続された環境を基に説明するが、本発明は複数の情報処理装置が接続される環境であれば、情報処理装置の数に関わらず実施可能である。
図1(b)は、本実施形態における情報処理装置10のハードウェア構成図である。なお、以下では情報処理装置10を例に説明するが、情報処理装置11及び情報処理装置12も同じハードウェア構成であるものとする。
ディスプレイ13は、例えば液晶ディスプレイ、CRTディスプレイ等で構成され、情報処理装置10から出力された画面情報の信号を表示し、情報処理装置10の表示部として機能する。
情報処理装置10は、CPU101、ROM102、RAM103、ディスプレイインターフェース104、入力インターフェース105、通信インターフェース106、HDD107、バス108から構成される。
CPU(Central Processing Unit)101は、ROM(Read Only Memory)102、HDD(Hard Disk Drive)106に格納された制御プログラムを実行し、各デバイスを制御する。ROM102は、各種の制御プログラムやデータを保持する。RAM(Random Access Memory)103は、CPU101のワーク領域、エラー処理時の情報の退避領域、制御プログラムのロード領域などを有する。ディスプレイインターフェース104は、ディスプレイデバイスドライバからの画面情報をディスプレイ13が表示処理可能な信号に変換し、出力する。入力インターフェース105は、カメラ16でユーザの動画像を撮影し、ユーザの視線の向き、ジェスチャの入力等を解析するためのインターフェースとして機能する。通信インターフェース106は、インターネットやホームネットワーク等のネットワークを介して接続された他の情報処理装置と通信し、情報を交換するためのインターフェースである。本実施形態では、情報処理装置10〜12が、無線通信によって接続されることを可能とする通信インターフェースとする。ただし、ネットワークは、情報処理装置が相互に情報を交換可能であれば無線、有線に関わらず利用できる。HDD107は、CPU101に実行される各種の制御プログラムや、情報処理装置10で再生される画像や文章、音声その他のファイル等を記憶している。バス108は、アドレスバス、データバス及びコントロールバスを含む。
尚、以下特に断らない限り、既に示された図を用いて説明されたものには同一の符号を付し、その説明を省略する。
図2(a)は情報処理装置10の機能構成の一例を示すブロック図である。
本実施形態の情報処理装置10は、記憶部20、取得部21、撮像部22、認識部23、設定部24、特定部25、表示制御部26、調整部27から構成される。
記憶部20は、例えば、HDD107の記憶領域を使用して、後述する認識フラグ、認識スコア、補正値等を記憶する。ここで、認識フラグとは、情報処理装置10がユーザのジェスチャによる操作を認識するかどうかを判定する為のフラグである。認識フラグは、初期値が「0」であり、情報処理装置がユーザのジェスチャを認識すると「1」となる。さらに、ジェスチャ操作が終了した場合、または、他の情報処理装置がジェスチャ操作の対象として選択された場合には「0」となる。情報処理装置10は、認識フラグが「1」である場合にのみ、ユーザのジェスチャ操作を認識し、そのジェスチャによって指示された処理を実行する。また、認識スコアとは、後述する設定部24によりユーザの顔画像を解析した結果、情報処理装置10が操作対象の候補と判断された場合、操作対象の候補としての優先度を示す指標である。認識スコアが高いほど、ユーザに操作対象として指定された可能性が高いことを示すため、優先順位が高くなる。本実施形態において、認識スコアの最大値は「100」、最小値は「0」である。本実施形態では、撮像部22が撮像したユーザの動画像を解析した結果、ユーザが情報処理装置10を凝視する動作が認識された場合に、ユーザがジェスチャ操作を行う対象として当該情報処理装置を選択していると判断する。その際、ユーザが正面からカメラ16を凝視している場合には、認識スコアを最大値「100」と設定し、カメラを見るユーザの視線方向の角度が大きくなるほどに認識スコアを低く設定する。補正値とは、情報処理装置毎に認識スコアを補正する際に用いる。例えば、ユーザを撮影するカメラの性能や位置の違い、計算処理能力の違いなどによって視線方向の認識精度が異なるような場合にも、認識スコアを一律に判断の基準として用いられるように補正を加える。補正値の初期値は「0」であり、後述する調整部27により、補正値は調整される。補正値が高い場合は、認識スコアは高く補正され、補正値が低い場合は、認識スコアは低く補正される。
取得部21は、CPU101、ROM102,RAM103、通信インターフェース106によって構成される。本実施形態の情報処理装置10では、取得部21は、認識フラグが「1」である場合に、ネットワークで接続されている他の情報処理装置のうち認識フラグが「1」である情報処理装置から、識別情報及び認識スコアを示す情報を取得し、RAM103に記憶する。また、取得部21は、他の情報処理装置11〜12から認識フラグが「1」であるかの問い合わせ信号を受けた場合には、情報処理装置10の識別情報及び後述する設定部24によって設定された認識スコアを示す情報を、ネットワークを通じて返す。
撮像部22は、カメラ16及び入力インターフェース105によって構成され、ユーザの顔画像を含む動画像を撮影し、撮影した動画像のフレームをRAM103に記憶する。
認識部23は、CPU101、ROM102,RAM103によって構成され、撮像部22によって撮影され、RAM103に記憶されたフレームの画像を解析する。そして、ユーザの顔を撮影している画像の解析した結果からユーザの視線の方向を判断し、ユーザがカメラ16を凝視しているかどうかを判定する。ここで凝視とは、一定時間同じものを見続ける動作のことをいう。本実施形態では、ユーザの顔の向きから視線方向を推定するため、ユーザを撮像した動画像を解析し、一定以上の数連続したフレームに渡って、ユーザの顔の向きが変わらない場合に、ユーザが視野内にある対象物を凝視していると判断する。ユーザの顔の画像を解析した結果、ユーザの顔が、カメラ16が視野に含まれる角度を向いた状態で一定以上の時間が経過したと判断される場合には、認識フラグを「1」にして、RAM103に保持するとともに記憶部20に記憶する。また、認識部23は、RAM103上に保持された認識フラグが「1」である場合には、更にユーザの動きを撮影した動画像を解析し、ユーザが情報処理装置10を操作するために行うジェスチャを認識する。
設定部24は、CPU101、ROM102,RAM103によって構成され、ユーザユーザがカメラ16を凝視していると判定された場合に、認識スコアを決定する。本実施形態では、ユーザの顔画像と予め用意された複数の顔テンプレートとのマッチング度を求めることで、ユーザの顔の向きを求め、求められた顔の向きから推定される視線方向に対して認識スコアを決定する。詳細には、まず情報処理装置10のカメラ16をユーザが真正面に見る場合の顔の角度を90度と定義する。認識スコアは、ユーザの顔以外の身体的部分が向く方向や、表示部であるディスプレイ13の視野方向には依存しない。本実施形態では、ユーザがディスプレイ13やカメラ16の前に立っているかいないかに関わらず、ユーザの顔の真正面方向にカメラ16が存在する場合に、「ユーザはカメラ16を見ている」という推定をする。そして、ユーザが真正面にカメラ16を見る状態からユーザ自身の右側(カメラ16から見て左側)を向く顔の角度を10度間隔で100度〜180度、ユーザ自身の左側(カメラ16から見て右側)を向く顔の角度を10度間隔で80度〜0度と定義する。情報処理装置10は、これら19パターン方向を向いた場合のユーザの顔を示す顔テンプレートを、予め記憶部20に保持している。そして、カメラが撮影した顔画像と顔テンプレートとのマッチング度を求め、最もマッチング度の高かったテンプレートを基に、顔の向きから推定される視線方向に対して認識スコアを算出する。例えば、マッチング度が高かったテンプレートが、ユーザの顔の向きが90度のテンプレートである場合、ユーザの視線方向も真正面にカメラ16を見る向きであると推定して、認識スコアを100とする。同様に、マッチング度の高かったテンプレートが80度あるは100度の場合には、ユーザの顔の向きは90度±10度であることから、推定される視線方向の認識スコアを100−10=90とする。
表示制御部26は、CPU101、ROM102、RAM103、ディスプレイインターフェース104によって構成され、ディスプレイ13に表示させる表示画像を生成して、ディスプレイ13に出力する。本実施形態では、主に取得部21が取得した他の情報処理装置の識別情報(装置名称)と認識スコア、及び設定部24が設定した情報処理装置10の認識スコアに基づいて、ユーザがジェスチャ操作の対象とする情報処理装置の候補名を優先順が判るように表示する。本実施形態では、認識スコアの高い順に表示させる。
特定部25は、RAM103で保持されている情報処理装置10の認識フラグが「1」である場合に認識部23がユーザのジェスチャ操作を認識した結果を取得する。そして、ユーザの認識されたジェスチャ操作による情報処理装置10への指示を特定し、ユーザが操作した結果を表示制御部26及び調整部27に伝える。本実施形態では主に、ディスプレイ13に表示されたリストが示す複数の情報処理装置の中から、ユーザが1つの情報処理装置を選択するために行うジェスチャ操作を判定し、ユーザが選択した1つの情報処理装置を特定する。
調整部27は、特定部25が特定した結果を用いて、情報処理装置10が選択された場合は記憶部20に記憶される情報処理装置10の補正値を大きくし、他の情報処理装置が選択された場合は、補正値を小さくする。
図3に、本実施形態における情報処理装置10による処理の流れを示すメイン処理のフローチャートを示す。このフローチャートに対応するプログラムは例えばHDD107に記憶されており、このプログラムの起動指示に応じてRAM103にロードされ、CPU101によって実行される。引き続き情報処理装置10を例として処理の流れを説明するが、情報処理装置11及び情報処理装置12においても、同様の処理が実行されているものとする。また、以下では、図1(a)の情報処理装置10がフォトフレームA、情報処理装置11がテレビ、情報処理装置12がフォトフレームBという識別情報をもった機器であるとして説明していく。
まず、キャリブレーション処理を行う(ステップS301)。キャリブレーション処理では、予め記憶部20に記憶されている認識スコアの補正値を読み出して、RAM103上に保持する。補正値は、情報処理装置毎のカメラの性能や位置の違い、計算処理能力の違いなどによって、ユーザの視線方向の認識精度がばらつく場合にも、認識スコアが一定の基準として用いられるように利用する。
続いて、撮像部22がユーザの動画像を撮影し、その撮影した動画像のフレーム毎を認識部23が解析し、ユーザによって情報処理装置10をジェスチャ操作の対象として指定するために行う第1の動作がなされたかを判定する。本実施形態では、第1の動作として、認識部23が、ユーザによってカメラ16が凝視されているかを判断する(ステップS302)。その際、認識部23は、撮像部22がユーザを撮影した動画像のフレームうち、ユーザの顔部分の画像を解析し、ユーザの顔の向きが、カメラ16が存在する方向に一致した状態で一定時間以上続く場合に、ユーザの凝視という第1の動作を認識する。ユーザによって凝視されていることを認識しなかった場合(ステップS302でNO)、ステップS302に戻って処理を繰り返す。ユーザによって凝視されていることを認識した場合(ステップS302でYES)、認識部23は認識フラグを「1」に更新してRAM103上に保持する(ステップS303)。
ここで、本実施形態では、図1(a)のように、3つの情報処理装置10〜12のうち、情報処理装置11の前にユーザ19が立ち、情報処理装置11(テレビ)に対象としてジェスチャ操作を行おうとしているとする。また、本実施形態では、ユーザが5秒以上対象物を見続けた場合に、凝視していると判断することとする。まず、ユーザは情報処理装置11に搭載されたカメラ17を5秒以上凝視する。しかし、3つの情報処理装置が並べて設置されているため、情報処理装置10及び情報処理装置12もユーザの視野範囲内に存在する。従って、情報処理装置10及び情報処理装置12の認識部23も、ユーザによって凝視されていることを認識し、それぞれが独立してメイン処理を継続する。
情報処理装置10においては、続いて、設定部24は、ユーザの顔部分の画像(顔画像)を基に視線方向を判断し、その結果から認識スコアを算出する。ステップS301のキャリブレーションによって補正値が設定されていた場合には、補正値を用いて認識スコアを補正し、RAM103上に保持する(ステップS304)。本実施形態では、上述したように、情報処理装置10のカメラ16を真正面から見るユーザの顔の角度を顔の角度を90度と定義して、視線方向に対して設定する認識スコアの基準としている。そして、19パターンの方向を向いた場合のユーザの顔を示す顔テンプレートと、カメラが撮影した顔画像とのマッチング度を求め、最もマッチング度の高かったテンプレートを基に認識スコアを算出する。
本実施形態で説明する例では、ユーザ19は、情報処理装置11を真正面に見ている。そして、情報処理装置10の設定部24が、カメラ16が撮影したユーザの顔画像と、顔テンプレートとのマッチングを行った結果、ユーザの顔の向きが110度のテンプレートが最もマッチング度が高かったとする。この場合、情報処理装置10におけるユーザの視線方向に対する評価値である認識スコアは100−20=80となる。同様に、情報処理装置12でのマッチングの結果、ユーザの顔の向きは60度のテンプレートとのマッチング度が最も高かったとすると、情報処理装置12におけるユーザの視線方向に対する評価値である認識スコアは100−30=70となる。
情報処理装置10におけるメイン処理は、ステップS305の情報取得処理に進む。ここで、図4のフローチャートを参照して本実施形態の情報取得処理(ステップS305)を説明する。情報取得処理(ステップS305)が開始すると、まず取得部21が、ネットワークで接続された複数の情報処理装置の中で、保持している認識フラグが「1」の装置があるかを問い合わせるための信号を、ネットワーク上の他の情報処理装置に送信する。ここで送信する問い合わせ信号には、情報処理装置10の識別情報及び認識スコアが含まれる。なお、ここでの識別情報は、装置の名称に限らず、ネットワーク上でのアドレス情報を利用してもよい。問い合わせ信号を送信した取得部21は、一定時間の間、ネットワークに接続された他の情報処理装置から信号を受け付ける状態になる。続いて、取得部21が問い合わせに対する応答を受信したかを判定する(ステップS402)。本実施形態では、取得部21が、ネットワークで接続された他の情報処理装置から送信された問い合わせ信号を受信したかによって判定を行う。なお、認識フラグが「0」であった場合には、情報取得処理(ステップS305)は実行されないので、問い合わせ信号が送信されることはすなわち認識フラグが「1」であることを示めしている。認識フラグが「1」である情報処理装置があった場合には(ステップS402でYES)、問い合わせ信号に含まれる識別情報に基づいて、認識フラグが「1」である情報処理装置の識別情報と認識スコアを対応させたリストを生成する(ステップS403)。図2(b)は、実施形態1の情報処理装置10で生成されるリストの一例であり、情報処理装置10が、情報処理装置11(テレビ)及び情報処理装置12(フォトフレームB)から取得した情報が格納されている。取得部21が生成したリストをRAM103に保持して、情報取得処理(ステップS305)は終了し、メイン処理にリターンする。一方、認識フラグが「1」である情報処理装置がなかった場合には(ステップS402でNoの場合)、空のリストを生成してRAM103に保持し(ステップS404)、メイン処理にリターンする。
ステップS305からメイン処理に戻ると、表示制御部26が、RAM103上に保持されているリストが空かどうかを判断する(ステップS306)。リストが空であれば(ステップS306でYesの場合)、ステップS312に進み、ユーザによるジェスチャ操作を認識可能となる(ステップS311)。リストが空ではない場合には(ステップS306でNoの場合)、表示制御部26は、リストと情報処理装置10の情報を基に、認識スコアが大きい順に、認識フラグが「1」である全ての情報処理装置の識別情報を上位の候補として表示する画像を生成する。そして、ディスプレイ13に操作対象選択用画像を表示させる(ステップS307)。なお、本実施形態では、認識フラグが「1」である全ての情報処理装置の識別情報を表示するが、認識スコアが上位である一部の情報処理装置、例えば3つずつ、5つずつを一覧にして表示することもできる。図6は、本実施形態における3つの情報装置それぞれに、操作対象選択画像が表示された様子を示している。図6では、情報処理装置11がテレビ66、情報処理装置10がフォトフレームA67、情報処理装置12がフォトフレームB68であり、全ての情報処理装置で同一の画像を表示している。また、カメラ69〜71はそれぞれに搭載されたカメラであり、ユーザはこれらを凝視する第1の動作によって、ジェスチャ操作の対象として指定しようとする意思を示す。状態表示領域61では、ユーザのジェスチャを認識可能な複数の機器が認識されている状態であることを示している。また、アイコン表示領域62〜64は、それぞれテレビ、フォトフレームA、フォトフレームBのアイコンが表示される領域を表している。太枠65は、操作対象として選択する候補を示すフォーカスを表すためものであり、図6では、最も認識スコアが高いテレビ66のアイコン表示領域62にフォーカスが当たった状態である。なお、本実施形態の操作対象選択用の画像では、識別情報として情報処理装置の名称を表示したがこれに限らない。例えば、名称ではなく、筐体の画像をそれぞれ識別情報に関連付けた上で表示してもよい。
続いて、メイン処理では、操作対象選択処理が開始される(ステップS308)。ここで、図5のフローチャートを参照して、ユーザがジェスチャ操作によって操作対象を選択する処理を説明する。まず、操作対象選択処理が開始されると、ユーザのジェスチャによる選択操作を認識部23が認識したかを判定する(ステップS501)。詳細には、撮像部22が撮影しているユーザの動画像を認識部23が解析し、ユーザがジェスチャ操作によって、操作対象選択用画像において表示された操作対象の候補の中から、1つの情報処理装置を選択するために行う第2の動作を認識したか判定する。第2の動作は、ディスプレイに表示されている画像が示す中から、操作対象を選択及び特定するための動作として、全ての情報処理装置に共通して登録されているジェスチャのパターンである。第1の動作を認識した情報処理装置のうち、認識スコアが上位である一部をだけ表示している場合には、第2の動作によって、表示されていない候補を順次表示させることができる。第2の動作としては、例えば、右腕を上下に動かすジェスチャによってフォーカスするアイコン表示領域62〜64を変更したり、一定時間以上腕の動きを静止することでフォーカスした対象の選択を決定したり、といったジェスチャを登録しておくことができる。また、表示されるアイコンに番号付し、ユーザが指で示す番号に対応する装置を操作対象として決定するというジェスチャを登録することもできる。これらは一例であり、他のジェスチャであっても構わない。ユーザの動画像の解析により、操作対象を選択するための動作を認識した場合は(ステップS501でYesの場合)、認識部23は、認識されたジェスチャを特定部25に伝える。そして特定部25は、ユーザのジェスチャによる操作の内容を特定し、表示制御部26にディスプレイ13の表示内容の変更を指示する。そして、最終的に操作対象として選択される情報処理装置が特定されたかを判定する(ステップS502)。最終的な操作対象が特定されず、候補を選択する操作が継続されている場合は(ステップS502でNoの場合)、特定するための動作を認識するまで待機する。操作対象が特定された場合(ステップS502でYesの場合)、特定部25は、選択された操作対象の識別情報をRAM103上に保持し、メイン処理に返し、操作対象選択処理を終了する(ステップS503)。本実施形態で説明している例では、ユーザは情報処理装置11(テレビ66)を操作対象として選択しようとしている。従って、図6の操作対象選択用画像に対しては、フォーカスするアイコンを変更する必要はなく、フォーカスしたアイコンに対応する情報処理装置を操作対象として選択する動作を行えばよい。
一方、認識部23によるユーザの動画像の解析の結果、操作対象を選択するための第2の動作を認識しなかった場合(ステップS501でNoの場合)は、操作対象の選択をキャンセルするためのジェスチャ操作を認識したかを判定する(ステップS504)。例えば、ユーザの意思に途中で変更が生じたり、メイン処理のステップS302におけるユーザの凝視の認識に誤りがあったりした場合、ユーザが操作対象としたい情報処理装置が、操作対象の候補に含まれていない可能性がある。そのような場合に、操作対象の選択の中止を指示するためのジェスチャも、予め全ての情報処理装置に登録されているものとする。例として、タイムアウトや両腕を交差するようなジェスチャが、操作対象の選択の中止を指示するための操作として予め登録されているものとする。認識部23が、キャンセル操作を認識しない場合(ステップS504でNoの場合)には、ステップS501に戻り、ユーザが操作対象を選択するためのジェスチャ操作を認識するまで待機する。一方、認識部23が、キャンセル操作を認識した場合(ステップS504でYesの場合)には、メイン処理のステップS302に戻り、ユーザによる第1の動作を認識するまで待機する。
操作対象選択処理(ステップS308)からメイン処理に戻ると、特定部25が、RAM103上に保持している識別情報を基に、選択された操作対象が情報処理装置10自身であったかを判定する(ステップS309)。選択された情報処理装置が他の情報処理装置の場合(ステップS309でNoの場合)、認識部23は、認識フラグを「0」にする(ステップS312)。認識フラグが「0」の間は、認識部23は、ユーザのジェスチャ操作を認識しないため、ユーザが他の情報処理装置を操作するために行ったジェスチャによって誤動作することはない。続いて、調整部27は、最終的に選択された情報処理装置よりも、認識スコアが高かった場合、補正値を認識スコアの5%小さくする(ステップS313)。ただし、選択された情報処理装置よりも認識スコアが低かった場合は、調整は行わない。本実施形態で説明している例では、ユーザは最も認識スコアが高い情報処理装置11を選択したため、情報処理装置10では、補正値を調整する処理は行われない。例えば、情報処理装置10自身の認識スコア「80」が、情報処理装置11よりも高かった場合には、調整部27は補正値(初期値「0」)を5小さくして、「−5」に更新する。次回以降、ユーザの同じ顔の向きが同じであった場合に設定される認識スコアは「75」となる。
一方、選択されたのが情報処理装置10自身である場合(ステップS309でYesの場合)、調整部27は、記憶部20に記憶されている情報処理装置10の認識スコアを求めるための補正値を、大きくする。ただし、自身の認識スコアが最も高かった場合、調整は行わず、そうでない場合は、補正値を認識スコアの5%上げる(ステップS310)。例えば、図6の操作対象選択用画像に対する操作対象選択処理で、情報処理装置10(フォトフレームA67)が選択されていたとすると、元々の認識スコアは「80」であったので、調整部27は補正値(初期値「0」)を4に更新する。従って、次回、ユーザが同じ顔の向きで情報処理装置10を凝視した際の認識スコアは「84」となる。次回以降、ユーザの顔の向きが同じであった場合に設定される認識スコアは84となる。そして、ユーザによるジェスチャ操作を認識可能な状態(認識フラグが「1」)を維持して、本実施形態によるメイン処理を終了する。なお、本実施形態では、調整部27による補正値の調整量は、認識スコアの5%としたが、これは一例でありこれに限らない。本実施形態によって、ユーザのジェスチャによる操作対象として特定された情報処理装置では、以降認識部23が認識したジェスチャに対応する処理が実行される。
以上のように、実施形態1は、複数の情報処理装置がそれぞれユーザによって凝視されたことを並行して略同時に認識し、ユーザによるジェスチャで操作される対象の候補となった場合にも、候補を表示部に表示して操作対象をユーザに選択させる。選択されなかった情報処理装置では、操作対象選択後はユーザのジェスチャを認識しないため、ユーザは確実に操作したい情報処理装置に対してジェスチャ操作ができると共に、他の情報処理装置が誤ってジェスチャを認識して誤動作することがない。また、ユーザによって凝視されたことを認識した際に、ユーザの視線方向を評価した認識スコアを設定し、認識スコアの高い順に、操作対象候補の情報処理装置を上位の候補として表示するので、ユーザが操作対象を少ない操作数で選択できる可能性が高い。認識スコアが最も高い候補が選択されなかった場合には、次回以降の処理における認識スコアを補正する補正値を設定するので、認識精度の誤差を修正し誤った認識が繰り返されることを防ぐことができる。
<変形例1>
ここで、本発明の変形例1について図面を参照して詳細に説明する。なお、実施形態1に準ずる箇所については、説明を省略する。
実施形態1では、図6の操作対象選択用画像のように表示された候補から特定の情報処理装置を選択させるために、ユーザによるジェスチャ操作を認識する。この際、例えば、ユーザによる第1の動作(凝視)を認識した後で、ユーザとカメラとの間に障害物が発生すると、操作対象の候補として表示されているにも関わらず、ユーザの第2の動作(ジェスチャ操作)が認識されないない情報処理装置が発生してしまう。そこで変形例1では、ユーザによる凝視を認識し操作対象選択用画像を出力したにも関わらず、続くジェスチャ操作を認識しなかった場合には、取得部21が、認識フラグが「1」である他の装置から、ユーザによる操作の結果を取得するものである。
変形例1では、記憶部20はジェスチャ操作フラグを保持する。ジェスチャ操作フラグとは、ユーザによるジェスチャ操作を認識したかを表すフラグである。ジェスチャ操作フラグは、初期値が「0」であり、ユーザによるジェスチャ操作を認識すると「1」となる。
図7は、変形例1におけるメインの処理の流れを示すフローチャートである。実施形態11との違いは、ステップS308Aの操作対象選択処理である。ステップS301〜ステップS307、及びステップS309以降の処理は、実施形態1と同様であるので、説明を省略する。
図8は、操作対象選択処理(ステップS308A)の詳細を示すフローチャートである。取得部21は、ネットワークを介して接続されている情報処理装置のうち認識フラグが「1」である情報処理装置のジェスチャ操作フラグを取得し、RAM103に保持する。続いて、記憶部20に保持されているジェスチャ操作フラグを「0」に初期化する(ステップS801)。
続いて、認識部23は、実施形態1と同様、ユーザが操作対象とする装置を選択するために行うジェスチャ操作を認識したかどうかを判定する(ステップS802)。選択操作が認識されなかった場合(ステップS802でNoの場合)、実施形態1と同様、操作対象の選択をキャンセルするためのジェスチャ操作を認識したかを判定する(ステップS803)。例えば、タイムアウトや両腕を交差するようなジェスチャが、操作対象の選択の中止を指示するための操作として予め登録されているものとする。認識部23が、そのようなキャンセル操作を認識した場合(ステップS803でYesの場合)には、メイン処理のステップS302に戻り、ユーザによる第1の動作を認識するまで待機する。一方、認識部23が、キャンセル操作を認識しない場合(ステップS803でNoの場合)には、ステップS804に進む。そして、ネットワークで接続された情報処理装置の中に、認識フラグが「1」であってかつジェスチャ操作フラグが「1」である装置が存在するかどうかを問い合わせる信号を送信する(ステップS804)。ここで送信される信号には、送信元となる情報処理装置の識別情報が含まれる。次に、問い合わせに対して応答があったかを判定する(ステップS805)。応答があった場合(ステップS805でYesの場合)には、応答を返した情報処理装置の認識部23が認識したからジェスチャ操作を取得し(ステップS806)、ステップS810に進む。
一方、ステップS802で選択操作を認識した場合(ステップS802でYesの場合)、ジェスチャ操作フラグを「1」にする(ステップS807)。そして、ネットワークで接続された他の情報処理装置からの問い合わせ信号(ステップS804で送信される信号)を、取得部21が取得したかを判定する(ステップS808)。問い合わせ信号があれば(ステップS808でYesの場合)、問い合わせ信号を送信した情報処理装置を、ジェスチャ操作を認識した結果を送信する送信先に設定する(ステップS809)。以降、認識部23がジェスチャ操作を認識する度にネットワークを介して操作情報を送信する。問い合わせ信号を取得しない場合(ステップS808でNoの場合)には、送信先を設定しない。そして、実施形態1と同様、認識部23がユーザのジェスチャ操作を認識した結果、あるいは取得部21から取得した操作情報を基に、最終的に操作対象として選択される情報処理装置が特定されたかを判定する(ステップS810)。最終的な操作対象が特定されず、候補を選択する操作が継続されている場合は(ステップS810でNoの場合)、特定するための動作を認識するまで待機する。操作対象が特定された場合(ステップS810でYesの場合)、特定部25は、選択された操作対象の識別情報をRAM103上に保持し、メイン処理に返し、操作対象選択処理を終了する(ステップS811)。
変形例1によれば、操作対象選択用画像を提示した後、ユーザに操作対象の装置を特定させる際に、ジェスチャの認識が困難になった場合あっても、操作対象の候補である全ての情報処理装置に対して操作を行うことが可能となる。なお、実施形態1及びその変形例1で説明した図1(a)の情報処理システムでは、システムを構成する全ての情報処理装置にカメラが搭載され、それぞれが自装置のカメラによって撮影された動画像を基にして、ユーザの動作を認識していた。しかし、変形例1のように、他の情報処理装置に対して、認識部23が認識した第1及び第2操作の内容を送信することで、カメラを有さない情報処理装置においても、ジェスチャ操作を行うことも可能になる。その場合は、カメラを有する情報処理装置が、ネットワークに接続されたジェスチャ操作可能な全ての情報処理装置に位置関係を把握し、ユーザの顔の向きから、操作対象の候補とその認識スコアを設定する。
[実施形態2]
次に、本発明の実施形態2について図面を参照して詳細に説明する。なお、実施形態1に準ずる箇所については、説明を省略する。
実施形態1では、ユーザをジェスチャ認識の対象と判定する際に視線の方向を用いた。本実施形態は、視線の方向に代わって、ユーザが指差した方向を用いてジェスチャ認識の対象を判定するものである。なお、実施形態2においても、図1(a)の情報処理システムにおける情報処理装置10を主として説明するが、情報処理装置11〜12にいても同様に処理が実行されるものとする。
実施形態2における、ハードウェアの構成図は実施形態1と同様、図1(b)に示される。また、本実施形態における機能の構成図も、第1の実施形態同様に図2(a)で表される。ただし、実施形態1との違いは、認識部23と設定部24の機能、及び記憶部20に記憶されたテンプレートの内容である。本実施形態の認識部23は、ユーザによる第1の動作として、実施形態1ではユーザによる凝視を認識するのに替わり、ユーザによる指差し方向を認識する。従って、撮像部22により撮影されたユーザの動画像から、ユーザが指差した方向を解析し情報処理装置が操作対象として選択されているかどうかを判定する。ユーザの指差した方向を解析するには、ユーザが指差した画像と予め記憶部20に用意された複数のテンプレート画像とのマッチング度を求めることで、ユーザが指差した方向を特定する。そして、設定部24は、認識された指差し方向に対して認識スコアを特定する。実施形態1では、ユーザがカメラ16を凝視する動作を第1の動作としていたが、実施形態2では、ディスプレイ13の中心部を指差す動作を第1の動作として登録するものとする。ここでテンプレートは、ユーザがディスプレイ13の中心部分を正面から指差した状態を、カメラ16の位置から撮影した場合を示す画像情報を基準として、角度90度の状態として定義している。そして、左右90度ずつ0〜180度の範囲を10度間隔の角度から指を差す19パターンの状態の画像情報を基に用意されている。なお、このような19パターンのテンプレートは一例であり、本発明の実施形態はこれに限られない。例えば、ユーザが右手を使った場合と左手を使った場合を想定し、さらに複数のパターンを用意してもいい。
図9は、本実施形態におけるメイン処理のフローチャートである。実施形態1との違いは、ステップS302B及びステップS304Bである。なお、その他のステップの各処理は、実施形態1と同様に実行されるため、説明を省略する。
ステップS302Bでは、実施形態1と同様、撮像部22がユーザの動画像を撮影し、その撮影した動画像のフレーム毎を認識部23が解析し、ユーザによって情報処理装置10をジェスチャ操作の対象とするために行う第1の動作がなされたかを判定する。ここで、本実施形態では、第1の動作として、認識部23が、ユーザによってカメラ16が指差されていることを認識する(ステップS302B)。その際、認識部23は、撮像部22がユーザを撮影した動画像のフレームうち、ユーザの上半身部分の画像を解析し、ユーザの腕及び指の向きが、カメラ16が存在する方向に一致した状態で一定時間以上続く場合に、ユーザの指差しという第1の動作を認識する。ユーザによって指を差されていることを認識しなかった場合(ステップS302BでNOの場合)、ステップS302Bに戻って処理を繰り返す。ユーザによって指を差されていることを認識した場合(ステップS302BでYESの場合)、認識部23は認識フラグを「1」に更新してRAM103上に保持する(ステップS303)。
そして、設定部24は、ユーザの画像を基に指差し方向を判断し、その結果から認識スコアを算出する。これにより、ユーザがジェスチャによって複数の情報処理装置が並べられているような環境においても、ユーザの意思を推定して、複数の候補に対し最も操作対象である可能性が高い順を設定することになる。ステップS301のキャリブレーションによって補正値が設定されていた場合には、補正値を用いて認識スコアを補正し、RAM103上に保持する(ステップS304B)。本実施形態では、上述したように、情報処理装置10のカメラ16を真正面から指差す角度を90度と定義して、指差し方向に対して設定する認識スコアの基準としている。そして、19パターンの方向を指差した場合のユーザの様子を示すテンプレートと、カメラが撮影した画像とのマッチング度を求め、最もマッチング度の高かったテンプレートを基に認識スコアを算出する。
そして、以降の処理ステップによって、実施形態1と同様、優先順として認識スコアが高い順に一覧にされたジェスチャ操作を認識可能な操作対象の候補の中から、第2の動作となるジェスチャ操作によって、ユーザに所望とする情報処理装置を特定させる。
以上説明したように、本実施形態によれば、複数の情報処理装置がそれぞれユーザによって指差されたことを同時に認識し、ユーザによるジェスチャで操作される対象の候補となった場合にも、候補を表示して操作対象をユーザに選択させる。選択されなかった情報処理装置では、操作対象選択後はユーザのジェスチャを認識しないため、ユーザは確実に操作したい情報処理装置に対してジェスチャ操作を行うことができると共に、他の情報処理装置が誤ってジェスチャを認識して誤動作することがない。また、ユーザによって指を差されたことを認識した際に、ユーザの指差し方向を評価した認識スコアを設定し、認識スコアの高い順に、操作対象候補の情報処理装置を上位の候補として表示する。これにより、ユーザは、意図した操作対象を少ない操作数で選択できる可能性が高い。認識スコアが最も高い候補が選択されなかった場合には、次回以降の処理における認識スコアを補正する補正値を設定するので、認識精度の誤差を修正し誤った認識が繰り返されることを防ぐことができる。
また、本実施形態における第1の動作は、ユーザが情報処理装置のディスプレイを指差す動作とした。指を差すという動作は、ユーザにとっては特定の物を示すために用いる最も直感的で簡単な動作の1つである。ユーザが操作したい情報処理装置は、ユーザがディスプレイに表示される映像を見たいと所望している情報処理装置である可能性が高いため、本実施形態によれば、見たいディスプレイを指差すというより直感的な動作で、操作対象を選択することが可能になる。ユーザは、ディスプレイから視線を外してカメラを凝視する必要はなくなり、デザイン上カメラの位置がわかりにくい情報処理装置に対しても、選択操作がしやすくなる。また、左右だけでなく上下方向にも複数の角度からユーザが情報処理装置を指差している状態をテンプレートとして保持していれば、例えばテレビの上にフォトフレームが設置されているなど、上下に設置された複数の情報処理装置に対しても、本発明が適応できる。
なお、実施形態2においても、実施形態1と同様に、ユーザによる指差しを認識し、操作対象選択用画像を表示した後、取得部21が、認識フラグが「1」である他の装置から、ユーザによる操作の結果を取得する変形例を用いることができる。このような変形例によれば、操作対象選択用画像を提示した後で、ユーザに操作対象の装置を特定させる際に、ジェスチャの認識が困難になった場合あっても、操作対象の候補である全ての情報処理装置に対して操作を行うことが可能となる。
[実施形態3]
次に、本発明の実施形態3について図面を参照して詳細に説明する。なお、実施形態2と同様、実施形態1に準ずる箇所については、説明を省略する。
実施形態1及び実施形態2では、操作対象選の候補を表示する際には認識スコアに基づいた順で情報処理装置名を表示したが、本実施形態では認識スコアに代わって、ユーザと情報処理装置との距離に基づいて情報処理装置名を並び変えるものである。なお、実施形態3においても、図1(a)の情報処理システムにおける情報処理装置10を主として説明するが、情報処理装置11〜12にいても同様に処理が実行されるものとする。
実施形態3についても、ハードウェア構成図は実施形態1と同様に図1(b)に示される。図10(a)は、本実施形態における情報処理装置10の機能の構成図である。実施形態1との違いは、認識部23、調整部27が無く、測定部28が追加されていることである。測定部28は、情報処理装置からユーザまでの距離を赤外線センサで測定する。なお、距離の測定するためセンサとしては、例えば、超音波センサ、深度センサ、光センサを用いてもよい。また、実施形態3の情報処理装置は、記憶部20に、ユーザが情報処理装置を視聴するのに最適な距離を、所定の視聴距離情報として保持している。
図11は、本実施形態におけるメイン処理を示すフローチャートである。まず、取得部21はネットワークで接続している全ての情報処理装置から、それぞれの識別情報とともに最適な視聴距離を取得する(ステップS301C)。続いて、撮像部22はユーザの動画像を撮影し、認識部23は、撮影した動画像のフレームを解析して、ユーザによる第1の動作を認識したかを判定する(ステップS302)。実施形態3では、第1の動作は実施形態1と同様に、ユーザによる第1の動作は、情報処理装置10のカメラ16を凝視する動作とする。ユーザによる第1の動作を認識しなかった場合(ステップS302でNoの場合)、ステップS302に戻って認識するまで待機する。ユーザによる第1の動作を認識した場合(ステップS302でYesの場合)、認識部23は認識フラグを「1」にする(ステップS303)。続いて、測定部28がユーザと情報処理装置10との距離を測定(ステップS304C)する。次に、取得部21は情報取得処理を行い(ステップS305C)、ネットワークで接続されている情報処理装置のうち、ジェスチャ認識の対象となった情報処理装置リストを生成しRAM103に保持する。本実施形態における情報取得処理(ステップS305C)は、実施形態1における情報取得処理(ステップS305)に準じるが、認識スコアに代わって、ユーザと情報処理装置との距離情報を用いる点が異なる。すなわち、ここでリスト化される情報は、情報処理装置の識別情報(名称)とステップS304Cで測定したユーザとの距離である。なお、識別情報はネットワークにおけるアドレス情報を利用してもよい。取得部21は、情報取得処理(ステップS305C)からメイン処理に戻ると、表示制御部26が、RAM103上に保持されているリストが空かどうかを判断する(ステップS306)。情報処理装置リストが空の場合(ステップS306でNoの場合)、他の情報処理装置がジェスチャ認識の対象として認識されていない為、表示制御部26によりジェスチャ操作が可能な状態にする(ステップS311)。リストが空ではない場合(ステップS306でYesの場合)、表示制御部26は、ステップS305Cで取得したユーザとの距離と、ステップS301Cにより取得した所定の視聴距離との差分が小さい順番に情報処理装置名を一覧にした画面を生成する。生成した操作対象選択用の画像を、ディスプレイ13に表示させる(ステップS307C)。
図10(b)は本実施形態において、ユーザによる凝視を認識し、操作対象の候補となった情報処理装置10(フォトフレームA)、情報処理装置11(テレビ)、情報処理装置12(フォトフレームB)の最適な視聴距離及びユーザとの距離の一例である。テレビの最適な視聴距離は2mと設定されており、フォトフレームの最適な視聴距離は0.5mと設定されている。また、ユーザとテレビの距離は2m、ユーザとフォトフレームAの距離も2m、ユーザとであったとする。この場合、ユーザとの距離と視聴距離との差分は、テレビは0m、フォトフレームは1.5mである為、操作対象の候補を表示する画像では、テレビ、フォトフレームの順番に表示される。同順となるフォトフレームAとフォトフレームBは、識別情報に基づき名称順やアドレス順に表示してもよいし、並列関係を示すように横並び等でアイコンを表示してもよい。
続いて、実施形態1と同様の操作対象選択処理が実行され(ステップS308)、ユーザが選択した情報処理装置の識別情報を取得する。続いて、特定部25は、RAM103上に保持している選択された情報処理装置の識別情報を基に、選択された操作対象が情報処理装置10自身であったかを判定する(ステップS309)。ユーザが選択した情報処理装置が自身の場合(ステップS309でYesの場合)、ジェスチャ操作が可能な状態を維持する(ステップS310)。選択された情報処理装置が他の情報処理装置の場合(ステップS309でNoの場合)、認識部23は、認識フラグを「0」にする(ステップS312)。
本実施形態では、認識部23によりユーザの視線の方向を用いてユーザをジェスチャ認識の対象であるかどうかを判定したが、これに限らない。実施形態2のように、認識部23により、ユーザによって指差されたことを第1の動作として認識してもよい。
以上、説明したように、本実施形態では、ユーザと情報処理装置との距離が、情報処理装置の最適な視聴距離に近い順番に候補を表示する。ユーザが操作したい情報処理装置は、ユーザがディスプレイに表示される映像を見たいと所望している可能性が高いため、ユーザがいる位置から最適な視聴距離で見ることができる情報処理装置は、操作対象として選択される可能性が高いと推定できる。従って、本実施形態のように、情報処理装置それぞれの最適な視聴距離と、実際のユーザとの距離との差分が小さい順に、上位の候補とすることで、ユーザは、少ない操作数で、所望とする操作対象を選択し易くなる。
なお、実施形態3においても、実施形態1と同様に、ユーザによる指差しを認識し、操作対象選択用画像を出力した後、取得部21が、認識フラグが「1」である他の装置から、ユーザによる操作の結果を取得する変形例を用いることができる。このような変形例によれば、操作対象選択用画像を提示した後で、ユーザに操作対象の装置を特定させる際に、ジェスチャの認識が困難になった場合あっても、操作対象の候補である全ての情報処理装置に対して操作を行うことが可能となる。
[実施形態4]
次に、実施形態4を説明する。なお、これまで説明した実施形態と同様、実施形態1に準ずる箇所については、説明を省略する。
実施形態1で説明した情報処理装置では、ユーザによる凝視を認識した場合には、ネットワーク上の装置が互いに問い合わせ信号を送信し、その信号を受信したことによって、他の操作対象候補の情報処理装置の存在を判断していた(ステップS305)。実施形態4では、ネットワーク上にサーバ装置を配置する。サーバ装置は、ネットワークに接続された全情報処理装置の数を把握し、全ての情報処理装置の状態情報を管理する。図12(a)は、実施形態1における図1(a)に対応するもので、ネットワーク上にサーバ装置1200が含まれる情報処理システムの一例を示す概要図である。各情報処理装置のハードウェア構成、及び機能構成は実施形態1に準ずるため、説明を省略する。実施形態1と同様図3のフローチャートに示されたメイン処理に従い、ステップS301〜ステップS304までの処理を実行した後、実施形態4では、図12(b)のフローチャートに示される情報取得処理(ステップS305D)に進む。ユーザによる凝視を認識した各情報処理装置は、ステップS305Dの情報取得処理では、まず、サーバ装置に対して、認識フラグが「1」となったことを示すため、識別情報と認識スコア含む信号を送信する(ステップS1201)。そして、サーバ装置からの応答があったかを確認する(ステップS1202)。応答がないときには(ステップS1202でNoの場合)、応答を受信するまで待機する。サーバ装置は、認識フラグが「1」である情報処理装置からの信号を最初に受信してから一定時間、受付状態となり、その時間内に同様の信号を送信してきた全ての装置が、ユーザの操作対象の候補であると判断する。この際には、信号が受信されなかった情報処理装置と通信し、認識フラグが「0」であることを確認してもよい。そして、サーバ装置が、候補となっている情報処理装置の識別情報と認識スコアを集計して、優先順として認識スコアが高い順のリストを生成し、候補である情報処理装置に配信する。操作候補である判断された情報処理装置は、サーバ装置の配信情報を応答として受け付け(ステップS1202でYesの場合)、リストを取得する(ステップS1203)し、メイン処理にリターンする。以降の処理は、実施形態1に準じるため、説明を省略する。
このように、全ての情報処理装置を統括するサーバ装置を設ける場合は、各装置が独立して同じ処理を行うのに比較して、全体の負荷を抑えて複数の対象を管理することが容易になるという利点がある。なお、変形例として、ネットワークにサーバ専用の装置を設けるのではなく、ネットワークに接続された複数の情報処理装置の1つが代表となり、サーバ装置の役割を果たしてもよい。すなわち、1つの情報処理装置が代表となり、応答を返した他の候補の情報処理装置の識別情報と認識スコアを示す情報を集計して認識スコアが高い順に整理したリストを生成し、ネットワーク上の各情報処理装置に配信してもよい。代表となる情報処理装置は、例えば最先で問い合わせ信号を送信したものや、認識スコアが最大値であったものを選択するようにルール化しておけばよい。
実施形態4では、実施形態1と同様に、第1の動作としてユーザによる凝視を認識する例を説明したが、第1の動作は、実施形態2のように情報処理装置を指差す動作であっても構わない。さらに、認識スコアを用いず、実施形態3のようにユーザと情報処理装置との距離に基づいて、操作対象の候補を上位から順に表示する順番を特定してもよい。また、操作対象の候補の識別情報のリストを、ユーザが操作対象として選択しようとする可能性が高い順に並び替える処理、その候補を表示する画像を生成する処理の少なくとも1つは、上述したサーバ装置あるいは代表の情報処理装置で実行されてもよい。
[その他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。