ところが、特許文献1の計測装置では、人間の位置などを計測することはできるが、指さしなどの腕を使ったジェスチャを認識することはできない。また、特許文献2のジェスチャスイッチは検知対象エリア内に設定されている入力空間の近傍でなければ、所定のジェスチャを認識することが出来ない。つまり、このジェスチャスイッチでは、人間などが移動する空間において、任意の位置で行なわれる腕を使ったジェスチャを認識することができない。
それゆえに、この発明の主たる目的は、新規な、ジェスチャ管理システム、ジェスチャ管理プログラム、ジェスチャ管理方法、指さし認識装置を提供することである。
この発明の他の目的は、任意の位置で行われる腕を使ったジェスチャを適切に認識することができる、ジェスチャ管理システム、ジェスチャ管理プログラムおよびジェスチャ管理方法を提供することである。
この発明のその他の目的は、指さしを適切に認識することが出来る、指さし認識装置を提供することである。
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために記述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
第1の発明は、複数の距離画像センサ、腕を使ったジェスチャを距離画像センサ毎に認識する認識手段、腕を使ったジェスチャの認識に利用した距離画像センサを記憶する記憶手段、記憶手段によって記憶された距離画像センサから、腕を使ったジェスチャを適切に認識したときに利用された距離画像センサを特定する特定手段、および特定手段によって特定された距離画像センサを利用して認識された腕を使ったジェスチャを、認識結果として登録する登録手段を備える、ジェスチャ管理システムである。
第1の発明では、ジェスチャ管理システム(100:実施例において対応する部分を例示する参照符号。以下、同じ。)は、たとえば複数の距離画像センサ(12)が天井に設けられる空間で利用される。認識手段(60,S1)は、複数の距離画像センサに対応付けて腕を使ったジェスチャに認識する。記憶手段(60,S5)は、たとえば複数の距離画像センサのうち、腕を使ったジェスチャの認識に利用した距離画像センサの識別情報を記憶する。特定手段(60,S7)は、腕を使ったジェスチャの認識に利用した距離画像センサの中から、腕を使ったジェスチャを適切に認識したときに利用した距離画像センサを特定する。登録手段(60,S15)は、たとえば特定された距離画像センサを利用して認識した腕を使ったジェスチャを、認識結果として登録する。
第1の発明によれば、たとえば人間が空間内の任意の位置で腕を使ったジェスチャを行っても、腕を使ったジェスチャを適切に認識している距離画像センサを特定することが出来る。したがって、空間内の任意の位置で人間が腕を使ったジェスチャを行っても、そのジェスチャを適切に認識することが出来る。
第2の発明は、第1の発明に従属し、距離画像センサは、距離画像を出力し、特定手段は、距離画像センサから出力される距離画像における、腕を使ったジェスチャを行う人間の大きさに基づいて、腕を使ったジェスチャを適切に認識したときに利用された距離画像センサを特定する。
第2の発明では、複数の距離画像センサはそれぞれ距離画像を出力する。出力された距離画像における人間の大きさに基づいて、腕を使ったジェスチャを適切に認識したときに利用した距離画像センサが特定される。
第3の発明は、第2の発明に従属し、人間の大きさは、距離画像のピクセル数によって示される。
第3の発明では、たとえば、複数の距離画像センサはそれぞれ異なる位置に設けられている。そのため、各距離画像センサから出力される距離画像では、人間の大きさを示すピクセル数は異なる。
第2の発明または第3の発明によれば、距離画像における人間の大きさを利用することで、距離画像センサを特定するまでの時間を短縮することが出来る。
第4の発明は、第1の発明ないし第3の発明のいずれかに従属し、腕を使ったジェスチャの認識に利用されていない距離画像センサのうち、そのジェスチャを観察可能な距離画像センサを検索する検索手段をさらに備え、登録手段は、検索手段によって腕を使ったジェスチャを観察可能な距離画像センサが発見されないとき、特定手段によって特定された距離画像センサを利用して認識された腕を使ったジェスチャを、認識結果として登録する。
第4の発明では、検索手段(60,S11)は、腕を使ったジェスチャの認識に利用されていない距離画像センサの中から、そのジェスチャを観察可能な距離画像センサを検索する。検索手段によって腕を使ったジェスチャを観察可能な距離画像センサが発見されなければ、登録手段は、特定された距離画像センサによって認識された腕を使ったジェスチャを、認識結果として登録する。たとえば、腕を使ったジェスチャを観察可能な距離画像センサが発見された場合は、腕を使ったジェスチャを誤認識している可能性が高い。つまり、検索によって腕を使ったジェスチャが誤認識されていないかを確認することができる。
第4の発明によれば、腕を使ったジェスチャの認識結果を統合する前に腕を使ったジェスチャが誤認識されていないかを確認することで、認識結果を統合する精度を高めることが出来る。
第5の発明は、第1の発明ないし第4の発明のいずれかに従属し、腕を使ったジェスチャは、指さしジェスチャを含み、登録手段は、指さしジェスチャにおける指さし方向(Px)を登録する。
第5の発明によれば、指さしジェスチャの認識結果として指さし方向を登録することができる。
第6の発明は、複数の距離画像センサを有する、ジェスチャ管理システムのプロセッサを、腕を使ったジェスチャを距離画像センサ毎に認識する認識手段、腕を使ったジェスチャの認識に利用した距離画像センサを記憶する記憶手段、記憶手段によって記憶された距離画像センサから、腕を使ったジェスチャを適切に認識したときに利用された距離画像センサを特定する特定手段、および特定手段によって特定された距離画像センサを利用して認識された腕を使ったジェスチャを、認識結果として登録する登録手段として機能させる、ジェスチャ管理プログラムである。
第6の発明でも、第1の発明と同様の効果を得ることが出来る。
第7の発明は、複数の距離画像センサを有する、ジェスチャ管理システムにおけるジェスチャ管理方法であって、ジェスチャ管理システムのプロセッサが、腕を使ったジェスチャを距離画像センサ毎に認識する認識ステップ、腕を使ったジェスチャの認識に利用した距離画像センサを記憶する記憶ステップ、記憶ステップによって記憶された距離画像センサから、腕を使ったジェスチャを適切に認識したときに利用された距離画像センサを特定する特定ステップ、および特定ステップによって特定された距離画像センサを利用して認識された腕を使ったジェスチャを、認識結果として登録する登録ステップを実行する、ジェスチャ管理方法である。
第7の発明でも、第1の発明と同様の効果を得ることが出来る。
第8の発明は、距離画像を出力する距離画像センサ、人間が存在する空間の距離画像に基づいて、体の特徴点を抽出する第1抽出手段、特徴点に基づいて、距離画像から候補点を抽出する第2抽出手段、特徴点と候補点とを含む領域があるとき、その領域を腕領域として記憶する第1記憶手段、および特徴点と腕領域に含まれる候補点とに基づいて、指さし方向を記憶する第2記憶手段を備える、指さし認識装置である。
第8の発明では、指さし認識装置(10)の複数の距離画像センサ(12)は、たとえば人間が存在する空間の天井に設けられる。第1抽出手段(60,S33)は、たとえば距離画像センサの検出範囲に人間がいる場合、その距離画像センサが出力する距離画像から、人間の体の特徴点を複数抽出する。第2抽出手段(60,S35)は、たとえば特徴点から一定距離以上離れた特徴点(X)を、距離画像から抽出する。たとえば、特徴点から最も離れた候補点と略同じ距離の周囲の点を結合した結果の領域に特徴点が含まれている場合、第1記憶手段(60,S51)は結合結果の領域を腕領域として記憶する。第2記憶手段(60,S59)は、たとえば腕領域に含まれる、特徴点から最も離れた候補点と特徴点とによって示されるベクトルを指さし方向として記憶する。
第8の発明によれば、人間の特徴点を利用することで、その人間が行う指さしジェスチャの指さし方向を適切に検出することが出来る。
第9の発明は、第8の発明に従属し、第1記憶手段は、特徴点と候補点とを含む領域が、腕としての特徴を有しているとき、その領域を腕領域として記憶する。
第9の発明では、腕(領域)としての特徴とは、たとえば結合結果の領域が細長い形状をしており、かつ一定の長さを有していることである。そして、特徴点と候補点とを含む領域が上述の特徴を有しているとき、その領域が腕領域として記憶される。
第9の発明によれば、特徴点と候補点とを含む領域が腕の特徴を有しているかを判断することで、指さしジェスチャを認識する際の信頼性を高めることが出来る。
第10の発明は、第8の発明または第9の発明に従属し、第2記憶手段は、腕領域と人間とに基づく角度が所定角度範囲内のとき、特徴点と腕領域に含まれる候補点とに基づいて、指さし方向を記憶する。
第10の発明では、たとえば所定角度範囲は、指さしジェスチャを行うときの腕の角度が含まれる範囲である。そして、たとえば腕領域と人間とに基づく角度が所定角度範囲内のとき、特徴点と腕領域に含まれる候補点とに基づいて、指さし方向が記憶される。
第10の発明によれば、腕領域と人間とに基づく角度が所定範囲角度内を判断することで、指さしジェスチャを行っていない腕によって指さしジェスチャが誤認識される可能性を低くしている。
第11の発明は、第8の発明ないし第10の発明のいずれかに従属し、第2抽出手段は、特徴点に基づいて、距離画像から複数の候補点を抽出し、第1記憶手段によって3つ以上の腕領域が記憶されたとき、第2記憶手段によって記憶されている指さし方向を削除する削除手段をさらに備える。
第11の発明では、第2抽出手段は、特徴点に基づいて、距離画像から複数の候補点を抽出する。3つ以上の腕領域が記憶された場合、削除手段(60,S63)は記憶されている指さし方向を削除する。
第12の発明は、第11の発明に従属し、削除手段は、第1記憶手段によって新たな腕領域が記憶され、かつ第2記憶手段によってすでに指さし方向が記憶されているとき、第2記憶手段によって記憶されている指さし方向を削除する。
第12の発明では、たとえば他の腕領域を利用して指さし方向が既に記憶されている場合、既に記憶されている指さし方向が削除される。
第11の発明または第12の発明によれば、誤認識されている可能性が高い指さしジェスチャの認識結果を取り消すことが出来る。
第13の発明は、第8の発明ないし第12の発明のいずれかに従属し、特徴点は、人間の頭部位置および肩位置を含み、第2抽出手段は、肩位置に基づいて距離画像から候補点を抽出し、第1記憶手段は、肩位置と候補点とを含む領域があるとき、その領域を腕領域として記憶し、第2記憶手段は、頭部位置および肩位置の中点と、腕領域に含まれる候補点とに基づいて、指さし方向を記憶する。
第13の発明では、特徴点は、人間の頭部位置を示す頭頂部(HT)と2つの肩位置(Sn)と含む。たとえば頭頂部に基づいて距離画像から候補点が抽出される。たとえば、候補点と略同じ距離の周囲の点を結合した領域に、肩位置と候補点とが含まれていれば、その領域が腕領域として記憶される。たとえば頭頂部および肩位置の中点と、腕領域に含まれる候補点とに基づいて、指さし方向が記憶される。
第13の発明によれば、人間の頭部位置および肩位置を利用して、指さし方向を記憶することが出来る。
この発明によれば、任意の位置で行われる腕を使ったジェスチャを適切に認識することができる。
また、人間の特徴点を利用することで、その人間が行う指さしジェスチャの指さし方向を適切に検出することが出来る。
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
図1を参照して、実施例のジェスチャ管理システム100は、人間Hが自由に行き来するショッピングモールや、博物館、展示会場などの空間(環境)で利用される。たとえば、空間内の人間Hは、指さしジェスチャなどの腕を使ったジェスチャを行うと、そのジェスチャがジェスチャ管理システム100によって認識される。
また、腕を使ったジェスチャを認識するために、空間内の天井には、空間内で人間Hの位置やその身体の向きを検出するための複数の距離画像センサ12(12a,…)が設けられている。複数の距離画像センサ12は、後述する中央制御装置10(図4参照)にそれぞれ接続される。
なお、本実施例の空間内にいる人間Hは1人だけだが、他の実施例ではさらに多くの人間Hが空間内にいてもよい。また、人間Hだけに限らず、自立行動するロボットなどが空間内にいてもよい。
図2はこのような空間の平面的な位置を示す平面図(地図)である。図2を参照して、空間には、複数の距離画像センサ12(この実施例では14個)が設けられている。これらの距離画像センサ12は、空間の端に設けられているもの(12a,12b,12m,12n)以外は、2個で1セットとされている。図1も合わせて参照して、たとえば距離画像センサ12cおよび距離画像センサ12dなどが1セットとされている。1セットの距離画像センサ12では、センサ面がお互いの方を向き、かつ下側にセンサ面が鉛直下向きから一定角度(たとえば、10°程)傾くようにされている。これはセンサ面を真下に向けた場合よりも、センサ面を傾けた方が、距離画像センサ12の検出範囲が広くなるからである。また、センサ面を傾けた場合、お互いの検出範囲が大きく重複して非効率な検出とならないようにするために、1セットの距離画像センサ12は、センサ面が相手の方に傾けられている。さらに、1セットの距離画像センサ12における検出範囲が他のセットの距離画像センサ12と大きく重複して非効率な検出とならないようにするために、各セットの距離画像センサ12の水平方向の位置はズラして設けられている。
また、空間の端に設けられている距離画像センサ12は、空間の内側にセンサ面が向くように設けられている。
なお、このような空間において、人間Hが距離画像センサ12kおよび距離画像センサ12lの略下側に居る場合、平面図上では図2に示すように人間Hの位置と体の向きなどが示される。また、他の実施例では、空間に設けられる複数の距離画像センサ12は13個以下であってもよいし、15個以上であってもよい。
図3を参照して、1つの距離画像センサ12は地面から約3.0mの位置に設けられている。また、センサ面が鉛直下向きから一定角度傾いているため検出範囲は略楕円形となる。この検出範囲において、楕円形の長軸に相当する部分では約6.0mとなり、楕円形の短軸に相当する部分では約4.5mとなる。そして、本実施例では、図3に示す検出範囲が大きく重複して非効率な検出とならないように、複数の距離画像センサ12を設ける位置が調整されている。
図4を参照して、ジェスチャ管理システム100の中央制御装置10には、複数の距離画像センサ12が接続される。中央制御装置10は、一定時間毎に距離画像センサ12が出力する距離画像を取得する。そして、中央制御装置10は、取得した各距離画像から、人間Hの位置情報などを検出する。なお、本実施例では、中央制御装置10によって指さしジェスチャを認識する処理が実行されるため、中央制御装置10を「指さし認識装置」と言うことがある。
図5は距離画像センサ12の電気的な構成を示すブロック図である。図5を参照して、距離画像センサ12は制御IC30などを含む。制御IC30には、A/D変換器32、カメラ36、深度センサ38、深度カメラ40およびI/O42などが接続される。
制御IC30は、キャッシュメモリなどを有し、距離画像センサ12の動作を制御する。たとえば、制御IC30は、中央制御装置10からの命令に従って動作し、検出した結果(距離画像)を中央制御装置10に送信する。
A/D変換器32にはマイク34が接続され、マイク34からの音声信号はA/D変換器32でディジタル音声信号に変換され、制御IC30に入力される。また、マイク34によって集音された音は、空間内の雑音などの音量を計測するために利用されることもある。
カメラ36は、距離画像センサ12が設置された空間のRGB情報、つまりカラー画像を撮影するためのカメラである。また、カメラ36は、後述する深度カメラ40が撮影している空間と略同じ空間を撮影することが可能なように、距離画像センサ12に設けられている。
深度センサ38は、たとえば赤外線プロジェクタであり、深度カメラ40は、たとえば赤外線カメラである。深度センサ38は、たとえば赤外線によるレーザ光を距離画像センサ12の正面に照射する。空間には照射されたレーザ光によって特殊なパターンが描画され、深度カメラ40は描画されたパターンを撮影する。そして、撮影された画像は制御IC30に入力され、制御IC30はその画像を解析することで、レーザ光が照射された空間の奥行(depth)情報を計測する。
I/O42は、入力/出力の制御が可能なディジタルポートであり、出力ポートからは音声信号や、RGB情報および奥行情報を含む距離画像が出力され、中央制御装置10に与えられる。一方、中央制御装置10からは制御信号が出力され、入力ポートに与えられる。
なお、距離画像センサ12は、RGB情報および奥行情報を出力することからRGB−Dセンサと言われることもある。
また、本実施例の距離画像センサ12には、Microsoft(登録商標)社製のKinect(登録商標)センサと呼ばれる製品が採用されている。ただし、他の実施例では、ASUS(登録商標)社製のXtion、パナソニック(登録商標)社製のD−IMager(登録商標)などが距離画像センサ12として採用されてもよい。
図6は中央制御装置10の電気的な構成を示すブロック図である。図6を参照して、中央制御装置10は、距離画像センサ12およびプロセッサ60などを含む。プロセッサ60は、マイクロコンピュータ或いはCPUと呼ばれることもある。プロセッサ60には、複数の距離画像センサ12、メモリ62、出力装置64および入力装置66などが接続される。
距離画像センサ12は、上述したように距離画像などを出力する。この距離画像に含まれる奥行情報には、空間に居る人間Hの形状および人間Hまでの距離が含まれている。たとえば、人間Hが天井に設けられた距離画像センサ12によってセンシングされると、人間Hの体の特徴点である頭頂部HT(頭部位置)、前頭部HFおよび2つの肩位置Snまでの距離と、その特徴点を含む人間Hの3次元形状(たとえば、頭部および両肩の形状)とが得られる。
また、空間には14個の距離画像センサ12が所定の位置(既知)に設置されており、プロセッサ60は、各々から距離画像を取得して、空間(ワールド座標系)における人間Hの位置(たとえば、重心などの位置座標)および向き(角度)を計算することが出来る。
なお、人間Hの体の特徴点、3次元形状、位置および向きを求める具体的な手法については、本明細書の特許文献1(特開2012 - 215555号公報)を参照されたい。
また、距離画像センサ12はマイク34を有するため、中央制御装置10では、音情報が入力される距離画像センサ12の位置から、音の発生源を推定することも出来る。
また、他の実施例では、距離画像センサ12ではなく、3次元のレーザレンジファインダ(LRF)が利用されてもよい。
プロセッサ60は中央制御装置10の動作を制御し、日時情報を出力するRTCを含む。メモリ62は、記憶手段とも呼ばれ、ROM,HDDおよびRAMを含む。ROMおよびHDDには、中央制御装置10の動作を制御するための制御プログラムなどが予め記憶される。また、RAMは、プロセッサ60のワークメモリやバッファメモリとして用いられる。
出力装置64は、たとえばディスプレイなどであり、入力装置66は、たとえばマウスやキーボードである。そして、ジェスチャ管理システム100の管理者は、中央制御装置10の状態を、出力装置64および入力装置66を利用して確認および利用することが出来る。
図7(A)および図7(B)を参照して、人間Hが指さしジェスチャを行っているときの指さし方向Pxについて説明する。図7(A)のように右手で指さしジェスチャを行っている人間Hに対して、上述した、頭頂部HT、前頭部HFおよび2つの肩位置Snを決めると共に、指さしジェスチャの先端、つまり指先Pの位置を決める。次に、頭頂部HTおよび指さしジェスチャを行う腕の肩位置Snの中点Cが求められる。この中点Cは人間Hの目の近くの位置となるため、中点Cと指先Pとを結ぶ線上に、人間Hが指さす対象物が存在すると考えられる。そのため、本実施例では、中点Cと指先Pとを結ぶベクトルを指さし方向Pxとする。以下、空間内にいる人間Hに対して、これらの位置を求めることで、腕を使ったジェスチャ、つまり指さしジェスチャの指さし方向Pxが認識(検出)される。
図8は或る距離画像センサ12から出力された距離画像の一例を示す図解図である。図8を参照して、或る距離画像センサ12によって指さしジェスチャを行う人間Hが捉えられており、距離画像の略中央右側には指さしジェスチャを行う人間Hを示す領域が含まれている。そして、本実施例では、このような距離画像から図7に示す各部位の位置を検出し、人間Hの指さし方向Pxが検出される。なお、実際の距離画像では、検出されている距離に応じて白黒の濃淡が変化するようにしてあるが、図8の距離画像では図示の簡単のため距離を示す濃淡の描画は省略している。
図9(A)を参照して、或る距離画像センサ12から出力される距離画像において、人間Hを示す領域が検出されると、人間Hを示す領域において、頭頂部HT、前頭部HFおよび2つの肩位置Snがそれぞれ示される。
次に、頭頂部HTから一定距離以上離れている点Xが抽出され、候補点リストに記憶される。候補点リストに記憶される点Xの中から、指さしジェスチャの先端部分(指先P)となっている点Xが求められる。具体的には、まず、頭頂部HTから最も遠い点Xを特定し、最も遠い点Xと略同じ距離の周囲の点を結合(クラスタリング)する。そして、周囲の点の結合が終了すると、結合結果にどちらか一方の肩位置Snが含まれているかが判断される。
肩位置Snを含む結合結果が得られた場合は、結合結果が腕領域の特徴を有しているかが判断される。このように、指さしジェスチャを行う腕を示す領域が腕領域の特徴を有しているかを判断することで、指さしジェスチャを認識する際の信頼性を高めることが出来る。また、腕領域の特徴とは、領域が細長い形状をしており、かつ一定の長さを有していることである。結合結果の領域が上述の腕領域の特徴を有している場合、他の腕領域が2つ以上検出されていないかが判断される。つまり、腕が誤認識されていないかが判断される。
また、腕が誤認識されていなければ、腕領域と人間Hとに基づく角度、つまり腕領域に含まれる指先Pおよび肩位置Snの線分と人間Hの鉛直方向の線分との角度(以下、腕の角度と言う。)が所定角度範囲(たとえば、60°から180°)内であるかが判断される。つまり、腕の角度が指さしジェスチャを行う腕として想定される範囲内であるかが判断される。そして、腕の角度が所定角度範囲内のときに、既に他の指さし方向Pxが検出されていなければ、腕領域に含まれる点X、つまり指先Pと上述の中点Cとを結ぶベクトルが、指さし方向Pxとして検出される。このように、腕の角度が所定範囲角度内を判断することで、指さしジェスチャを行っていない腕によって指さしジェスチャが誤認識される可能性を低くしている。
図9(B)を参照して、腕領域における点Xを指先Pとし、上述したように頭頂部HTと、指先Pとつながる肩位置Snとの中点Cが求められる。そして、中点Cに対する指先Pの方向が指さし方向(指さしベクトル)Pxとして検出され、距離画像センサ12の識別情報と共に指さし方向Pxが記憶される。
また、結合結果に肩位置Snが含まれていない場合、結合結果が腕領域の特徴を有していない場合または腕の角度が所定角度範囲外である場合、指さし方向Pxが検出されるまで他の点Xを選択し直して、上述の処理を繰り返す。ただし、候補点リストに記憶されている全ての点Xにおいて、指さし方向Pxを検出することが出来ない場合は、指さしジェスチャが行われていない可能性が高いため、指さし方向Pxを検出する処理は終了する。
さらに、他の腕領域が2つ以上検出されている場合または指さし方向Pxが既に記憶されている場合は、記憶されている指さし方向Pxおよび腕領域を削除すると共に、候補点リストに含まれる点Xも全て削除される。
たとえば、3本目の腕が検出された場合は、人間Hに対する指さしジェスチャが正しく認識されていない可能性が高い。同様に、指さし方向Pxが記憶されている状態で新たに指さし方向Pxが検出された場合は、人間Hが2か所を同時に指すことは通常では考えられないので、人間Hは指さしジェスチャを行っていない可能性が高い。そのため、記憶されている指さし方向Pxおよび腕領域を削除することで、誤認識されている可能性が高い指さしジェスチャの認識結果が取り消される。
以上の説明から分かるように、特に人間Hの位置および方向を検出するための人間Hの頭部位置および肩位置Snなどの特徴点を利用することで、その人間Hが行う指さしジェスチャの指さし方向Pxを適切に検出することが出来る。
なお、図9(A)および図9(B)では、人間Hを示す領域では、距離を示す濃淡が描画されている。また、距離画像中の人間Hを示す領域は、体の特徴点と略同じ距離の周囲の点を結合(クラスタリング)することで検出される。ただし、他の実施例では、他の手法を用いて距離画像から人間Hを示す領域が検出されてもよい。
このように、各距離画像センサ12を利用して指さしジェスチャの認識が行われると、各認識結果が統合される。具体的には、指さしジェスチャを認識した距離画像センサ12の中から、指さしジェスチャを最も適切に認識したときに利用された距離画像センサ12が特定される。そして、距離画像センサ12が特定されると、その特定された距離画像センサ12を利用して検出した指さし方向Pxが、認識結果として登録される。
まず、指さしジェスチャを最も適切に認識したときに利用された距離画像センサ12を特定する手順について説明する。指さしジェスチャを認識するために利用された距離画像センサ12が複数ある場合、距離画像における指さしジェスチャを行う人間Hの大きさに基づいて、1つの距離画像センサ12が特定される。そして、この実施例では、人間Hを示す領域を構成するピクセル数が最も多い距離画像を出力している距離画像センサが、指さしジェスチャを最も適切に認識したときに利用された距離画像センサ12として特定される。このように、距離画像における人間Hの大きさを利用することで、距離画像センサ12を特定するまでの時間を短縮することが出来る。
たとえば、図2に示す人間Hが指さしジェスチャを行っているときに、距離画像センサ12a,12e,12mから出力された距離画像を図10(A)−図10(F)に示す。図10(A)は距離画像センサ12bから出力された距離画像を示し、図10(B)は距離画像センサ12bから出力された距離画像において体の特徴点が検出された状態を示す。また、図10(B)の距離画像から分かるように、この距離画像には指さしジェスチャを行う腕領域が含まれておらず、指さし方向Pxは検出されていない。
また、図10(C)は距離画像センサ12eから出力された距離画像を示し、図10(D)は距離画像センサ12eから出力された距離画像において体の特徴点が検出された状態を示す。また、図10(D)の距離画像から分かるように、この距離画像には指さしジェスチャを行う腕領域が含まれており、指さし方向Pxが検出されている。
さらに、図10(E)は距離画像センサ12aから出力された距離画像を示し、図10(F)は距離画像センサ12aから出力された距離画像において体の特徴点が検出された状態を示す。また、図10(F)の距離画像から分かるように、この距離画像には指さしジェスチャを行う腕領域が含まれておらず、指さし方向Pxは検出されていない。
そして、他の距離画像センサ12でも指さしジェスチャが認識されていなければ、図10(C)および図10(D)の距離画像を出力する距離画像センサ12eが特定される。ただし、他にも指さしジェスチャを認識している距離画像センサ12がある場合は、距離画像中の人間Hを示す領域の大きさによって、距離画像センサ12が特定される。
次に、距離画像センサ12が特定されると、指さしジェスチャが誤認識されていないかを確認する。具体的には、指さしジェスチャの認識に利用されていない距離画像センサ12において、人間Hが行う指さしジェスチャの指さし方向Px(腕)を観察可能な距離画像センサ12が検索される。
図11を参照して、指さし方向Pxを観察可能な距離画像センサ12とは、距離画像センサ12と人間Hとの位置を結ぶベクトルSHと、指さし方向Pxを示すベクトルとがなす角度θが所定値(たとえば、15°)以下の場合、その距離画像センサ12は指さし方向Pxが観察できないと判断される。つまり、2つのベクトルがなす角度θが所定値より大きい場合は、その距離画像センサ12は指さし方向Pxを観察できるとして判断される。
そして、指さしジェスチャの認識に利用されていない距離画像センサ12において、指さし方向Pxを観察可能な距離画像センサ12が発見されなかった場合は、指さし方向Pxが指さし方向テーブルに登録される。つまり、検出された指さし方向Pxが人間Hが行った指さしジェスチャの認識結果とされる。このように、指さしジェスチャの認識結果を統合する前に指さしジェスチャが誤認識されていないかを確認することで、認識結果を統合する精度を高めることが出来る。また、指さしジェスチャの認識結果として指さし方向Pxを登録することが出来る。
また、指さし方向Pxが登録された状態となると、指さし方向Pxが活用される。たとえば、空間内に案内を行うロボットが設置されている場合は、人間Hの指さし方向Pxを利用して、人間Hが指さしジェスチャによって指している対象物などを特定することが出来る。また、指さしジェスチャを行うことが可能なロボットが空間内に設置されている場合は、そのロボットによる指さしジェスチャの指さし方向Pxを認識することで、ロボットが指さしジェスチャによって正しく対象物を指しているかを確認することが出来る。
以上の説明から分かるように、人間Hが空間内の任意の位置で指さしジェスチャを行っても、指さしジェスチャを適切に認識している距離画像センサ12を特定することが出来る。したがって、空間内の任意の位置で人間Hが指さしジェスチャを行っても、そのジェスチャを適切に認識することが出来る。
上述では本実施例の特徴を概説した。以下では、図12に示す中央制御装置10のメモリ62のメモリマップおよび図13−図15に示すフロー図を用いて本実施例について詳細に説明する。
図12は図6に示す中央制御装置10のメモリ62のメモリマップの一例を示す図解図である。図12に示すように、メモリ62はプログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、中央制御装置10を動作させるためのプログラムとして、複数の距離画像センサ12によって認識された指さしジェスチャ(腕を使ったジェスチャ)の認識結果を統合するための指さし方向管理プログラム310および各距離画像センサ12によって指さしジェスチャを認識するための指さし認識プログラム312などが記憶される。なお、図示は省略するが、中央制御装置10を動作させるためのプログラムには、平面図データ340を編集するためのプログラムなども含まれる。
データ記憶領域304には、指さし方向バッファ330、候補点リストバッファ332、腕候補点リストバッファ334、腕領域バッファ336および仮指さし方向バッファ338などが設けられる。また、データ記憶領域304には、平面図データ340、距離画像センサテーブル342および指さし方向テーブル344などが記憶される。
指さし方向バッファ330には、特定された距離画像センサ12によって認識された指さしジェスチャの指さし方向Pxが一時的に記憶される。候補点リストバッファ332には、頭頂部HTから一定距離以上離れている点Xを含む候補点リストが一時的に記憶される。腕候補点リストバッファ334には、点Xの周辺の点が結合された結果を含む腕候補点リストが一時的に記憶される。腕領域バッファ336には、腕領域を示す情報が一時的に記憶される。仮指さし方向バッファ338には、各距離画像センサ12の識別情報と対応付けた指さし方向Pxが一時的に記憶される。
平面図データ340は、たとえば図2に示す平面図を示すデータである。距離画像センサテーブル342は、指さしジェスチャを認識した距離画像を示す識別情報が記憶されるテーブルである。指さし方向テーブル344には、特定された距離画像センサ12によって認識された指さしジェスチャの指さし方向Pxが時系列順に記憶(登録)されるテーブルである。なお、指さし方向テーブル344に記憶されている複数の指さし方向Pxは、人間Hが行う指さしジェスチャの指さし方向Pxが変化する様子を表す。
なお、図示は省略するが、データ記憶領域304には、様々な計算の結果を一時的に格納するバッファや、中央制御装置10の動作に必要な他のカウンタやフラグなども設けられる。
中央制御装置10のプロセッサ60は、Linux(登録商標)ベースのOSや、その他のOSの制御下で、図13に示す指さし方向管理処理および図14、図15に示す指さし認識処理などを含む、複数のタスクを処理する。
図13は指さし方向管理処理のフロー図である。中央制御装置10の電源がオンにされ、指さし方向管理処理の実行命令が出されると、指さし方向管理処理が実行される。なお、指さし方向管理処理の実行命令は一定周期毎に出される。
指さし方向管理処理が実行されると、プロセッサ60はステップS1で、距離画像センサ12毎に指さし認識処理を実行する。つまり、各距離画像センサ12から出力された距離画像に対して後述の指さし認識処理が加えられる。なお、ステップS1の処理を実行するプロセッサ60は認識手段として機能する。
続いて、ステップS3でプロセッサ60は、指さしジェスチャを認識した距離画像センサ12があるか否かを判断する。たとえば、仮指さし方向バッファ338に指さし方向Pxが記憶されているかが判断される。ステップS3で“NO”であれば、つまり指さしジェスチャの認識に利用された距離画像センサ12が無ければ、プロセッサ60は指さし方向管理処理を終了する。
一方、ステップS3で“YES”であれば、たとえば図10(D)に示すように、距離画像センサ12eが出力した距離画像から指さし方向Pxが検出されていれば、ステップS5でプロセッサ60は、指さしジェスチャを認識している距離画像センサ12を距離画像センサテーブル342に記憶する。つまり、プロセッサ60は、仮指さし方向バッファ338に記憶されている、距離画像センサ12の識別情報が対応付けられた指さし方向Pxを距離画像センサテーブル342に記憶する。なお、ステップS5の処理を実行するプロセッサ60は記憶手段として機能する。
続いて、ステップS7でプロセッサ60は、指さしジェスチャを最も適切に認識している距離画像センサ12を特定する。つまり、指さし方向Pxを検出した距離画像において、人間Hと対応する領域が最も大きく描画されている距離画像が特定される。そして、特定された距離画像と対応する距離画像センサ12が、ステップS7では特定された距離画像センサ12とされる。なお、ステップS7の処理を実行するプロセッサ60は特定手段として機能する。
続いて、ステップS9でプロセッサ60は、特定された距離画像センサ12と対応する指さし方向Pxを指さし方向バッファ330に記憶する。たとえば、距離画像センサ12eが特定されている場合、仮指さし方向バッファ338から距離画像センサ12eの識別情報が対応付けられた指さし方向Pxが読み出され、指さし方向バッファ330に記憶される。
続いて、ステップS11でプロセッサ60は、指さしジェスチャを認識していない距離画像センサ12から、指さし方向Pxを観察可能な距離画像センサ12を検索する。つまり、指さしジェスチャが誤認識されていないかが確認される。なお、ステップS11の処理を実行するプロセッサ60は検索手段として機能する。
続いて、ステップS13でプロセッサ60は、観察可能な距離画像センサ12が発見されたか否かを判断する。つまり、指さしジェスチャを認識可能な距離画像センサ12によって指さしジェスチャが認識されていない状態であるかが判断される。ステップS13で“YES”であれば、つまり指さしジェスチャが誤認識されている可能性があれば、プロセッサ60は指さし方向管理処理を終了する。
一方、ステップS13で“NO”であれば、つまり指さしジェスチャが誤認識されている可能性がなければ、ステップS15でプロセッサ60は、指さし方向バッファ330に記憶されている指さし方向Pxを指さし方向テーブル344に登録する。つまり、検出された指さし方向Pxが、指さしジェスチャの認識結果とされる。そして、ステップS15の処理が終了すると、プロセッサ60は指さし方向管理処理を終了する。
なお、ステップS15の処理を実行するプロセッサ60は登録手段として機能する。また、ステップS15の処理が終了すると、各バッファは初期化される。
図14および図15は指さし認識処理のフロー図である。図13に示す指さし管理処理で、距離画像センサ12毎に指さし認識処理を実行させるステップS1が実行されると、指さし認識処理が実行される。なお、この認識処理は実行されてから、たとえば約1/30秒で終了する。
たとえば、距離画像センサ12eに対応して指さし認識処理が実行されると、プロセッサ60はステップS31で、距離画像を取得する。たとえば、距離画像センサ12eから出力された距離画像が取得される。続いて、ステップS33でプロセッサ60は、体の特徴点を抽出する。つまり、取得された距離画像から、体の特徴点として、頭頂部HT、前頭部HFおよび2つの肩位置Snが抽出される。続いて、ステップS35でプロセッサ60は、平面座標上の頭部位置から一定距離以上の点Xを抽出する。たとえば、頭頂部HTから一定距離以上離れており、人間Hと略同じ距離にある点Xが抽出される。なお、ステップS33の処理を実行するプロセッサ60は第1抽出手段として機能する。また、ステップS35の処理を実行するプロセッサ60は第2抽出手段として機能する。
続いて、ステップS37でプロセッサ60は、抽出した点Xを候補点リストに記憶する。つまり、候補点リストバッファ332に記憶されている候補点リストに、ステップS35の処理で抽出された点Xが記憶される。なお、点Xが抽出されていない場合は、候補点リストには何も記憶されない。
続いて、ステップS39でプロセッサ60は、候補点リストに点Xが記憶されているか否かを判断する。たとえば、人間Hの頭頂部HTの近くに腕候補となる領域が存在するかが判断される。ステップS39で“NO”であれば、たとえばステップS35の処理で点Xが抽出されなかったり、後述の処理で候補点リストから点Xが全て削除されたりすると、プロセッサ60は指さし認識処理を終了する。
一方、ステップS39で“YES”であれば、たとえばステップS35の処理で抽出された点Xが候補点リストに記憶されていれば、ステップS41でプロセッサ60は、頭部位置から最も遠い点Xを候補点リストから読み出す。たとえば、頭頂部HTから最も遠い点Xが候補点リストから読み出される。続いて、ステップS43でプロセッサ60は、読み出された点Xと略同じ距離の周囲の点を結合する。つまり、頭部位置から最も遠い点Xにおいて、略同じ距離の周囲の点が結合(クラスタリング)される。続いて、ステップS45でプロセッサ60は、結合結果を腕候補点リストに記憶する。つまり、腕候補点リストバッファ334に記憶されている腕候補点リストに、ステップS43の処理で結合された全ての点(領域)が記憶される。
続いて、ステップS47でプロセッサ60は、結合結果に肩位置Snが含まれるか否かを判断する。つまり、腕候補点リストの中に、人間Hの2つの肩位置Snのうちいずれか1つが含まれているかが判断される。また、ステップS47で“YES”であれば、つまり結合結果の領域に肩位置Snが含まれていれば、ステップS49でプロセッサ60は、結合結果は腕領域の特徴を有しているか否かを判断する。たとえば、腕候補点リストに記憶される結合結果の領域が、細長い形状をしており、かつ一定の長さを有しているかが判断される。ステップS49で“YES”であれば、つまり結合結果が腕領域の特徴を有していれば、ステップS51でプロセッサ60は、結合結果を腕領域として記憶する。つまり、腕候補点リストに記憶されている各点Xに基づいて腕領域が定義され、その腕領域が腕領域バッファ336に記憶される。なお、ステップS51の処理を実行するプロセッサ60は第1記憶手段として機能する。
続いて、ステップS53でプロセッサ60は、記憶されている腕領域が3つか否かを判断する。つまり、腕が誤認識されているかが判断される。ステップS53で“NO”であれば、つまり認識されている腕が2本以下であれば、ステップS55でプロセッサ60は、腕の角度が所定角度範囲内か否かを判断する。つまり、人間Hの腕の角度が指さしジェスチャを行っていると考えられる角度であるかが判断される。ステップS55で“NO”であれば、つまり人間Hの腕の角度が指さしジェスチャを行っているとは考えられない角度であれば、プロセッサ60はステップS61の処理に進む。つまり、認識された腕で指さしジェスチャが行われていないと判断されたため、他の点Xに基づく腕領域を検索するために、プロセッサ60はステップS61の処理に進む。
同様に、結合された点の集まり(領域)に肩位置Snが含まれておらずステップS47で“NO”であるか、結合結果が腕領域の特徴を有しておらずステップS49で“NO”であれば、プロセッサ60はステップS61の処理に進む。つまり、結合結果の領域が人間Hの腕ではないと判断された場合も、他の点Xに基づく腕領域を検索するために、プロセッサ60はステップS61の処理に進む。
また、ステップS55で“YES”であれば、つまり腕の角度が指さしジェスチャを行っていると考えられる状態であれば、ステップS57でプロセッサ60は、指さし方向Pxが既に記憶されているか否かを判断する。つまり、他の腕によって行われた指さしジェスチャが既に認識されている状態かが判断される。具体的には、仮指さし方向バッファ338に指さし方向Pxが既に記憶されているかが判断される。
ステップS57で“NO”であれば、つまり他の腕による指さしジェスチャが認識されていなければ、ステップS59でプロセッサ60は、体の特徴点と腕領域とに基づいて指さし方向Pxを記憶する。つまり腕領域における点Xを指先Pとすると共に上述の中点Cが求められ、中点Cに対する指先Pの方向が指さし方向Pxとして記憶(検出)される。なお、ステップS59の処理を実行するプロセッサ60は第2記憶手段として機能する。
続いて、ステップS61でプロセッサ60は、候補点リストから結合結果と対応する点を削除する。つまり、腕候補点リストに記憶される結合結果(腕領域)が候補点リストから削除される。そして、ステップS61の処理が終了すると、プロセッサ60はステップS39の処理に戻る。なお、他の実施例では、指さし方向Pxが検出(記憶)されると、指さし認識処理が終了するようにしてもよい。
また、腕領域が検出されていてステップS53で“YES”と判断されるか、指さし方向Pxが既に検出されていてステップS57で“YES”と判断されると、プロセッサ60は、ステップS63で記憶されている腕領域と指さし方向Pxとを削除し、ステップS65で候補点リストに記憶されている点Xを全て削除する。つまり、指さしジェスチャが誤認識されている可能性が高いため、認識されている腕領域および検出された指さし方向Pxが削除される。また、他の腕領域を検出する必要もないため、候補点リストから点Xが全て削除される。そして、ステップS65の処理が終了すると、プロセッサ39の処理に戻る。このとき、ステップS39では“NO”と判断されるため、プロセッサ60は指さし認識処理が終了する。また、ステップS63の処理を実行するプロセッサ60は削除手段として機能する。
なお、他の実施例では、指さしジェスチャを適切に認識している距離画像センサ12を特定する際には、人間Hと距離画像センサ12との距離に基づいて判断されてもよい。
また、その他の実施例では、腕を使ったジェスチャには、指さしジェスチャだけではなく、手のひらを広げて対象物を指し示すようなジェスチャも含まれる。
また、さらにその他の実施例では、腕を使ったジェスチャを行っている時間を利用して、そのジェスチャが正しく行われているかを判断するようにしてもよい。たとえば、腕を使ったジェスチャを行っている時間が閾値(たとえば、2秒)より長い場合に、腕を使ったジェスチャが行われていると判断される。
また、本実施例では、人間Hと略同じ外観のロボットであっても、体の特徴点を抽出することが出来る。
また、上述の実施例では、閾値(所定値)などに対して「より大きい」などの言葉を用いたが「閾値より大きい」とは「閾値以上」の意味も含まれる。同様に「閾値よりも小さい」とは「閾値以下」および「閾値未満」の意味も含まれる。
また、本実施例で説明した複数のプログラムは、データ配信用のサーバのHDDに記憶され、ネットワークを介して本実施例と同等の構成のシステムに配信されてもよい。また、CD, DVD, BD (Blu-ray(登録商標) Disc)などの光学ディスク、USBメモリおよびメモリカードなどの記憶媒体にこれらのプログラムを記憶させた状態で、その記憶媒体が販売または配布されてもよい。そして、上記したサーバや記憶媒体などを通じてダウンロードされた、上記複数のプログラムが、本実施例と同等の構成のシステムに適用された場合、本実施例と同等の効果が得られる。
そして、本明細書中で挙げた、具体的な数値は、いずれも単なる一例であり、製品の仕様変更などに応じて適宜変更可能である。