JP2011243031A - ジェスチャ認識装置及びジェスチャ認識方法 - Google Patents
ジェスチャ認識装置及びジェスチャ認識方法 Download PDFInfo
- Publication number
- JP2011243031A JP2011243031A JP2010115189A JP2010115189A JP2011243031A JP 2011243031 A JP2011243031 A JP 2011243031A JP 2010115189 A JP2010115189 A JP 2010115189A JP 2010115189 A JP2010115189 A JP 2010115189A JP 2011243031 A JP2011243031 A JP 2011243031A
- Authority
- JP
- Japan
- Prior art keywords
- operator
- gesture
- unit
- hand
- movable range
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- User Interface Of Digital Computer (AREA)
- Image Analysis (AREA)
Abstract
【課題】複数の操作者が同一の機器をジェスチャで操作する際、各操作者の可動範囲に重なり合いが生じた場合でも、その場所を変えずに操作者がジェスチャ操作を続行できるようにすること。
【解決手段】ジェスチャ認識装置は、複数の操作者のジェスチャ操作部位を認識するジェスチャ認識部800を備える。空間領域決定部600は操作者ごとのジェスチャ操作部位に係る可動範囲を算出する。空間領域割り当て部700は、各操作者の可動範囲の間で重なり合いが生じるか否かを判定する。重なり合いが生じると判定された場合、重なり合う範囲を各可動範囲から除外した範囲が、操作者にそれぞれ設定する領域割当処理が行われる。
【選択図】 図1
【解決手段】ジェスチャ認識装置は、複数の操作者のジェスチャ操作部位を認識するジェスチャ認識部800を備える。空間領域決定部600は操作者ごとのジェスチャ操作部位に係る可動範囲を算出する。空間領域割り当て部700は、各操作者の可動範囲の間で重なり合いが生じるか否かを判定する。重なり合いが生じると判定された場合、重なり合う範囲を各可動範囲から除外した範囲が、操作者にそれぞれ設定する領域割当処理が行われる。
【選択図】 図1
Description
本発明は、複数の操作者が共通の機器を操作する際、操作者ごとの操作指示を個別に認識可能なジェスチャ認識装置及び方法に関するものである。
カメラやセンサを用いて操作者のジェスチャ(身振りや手振り)を検知し、テレビジョン装置や録画機器等を制御するジェスチャユーザインターフェース(以下、ユーザインターフェースを「UI」と略記する)が普及しつつある。このジェスチャUIは、従来の機器操作に使用されていたリモートコントローラが不要となるだけでなく、より直感的な操作を可能にするものであり、将来の機器操作方法として着目されている。一方、テレビジョン装置や録画機器等の映像機器は、家族や友人等、複数人で視聴する機会の多い機器であるため、複数人で同一機器を操作できることが望ましい。
複数の操作者が同一機器に対して行うジェスチャ操作を、操作者ごとに個別認識する方法(以下、ジェスチャ個別認識方法と称する)として、特許文献1に開示の技術が知られている。このジェスチャ認識装置はカメラ映像から各操作者の顔位置を抽出し、顔位置を基点として各操作者に対するジェスチャ操作の有効空間領域(以下、可動範囲という)を規定する。またジェスチャ認識装置は、カメラ映像から画像抽出したジェスチャ操作部位(例えば手)の位置が、規定した複数の可動範囲のうち、どの操作者のジェスチャ操作空間に属するかを判別し、該操作部位でジェスチャを行った操作者を決定する。
ジェスチャ個別認識方法では、操作者同士の距離が近い場合、それぞれの可動範囲に重なり合いが生じ得る。その重なり領域で行われたジェスチャが、誰の操作なのかを正しく判断できないと、誤操作を引き起こすという問題があった。この問題を解決する方法として、特許文献1では、複数のジェスチャ操作空間に重なり合いが生じる場合、各操作者に対して互いに離れるよう警告を出す方法を提案している。
複数の操作者が同一機器に対して行うジェスチャ操作を、操作者ごとに個別認識する方法(以下、ジェスチャ個別認識方法と称する)として、特許文献1に開示の技術が知られている。このジェスチャ認識装置はカメラ映像から各操作者の顔位置を抽出し、顔位置を基点として各操作者に対するジェスチャ操作の有効空間領域(以下、可動範囲という)を規定する。またジェスチャ認識装置は、カメラ映像から画像抽出したジェスチャ操作部位(例えば手)の位置が、規定した複数の可動範囲のうち、どの操作者のジェスチャ操作空間に属するかを判別し、該操作部位でジェスチャを行った操作者を決定する。
ジェスチャ個別認識方法では、操作者同士の距離が近い場合、それぞれの可動範囲に重なり合いが生じ得る。その重なり領域で行われたジェスチャが、誰の操作なのかを正しく判断できないと、誤操作を引き起こすという問題があった。この問題を解決する方法として、特許文献1では、複数のジェスチャ操作空間に重なり合いが生じる場合、各操作者に対して互いに離れるよう警告を出す方法を提案している。
複数の操作者が同一機器に対してジェスチャ操作で指示する場合、可動範囲に重なり合いが生じたときに警告を発し、可動範囲に重なり合いが生じない位置への移動を操作者に促すだけでは充分でない。操作者はその度に別の場所に移動しなければならず、煩わしい。例えば、互いの可動範囲内には重ならない範囲が存在し、当該範囲では各人の操作が可能であるにも関わらず、操作者はその位置から移動しなければならない。また各操作者の可動範囲内であって、かつ重なっていない範囲でのジェスチャ操作の場合、誤認識の問題は起きなくても警告が出るため、操作者は煩わしく感じる。
そこで本発明は、各操作者の可動範囲に重なり合いが生じた場合でも、その場所で操作者がジェスチャ操作を続行できるようにすることで、利便性を高めることを目的とする。
そこで本発明は、各操作者の可動範囲に重なり合いが生じた場合でも、その場所で操作者がジェスチャ操作を続行できるようにすることで、利便性を高めることを目的とする。
上記課題を解決するために本発明に係る装置は、ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在すると判定した場合、重なり合う範囲を前記可動範囲から除外した範囲を、重なる領域が存在する可動範囲に対応する操作者のジェスチャ認識範囲としてそれぞれ設定する領域割当手段と、前記操作者を撮影した画像データと、前記領域割当手段によって割り当てられた各操作者のジェスチャ認識範囲に基づいて、前記ジェスチャ認識範囲に対応する操作者のジェスチャ操作部位に応じた操作指示を検知し、当該検知したジェスチャに対応する動作指示の命令を発行するジェスチャ認識手段を備える。
本発明によれば、各操作者の可動範囲に重なり合いが生じた場合でも、その場所を移動することなく操作者は操作を続行できる。
以下、本発明に係る各実施形態を説明する。
[第1実施形態]
第1実施形態では、操作者間の位置関係及びジェスチャ操作部位の可動範囲に基づいて空間領域を割り当て、割当後のジェスチャ認識範囲内で行われたジェスチャ操作部位による操作指示を検知して操作制御を行う装置について説明する。図1は一実施形態に係るジェスチャ認識装置の全体構成例を示す機能ブロック図である。
第1実施形態では、操作者間の位置関係及びジェスチャ操作部位の可動範囲に基づいて空間領域を割り当て、割当後のジェスチャ認識範囲内で行われたジェスチャ操作部位による操作指示を検知して操作制御を行う装置について説明する。図1は一実施形態に係るジェスチャ認識装置の全体構成例を示す機能ブロック図である。
チューナ部100は、MPEG2トランスポート・ストリーム(Transport Stream:TS)方式で多重化された番組データを放送波130より受信し、映像、音声、データに分離する。MPEG2は"Moving Picture Experts Group2"(カラー動画像符号化方式標準化グループの第2規格)の略号である。またデータとは、データ放送用データ、字幕、PSI/SI(Program Specific Information/Service Information)である。"PSI/SI"は、任意のチャンネルや番組を選定するための情報であり、チャンネル番号や番組タイトル等を含む。チューナ部100が分離した映像と音声は、MPEG2方式で圧縮符号化されているため、デコード部200にて復号して各信号をモニタ133やスピーカ(不図示)に出力する。デコード部200は、チューナ部100からの映像信号と音声信号をそれぞれ復号し、復号映像データを合成部300へ渡し、復号音声データをスピーカ(不図示)に出力する。合成部300は、UI描画部1100が生成したデータを受けとり、アイコンや画面の画像データをデコード部200からの復号映像データに重畳し、合成後の映像信号をモニタ133へ出力する。
カメラ入力制御部400は、カメラ131から受信した画像データをジェスチャ認識部800及び空間領域決定部600へ渡す。距離センサ入力制御部500は、距離センサ132から受信した距離情報をジェスチャ認識部800及び空間領域決定部600へ渡す。空間領域決定部600は、カメラ入力制御部400からのカメラ画像データ及び距離センサ入力制御部500からの距離情報に基づいて、操作者ごとのジェスチャ操作部位に係る可動範囲を算出する。ジェスチャ操作部位は操作者が装置に対して操作指示を行う際の部位、例えば手や指等である。空間領域決定部600は、算出した可動範囲を示す可動範囲情報とともに空間領域割当要求を空間領域割当部700に出す。空間領域決定部600の詳細は後述する。
カメラ入力制御部400は、カメラ131から受信した画像データをジェスチャ認識部800及び空間領域決定部600へ渡す。距離センサ入力制御部500は、距離センサ132から受信した距離情報をジェスチャ認識部800及び空間領域決定部600へ渡す。空間領域決定部600は、カメラ入力制御部400からのカメラ画像データ及び距離センサ入力制御部500からの距離情報に基づいて、操作者ごとのジェスチャ操作部位に係る可動範囲を算出する。ジェスチャ操作部位は操作者が装置に対して操作指示を行う際の部位、例えば手や指等である。空間領域決定部600は、算出した可動範囲を示す可動範囲情報とともに空間領域割当要求を空間領域割当部700に出す。空間領域決定部600の詳細は後述する。
空間領域割当部700は、空間領域決定部600からの可動範囲情報と空間領域割当要求を受けて、操作者同士の可動範囲について重なり合いの有無や重なり合う範囲を判定する。各可動範囲の間で重なり合いが生じる場合、空間領域割当部700は、可動範囲の重なり合いが生じない空間領域(以下、非重複空間領域という)を、操作可能な空間領域として各操作者に割り当てる。また空間領域割当部700は、割当結果を反映させた空間領域の割当情報を保持している。空間領域割当部700は、割当が変更された旨又は変更後に操作者が操作可能な範囲を操作者に通知するため、空間領域の割当変更通知をUI描画部1100に指示する。空間領域割当部700が保持している空間領域の割当情報は、後述の空間領域判定部900が参照する。空間領域割当部700の詳細は後述する。
ジェスチャ認識部800は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報に基づいて、ジェスチャ位置情報と動作指示を特定する。ジェスチャ位置情報はジェスチャ操作部位の位置情報を含む。ジェスチャ認識部800は、空間領域判定部900に対し、空間領域判定要求とジェスチャ位置情報を渡す。ジェスチャ認識部800は、空間領域判定部900の判定結果に基づき、ジェスチャ認識結果である動作指示を制御部1000へ渡す。ここで、動作指示とは、例えば選局や番組表の表示等に関する指示であり、操作画面を伴うこともある。ジェスチャ認識部800の詳細は後述する。
空間領域判定部900は、ジェスチャ認識部800より受け取ったジェスチャ位置情報と空間領域割当部700が保持する空間領域の割当情報に基づき、検出されたジェスチャ位置が操作可能な空間領域内である否かを判定する。空間領域判定部900は、ジェスチャ認識部800へ判定結果を渡す。空間領域判定部900の詳細は後述する。
制御部1000は、ジェスチャ認識部800からの動作指示を受け取り、動作指示に従ってチューナ部100やUI描画部1100を制御する。例えばジェスチャ認識部800からの動作指示が選局の場合、制御部1000はチューナ部100に選局指示を出すとともに、選局先のチャンネル情報画面の描画指示をUI描画部1100に出す。またジェスチャ認識部800からの動作指示が番組表の表示の場合、制御部1000は、番組表画面の描画指示をUI描画部1100に出す。UI描画部1100は、制御部1000からの描画指示に対応したアイコンや画面のデータを生成して合成部300へ渡すことで、制御部1000とともに操作者への通知制御を行う。またUI描画部1100は、空間領域割当部700から空間割当の変更通知を受け取り、空間割当の変更を操作者に通知する画面データを生成し、合成部300へ渡す。合成部300は映像信号をモニタ133に出力する。空間割当の変更通知に係る画面の詳細は後述する。
ジェスチャ認識部800は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報に基づいて、ジェスチャ位置情報と動作指示を特定する。ジェスチャ位置情報はジェスチャ操作部位の位置情報を含む。ジェスチャ認識部800は、空間領域判定部900に対し、空間領域判定要求とジェスチャ位置情報を渡す。ジェスチャ認識部800は、空間領域判定部900の判定結果に基づき、ジェスチャ認識結果である動作指示を制御部1000へ渡す。ここで、動作指示とは、例えば選局や番組表の表示等に関する指示であり、操作画面を伴うこともある。ジェスチャ認識部800の詳細は後述する。
空間領域判定部900は、ジェスチャ認識部800より受け取ったジェスチャ位置情報と空間領域割当部700が保持する空間領域の割当情報に基づき、検出されたジェスチャ位置が操作可能な空間領域内である否かを判定する。空間領域判定部900は、ジェスチャ認識部800へ判定結果を渡す。空間領域判定部900の詳細は後述する。
制御部1000は、ジェスチャ認識部800からの動作指示を受け取り、動作指示に従ってチューナ部100やUI描画部1100を制御する。例えばジェスチャ認識部800からの動作指示が選局の場合、制御部1000はチューナ部100に選局指示を出すとともに、選局先のチャンネル情報画面の描画指示をUI描画部1100に出す。またジェスチャ認識部800からの動作指示が番組表の表示の場合、制御部1000は、番組表画面の描画指示をUI描画部1100に出す。UI描画部1100は、制御部1000からの描画指示に対応したアイコンや画面のデータを生成して合成部300へ渡すことで、制御部1000とともに操作者への通知制御を行う。またUI描画部1100は、空間領域割当部700から空間割当の変更通知を受け取り、空間割当の変更を操作者に通知する画面データを生成し、合成部300へ渡す。合成部300は映像信号をモニタ133に出力する。空間割当の変更通知に係る画面の詳細は後述する。
次に、図2の機能ブロック図を用いて、空間領域決定部600の構成例を説明する。
顔抽出部610は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報に基づいて被写体の顔画像を抽出し、抽出した顔ごとに顔位置情報を検出する。顔位置情報は、撮影画像内で顔画像が位置する座標情報、顔領域の大きさを示す幅と高さの情報、モニタ133との距離を示す距離情報を含む。位置座標系については、例えばカメラ映像の左上の点を原点(x=0, y=0)とし、左右方向にx軸、上下方向にy軸、前後方向にz軸を設定した3次元直交座標系とされ、x−y平面内では画素(pixel)単位で位置計算が行われる。顔位置情報の詳細は後述する。顔抽出部610は、検出した顔位置情報を位置情報管理部620へ渡す。
位置情報管理部620は、顔抽出部610より顔位置情報を受け取り、前回検出した顔位置情報と比較し、顔位置情報に変化があったか否かを判定する。位置情報管理部620は、顔位置情報に変化があった場合、可動範囲算出部630へ可動範囲算出要求を出す。また位置情報管理部620は、可動範囲算出部630から可動範囲の算出結果を受け取り、空間領域割当部700へ可動範囲情報とともに空間領域割当要求を出す。
可動範囲算出部630は、位置情報管理部620から可動範囲算出要求を受け取り、可動範囲算出情報のテーブル保持部640が保持する可動範囲算出情報を用いて、各操作者の可動範囲を算出する。可動範囲算出情報の詳細については後述する。また可動範囲算出部630は、位置情報管理部620へ可動範囲の算出結果を渡す。
なお、図1や図2の括弧内に示す符号については後述の実施形態にて説明する。
顔抽出部610は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報に基づいて被写体の顔画像を抽出し、抽出した顔ごとに顔位置情報を検出する。顔位置情報は、撮影画像内で顔画像が位置する座標情報、顔領域の大きさを示す幅と高さの情報、モニタ133との距離を示す距離情報を含む。位置座標系については、例えばカメラ映像の左上の点を原点(x=0, y=0)とし、左右方向にx軸、上下方向にy軸、前後方向にz軸を設定した3次元直交座標系とされ、x−y平面内では画素(pixel)単位で位置計算が行われる。顔位置情報の詳細は後述する。顔抽出部610は、検出した顔位置情報を位置情報管理部620へ渡す。
位置情報管理部620は、顔抽出部610より顔位置情報を受け取り、前回検出した顔位置情報と比較し、顔位置情報に変化があったか否かを判定する。位置情報管理部620は、顔位置情報に変化があった場合、可動範囲算出部630へ可動範囲算出要求を出す。また位置情報管理部620は、可動範囲算出部630から可動範囲の算出結果を受け取り、空間領域割当部700へ可動範囲情報とともに空間領域割当要求を出す。
可動範囲算出部630は、位置情報管理部620から可動範囲算出要求を受け取り、可動範囲算出情報のテーブル保持部640が保持する可動範囲算出情報を用いて、各操作者の可動範囲を算出する。可動範囲算出情報の詳細については後述する。また可動範囲算出部630は、位置情報管理部620へ可動範囲の算出結果を渡す。
なお、図1や図2の括弧内に示す符号については後述の実施形態にて説明する。
次に、図3のフローチャートを用いて、空間領域決定部600の処理例を説明する。なお本処理及び以下に説明する処理は、制御部1000が実行するプログラムに従って実現される。
顔抽出部610は、カメラ入力制御部400よりカメラ画像データを受け取り(S601)、顔位置検出を行う(S602)。顔位置検出処理(S602)の詳細については後述する。顔抽出部610は、検出した顔位置情報を位置情報管理部620へ渡す。
位置情報管理部620は、顔抽出部610より受け取った顔位置情報と、前回検出した顔位置情報を比較する(S603)。ここで比較する内容は、操作者の検出人数に増減があったか否か、及び検出した顔位置情報が変化したか否かである。位置情報管理部620は、顔位置情報に変化がないと判断した場合(S604のno)、処理を終了する。位置情報管理部620は、顔位置情報に変化があると判断した場合(S604のyes)、可動範囲算出部630に可動範囲算出要求を出す。
可動範囲算出部630は、位置情報管理部620より可動範囲算出要求を受け取り、処理を開始する。可動範囲算出部630は検出した人数を特定し、検出人数を「Nh」とする(S605)。「Nh>0」の場合(S606のyes)、可動範囲算出部630は可動範囲を算出する(S607)。可動範囲の算出処理の詳細については後述する。可動範囲算出部630は、可動範囲の算出結果をメモリに記憶する(S608)。S608の詳細については、後述する。可動範囲算出部630は、デクリメント処理によってNh値を1だけ減らし(S609)、S606へ戻る。可動範囲算出部630は、「Nh=0」の場合(S606のno)、空間領域割当部700へ可動範囲情報を通知し(S610)、空間割当要求を出す(S611)。可動範囲算出部630は、検出した人数分全ての可動範囲を算出するまで、S606乃至609の処理を繰り返す。
顔抽出部610は、カメラ入力制御部400よりカメラ画像データを受け取り(S601)、顔位置検出を行う(S602)。顔位置検出処理(S602)の詳細については後述する。顔抽出部610は、検出した顔位置情報を位置情報管理部620へ渡す。
位置情報管理部620は、顔抽出部610より受け取った顔位置情報と、前回検出した顔位置情報を比較する(S603)。ここで比較する内容は、操作者の検出人数に増減があったか否か、及び検出した顔位置情報が変化したか否かである。位置情報管理部620は、顔位置情報に変化がないと判断した場合(S604のno)、処理を終了する。位置情報管理部620は、顔位置情報に変化があると判断した場合(S604のyes)、可動範囲算出部630に可動範囲算出要求を出す。
可動範囲算出部630は、位置情報管理部620より可動範囲算出要求を受け取り、処理を開始する。可動範囲算出部630は検出した人数を特定し、検出人数を「Nh」とする(S605)。「Nh>0」の場合(S606のyes)、可動範囲算出部630は可動範囲を算出する(S607)。可動範囲の算出処理の詳細については後述する。可動範囲算出部630は、可動範囲の算出結果をメモリに記憶する(S608)。S608の詳細については、後述する。可動範囲算出部630は、デクリメント処理によってNh値を1だけ減らし(S609)、S606へ戻る。可動範囲算出部630は、「Nh=0」の場合(S606のno)、空間領域割当部700へ可動範囲情報を通知し(S610)、空間割当要求を出す(S611)。可動範囲算出部630は、検出した人数分全ての可動範囲を算出するまで、S606乃至609の処理を繰り返す。
次に、図4のフローチャートを用いて、前記S602(顔位置検出処理)の一例を説明する。顔抽出部610はカメラ入力制御部400よりカメラ画像データを受け取って検出処理を開始する。
顔抽出部610は、カメラ入力制御部400からのカメラ画像データを解析し、肌色検出を行う(S6021)。肌色が検出されない場合(S6022のno)、処理は終了する。肌色が検出された場合(S6022のyes)、顔抽出部610は、肌色部分の輪郭形状を検出し(S6023)、顔形状と比較する(S6024)。顔抽出部610は輪郭形状と顔形状が一致しないと判断した場合(S6025のno)、処理を終了する。顔抽出部610は輪郭形状と顔形状が一致すると判断した場合(S6025のyes)、肌色部分の輪郭形状が内接する矩形を算出する(S6026)。顔抽出部610は矩形の座標情報を特定し、顔座標(x_h,y_h,w_h,h_h)を求める(S6027)。図6(a)に示すように、矩形をカメラ側から見た場合、「x_h」は左上端のx座標、「y_h」は左上端のy座標を表し、「w_h」は矩形の幅、「h_h」は矩形の高さを表す。顔抽出部610は、距離センサ入力制御部500からの距離情報を用いて顔座標に対応する距離情報を取得し、これを顔距離「d_h」とする(S6028)。このd_hは、距離センサ132から顔までの距離を表す。顔位置情報は座標情報(x_h,y_h,w_h,h_h)とd_hを含み、これらの値は顔抽出した顔ごとに特定される。
顔位置情報の一例を下表に示す。
上表は、顔抽出された顔が2つの場合を示し、顔情報を示す各数字(0,1)によって各操作者の顔が特定される。
顔抽出部610は、カメラ入力制御部400からのカメラ画像データを解析し、肌色検出を行う(S6021)。肌色が検出されない場合(S6022のno)、処理は終了する。肌色が検出された場合(S6022のyes)、顔抽出部610は、肌色部分の輪郭形状を検出し(S6023)、顔形状と比較する(S6024)。顔抽出部610は輪郭形状と顔形状が一致しないと判断した場合(S6025のno)、処理を終了する。顔抽出部610は輪郭形状と顔形状が一致すると判断した場合(S6025のyes)、肌色部分の輪郭形状が内接する矩形を算出する(S6026)。顔抽出部610は矩形の座標情報を特定し、顔座標(x_h,y_h,w_h,h_h)を求める(S6027)。図6(a)に示すように、矩形をカメラ側から見た場合、「x_h」は左上端のx座標、「y_h」は左上端のy座標を表し、「w_h」は矩形の幅、「h_h」は矩形の高さを表す。顔抽出部610は、距離センサ入力制御部500からの距離情報を用いて顔座標に対応する距離情報を取得し、これを顔距離「d_h」とする(S6028)。このd_hは、距離センサ132から顔までの距離を表す。顔位置情報は座標情報(x_h,y_h,w_h,h_h)とd_hを含み、これらの値は顔抽出した顔ごとに特定される。
顔位置情報の一例を下表に示す。
上表は、顔抽出された顔が2つの場合を示し、顔情報を示す各数字(0,1)によって各操作者の顔が特定される。
次に図5のフローチャートを用いて、前記S607の処理例を説明する。本処理では可動範囲算出部630が、位置情報管理部620から可動範囲算出要求を受けて検出人数を特定し、可動範囲を算出する。
可動範囲算出部630は顔の大きさを算出する(S6071)。ここで顔の大きさは、顔位置情報の幅w_hと高さh_hより決定され、例えば「w_h×h_h」である。上表1の例にて顔No=0の顔については、顔の大きさが150である。可動範囲算出部630は、顔距離d_hを用いて、可動範囲算出情報のテーブル保持部640の情報を参照する。可動範囲算出部630は、参照すべき可動範囲算出情報テーブルを特定する(S6072)。
可動範囲算出部630は顔の大きさを算出する(S6071)。ここで顔の大きさは、顔位置情報の幅w_hと高さh_hより決定され、例えば「w_h×h_h」である。上表1の例にて顔No=0の顔については、顔の大きさが150である。可動範囲算出部630は、顔距離d_hを用いて、可動範囲算出情報のテーブル保持部640の情報を参照する。可動範囲算出部630は、参照すべき可動範囲算出情報テーブルを特定する(S6072)。
可動範囲算出情報テーブルの一例を表2に示す。
可動範囲算出情報テーブルは、距離情報と顔の大きさから、可動範囲の算出に必要な可動範囲半径「r」やオフセット値「l,m,n」の情報を特定するための参照テーブルである。例えば表1に示す顔No=0の顔については、距離情報d_h=100であり、参照すべきテーブルとしてd_h=100乃至150の範囲のテーブルが特定される。可動範囲算出部630は、顔の大きさに応じて、前記S6072で特定したテーブル内の情報を特定する(S6073)。表1の例では、顔No=0の顔について、顔の大きさが150であることから、表2中に枠内で囲んで示す部分の情報が参照される。なお、表2に示すr,l,m,n(図6参照)については後述するが、これらの値は所定値としてもよいし、また位置情報の示す値に所定の係数を乗算した値としてもよい。
可動範囲算出情報テーブルは、距離情報と顔の大きさから、可動範囲の算出に必要な可動範囲半径「r」やオフセット値「l,m,n」の情報を特定するための参照テーブルである。例えば表1に示す顔No=0の顔については、距離情報d_h=100であり、参照すべきテーブルとしてd_h=100乃至150の範囲のテーブルが特定される。可動範囲算出部630は、顔の大きさに応じて、前記S6072で特定したテーブル内の情報を特定する(S6073)。表1の例では、顔No=0の顔について、顔の大きさが150であることから、表2中に枠内で囲んで示す部分の情報が参照される。なお、表2に示すr,l,m,n(図6参照)については後述するが、これらの値は所定値としてもよいし、また位置情報の示す値に所定の係数を乗算した値としてもよい。
可動範囲算出部630は、顔の中心点「Oh」の座標(Oh_x,Oh_y,Oh_z)を算出する(S6074)。図6に示すx軸、y軸、z軸の3次元直交座標系において、カメラ側から見て、x方向は左右に延びる横軸の方向、y方向は上下に延びる縦軸の方向、z方向は前後の奥行き方向を表す。Ohに付記した「_x」、「_y」、「_z」は、顔の中心点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は、S6073で特定した可動範囲算出情報から決まり、例えば顔No=0の場合、表2からn=7である。なお距離情報オフセット値nは距離情報d_hの示す値に所定値を乗算した値でもよい。
可動範囲算出部630は、始点「Oa」の座標(Oa_x,Oa_y,Oa_z)を算出する(S6075)。図6に示すように、腕の付け根に設定した始点Oaは、例えばジェスチャ操作部位が手の場合、左肩の位置を示す。Oaに付記した「_x」、「_y」、「_z」は、始点Oaのx座標、y座標、z座標をそれぞれ表す。Oa_xは中心点Ohのx座標Oh_xと幅オフセット値lより決定され、「Oh_x+l」である。幅オフセット値lは、S6073で特定した可動範囲算出情報より決定され、例えば顔No=0の場合、表2からl=15である。幅オフセット値lは幅w_hが示す値に所定値を乗算した値でもよい。Oa_yは中心点Ohのy座標Oh_yと高さオフセット値mより決定され、「Oh_y+m」である。高さオフセット値mは、S6073で特定した可動範囲算出情報より決定され、例えば顔No=0の場合、表2からm=10となる。高さオフセット値mは距離情報d_hが示す値に所定値を乗算した値でもよい。Oa_zは中心点Ohのz座標Oh_zより決定される。
可動範囲算出部630は、始点「Ob」の座標(Ob_x,Ob_y,Ob_z)を算出する(S6076)。始点Obは、例えばジェスチャ操作部位が手の場合、上半身に設定した中心位置を示す(図6参照)。Obに付記した「_x」、「_y」、「_z」は、始点Obのx座標、y座標、z座標をそれぞれ表す。Ob_xは中心点Ohのx座標Oh_xより決定される。Ob_yは中心点Ohのy座標Oh_yと高さオフセット値mより決定され、「Oh_y+m」である。Ob_zは中心点Ohのz座標Oh_zより決定される。
可動範囲算出部630は、始点「Oc」の座標(Oc_x,Oc_y,Oc_z)を算出する(S6077)。腕の付け根に設定した始点Ocは、例えばジェスチャ操作部位が手の場合、右肩の位置を示す(図6参照)。Ocに付記した「_x」、「_y」、「_z」は、始点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より決定される。
可動範囲算出部630は、始点「Oa」の座標(Oa_x,Oa_y,Oa_z)を算出する(S6075)。図6に示すように、腕の付け根に設定した始点Oaは、例えばジェスチャ操作部位が手の場合、左肩の位置を示す。Oaに付記した「_x」、「_y」、「_z」は、始点Oaのx座標、y座標、z座標をそれぞれ表す。Oa_xは中心点Ohのx座標Oh_xと幅オフセット値lより決定され、「Oh_x+l」である。幅オフセット値lは、S6073で特定した可動範囲算出情報より決定され、例えば顔No=0の場合、表2からl=15である。幅オフセット値lは幅w_hが示す値に所定値を乗算した値でもよい。Oa_yは中心点Ohのy座標Oh_yと高さオフセット値mより決定され、「Oh_y+m」である。高さオフセット値mは、S6073で特定した可動範囲算出情報より決定され、例えば顔No=0の場合、表2からm=10となる。高さオフセット値mは距離情報d_hが示す値に所定値を乗算した値でもよい。Oa_zは中心点Ohのz座標Oh_zより決定される。
可動範囲算出部630は、始点「Ob」の座標(Ob_x,Ob_y,Ob_z)を算出する(S6076)。始点Obは、例えばジェスチャ操作部位が手の場合、上半身に設定した中心位置を示す(図6参照)。Obに付記した「_x」、「_y」、「_z」は、始点Obのx座標、y座標、z座標をそれぞれ表す。Ob_xは中心点Ohのx座標Oh_xより決定される。Ob_yは中心点Ohのy座標Oh_yと高さオフセット値mより決定され、「Oh_y+m」である。Ob_zは中心点Ohのz座標Oh_zより決定される。
可動範囲算出部630は、始点「Oc」の座標(Oc_x,Oc_y,Oc_z)を算出する(S6077)。腕の付け根に設定した始点Ocは、例えばジェスチャ操作部位が手の場合、右肩の位置を示す(図6参照)。Ocに付記した「_x」、「_y」、「_z」は、始点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より決定される。
可動範囲算出部630は、始点Oaを中心として、前記S6073で特定した可動範囲半径rを用いて、球を算出する(S6078)。両腕の付け根の位置に相当するOa,Ocの位置座標と、腕の長さに相当するr値が求まれば、上肢の可動範囲は一意に決定可能である。図7(a)は、始点Oaを中心に半径rで描いた球Saを、正面から見た状態を示す。この場合、中心Oa、半径rの球内に示す範囲が可動範囲となる。
可動範囲算出部630は、始点Ocを中心として、前記S6073で特定した可動範囲半径rを用いて、球を算出する(S6079)。図7(b)には、始点Ocを中心に半径rで描いた球Scを、正面から見た状態を示す。この場合、中心Oc、半径rの球内に示す範囲が可動範囲となる。
可動範囲算出部630は、始点Obを通ってx軸に平行に延びる軸を中心軸として、前記S6073で、特定した可動範囲半径rと幅オフセット値lを用いて円柱を算出する(S6080)。図7(c)には、始点Obを通って水平方向に中心軸を有する半径rの円柱Cbを、正面から見た状態を示す。この場合、半径r、高さ「2×l」の円柱内に示す範囲が可動範囲となる。
可動範囲算出部630は、S6078乃至6080で算出した領域を全て含む領域として可動範囲を算出する。図7(d)は可動範囲を横から見た図、図7(e)は上から見た図、図7(f)は正面から見た図である。球Sa、Scや円柱Cbで示す各領域内をそれぞれA_Sa、A_Sc、A_Cbで表記すると、可動範囲は「(A_Sa)∪(A_Cb)∪(A_Sc)」で表すことができる。可動範囲算出部630は、顔ごとに始点情報Oa、Ob、Oc、及び可動範囲半径r、幅オフセット値l、算出した可動範囲を対応付けてメモリに記憶する(S6082)。前記S610にて、空間領域決定部600が空間領域割当部700へ渡す可動範囲情報は、S607にて上記のように算出した情報である。
可動範囲算出部630は、始点Ocを中心として、前記S6073で特定した可動範囲半径rを用いて、球を算出する(S6079)。図7(b)には、始点Ocを中心に半径rで描いた球Scを、正面から見た状態を示す。この場合、中心Oc、半径rの球内に示す範囲が可動範囲となる。
可動範囲算出部630は、始点Obを通ってx軸に平行に延びる軸を中心軸として、前記S6073で、特定した可動範囲半径rと幅オフセット値lを用いて円柱を算出する(S6080)。図7(c)には、始点Obを通って水平方向に中心軸を有する半径rの円柱Cbを、正面から見た状態を示す。この場合、半径r、高さ「2×l」の円柱内に示す範囲が可動範囲となる。
可動範囲算出部630は、S6078乃至6080で算出した領域を全て含む領域として可動範囲を算出する。図7(d)は可動範囲を横から見た図、図7(e)は上から見た図、図7(f)は正面から見た図である。球Sa、Scや円柱Cbで示す各領域内をそれぞれA_Sa、A_Sc、A_Cbで表記すると、可動範囲は「(A_Sa)∪(A_Cb)∪(A_Sc)」で表すことができる。可動範囲算出部630は、顔ごとに始点情報Oa、Ob、Oc、及び可動範囲半径r、幅オフセット値l、算出した可動範囲を対応付けてメモリに記憶する(S6082)。前記S610にて、空間領域決定部600が空間領域割当部700へ渡す可動範囲情報は、S607にて上記のように算出した情報である。
次に、図8の機能ブロック図を用いて、空間領域割当部700の構成を説明する。
重なり判定部701は、空間領域割当要求と可動範囲情報を受け取り、可動範囲の間で重なり合いが生じるか否かを判定する。重なり合いが生じると判定した場合、重なり判定部701は、非重複空間領域算出部702へ非重複空間領域の算出要求を出し、重なり合いが生じないと判定した場合、空間領域割当記憶部703へ可動範囲情報を渡す。
非重複空間領域算出部702は、重なり判定部701から非重複空間領域の算出要求を受け取って処理を開始する。非重複空間領域算出部702は、各操作者の可動範囲から、重なり判定部701で算出した空間領域(重なり領域領域)を減算する処理を行う。非重複空間領域算出部702は、算出結果、つまり非重複空間領域の情報を重なり判定部701に渡す。
空間領域割当記憶部703は、重なり判定部701から受け取った可動範囲情報や、非重複空間領域算出部702が算出した非重複空間領域の情報を、空間領域の割当情報として記憶する。
重なり判定部701は、空間領域割当要求と可動範囲情報を受け取り、可動範囲の間で重なり合いが生じるか否かを判定する。重なり合いが生じると判定した場合、重なり判定部701は、非重複空間領域算出部702へ非重複空間領域の算出要求を出し、重なり合いが生じないと判定した場合、空間領域割当記憶部703へ可動範囲情報を渡す。
非重複空間領域算出部702は、重なり判定部701から非重複空間領域の算出要求を受け取って処理を開始する。非重複空間領域算出部702は、各操作者の可動範囲から、重なり判定部701で算出した空間領域(重なり領域領域)を減算する処理を行う。非重複空間領域算出部702は、算出結果、つまり非重複空間領域の情報を重なり判定部701に渡す。
空間領域割当記憶部703は、重なり判定部701から受け取った可動範囲情報や、非重複空間領域算出部702が算出した非重複空間領域の情報を、空間領域の割当情報として記憶する。
次に、図9のフローチャートを用いて、空間領域割当部700の処理例を説明する。
空間領域割当部700は空間領域決定部600から、空間領域割当要求と可動範囲情報を受け取る(S701)。重なり判定部701は、空間領域決定部600より受け取った可動範囲情報に基づいて、操作者の検出人数を特定する(S702)。重なり判定部701は、検出人数が1人の場合(S703のyes)、空間領域割当記憶部703へ可動範囲情報を渡し、空間領域割当記憶部703は可動範囲情報を空間領域割当情報として記憶する(S707)。重なり判定部701は、検出人数が2以上の場合(S703のno)、可動範囲の重なりを判定する(S704)。重なり判定処理の詳細は後述する。重なり判定部701は、可動範囲に重なり合いが生じないと判定した場合(S705のno)、S707に進む。また重なり判定部701は、可動範囲に重なり合いが生じると判定した場合(S705のyes)、非重複空間領域算出部702へ非重複空間領域の算出要求を出す。
空間領域割当部700は空間領域決定部600から、空間領域割当要求と可動範囲情報を受け取る(S701)。重なり判定部701は、空間領域決定部600より受け取った可動範囲情報に基づいて、操作者の検出人数を特定する(S702)。重なり判定部701は、検出人数が1人の場合(S703のyes)、空間領域割当記憶部703へ可動範囲情報を渡し、空間領域割当記憶部703は可動範囲情報を空間領域割当情報として記憶する(S707)。重なり判定部701は、検出人数が2以上の場合(S703のno)、可動範囲の重なりを判定する(S704)。重なり判定処理の詳細は後述する。重なり判定部701は、可動範囲に重なり合いが生じないと判定した場合(S705のno)、S707に進む。また重なり判定部701は、可動範囲に重なり合いが生じると判定した場合(S705のyes)、非重複空間領域算出部702へ非重複空間領域の算出要求を出す。
非重複空間領域算出部702は、重なり判定部701から非重複空間領域の算出要求を受け取り、非重複空間領域の算出処理を行う(S706)。非重複空間領域算出部702は、重なり判定部701が前記S704で算出した可動範囲の重なり結果に基づき、x方向、y方向、z方向のうち、可動範囲が最も重なり合って方向を判定する。非重複空間領域算出部702は、最も重なっている方向について、重なり合う範囲が各操作者の可動範囲に占める割合を算出し、算出結果を重なり判定部701へ渡す。S706の詳細は後述する。
重なり判定部701は、非重複空間領域算出部702から算出結果を受け取り、空間領域割当記憶部703へ算出結果を渡す。空間領域割当記憶部703は前記S706での算出結果を空間領域割当情報として記憶する(S707)。重なり判定部701は、空間割当変更通知と空間領域割当情報をUI描画部1100に渡す(S708)。ここで、重なり判定部701がUI描画部1100へ渡す空間領域割当情報は、各操作者が操作可能な有効空間領域の方向とその割合を示す情報である。例えば、隣接する2人の操作者が同じ床面上で立位姿勢をとり、互いの可動範囲が重なり合う場合、可動範囲が空間上で重なる方向は左右方向である(図11参照)。操作可能な有効空間領域の方向及び割合は、例えば一方の操作者については、上、左7割、左下、前であり、他方の操作者については、上、右7割、右下、前である。
重なり判定部701は、非重複空間領域算出部702から算出結果を受け取り、空間領域割当記憶部703へ算出結果を渡す。空間領域割当記憶部703は前記S706での算出結果を空間領域割当情報として記憶する(S707)。重なり判定部701は、空間割当変更通知と空間領域割当情報をUI描画部1100に渡す(S708)。ここで、重なり判定部701がUI描画部1100へ渡す空間領域割当情報は、各操作者が操作可能な有効空間領域の方向とその割合を示す情報である。例えば、隣接する2人の操作者が同じ床面上で立位姿勢をとり、互いの可動範囲が重なり合う場合、可動範囲が空間上で重なる方向は左右方向である(図11参照)。操作可能な有効空間領域の方向及び割合は、例えば一方の操作者については、上、左7割、左下、前であり、他方の操作者については、上、右7割、右下、前である。
次に図10のフローチャートを用いて、前記S704(重なり判定処理)を説明する。本処理では、重なり判定部701が空間領域決定部600から可動範囲情報を受け取り、可動範囲同士が重なり合う状態を判定する。
重なり判定部701は、空間領域決定部600から受け取った可動範囲情報に基づき検出人物の組み合わせ数Npを算出する(S7041)。Npはn人から任意の2人を選択する場合の数であり、例えば検出人物数が2人の場合、Np=1であり、3人の場合、Np=3である。重なり判定部701は、全ての組み合わせ数について判定が終了したか、すなわちNp>0であるか否かを判定する(S7042)。Np>0の場合(S7042のyes)、重なり判定部701は受け取った可動範囲情報のうち、任意の組み合わせについて、比較対象である操作者ごとに、各々の始点Obのx座標と可動範囲半径rと幅オフセット値lにより位置関係を判定する(S7043)。重なり判定部701は、比較対象者の始点Obのx座標差分値が、比較対象者の可動範囲半径と幅オフセット値との和以内であるか否かを判定する。
例えば、図11に示すように、隣接する2人の操作者が立位姿勢で装置に指示を出す場合、図の左側の人物を「第1操作者」とし、右側の人物を「第2操作者」とする。各人に係る始点0a,0b,0cの各座標、可動範囲半径、オフセット値を表3に示す。
重なり判定部701は、空間領域決定部600から受け取った可動範囲情報に基づき検出人物の組み合わせ数Npを算出する(S7041)。Npはn人から任意の2人を選択する場合の数であり、例えば検出人物数が2人の場合、Np=1であり、3人の場合、Np=3である。重なり判定部701は、全ての組み合わせ数について判定が終了したか、すなわちNp>0であるか否かを判定する(S7042)。Np>0の場合(S7042のyes)、重なり判定部701は受け取った可動範囲情報のうち、任意の組み合わせについて、比較対象である操作者ごとに、各々の始点Obのx座標と可動範囲半径rと幅オフセット値lにより位置関係を判定する(S7043)。重なり判定部701は、比較対象者の始点Obのx座標差分値が、比較対象者の可動範囲半径と幅オフセット値との和以内であるか否かを判定する。
例えば、図11に示すように、隣接する2人の操作者が立位姿勢で装置に指示を出す場合、図の左側の人物を「第1操作者」とし、右側の人物を「第2操作者」とする。各人に係る始点0a,0b,0cの各座標、可動範囲半径、オフセット値を表3に示す。
表3から、始点Obのx座標差分値は、|Ob_0x-Ob_1x|と表される。比較対象者の可動範囲半径と幅オフセット値の和は、「r_0+l_0+r_1+l_1」と表される。よって、判定式は「|Ob_0x-Ob_1x|<(r_0+l_0+r_1+l_1)」となる。
次に重なり判定部701は、空間領域決定部600より受け取った可動範囲情報のうち、任意の組み合わせにおいて、比較対象者に係る各始点Obのy座標と可動範囲半径により位置関係を判定する(S7044)。重なり判定部701は、比較対象者の始点Obのy座標差分値が、比較対象者の可動範囲半径の和以内であるか否かを判定する。表3から、始点Obのy座標差分値は、|Ob_0y_Ob_1y|と表され、可動範囲半径の和は、「r_0+r_1」と表される。よって、判定式は「|Ob_0y_Ob_1y|<(r_0+r_1)」となる。
重なり判定部701は、空間領域決定部600より受け取った可動範囲情報のうち、任意の組み合わせにおいて、比較対象者に係る各始点Obのz座標と可動範囲半径により位置関係を判定する(S7045)。重なり判定部701は、比較対象者の始点Obのz座標差分値が、比較対象者の可動範囲半径の和以内であるか否かを判定する。表3から、始点Obのz座標差分値は、|Ob_0z_Ob_1z|と表され、可動範囲半径の和は、「r_0+r_1」と表される。よって、判定式は「|Ob_0z_Ob_1z|<(r_0+r_1)」となる。
重なり判定部701は、対象となる操作者の組み合わせと対応付けてS7043乃至7045の判定結果をメモリに記憶する(S7046)。重なり判定部701は、デクリメント処理によりNp値を1だけ減算し(S7047)、S7042へ戻る。重なり判定部701は、検出された操作者の全ての組み合わせについての判定が終了するまで、S7042乃至7047の処理を繰り返す。重なり判定部701は、「Np>0」でない場合(S7042のno)、同じ組み合わせ内でS7043乃至7045の判定結果が2個以上該当するか否か、つまり前記判定式を満たす結果が2個以上であるか否かを判定する(S7048)。重なり判定部701は、判定結果が2個以上該当すると判断した場合(S7048のyes)、重なり合いが生じると判定する(S7049)。重なり判定部701は、判定結果が2個以上該当しないと判断した場合(S7048のno)、重なり合いが生じないと判定する(S7050)。
重なり判定部701は、対象となる操作者の組み合わせと対応付けてS7043乃至7045の判定結果をメモリに記憶する(S7046)。重なり判定部701は、デクリメント処理によりNp値を1だけ減算し(S7047)、S7042へ戻る。重なり判定部701は、検出された操作者の全ての組み合わせについての判定が終了するまで、S7042乃至7047の処理を繰り返す。重なり判定部701は、「Np>0」でない場合(S7042のno)、同じ組み合わせ内でS7043乃至7045の判定結果が2個以上該当するか否か、つまり前記判定式を満たす結果が2個以上であるか否かを判定する(S7048)。重なり判定部701は、判定結果が2個以上該当すると判断した場合(S7048のyes)、重なり合いが生じると判定する(S7049)。重なり判定部701は、判定結果が2個以上該当しないと判断した場合(S7048のno)、重なり合いが生じないと判定する(S7050)。
次に、前記S706(非重複空間領域の算出処理)を説明する。本処理にて非重複空間領域算出部702は、重なり判定部701から非重複空間領域の算出要求を受けて非重複空間領域の算出処理を実行する。非重複空間領域算出部702は、重なり判定部701が前記S704で算出した可動範囲の重なり結果に基づき、x方向、y方向、z方向のうち最も重なっている方向を判定する。図11の例では検出人数が2人であって、第1操作者の可動範囲と第2操作者の可動範囲が重なっていると判定される。図11(a)は、2人の可動範囲の重なり具合を例示し、第1操作者の可動範囲と第2操作者の可動範囲とが重なり合う範囲を斜線で表している。
両操作者の可動範囲について、x方向の重なり量を「x_o」、y方向の重なり量を「y_o」、z方向の重なり量を「z_o」とする。x_oは各操作者の始点Obのx座標と可動範囲半径rと幅オフセット値lより決定され、表3の場合、「(r_0+l_0+r_1+l_1)−|Ob_0x_Ob_1x|」である。y_oは各操作者の始点Obのy座標と可動範囲半径より決定され、「(r_0+r_1)−|Ob_0y-Ob_1y|」である。z_oは各操作者の始点Obのz座標と可動範囲半径より決定され、「(r_0+r_1)-|Ob_0z-Ob_1z|」である。非重複空間領域算出部702は、x_o、y_o、z_oのうちで重なり量が最大値を示す方向を、最も重なっている方向と判断する。例えば、「x_o>y_o, x_o>z_o」の場合、非重複空間領域算出部702は、x方向にて可動範囲の重なり合いが最も大きいと判断する。
両操作者の可動範囲について、x方向の重なり量を「x_o」、y方向の重なり量を「y_o」、z方向の重なり量を「z_o」とする。x_oは各操作者の始点Obのx座標と可動範囲半径rと幅オフセット値lより決定され、表3の場合、「(r_0+l_0+r_1+l_1)−|Ob_0x_Ob_1x|」である。y_oは各操作者の始点Obのy座標と可動範囲半径より決定され、「(r_0+r_1)−|Ob_0y-Ob_1y|」である。z_oは各操作者の始点Obのz座標と可動範囲半径より決定され、「(r_0+r_1)-|Ob_0z-Ob_1z|」である。非重複空間領域算出部702は、x_o、y_o、z_oのうちで重なり量が最大値を示す方向を、最も重なっている方向と判断する。例えば、「x_o>y_o, x_o>z_o」の場合、非重複空間領域算出部702は、x方向にて可動範囲の重なり合いが最も大きいと判断する。
非重複空間領域算出部702は、各操作者についての非重複空間領域の割合を算出する。例えば、第1操作者の非重複空間領域の割合は、始点Obのx座標と可動範囲半径と幅オフセット値とx方向の重なり値から決定される。表3の場合、第1操作者の非重複空間領域がその可動範囲に占める割合(百分率)は、「(((r_0+l_0)-x_o)/(r_0+l_0))×100」である。図11(b)は各操作者の非重複空間領域を例示する。第1操作者の非重複空間領域は第1操作者の可動範囲から斜線部分を除外した領域であり、第2操作者の非重複空間領域は第2操作者の可動範囲から斜線部分を除外した領域である。非重複空間領域算出部702は、非重複空間領域について決定した前記方向及び割合の情報を重なり判定部701に渡す。
図12は、ジェスチャ認識部800の機能ブロック図である。
手抽出部801は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報に基づき、ジェスチャ操作部位(本例では手)の画像を抽出してジェスチャ位置情報を検出する。手抽出部801は、動作指示変換部802へ手画像とジェスチャ位置情報を渡す。手画像は、カメラ映像から該当部分の画像データを切り出したものである。動作指示変換部802は、手抽出部801から受け取った手画像と、予め保持しているジェスチャパターン画像との間でパターンマッチング処理を行い、動作指示へ変換する。動作指示変換部802は動作指示発行制御部803に、動作指示への変換結果と手抽出部801より受け取ったジェスチャ位置情報とを対応付けた動作指示情報を渡す。
動作指示発行制御部803は、動作指示変換部802から動作指示情報を受け取り、空間領域判定部900にジェスチャ位置情報を渡す。また動作指示発行制御部803は、空間領域判定部900の判定結果を受け取り、判定結果が有効となっている動作指示のみを制御部1000へ渡す。
手抽出部801は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報に基づき、ジェスチャ操作部位(本例では手)の画像を抽出してジェスチャ位置情報を検出する。手抽出部801は、動作指示変換部802へ手画像とジェスチャ位置情報を渡す。手画像は、カメラ映像から該当部分の画像データを切り出したものである。動作指示変換部802は、手抽出部801から受け取った手画像と、予め保持しているジェスチャパターン画像との間でパターンマッチング処理を行い、動作指示へ変換する。動作指示変換部802は動作指示発行制御部803に、動作指示への変換結果と手抽出部801より受け取ったジェスチャ位置情報とを対応付けた動作指示情報を渡す。
動作指示発行制御部803は、動作指示変換部802から動作指示情報を受け取り、空間領域判定部900にジェスチャ位置情報を渡す。また動作指示発行制御部803は、空間領域判定部900の判定結果を受け取り、判定結果が有効となっている動作指示のみを制御部1000へ渡す。
次に図13のフローチャートを用いて、ジェスチャ認識部800の処理を説明する。
手抽出部801は、カメラ入力制御部400よりカメラ画像データを取得し(S801)、手位置を検出する(S802)。S802の詳細は後述する。手抽出部801はS802で検出した手画像とジェスチャ位置情報を動作指示変換部802に渡す。動作指示変換部802は、手抽出部801から受け取った手画像を判別して動作指示情報へ変換する(S803)。S803の詳細は後述する。動作指示変換部802は動作指示発行制御部803へ動作指示情報を渡す。
動作指示発行制御部803は、動作指示変換部802から動作指示情報を受け取った場合(S804のyes)、空間領域判定部900へ空間領域の判定要求を出す(S805)。動作指示発行制御部803は、空間領域判定部900から受け取った判定結果に基づき、有効な動作指示があるか否かを判定する(S806)。動作指示発行制御部803は、有効な動作指示があると判断した場合(S806のyes)、制御部1000へ動作指示を通知し(S807)、有効な動作指示はないと判断した場合(S806のno)、処理を終了する。
手抽出部801は、カメラ入力制御部400よりカメラ画像データを取得し(S801)、手位置を検出する(S802)。S802の詳細は後述する。手抽出部801はS802で検出した手画像とジェスチャ位置情報を動作指示変換部802に渡す。動作指示変換部802は、手抽出部801から受け取った手画像を判別して動作指示情報へ変換する(S803)。S803の詳細は後述する。動作指示変換部802は動作指示発行制御部803へ動作指示情報を渡す。
動作指示発行制御部803は、動作指示変換部802から動作指示情報を受け取った場合(S804のyes)、空間領域判定部900へ空間領域の判定要求を出す(S805)。動作指示発行制御部803は、空間領域判定部900から受け取った判定結果に基づき、有効な動作指示があるか否かを判定する(S806)。動作指示発行制御部803は、有効な動作指示があると判断した場合(S806のyes)、制御部1000へ動作指示を通知し(S807)、有効な動作指示はないと判断した場合(S806のno)、処理を終了する。
図14のフローチャートを用いて前記S802(手位置検出処理)を説明する。本処理では手抽出部801が、カメラ入力制御部400よりカメラ画像データを受け取って手位置を検出する。
手抽出部801は、カメラ入力制御部400からのカメラ画像データを解析して肌色検出を行い(S8021)、肌色が検出されなければ(S8022のno)、処理を終了する。手抽出部801は、肌色が抽出された場合(S8022のyes)、肌色部分の輪郭形状を検出し(S8023)、これを手形状(テンプレート)と比較する(S8024)。手抽出部801は、肌色部分の輪郭形状と手形状が一致しなければ(S8025のno)、処理を終了する。手抽出部801は、輪郭形状と手形状が一致した場合(S8025のyes)、肌色部分の輪郭形状が内接する矩形を算出する(S8026)。手抽出部801は、矩形の座標情報を特定し、手座標(x_g,y_g,w_g,h_g)とする(S8027)。図17に示すように、x_g、y_gは矩形をカメラ側から見た時の左上端のx座標、y座標をそれぞれ示し、w_gは矩形の幅、h_gは矩形の高さを示す。手位置情報の一例を表4に示す。
手抽出部801は、カメラ入力制御部400からのカメラ画像データを解析して肌色検出を行い(S8021)、肌色が検出されなければ(S8022のno)、処理を終了する。手抽出部801は、肌色が抽出された場合(S8022のyes)、肌色部分の輪郭形状を検出し(S8023)、これを手形状(テンプレート)と比較する(S8024)。手抽出部801は、肌色部分の輪郭形状と手形状が一致しなければ(S8025のno)、処理を終了する。手抽出部801は、輪郭形状と手形状が一致した場合(S8025のyes)、肌色部分の輪郭形状が内接する矩形を算出する(S8026)。手抽出部801は、矩形の座標情報を特定し、手座標(x_g,y_g,w_g,h_g)とする(S8027)。図17に示すように、x_g、y_gは矩形をカメラ側から見た時の左上端のx座標、y座標をそれぞれ示し、w_gは矩形の幅、h_gは矩形の高さを示す。手位置情報の一例を表4に示す。
上表4は、抽出された手が2つの場合を示しており、本例では手情報の数字(0,1)でそれぞれの手を区別している。本例の手位置情報は、カメラ映像における手画像の位置と、手画像の縦横のサイズ、距離センサ132から手までの距離情報d_gを含む。
手抽出部801は、距離センサ入力制御部500からの距離情報を用いて手座標に対応する距離情報を取得し、これを手距離「d_g」とする(S8028)。ここで、d_gは距離センサ132から手までの距離を示す。手位置座標は、座標情報(x_g,y_g,w_g,h_g)とd_gにより、それぞれの手の位置を特定する値を示す。手位置座標は手画像のデータと関連付けられてメモリに記憶される(S8029)。
次に、図15のフローチャートを用いて、前記S803(ジェスチャコマンド変換処理)を説明する。動作指示変換部802は、手抽出部801から手画像とジェスチャ位置情報を受け取り(S8031)、手検出数Ngを決定する(S8032)。動作指示変換部802は、手検出数Ngの値がゼロの場合(S8033のno)、処理を終了する。動作指示変換部802は、「Ng>0」の場合(S8033のyes)、手画像と、予め保持しているジェスチャテンプレートとを比較する(S8034)。動作指示変換部802は、手画像とテンプレートが一致すれば(S8035のyes)、対応する動作指示へ変換する(S8036)。動作指示変換部802は、手抽出部801から受け取った手位置情報に、変換後の動作指示を追加し(S8037)、Ng値を1だけ減算し(S8039)、S8033へ戻る。ここで、手位置情報に動作指示を追加した情報が、動作指示情報である。一方、手画像とテンプレートが一致しない場合(S8035のno)、動作指示変換部802は、手抽出部801から受け取った手位置情報より、該当する手の情報を削除する(S8038)。そしてS8039に進む。
次に、図16のフローチャートを用いて、空間領域判定部900の処理例を説明する。本処理では空間領域判定部900が、ジェスチャ認識部800から受け取ったジェスチャ位置情報と、空間領域割当部700が保持する空間領域割当情報に基づき、検出されたジェスチャ位置が操作可能な空間領域内であるか否かを判定する。
空間領域判定部900は、ジェスチャ認識部800より動作指示情報を取得し(S901)、空間領域割当部700が保持する空間領域割当情報を取得する(S902)。空間領域判定部900は、空間領域割当情報より顔検出数Nhを決定し(S903)、動作指示情報より手検出数Ngを決定する(S904)。空間領域判定部900は、「Ng>0」の場合(S905のyes)、図17に示す手中心点Ogの座標(Og_x,Og_y,Og_z)を算出する(S906)。ここで、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の示す値に所定値を乗算した値としてもよい。
空間領域判定部900は、ジェスチャ認識部800より動作指示情報を取得し(S901)、空間領域割当部700が保持する空間領域割当情報を取得する(S902)。空間領域判定部900は、空間領域割当情報より顔検出数Nhを決定し(S903)、動作指示情報より手検出数Ngを決定する(S904)。空間領域判定部900は、「Ng>0」の場合(S905のyes)、図17に示す手中心点Ogの座標(Og_x,Og_y,Og_z)を算出する(S906)。ここで、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の示す値に所定値を乗算した値としてもよい。
空間領域判定部900は、「Nh>0」の場合(S907のyes)、前記S902で取得した空間領域割当情報に含まれる始点情報のうち、比較する始点を決定する(S908)。比較する始点は各始点情報の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|であり、これらの算出結果のうちで最短となる始点が比較始点となる。
空間領域判定部900は、検出された手位置が所定の判定条件を用いて規定される空間領域内であるか否かの判定を行う(S909)。手位置が当該空間領域内であるか否かの判定は、手中心点のx、y、z座標と、前記S908で決定した比較始点のx、y、z座標と、前記S902で取得した空間領域割当情報のうち始点Oaの属する顔情報の可動範囲半径r_0より決定される。例えば、前記S908で比較始点が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)<r_0」であり、「A^2」はAの2乗を表す。この判定条件式が満たされた場合、空間領域判定部900は、検出された手が空間領域内に位置すると判断する。
空間領域判定部900は、Nh値から1を減算し(S910)、S907へ戻る。全ての手について判定が終了するまで、S907乃至910の処理が繰り返し実行される。空間領域判定部900は、Nh値がゼロの場合(S907のno)に、S909の判定結果が1個以内であれば(S911のyes)、Ng値から1を減算し(S913)、S905へ戻る。空間領域判定部900は、S909の判定結果が2個以上の場合(S911のyes)、ジェスチャ認識部800から受け取った動作指示情報より、動作指示を削除し(S912)、S913に進む。空間領域判定部900は、検出された全ての顔について確認するまで、S905乃至913の処理を繰り返し実行する。空間領域判定部900は、Ng値がゼロの場合(S905のno)、ジェスチャ認識部800へ動作指示情報を通知し(S914)、処理を終了する。
空間領域判定部900は、検出された手位置が所定の判定条件を用いて規定される空間領域内であるか否かの判定を行う(S909)。手位置が当該空間領域内であるか否かの判定は、手中心点のx、y、z座標と、前記S908で決定した比較始点のx、y、z座標と、前記S902で取得した空間領域割当情報のうち始点Oaの属する顔情報の可動範囲半径r_0より決定される。例えば、前記S908で比較始点が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)<r_0」であり、「A^2」はAの2乗を表す。この判定条件式が満たされた場合、空間領域判定部900は、検出された手が空間領域内に位置すると判断する。
空間領域判定部900は、Nh値から1を減算し(S910)、S907へ戻る。全ての手について判定が終了するまで、S907乃至910の処理が繰り返し実行される。空間領域判定部900は、Nh値がゼロの場合(S907のno)に、S909の判定結果が1個以内であれば(S911のyes)、Ng値から1を減算し(S913)、S905へ戻る。空間領域判定部900は、S909の判定結果が2個以上の場合(S911のyes)、ジェスチャ認識部800から受け取った動作指示情報より、動作指示を削除し(S912)、S913に進む。空間領域判定部900は、検出された全ての顔について確認するまで、S905乃至913の処理を繰り返し実行する。空間領域判定部900は、Ng値がゼロの場合(S905のno)、ジェスチャ認識部800へ動作指示情報を通知し(S914)、処理を終了する。
図18は、空間割当が変更された旨を操作者に通知する画面例を示す。UI描画部1100は、空間領域割当部700から空間割当変更通知と空間割当情報を受け取り、空間割当情報の内容を表示するための画面データを生成する。本例の画面には、空間割当を変更した旨が表示される。例えば、カメラから見て左側の第1操作者には、上、前、左、左下方向がジェスチャ操作可能な空間領域であることが提示され、右側の第2操作者には、上、前、右、右下方向がジェスチャ操作可能な空間領域であることが提示される。本画面例では、各操作者のジェスチャ操作可能な空間領域の情報を文字で提示しているが、これに限らず、各々の操作可能な方向や範囲を図や絵等で表現する方法を採用してもよい。
第1実施形態によれば、操作者の位置関係が変化した場合、各人の可動範囲と位置関係に基づいて、操作者ごとに操作可能なジェスチャ認識範囲を割り当て直す。この再割り当てにより、各人がジェスチャ操作を行う空間領域に重なり合いが生じない操作範囲が設定され、その結果、各操作者はそのままの位置でジェスチャ操作を続行できるので、利便性が高まる。
第1実施形態によれば、操作者の位置関係が変化した場合、各人の可動範囲と位置関係に基づいて、操作者ごとに操作可能なジェスチャ認識範囲を割り当て直す。この再割り当てにより、各人がジェスチャ操作を行う空間領域に重なり合いが生じない操作範囲が設定され、その結果、各操作者はそのままの位置でジェスチャ操作を続行できるので、利便性が高まる。
[第2実施形態]
次に本発明の第2実施形態を説明する。第2実施形態では、各操作者の可動範囲と位置関係に加え、操作者の操作状態に基づいて、ジェスチャ操作のための空間領域が重ならないようにジェスチャ認識範囲の割り当てを変更する。
次に本発明の第2実施形態を説明する。第2実施形態では、各操作者の可動範囲と位置関係に加え、操作者の操作状態に基づいて、ジェスチャ操作のための空間領域が重ならないようにジェスチャ認識範囲の割り当てを変更する。
第2実施形態に係るジェスチャ認識装置の全体構成を説明する。第1実施形態との相違する構成部は、図1に示す操作状態監視部1400である。よって以下では、該監視部とこれに関係する構成部1200、1300、1500を説明し、第1実施形態の場合と同様の部分については既に使用した符号を用いることで、それらの詳細な説明を省略する。
空間領域決定部1200は、第1実施形態で述べた機能に加え、今回算出した顔位置情報と前回検出した顔位置情報とを比較し、顔の移動状態に関する情報を生成して操作状態監視部1400へ渡す。空間領域決定部1200の詳細は後述する。
空間領域判定部1300は、第1実施形態で述べた機能に加え、動作指示生成状態の情報を生成する。該情報は、顔情報ごとに動作指示が生成されたか否かを示す情報であり、操作状態監視部1400に送られる。空間領域判定部1300の詳細は後述する。
操作状態監視部1400は、空間領域決定部1200からの移動状態の情報と、空間領域判定部1300からの動作指示生成状態の情報を受け取り、各人が操作中であるか否かについて状態監視処理を行う。操作状態監視部1400は、顔ごとの操作状態を示す操作状態情報を保持しており、空間領域割当部1500は操作状態情報を参照する。
空間領域割当部1500は、空間領域決定部1200からの空間領域割当要求と可動範囲情報に基づき、操作者の可動範囲が重なっているか否かを判定する。可動範囲の重なり合いが生じる場合、空間領域割当部1500は、可動範囲の重なり合いが生じない非重複空間領域を操作可能な空間領域として算出する。空間領域割当部1500は、操作状態監視部1400が保持する操作状態情報を参照し、操作中の人物が操作を終了するまでの間は、それ以外の人物の空間領域割当情報を変更し、UI描画部1100へ仮の空間領域割当変更通知を渡す。空間領域割当部1500は、操作状態監視部1400が保持する操作状態情報を参照し、操作中の人物が操作を終了すると、操作中であった人物への空間割当情報を変更し、UI描画部1100へ空間領域割当の変更通知を渡す。
空間領域決定部1200は、第1実施形態で述べた機能に加え、今回算出した顔位置情報と前回検出した顔位置情報とを比較し、顔の移動状態に関する情報を生成して操作状態監視部1400へ渡す。空間領域決定部1200の詳細は後述する。
空間領域判定部1300は、第1実施形態で述べた機能に加え、動作指示生成状態の情報を生成する。該情報は、顔情報ごとに動作指示が生成されたか否かを示す情報であり、操作状態監視部1400に送られる。空間領域判定部1300の詳細は後述する。
操作状態監視部1400は、空間領域決定部1200からの移動状態の情報と、空間領域判定部1300からの動作指示生成状態の情報を受け取り、各人が操作中であるか否かについて状態監視処理を行う。操作状態監視部1400は、顔ごとの操作状態を示す操作状態情報を保持しており、空間領域割当部1500は操作状態情報を参照する。
空間領域割当部1500は、空間領域決定部1200からの空間領域割当要求と可動範囲情報に基づき、操作者の可動範囲が重なっているか否かを判定する。可動範囲の重なり合いが生じる場合、空間領域割当部1500は、可動範囲の重なり合いが生じない非重複空間領域を操作可能な空間領域として算出する。空間領域割当部1500は、操作状態監視部1400が保持する操作状態情報を参照し、操作中の人物が操作を終了するまでの間は、それ以外の人物の空間領域割当情報を変更し、UI描画部1100へ仮の空間領域割当変更通知を渡す。空間領域割当部1500は、操作状態監視部1400が保持する操作状態情報を参照し、操作中の人物が操作を終了すると、操作中であった人物への空間割当情報を変更し、UI描画部1100へ空間領域割当の変更通知を渡す。
次に図2を用いて、空間領域決定部1200の構成例について第1実施形態との相違点のみを説明する。位置情報管理部1210は、顔抽出部610からの顔位置情報と前回検出した際の顔位置情報とを比較し、検出人数や位置に変化があった場合、位置変化のない顔を含むか否かを判断する。位置情報管理部620は、顔位置情報が位置変化のない顔の情報を含む場合には、顔ごとに移動したか否かを明示した情報を生成し、操作状態監視部1400へ渡す。
次に、図19のフローチャートを用いて、空間領域決定部1200の処理例を説明する。図3との相違点は、S604とS605の間にあるS1205乃至1207であり、以下、これらの処理のみ説明する。
位置情報管理部1210は、複数の操作者のうちで移動していない人物がいるか否かを判定する(S1205)。位置情報管理部1210は、移動していない人物がいる場合(S1205のyes)、移動状態情報を生成する(S1206)。移動状態情報は、顔ごとに移動の有無を管理するための情報を含み、操作状態監視部1400へ通知される(S1207)。一方、移動していない人物が存在しないと判定された場合(S1205のno)、S605に進む。
位置情報管理部1210は、複数の操作者のうちで移動していない人物がいるか否かを判定する(S1205)。位置情報管理部1210は、移動していない人物がいる場合(S1205のyes)、移動状態情報を生成する(S1206)。移動状態情報は、顔ごとに移動の有無を管理するための情報を含み、操作状態監視部1400へ通知される(S1207)。一方、移動していない人物が存在しないと判定された場合(S1205のno)、S605に進む。
次に図20のフローチャートを用いて、空間領域判定部1300の処理例を説明する。図16との相違点は、S911及びS912とS913との間にあるS1313、及びS914の前にあるS1315であり、以下、これらの処理のみ説明する。
空間領域判定部1300は、動作指示生成状態の情報をメモリに記憶する(S1313)。ここで、動作指示生成状態の情報は、空間領域判定部1300がジェスチャ認識部800から受け取った動作指示情報より、顔ごとに動作指示が発行されているか否かを管理する情報である。S909での判定結果が1個以内と判定された場合(S911のyes)、注目している顔の動作指示は発行されているので、空間領域判定部1300は動作指示生成状態として、発行済みであることを示す情報をメモリに記憶する。また、S909での判定結果が2個以上と判定された場合(S911のno)、注目している顔の動作指示は発行されていないので、空間領域判定部1300は動作指示生成状態として未発行の旨の情報をメモリに記憶する。
空間領域判定部1300は、全ての顔についての判定処理が終了すると(S905のno)、動作指示生成状態の情報を操作状態監視部1400へ渡す(S1315)。
空間領域判定部1300は、動作指示生成状態の情報をメモリに記憶する(S1313)。ここで、動作指示生成状態の情報は、空間領域判定部1300がジェスチャ認識部800から受け取った動作指示情報より、顔ごとに動作指示が発行されているか否かを管理する情報である。S909での判定結果が1個以内と判定された場合(S911のyes)、注目している顔の動作指示は発行されているので、空間領域判定部1300は動作指示生成状態として、発行済みであることを示す情報をメモリに記憶する。また、S909での判定結果が2個以上と判定された場合(S911のno)、注目している顔の動作指示は発行されていないので、空間領域判定部1300は動作指示生成状態として未発行の旨の情報をメモリに記憶する。
空間領域判定部1300は、全ての顔についての判定処理が終了すると(S905のno)、動作指示生成状態の情報を操作状態監視部1400へ渡す(S1315)。
次に図21のフローチャートを用いて、操作状態監視部1400の処理例を説明する。
操作状態監視部1400は、空間領域決定部1200から移動状態情報を受け取り(S1401)、空間領域判定部1300から動作指示生成状態の情報を受け取る(S1402)。操作状態監視部1400は、空間領域決定部1200から受け取った移動状態情報に基づき、人数Nhを特定する(S1403)。S1404では、Nh値がゼロより大きいか否かが判定され、「Nh>0」の場合、操作状態監視部1400は、移動状態情報に基づき、注目している顔の人物が移動したか否かを判定する(S1405)。なおNh値がゼロの場合、処理が終了する。
注目している顔の人物が移動した場合(S1405のyes)、S1411に進み、操作状態監視部1400は、Nh値を1だけ減算した後、S1404へ戻る。また、操作状態監視部1400は、注目している顔の人物が移動していない場合(S1405のno)、動作指示生成状態の情報に基づき、該当人物の動作指示情報の有無について判定する(S1406)。該当人物の動作指示情報がある場合(S1406のyes)、S1407に進む。ここで、動作指示が操作を終了する指示でなければ(S1407のno)、操作状態監視部1400は、操作中と判断する(S1408)。一方、操作状態監視部1400は、該当人物の動作指示情報がない場合(S1406のno)、または、動作指示情報はあるが、動作指示が操作を終了する指示の場合(S1407のyes)、無操作状態と判断する(S1409)。S1408、S1409の後、操作状態監視部1400は、顔ごとに操作状態の情報をメモリに記憶し(S1410)、S1411に進む。ここでNh値が1だけ減算されてからS1404に戻る。
本例では、各操作者が操作中であるか否かの判定処理において、操作の終了を示す動作指示であるか否かを判定するステップS1407を設けている。これに限らず、操作後の経過時間をカウントし、一定期間以上に亘って操作が行われない場合に、操作状態監視部1400が操作終了とみなす判断処理を行ってもよい。
操作状態監視部1400は、空間領域決定部1200から移動状態情報を受け取り(S1401)、空間領域判定部1300から動作指示生成状態の情報を受け取る(S1402)。操作状態監視部1400は、空間領域決定部1200から受け取った移動状態情報に基づき、人数Nhを特定する(S1403)。S1404では、Nh値がゼロより大きいか否かが判定され、「Nh>0」の場合、操作状態監視部1400は、移動状態情報に基づき、注目している顔の人物が移動したか否かを判定する(S1405)。なおNh値がゼロの場合、処理が終了する。
注目している顔の人物が移動した場合(S1405のyes)、S1411に進み、操作状態監視部1400は、Nh値を1だけ減算した後、S1404へ戻る。また、操作状態監視部1400は、注目している顔の人物が移動していない場合(S1405のno)、動作指示生成状態の情報に基づき、該当人物の動作指示情報の有無について判定する(S1406)。該当人物の動作指示情報がある場合(S1406のyes)、S1407に進む。ここで、動作指示が操作を終了する指示でなければ(S1407のno)、操作状態監視部1400は、操作中と判断する(S1408)。一方、操作状態監視部1400は、該当人物の動作指示情報がない場合(S1406のno)、または、動作指示情報はあるが、動作指示が操作を終了する指示の場合(S1407のyes)、無操作状態と判断する(S1409)。S1408、S1409の後、操作状態監視部1400は、顔ごとに操作状態の情報をメモリに記憶し(S1410)、S1411に進む。ここでNh値が1だけ減算されてからS1404に戻る。
本例では、各操作者が操作中であるか否かの判定処理において、操作の終了を示す動作指示であるか否かを判定するステップS1407を設けている。これに限らず、操作後の経過時間をカウントし、一定期間以上に亘って操作が行われない場合に、操作状態監視部1400が操作終了とみなす判断処理を行ってもよい。
次に図8を用いて、空間領域割当部1500の構成例について第1実施形態との相違点のみを説明する。
重なり判定部1501は、空間領域割当要求と可動範囲情報を受け取り、可動範囲に重なり合いが生じるか否かを判定する。可動範囲に重なり合いが生じる場合、重なり判定部1501は非重複空間領域算出部702へ非重複空間領域の算出要求を出す。重なり判定部1501は、操作状態監視部1400から操作状態の情報を取得し、操作中の人物がいるか否かを判定する。重なり判定部1501は、操作中の人物がいる場合、空間領域割当記憶部703に対し、操作中でない人物の空間割当情報を記憶させ、UI描画部1100には、仮の空間割当変更通知を渡す。重なり判定部1501は、操作状態監視部1400から操作状態の情報を取得することで、操作中の人物がその操作を終了したかを監視する。当該操作者の操作が終了した場合、重なり判定部1501は空間領域割当記憶部703に対し、操作中であった人物の空間割当情報を記憶させ、UI描画部1100には空間割当変更通知を渡す。
重なり判定部1501は、空間領域割当要求と可動範囲情報を受け取り、可動範囲に重なり合いが生じるか否かを判定する。可動範囲に重なり合いが生じる場合、重なり判定部1501は非重複空間領域算出部702へ非重複空間領域の算出要求を出す。重なり判定部1501は、操作状態監視部1400から操作状態の情報を取得し、操作中の人物がいるか否かを判定する。重なり判定部1501は、操作中の人物がいる場合、空間領域割当記憶部703に対し、操作中でない人物の空間割当情報を記憶させ、UI描画部1100には、仮の空間割当変更通知を渡す。重なり判定部1501は、操作状態監視部1400から操作状態の情報を取得することで、操作中の人物がその操作を終了したかを監視する。当該操作者の操作が終了した場合、重なり判定部1501は空間領域割当記憶部703に対し、操作中であった人物の空間割当情報を記憶させ、UI描画部1100には空間割当変更通知を渡す。
次に、図22のフローチャートを用いて、空間領域割当部1500の処理例を説明する。図9との相違点は、S706に続くS1507乃至1515であり、以下、これらの処理を説明する。
空間領域割当部1500は、その内部で仮割当フラグ変数を管理している。S1507で仮割当フラグ変数をfalse(偽)に設定した後、空間領域割当部1500は、操作状態監視部1400が保持している操作状態の情報を取得する(S1508)。空間領域割当部1500は、操作状態監視部1400から取得した操作状態の情報に基づき、操作中の人物がいるか否かを判定する(S1509)。操作中の人物がいる場合(S1509のyes)、その旨を既にUI描画部1100へ通知済みか否かが判定される(S1510)。通知済みの場合(S1510のyes)、S1508へ戻る。通知済みでなければ(S1510のno)、空間領域割当部1500は、空間領域割当記憶部703に対して、操作中でない人物についての非重複空間領域の算出結果を渡す(S1511)。これは操作中でない人物について空間領域割り当てを行うためである。空間領域割当部1500は、仮割当フラグ変数をtrue(真)に変更し(S1512)、UI描画部1100へ、仮の空間領域割当変更通知を渡し(S1513)、S1508へ戻る。
空間領域割当部1500は、その内部で仮割当フラグ変数を管理している。S1507で仮割当フラグ変数をfalse(偽)に設定した後、空間領域割当部1500は、操作状態監視部1400が保持している操作状態の情報を取得する(S1508)。空間領域割当部1500は、操作状態監視部1400から取得した操作状態の情報に基づき、操作中の人物がいるか否かを判定する(S1509)。操作中の人物がいる場合(S1509のyes)、その旨を既にUI描画部1100へ通知済みか否かが判定される(S1510)。通知済みの場合(S1510のyes)、S1508へ戻る。通知済みでなければ(S1510のno)、空間領域割当部1500は、空間領域割当記憶部703に対して、操作中でない人物についての非重複空間領域の算出結果を渡す(S1511)。これは操作中でない人物について空間領域割り当てを行うためである。空間領域割当部1500は、仮割当フラグ変数をtrue(真)に変更し(S1512)、UI描画部1100へ、仮の空間領域割当変更通知を渡し(S1513)、S1508へ戻る。
図23(a)は、操作中の人物がいた場合の空間領域割り当て結果を例示する。本例では、モニタ133を正面からみている人物を表し、左側の操作者が操作中と判断された人物であり、右側の操作者が操作中でない人物である。この場合、操作中である左側の人物はその可動範囲A_L内の全ての位置で操作指示が可能である。これに対し、操作中でない右側の人物については、可動範囲A_Rのうち斜線部O_Rを除外した領域が非重複空間領域として算出される。
空間領域割当部1500は、操作中の人物がいない場合(S1509のno)、S1514に進み、仮割当フラグ変数の値を調べる(S1514)。該フラグ変数がtrueの場合(S1514のyes)、空間領域割当部1500は空間領域割当記憶部703に対し、操作中であった人物についての非重複空間領域の算出結果を渡す(S1515)。図23(b)は、S1515の処理の実行後、空間領域の本割当結果を例示する。操作中であった左側の人物には、可動範囲A_Lから斜線部O_Lを除外した領域が割り当てられる。S1515の後、S708に進む。仮割当フラグ変数がfalseの場合(S1514のno)、S707に進む。
S708でUI描画部1100は空間領域割当部1500から、空間割当変更通知と空間割当情報を受け取った場合、空間割当情報の内容を画面に表示するためのデータを生成する。例えば、図18の画面と同様に、操作者への空間割当を変更した旨が表示される。この場合、図23(a)に示す右側の操作者には、前記したように上、前、右、右下方向にてジェスチャ操作可能である旨のメッセージが提示されるが、左側の操作者は操作中であるため、今は変更を実行せずに後で変更する旨が提示される。例えば、左側の操作者には、「操作終了後、変更します。」といったメッセージが、画面上に文字で表示される。
空間領域割当部1500は、操作中の人物がいない場合(S1509のno)、S1514に進み、仮割当フラグ変数の値を調べる(S1514)。該フラグ変数がtrueの場合(S1514のyes)、空間領域割当部1500は空間領域割当記憶部703に対し、操作中であった人物についての非重複空間領域の算出結果を渡す(S1515)。図23(b)は、S1515の処理の実行後、空間領域の本割当結果を例示する。操作中であった左側の人物には、可動範囲A_Lから斜線部O_Lを除外した領域が割り当てられる。S1515の後、S708に進む。仮割当フラグ変数がfalseの場合(S1514のno)、S707に進む。
S708でUI描画部1100は空間領域割当部1500から、空間割当変更通知と空間割当情報を受け取った場合、空間割当情報の内容を画面に表示するためのデータを生成する。例えば、図18の画面と同様に、操作者への空間割当を変更した旨が表示される。この場合、図23(a)に示す右側の操作者には、前記したように上、前、右、右下方向にてジェスチャ操作可能である旨のメッセージが提示されるが、左側の操作者は操作中であるため、今は変更を実行せずに後で変更する旨が提示される。例えば、左側の操作者には、「操作終了後、変更します。」といったメッセージが、画面上に文字で表示される。
第2実施形態では、ある操作者が装置に操作指示を行っている最中に、別の操作者が移動したことにより、空間割当領域の変更の必要性が生じた場合、既に操作中の操作者の操作状態に従って操作範囲の割当を変更することができる。
[第3実施形態]
次に本発明の第3実施形態を説明する。第3実施形態では、各操作者の可動範囲がカメラ方向から見て同一平面上で重なっている場合、重なり合う範囲以外で行われたジェスチャ操作による操作指示を有効とし、重なり合う範囲内で行われたジェスチャ操作による操作指示を無効とする。
次に本発明の第3実施形態を説明する。第3実施形態では、各操作者の可動範囲がカメラ方向から見て同一平面上で重なっている場合、重なり合う範囲以外で行われたジェスチャ操作による操作指示を有効とし、重なり合う範囲内で行われたジェスチャ操作による操作指示を無効とする。
図24は、第3実施形態に係るジェスチャ認識装置を適用したテレビジョン受信装置の構成例を示す。以下では、図1に示す構成との相違点のみを説明し、第1実施形態と同様の構成部については既に付した符号を用いることで、それらの詳細な説明を省略する。
空間領域決定部2200は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報を受け取り、各操作者の可動範囲情報を算出して保持する。空間領域決定部2200はジェスチャ認識部800との間で必要な情報を送受し合う。空間領域決定部2200の構成は、図2に示す通りである。
ジェスチャ認識部800は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報を受け取り、ジェスチャ操作部位の位置情報を特定する。またジェスチャ認識部800は、ジェスチャ操作部位の位置情報と空間領域決定部2200が保持する可動範囲情報を参照し、検出したジェスチャ操作部位に係る操作者を特定可能か否かについて判定する。特定可能の場合、ジェスチャ認識部800は、ジェスチャ操作部位の形状に基づいてジェスチャ認識を行う。また特定不能の場合、ジェスチャ認識部800はジェスチャ認識を行わず、UI描画部1100に対し、ジェスチャ認識が不可能である旨の警告を表示するように指示する。またジェスチャ認識部800は、ジェスチャ認識結果を動作指示の命令に変換して制御部1000とUI描画部1100へ渡す。UI描画部1100は、ジェスチャ認識部800から警告表示の指示を受け取った場合、当該指示に沿った警告を表示するためのデータを生成して合成部300に送る。
空間領域決定部2200は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報を受け取り、各操作者の可動範囲情報を算出して保持する。空間領域決定部2200はジェスチャ認識部800との間で必要な情報を送受し合う。空間領域決定部2200の構成は、図2に示す通りである。
ジェスチャ認識部800は、カメラ入力制御部400からのカメラ画像データと距離センサ入力制御部500からの距離情報を受け取り、ジェスチャ操作部位の位置情報を特定する。またジェスチャ認識部800は、ジェスチャ操作部位の位置情報と空間領域決定部2200が保持する可動範囲情報を参照し、検出したジェスチャ操作部位に係る操作者を特定可能か否かについて判定する。特定可能の場合、ジェスチャ認識部800は、ジェスチャ操作部位の形状に基づいてジェスチャ認識を行う。また特定不能の場合、ジェスチャ認識部800はジェスチャ認識を行わず、UI描画部1100に対し、ジェスチャ認識が不可能である旨の警告を表示するように指示する。またジェスチャ認識部800は、ジェスチャ認識結果を動作指示の命令に変換して制御部1000とUI描画部1100へ渡す。UI描画部1100は、ジェスチャ認識部800から警告表示の指示を受け取った場合、当該指示に沿った警告を表示するためのデータを生成して合成部300に送る。
次に、図2を用いて空間領域決定部2200の動作を説明する。なお本実施形態にて位置情報管理部620はジェスチャ認識部800と情報を送受し合う。
顔抽出部610は、カメラ入力制御部400からカメラ映像データを受信した際、位置情報管理部620に対してカメラ映像の解析開始を通知する。その後、顔抽出部610は、カメラ映像データ及び距離情報に基づき、顔画像の抽出、および顔位置情報の算出処理を開始する。顔抽出部610は位置情報管理部620に対し、算出した顔位置情報を出力し、次の顔画像抽出処理を行う。カメラ映像において全ての顔画像の抽出と、顔位置情報算出が終了すると、顔抽出部610は位置情報管理部620に対してカメラ映像の解析終了を通知し、次のカメラ映像が入力されるまで待機する。一方、カメラ映像にて顔画像を検出できなかった場合にも、カメラ映像の解析を終了した旨の通知が位置情報管理部620に出され、次のカメラ映像の入力待ちの状態となる。
位置情報管理部620は、全ての操作者の数(検出した顔画像数)を示す情報とともに、各操作者の顔位置情報、可動範囲情報を管理する。顔位置情報の管理に使用するテーブル(以下、顔情報管理テーブルという)の一例を表5に示す。
ユーザIDは、各操作者の顔を識別するための識別情報であり、本例では数字で区別している。
位置情報管理部620は、顔抽出部610からカメラ映像の解析開始指示を受けると、顔情報管理テーブルを初期化し、該テーブルの作成処理を開始する。顔抽出部610から送られて来た顔位置情報は、ユーザIDが割り振られた上で所定の記憶領域に格納される。位置情報管理部620は、可動範囲算出部630からの可動範囲情報についても同様に顔情報管理テーブルに格納する。本処理は、顔抽出部610からカメラ映像の解析終了を通知されるまで行われる。
顔抽出部610は、カメラ入力制御部400からカメラ映像データを受信した際、位置情報管理部620に対してカメラ映像の解析開始を通知する。その後、顔抽出部610は、カメラ映像データ及び距離情報に基づき、顔画像の抽出、および顔位置情報の算出処理を開始する。顔抽出部610は位置情報管理部620に対し、算出した顔位置情報を出力し、次の顔画像抽出処理を行う。カメラ映像において全ての顔画像の抽出と、顔位置情報算出が終了すると、顔抽出部610は位置情報管理部620に対してカメラ映像の解析終了を通知し、次のカメラ映像が入力されるまで待機する。一方、カメラ映像にて顔画像を検出できなかった場合にも、カメラ映像の解析を終了した旨の通知が位置情報管理部620に出され、次のカメラ映像の入力待ちの状態となる。
位置情報管理部620は、全ての操作者の数(検出した顔画像数)を示す情報とともに、各操作者の顔位置情報、可動範囲情報を管理する。顔位置情報の管理に使用するテーブル(以下、顔情報管理テーブルという)の一例を表5に示す。
ユーザIDは、各操作者の顔を識別するための識別情報であり、本例では数字で区別している。
位置情報管理部620は、顔抽出部610からカメラ映像の解析開始指示を受けると、顔情報管理テーブルを初期化し、該テーブルの作成処理を開始する。顔抽出部610から送られて来た顔位置情報は、ユーザIDが割り振られた上で所定の記憶領域に格納される。位置情報管理部620は、可動範囲算出部630からの可動範囲情報についても同様に顔情報管理テーブルに格納する。本処理は、顔抽出部610からカメラ映像の解析終了を通知されるまで行われる。
本実施形態では、複数人の個体認識までの必要はなく、操作者の位置(顔位置)のみが必要であるため、顔位置管理テーブルは顔位置情報のみを保持する。しかし、操作者を特定するために、該テーブルに顔画像データも保存し、前フレームの顔位置情報テーブルに登録された顔画像に基づき、操作者を同定してもよい。
位置情報管理部620は、ジェスチャ認識部800から操作者の人数に係る取得要求を受けると、管理している人数(ユーザIDの数)を返信する。また位置情報管理部620は、ジェスチャ認識部800から可動範囲情報の取得要求を受けた場合、顔情報管理テーブルからユーザIDと該ユーザIDの可動範囲情報を返信する。
位置情報管理部620は、ジェスチャ認識部800から操作者の人数に係る取得要求を受けると、管理している人数(ユーザIDの数)を返信する。また位置情報管理部620は、ジェスチャ認識部800から可動範囲情報の取得要求を受けた場合、顔情報管理テーブルからユーザIDと該ユーザIDの可動範囲情報を返信する。
次に、可動範囲の算出処理を説明する。図6の説明では可動範囲算出テーブルを参照して、可動範囲の算出に必要な情報が取得されるとした。以下では、顔の幅w_hと高さh_hから、可動範囲半径r、幅オフセット値l、高さオフセット値mを算出する処理について説明する。
可動範囲算出部630は、顔の幅w_hと高さh_hの値に基づき、成人の体形がほぼ7頭身であることを利用して、下式からr,l,mの値を算出する。
上式にてNr, Nl, Nmは定数である。例えば、「Nr = 3、Nl = 1、Nm = 1」で近似した場合、表5でユーザIDの値がゼロの操作者については、「r = 45、l = 10、m = 15」となる。
顔の中心点は2次元直交座標系で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)の座標が求まる。例えば、表5でユーザIDがゼロの操作者については、Oa(107.5 + 10, 105 + 15) 、つまり、Oa(117.5, 120)と計算される。
可動範囲算出部630は、顔の幅w_hと高さh_hの値に基づき、成人の体形がほぼ7頭身であることを利用して、下式からr,l,mの値を算出する。
顔の中心点は2次元直交座標系で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)の座標が求まる。例えば、表5でユーザIDがゼロの操作者については、Oa(107.5 + 10, 105 + 15) 、つまり、Oa(117.5, 120)と計算される。
図25は、ジェスチャ認識部800の構成例を示す機能ブロック図である。
手抽出部901は、カメラ入力制御部400と距離センサ入力制御部500からの入力情報に基づき、ジェスチャ操作部位である手の画像(手画像)、手位置情報を算出し、ジェスチャ判断部902に出力する。
ジェスチャ判断部902は、手抽出部901から手画像と手位置情報を受け取り、後述の重なり判定部904と協働して、操作者がその手で行った操作について有効性を判断する。またジェスチャ判断部902はジェスチャコマンド変換部903と協働して、ジェスチャ操作の指示を装置の動作指示の命令に変換して制御部1000に送信する。この他、ジェスチャ判断部902はUI描画部1100に対して警告表示を指示する。
ジェスチャコマンド変換部903は、ジェスチャ判断部902から受け取った手画像と、予め保持しているジェスチャパターン画像群との間でパターンマッチング処理を行い、手の形状から、これに対応する動作指示の命令に変換する。ジェスチャパターン画像群に一致する手画像が検出された場合、ジェスチャコマンド変換部903は該当する動作指示の命令をジェスチャ判断部902に返信する。ジェスチャパターン画像群に一致する手画像がなければ、ジェスチャコマンド変換部903は「該当なし」をジェスチャ判断部902に返信する。
重なり判定部904は、ジェスチャ判断部902から手位置情報を受信し、操作者の手の位置が重なり領域、つまり可動範囲同士が重なり合う領域内に属するか否かを判断する。その際、空間領域決定部2200が保持する顔情報管理テーブルのデータが参照される。手の位置が重なり領域に属する場合、重なり判定部904は「是」をジェスチャ判断部902に返し、手の位置が重なり領域に属さない場合、「否」を返す。
手抽出部901は、カメラ入力制御部400と距離センサ入力制御部500からの入力情報に基づき、ジェスチャ操作部位である手の画像(手画像)、手位置情報を算出し、ジェスチャ判断部902に出力する。
ジェスチャ判断部902は、手抽出部901から手画像と手位置情報を受け取り、後述の重なり判定部904と協働して、操作者がその手で行った操作について有効性を判断する。またジェスチャ判断部902はジェスチャコマンド変換部903と協働して、ジェスチャ操作の指示を装置の動作指示の命令に変換して制御部1000に送信する。この他、ジェスチャ判断部902はUI描画部1100に対して警告表示を指示する。
ジェスチャコマンド変換部903は、ジェスチャ判断部902から受け取った手画像と、予め保持しているジェスチャパターン画像群との間でパターンマッチング処理を行い、手の形状から、これに対応する動作指示の命令に変換する。ジェスチャパターン画像群に一致する手画像が検出された場合、ジェスチャコマンド変換部903は該当する動作指示の命令をジェスチャ判断部902に返信する。ジェスチャパターン画像群に一致する手画像がなければ、ジェスチャコマンド変換部903は「該当なし」をジェスチャ判断部902に返信する。
重なり判定部904は、ジェスチャ判断部902から手位置情報を受信し、操作者の手の位置が重なり領域、つまり可動範囲同士が重なり合う領域内に属するか否かを判断する。その際、空間領域決定部2200が保持する顔情報管理テーブルのデータが参照される。手の位置が重なり領域に属する場合、重なり判定部904は「是」をジェスチャ判断部902に返し、手の位置が重なり領域に属さない場合、「否」を返す。
次に、図26のフローチャートを用いて、重なり判定処理を説明する。重なり判定部904は、対象となる手の位置に対して、全操作者の可動範囲に関する包含判定を行う。その結果、手の位置が複数の可動範囲に属している場合、「重なり領域に属している」と判断され、それ以外の場合、「重なり領域には属さない」と判断される。本処理は、重なり判定部904がジェスチャ判断部902から手位置情報を受け取った時点から開始する。
まず重なり判定部904は、ジェスチャ判断部902から受け取った手位置情報(x_g,y_g,w_g,h_g)から、その手の中心点Ogの座標(Og_x,Og_y)を算出する(S2201)。手が重なり領域に入ったか否かは、この手の中心点Ogが当該空間内に入っているか否かによって近似的に判断される。本実施形態では、手の代表点Ogの算出方法の一例として、手位置情報(x_g,y_g,x_g,h_g)に係る矩形の中心点の座標を(x_g+w_g/2,y_g+h_g/2)とする。なお本例に限らず、Ogを手の重心点として計算してもよい。
S2202において、手の中心点Ogが属する可動範囲の数を計数するためのカウント変数「cnt」の値が初期化され、ゼロが代入される。S2203で重なり判定部904は、全ての操作者、つまり全てのユーザIDに対して、S2204乃至2207の処理を行ったか否かを判定する。全操作者について処理が終了した場合、S2208に進み、未終了の場合、S2204に進む。
まず重なり判定部904は、ジェスチャ判断部902から受け取った手位置情報(x_g,y_g,w_g,h_g)から、その手の中心点Ogの座標(Og_x,Og_y)を算出する(S2201)。手が重なり領域に入ったか否かは、この手の中心点Ogが当該空間内に入っているか否かによって近似的に判断される。本実施形態では、手の代表点Ogの算出方法の一例として、手位置情報(x_g,y_g,x_g,h_g)に係る矩形の中心点の座標を(x_g+w_g/2,y_g+h_g/2)とする。なお本例に限らず、Ogを手の重心点として計算してもよい。
S2202において、手の中心点Ogが属する可動範囲の数を計数するためのカウント変数「cnt」の値が初期化され、ゼロが代入される。S2203で重なり判定部904は、全ての操作者、つまり全てのユーザIDに対して、S2204乃至2207の処理を行ったか否かを判定する。全操作者について処理が終了した場合、S2208に進み、未終了の場合、S2204に進む。
S2204で重なり判定部904は、空間領域決定部2200から、対象となる操作者の可動範囲情報(Oa, Ocの位置座標、及びr)を取得する。S2205にて、手の代表位置OgがS2204で取得した可動範囲情報の示す範囲内に属するか否かについて包含判定が行われる。包含判定方法の一例として、本実施形態では以下のアルゴリズムを採用する。
「Og_x < Oc_x」の場合、「(点Ogと点Oc間の平面距離)≦ r」ならば、包含判定として肯定的結果、つまり「包含する」と判定される。また「(点Ogと点Oc間の平面距離)> r」であるならば、包含判定として否定的結果、つまり「包含しない」と判定される。ここで、2点間の平面距離は三平方の定理を用いて計算される。
また、「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」ならば、「包含しない」と判定される。
「Og_x < Oc_x」の場合、「(点Ogと点Oc間の平面距離)≦ r」ならば、包含判定として肯定的結果、つまり「包含する」と判定される。また「(点Ogと点Oc間の平面距離)> r」であるならば、包含判定として否定的結果、つまり「包含しない」と判定される。ここで、2点間の平面距離は三平方の定理を用いて計算される。
また、「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」ならば、「包含しない」と判定される。
S2205での包含判定結果が「包含する」の場合(S2206のyes)、インクリメント処理によりカウント変数cntの値に1が加算され(S2207)、S2203に戻って、次のユーザIDについて同様の処理を続行する。一方、S2205で包含判定結果が「包含しない」であった場合(S2206のno)、S2203に戻る。
S2208で重なり判定部904は、カウント変数cntの値をチェックし、「cnt > 1」かどうかを判定する。「cnt > 1」の場合、つまり手の位置が複数の可動範囲に属する場合、重なり判定部904は「重なり領域に属する」(是)と判断する(S2209)。また「cnt = 1」の場合、つまり手の位置が複数の可動範囲に属していない場合には、「重なり領域に属さない」と判断される(S2210)。S2209、S2210の後、S2211にて重なり判定部904は、S2209又はS2210での判断結果を、ジェスチャ判断部902に渡す。
S2208で重なり判定部904は、カウント変数cntの値をチェックし、「cnt > 1」かどうかを判定する。「cnt > 1」の場合、つまり手の位置が複数の可動範囲に属する場合、重なり判定部904は「重なり領域に属する」(是)と判断する(S2209)。また「cnt = 1」の場合、つまり手の位置が複数の可動範囲に属していない場合には、「重なり領域に属さない」と判断される(S2210)。S2209、S2210の後、S2211にて重なり判定部904は、S2209又はS2210での判断結果を、ジェスチャ判断部902に渡す。
次に、図27のフローチャートを用いて、ジェスチャ判断部902におけるジェスチャの有効/無効判断処理について説明する。本処理は、ジェスチャ判断部902が手抽出部901から手画像と手位置情報を受け取った時点から開始する。
S2301でジェスチャ判断部902は、重なり判定部904に手位置情報を渡し、手の位置が重なり領域に属するか否かの判定を依頼する。重なり判定部904は判定処理(図26参照)を行い、その結果をジェスチャ判断部902に返す。
S2302にてジェスチャ判断部902は、重なり判定部904からの結果をチェックし、「重なり領域に属する」(是)の場合、その手で行われたジェスチャ操作を「無効」と判断する(S2303)。判定結果が「重なり領域に属さない」(否)の場合、ジェスチャ判断部902は、当該ジェスチャ操作を「有効」と判断する(S2305)。
S2304でジェスチャ判断部902は、当該ジェスチャ操作を「無効」と判断した旨を操作者に通知するために、UI描画部1100に指示する。UI描画部1100はジェスチャ操作が無効となった旨を示す警告用データを作成し、合成部300を介して映像信号をモニタ133に送信し、処理が終了する。
一方、S2305でジェスチャ操作が「有効」と判断された場合、S2306でジェスチャコマンド変換部903は、手画像の表すジェスチャの操作内容を装置の動作指示の命令に変換する。この命令はジェスチャ判断部902を介して制御部1000に送信される。本処理により、ジェスチャ操作に対応する装置の動作制御が行われることとなる。
第3実施形態では、カメラ画像データや距離情報に基づいて算出した二次元の可動範囲において、ジェスチャ操作部位の位置が可動範囲の重なり領域に属するか否かを判断する。その結果、誤認識が起こる可能性がある重なり領域で行われたジェスチャ操作は無効と判断され、重なり領域外で行われたジェスチャ操作が有効と判断される。本実施形態ではジェスチャ操作部位の位置を考慮することで、誤操作が起こらないようにジェスチャ操作を無効化できるので、操作者を煩わせずに済み、利便性が向上する。
S2301でジェスチャ判断部902は、重なり判定部904に手位置情報を渡し、手の位置が重なり領域に属するか否かの判定を依頼する。重なり判定部904は判定処理(図26参照)を行い、その結果をジェスチャ判断部902に返す。
S2302にてジェスチャ判断部902は、重なり判定部904からの結果をチェックし、「重なり領域に属する」(是)の場合、その手で行われたジェスチャ操作を「無効」と判断する(S2303)。判定結果が「重なり領域に属さない」(否)の場合、ジェスチャ判断部902は、当該ジェスチャ操作を「有効」と判断する(S2305)。
S2304でジェスチャ判断部902は、当該ジェスチャ操作を「無効」と判断した旨を操作者に通知するために、UI描画部1100に指示する。UI描画部1100はジェスチャ操作が無効となった旨を示す警告用データを作成し、合成部300を介して映像信号をモニタ133に送信し、処理が終了する。
一方、S2305でジェスチャ操作が「有効」と判断された場合、S2306でジェスチャコマンド変換部903は、手画像の表すジェスチャの操作内容を装置の動作指示の命令に変換する。この命令はジェスチャ判断部902を介して制御部1000に送信される。本処理により、ジェスチャ操作に対応する装置の動作制御が行われることとなる。
第3実施形態では、カメラ画像データや距離情報に基づいて算出した二次元の可動範囲において、ジェスチャ操作部位の位置が可動範囲の重なり領域に属するか否かを判断する。その結果、誤認識が起こる可能性がある重なり領域で行われたジェスチャ操作は無効と判断され、重なり領域外で行われたジェスチャ操作が有効と判断される。本実施形態ではジェスチャ操作部位の位置を考慮することで、誤操作が起こらないようにジェスチャ操作を無効化できるので、操作者を煩わせずに済み、利便性が向上する。
[第4実施形態]
次に本発明の第4実施形態を説明する。第3実施形態では、ジェスチャ操作部位が可動範囲の重なり領域に入った場合、該操作部位がどの操作者の部位であるかを、可動範囲から判別できないため、重なり領域内での操作を一律に無効と判断した。逆を言えば、重なり領域に入ったジェスチャ操作部位がどの操作者の部位であるかを特定可能ならば、そのジェスチャ操作を無効とする必要はなくなる。そこで、第4実施形態ではジェスチャ操作部位の位置を追跡(トレース)し、該操作部位が重なり領域内に入った場合、当該領域に入る前の位置に基づいて操作者を一意に特定する。
ところで2次元でのジェスチャ個別認識方法では、重なり領域内に2つ以上のジェスチャ操作部位が入った場合、図28(a)に示すように、カメラから見て操作部位(手A、B参照)が重なることがある。このため、複数のジェスチャ操作部位を個別に判断できなくなる可能性が生じる。そこで、本実施形態では、複数のジェスチャ操作部位が存在する場合、個々のジェスチャ操作部位が一定距離以上に離れている場合(図28(b)の距離D参照)には、各ジェスチャ操作を有効とする。また、ジェスチャ操作部位同士の距離が、一定距離以内に近づいた場合には、各ジェスチャ操作は無効と判断され、装置は操作者に警告を発する。複数のジェスチャ操作部位が重なり領域内に入ってしまったとしても、カメラから見て両者間の距離が一定距離以上に亘って離隔していればジェスチャ操作が有効と判断される。以下、第3実施形態に同様の構成部や処理に関しては、第3実施形態の場合と同じ符号や記号等を用いることで、それらの詳細な説明を省略する。
次に本発明の第4実施形態を説明する。第3実施形態では、ジェスチャ操作部位が可動範囲の重なり領域に入った場合、該操作部位がどの操作者の部位であるかを、可動範囲から判別できないため、重なり領域内での操作を一律に無効と判断した。逆を言えば、重なり領域に入ったジェスチャ操作部位がどの操作者の部位であるかを特定可能ならば、そのジェスチャ操作を無効とする必要はなくなる。そこで、第4実施形態ではジェスチャ操作部位の位置を追跡(トレース)し、該操作部位が重なり領域内に入った場合、当該領域に入る前の位置に基づいて操作者を一意に特定する。
ところで2次元でのジェスチャ個別認識方法では、重なり領域内に2つ以上のジェスチャ操作部位が入った場合、図28(a)に示すように、カメラから見て操作部位(手A、B参照)が重なることがある。このため、複数のジェスチャ操作部位を個別に判断できなくなる可能性が生じる。そこで、本実施形態では、複数のジェスチャ操作部位が存在する場合、個々のジェスチャ操作部位が一定距離以上に離れている場合(図28(b)の距離D参照)には、各ジェスチャ操作を有効とする。また、ジェスチャ操作部位同士の距離が、一定距離以内に近づいた場合には、各ジェスチャ操作は無効と判断され、装置は操作者に警告を発する。複数のジェスチャ操作部位が重なり領域内に入ってしまったとしても、カメラから見て両者間の距離が一定距離以上に亘って離隔していればジェスチャ操作が有効と判断される。以下、第3実施形態に同様の構成部や処理に関しては、第3実施形態の場合と同じ符号や記号等を用いることで、それらの詳細な説明を省略する。
図29は、ジェスチャ認識部800の構成例を示す機能ブロック図である。以下、図25と相違する構成部(符号1602、1604乃至1606参照)を説明する。
ジェスチャ判断部1602は、検出した全てのジェスチャ操作部位(本例では手)の情報を取得して管理し、それぞれの手によるジェスチャ操作の有効又は無効を判断する。ジェスチャ操作部位の管理には、表6に示すテーブル(以下、手情報管理テーブルという)を使用する。
表6は、ジェスチャ操作部位を識別するID情報と位置情報、画像情報、ユーザID、ジェスチャの有効性を示す情報を含む。手情報管理テーブルは、操作者特定部1604が実行する操作者特定処理で使用されるため、現フレーム映像に対するテーブルデータだけではなく、前フレーム映像におけるテーブルデータも保持している。
ジェスチャ判断部1602は、検出した全てのジェスチャ操作部位(本例では手)の情報を取得して管理し、それぞれの手によるジェスチャ操作の有効又は無効を判断する。ジェスチャ操作部位の管理には、表6に示すテーブル(以下、手情報管理テーブルという)を使用する。
表6は、ジェスチャ操作部位を識別するID情報と位置情報、画像情報、ユーザID、ジェスチャの有効性を示す情報を含む。手情報管理テーブルは、操作者特定部1604が実行する操作者特定処理で使用されるため、現フレーム映像に対するテーブルデータだけではなく、前フレーム映像におけるテーブルデータも保持している。
操作者特定部1604は、ジェスチャ判断部1602から前フレームにおける手情報管理テーブル、及び現フレームにおける手情報管理テーブルからデータを取得する。操作者特定部1604は、後述の第1特定部1605及び第2特定部1606と協働して、検出したジェスチャ操作部位がどの操作者の手であるか、つまりそのユーザIDを特定する。処理の詳細は後述する。
第1特定部1605は、操作者特定部1604から手位置情報を受信し、空間領域決定部2200が保持する顔情報管理テーブルのデータを用いて、検出した手をもつ操作者、つまりそのユーザIDを特定する。ユーザIDが特定された場合、第1特定部1605は操作者特定部1604に、「特定できた」旨とそのユーザIDを返信する。ユーザIDが特定できなかった場合には、「特定できなかった」旨が操作者特定部1604に返信される。本処理の詳細は後述する。
第2特定部1606は、操作者特定部1604からの、対象となる手画像と手位置情報、および前フレーム画像に係る手情報管理テーブルからデータを取得する。第2特定部1606は、前フレームの手の位置とその手のユーザIDから操作者を特定する。すなわち、手が重なり領域に入っていた場合でも、重なり領域に入る前に操作者のユーザIDを特定できていれば、その手がどの操作者の手であるかを特定可能である。操作者が特定できた場合、第2特定部1606は操作者特定部1604に対し、「操作者を特定できた」旨及び特定したユーザIDを返信する。操作者が特定できなかった場合、その旨が操作者特定部1604に返信される。
第1特定部1605は、操作者特定部1604から手位置情報を受信し、空間領域決定部2200が保持する顔情報管理テーブルのデータを用いて、検出した手をもつ操作者、つまりそのユーザIDを特定する。ユーザIDが特定された場合、第1特定部1605は操作者特定部1604に、「特定できた」旨とそのユーザIDを返信する。ユーザIDが特定できなかった場合には、「特定できなかった」旨が操作者特定部1604に返信される。本処理の詳細は後述する。
第2特定部1606は、操作者特定部1604からの、対象となる手画像と手位置情報、および前フレーム画像に係る手情報管理テーブルからデータを取得する。第2特定部1606は、前フレームの手の位置とその手のユーザIDから操作者を特定する。すなわち、手が重なり領域に入っていた場合でも、重なり領域に入る前に操作者のユーザIDを特定できていれば、その手がどの操作者の手であるかを特定可能である。操作者が特定できた場合、第2特定部1606は操作者特定部1604に対し、「操作者を特定できた」旨及び特定したユーザIDを返信する。操作者が特定できなかった場合、その旨が操作者特定部1604に返信される。
次に、可動範囲に基づく操作者特定処理を説明する。本処理における操作者特定方法では、ある手の位置について、全操作者の可動範囲に属するか否かの包含判定を行う。その結果、手の位置が1人の操作者のみの可動範囲に属する場合、その手は該操作者の手であると特定される。また手の位置が、如何なる操作者の可動範囲にも属さない場合、または複数の可動範囲に属する場合には、その手がどの操作者の手であるかが特定できなかったと判断される。
以下、図30のフローチャートを用いて、第1特定部1605の処理を説明する。本処理は、第1特定部1605が操作者特定部1604から手位置情報とともに、操作者特定の依頼を受け取った時点から開始する。図26と相違するS2409乃至2413の処理を以下に説明する。
S2207の後、S2409に進み、第1特定部1605は、対象となる手を包含する可動範囲に対応する操作者のユーザIDを保持する。そして、S2203に戻る。
S2208にて第1特定部1605は、カウント変数cntの値をチェックする。cnt値が1の場合、すなわち、手の位置が1人の操作者の可動範囲のみに属する場合、第1特定部1605は「操作者を特定できた」と判断する(S2410)。そしてS2411にて第1特定部1605は、「操作者を特定できた」旨のデータを、前記S2409で保存したユーザIDとともに、操作者特定部1604に返信する。一方、cnt値が1でない場合、すなわち、手の位置がどの操作者の可動範囲にも属さないか、または、複数の操作者の可動範囲に属する場合、第1特定部1605は「操作者を特定できなかった」と判断する(S2412)。そしてS2413で第1特定部1605は、「操作者を特定できなかった」旨のデータを操作者特定部1604に返信する。
S2207の後、S2409に進み、第1特定部1605は、対象となる手を包含する可動範囲に対応する操作者のユーザIDを保持する。そして、S2203に戻る。
S2208にて第1特定部1605は、カウント変数cntの値をチェックする。cnt値が1の場合、すなわち、手の位置が1人の操作者の可動範囲のみに属する場合、第1特定部1605は「操作者を特定できた」と判断する(S2410)。そしてS2411にて第1特定部1605は、「操作者を特定できた」旨のデータを、前記S2409で保存したユーザIDとともに、操作者特定部1604に返信する。一方、cnt値が1でない場合、すなわち、手の位置がどの操作者の可動範囲にも属さないか、または、複数の操作者の可動範囲に属する場合、第1特定部1605は「操作者を特定できなかった」と判断する(S2412)。そしてS2413で第1特定部1605は、「操作者を特定できなかった」旨のデータを操作者特定部1604に返信する。
次に、図31のフローチャートを用いて、操作者特定部1604の処理例を説明する。本処理は、操作者特定部1604がジェスチャ判断部1602から、現フレーム画像における手情報管理テーブルと、前フレーム画像における手情報管理テーブルの各データを受け取った時点から開始する。
S2901にて操作者特定部1604は、手情報管理テーブルに格納された1つの手に関する情報(手画像、および手位置情報)を取得する。S2902で操作者特定部1604は、第1特定部1605に対し、取得した手位置情報を送信し、その手の操作者特定処理を依頼する(図30参照)。すると、第1特定部1605は、可動範囲に基づく操作者特定処理を実行し、結果を操作者特定部1604に返す。S2903で操作者特定部1604は、第1特定部1604から操作者特定結果を取得してその内容を判定する。判定結果が「操作者を特定できた」の場合、S2904に進み、判定結果が「操作者を特定できなかった」の場合、S2905に進む。
S2904で操作者特定部1604は、特定対象である手の「操作者を特定できた」と判断し、特定したユーザIDを手情報管理テーブルに保存する。前記表6の例では、ユーザ情報欄にユーザIDが記入される。そしてS2908に進む。またS2905にて操作者特定部1604は、第2特定部1606に対し、前記S2901で取得した手情報と前フレーム画像における手情報管理テーブルのデータを送信し、その手がどの操作者の手であるかの特定処理を依頼する。第2特定部1606は、重なり領域に進入した時点よりも前のフレームでの手の情報に基づき、重なり領域内に進入した手がどの操作者の手であるかを特定する。操作者が特定された場合、その結果(特定されたユーザID)が操作者特定部1604に通知され、操作者が特定されなかった場合、その旨が操作者特定部1604に通知される。S2906で操作者特定部1604は、第2特定部1606から結果を取得して内容を判定する。判定結果が「操作者を特定できた」の場合、S2904に進み、判定結果が「操作者を特定できなかった」の場合、S2907に進む。
S2907で操作者特定部1604は、その手をもつ操作者を特定できなかったと判断し、その旨のデータを手情報管理テーブルに保存する(前記表6のユーザ情報欄「×」参照)。S2904又はS2907の後、S2908に進み、操作者特定部1604は、全ての手に対して操作者の特定処理を行ったか否かを判断する。全ての手について操作者特定処理が完了した場合、S2909に進み、完了していない場合、S2901に戻って、残りの手について処理を続行する。
S2909で操作者特定部1604は、ジェスチャ判断部1602に対し、結果を記入した手情報管理テーブルのデータを送信し、処理を終了する。
S2901にて操作者特定部1604は、手情報管理テーブルに格納された1つの手に関する情報(手画像、および手位置情報)を取得する。S2902で操作者特定部1604は、第1特定部1605に対し、取得した手位置情報を送信し、その手の操作者特定処理を依頼する(図30参照)。すると、第1特定部1605は、可動範囲に基づく操作者特定処理を実行し、結果を操作者特定部1604に返す。S2903で操作者特定部1604は、第1特定部1604から操作者特定結果を取得してその内容を判定する。判定結果が「操作者を特定できた」の場合、S2904に進み、判定結果が「操作者を特定できなかった」の場合、S2905に進む。
S2904で操作者特定部1604は、特定対象である手の「操作者を特定できた」と判断し、特定したユーザIDを手情報管理テーブルに保存する。前記表6の例では、ユーザ情報欄にユーザIDが記入される。そしてS2908に進む。またS2905にて操作者特定部1604は、第2特定部1606に対し、前記S2901で取得した手情報と前フレーム画像における手情報管理テーブルのデータを送信し、その手がどの操作者の手であるかの特定処理を依頼する。第2特定部1606は、重なり領域に進入した時点よりも前のフレームでの手の情報に基づき、重なり領域内に進入した手がどの操作者の手であるかを特定する。操作者が特定された場合、その結果(特定されたユーザID)が操作者特定部1604に通知され、操作者が特定されなかった場合、その旨が操作者特定部1604に通知される。S2906で操作者特定部1604は、第2特定部1606から結果を取得して内容を判定する。判定結果が「操作者を特定できた」の場合、S2904に進み、判定結果が「操作者を特定できなかった」の場合、S2907に進む。
S2907で操作者特定部1604は、その手をもつ操作者を特定できなかったと判断し、その旨のデータを手情報管理テーブルに保存する(前記表6のユーザ情報欄「×」参照)。S2904又はS2907の後、S2908に進み、操作者特定部1604は、全ての手に対して操作者の特定処理を行ったか否かを判断する。全ての手について操作者特定処理が完了した場合、S2909に進み、完了していない場合、S2901に戻って、残りの手について処理を続行する。
S2909で操作者特定部1604は、ジェスチャ判断部1602に対し、結果を記入した手情報管理テーブルのデータを送信し、処理を終了する。
次に図32のフローチャートを用いて、ジェスチャ判断部1602の処理例を説明する。本処理は、ジェスチャ判断部1602が手抽出部901から、検出した全ての手画像と手位置情報を受け取った時点から開始する。
S3001でジェスチャ判断部1602は、現時点のカメラ映像における手情報管理テーブルを新たに作成し、手抽出部901から受け取った手画像のデータと、手位置情報を格納する。S3002でジェスチャ判断部1602は、操作者特定部1604に対し、現フレーム画像及び前フレーム画像に係る手情報管理テーブルの各データを送信し、現フレーム画像で検出した手について、ユーザIDの特定処理を依頼する。操作者特定部1604は前述した操作者特定処理を実行し、結果を記入した手情報管理テーブルのデータを、ジェスチャ判断部1602に返信する。前記表6の例に示すユーザ情報欄には、操作者が特定された場合、そのユーザIDが記入され、操作者が特定できなかった場合、「×」が記入される。
S3003でジェスチャ判断部1602は、現フレーム画像における手情報管理テーブルから、ある1つの手(以下、「手(A)」と記す)に関する情報を取得する。該情報は手位置情報、ユーザ情報等を含む。S3004でジェスチャ判断部1602は、手(A)のユーザ情報に基づき、手(A)について操作者が特定できたか否かを判断する。手(A)の操作者が特定できた場合、すなわち手情報管理テーブルのユーザ情報欄に該当するユーザIDが格納されていた場合、S3006に進む。手(A)の操作者が特定できなかった場合、すなわちユーザ情報欄に「×」のデータが格納されていた場合、S3005に進む。
S3005でジェスチャ判断部1602は、操作者の特定ができなかった手の操作を「無効」と判断し、その旨のデータを手情報管理テーブルに保存する。前記表6の例では、ジェスチャ有効/無効情報欄に「無効」が記入される。
S3001でジェスチャ判断部1602は、現時点のカメラ映像における手情報管理テーブルを新たに作成し、手抽出部901から受け取った手画像のデータと、手位置情報を格納する。S3002でジェスチャ判断部1602は、操作者特定部1604に対し、現フレーム画像及び前フレーム画像に係る手情報管理テーブルの各データを送信し、現フレーム画像で検出した手について、ユーザIDの特定処理を依頼する。操作者特定部1604は前述した操作者特定処理を実行し、結果を記入した手情報管理テーブルのデータを、ジェスチャ判断部1602に返信する。前記表6の例に示すユーザ情報欄には、操作者が特定された場合、そのユーザIDが記入され、操作者が特定できなかった場合、「×」が記入される。
S3003でジェスチャ判断部1602は、現フレーム画像における手情報管理テーブルから、ある1つの手(以下、「手(A)」と記す)に関する情報を取得する。該情報は手位置情報、ユーザ情報等を含む。S3004でジェスチャ判断部1602は、手(A)のユーザ情報に基づき、手(A)について操作者が特定できたか否かを判断する。手(A)の操作者が特定できた場合、すなわち手情報管理テーブルのユーザ情報欄に該当するユーザIDが格納されていた場合、S3006に進む。手(A)の操作者が特定できなかった場合、すなわちユーザ情報欄に「×」のデータが格納されていた場合、S3005に進む。
S3005でジェスチャ判断部1602は、操作者の特定ができなかった手の操作を「無効」と判断し、その旨のデータを手情報管理テーブルに保存する。前記表6の例では、ジェスチャ有効/無効情報欄に「無効」が記入される。
S3006に進んだ場合、ジェスチャ判断部1602は、現フレーム画像における手情報管理テーブルから、手(A)以外の手(以下、「手(B)」と記す)の手位置情報を取得する。S3007でジェスチャ判断部1602は、手(A)と手(B)の位置情報に基づき、2つの手の間の距離を算出する。ここで、手(A)と手(B)との距離は、それぞれの手画像の矩形領域における中心点間の平面距離であり、これを「Dab」と記す。S3008でジェスチャ判断部1602は、算出した距離Dabを用いて、手(A)と手(B)の位置が一定距離(以下、距離判定の閾値を「Dn」と記す)以上離れているか否かを判定する。ここで、閾値Dnは、次にフレーム画像が撮影される時刻において、手(A)と手(B)が接近する方向に移動した時に丁度重なってしまう距離よりも、少し長い距離に設定する。その理由は、次のフレームにおいて、両者の手が重なることによる誤認識を早期に発見できるようにするためである。ここで、1フレームの時間内に手が動く距離を「D」とすると、これは、手とカメラとの距離d_gに依存する。このため、予め距離d_gごとにD値を測定しておくことで、そのデータは保持されているものとする。この値より、手(A)および手(B)が1フレームの時間内に動く平面距離(pixel数)が求まれば、Dn値が決定可能である。つまり、「Dn > (手(A)が1フレームの時間内に動く平面距離)+(手(B)が1フレームの時間内に動く平面距離)」を満たすように、Dn値が規定される。
比較の結果、上記で算出した手(A)と手(B)との距離が閾値以上(Dab≧Dn)離れている場合、すなわち次フレームにおいて、手(A)が手(B)と重なることはないと判断された場合、S3009に進む。また、上記で算出した手(A)と手(B)との距離が閾値未満(Dab<Dn)であった場合、すなわち次フレームにおいて、手(A)が手(B)と重なる可能性があると判断された場合、S3010に進む。
S3009でジェスチャ判断部1602は、手(A)のジェスチャ操作を「有効」と判断し、その情報を保存する。前記表6の手情報管理テーブルにおいては、ジェスチャ有効/無効情報欄が「有効」とされる。
S3010でジェスチャ判断部1602は、手(A)と手(B)のユーザ情報を取得し、それらの手が同一の操作者の手かどうか、つまり、ユーザIDが同一かどうかを判断する。手(A)と手(B)が同一操作者の手であった場合、両方の手で行うジェスチャの可能性があるため、手(A)のジェスチャ操作が「有効」と判断される(S3009)。一方、手(A)と手(B)が同一操作者の手ではない場合、次フレームにおいて、手(A)が他の操作者の手(B)が重なることによる誤操作が起こる可能性がある。そこでジェスチャ判断部1602は、手(A)のジェスチャ操作を「無効」と判断し、その情報を保存する(S3011)。前記表6の例では、ジェスチャ有効/無効情報欄に「無効」が記入される。
S3009でジェスチャ判断部1602は、手(A)のジェスチャ操作を「有効」と判断し、その情報を保存する。前記表6の手情報管理テーブルにおいては、ジェスチャ有効/無効情報欄が「有効」とされる。
S3010でジェスチャ判断部1602は、手(A)と手(B)のユーザ情報を取得し、それらの手が同一の操作者の手かどうか、つまり、ユーザIDが同一かどうかを判断する。手(A)と手(B)が同一操作者の手であった場合、両方の手で行うジェスチャの可能性があるため、手(A)のジェスチャ操作が「有効」と判断される(S3009)。一方、手(A)と手(B)が同一操作者の手ではない場合、次フレームにおいて、手(A)が他の操作者の手(B)が重なることによる誤操作が起こる可能性がある。そこでジェスチャ判断部1602は、手(A)のジェスチャ操作を「無効」と判断し、その情報を保存する(S3011)。前記表6の例では、ジェスチャ有効/無効情報欄に「無効」が記入される。
S3009、S3011の後、S3012でジェスチャ判断部1602は、手(A)と、手情報管理テーブルに登録された他の全ての手(B)に対して、相互の距離の比較処理を完了したか否かを判定する。手(A)以外の全ての手について、手(A)との距離を比較する処理が完了した場合、S3013に進み、該処理が完了していない場合、S3006に戻る。S3013でジェスチャ判断部1602は、手情報管理テーブルに登録された全ての手に対して、ジェスチャ操作の有効性に関する判断が終了したか否かを確認する。全て手について判断処理が終了した場合、S3014に進み、該判断処理が未終了の場合にはS3003に戻る。
S3014でジェスチャ判断部1602は手情報管理テーブルから、ジェスチャ操作が「有効」と判断された手についての情報を抽出する。S3015でジェスチャ判断部1602は、抽出した手画像、および手位置情報をジェスチャコマンド変換部903に送信し、ジェスチャ操作に対応する動作指示の命令に変換する。S3016でジェスチャ判断部1602は、変換した動作指示の命令を制御部1000に送信する。こうして、操作者がその手で行ったジェスチャ操作に従って、装置では該操作に対応する動作が行われることとなる。一方、ジェスチャ操作が「無効」と判断された手に関して、そのジェスチャ操作が装置の動作に反映されることはない。なお、その場合には操作者に対し、無効になった旨やその理由等の通知が表示又は音声で行われる。
S3014でジェスチャ判断部1602は手情報管理テーブルから、ジェスチャ操作が「有効」と判断された手についての情報を抽出する。S3015でジェスチャ判断部1602は、抽出した手画像、および手位置情報をジェスチャコマンド変換部903に送信し、ジェスチャ操作に対応する動作指示の命令に変換する。S3016でジェスチャ判断部1602は、変換した動作指示の命令を制御部1000に送信する。こうして、操作者がその手で行ったジェスチャ操作に従って、装置では該操作に対応する動作が行われることとなる。一方、ジェスチャ操作が「無効」と判断された手に関して、そのジェスチャ操作が装置の動作に反映されることはない。なお、その場合には操作者に対し、無効になった旨やその理由等の通知が表示又は音声で行われる。
第4実施形態では、ジェスチャ操作部位の位置が可動範囲の重なり領域に属する場合でも、当該部位の位置のトレース処理により、操作者の特定が可能となる。更に、複数のジェスチャ操作部位が重なることによって起こり得る誤動作については、重なり領域に属する全ての部位同士の距離を監視することにより、未然防止が可能である。
600,1200,2200 空間領域決定部
700,1500 空間領域割当部
800 ジェスチャ認識部
902,1602 ジェスチャ判断部
1100 ユーザインターフェース描画部
1400 操作状態監視部
700,1500 空間領域割当部
800 ジェスチャ認識部
902,1602 ジェスチャ判断部
1100 ユーザインターフェース描画部
1400 操作状態監視部
Claims (8)
- ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在すると判定した場合、重なり合う範囲を前記可動範囲から除外した範囲を、重なる領域が存在する可動範囲に対応する操作者のジェスチャ認識範囲としてそれぞれ設定する領域割当手段と、
前記操作者を撮影した画像データと、前記領域割当手段によって割り当てられた各操作者のジェスチャ認識範囲に基づいて、前記ジェスチャ認識範囲に対応する操作者のジェスチャ操作部位に応じた操作指示を検知し、当該検知したジェスチャに対応する動作指示の命令を発行するジェスチャ認識手段を備えたことを特徴とするジェスチャ認識装置。 - 前記領域割当手段によって前記可動範囲の割当が変更された場合、変更の旨又は変更後に操作者が操作可能な範囲を操作者に通知するデータを生成する通知制御手段を備えることを特徴とする、請求項1記載のジェスチャ認識装置。
- 前記操作者の操作状態を監視する操作状態監視手段を備え、
前記領域割当手段は、前記操作状態監視手段から前記操作者の操作状態を示す情報を受け取り、操作中でないと判定した操作者に対して前記可動範囲の割当を行い、操作中であると判定した操作者に対してはその操作終了後に前記可動範囲の割当を行うことを特徴とする、請求項1または2に記載のジェスチャ認識装置。 - 操作中であると判定された前記操作者に対して、その操作終了後に前記可動範囲の割当を行う旨を操作者に通知するデータを生成する通知制御手段を備えることを特徴とする、請求項3記載のジェスチャ認識装置。
- ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在すると判定した場合、重なる領域内でのジェスチャ操作部位による操作指示を無効と判断し、重なる領域内でのジェスチャ操作部位による操作指示を有効と判断する判断手段を備えたことを特徴とするジェスチャ認識装置。 - ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在しており、かつ重なる領域内に複数のジェスチャ操作部位が位置し、かつ複数の該ジェスチャ操作部位の間の距離が閾値未満である場合、各ジェスチャ操作部位による操作指示を無効と判断し、前記距離が閾値以上である場合、各ジェスチャ操作部位による操作指示を有効と判断する判断手段を備えたことを特徴とするジェスチャ認識装置。 - ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識装置であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する領域決定手段と、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定し、重なる領域が存在しており、かつ重なる領域内に複数のジェスチャ操作部位が位置して複数の該ジェスチャ操作部位の間の距離が閾値未満である場合、前記複数のジェスチャ操作部位が同一操作者のジェスチャ操作部位であるか否かを判断し、前記複数のジェスチャ操作部位が同一操作者のジェスチャ操作部位である場合に該ジェスチャ操作部位による操作指示を有効と判断し、前記複数のジェスチャ操作部位が同一操作者のジェスチャ操作部位でない場合に該ジェスチャ操作部位による操作指示を無効と判断する判断手段を備えたことを特徴とするジェスチャ認識装置。 - ジェスチャにより操作指示を入力する複数の操作者が存在する場合に、各操作者のジェスチャ操作部位を認識して操作制御を行うためのジェスチャ認識方法であって、
操作者を撮影した画像データと、操作者までの距離を測定する距離センサによって求められる距離情報に基づき、複数の操作者ごとに、各操作者のジェスチャ操作部位を認識し、各操作者のジェスチャ操作部位に係る可動範囲を算出する算出ステップと、
算出された複数の可動範囲が空間上で重なる領域が存在するか否かを判定する判定ステップと、
前記判定ステップにて前記重なる領域が存在すると判定した場合、重なり合う範囲を前記可動範囲から除外した範囲を、重なる領域が存在する可動範囲に対応する操作者のジェスチャ認識範囲としてそれぞれ設定する領域割当ステップと、
前記操作者を撮影した画像データと、前記領域割当手段によって割り当てられた各操作者のジェスチャ認識範囲に基づいて、前記ジェスチャ認識範囲に対応する操作者のジェスチャ操作部位に応じた操作指示を検知し、当該検知したジェスチャに対応する動作指示の命令を発行するジェスチャ認識ステップを有することを特徴とするジェスチャ認識方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010115189A JP2011243031A (ja) | 2010-05-19 | 2010-05-19 | ジェスチャ認識装置及びジェスチャ認識方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010115189A JP2011243031A (ja) | 2010-05-19 | 2010-05-19 | ジェスチャ認識装置及びジェスチャ認識方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011243031A true JP2011243031A (ja) | 2011-12-01 |
Family
ID=45409608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010115189A Pending JP2011243031A (ja) | 2010-05-19 | 2010-05-19 | ジェスチャ認識装置及びジェスチャ認識方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011243031A (ja) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013129590A1 (ja) * | 2012-02-29 | 2013-09-06 | 株式会社 東芝 | 超音波診断装置、医用画像診断装置及び超音波診断装置制御プログラム |
JP2013250637A (ja) * | 2012-05-30 | 2013-12-12 | Toshiba Corp | 認識装置 |
JP2014048937A (ja) * | 2012-08-31 | 2014-03-17 | Omron Corp | ジェスチャ認識装置、その制御方法、表示機器、および制御プログラム |
JP2014081788A (ja) * | 2012-10-16 | 2014-05-08 | Canon Inc | ハンドジェスチャ認識装置及びその制御方法 |
WO2014141504A1 (ja) | 2013-03-11 | 2014-09-18 | Necソリューションイノベータ株式会社 | 3次元ユーザインタフェース装置及び3次元操作処理方法 |
WO2015015843A1 (ja) * | 2013-08-02 | 2015-02-05 | 三菱電機株式会社 | ジェスチャー判定装置及び方法、並びにジェスチャー操作装置、並びにプログラム及び記録媒体 |
JP2015041381A (ja) * | 2013-08-21 | 2015-03-02 | 株式会社リコー | 移動物体検出方法及びシステム |
JP2015095164A (ja) * | 2013-11-13 | 2015-05-18 | オムロン株式会社 | ジェスチャ認識装置およびジェスチャ認識装置の制御方法 |
JP2015210684A (ja) * | 2014-04-25 | 2015-11-24 | 富士通株式会社 | 入力制御装置、制御方法および制御プログラム |
CN105376477A (zh) * | 2014-08-08 | 2016-03-02 | 卡西欧计算机株式会社 | 检测装置以及检测方法 |
JP5928757B2 (ja) * | 2012-11-06 | 2016-06-01 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置 |
KR101654464B1 (ko) * | 2015-03-24 | 2016-09-05 | 두산중공업 주식회사 | 전자기기를 원격으로 제어하는 장치 및 방법 |
US9836130B2 (en) | 2014-12-26 | 2017-12-05 | Nextedge Technology K.K. | Operation input device, operation input method, and program |
JP2018508880A (ja) * | 2015-01-28 | 2018-03-29 | テラリコン インコーポレイテッド | タッチレス高度画像処理及び視覚化 |
WO2022064631A1 (ja) * | 2020-09-25 | 2022-03-31 | 日本電気株式会社 | 画像解析システム及び画像解析方法 |
-
2010
- 2010-05-19 JP JP2010115189A patent/JP2011243031A/ja active Pending
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013129590A1 (ja) * | 2012-02-29 | 2013-09-06 | 株式会社 東芝 | 超音波診断装置、医用画像診断装置及び超音波診断装置制御プログラム |
CN104023645A (zh) * | 2012-02-29 | 2014-09-03 | 株式会社东芝 | 超声波诊断装置、医用图像诊断装置及超声波诊断装置控制程序 |
JP2013250637A (ja) * | 2012-05-30 | 2013-12-12 | Toshiba Corp | 認識装置 |
JP2014048937A (ja) * | 2012-08-31 | 2014-03-17 | Omron Corp | ジェスチャ認識装置、その制御方法、表示機器、および制御プログラム |
JP2014081788A (ja) * | 2012-10-16 | 2014-05-08 | Canon Inc | ハンドジェスチャ認識装置及びその制御方法 |
JPWO2014073384A1 (ja) * | 2012-11-06 | 2016-09-08 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置 |
JP5928757B2 (ja) * | 2012-11-06 | 2016-06-01 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置 |
WO2014141504A1 (ja) | 2013-03-11 | 2014-09-18 | Necソリューションイノベータ株式会社 | 3次元ユーザインタフェース装置及び3次元操作処理方法 |
US10007351B2 (en) | 2013-03-11 | 2018-06-26 | Nec Solution Innovators, Ltd. | Three-dimensional user interface device and three-dimensional operation processing method |
WO2015015843A1 (ja) * | 2013-08-02 | 2015-02-05 | 三菱電機株式会社 | ジェスチャー判定装置及び方法、並びにジェスチャー操作装置、並びにプログラム及び記録媒体 |
JP2015041381A (ja) * | 2013-08-21 | 2015-03-02 | 株式会社リコー | 移動物体検出方法及びシステム |
JP2015095164A (ja) * | 2013-11-13 | 2015-05-18 | オムロン株式会社 | ジェスチャ認識装置およびジェスチャ認識装置の制御方法 |
JP2015210684A (ja) * | 2014-04-25 | 2015-11-24 | 富士通株式会社 | 入力制御装置、制御方法および制御プログラム |
CN105376477A (zh) * | 2014-08-08 | 2016-03-02 | 卡西欧计算机株式会社 | 检测装置以及检测方法 |
US9779290B2 (en) | 2014-08-08 | 2017-10-03 | Casio Computer Co., Ltd. | Detecting apparatus, detecting method and computer readable recording medium recording program for detecting state in predetermined area within images |
JP2016039625A (ja) * | 2014-08-08 | 2016-03-22 | カシオ計算機株式会社 | 検出装置、検出方法及びプログラム |
CN105376477B (zh) * | 2014-08-08 | 2018-10-16 | 卡西欧计算机株式会社 | 检测装置以及检测方法 |
US9836130B2 (en) | 2014-12-26 | 2017-12-05 | Nextedge Technology K.K. | Operation input device, operation input method, and program |
JP2018508880A (ja) * | 2015-01-28 | 2018-03-29 | テラリコン インコーポレイテッド | タッチレス高度画像処理及び視覚化 |
JP2019133678A (ja) * | 2015-01-28 | 2019-08-08 | テラリコン インコーポレイテッド | タッチレス高度画像処理及び視覚化 |
KR101654464B1 (ko) * | 2015-03-24 | 2016-09-05 | 두산중공업 주식회사 | 전자기기를 원격으로 제어하는 장치 및 방법 |
WO2022064631A1 (ja) * | 2020-09-25 | 2022-03-31 | 日本電気株式会社 | 画像解析システム及び画像解析方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011243031A (ja) | ジェスチャ認識装置及びジェスチャ認識方法 | |
JP5706340B2 (ja) | 顔検出及びホットスポットの動きによりメディアを制御する方法 | |
KR101698847B1 (ko) | 다수의 심도 카메라들로부터의 데이터를 결합하기 위한 시스템 및 방법 | |
JP6028351B2 (ja) | 制御装置、電子機器、制御方法、及びプログラム | |
JP5619775B2 (ja) | マルチメディアの表示から情報を制御及び要求する方法 | |
RU2598598C2 (ru) | Устройство обработки информации, система обработки информации и способ обработки информации | |
WO2014162554A1 (ja) | 画像処理システムおよび画像処理用プログラム | |
CN106663127A (zh) | 一种虚拟机器人的交互方法、系统及机器人 | |
KR20130125367A (ko) | 콘텐츠의 시청자 기반 제공 및 맞춤화 | |
KR20110140090A (ko) | 표시 장치 | |
TW201101152A (en) | Light pointing touch panel display device and related touch panel detecting method | |
KR20120072009A (ko) | 다중 사용자의 인터렉션 인식 장치 및 방법 | |
US20130076625A1 (en) | Pointing control device, integrated circuit thereof and pointing control method | |
US20200225814A1 (en) | Information processing apparatus, control method, and program | |
JP2010087907A (ja) | 映像合成表示装置、映像表示システム及び映像表示方法 | |
JPWO2013183110A1 (ja) | 情報処理装置、方法およびプログラム | |
JP5316248B2 (ja) | テレビ会議装置、テレビ会議方法、そのプログラム | |
JP6641386B2 (ja) | ヘッドマウントディスプレイ連携表示システム、及び、表示装置とヘッドマウントディスプレイとを含むシステム、及び、その表示装置 | |
JP2016213674A (ja) | 表示制御システム、表示制御装置、表示制御方法、及びプログラム | |
CN110597391A (zh) | 显示控制方法、装置、计算机设备及存储介质 | |
KR100845274B1 (ko) | 관람자의 시선 방향을 고려한 전시 시스템의 인터페이스방법 및 장치 | |
JPH11174948A (ja) | 手動作認識装置 | |
KR20090060698A (ko) | 가상 멀티 터치 스크린을 이용한 인터페이스 장치 및 그제어 방법 | |
US20220345619A1 (en) | Apparatus, image processing system, communication system, method for setting, image processing method, and recording medium | |
KR101560474B1 (ko) | 3차원 사용자 인터페이스를 제공하는 스테레오스코픽 디스플레이 장치 및 방법 |