(57)【要約】【課題】複数の操作者が同一の機器をジェスチャで操作する際、各操作者の可動範囲に重なり合いが生じた場合でも、その場所を変えずに操作者がジェスチャ操作を続行できるようにすること。【解決手段】ジェスチャ認識装置は、複数の操作者のジェスチャ操作部位を認識するジェスチャ認識部８００を備える。空間領域決定部６００は操作者ごとのジェスチャ操作部位に係る可動範囲を算出する。空間領域割り当て部７００は、各操作者の可動範囲の間で重なり合いが生じるか否かを判定する。重なり合いが生じると判定された場合、重なり合う範囲を各可動範囲から除外した範囲が、操作者にそれぞれ設定する領域割当処理が行われる。【選択図】  図１
2011243031.tif 000002
【特許請求の範囲】
【請求項１】
ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在すると判定した場合、重なり合う範囲を前記可動範囲から除外した範囲を、重なる領域が存在する可動範囲に対応する操作者のジェスチャ認識範囲としてそれぞれ設定する領域割当手段と、
前記操作者を撮影した画像データと、前記領域割当手段によって割り当てられた各操作者のジェスチャ認識範囲に基づいて、前記ジェスチャ認識範囲に対応する操作者のジェスチャ操作部位に応じた操作指示を検知し、当該検知したジェスチャに対応する動作指示の命令を発行するジェスチャ認識手段を備えたことを特徴とするジェスチャ認識装置。
【請求項２】
前記領域割当手段によって前記可動範囲の割当が変更された場合、変更の旨又は変更後に操作者が操作可能な範囲を操作者に通知するデータを生成する通知制御手段を備えることを特徴とする、請求項１記載のジェスチャ認識装置。
【請求項３】
前記操作者の操作状態を監視する操作状態監視手段を備え、
前記領域割当手段は、前記操作状態監視手段から前記操作者の操作状態を示す情報を受け取り、操作中でないと判定した操作者に対して前記可動範囲の割当を行い、操作中であると判定した操作者に対してはその操作終了後に前記可動範囲の割当を行うことを特徴とする、請求項１または２に記載のジェスチャ認識装置。
【請求項４】
操作中であると判定された前記操作者に対して、その操作終了後に前記可動範囲の割当を行う旨を操作者に通知するデータを生成する通知制御手段を備えることを特徴とする、請求項３記載のジェスチャ認識装置。
【請求項５】
ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在すると判定した場合、重なる領域内でのジェスチャ操作部位による操作指示を無効と判断し、重なる領域内でのジェスチャ操作部位による操作指示を有効と判断する判断手段を備えたことを特徴とするジェスチャ認識装置。
【請求項６】
ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在しており、かつ重なる領域内に複数のジェスチャ操作部位が位置し、かつ複数の該ジェスチャ操作部位の間の距離が閾値未満である場合、各ジェスチャ操作部位による操作指示を無効と判断し、前記距離が閾値以上である場合、各ジェスチャ操作部位による操作指示を有効と判断する判断手段を備えたことを特徴とするジェスチャ認識装置。
【請求項７】
ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在しており、かつ重なる領域内に複数のジェスチャ操作部位が位置して複数の該ジェスチャ操作部位の間の距離が閾値未満である場合、前記複数のジェスチャ操作部位が同一操作者のジェスチャ操作部位であるか否かを判断し、前記複数のジェスチャ操作部位が同一操作者のジェスチャ操作部位である場合に該ジェスチャ操作部位による操作指示を有効と判断し、前記複数のジェスチャ操作部位が同一操作者のジェスチャ操作部位でない場合に該ジェスチャ操作部位による操作指示を無効と判断する判断手段を備えたことを特徴とするジェスチャ認識装置。
【請求項８】
ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識方法であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する算出ステップと、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定する判定ステップと、
前記判定ステップにて前記重なる領域が存在すると判定した場合、重なり合う範囲を前記可動範囲から除外した範囲を、重なる領域が存在する可動範囲に対応する操作者のジェスチャ認識範囲としてそれぞれ設定する領域割当ステップと、
前記操作者を撮影した画像データと、前記領域割当手段によって割り当てられた各操作者のジェスチャ認識範囲に基づいて、前記ジェスチャ認識範囲に対応する操作者のジェスチャ操作部位に応じた操作指示を検知し、当該検知したジェスチャに対応する動作指示の命令を発行するジェスチャ認識ステップを有することを特徴とするジェスチャ認識方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の操作者が共通の機器を操作する際、操作者ごとの操作指示を個別に認識可能なジェスチャ認識装置及び方法に関するものである。
【背景技術】
【０００２】
カメラやセンサを用いて操作者のジェスチャ（身振りや手振り）を検知し、テレビジョン装置や録画機器等を制御するジェスチャユーザインターフェース（以下、ユーザインターフェースを「ＵＩ」と略記する）が普及しつつある。このジェスチャＵＩは、従来の機器操作に使用されていたリモートコントローラが不要となるだけでなく、より直感的な操作を可能にするものであり、将来の機器操作方法として着目されている。一方、テレビジョン装置や録画機器等の映像機器は、家族や友人等、複数人で視聴する機会の多い機器であるため、複数人で同一機器を操作できることが望ましい。
複数の操作者が同一機器に対して行うジェスチャ操作を、操作者ごとに個別認識する方法（以下、ジェスチャ個別認識方法と称する）として、特許文献１に開示の技術が知られている。このジェスチャ認識装置はカメラ映像から各操作者の顔位置を抽出し、顔位置を基点として各操作者に対するジェスチャ操作の有効空間領域（以下、可動範囲という）を規定する。またジェスチャ認識装置は、カメラ映像から画像抽出したジェスチャ操作部位（例えば手）の位置が、規定した複数の可動範囲のうち、どの操作者のジェスチャ操作空間に属するかを判別し、該操作部位でジェスチャを行った操作者を決定する。
ジェスチャ個別認識方法では、操作者同士の距離が近い場合、それぞれの可動範囲に重なり合いが生じ得る。その重なり領域で行われたジェスチャが、誰の操作なのかを正しく判断できないと、誤操作を引き起こすという問題があった。この問題を解決する方法として、特許文献１では、複数のジェスチャ操作空間に重なり合いが生じる場合、各操作者に対して互いに離れるよう警告を出す方法を提案している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２１６９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数の操作者が同一機器に対してジェスチャ操作で指示する場合、可動範囲に重なり合いが生じたときに警告を発し、可動範囲に重なり合いが生じない位置への移動を操作者に促すだけでは充分でない。操作者はその度に別の場所に移動しなければならず、煩わしい。例えば、互いの可動範囲内には重ならない範囲が存在し、当該範囲では各人の操作が可能であるにも関わらず、操作者はその位置から移動しなければならない。また各操作者の可動範囲内であって、かつ重なっていない範囲でのジェスチャ操作の場合、誤認識の問題は起きなくても警告が出るため、操作者は煩わしく感じる。
そこで本発明は、各操作者の可動範囲に重なり合いが生じた場合でも、その場所で操作者がジェスチャ操作を続行できるようにすることで、利便性を高めることを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明に係る装置は、ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在すると判定した場合、重なり合う範囲を前記可動範囲から除外した範囲を、重なる領域が存在する可動範囲に対応する操作者のジェスチャ認識範囲としてそれぞれ設定する領域割当手段と、前記操作者を撮影した画像データと、前記領域割当手段によって割り当てられた各操作者のジェスチャ認識範囲に基づいて、前記ジェスチャ認識範囲に対応する操作者のジェスチャ操作部位に応じた操作指示を検知し、当該検知したジェスチャに対応する動作指示の命令を発行するジェスチャ認識手段を備える。
【発明の効果】
【０００６】
本発明によれば、各操作者の可動範囲に重なり合いが生じた場合でも、その場所を移動することなく操作者は操作を続行できる。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態に係るジェスチャ認識装置の構成例を示す機能ブロック図である。
【図２】空間領域決定部の構成例を示す機能ブロック図である
【図３】図４乃至１８と併せて本発明の第１実施形態を説明するために、空間領域決定部の処理例を示すフローチャートである。
【図４】顔検出処理例を示すフローチャートである。
【図５】可動範囲の算出処理例を示すフローチャートである。
【図６】可動範囲の算出処理に係る座標設定と諸量を示した図である。
【図７】可動範囲の算出処理の過程を（ａ）乃至（ｆ）に示す図である。
【図８】空間領域割当部の構成例を示す機能ブロック図である。
【図９】空間領域割当部の処理例を示すフローチャートである。
【図１０】重なり判定部の処理例を示すフローチャートである。
【図１１】空間割当方法を説明する図である。
【図１２】ジェスチャ認識部の構成例を示す機能ブロック図である。
【図１３】ジェスチャ認識部の処理例を示すフローチャートである。
【図１４】手位置検出の処理例を示すフローチャートである。
【図１５】動作指示への変換処理例を示すフローチャートである。
【図１６】空間領域判定部の処理例を示すフローチャートである。
【図１７】手位置情報を説明する図である。
【図１８】通知画面例を示す図である。
【図１９】図２０乃至２３と併せて本発明の第２実施形態を説明するために、空間領域決定部の処理例を示すフローチャートである。
【図２０】空間領域判定部の処理例を示すフローチャートである。
【図２１】操作状態監視部の処理例を示すフローチャートである。
【図２２】空間領域割当部の処理例を示すフローチャートである。
【図２３】空間割当方法を説明する図である。
【図２４】図２５乃至２７と併せて本発明の第３実施形態を説明するために、ジェスチャ認識装置の構成例を示す機能ブロック図である。
【図２５】ジェスチャ認識装置の構成例を示す機能ブロック図である。
【図２６】重なり判定部の処理例を示すフローチャートである。
【図２７】ジェスチャ判断部の処理例を示すフローチャートである。
【図２８】図２９乃至３２と併せて本発明の第４実施形態を説明するために、重なり領域内における複数のジェスチャ操作部位について説明する図である。
【図２９】ジェスチャ認識部の構成例を示す機能ブロック図である。
【図３０】可動範囲に基づく操作者特定処理を例示するフローチャートである。
【図３１】操作者特定部の処理例を示すフローチャートである。
【図３２】ジェスチャ判断部の処理例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明に係る各実施形態を説明する。
【０００９】
［第１実施形態］
第１実施形態では、操作者間の位置関係及びジェスチャ操作部位の可動範囲に基づいて空間領域を割り当て、割当後のジェスチャ認識範囲内で行われたジェスチャ操作部位による操作指示を検知して操作制御を行う装置について説明する。図１は一実施形態に係るジェスチャ認識装置の全体構成例を示す機能ブロック図である。
【００１０】
チューナ部１００は、MPEG2トランスポート・ストリーム(Transport Stream：TS)方式で多重化された番組データを放送波１３０より受信し、映像、音声、データに分離する。MPEG2は"Moving Picture Experts Group2"(カラー動画像符号化方式標準化グループの第2規格)の略号である。またデータとは、データ放送用データ、字幕、PSI/SI(Program Specific Information/Service Information)である。"PSI/SI"は、任意のチャンネルや番組を選定するための情報であり、チャンネル番号や番組タイトル等を含む。チューナ部１００が分離した映像と音声は、MPEG2方式で圧縮符号化されているため、デコード部２００にて復号して各信号をモニタ１３３やスピーカ(不図示)に出力する。デコード部２００は、チューナ部１００からの映像信号と音声信号をそれぞれ復号し、復号映像データを合成部３００へ渡し、復号音声データをスピーカ(不図示)に出力する。合成部３００は、ＵＩ描画部１１００が生成したデータを受けとり、アイコンや画面の画像データをデコード部２００からの復号映像データに重畳し、合成後の映像信号をモニタ１３３へ出力する。
カメラ入力制御部４００は、カメラ１３１から受信した画像データをジェスチャ認識部８００及び空間領域決定部６００へ渡す。距離センサ入力制御部５００は、距離センサ１３２から受信した距離情報をジェスチャ認識部８００及び空間領域決定部６００へ渡す。空間領域決定部６００は、カメラ入力制御部４００からのカメラ画像データ及び距離センサ入力制御部５００からの距離情報に基づいて、操作者ごとのジェスチャ操作部位に係る可動範囲を算出する。ジェスチャ操作部位は操作者が装置に対して操作指示を行う際の部位、例えば手や指等である。空間領域決定部６００は、算出した可動範囲を示す可動範囲情報とともに空間領域割当要求を空間領域割当部７００に出す。空間領域決定部６００の詳細は後述する。
【００１１】
空間領域割当部７００は、空間領域決定部６００からの可動範囲情報と空間領域割当要求を受けて、操作者同士の可動範囲について重なり合いの有無や重なり合う範囲を判定する。各可動範囲の間で重なり合いが生じる場合、空間領域割当部７００は、可動範囲の重なり合いが生じない空間領域（以下、非重複空間領域という）を、操作可能な空間領域として各操作者に割り当てる。また空間領域割当部７００は、割当結果を反映させた空間領域の割当情報を保持している。空間領域割当部７００は、割当が変更された旨又は変更後に操作者が操作可能な範囲を操作者に通知するため、空間領域の割当変更通知をＵＩ描画部１１００に指示する。空間領域割当部７００が保持している空間領域の割当情報は、後述の空間領域判定部９００が参照する。空間領域割当部７００の詳細は後述する。
ジェスチャ認識部８００は、カメラ入力制御部４００からのカメラ画像データと距離センサ入力制御部５００からの距離情報に基づいて、ジェスチャ位置情報と動作指示を特定する。ジェスチャ位置情報はジェスチャ操作部位の位置情報を含む。ジェスチャ認識部８００は、空間領域判定部９００に対し、空間領域判定要求とジェスチャ位置情報を渡す。ジェスチャ認識部８００は、空間領域判定部９００の判定結果に基づき、ジェスチャ認識結果である動作指示を制御部１０００へ渡す。ここで、動作指示とは、例えば選局や番組表の表示等に関する指示であり、操作画面を伴うこともある。ジェスチャ認識部８００の詳細は後述する。
空間領域判定部９００は、ジェスチャ認識部８００より受け取ったジェスチャ位置情報と空間領域割当部７００が保持する空間領域の割当情報に基づき、検出されたジェスチャ位置が操作可能な空間領域内である否かを判定する。空間領域判定部９００は、ジェスチャ認識部８００へ判定結果を渡す。空間領域判定部９００の詳細は後述する。
制御部１０００は、ジェスチャ認識部８００からの動作指示を受け取り、動作指示に従ってチューナ部１００やＵＩ描画部１１００を制御する。例えばジェスチャ認識部８００からの動作指示が選局の場合、制御部１０００はチューナ部１００に選局指示を出すとともに、選局先のチャンネル情報画面の描画指示をＵＩ描画部１１００に出す。またジェスチャ認識部８００からの動作指示が番組表の表示の場合、制御部１０００は、番組表画面の描画指示をＵＩ描画部１１００に出す。ＵＩ描画部１１００は、制御部１０００からの描画指示に対応したアイコンや画面のデータを生成して合成部３００へ渡すことで、制御部１０００とともに操作者への通知制御を行う。またＵＩ描画部１１００は、空間領域割当部７００から空間割当の変更通知を受け取り、空間割当の変更を操作者に通知する画面データを生成し、合成部３００へ渡す。合成部３００は映像信号をモニタ１３３に出力する。空間割当の変更通知に係る画面の詳細は後述する。
【００１２】
次に、図２の機能ブロック図を用いて、空間領域決定部６００の構成例を説明する。
顔抽出部６１０は、カメラ入力制御部４００からのカメラ画像データと距離センサ入力制御部５００からの距離情報に基づいて被写体の顔画像を抽出し、抽出した顔ごとに顔位置情報を検出する。顔位置情報は、撮影画像内で顔画像が位置する座標情報、顔領域の大きさを示す幅と高さの情報、モニタ１３３との距離を示す距離情報を含む。位置座標系については、例えばカメラ映像の左上の点を原点（x=0, y=0）とし、左右方向にx軸、上下方向にy軸、前後方向にｚ軸を設定した３次元直交座標系とされ、ｘ−ｙ平面内では画素（pixel）単位で位置計算が行われる。顔位置情報の詳細は後述する。顔抽出部６１０は、検出した顔位置情報を位置情報管理部６２０へ渡す。
位置情報管理部６２０は、顔抽出部６１０より顔位置情報を受け取り、前回検出した顔位置情報と比較し、顔位置情報に変化があったか否かを判定する。位置情報管理部６２０は、顔位置情報に変化があった場合、可動範囲算出部６３０へ可動範囲算出要求を出す。また位置情報管理部６２０は、可動範囲算出部６３０から可動範囲の算出結果を受け取り、空間領域割当部７００へ可動範囲情報とともに空間領域割当要求を出す。
可動範囲算出部６３０は、位置情報管理部６２０から可動範囲算出要求を受け取り、可動範囲算出情報のテーブル保持部６４０が保持する可動範囲算出情報を用いて、各操作者の可動範囲を算出する。可動範囲算出情報の詳細については後述する。また可動範囲算出部６３０は、位置情報管理部６２０へ可動範囲の算出結果を渡す。
なお、図１や図２の括弧内に示す符号については後述の実施形態にて説明する。
【００１３】
次に、図３のフローチャートを用いて、空間領域決定部６００の処理例を説明する。なお本処理及び以下に説明する処理は、制御部１０００が実行するプログラムに従って実現される。
顔抽出部６１０は、カメラ入力制御部４００よりカメラ画像データを受け取り(Ｓ６０１)、顔位置検出を行う(Ｓ６０２)。顔位置検出処理(Ｓ６０２)の詳細については後述する。顔抽出部６１０は、検出した顔位置情報を位置情報管理部６２０へ渡す。
位置情報管理部６２０は、顔抽出部６１０より受け取った顔位置情報と、前回検出した顔位置情報を比較する(Ｓ６０３)。ここで比較する内容は、操作者の検出人数に増減があったか否か、及び検出した顔位置情報が変化したか否かである。位置情報管理部６２０は、顔位置情報に変化がないと判断した場合(Ｓ６０４のno)、処理を終了する。位置情報管理部６２０は、顔位置情報に変化があると判断した場合(Ｓ６０４のyes)、可動範囲算出部６３０に可動範囲算出要求を出す。
可動範囲算出部６３０は、位置情報管理部６２０より可動範囲算出要求を受け取り、処理を開始する。可動範囲算出部６３０は検出した人数を特定し、検出人数を「Nｈ」とする(Ｓ６０５)。「Nｈ>0」の場合(Ｓ６０６のyes)、可動範囲算出部６３０は可動範囲を算出する(Ｓ６０７)。可動範囲の算出処理の詳細については後述する。可動範囲算出部６３０は、可動範囲の算出結果をメモリに記憶する(Ｓ６０８)。Ｓ６０８の詳細については、後述する。可動範囲算出部６３０は、デクリメント処理によってNｈ値を１だけ減らし(Ｓ６０９)、Ｓ６０６へ戻る。可動範囲算出部６３０は、「Nｈ=0」の場合(Ｓ６０６のno)、空間領域割当部７００へ可動範囲情報を通知し(Ｓ６１０)、空間割当要求を出す(Ｓ６１１)。可動範囲算出部６３０は、検出した人数分全ての可動範囲を算出するまで、Ｓ６０６乃至６０９の処理を繰り返す。
【００１４】
次に、図４のフローチャートを用いて、前記Ｓ６０２（顔位置検出処理）の一例を説明する。顔抽出部６１０はカメラ入力制御部４００よりカメラ画像データを受け取って検出処理を開始する。
顔抽出部６１０は、カメラ入力制御部４００からのカメラ画像データを解析し、肌色検出を行う(Ｓ６０２１)。肌色が検出されない場合(Ｓ６０２２のno)、処理は終了する。肌色が検出された場合(Ｓ６０２２のyes)、顔抽出部６１０は、肌色部分の輪郭形状を検出し(Ｓ６０２３)、顔形状と比較する(Ｓ６０２４)。顔抽出部６１０は輪郭形状と顔形状が一致しないと判断した場合(Ｓ６０２５のno)、処理を終了する。顔抽出部６１０は輪郭形状と顔形状が一致すると判断した場合(Ｓ６０２５のyes)、肌色部分の輪郭形状が内接する矩形を算出する(Ｓ６０２６)。顔抽出部６１０は矩形の座標情報を特定し、顔座標(x_h,y_h,w_h,h_h)を求める(Ｓ６０２７)。図６（ａ）に示すように、矩形をカメラ側から見た場合、「x_h」は左上端のx座標、「y_h」は左上端のy座標を表し、「w_h」は矩形の幅、「h_h」は矩形の高さを表す。顔抽出部６１０は、距離センサ入力制御部５００からの距離情報を用いて顔座標に対応する距離情報を取得し、これを顔距離「d_h」とする(Ｓ６０２８)。このd_hは、距離センサ１３２から顔までの距離を表す。顔位置情報は座標情報(x_h,y_h,w_h,h_h)とd_hを含み、これらの値は顔抽出した顔ごとに特定される。
顔位置情報の一例を下表に示す。
【表１】
2011243031.tif 000003
上表は、顔抽出された顔が２つの場合を示し、顔情報を示す各数字（0,1）によって各操作者の顔が特定される。
【００１５】
次に図５のフローチャートを用いて、前記Ｓ６０７の処理例を説明する。本処理では可動範囲算出部６３０が、位置情報管理部６２０から可動範囲算出要求を受けて検出人数を特定し、可動範囲を算出する。
可動範囲算出部６３０は顔の大きさを算出する(Ｓ６０７１)。ここで顔の大きさは、顔位置情報の幅w_hと高さh_hより決定され、例えば「w_h×h_h」である。上表１の例にて顔No=0の顔については、顔の大きさが１５０である。可動範囲算出部６３０は、顔距離d_hを用いて、可動範囲算出情報のテーブル保持部６４０の情報を参照する。可動範囲算出部６３０は、参照すべき可動範囲算出情報テーブルを特定する(Ｓ６０７２)。
【００１６】
可動範囲算出情報テーブルの一例を表２に示す。
【表２】
2011243031.tif 000004
可動範囲算出情報テーブルは、距離情報と顔の大きさから、可動範囲の算出に必要な可動範囲半径「r」やオフセット値「l,m,n」の情報を特定するための参照テーブルである。例えば表１に示す顔No=0の顔については、距離情報d_h=１００であり、参照すべきテーブルとしてd_h=１００乃至１５０の範囲のテーブルが特定される。可動範囲算出部６３０は、顔の大きさに応じて、前記Ｓ６０７２で特定したテーブル内の情報を特定する(Ｓ６０７３)。表１の例では、顔No=0の顔について、顔の大きさが１５０であることから、表２中に枠内で囲んで示す部分の情報が参照される。なお、表２に示すr,l,m,n（図６参照）については後述するが、これらの値は所定値としてもよいし、また位置情報の示す値に所定の係数を乗算した値としてもよい。
【００１７】
可動範囲算出部６３０は、顔の中心点「Oh」の座標(Oh_x,Oh_y,Oh_z)を算出する(Ｓ６０７４)。図６に示すｘ軸、ｙ軸、ｚ軸の３次元直交座標系において、カメラ側から見て、x方向は左右に延びる横軸の方向、y方向は上下に延びる縦軸の方向、z方向は前後の奥行き方向を表す。Ohに付記した「_x」、「_y」、「_ｚ」は、顔の中心点Ohのx座標、y座標、z座標をそれぞれ表す。例えば、Oh_xは顔位置情報のx座標x_hと幅w_hより決定され、「x_h＋w_h/2」である。Oh_yは顔位置情報のy座標y_hと高さh_hより決定され、「y_h＋h_h/2」である。Oh_zは顔位置情報の距離座標d_hと距離オフセット情報nより決定され、「d_h+n」である。距離情報オフセット値nは、Ｓ６０７３で特定した可動範囲算出情報から決まり、例えば顔No=0の場合、表２からn=7である。なお距離情報オフセット値nは距離情報d_hの示す値に所定値を乗算した値でもよい。
可動範囲算出部６３０は、始点「Oa」の座標(Oa_x,Oa_y,Oa_z)を算出する(Ｓ６０７５)。図６に示すように、腕の付け根に設定した始点Oaは、例えばジェスチャ操作部位が手の場合、左肩の位置を示す。Oaに付記した「_x」、「_y」、「_ｚ」は、始点Oaのx座標、y座標、z座標をそれぞれ表す。Oa_xは中心点Ohのｘ座標Oh_xと幅オフセット値lより決定され、「Oh_x+l」である。幅オフセット値lは、Ｓ６０７３で特定した可動範囲算出情報より決定され、例えば顔No=0の場合、表２からl=15である。幅オフセット値lは幅w_hが示す値に所定値を乗算した値でもよい。Oa_yは中心点Ohのｙ座標Oh_yと高さオフセット値mより決定され、「Oh_y+m」である。高さオフセット値mは、Ｓ６０７３で特定した可動範囲算出情報より決定され、例えば顔No=0の場合、表２からm=10となる。高さオフセット値mは距離情報d_hが示す値に所定値を乗算した値でもよい。Oa_zは中心点Ohのｚ座標Oh_zより決定される。
可動範囲算出部６３０は、始点「Ob」の座標(Ob_x,Ob_y,Ob_z)を算出する(Ｓ６０７６)。始点Obは、例えばジェスチャ操作部位が手の場合、上半身に設定した中心位置を示す(図６参照)。Obに付記した「_x」、「_y」、「_ｚ」は、始点Obのx座標、y座標、z座標をそれぞれ表す。Ob_xは中心点Ohのｘ座標Oh_xより決定される。Ob_yは中心点Ohのｙ座標Oh_yと高さオフセット値mより決定され、「Oh_y+m」である。Ob_zは中心点Ohのｚ座標Oh_zより決定される。
可動範囲算出部６３０は、始点「Oc」の座標(Oc_x,Oc_y,Oc_z)を算出する(Ｓ６０７７)。腕の付け根に設定した始点Ocは、例えばジェスチャ操作部位が手の場合、右肩の位置を示す(図６参照)。Ocに付記した「_x」、「_y」、「_ｚ」は、始点Ocのx座標、y座標、z座標を示す。Oc_xは中心点Ohのx座標Oh_xと幅オフセット値lより決定され、「Oh_x-l」である。Oc_yは中心点Ohのy座標Oh_yと高さオフセット値mより決定され、「Oh_y+m」である。Oc_zは中心点Ohのz座標Oh_zより決定される。
【００１８】
可動範囲算出部６３０は、始点Oaを中心として、前記Ｓ６０７３で特定した可動範囲半径rを用いて、球を算出する(Ｓ６０７８)。両腕の付け根の位置に相当するOa,Ocの位置座標と、腕の長さに相当するr値が求まれば、上肢の可動範囲は一意に決定可能である。図７(ａ)は、始点Oaを中心に半径rで描いた球Ｓａを、正面から見た状態を示す。この場合、中心Oa、半径rの球内に示す範囲が可動範囲となる。
可動範囲算出部６３０は、始点Ocを中心として、前記Ｓ６０７３で特定した可動範囲半径rを用いて、球を算出する(Ｓ６０７９)。図７(ｂ)には、始点Ocを中心に半径ｒで描いた球Ｓｃを、正面から見た状態を示す。この場合、中心Oc、半径rの球内に示す範囲が可動範囲となる。
可動範囲算出部６３０は、始点Obを通ってｘ軸に平行に延びる軸を中心軸として、前記Ｓ６０７３で、特定した可動範囲半径rと幅オフセット値lを用いて円柱を算出する(Ｓ６０８０)。図７(ｃ)には、始点Obを通って水平方向に中心軸を有する半径ｒの円柱Ｃｂを、正面から見た状態を示す。この場合、半径r、高さ「2×l」の円柱内に示す範囲が可動範囲となる。
可動範囲算出部６３０は、Ｓ６０７８乃至６０８０で算出した領域を全て含む領域として可動範囲を算出する。図７(ｄ)は可動範囲を横から見た図、図７(ｅ)は上から見た図、図７(ｆ)は正面から見た図である。球Ｓａ、Ｓｃや円柱Ｃｂで示す各領域内をそれぞれＡ＿Ｓａ、Ａ＿Ｓｃ、Ａ＿Ｃｂで表記すると、可動範囲は「（Ａ＿Ｓａ）∪（Ａ＿Ｃｂ）∪（Ａ＿Ｓｃ）」で表すことができる。可動範囲算出部６３０は、顔ごとに始点情報Oa、Ob、Oc、及び可動範囲半径r、幅オフセット値l、算出した可動範囲を対応付けてメモリに記憶する(Ｓ６０８２)。前記Ｓ６１０にて、空間領域決定部６００が空間領域割当部７００へ渡す可動範囲情報は、Ｓ６０７にて上記のように算出した情報である。
【００１９】
次に、図８の機能ブロック図を用いて、空間領域割当部７００の構成を説明する。
重なり判定部７０１は、空間領域割当要求と可動範囲情報を受け取り、可動範囲の間で重なり合いが生じるか否かを判定する。重なり合いが生じると判定した場合、重なり判定部７０１は、非重複空間領域算出部７０２へ非重複空間領域の算出要求を出し、重なり合いが生じないと判定した場合、空間領域割当記憶部７０３へ可動範囲情報を渡す。
非重複空間領域算出部７０２は、重なり判定部７０１から非重複空間領域の算出要求を受け取って処理を開始する。非重複空間領域算出部７０２は、各操作者の可動範囲から、重なり判定部７０１で算出した空間領域（重なり領域領域）を減算する処理を行う。非重複空間領域算出部７０２は、算出結果、つまり非重複空間領域の情報を重なり判定部７０１に渡す。
空間領域割当記憶部７０３は、重なり判定部７０１から受け取った可動範囲情報や、非重複空間領域算出部７０２が算出した非重複空間領域の情報を、空間領域の割当情報として記憶する。
【００２０】
次に、図９のフローチャートを用いて、空間領域割当部７００の処理例を説明する。
空間領域割当部７００は空間領域決定部６００から、空間領域割当要求と可動範囲情報を受け取る(Ｓ７０１)。重なり判定部７０１は、空間領域決定部６００より受け取った可動範囲情報に基づいて、操作者の検出人数を特定する(Ｓ７０２)。重なり判定部７０１は、検出人数が１人の場合(Ｓ７０３のyes)、空間領域割当記憶部７０３へ可動範囲情報を渡し、空間領域割当記憶部７０３は可動範囲情報を空間領域割当情報として記憶する(Ｓ７０７)。重なり判定部７０１は、検出人数が２以上の場合(Ｓ７０３のno)、可動範囲の重なりを判定する(Ｓ７０４)。重なり判定処理の詳細は後述する。重なり判定部７０１は、可動範囲に重なり合いが生じないと判定した場合(Ｓ７０５のno)、Ｓ７０７に進む。また重なり判定部７０１は、可動範囲に重なり合いが生じると判定した場合(Ｓ７０５のyes)、非重複空間領域算出部７０２へ非重複空間領域の算出要求を出す。
【００２１】
非重複空間領域算出部７０２は、重なり判定部７０１から非重複空間領域の算出要求を受け取り、非重複空間領域の算出処理を行う(Ｓ７０６)。非重複空間領域算出部７０２は、重なり判定部７０１が前記Ｓ７０４で算出した可動範囲の重なり結果に基づき、x方向、y方向、z方向のうち、可動範囲が最も重なり合って方向を判定する。非重複空間領域算出部７０２は、最も重なっている方向について、重なり合う範囲が各操作者の可動範囲に占める割合を算出し、算出結果を重なり判定部７０１へ渡す。Ｓ７０６の詳細は後述する。
重なり判定部７０１は、非重複空間領域算出部７０２から算出結果を受け取り、空間領域割当記憶部７０３へ算出結果を渡す。空間領域割当記憶部７０３は前記Ｓ７０６での算出結果を空間領域割当情報として記憶する(Ｓ７０７)。重なり判定部７０１は、空間割当変更通知と空間領域割当情報をＵＩ描画部１１００に渡す(Ｓ７０８)。ここで、重なり判定部７０１がＵＩ描画部１１００へ渡す空間領域割当情報は、各操作者が操作可能な有効空間領域の方向とその割合を示す情報である。例えば、隣接する２人の操作者が同じ床面上で立位姿勢をとり、互いの可動範囲が重なり合う場合、可動範囲が空間上で重なる方向は左右方向である（図１１参照）。操作可能な有効空間領域の方向及び割合は、例えば一方の操作者については、上、左７割、左下、前であり、他方の操作者については、上、右７割、右下、前である。
【００２２】
次に図１０のフローチャートを用いて、前記Ｓ７０４（重なり判定処理）を説明する。本処理では、重なり判定部７０１が空間領域決定部６００から可動範囲情報を受け取り、可動範囲同士が重なり合う状態を判定する。
重なり判定部７０１は、空間領域決定部６００から受け取った可動範囲情報に基づき検出人物の組み合わせ数Npを算出する(Ｓ７０４１)。Npはｎ人から任意の２人を選択する場合の数であり、例えば検出人物数が２人の場合、Np=1であり、３人の場合、Np=3である。重なり判定部７０１は、全ての組み合わせ数について判定が終了したか、すなわちNp>0であるか否かを判定する(Ｓ７０４２)。Np>0の場合(Ｓ７０４２のyes)、重なり判定部７０１は受け取った可動範囲情報のうち、任意の組み合わせについて、比較対象である操作者ごとに、各々の始点Obのx座標と可動範囲半径rと幅オフセット値lにより位置関係を判定する(Ｓ７０４３)。重なり判定部７０１は、比較対象者の始点Obのx座標差分値が、比較対象者の可動範囲半径と幅オフセット値との和以内であるか否かを判定する。
例えば、図１１に示すように、隣接する２人の操作者が立位姿勢で装置に指示を出す場合、図の左側の人物を「第１操作者」とし、右側の人物を「第２操作者」とする。各人に係る始点0a,0b,0cの各座標、可動範囲半径、オフセット値を表３に示す。
【００２３】
【表３】
2011243031.tif 000005
表３から、始点Obのx座標差分値は、|Ob_0x-Ob_1x|と表される。比較対象者の可動範囲半径と幅オフセット値の和は、「ｒ_0+l_0+ｒ_1+l_1」と表される。よって、判定式は「|Ob_0x-Ob_1x|<(ｒ_0+l_0+ｒ_1+l_1)」となる。
次に重なり判定部７０１は、空間領域決定部６００より受け取った可動範囲情報のうち、任意の組み合わせにおいて、比較対象者に係る各始点Obのy座標と可動範囲半径により位置関係を判定する(Ｓ７０４４)。重なり判定部７０１は、比較対象者の始点Obのy座標差分値が、比較対象者の可動範囲半径の和以内であるか否かを判定する。表３から、始点Obのy座標差分値は、|Ob_0y_Ob_1y|と表され、可動範囲半径の和は、「ｒ_0+ｒ_1」と表される。よって、判定式は「|Ob_0y_Ob_1y|<(ｒ_0+ｒ_1)」となる。
【００２４】
重なり判定部７０１は、空間領域決定部６００より受け取った可動範囲情報のうち、任意の組み合わせにおいて、比較対象者に係る各始点Obのz座標と可動範囲半径により位置関係を判定する(Ｓ７０４５)。重なり判定部７０１は、比較対象者の始点Obのz座標差分値が、比較対象者の可動範囲半径の和以内であるか否かを判定する。表３から、始点Obのz座標差分値は、|Ob_0z_Ob_1z|と表され、可動範囲半径の和は、「ｒ_0+ｒ_1」と表される。よって、判定式は「|Ob_0z_Ob_1z|<(ｒ_0+ｒ_1)」となる。
重なり判定部７０１は、対象となる操作者の組み合わせと対応付けてＳ７０４３乃至７０４５の判定結果をメモリに記憶する(Ｓ７０４６)。重なり判定部７０１は、デクリメント処理によりNp値を１だけ減算し(Ｓ７０４７)、Ｓ７０４２へ戻る。重なり判定部７０１は、検出された操作者の全ての組み合わせについての判定が終了するまで、Ｓ７０４２乃至７０４７の処理を繰り返す。重なり判定部７０１は、「Np>0」でない場合(Ｓ７０４２のno)、同じ組み合わせ内でＳ７０４３乃至７０４５の判定結果が２個以上該当するか否か、つまり前記判定式を満たす結果が２個以上であるか否かを判定する(Ｓ７０４８)。重なり判定部７０１は、判定結果が２個以上該当すると判断した場合(Ｓ７０４８のyes)、重なり合いが生じると判定する(Ｓ７０４９)。重なり判定部７０１は、判定結果が２個以上該当しないと判断した場合(Ｓ７０４８のno)、重なり合いが生じないと判定する(Ｓ７０５０)。
【００２５】
次に、前記Ｓ７０６（非重複空間領域の算出処理）を説明する。本処理にて非重複空間領域算出部７０２は、重なり判定部７０１から非重複空間領域の算出要求を受けて非重複空間領域の算出処理を実行する。非重複空間領域算出部７０２は、重なり判定部７０１が前記Ｓ７０４で算出した可動範囲の重なり結果に基づき、x方向、y方向、z方向のうち最も重なっている方向を判定する。図１１の例では検出人数が２人であって、第１操作者の可動範囲と第２操作者の可動範囲が重なっていると判定される。図１１(ａ)は、２人の可動範囲の重なり具合を例示し、第１操作者の可動範囲と第２操作者の可動範囲とが重なり合う範囲を斜線で表している。
両操作者の可動範囲について、x方向の重なり量を「x_o」、y方向の重なり量を「y_o」、z方向の重なり量を「z_o」とする。x_oは各操作者の始点Obのx座標と可動範囲半径rと幅オフセット値lより決定され、表３の場合、「(ｒ_0+l_0+ｒ_1+l_1)−|Ob_0x_Ob_1x|」である。y_oは各操作者の始点Obのy座標と可動範囲半径より決定され、「(ｒ_0+ｒ_1)−|Ob_0y-Ob_1y|」である。z_oは各操作者の始点Obのz座標と可動範囲半径より決定され、「(ｒ_0+ｒ_1)-|Ob_0z-Ob_1z|」である。非重複空間領域算出部７０２は、x_o、y_o、z_oのうちで重なり量が最大値を示す方向を、最も重なっている方向と判断する。例えば、「x_o>y_o, x_o>z_o」の場合、非重複空間領域算出部７０２は、x方向にて可動範囲の重なり合いが最も大きいと判断する。
【００２６】
非重複空間領域算出部７０２は、各操作者についての非重複空間領域の割合を算出する。例えば、第１操作者の非重複空間領域の割合は、始点Obのx座標と可動範囲半径と幅オフセット値とx方向の重なり値から決定される。表３の場合、第１操作者の非重複空間領域がその可動範囲に占める割合（百分率）は、「(((ｒ_0+l_0)-x_o)/(ｒ_0+l_0))×１００」である。図１１(ｂ)は各操作者の非重複空間領域を例示する。第１操作者の非重複空間領域は第１操作者の可動範囲から斜線部分を除外した領域であり、第２操作者の非重複空間領域は第２操作者の可動範囲から斜線部分を除外した領域である。非重複空間領域算出部７０２は、非重複空間領域について決定した前記方向及び割合の情報を重なり判定部７０１に渡す。
【００２７】
図１２は、ジェスチャ認識部８００の機能ブロック図である。
手抽出部８０１は、カメラ入力制御部４００からのカメラ画像データと距離センサ入力制御部５００からの距離情報に基づき、ジェスチャ操作部位（本例では手）の画像を抽出してジェスチャ位置情報を検出する。手抽出部８０１は、動作指示変換部８０２へ手画像とジェスチャ位置情報を渡す。手画像は、カメラ映像から該当部分の画像データを切り出したものである。動作指示変換部８０２は、手抽出部８０１から受け取った手画像と、予め保持しているジェスチャパターン画像との間でパターンマッチング処理を行い、動作指示へ変換する。動作指示変換部８０２は動作指示発行制御部８０３に、動作指示への変換結果と手抽出部８０１より受け取ったジェスチャ位置情報とを対応付けた動作指示情報を渡す。
動作指示発行制御部８０３は、動作指示変換部８０２から動作指示情報を受け取り、空間領域判定部９００にジェスチャ位置情報を渡す。また動作指示発行制御部８０３は、空間領域判定部９００の判定結果を受け取り、判定結果が有効となっている動作指示のみを制御部１０００へ渡す。
【００２８】
次に図１３のフローチャートを用いて、ジェスチャ認識部８００の処理を説明する。
手抽出部８０１は、カメラ入力制御部４００よりカメラ画像データを取得し(Ｓ８０１)、手位置を検出する(Ｓ８０２)。Ｓ８０２の詳細は後述する。手抽出部８０１はＳ８０２で検出した手画像とジェスチャ位置情報を動作指示変換部８０２に渡す。動作指示変換部８０２は、手抽出部８０１から受け取った手画像を判別して動作指示情報へ変換する(Ｓ８０３)。Ｓ８０３の詳細は後述する。動作指示変換部８０２は動作指示発行制御部８０３へ動作指示情報を渡す。
動作指示発行制御部８０３は、動作指示変換部８０２から動作指示情報を受け取った場合（Ｓ８０４のyes）、空間領域判定部９００へ空間領域の判定要求を出す(Ｓ８０５)。動作指示発行制御部８０３は、空間領域判定部９００から受け取った判定結果に基づき、有効な動作指示があるか否かを判定する(Ｓ８０６)。動作指示発行制御部８０３は、有効な動作指示があると判断した場合(Ｓ８０６のyes)、制御部１０００へ動作指示を通知し(Ｓ８０７)、有効な動作指示はないと判断した場合(Ｓ８０６のno)、処理を終了する。
【００２９】
図１４のフローチャートを用いて前記Ｓ８０２（手位置検出処理）を説明する。本処理では手抽出部８０１が、カメラ入力制御部４００よりカメラ画像データを受け取って手位置を検出する。
手抽出部８０１は、カメラ入力制御部４００からのカメラ画像データを解析して肌色検出を行い(Ｓ８０２１)、肌色が検出されなければ(Ｓ８０２２のno)、処理を終了する。手抽出部８０１は、肌色が抽出された場合(Ｓ８０２２のyes)、肌色部分の輪郭形状を検出し(Ｓ８０２３)、これを手形状（テンプレート）と比較する(Ｓ８０２４)。手抽出部８０１は、肌色部分の輪郭形状と手形状が一致しなければ(Ｓ８０２５のno)、処理を終了する。手抽出部８０１は、輪郭形状と手形状が一致した場合(Ｓ８０２５のyes)、肌色部分の輪郭形状が内接する矩形を算出する(Ｓ８０２６)。手抽出部８０１は、矩形の座標情報を特定し、手座標(x_g,y_g,w_g,h_g)とする(Ｓ８０２７)。図１７に示すように、x_g、y_gは矩形をカメラ側から見た時の左上端のx座標、y座標をそれぞれ示し、w_gは矩形の幅、h_gは矩形の高さを示す。手位置情報の一例を表４に示す。
【００３０】
【表４】
2011243031.tif 000006
上表４は、抽出された手が２つの場合を示しており、本例では手情報の数字（0,1）でそれぞれの手を区別している。本例の手位置情報は、カメラ映像における手画像の位置と、手画像の縦横のサイズ、距離センサ１３２から手までの距離情報d_gを含む。
手抽出部８０１は、距離センサ入力制御部５００からの距離情報を用いて手座標に対応する距離情報を取得し、これを手距離「d_g」とする(Ｓ８０２８)。ここで、d_gは距離センサ１３２から手までの距離を示す。手位置座標は、座標情報(x_g,y_g,w_g,h_g)とd_gにより、それぞれの手の位置を特定する値を示す。手位置座標は手画像のデータと関連付けられてメモリに記憶される（Ｓ８０２９）。
【００３１】
次に、図１５のフローチャートを用いて、前記Ｓ８０３（ジェスチャコマンド変換処理）を説明する。動作指示変換部８０２は、手抽出部８０１から手画像とジェスチャ位置情報を受け取り(Ｓ８０３１)、手検出数Ngを決定する(Ｓ８０３２)。動作指示変換部８０２は、手検出数Ngの値がゼロの場合(Ｓ８０３３のno)、処理を終了する。動作指示変換部８０２は、「Ng>0」の場合(Ｓ８０３３のyes)、手画像と、予め保持しているジェスチャテンプレートとを比較する(Ｓ８０３４)。動作指示変換部８０２は、手画像とテンプレートが一致すれば(Ｓ８０３５のyes)、対応する動作指示へ変換する(Ｓ８０３６)。動作指示変換部８０２は、手抽出部８０１から受け取った手位置情報に、変換後の動作指示を追加し(Ｓ８０３７)、Ng値を1だけ減算し(Ｓ８０３９)、Ｓ８０３３へ戻る。ここで、手位置情報に動作指示を追加した情報が、動作指示情報である。一方、手画像とテンプレートが一致しない場合(Ｓ８０３５のno)、動作指示変換部８０２は、手抽出部８０１から受け取った手位置情報より、該当する手の情報を削除する(Ｓ８０３８)。そしてＳ８０３９に進む。
【００３２】
次に、図１６のフローチャートを用いて、空間領域判定部９００の処理例を説明する。本処理では空間領域判定部９００が、ジェスチャ認識部８００から受け取ったジェスチャ位置情報と、空間領域割当部７００が保持する空間領域割当情報に基づき、検出されたジェスチャ位置が操作可能な空間領域内であるか否かを判定する。
空間領域判定部９００は、ジェスチャ認識部８００より動作指示情報を取得し(Ｓ９０１)、空間領域割当部７００が保持する空間領域割当情報を取得する(Ｓ９０２)。空間領域判定部９００は、空間領域割当情報より顔検出数Nｈを決定し(Ｓ９０３)、動作指示情報より手検出数Ngを決定する(Ｓ９０４)。空間領域判定部９００は、「Ng>0」の場合(Ｓ９０５のyes)、図１７に示す手中心点Ogの座標(Og_x,Og_y,Og_z)を算出する(Ｓ９０６)。ここで、Ogに付記した「_x」、「_y」、「_z」は、手の中心点Ogのx座標、y座標、z座標をそれぞれ表す。例えばOg_xは手位置情報のx座標x_gと幅w_gより決定され、「x_g＋w_g/2」である。Og_yは手位置情報のy座標y_gと高さh_gより決定され、「y_g＋h_g/2」である。Og_zは手位置情報の距離座標d_gと距離オフセット情報pより決定され、「d_g+p」である。ここで、距離情報オフセット値pは予め保持している所定値でもよいし、また手位置情報の距離情報d_gの示す値に所定値を乗算した値としてもよい。
【００３３】
空間領域判定部９００は、「Nｈ>0」の場合(Ｓ９０７のyes)、前記Ｓ９０２で取得した空間領域割当情報に含まれる始点情報のうち、比較する始点を決定する(Ｓ９０８)。比較する始点は各始点情報のx座標と手中心点のx座標より決定され、各始点情報のx座標と手中心点のx座標の差分値のうち最短距離にある始点を比較する始点とする。ここで、手情報=0の中心点Ogのx座標をOg_x、顔No=0に関して、始点Oaのx座標をOa_0x、始点Obのx座標をOb_0x、始点Ocのx座標をOc_0xとする。各始点情報のx座標と手中心点のx座標の差分値は、例えば|Og_x-Oa_0x|、|Og_x_Ob_0x|、|Og_x_Oc_0x|であり、これらの算出結果のうちで最短となる始点が比較始点となる。
空間領域判定部９００は、検出された手位置が所定の判定条件を用いて規定される空間領域内であるか否かの判定を行う(Ｓ９０９)。手位置が当該空間領域内であるか否かの判定は、手中心点のx、y、z座標と、前記Ｓ９０８で決定した比較始点のx、y、z座標と、前記Ｓ９０２で取得した空間領域割当情報のうち始点Oaの属する顔情報の可動範囲半径ｒ_0より決定される。例えば、前記Ｓ９０８で比較始点がOaと決定された場合、Oaのx座標Oa_x、y座標Oa_y、z座標Oa_zを用いて、判定条件式により手位置が判定される。判定条件式は「√((Oa_x_Og_x)^2+(Oa_y_Og_y)^2+(Oa_z_Og_z)^2)<ｒ_0」であり、「Ａ^2」はＡの２乗を表す。この判定条件式が満たされた場合、空間領域判定部９００は、検出された手が空間領域内に位置すると判断する。
空間領域判定部９００は、Nｈ値から１を減算し(Ｓ９１０)、Ｓ９０７へ戻る。全ての手について判定が終了するまで、Ｓ９０７乃至９１０の処理が繰り返し実行される。空間領域判定部９００は、Nh値がゼロの場合(Ｓ９０７のno)に、Ｓ９０９の判定結果が１個以内であれば(Ｓ９１１のyes)、Ng値から１を減算し(Ｓ９１３)、Ｓ９０５へ戻る。空間領域判定部９００は、Ｓ９０９の判定結果が２個以上の場合(Ｓ９１１のyes)、ジェスチャ認識部８００から受け取った動作指示情報より、動作指示を削除し(Ｓ９１２)、Ｓ９１３に進む。空間領域判定部９００は、検出された全ての顔について確認するまで、Ｓ９０５乃至９１３の処理を繰り返し実行する。空間領域判定部９００は、Ng値がゼロの場合(Ｓ９０５のno)、ジェスチャ認識部８００へ動作指示情報を通知し(Ｓ９１４)、処理を終了する。
【００３４】
図１８は、空間割当が変更された旨を操作者に通知する画面例を示す。ＵＩ描画部１１００は、空間領域割当部７００から空間割当変更通知と空間割当情報を受け取り、空間割当情報の内容を表示するための画面データを生成する。本例の画面には、空間割当を変更した旨が表示される。例えば、カメラから見て左側の第１操作者には、上、前、左、左下方向がジェスチャ操作可能な空間領域であることが提示され、右側の第２操作者には、上、前、右、右下方向がジェスチャ操作可能な空間領域であることが提示される。本画面例では、各操作者のジェスチャ操作可能な空間領域の情報を文字で提示しているが、これに限らず、各々の操作可能な方向や範囲を図や絵等で表現する方法を採用してもよい。
第１実施形態によれば、操作者の位置関係が変化した場合、各人の可動範囲と位置関係に基づいて、操作者ごとに操作可能なジェスチャ認識範囲を割り当て直す。この再割り当てにより、各人がジェスチャ操作を行う空間領域に重なり合いが生じない操作範囲が設定され、その結果、各操作者はそのままの位置でジェスチャ操作を続行できるので、利便性が高まる。
【００３５】
［第２実施形態］
次に本発明の第２実施形態を説明する。第２実施形態では、各操作者の可動範囲と位置関係に加え、操作者の操作状態に基づいて、ジェスチャ操作のための空間領域が重ならないようにジェスチャ認識範囲の割り当てを変更する。
【００３６】
第２実施形態に係るジェスチャ認識装置の全体構成を説明する。第１実施形態との相違する構成部は、図１に示す操作状態監視部１４００である。よって以下では、該監視部とこれに関係する構成部１２００、１３００、１５００を説明し、第１実施形態の場合と同様の部分については既に使用した符号を用いることで、それらの詳細な説明を省略する。
空間領域決定部１２００は、第１実施形態で述べた機能に加え、今回算出した顔位置情報と前回検出した顔位置情報とを比較し、顔の移動状態に関する情報を生成して操作状態監視部１４００へ渡す。空間領域決定部１２００の詳細は後述する。
空間領域判定部１３００は、第１実施形態で述べた機能に加え、動作指示生成状態の情報を生成する。該情報は、顔情報ごとに動作指示が生成されたか否かを示す情報であり、操作状態監視部１４００に送られる。空間領域判定部１３００の詳細は後述する。
操作状態監視部１４００は、空間領域決定部１２００からの移動状態の情報と、空間領域判定部１３００からの動作指示生成状態の情報を受け取り、各人が操作中であるか否かについて状態監視処理を行う。操作状態監視部１４００は、顔ごとの操作状態を示す操作状態情報を保持しており、空間領域割当部１５００は操作状態情報を参照する。
空間領域割当部１５００は、空間領域決定部１２００からの空間領域割当要求と可動範囲情報に基づき、操作者の可動範囲が重なっているか否かを判定する。可動範囲の重なり合いが生じる場合、空間領域割当部１５００は、可動範囲の重なり合いが生じない非重複空間領域を操作可能な空間領域として算出する。空間領域割当部１５００は、操作状態監視部１４００が保持する操作状態情報を参照し、操作中の人物が操作を終了するまでの間は、それ以外の人物の空間領域割当情報を変更し、ＵＩ描画部１１００へ仮の空間領域割当変更通知を渡す。空間領域割当部１５００は、操作状態監視部１４００が保持する操作状態情報を参照し、操作中の人物が操作を終了すると、操作中であった人物への空間割当情報を変更し、ＵＩ描画部１１００へ空間領域割当の変更通知を渡す。
【００３７】
次に図２を用いて、空間領域決定部１２００の構成例について第１実施形態との相違点のみを説明する。位置情報管理部１２１０は、顔抽出部６１０からの顔位置情報と前回検出した際の顔位置情報とを比較し、検出人数や位置に変化があった場合、位置変化のない顔を含むか否かを判断する。位置情報管理部６２０は、顔位置情報が位置変化のない顔の情報を含む場合には、顔ごとに移動したか否かを明示した情報を生成し、操作状態監視部１４００へ渡す。
【００３８】
次に、図１９のフローチャートを用いて、空間領域決定部１２００の処理例を説明する。図３との相違点は、Ｓ６０４とＳ６０５の間にあるＳ１２０５乃至１２０７であり、以下、これらの処理のみ説明する。
位置情報管理部１２１０は、複数の操作者のうちで移動していない人物がいるか否かを判定する(Ｓ１２０５)。位置情報管理部１２１０は、移動していない人物がいる場合(Ｓ１２０５のyes)、移動状態情報を生成する(Ｓ１２０６)。移動状態情報は、顔ごとに移動の有無を管理するための情報を含み、操作状態監視部１４００へ通知される(Ｓ１２０７)。一方、移動していない人物が存在しないと判定された場合(Ｓ１２０５のno)、Ｓ６０５に進む。
【００３９】
次に図２０のフローチャートを用いて、空間領域判定部１３００の処理例を説明する。図１６との相違点は、Ｓ９１１及びＳ９１２とＳ９１３との間にあるＳ１３１３、及びＳ９１４の前にあるＳ１３１５であり、以下、これらの処理のみ説明する。
空間領域判定部１３００は、動作指示生成状態の情報をメモリに記憶する(Ｓ１３１３)。ここで、動作指示生成状態の情報は、空間領域判定部１３００がジェスチャ認識部８００から受け取った動作指示情報より、顔ごとに動作指示が発行されているか否かを管理する情報である。Ｓ９０９での判定結果が１個以内と判定された場合(Ｓ９１１のyes)、注目している顔の動作指示は発行されているので、空間領域判定部１３００は動作指示生成状態として、発行済みであることを示す情報をメモリに記憶する。また、Ｓ９０９での判定結果が２個以上と判定された場合(Ｓ９１１のno)、注目している顔の動作指示は発行されていないので、空間領域判定部１３００は動作指示生成状態として未発行の旨の情報をメモリに記憶する。
空間領域判定部１３００は、全ての顔についての判定処理が終了すると(Ｓ９０５のno)、動作指示生成状態の情報を操作状態監視部１４００へ渡す(Ｓ１３１５)。
【００４０】
次に図２１のフローチャートを用いて、操作状態監視部１４００の処理例を説明する。
操作状態監視部１４００は、空間領域決定部１２００から移動状態情報を受け取り(Ｓ１４０１)、空間領域判定部１３００から動作指示生成状態の情報を受け取る(Ｓ１４０２)。操作状態監視部１４００は、空間領域決定部１２００から受け取った移動状態情報に基づき、人数Nｈを特定する(Ｓ１４０３)。Ｓ１４０４では、Nh値がゼロより大きいか否かが判定され、「Nｈ>0」の場合、操作状態監視部１４００は、移動状態情報に基づき、注目している顔の人物が移動したか否かを判定する(Ｓ１４０５)。なおNh値がゼロの場合、処理が終了する。
注目している顔の人物が移動した場合(Ｓ１４０５のyes)、Ｓ１４１１に進み、操作状態監視部１４００は、Nｈ値を１だけ減算した後、Ｓ１４０４へ戻る。また、操作状態監視部１４００は、注目している顔の人物が移動していない場合(Ｓ１４０５のno)、動作指示生成状態の情報に基づき、該当人物の動作指示情報の有無について判定する(Ｓ１４０６)。該当人物の動作指示情報がある場合(Ｓ１４０６のyes)、Ｓ１４０７に進む。ここで、動作指示が操作を終了する指示でなければ(Ｓ１４０７のno)、操作状態監視部１４００は、操作中と判断する(Ｓ１４０８)。一方、操作状態監視部１４００は、該当人物の動作指示情報がない場合(Ｓ１４０６のno)、または、動作指示情報はあるが、動作指示が操作を終了する指示の場合(Ｓ１４０７のyes)、無操作状態と判断する(Ｓ１４０９)。Ｓ１４０８、Ｓ１４０９の後、操作状態監視部１４００は、顔ごとに操作状態の情報をメモリに記憶し(Ｓ１４１０)、Ｓ１４１１に進む。ここでNh値が１だけ減算されてからＳ１４０４に戻る。
本例では、各操作者が操作中であるか否かの判定処理において、操作の終了を示す動作指示であるか否かを判定するステップＳ１４０７を設けている。これに限らず、操作後の経過時間をカウントし、一定期間以上に亘って操作が行われない場合に、操作状態監視部１４００が操作終了とみなす判断処理を行ってもよい。
【００４１】
次に図８を用いて、空間領域割当部１５００の構成例について第１実施形態との相違点のみを説明する。
重なり判定部１５０１は、空間領域割当要求と可動範囲情報を受け取り、可動範囲に重なり合いが生じるか否かを判定する。可動範囲に重なり合いが生じる場合、重なり判定部１５０１は非重複空間領域算出部７０２へ非重複空間領域の算出要求を出す。重なり判定部１５０１は、操作状態監視部１４００から操作状態の情報を取得し、操作中の人物がいるか否かを判定する。重なり判定部１５０１は、操作中の人物がいる場合、空間領域割当記憶部７０３に対し、操作中でない人物の空間割当情報を記憶させ、ＵＩ描画部１１００には、仮の空間割当変更通知を渡す。重なり判定部１５０１は、操作状態監視部１４００から操作状態の情報を取得することで、操作中の人物がその操作を終了したかを監視する。当該操作者の操作が終了した場合、重なり判定部１５０１は空間領域割当記憶部７０３に対し、操作中であった人物の空間割当情報を記憶させ、ＵＩ描画部１１００には空間割当変更通知を渡す。
【００４２】
次に、図２２のフローチャートを用いて、空間領域割当部１５００の処理例を説明する。図９との相違点は、Ｓ７０６に続くＳ１５０７乃至１５１５であり、以下、これらの処理を説明する。
空間領域割当部１５００は、その内部で仮割当フラグ変数を管理している。Ｓ１５０７で仮割当フラグ変数をfalse（偽）に設定した後、空間領域割当部１５００は、操作状態監視部１４００が保持している操作状態の情報を取得する(Ｓ１５０８)。空間領域割当部１５００は、操作状態監視部１４００から取得した操作状態の情報に基づき、操作中の人物がいるか否かを判定する(Ｓ１５０９)。操作中の人物がいる場合(Ｓ１５０９のyes)、その旨を既にＵＩ描画部１１００へ通知済みか否かが判定される（Ｓ１５１０）。通知済みの場合(Ｓ１５１０のyes)、Ｓ１５０８へ戻る。通知済みでなければ(Ｓ１５１０のno)、空間領域割当部１５００は、空間領域割当記憶部７０３に対して、操作中でない人物についての非重複空間領域の算出結果を渡す(Ｓ１５１１)。これは操作中でない人物について空間領域割り当てを行うためである。空間領域割当部１５００は、仮割当フラグ変数をtrue（真）に変更し(Ｓ１５１２)、ＵＩ描画部１１００へ、仮の空間領域割当変更通知を渡し(Ｓ１５１３)、Ｓ１５０８へ戻る。
【００４３】
図２３(ａ)は、操作中の人物がいた場合の空間領域割り当て結果を例示する。本例では、モニタ１３３を正面からみている人物を表し、左側の操作者が操作中と判断された人物であり、右側の操作者が操作中でない人物である。この場合、操作中である左側の人物はその可動範囲Ａ＿Ｌ内の全ての位置で操作指示が可能である。これに対し、操作中でない右側の人物については、可動範囲Ａ＿Ｒのうち斜線部Ｏ＿Ｒを除外した領域が非重複空間領域として算出される。
空間領域割当部１５００は、操作中の人物がいない場合(Ｓ１５０９のno)、Ｓ１５１４に進み、仮割当フラグ変数の値を調べる（Ｓ１５１４）。該フラグ変数がtrueの場合(Ｓ１５１４のyes)、空間領域割当部１５００は空間領域割当記憶部７０３に対し、操作中であった人物についての非重複空間領域の算出結果を渡す(Ｓ１５１５)。図２３(ｂ)は、Ｓ１５１５の処理の実行後、空間領域の本割当結果を例示する。操作中であった左側の人物には、可動範囲Ａ＿Ｌから斜線部Ｏ＿Ｌを除外した領域が割り当てられる。Ｓ１５１５の後、Ｓ７０８に進む。仮割当フラグ変数がfalseの場合(Ｓ１５１４のno)、Ｓ７０７に進む。
Ｓ７０８でＵＩ描画部１１００は空間領域割当部１５００から、空間割当変更通知と空間割当情報を受け取った場合、空間割当情報の内容を画面に表示するためのデータを生成する。例えば、図１８の画面と同様に、操作者への空間割当を変更した旨が表示される。この場合、図２３（ａ）に示す右側の操作者には、前記したように上、前、右、右下方向にてジェスチャ操作可能である旨のメッセージが提示されるが、左側の操作者は操作中であるため、今は変更を実行せずに後で変更する旨が提示される。例えば、左側の操作者には、「操作終了後、変更します。」といったメッセージが、画面上に文字で表示される。
【００４４】
第２実施形態では、ある操作者が装置に操作指示を行っている最中に、別の操作者が移動したことにより、空間割当領域の変更の必要性が生じた場合、既に操作中の操作者の操作状態に従って操作範囲の割当を変更することができる。
【００４５】
［第３実施形態］
次に本発明の第３実施形態を説明する。第３実施形態では、各操作者の可動範囲がカメラ方向から見て同一平面上で重なっている場合、重なり合う範囲以外で行われたジェスチャ操作による操作指示を有効とし、重なり合う範囲内で行われたジェスチャ操作による操作指示を無効とする。
【００４６】
図２４は、第３実施形態に係るジェスチャ認識装置を適用したテレビジョン受信装置の構成例を示す。以下では、図１に示す構成との相違点のみを説明し、第１実施形態と同様の構成部については既に付した符号を用いることで、それらの詳細な説明を省略する。
空間領域決定部２２００は、カメラ入力制御部４００からのカメラ画像データと距離センサ入力制御部５００からの距離情報を受け取り、各操作者の可動範囲情報を算出して保持する。空間領域決定部２２００はジェスチャ認識部８００との間で必要な情報を送受し合う。空間領域決定部２２００の構成は、図２に示す通りである。
ジェスチャ認識部８００は、カメラ入力制御部４００からのカメラ画像データと距離センサ入力制御部５００からの距離情報を受け取り、ジェスチャ操作部位の位置情報を特定する。またジェスチャ認識部８００は、ジェスチャ操作部位の位置情報と空間領域決定部２２００が保持する可動範囲情報を参照し、検出したジェスチャ操作部位に係る操作者を特定可能か否かについて判定する。特定可能の場合、ジェスチャ認識部８００は、ジェスチャ操作部位の形状に基づいてジェスチャ認識を行う。また特定不能の場合、ジェスチャ認識部８００はジェスチャ認識を行わず、ＵＩ描画部１１００に対し、ジェスチャ認識が不可能である旨の警告を表示するように指示する。またジェスチャ認識部８００は、ジェスチャ認識結果を動作指示の命令に変換して制御部１０００とＵＩ描画部１１００へ渡す。ＵＩ描画部１１００は、ジェスチャ認識部８００から警告表示の指示を受け取った場合、当該指示に沿った警告を表示するためのデータを生成して合成部３００に送る。
【００４７】
次に、図２を用いて空間領域決定部２２００の動作を説明する。なお本実施形態にて位置情報管理部６２０はジェスチャ認識部８００と情報を送受し合う。
顔抽出部６１０は、カメラ入力制御部４００からカメラ映像データを受信した際、位置情報管理部６２０に対してカメラ映像の解析開始を通知する。その後、顔抽出部６１０は、カメラ映像データ及び距離情報に基づき、顔画像の抽出、および顔位置情報の算出処理を開始する。顔抽出部６１０は位置情報管理部６２０に対し、算出した顔位置情報を出力し、次の顔画像抽出処理を行う。カメラ映像において全ての顔画像の抽出と、顔位置情報算出が終了すると、顔抽出部６１０は位置情報管理部６２０に対してカメラ映像の解析終了を通知し、次のカメラ映像が入力されるまで待機する。一方、カメラ映像にて顔画像を検出できなかった場合にも、カメラ映像の解析を終了した旨の通知が位置情報管理部６２０に出され、次のカメラ映像の入力待ちの状態となる。
位置情報管理部６２０は、全ての操作者の数（検出した顔画像数）を示す情報とともに、各操作者の顔位置情報、可動範囲情報を管理する。顔位置情報の管理に使用するテーブル（以下、顔情報管理テーブルという）の一例を表５に示す。
【表５】
2011243031.tif 000007
ユーザIDは、各操作者の顔を識別するための識別情報であり、本例では数字で区別している。
位置情報管理部６２０は、顔抽出部６１０からカメラ映像の解析開始指示を受けると、顔情報管理テーブルを初期化し、該テーブルの作成処理を開始する。顔抽出部６１０から送られて来た顔位置情報は、ユーザIDが割り振られた上で所定の記憶領域に格納される。位置情報管理部６２０は、可動範囲算出部６３０からの可動範囲情報についても同様に顔情報管理テーブルに格納する。本処理は、顔抽出部６１０からカメラ映像の解析終了を通知されるまで行われる。
【００４８】
本実施形態では、複数人の個体認識までの必要はなく、操作者の位置（顔位置）のみが必要であるため、顔位置管理テーブルは顔位置情報のみを保持する。しかし、操作者を特定するために、該テーブルに顔画像データも保存し、前フレームの顔位置情報テーブルに登録された顔画像に基づき、操作者を同定してもよい。
位置情報管理部６２０は、ジェスチャ認識部８００から操作者の人数に係る取得要求を受けると、管理している人数（ユーザIDの数）を返信する。また位置情報管理部６２０は、ジェスチャ認識部８００から可動範囲情報の取得要求を受けた場合、顔情報管理テーブルからユーザIDと該ユーザIDの可動範囲情報を返信する。
【００４９】
次に、可動範囲の算出処理を説明する。図６の説明では可動範囲算出テーブルを参照して、可動範囲の算出に必要な情報が取得されるとした。以下では、顔の幅w_hと高さh_hから、可動範囲半径ｒ、幅オフセット値l、高さオフセット値mを算出する処理について説明する。
可動範囲算出部６３０は、顔の幅w_hと高さh_hの値に基づき、成人の体形がほぼ７頭身であることを利用して、下式からr,l,mの値を算出する。
【数１】
2011243031.tif 000008
上式にてNr, Nl, Nmは定数である。例えば、「Nr = 3、Nl = 1、Nm = 1」で近似した場合、表５でユーザIDの値がゼロの操作者については、「r = 45、l = 10、m = 15」となる。
顔の中心点は２次元直交座標系でOh（Oh_x＋w_h/2,Oh_y+h_h/2）と算出される。r,l,mを用いて、各点Oa（Oh_x＋l, Oh_y＋m）、Ob（Oh_x, Oh_y＋m）、Oc（Oh_x−l, Oh_y＋m）の座標が求まる。例えば、表５でユーザIDがゼロの操作者については、Oa(107.5 + 10, 105 + 15) 、つまり、Oa(117.5, 120)と計算される。
【００５０】
図２５は、ジェスチャ認識部８００の構成例を示す機能ブロック図である。
手抽出部９０１は、カメラ入力制御部４００と距離センサ入力制御部５００からの入力情報に基づき、ジェスチャ操作部位である手の画像（手画像）、手位置情報を算出し、ジェスチャ判断部９０２に出力する。
ジェスチャ判断部９０２は、手抽出部９０１から手画像と手位置情報を受け取り、後述の重なり判定部９０４と協働して、操作者がその手で行った操作について有効性を判断する。またジェスチャ判断部９０２はジェスチャコマンド変換部９０３と協働して、ジェスチャ操作の指示を装置の動作指示の命令に変換して制御部１０００に送信する。この他、ジェスチャ判断部９０２はＵＩ描画部１１００に対して警告表示を指示する。
ジェスチャコマンド変換部９０３は、ジェスチャ判断部９０２から受け取った手画像と、予め保持しているジェスチャパターン画像群との間でパターンマッチング処理を行い、手の形状から、これに対応する動作指示の命令に変換する。ジェスチャパターン画像群に一致する手画像が検出された場合、ジェスチャコマンド変換部９０３は該当する動作指示の命令をジェスチャ判断部９０２に返信する。ジェスチャパターン画像群に一致する手画像がなければ、ジェスチャコマンド変換部９０３は「該当なし」をジェスチャ判断部９０２に返信する。
重なり判定部９０４は、ジェスチャ判断部９０２から手位置情報を受信し、操作者の手の位置が重なり領域、つまり可動範囲同士が重なり合う領域内に属するか否かを判断する。その際、空間領域決定部２２００が保持する顔情報管理テーブルのデータが参照される。手の位置が重なり領域に属する場合、重なり判定部９０４は「是」をジェスチャ判断部９０２に返し、手の位置が重なり領域に属さない場合、「否」を返す。
【００５１】
次に、図２６のフローチャートを用いて、重なり判定処理を説明する。重なり判定部９０４は、対象となる手の位置に対して、全操作者の可動範囲に関する包含判定を行う。その結果、手の位置が複数の可動範囲に属している場合、「重なり領域に属している」と判断され、それ以外の場合、「重なり領域には属さない」と判断される。本処理は、重なり判定部９０４がジェスチャ判断部９０２から手位置情報を受け取った時点から開始する。
まず重なり判定部９０４は、ジェスチャ判断部９０２から受け取った手位置情報(x_g,y_g,w_g,h_g)から、その手の中心点Ogの座標(Og_x,Og_y)を算出する（Ｓ２２０１）。手が重なり領域に入ったか否かは、この手の中心点Ogが当該空間内に入っているか否かによって近似的に判断される。本実施形態では、手の代表点Ogの算出方法の一例として、手位置情報(x_g,y_g,x_g,h_g)に係る矩形の中心点の座標を(x_g+w_g/2,y_g+h_g/2)とする。なお本例に限らず、Ogを手の重心点として計算してもよい。
Ｓ２２０２において、手の中心点Ogが属する可動範囲の数を計数するためのカウント変数「cnt」の値が初期化され、ゼロが代入される。Ｓ２２０３で重なり判定部９０４は、全ての操作者、つまり全てのユーザIDに対して、Ｓ２２０４乃至２２０７の処理を行ったか否かを判定する。全操作者について処理が終了した場合、Ｓ２２０８に進み、未終了の場合、Ｓ２２０４に進む。
【００５２】
Ｓ２２０４で重なり判定部９０４は、空間領域決定部２２００から、対象となる操作者の可動範囲情報（Oa, Ocの位置座標、及びr）を取得する。Ｓ２２０５にて、手の代表位置OgがＳ２２０４で取得した可動範囲情報の示す範囲内に属するか否かについて包含判定が行われる。包含判定方法の一例として、本実施形態では以下のアルゴリズムを採用する。
「Og_x < Oc_x」の場合、「（点Ogと点Oc間の平面距離）≦ r」ならば、包含判定として肯定的結果、つまり「包含する」と判定される。また「（点Ogと点Oc間の平面距離）> r」であるならば、包含判定として否定的結果、つまり「包含しない」と判定される。ここで、２点間の平面距離は三平方の定理を用いて計算される。
また、「Oc_x ≦ Og_x ≦ Oa_x」の場合、「(Oa_y − r) ≦ Og_y ≦ Oa_y ＋ r)」ならば、「包含する」と判定される。また、Og_yの値が上記以外の範囲ならば、「包含しない」と判定される。
最後に、「Og_x > Oa_x」の場合、「（点Ogと点Oa間の平面距離）≦ r」ならば、「包含する」と判定される。「（点Ogと点Oa間の平面距離）> r」ならば、「包含しない」と判定される。
【００５３】
Ｓ２２０５での包含判定結果が「包含する」の場合（Ｓ２２０６のyes）、インクリメント処理によりカウント変数cntの値に１が加算され（Ｓ２２０７）、Ｓ２２０３に戻って、次のユーザIDについて同様の処理を続行する。一方、Ｓ２２０５で包含判定結果が「包含しない」であった場合（Ｓ２２０６のno）、Ｓ２２０３に戻る。
Ｓ２２０８で重なり判定部９０４は、カウント変数cntの値をチェックし、「cnt > 1」かどうかを判定する。「cnt > 1」の場合、つまり手の位置が複数の可動範囲に属する場合、重なり判定部９０４は「重なり領域に属する」（是）と判断する（Ｓ２２０９）。また「cnt = 1」の場合、つまり手の位置が複数の可動範囲に属していない場合には、「重なり領域に属さない」と判断される（Ｓ２２１０）。Ｓ２２０９、Ｓ２２１０の後、Ｓ２２１１にて重なり判定部９０４は、Ｓ２２０９又はＳ２２１０での判断結果を、ジェスチャ判断部９０２に渡す。
【００５４】
次に、図２７のフローチャートを用いて、ジェスチャ判断部９０２におけるジェスチャの有効／無効判断処理について説明する。本処理は、ジェスチャ判断部９０２が手抽出部９０１から手画像と手位置情報を受け取った時点から開始する。
Ｓ２３０１でジェスチャ判断部９０２は、重なり判定部９０４に手位置情報を渡し、手の位置が重なり領域に属するか否かの判定を依頼する。重なり判定部９０４は判定処理（図２６参照）を行い、その結果をジェスチャ判断部９０２に返す。
Ｓ２３０２にてジェスチャ判断部９０２は、重なり判定部９０４からの結果をチェックし、「重なり領域に属する」（是）の場合、その手で行われたジェスチャ操作を「無効」と判断する（Ｓ２３０３）。判定結果が「重なり領域に属さない」（否）の場合、ジェスチャ判断部９０２は、当該ジェスチャ操作を「有効」と判断する（Ｓ２３０５）。
Ｓ２３０４でジェスチャ判断部９０２は、当該ジェスチャ操作を「無効」と判断した旨を操作者に通知するために、ＵＩ描画部１１００に指示する。ＵＩ描画部１１００はジェスチャ操作が無効となった旨を示す警告用データを作成し、合成部３００を介して映像信号をモニタ１３３に送信し、処理が終了する。
一方、Ｓ２３０５でジェスチャ操作が「有効」と判断された場合、Ｓ２３０６でジェスチャコマンド変換部９０３は、手画像の表すジェスチャの操作内容を装置の動作指示の命令に変換する。この命令はジェスチャ判断部９０２を介して制御部１０００に送信される。本処理により、ジェスチャ操作に対応する装置の動作制御が行われることとなる。
第３実施形態では、カメラ画像データや距離情報に基づいて算出した二次元の可動範囲において、ジェスチャ操作部位の位置が可動範囲の重なり領域に属するか否かを判断する。その結果、誤認識が起こる可能性がある重なり領域で行われたジェスチャ操作は無効と判断され、重なり領域外で行われたジェスチャ操作が有効と判断される。本実施形態ではジェスチャ操作部位の位置を考慮することで、誤操作が起こらないようにジェスチャ操作を無効化できるので、操作者を煩わせずに済み、利便性が向上する。
【００５５】
［第４実施形態］
次に本発明の第４実施形態を説明する。第３実施形態では、ジェスチャ操作部位が可動範囲の重なり領域に入った場合、該操作部位がどの操作者の部位であるかを、可動範囲から判別できないため、重なり領域内での操作を一律に無効と判断した。逆を言えば、重なり領域に入ったジェスチャ操作部位がどの操作者の部位であるかを特定可能ならば、そのジェスチャ操作を無効とする必要はなくなる。そこで、第４実施形態ではジェスチャ操作部位の位置を追跡（トレース）し、該操作部位が重なり領域内に入った場合、当該領域に入る前の位置に基づいて操作者を一意に特定する。
ところで２次元でのジェスチャ個別認識方法では、重なり領域内に２つ以上のジェスチャ操作部位が入った場合、図２８(ａ)に示すように、カメラから見て操作部位（手Ａ、Ｂ参照）が重なることがある。このため、複数のジェスチャ操作部位を個別に判断できなくなる可能性が生じる。そこで、本実施形態では、複数のジェスチャ操作部位が存在する場合、個々のジェスチャ操作部位が一定距離以上に離れている場合（図２８(ｂ)の距離Ｄ参照）には、各ジェスチャ操作を有効とする。また、ジェスチャ操作部位同士の距離が、一定距離以内に近づいた場合には、各ジェスチャ操作は無効と判断され、装置は操作者に警告を発する。複数のジェスチャ操作部位が重なり領域内に入ってしまったとしても、カメラから見て両者間の距離が一定距離以上に亘って離隔していればジェスチャ操作が有効と判断される。以下、第３実施形態に同様の構成部や処理に関しては、第３実施形態の場合と同じ符号や記号等を用いることで、それらの詳細な説明を省略する。
【００５６】
図２９は、ジェスチャ認識部８００の構成例を示す機能ブロック図である。以下、図２５と相違する構成部（符号１６０２、１６０４乃至１６０６参照）を説明する。
ジェスチャ判断部１６０２は、検出した全てのジェスチャ操作部位（本例では手）の情報を取得して管理し、それぞれの手によるジェスチャ操作の有効又は無効を判断する。ジェスチャ操作部位の管理には、表６に示すテーブル（以下、手情報管理テーブルという）を使用する。
【表６】
2011243031.tif 000009
表６は、ジェスチャ操作部位を識別するID情報と位置情報、画像情報、ユーザID、ジェスチャの有効性を示す情報を含む。手情報管理テーブルは、操作者特定部１６０４が実行する操作者特定処理で使用されるため、現フレーム映像に対するテーブルデータだけではなく、前フレーム映像におけるテーブルデータも保持している。
【００５７】
操作者特定部１６０４は、ジェスチャ判断部１６０２から前フレームにおける手情報管理テーブル、及び現フレームにおける手情報管理テーブルからデータを取得する。操作者特定部１６０４は、後述の第１特定部１６０５及び第２特定部１６０６と協働して、検出したジェスチャ操作部位がどの操作者の手であるか、つまりそのユーザIDを特定する。処理の詳細は後述する。
第１特定部１６０５は、操作者特定部１６０４から手位置情報を受信し、空間領域決定部２２００が保持する顔情報管理テーブルのデータを用いて、検出した手をもつ操作者、つまりそのユーザIDを特定する。ユーザIDが特定された場合、第１特定部１６０５は操作者特定部１６０４に、「特定できた」旨とそのユーザIDを返信する。ユーザIDが特定できなかった場合には、「特定できなかった」旨が操作者特定部１６０４に返信される。本処理の詳細は後述する。
第２特定部１６０６は、操作者特定部１６０４からの、対象となる手画像と手位置情報、および前フレーム画像に係る手情報管理テーブルからデータを取得する。第２特定部１６０６は、前フレームの手の位置とその手のユーザIDから操作者を特定する。すなわち、手が重なり領域に入っていた場合でも、重なり領域に入る前に操作者のユーザIDを特定できていれば、その手がどの操作者の手であるかを特定可能である。操作者が特定できた場合、第２特定部１６０６は操作者特定部１６０４に対し、「操作者を特定できた」旨及び特定したユーザIDを返信する。操作者が特定できなかった場合、その旨が操作者特定部１６０４に返信される。
【００５８】
次に、可動範囲に基づく操作者特定処理を説明する。本処理における操作者特定方法では、ある手の位置について、全操作者の可動範囲に属するか否かの包含判定を行う。その結果、手の位置が１人の操作者のみの可動範囲に属する場合、その手は該操作者の手であると特定される。また手の位置が、如何なる操作者の可動範囲にも属さない場合、または複数の可動範囲に属する場合には、その手がどの操作者の手であるかが特定できなかったと判断される。
【００５９】
以下、図３０のフローチャートを用いて、第１特定部１６０５の処理を説明する。本処理は、第１特定部１６０５が操作者特定部１６０４から手位置情報とともに、操作者特定の依頼を受け取った時点から開始する。図２６と相違するＳ２４０９乃至２４１３の処理を以下に説明する。
Ｓ２２０７の後、Ｓ２４０９に進み、第１特定部１６０５は、対象となる手を包含する可動範囲に対応する操作者のユーザIDを保持する。そして、Ｓ２２０３に戻る。
Ｓ２２０８にて第１特定部１６０５は、カウント変数cntの値をチェックする。cnt値が１の場合、すなわち、手の位置が１人の操作者の可動範囲のみに属する場合、第１特定部１６０５は「操作者を特定できた」と判断する（Ｓ２４１０）。そしてＳ２４１１にて第１特定部１６０５は、「操作者を特定できた」旨のデータを、前記Ｓ２４０９で保存したユーザIDとともに、操作者特定部１６０４に返信する。一方、cnt値が１でない場合、すなわち、手の位置がどの操作者の可動範囲にも属さないか、または、複数の操作者の可動範囲に属する場合、第１特定部１６０５は「操作者を特定できなかった」と判断する（Ｓ２４１２）。そしてＳ２４１３で第１特定部１６０５は、「操作者を特定できなかった」旨のデータを操作者特定部１６０４に返信する。
【００６０】
次に、図３１のフローチャートを用いて、操作者特定部１６０４の処理例を説明する。本処理は、操作者特定部１６０４がジェスチャ判断部１６０２から、現フレーム画像における手情報管理テーブルと、前フレーム画像における手情報管理テーブルの各データを受け取った時点から開始する。
Ｓ２９０１にて操作者特定部１６０４は、手情報管理テーブルに格納された１つの手に関する情報（手画像、および手位置情報）を取得する。Ｓ２９０２で操作者特定部１６０４は、第１特定部１６０５に対し、取得した手位置情報を送信し、その手の操作者特定処理を依頼する（図３０参照）。すると、第１特定部１６０５は、可動範囲に基づく操作者特定処理を実行し、結果を操作者特定部１６０４に返す。Ｓ２９０３で操作者特定部１６０４は、第１特定部１６０４から操作者特定結果を取得してその内容を判定する。判定結果が「操作者を特定できた」の場合、Ｓ２９０４に進み、判定結果が「操作者を特定できなかった」の場合、Ｓ２９０５に進む。
Ｓ２９０４で操作者特定部１６０４は、特定対象である手の「操作者を特定できた」と判断し、特定したユーザIDを手情報管理テーブルに保存する。前記表６の例では、ユーザ情報欄にユーザIDが記入される。そしてＳ２９０８に進む。またＳ２９０５にて操作者特定部１６０４は、第２特定部１６０６に対し、前記Ｓ２９０１で取得した手情報と前フレーム画像における手情報管理テーブルのデータを送信し、その手がどの操作者の手であるかの特定処理を依頼する。第２特定部１６０６は、重なり領域に進入した時点よりも前のフレームでの手の情報に基づき、重なり領域内に進入した手がどの操作者の手であるかを特定する。操作者が特定された場合、その結果（特定されたユーザID）が操作者特定部１６０４に通知され、操作者が特定されなかった場合、その旨が操作者特定部１６０４に通知される。Ｓ２９０６で操作者特定部１６０４は、第２特定部１６０６から結果を取得して内容を判定する。判定結果が「操作者を特定できた」の場合、Ｓ２９０４に進み、判定結果が「操作者を特定できなかった」の場合、Ｓ２９０７に進む。
Ｓ２９０７で操作者特定部１６０４は、その手をもつ操作者を特定できなかったと判断し、その旨のデータを手情報管理テーブルに保存する（前記表６のユーザ情報欄「×」参照）。Ｓ２９０４又はＳ２９０７の後、Ｓ２９０８に進み、操作者特定部１６０４は、全ての手に対して操作者の特定処理を行ったか否かを判断する。全ての手について操作者特定処理が完了した場合、Ｓ２９０９に進み、完了していない場合、Ｓ２９０１に戻って、残りの手について処理を続行する。
Ｓ２９０９で操作者特定部１６０４は、ジェスチャ判断部１６０２に対し、結果を記入した手情報管理テーブルのデータを送信し、処理を終了する。
【００６１】
次に図３２のフローチャートを用いて、ジェスチャ判断部１６０２の処理例を説明する。本処理は、ジェスチャ判断部１６０２が手抽出部９０１から、検出した全ての手画像と手位置情報を受け取った時点から開始する。
Ｓ３００１でジェスチャ判断部１６０２は、現時点のカメラ映像における手情報管理テーブルを新たに作成し、手抽出部９０１から受け取った手画像のデータと、手位置情報を格納する。Ｓ３００２でジェスチャ判断部１６０２は、操作者特定部１６０４に対し、現フレーム画像及び前フレーム画像に係る手情報管理テーブルの各データを送信し、現フレーム画像で検出した手について、ユーザIDの特定処理を依頼する。操作者特定部１６０４は前述した操作者特定処理を実行し、結果を記入した手情報管理テーブルのデータを、ジェスチャ判断部１６０２に返信する。前記表６の例に示すユーザ情報欄には、操作者が特定された場合、そのユーザIDが記入され、操作者が特定できなかった場合、「×」が記入される。
Ｓ３００３でジェスチャ判断部１６０２は、現フレーム画像における手情報管理テーブルから、ある１つの手（以下、「手(A)」と記す）に関する情報を取得する。該情報は手位置情報、ユーザ情報等を含む。Ｓ３００４でジェスチャ判断部１６０２は、手(A)のユーザ情報に基づき、手(A)について操作者が特定できたか否かを判断する。手(A)の操作者が特定できた場合、すなわち手情報管理テーブルのユーザ情報欄に該当するユーザIDが格納されていた場合、Ｓ３００６に進む。手(A)の操作者が特定できなかった場合、すなわちユーザ情報欄に「×」のデータが格納されていた場合、Ｓ３００５に進む。
Ｓ３００５でジェスチャ判断部１６０２は、操作者の特定ができなかった手の操作を「無効」と判断し、その旨のデータを手情報管理テーブルに保存する。前記表６の例では、ジェスチャ有効/無効情報欄に「無効」が記入される。
【００６２】
Ｓ３００６に進んだ場合、ジェスチャ判断部１６０２は、現フレーム画像における手情報管理テーブルから、手(A)以外の手（以下、「手(B)」と記す）の手位置情報を取得する。Ｓ３００７でジェスチャ判断部１６０２は、手(A)と手(B)の位置情報に基づき、２つの手の間の距離を算出する。ここで、手(A)と手(B)との距離は、それぞれの手画像の矩形領域における中心点間の平面距離であり、これを「Dab」と記す。Ｓ３００８でジェスチャ判断部１６０２は、算出した距離Dabを用いて、手(A)と手(B)の位置が一定距離（以下、距離判定の閾値を「Dn」と記す）以上離れているか否かを判定する。ここで、閾値Dnは、次にフレーム画像が撮影される時刻において、手(A)と手(B)が接近する方向に移動した時に丁度重なってしまう距離よりも、少し長い距離に設定する。その理由は、次のフレームにおいて、両者の手が重なることによる誤認識を早期に発見できるようにするためである。ここで、１フレームの時間内に手が動く距離を「D」とすると、これは、手とカメラとの距離d_gに依存する。このため、予め距離d_gごとにD値を測定しておくことで、そのデータは保持されているものとする。この値より、手(A)および手(B)が１フレームの時間内に動く平面距離（pixel数）が求まれば、Dn値が決定可能である。つまり、「Dn > （手(A)が１フレームの時間内に動く平面距離）＋（手(B)が１フレームの時間内に動く平面距離）」を満たすように、Dn値が規定される。
【００６３】
比較の結果、上記で算出した手(A)と手(B)との距離が閾値以上（Dab≧Dn）離れている場合、すなわち次フレームにおいて、手(A)が手(B)と重なることはないと判断された場合、Ｓ３００９に進む。また、上記で算出した手(A)と手(B)との距離が閾値未満（Dab<Dn）であった場合、すなわち次フレームにおいて、手(A)が手(B)と重なる可能性があると判断された場合、Ｓ３０１０に進む。
Ｓ３００９でジェスチャ判断部１６０２は、手(A)のジェスチャ操作を「有効」と判断し、その情報を保存する。前記表６の手情報管理テーブルにおいては、ジェスチャ有効／無効情報欄が「有効」とされる。
Ｓ３０１０でジェスチャ判断部１６０２は、手(A)と手(B)のユーザ情報を取得し、それらの手が同一の操作者の手かどうか、つまり、ユーザIDが同一かどうかを判断する。手(A)と手(B)が同一操作者の手であった場合、両方の手で行うジェスチャの可能性があるため、手(A)のジェスチャ操作が「有効」と判断される（Ｓ３００９）。一方、手(A)と手(B)が同一操作者の手ではない場合、次フレームにおいて、手(A)が他の操作者の手(B)が重なることによる誤操作が起こる可能性がある。そこでジェスチャ判断部１６０２は、手(A)のジェスチャ操作を「無効」と判断し、その情報を保存する（Ｓ３０１１）。前記表６の例では、ジェスチャ有効／無効情報欄に「無効」が記入される。
【００６４】
Ｓ３００９、Ｓ３０１１の後、Ｓ３０１２でジェスチャ判断部１６０２は、手(A)と、手情報管理テーブルに登録された他の全ての手(B)に対して、相互の距離の比較処理を完了したか否かを判定する。手(A)以外の全ての手について、手(A)との距離を比較する処理が完了した場合、Ｓ３０１３に進み、該処理が完了していない場合、Ｓ３００６に戻る。Ｓ３０１３でジェスチャ判断部１６０２は、手情報管理テーブルに登録された全ての手に対して、ジェスチャ操作の有効性に関する判断が終了したか否かを確認する。全て手について判断処理が終了した場合、Ｓ３０１４に進み、該判断処理が未終了の場合にはＳ３００３に戻る。
Ｓ３０１４でジェスチャ判断部１６０２は手情報管理テーブルから、ジェスチャ操作が「有効」と判断された手についての情報を抽出する。Ｓ３０１５でジェスチャ判断部１６０２は、抽出した手画像、および手位置情報をジェスチャコマンド変換部９０３に送信し、ジェスチャ操作に対応する動作指示の命令に変換する。Ｓ３０１６でジェスチャ判断部１６０２は、変換した動作指示の命令を制御部１０００に送信する。こうして、操作者がその手で行ったジェスチャ操作に従って、装置では該操作に対応する動作が行われることとなる。一方、ジェスチャ操作が「無効」と判断された手に関して、そのジェスチャ操作が装置の動作に反映されることはない。なお、その場合には操作者に対し、無効になった旨やその理由等の通知が表示又は音声で行われる。
【００６５】
第４実施形態では、ジェスチャ操作部位の位置が可動範囲の重なり領域に属する場合でも、当該部位の位置のトレース処理により、操作者の特定が可能となる。更に、複数のジェスチャ操作部位が重なることによって起こり得る誤動作については、重なり領域に属する全ての部位同士の距離を監視することにより、未然防止が可能である。
【符号の説明】
【００６６】
６００，１２００，２２００  空間領域決定部
７００，１５００  空間領域割当部
８００  ジェスチャ認識部
９０２，１６０２  ジェスチャ判断部
１１００  ユーザインターフェース描画部
１４００  操作状態監視部
【図１】
2011243031.tif 000010
【図２】
2011243031.tif 000011
【図３】
2011243031.tif 000012
【図４】
2011243031.tif 000013
【図５】
2011243031.tif 000014
【図６】
2011243031.tif 000015
【図７】
2011243031.tif 000016
【図８】
2011243031.tif 000017
【図９】
2011243031.tif 000018
【図１０】
2011243031.tif 000019
【図１１】
2011243031.tif 000020
【図１２】
2011243031.tif 000021
【図１３】
2011243031.tif 000022
【図１４】
2011243031.tif 000023
【図１５】
2011243031.tif 000024
【図１６】
2011243031.tif 000025
【図１７】
2011243031.tif 000026
【図１８】
2011243031.tif 000027
【図１９】
2011243031.tif 000028
【図２０】
2011243031.tif 000029
【図２１】
2011243031.tif 000030
【図２２】
2011243031.tif 000031
【図２３】
2011243031.tif 000032
【図２４】
2011243031.tif 000033
【図２５】
2011243031.tif 000034
【図２６】
2011243031.tif 000035
【図２７】
2011243031.tif 000036
【図２８】
2011243031.tif 000037
【図２９】
2011243031.tif 000038
【図３０】
2011243031.tif 000039
【図３１】
2011243031.tif 000040
【図３２】
2011243031.tif 000041