以下、本発明における実施の形態を図面を用いて説明する。
(第一の実施の形態)
図1は本発明におけるジェスチャ認識装置を含むジェスチャ認識システム例を示すブロック図である。図1において、ジェスチャ認識装置20は、撮像装置10、インターフェース30と接続されている。撮像装置10は、例えば2つのカメラを有するいわゆるステレオカメラである。また、3次元距離画像を取得できるカメラであってもよい。たとえば、撮像装置10は、指を動かす動作など、インターフェース制御に利用する動作を行っている利用者を撮像する。撮像装置10は、撮影により時系列的に画像データを取得し、ジェスチャ認識装置20へと送る。インターフェース装置30は、ジェスチャ認識装置20によって制御されるインターフェースであって、例えば、ボタン310、スイッチ320、アラーム330などであるが、これに限らず、マウス、キーボード、タッチパネルなどであってもよい。
ジェスチャ認識装置20は、画像取込部210、部位領域抽出部220、部位検出部230、キャッシュ部240、部位変化検出部250、ジェスチャ認識部260、インターフェース制御部270、記憶部280を有する。
画像取込部210は、たとえば、撮像装置10からリアルタイムで入力される利用者の動作を撮像した距離画像を取り込む。取り込んだ動画像データは、視差データ又は距離データを有する距離画像データである。なお、ステレオカメラである撮像装置10から2つの画像データを取り込み、画像取込部210で視差を算出してもよい。また、視差データとしているが、撮像装置がステレオカメラではなく、距離計を有するカメラである場合には、画像データ及び距離データを取り込んでもよい。ここでいう「距離画像データ」は、時系列画像である動画像データのうちの各時点の画像データ(一フレーム画像)である。画像取込部210は、入力される画像データ及び視差データを部位検出部220へと出力する。
部位領域抽出部220は、画像取込部210によって取り込まれた距離画像データの一フレーム画像データ各々において、利用者の所定部位が存在する領域を抽出する。利用者の所定部位とは、インターフェース制御に対応づけられたジェスチャ認識に必要な体の部位であり、例えば、指、腕、頭、膝、肩などである。部位領域抽出部220は、予めその部位が存在し得る三次元空間(x, y, z)がパラメータとして与えられており、その空間内で利用者の所定部位が撮像されていないか探索し、抽出する。
部位検出部230は、部位領域抽出部220が抽出した距離画像データ内の三次元空間において、抽出すべき部位が撮像されている領域を検出する。部位検出部は、例えば、抽出された部位領域のテクスチャ画像から色や形状に基づいて抽出すべき部位を検出する。抽出された部位領域のデータは、三次元座標データとして出力される。
キャッシュ部240は、部位検出部230が距離画像データから検出した部位領域のデータ(たとえば、三次元座標データなど)を一時的に記憶するメモリである。一時記憶された部位領域のデータは、部位変化検出部250が、所定部位の動きを検出するために、読み出されて用いられる。
部位変化検出部250は、各フレーム画像において部位検出部230が検出した所定部位領域の変化を検出する。具体的には、フレーム画像間における、部位検出部230が検出した部位領域の変化量を算出することで、所定部位の動きを検出する。変化量は、三次元座標の座標値の変化に限らず、色領域の変化なども含まれる。変化の算出は、隣接フレーム画像間に限らず、5フレーム間隔、30フレーム間隔など、所定のフレーム間隔で行ってよい。部位変化検出部250は、変化算出の際に用いる前フレーム画像データの値をキャッシュ部240から読み出すことで算出する。
ジェスチャ認識部260は、部位変化検出部250が検出した所定部位の変化量が所定値以上である場合、所定のジェスチャが行われたと認識する。予め設定されている変化量以上に所定領域の位置が変化したと判定される場合、ジェスチャが行われたと判定する。ジェスチャとは、例えば、指曲げ、腕振り、頭部の向きを変えること、舌出し、膝閉じである。なお、ジェスチャはこれらに限らない。変化量は、定常状態と最大移動時との比較で決定される。つまり、位置変化における3次元的な軌跡の距離の大きさで判定される。また、認識対象が頭部の場合は回転角度、指の場合は、手の甲と指の間の角度、舌の場合は、舌の領域の大きさが変化量となる。ジェスチャ認識部260は、ジェスチャがされたと判定すると、判定されたジェスチャ内容をインターフェース制御部270へ送出する。
インターフェース制御部270は、ジェスチャ認識部260が、認識したジェスチャに関連づけられたインターフェース制御を行う。具体的には、記憶部280の対応ジェスチャデータベース286を読み出し、所定のジェスチャ内容に対応するインターフェース制御を読み出し、インターフェース30を制御する。例えば、指曲げのジェスチャが認識された場合、インターフェース制御部270は、対応ジェスチャデータベース286を読み出し、指曲げに対応するインターフェース制御、例えば、スイッチをオンする。
記憶部280は、距離画像データベース282、パラメータデータベース284、対応ジェスチャデータベース286を有している。距離画像データベース282は、撮像装置10から、画像取込部210が取り込んだ距離画像データを記憶している。距離画像データベースに記憶されている距離画像は、適宜部位領域抽出部220によって読み出される。
パラメータデータベース284は、所定の部位領域が撮像されている距離画像領域の座標範囲や、所定部位を検出するために用いられる色のしきい値又は座標値や、部位変化を検出してジェスチャとして認識するためのしきい値などを記憶している。パラメータデータベースに記憶しているパラメータは、利用者別に任意に変更、設定できるように構成されていてもよい。
対応ジェスチャデータベース286は、ジェスチャの動作に関連付けられたインターフェース制御の内容を対応づけて記憶しているデータベースである。インターフェース制御部270は、ジェスチャ認識部260が所定のジェスチャがされたことを認識すると、対応ジェスチャデータベース286を読み出し、認識されたジェスチャに対応するインターフェース制御を読み出して、インターフェース制御を行う。
図2は、本発明のジェスチャ認識装置20において行われる、利用者のジェスチャ動作認識と認識されたジェスチャに対応するインターフェース制御処理の流れの一例を示すフロー図である。
部位領域抽出部220は、所定部位の領域を検出する(ステップS201)。部位領域抽出部220は、画像取込部210が取得した撮像装置10からの距離画像データから、所定の部位領域を抽出する。所定の部位領域とは、利用者が撮像されている距離画像データのなかで、ジェスチャ認識を行う体の部位、例えば、頭部、手、腕、膝、肩など、身体の部位が存在しうる領域を抽出する。撮像装置10と利用者との位置関係から、距離画像データ内での所定部位が存在しうる範囲が定まるため、その範囲が三次元座標データ(x, y, z)でパラメータデータベース284に記憶されている。部位領域抽出部220は、パラメータデータベース284に記憶されている三次元座標データをよみだして、距離画像データから、所定部位の領域を抽出する。
次に、部位検出部230は、部位領域から所定部位を検出する(ステップS202)。部位検出部230は、たとえば、部位領域抽出部220によって抽出された部位領域の距離画像データ内のテクスチャ情報、色情報(例えば色相、彩度、明度)、形状などのパラメータに基づいて、部位領域を検出する。部位領域の抽出にあたって、どのパラメータを用いるかは、検出する部位によって異なる。部位検出部230は、パラメータ情報を、パラメータデータベース284から対応する身体部位に基づいて読み出して、検出に利用する。
部位変化検出部250は、部位の座標変化を検出する(ステップS203)。部位検出部230が、各距離画像データにおいて検出した所定部位に基づいて、距離画像データ間での所定部位の座標の変化を検出する。たとえば、部位変化検出部250は、キャッシュ部240に一時記憶されている、比較対象となる前フレームの距離画像データにおける部位領域と、現在フレームの距離画像データにおける部位領域の座標変化を算出する。また、部位変化検出部250は、変化量やその変化量に達するまでの時間を算出する。障害者の不随意運動による誤認識を避けるため、動きの速度が遅すぎるものや速すぎるものを除外するためである。
次に、ジェスチャ認識部260は、部位変化検出部250が検出した部位変化の変化量に基づいて、部位の変化が所定値以上かの判定を行う(ステップS204)。判定を行う場合に、ジェスチャ認識部260は、該当する部位に対応する部位変化検出パラメータをパラメータデータベース284から読み出し、読み出されたパラメータに基づいて判定を行う。例えば、所定部位が指であって、指曲げのジェスチャである場合は、指と手の角度変化が所定量以上かどうかで、判定を行う。
部位の変化が所定値以上の場合(yes)、ジェスチャ認識部260は、ジェスチャ動作がなされたと認識する(ステップS205)。部位の変化が所定値以上ではない場合(no)、部位変化検出部250が引き続き部位の座標変化を検出し(ステップS203)、ジェスチャ認識部260は、部位の変化が所定値以上かの判定を行う。ジェスチャ認識部260はジェスチャ動作がなされたと認識すると、認識されたジェスチャ動作をインターフェース制御部270へ出力する。
インターフェース制御部270は、取得したジェスチャ動作に関連付けられたインターフェース制御を行う(ステップS206)。インターフェース制御部270は、対応ジェスチャデータベース286を参照し、認識されたジェスチャ動作に対応するインターフェース制御内容に基づいて、インターフェース30のインターフェース制御を行う。
ここでは、一つの身体部位を検出する方法を説明したが、一つの距離画像データから、複数の身体部位を検出するように構成してもよい。例えば、上半身が撮影されている距離画像データである場合、指曲げジェスチャ、頭部の振りのジェスチャ、舌出しのジェスチャなど複数のジェスチャを検出してもよい。
図3は、記憶部280に記憶されているパラメータデータベース284及び対応ジェスチャデータベース286のデータ記憶内容の一例を示す図面である。
パラメータデータベース284には、身体部位ごとに、それぞれ、距離画像データから部位領域を抽出するためのパラメータや、所定部位を検出するためのパラメータ、ジェスチャを認識するための部位変化を検出するためのパラメータが記憶されている。これらのパラメータは、検出する身体部位ごとに異なる。部位領域抽出パラメータとして、ここでは、三次元座標データによって三次元による抽出範囲が指定されているが、これに限らず、画像データにおける二次元座標により指定し、視差のデータ範囲で指定しても同様である。
指の部位検出パラメータとして、ここでは、テクスチャ情報及び色情報が指定されているが、指定されるパラメータは、身体部位によって異なる。身体部位によって異なるパラメータの詳細は、後述する。なお、これらのパラメータは、利用者の身体の可動域に基づいて、任意の値に自由に変更できるよう構成されていてもよい。
対応ジェスチャデータベース286には、認識されたジェスチャと対応するインターフェース制御内容とが対応づけて記憶されている。例えば、頭部が右に振られるジェスチャが認識された場合、マウスでクリック動作を行うことが記憶されている。このほか、腕振りに対してアラーム音発生、指曲げに足してスイッチ押下が一例として記憶されているが、これらに限らず、あるジェスチャに対してキーボードのキー押下を対応づけてもよい。インターフェース制御部270は、ジェスチャ認識部260が出力したジェスチャ内容に基づいて、対応ジェスチャデータベース286を参照し、関連づけられて記憶されているインターフェース制御内容に基づいてインターフェース制御を行う。
これより、各身体部位それぞれにおけるジェスチャの認識方法とインターフェース制御の詳細をフローチャートに従って、説明する。
図4は、本発明のジェスチャ認識装置20において行われる、指の曲げ動作のジェスチャ認識とジェスチャ認識に対応するインターフェース制御処理の流れの一例を示すフロー図である。
まず、部位領域抽出部220は、画像取込部210が取り込んだ距離画像データから、手が存在する領域の検出、つまり、手の領域となる三次元空間の部位領域を抽出する(ステップS401)。具体的には、部位領域抽出部220は、距離画像データ中で手が存在し得る三次元空間として設定されているパラメータをパラメータデータベース282から読み出し、距離画像データからパラメータとして設定されている領域を抽出する。パラメータデータベースには、手が存在し得る三次元空間として、たとえば、三次元座標の最大値及び最小値が記憶されている。
次に、部位検出部230は、手が存在する領域の距離画像データから検出対象となる指と手を検出する(ステップS402)。部位検出部230は、部位領域抽出部220が出力した部位領域の距離画像データのなかから、テクスチャ情報に基づいて、手とジェスチャ対象となる指を検出する。具体的には、テクスチャ情報に基づき、ジェスチャ対象となる指には、着色された指サックなどで目印を装着しているため、その着色された色領域を持つ3次元オブジェクトを抽出する。手については、指に最も近い領域の3次元オブジェクトをラベリングしていき、最大ラベルを手として認識することでジェスチャ対象の手を抽出する。手を抽出する際に、手に相当する肌色領域を同時に利用することも可能である。指や手については抽出する着色領域や肌色領域については、パラメータデータベース284にあらかじめ、色相や明るさの最大値、最小値が記憶されており、部位検出部230は、それらの値を読みだすことで、指及び手の部位を検出する。
部位変化検出部250は、部位検出部230が距離画像データから検出した指と手の部位に基づいて、距離画像データ間における指と手の角度の変化を検出する(ステップS403)。具体的には、部位変化検出部250は、キャッシュ部240に記憶されている一又は数フレーム以前の距離画像データにおける指及び手の部位の位置と、現在の距離画像データにおける指及び手の部位の位置から、指の曲げ変化を検出する。指の曲げ変化の検出にあたっては、それぞれの距離画像データにおける指と手首のモーメントを計算し、モーメントから2軸の角度を計算することで行う。そして、指と手の角度の差を計算する。
ジェスチャ認識部260は、部位変化検出部250が計算した角度に基づき、指と手の角度の変化量が所定値以上かどうかを判定する(ステップS404)。所定値となる設定しきい値は、パラメータデータベース284に記憶されており、ジェスチャ認識部260は、そのしきい値を読みだして、参照することで、判定を行う。判定の結果、所定値以上である場合(yes)、指曲げと判定される(ステップS405)。判定の結果、角度の変化量が所定値以下の場合(no)、指曲げのジェスチャはなされていないと判定され、ステップS403へ戻り、引き続き、部位変化検出部250が指と手の角度の変化の検出を行う。ジェスチャ認識部260は、指曲げと判定した場合(ステップS405)、指曲げジェスチャがなされたことを、インターフェース制御部270へ出力する。このように、手の領域を検出したうえで、指の部位を検出することで、不随意運動によって手が動いてしまう人であっても、確実に指の動きを検出してジェスチャ認識することができる。
次に、インターフェース制御部270は、ジェスチャ認識部260の出力に応じて、指曲げに関連付けられたインターフェース制御を行う(ステップS406)。具体的には、インターフェース制御部270は、対応ジェスチャデータベース286を参照し、指曲げに対応するインターフェース制御をインターフェース30に対して行う。このように、手や指がどのような場所にあって、どの角度から曲げたとしても変化量によって指曲げを判定するため、様々な特性を有した人のジェスチャ認識を行うことができる。
図5は、指曲げジェスチャの認識を行う際に撮像した距離画像データの一例を示す図面である。撮像された画像データには、距離データが含まれているため、距離が大きく異なる境界は白く抜けた状態となっている。このような距離画像データから指及び手を検出する。
図6は、本発明のジェスチャ認識装置20において行われる、腕の振り動作のジェスチャ認識とジェスチャ認識に対応するインターフェース制御処理の流れの一例を示すフロー図である。
まず、部位領域抽出部220は、画像取込部210が取り込んだ距離画像データから、腕が存在しうる領域の検出、つまり、肘から先の前腕の領域となる三次元空間の部位領域を抽出する(ステップS601)。具体的には、部位領域抽出部220は、距離画像データ中で肘から先の前腕及び手が存在し得る三次元空間として設定されているパラメータをパラメータデータベース282から読み出し、距離画像データからパラメータとして設定されている領域を抽出する。パラメータデータベースには、前腕及び手が存在し得る三次元空間として、たとえば、三次元座標の最大値及び最小値が記憶されている。
次に、部位検出部230は、腕が存在する領域の距離画像データから検出対象となる腕を検出する(ステップS602)。部位検出部230は、部位領域抽出部220が出力した部位領域の距離画像データに、パーティクルフィルタを適用する。
部位変化検出部250は、部位検出部230が距離画像データから検出した腕の部位に基づいて、距離画像データ間における腕の動きの変化を検出する(ステップS603)。部位変化検出部250は、具体的には、腕の位置の変化の検出にあたっては、パーティクルフィルタを用いて局所的特徴を追跡することで行う。そして、距離画像データのフレーム間差分におけるパーティクルの尤度を決定することで大きく動く腕の振りをトラッキングする。そして、部位変化検出部250は、パーティクル群の重心移動距離から腕状態を推定することで、腕の位置変化を検出する。
ジェスチャ認識部260は、部位変化検出部250が検出した腕の振りが所定値以上かどうかを判定する(ステップS604)。つまり、所定時間内における腕のパーティクル群の重心移動距離の変化量が所定値以上かを判定する。所定値となる設定しきい値は、パラメータデータベース284に記憶されており、ジェスチャ認識部260は、そのしきい値を読みだして、参照することで、判定を行う。判定の結果、所定値以上である場合(yes)、腕が振られたと判定される(ステップS605)。判定の結果、腕の位置の変化量が所定値以下の場合(no)、腕振りのジェスチャはなされていないと判定され、ステップS603へ戻り、引き続き、部位変化検出部250が腕の位置の変化の検出を行う。ジェスチャ認識部260は、腕が振られたと判定した場合(ステップS605)、腕振りジェスチャがなされたことを、インターフェース制御部270へ出力する。
次に、インターフェース制御部270は、ジェスチャ認識部260の出力に応じて、腕振りに関連付けられたインターフェース制御を行う(ステップS606)。具体的には、インターフェース制御部270は、対応ジェスチャデータベース286を参照し、腕振りに対応するインターフェース制御をインターフェース30に対して行う。
図7は、腕振りを認識する場合において、距離画像データからパーティクルフィルタにより腕をトラッキングする処理を行っている画面の一例である。中央の画像が距離画像データであり、右上の画像が、距離画像データにパーティクルフィルタを適用した画像、右下の画像が、パーティクル群から検出した重心を指先に示す画像である。このように、距離画像データにパーティクルフィルタを適用することで、腕の局所的特徴をトラッキングし、腕の重心を検出し、重心移動距離を算出することで、腕の振りを検出している。
図8は、本発明のジェスチャ認識装置20において行われる、頭の動きの動作のジェスチャ認識とジェスチャ認識に対応するインターフェース制御処理の流れの一例を示すフロー図である。
まず、部位領域抽出部220は、画像取込部210が取り込んだ距離画像データから、頭部が存在しうる領域の検出、つまり、首より上の頭部の領域となる三次元空間の部位領域を抽出する(ステップS801)。具体的には、部位領域抽出部220は、距離画像データ中で頭部が存在し得る三次元空間として設定されているパラメータをパラメータデータベース282から読み出し、距離画像データからパラメータとして設定されている領域を抽出する。パラメータデータベースには、頭部が存在し得る三次元空間として、たとえば、三次元座標の最大値及び最小値が記憶されている。
次に、部位検出部230は、頭部が存在する領域の距離画像データから検出対象となる頭部を検出したうえで、鼻を検出する(ステップS802)。部位検出部230は、部位領域抽出部220が出力した部位領域の距離画像データのなかから、テクスチャ画像に基づいて、ジェスチャ対象となる頭部を検出する。具体的には、テクスチャ画像に基づき、頭部となりうる楕円球の形状を抽出する。次に、抽出範囲をラベリングしていき、顔に最も近いオブジェクトを顔として認識する。抽出する楕円球の形状や顔のオブジェクトについては、パラメータデータベース284にあらかじめ、座標値の最大値、最小値が記憶されており、部位検出部230は、それらの値を読みだすことで顔を抽出する。次に、抽出された顔画像の距離画像データを、ズーム、回転等を行って、位置を正規化し、顔画像のデータのうち、最もカメラに対して距離が近い点を鼻として抽出する。
続いて、部位検出部230は、鼻の部位から顔の法線ベクトルを算出する(ステップS803)。具体的には、検出した鼻の位置に基づき、鼻を中心とした領域の距離情報に基づいて顔の法線ベクトル(顔の向き)を計算する。
部位変化検出部250は、顔の法線の向きの変化を検出する(ステップS804)。部位変化検出部250は、キャッシュ部240に記憶されている一又は数フレーム以前の距離画像データにおける顔の法線ベクトルと、現在の距離画像データにおける法線ベクトルの変化量を算出し、顔の向きの変化を検出する。
ジェスチャ認識部260は、部位変化検出部250が検出した法線ベクトルの向きの変化が所定値以上かどうかを判定する(ステップS805)。つまり、法線ベクトルの向きの変化量が所定値以上かを判定する。所定時間内における向きの変化量から判定してもよい。例えば、顔を動かしていない状態を初期位置として、右向き、左向きまたは下向きへと意図して首を動かしたときに生じる変化量で判定してもよい。所定値となる設定しきい値は、それぞれの向きに応じた値がパラメータデータベース284に記憶されており、ジェスチャ認識部260は、そのしきい値を読みだして、参照することで、判定を行う。判定の結果、所定値以上である場合(yes)、頭を動かしたと判定される(ステップS806)。判定の結果、法線の向きの変化量が所定値以下の場合(no)、頭を振るジェスチャはなされていないと判定され、ステップS803へ戻り、引き続き、部位変化検出部250が法線ベクトルの向きの変化の検出を行う。ジェスチャ認識部260は、頭を振ったと判定した場合(ステップS806)、頭を振るジェスチャがなされたことを、インターフェース制御部270へ出力する。
次に、インターフェース制御部270は、ジェスチャ認識部260の出力に応じて、頭の動きに関連付けられたインターフェース制御を行う(ステップS807)。具体的には、インターフェース制御部270は、対応ジェスチャデータベース286を参照し、頭の動きに対応するインターフェース制御をインターフェース30に対して行う。
図9は、頭を振るジェスチャを認識する場合において、距離画像データから鼻を抽出し、法線ベクトルを算出する処理を行った画面の一例である。このように顔画像を正規化して、鼻を検出したあと、法線ベクトルを算出する。
図10は、本発明のジェスチャ認識装置20において行われる、舌出し動作のジェスチャ認識とジェスチャ認識に対応するインターフェース制御処理の流れの一例を示すフロー図である。
まず、部位領域抽出部220は、画像取込部210が取り込んだ距離画像データから、頭部が存在しうる領域の検出、つまり、首より上の頭部の領域となる三次元空間の部位領域を抽出する(ステップS1001)。このステップは、頭部を振るジェスチャ動作の認識におけるステップS801と同様であるので、詳細は省略する。
次に、部位検出部230は、頭部が存在する領域の距離画像データから検出対象となる頭部を検出したうえで、鼻を検出する(ステップS1002)。この処理についても、頭を振る動作の認識におけるステップS802と同様であるため、説明を省略する。
部位検出部230は、距離画像データから検出した鼻の部位に基づき、鼻より下の頭部領域から舌の領域を検出する(ステップS1003)。具体的には、検出した鼻の位置に基づき、鼻より下の頭部領域のHSV色情報(色相、明度、彩度)を取得し、舌の色として設定した色相のしきい値をパラメータデータベース284から読み出して、フィルタリングを行う。フィルタリングによって抽出された領域にラベリング処理を行って、所定サイズ以上のラベルを有する領域を舌として検出する。
部位変化検出部250は、舌領域の変化を検出する(ステップS1004)。部位変化検出部250は、キャッシュ部240に記憶されている一又は数フレーム以前の距離画像データにおける舌領域と、現在の距離画像データにおける舌領域との変化量を算出し、舌領域の変化を検出する。
ジェスチャ認識部260は、部位変化検出部250が検出した舌領域の変化が所定値以上かどうかを判定する(ステップS1005)。また、舌領域が、所定面積以上になり、一定時間継続しているかどうかで判定してもよい。所定値となる設定しきい値は、パラメータデータベース284に記憶されており、ジェスチャ認識部260は、そのしきい値を読みだして、参照することで、判定を行う。判定の結果、所定値以上である場合(yes)、舌を出したと判定される(ステップS1006)。判定の結果、舌領域の変化が所定値以下の場合(no)、舌を出すジェスチャはなされていないと判定され、ステップS1004へ戻り、引き続き、部位変化検出部250が舌領域の変化の検出を行う。ジェスチャ認識部260は、舌を出したと判定した場合(ステップS1006)、舌を出すジェスチャがなされたことを、インターフェース制御部270へ出力する。このように、舌領域の抽出を頭部領域の検出から行うように構成することで、顔の動きに不随意運動がある人であっても、確実に頭部の動きをトラッキングして舌領域を検出してジェスチャ認識を行うことが可能となる。
次に、インターフェース制御部270は、ジェスチャ認識部260の出力に応じて、舌を出すジェスチャに関連付けられたインターフェース制御を行う(ステップS1007)。具体的には、インターフェース制御部270は、対応ジェスチャデータベース286を参照し、舌出しに対応するインターフェース制御をインターフェース30に対して行う。
図11は、舌出しジェスチャを認識する場合において、取得される距離画像データの一例である。(a)の中央は舌を出した距離画像データであり、右側に画像処理した画像が表示されている。右上が頭部検出した画像データ、右中が頭部検出後正規化した画像データ、右下が舌領域を検出した画像データである。(b)の中央は舌を出していない距離画像データであり、右側に(a)と同様に画像処理した画像が表示されている。このように舌の色に該当する色領域を抽出し、色領域の変化に基づいて舌出しのジェスチャ認識を行う。
図12は、本発明のジェスチャ認識装置20において行われる、ひざ閉じ動作のジェスチャ認識とジェスチャ認識に対応するインターフェース制御処理の流れの一例を示すフロー図である。
まず、部位領域抽出部220は、画像取込部210が取り込んだ距離画像データから、両ひざが存在しうる領域の検出を抽出する(ステップS1201)。具体的には、部位領域抽出部220は、距離画像データ中で膝が存在し得る三次元空間として設定されているパラメータをパラメータデータベース282から読み出し、距離画像データからパラメータとして設定されている領域を抽出する。パラメータデータベースには、膝が存在し得る三次元空間として、たとえば、三次元座標の最大値及び最小値が記憶されている。
次に、部位検出部230は、ひざが存在する領域の距離画像データから検出対象となる両ひざのひざ頭部分を検出する(ステップS1202)。部位検出部230は、部位領域抽出部220が出力したひざ領域の距離画像データで、各々ひざの領域の端側から山登り法により、両ひざのひざ頭位置の推定を行うことで、ひざ頭部分を検出する。
部位変化検出部250は、部位検出部230が距離画像データから検出した両ひざのひざ頭の位置に基づいて、距離画像データ間における両ひざの位置の変化を検出する(ステップS1203)。具体的には、部位変化検出部250は、キャッシュ部240に記憶されている一又は数フレーム以前の距離画像データにおけるひざ頭の部位の位置と、現在の距離画像データにおける両ひざの位置から、両ひざの位置変化を検出する。両ひざの位置変化の検出にあたっては、それぞれの距離画像データにおける両ひざの位置座標から変化量を算出する。具体的には、ここでは、ひざ閉じのジェスチャとなるため、両ひざの位置座標が近付くことによる変化量を算出することとなる。
ジェスチャ認識部260は、部位変化検出部250が計算した両ひざの位置変化に基づき、所定時間、変化量が所定値以上に継続するかどうかを判定する(ステップS1204)。なお、両ひざの座標値による距離が所定値以上に近づいているかどうかで判定してもよい。所定値となる設定しきい値は、パラメータデータベース284に記憶されており、ジェスチャ認識部260は、そのしきい値を読みだして、参照することで、判定を行う。判定の結果、所定値以上である場合(yes)、両ひざが閉じられたと判定される(ステップS1205)。判定の結果、両ひざの位置の変化量が所定値以下の場合(no)、ひざ閉じのジェスチャはなされていないと判定され、ステップS1203へ戻り、引き続き、部位変化検出部250が両ひざの位置の変化の検出を行う。ジェスチャ認識部260は、ひざ閉じと判定した場合(ステップS1205)、ひざ閉じジェスチャがなされたことを、インターフェース制御部270へ出力する。
次に、インターフェース制御部270は、ジェスチャ認識部260の出力に応じて、ひざ閉じに関連付けられたインターフェース制御を行う(ステップS1206)。具体的には、インターフェース制御部270は、対応ジェスチャデータベース286を参照し、ひざ閉じに対応するインターフェース制御をインターフェース30に対して行う。なお、ひざ閉じについては、必ずしも両ひざが密着するまで近づく必要はなく、通常の状態よりも、近づいた状態になったところで、ひざ閉じのジェスチャが行われたと認識してもよい。どの位置でひざ閉じと認識するかは、設定するしきい値で任意に設定することができる。また、ここでは、ひざ閉じのジェスチャとしたが、ひざを開くことで、ジェスチャ認識を行ってもよい。
図13は、ひざ閉じのジェスチャを検出するために撮像された距離画像データの一例である。このように、ひざの認識にあたっては、ひざが中心に映るようなカメラ設定で、撮影される。
(第二の実施の形態)
第一の実施の形態においては、インターフェース制御に用いることができる身体の各部位についてジェスチャを認識するためのパラメータを設定し、どの部位を用いるかを選択することで、再現性のある動きができる部位が身体障害者各々によって異なったとしても、ジェスチャ認識することが可能なジェスチャ認識装置について説明した。第二の実施の形態においては、ジェスチャ認識によりインターフェース制御を行う(ジェスチャ認識モード)前に、ジェスチャ決定モードを設けることで、日々変化する個々の身体障害者の症状に合わせて、的確にジェスチャ認識を行うジェスチャ認識装置について説明する。なお、第一の実施の形態と同様の処理については、説明を省略する。
図14は、本発明の第二の実施の形態のジェスチャ認識装置を含むジェスチャ認識システム例を示すブロック図である。なお、図1と共通する構成については、同じ番号を付し、説明を省略する。図15において、ジェスチャ認識装置200は、撮像装置10、インターフェース30と接続されている。ジェスチャ認識装置200は、画像取込部210、部位領域抽出部220、部位検出部230、キャッシュ部240、部位変化検出部250、ジェスチャ認識部260、インターフェース制御部270、記憶部280、ジェスチャ決定部290を有する。
記憶部280は、距離画像データベース282、パラメータデータベース284、対応ジェスチャデータベース286、ジェスチャ指示プログラム288を有している。距離画像データベース282は、撮像装置10から、画像取り込み部210が取り込んだ距離画像データを記憶している。パラメータデータベース284は、所定の部位領域が撮像されている距離画像データにおける座標範囲である部位領域抽出パラメータ、所定部位を検出するために用いられる色のしきい値または座標値である部位検出パラメータ、部位変化を検出してジェスチャとして認識するためのしきい値を記憶している。第二の実施の形態においては、少なくとも部位変化を検出してジェスチャとして認識するためのしきい値である部位検出パラメータは、ジェスチャ決定モードによって決定されたパラメータであり、利用者ごとに異なる値が設定されている。ジェスチャとして認識するための変化量であるしきい値は、ジェスチャ決定部290が決定した値であって、ジェスチャ決定モードが実行されるたびに更新される。対応ジェスチャデータベース286は、ジェスチャの動作に関連付けられたインターフェース制御の内容を対応付けて記憶しているデータベースである。ジェスチャ決定部290の決定に基づいて、利用者ごとに、インターフェース制御に用いる身体部位とインターフェース制御の内容とを対応付けて記憶している。
ジェスチャ指示プログラム288は、利用者に所定のタイミングで、動く身体部位を動かすように指示するプログラムであって、ジェスチャ決定部290によって読み出される。ジェスチャ指示プログラム288は、所定のタイミングで複数回、指示を出して利用者に身体を動かすようにさせる。これにより、利用者の意思による動作であって、かつ再現性のある動作(随意運動)を取得することができ、また、複数回、指示を出して動作をさせることで、より確実にインターフェース制御に利用できるジェスチャを決定することを可能としている。
ジェスチャ決定部290は、利用者の一又は複数の候補部位から、インターフェース制御に関連付ける部位及びジェスチャを決定する。利用者によって、動かすことのできる身体部位が異なり、また動かせる度合いや動かし方も異なる。このため、ジェスチャ決定部280は、ジェスチャ決定モードにおいて、ジェスチャ指示プログラム288を記憶部280から読み出して、ジェスチャを所定のタイミングで行うよう、利用者に指示し、インターフェース制御に関連付ける候補となる身体部位が所定のタイミングで動いたかどうかを、部位変化検出部250が検出した部位の変化量に基づいて判定する。指示したタイミングにおける変化の場合、利用者が意思をもって動かしたと判断できるため、再現性のある動き、つまりインターフェース制御に利用可能なジェスチャを確実に取得できる。また、複数回、指示を出して身体部位を動かすことで、ジェスチャに利用可能な身体部位を決定し、さらにより確実にジェスチャと認識可能なしきい値を決定することができる。
たとえば、ジェスチャ決定部290は、ジェスチャ決定モードにおいて複数回取得することができた所定タイミングにおける変化量から、ジェスチャと認識する変化量を決定する。変化量としてみるパラメータは、各身体部位によって異なる。例えば、指曲げのジェスチャであれば、指と手の角度の変化であり、腕の振りであれば、腕の位置変化である。複数回取得した変化から、最終的にジェスチャとして認識する変化量、しきい値を決定する。この時、取得された複数の値の平均値をしきい値として決定してもよい。例えば、指曲げであれば、ジェスチャ指示プログラムが指示したタイミングで取得した手と指による角度の平均値を算出し、変化量として決定する。また、ジェスチャ決定部290は、過去に決定した変化量の値を一又は複数記憶しておき、今回計算した平均値と過去の値との平均を計算し、それを新たなしきい値として決定してもよい。この場合、記憶されている過去の値は、新しい値が記憶されるごとに、もっとも古い値が削除されていく(FIFO)ように構成されていてもよい。
ジェスチャ決定部290により決定されたジェスチャに利用可能な身体部位及びジェスチャの動きにかかる変化量は、パラメータデータベース284にジェスチャ認識のためのしきい値として、利用者に対応づけて記憶される。また、ジェスチャ決定部290において決定されたジェスチャに利用可能な身体部位及び変化量は、ジェスチャとしてインターフェース制御に対応付けて対応ジェスチャデータベース286へ記憶される。
ジェスチャ認識部260は、ジェスチャ認識モードにおいて、ジェスチャ決定部290が決定した所定の身体部位における変化量(部位変化検出パラメータ)を読み出して、部位変化検出部250が検出した所定部位の変化量が部位変化検出パラメータのしきい値以上である場合、所定のジェスチャが行われたと認識する。ジェスチャ認識部260は、ジェスチャがされたと判定すると、判定されたジェスチャ内容をインターフェース制御部270へ送出する。インターフェース制御部270は、ジェスチャ認識部260が認識したジェスチャに関連づけられたインターフェース制御を行う。
図15は、本発明の第二の実施の形態におけるジェスチャ決定モードにおいてジェスチャ認識装置20において行われる、利用者のジェスチャを決定する処理の流れの一例を示すフロー図である。このジェスチャ決定モードは、利用者が初めてジェスチャ認識装置を使用するときに、必ず行われるモードであり、ジェスチャ決定モードで、ジェスチャに用いる身体部位及びジェスチャとして用いる部位変化を決定し、その後のジェスチャ認識モードでのジェスチャ認識の際に、決定した身体部位及び部位変化量が用いられる。なお、ジェスチャ決定モードは、毎日、実施されるようにしてもよい。毎日実施することにより、日々変化する利用者の身体症状に応じて、ジェスチャ認識させる変化量を変化させることができ、より正確でユーザフレンドリーなジェスチャ認識装置を実現することができる。
ジェスチャ決定モードが開始される前に、利用者は、全身または上半身または下半身の正面を撮像装置10が撮影できるような位置にいるようにする。まず、ジェスチャ決定モードが開始されると、ジェスチャ指示プログラム288がジェスチャ決定部290によって読み出され、開始する(ステップS1601)。ジェスチャ指示プログラム288は、利用者に対して、所定のタイミングで、身体部位を動かすように合図、指示を行うプログラムである。指示は,音楽に合わせて動作を行うタイミングを意味する○が、左から右に流れ、左側の所定位置に来たときにジェスチャをすることで音が鳴る仕組みになっている.初回以降は,二以上の候補部位に対して、それぞれ異なるタイミングで指示を出したり、同時に指示を出したりすることが可能なプログラムである。
部位領域抽出部220は、候補部位の領域を検出する(ステップS1602)。部位領域抽出部220は、画像取り込み部210が取得した撮像装置10からの距離画像データから、ジェスチャに利用可能な身体の候補部位領域を抽出する。候補となり身体部位の領域としては、たとえば、頭、手、腕、膝、足先、指、口などである。撮像装置10と利用者との位置関係から、距離画像データ内での所定部位が存在しうる範囲が定まるため、パラメータデータベース284に記憶されている部位領域抽出パラメータである三次元座標データ(x,y,z)を読み出して、候補部位の領域を検出する。
次に、部位検出部230は、部位領域から所定部位を検出する(ステップS1603)。部位検出部230は、たとえば、部位領域抽出部220によって抽出された部位領域の距離画像データ内のテクスチャ情報、色情報(例えば、色相、彩度、明度)、形状などの部位検出パラメータに基づいて、部位領域を検出する。部位検出部230は、部位検出パラメータを、パラメータデータベース284から対応する身体部位に基づいて読み出して、検出に利用する。
部位変化検出部250は、部位の座標変化を検出する(ステップS1604)。部位検出部230が、各距離画像データにおいて検出した候補部位に基づいて、距離画像データ間での候補部位の座標の変化を検出する。たとえば、部位変化検出部250は、キャッシュ部240に一時記憶されている、比較対象となる前フレームの距離画像データにおける候補部位領域と、現在フレームの距離画像データにおける候補部位領域の座標変化を算出する。例えば、候補部位が舌である場合には、舌領域の変化量を算出し、膝である場合には、膝の位置変化量を算出する。
次に、ジェスチャ決定部290は、部位変化検出部250が部位変化を検出すると、所定のタイミングにおける座標の変化かの判定を行う(ステップS1605)。所定のタイミングとは、ジェスチャ指示プログラムが利用者に身体部位を動かすように指示したタイミングである。身体障害者の場合、自分の意思とは無関係に身体が動いてしまうことがある。しかし、所定のタイミングでの座標の変化であれば、利用者が意図をもって動かしたことによる座標変化であることが明らかであり、ジェスチャとして利用可能な座標変化ということになる。ここで、たとえば、指示したタイミングから0.5秒以内の座標変化であれば、所定のタイミングにおける座標の変化であると判定する。
所定のタイミングにおける座標変化の場合(yes)、ジェスチャ決定部290は、座標の変化量を記憶する(ステップS1606)。具体的には、部位変化検出部250が算出した候補部位領域での移動の始点、終点の座標値、始点から終点に達するまでの時間を記憶する。これらのデータは、ジェスチャ指示プログラムが終了するまで、逐次記憶されていく。
所定のタイミングにおける座標変化ではない場合(no)、部位変化検出部250は引き続き候補部位の座標変化を検出する(ステップS1604)。
そして、ジェスチャ決定部290は、ジェスチャ指示プログラムが終了したかの判定を行う(ステップS1607)。ジェスチャ指示プログラムが終了した場合(yes)、ジェスチャ決定部290は、記憶した変化量に基づき、平均値 を算出する(ステップS1608)。具体的には、取得した複数の変化量からジェスチャ認識の際に用いるしきい値を算出する。ここでは、平均値を算出するとしているが、これに限らない。たとえば、取得した変化量のうち、最大値と最小値の中間値をしきい値と決定してもよい。また、取得した変化量のうち、一定以上の値を有するもののうち、最小値をしきい値として決定してもよい。変化量としてみるパラメータが各身体部位によって異なるため、複数の変化量からどのようにしてしきい値を決めるかは、身体部位によって異なってもよい。
また、しきい値を算出するにあたって、過去に同じ利用者についてジェスチャ指示プログラムを実行して、しきい値を決定したことがある場合、そのしきい値を一又は複数記憶しておき、過去に実行したときのしきい値と今回実行した際の変化量から算出した値との平均をさらに算出して、しきい値としてもよい。この場合、記憶されている過去のしきい値は、新しい値が記憶されるごとに、もっとも古い値が削除されていく(FIFO)ように構成されていてもよい。なお、ジェスチャ決定部290は、候補部位のなかで、取得できた値のばらつきが大きい部位がある場合、平均値を算出せず、その候補部位については、ジェスチャには使わないと決定する 。
ジェスチャ指示プログラムが終了していない場合(no)、部位変化検出部250は、引き続き、候補部位の座標変化を検出する(ステップS1604)。
次に、ジェスチャ決定部290は、パラメータデータベース284に記憶している値を更新してジェスチャを決定する(ステップS1609)。具体的には、ジェスチャ決定部290は、ジェスチャ認識に使うと決定した身体部位に対応付けて、算出した平均値をしきい値として記憶する。更新された部位変化検出パラメータは、ジェスチャ認識モードにおいて、ジェスチャ認識の際に用いられる。また、ジェスチャ決定部290は、ジェスチャに用いる部位を決定すると、その身体部位とインターフェース制御とを対応づけるために、対応ジェスチャデータベース286を更新する。そして、ジェスチャ決定モードを終了する。このように、ジェスチャ決定モードを設けることで、各人の症状に合った、ジェスチャ認識のためのしきい値を決定することができるため、精度高くジェスチャ認識を行うことができる。
ジェスチャ決定モードにおいて、ジェスチャに用いられる身体部位、ジェスチャ認識のためのしきい値が決定されると、ジェスチャ認識モードでは、ジェスチャ決定モードで決定されたしきい値をパラメータデータベース284から読み出してジェスチャ認識を行って、インターフェース制御を行う。ジェスチャ認識の処理は、第一の実施の形態と同様であるため、説明を省略する。
図16は、本発明において用いられるジェスチャ指示プログラム288での指示画面の一例である。ジェスチャ決定モードでは、ジェスチャ指示プログラム288が実行されると、画面で身体を動かすように指示がなされる。ここでは、4つの部位を割り当てることが可能となっており、それぞれ左端に丸印が到達したタイミングで、割り当てられた身体を動かすような仕組みである。なお、これは一例であり、利用者に所定のタイミングで身体部位を動かすように指示するプログラムであれば、音声で指示するなど、どのように構成してもよい。
ジェスチャ決定モードが終了すると、ジェスチャ認識モードとなり、ジェスチャ認識部が、ジェスチャ決定部290が決定したジェスチャ認識に用いる身体部位と、そのしきい値に基づいて、基本的に図2のフロー図に従い、ジェスチャ認識を行う。各身体部位におけるジェスチャ認識の処理は、第一の実施の形態と同様であるため、省略する。
(第三の実施の形態)
次の第三の実施の形態について説明する。第三の実施の形態においても、ジェスチャ決定モードを設けて、各人に合わせたジェスチャ認識のためのしきい値を決定するが、第二の実施の形態とは異なり、検出する部位が身体のどこであるかを意識することなく、ジェスチャを決定する。なお、第三の実施の形態におけるジェスチャ認識システムは、第二の実施の形態と同様である。第二の実施の形態と同様の内容については、説明を省略する。
図17は、本発明の第三の実施の形態におけるジェスチャ決定モードにおいてジェスチャ認識装置20において行われる、利用者のジェスチャを決定する処理の流れの一例を示すフロー図である。
ジェスチャ決定モードが開始される前に、利用者は、ジェスチャに用いる身体部位が撮像装置10に最も近くなるような位置になるようにする。ジェスチャに用いる身体部位としては、手、腕、膝、足先、指、口、耳などがある。このうち、動きが小さい身体部位は、指、口、耳などである。たとえば、ジェスチャに用いる身体部位が足先である場合、足先が撮像装置10に最も近くなるように撮像装置と利用者の位置を調整しておく。また、寝たきり状態の利用者である場合、寝ている床平面を推定し、床平面の上からジェスチャに用いる身体部位が撮像装置10に対して最も近くなるように撮像装置と利用者の位置を調整する。最も近くになるような位置とすることで、容易に動きを検出することができる。そして、ジェスチャ決定モードが開始されると、ジェスチャ指示プログラム288がジェスチャ決定部290によって読み出され、プログラムが開始される(ステップS1701)。ジェスチャ指示プログラム288は、利用者に対して、所定のタイミングで、身体部位を動かすように合図、指示を行う。
部位領域抽出部220は、候補領域を検出する(ステップS1702)。部位領域抽出部220は、画像取込部210が取得した撮像装置10からの距離画像データから、候補領域を抽出する。あらかじめジェスチャに用いる身体部位が撮像装置10に対して近い位置になっていることを利用して、撮像装置10に近い視差データをもつ領域が抽出されるように、視差値にしきい値を設け、しきい値で候補領域を抽出する。
次に、部位検出部230は、抽出した領域が含まれる矩形を部位として検出する(ステップS1703)。部位検出部230は、たとえば、部位領域抽出部220によって抽出された、候補領域を含んだ矩形をフレーム画像それぞれに設定する。つまり、所定のフレーム数分のフレーム画像において、それぞれの動き領域を包含する矩形を決定していく。この矩形は、三次元座標(x,y,z)及び画面座標(u,v)で特定される。
部位変化検出部250は、矩形内の変化を検出する(ステップS1704)。部位検出部230が、各距離画像データで候補領域を含む矩形を設定する。そして、部位変化検出部250は、キャッシュ部240に一時記憶されている、所定のフレーム数分の過去のフレーム画像において比較対象となる前フレームの距離画像データにおける矩形領域と、現在フレームの距離画像データにおける矩形領域における変化を算出する。変化とは、特徴点の座標変化、またはグレー画像やグレー画像からのエッジ画像のフレーム間差分である。口や耳など、動きの小さい部位での変化の検出には、グレー画像又はグレー画像からのエッジ画像のフレーム間差分を算出することが望ましい。従って、利用者の症状によって口や耳などをわずかに動かすことしかできないことがわかっている場合には、変化検出をフレーム間差分で行うように予め設定してもよい。他人から見てすぐに動いていることがわかる程度に身体を動かすことができる利用者の場合は、特徴点の座標変化を検出する。
次に、ジェスチャ決定部290は、部位変化検出部250が変化を検出すると、所定のタイミングにおける動きかどうかの判定を行う(ステップS1705)。所定のタイミングとは、ジェスチャ指示プログラムが利用者に身体部位を動かすように指示したタイミングである。たとえば、ジェスチャ決定部290は、指示したタイミングから0.5秒幅のなかでの動きである場合は、所定のタイミングにおける動きであると判定する。身体障害者の場合、自分の意思とは無関係に身体が動いてしまうことがある。しかし、所定のタイミングでの座標の変化であれば、利用者が意図をもって動かしたことによる座標変化であることが明らかであり、ジェスチャとして利用可能な座標変化ということになる。
所定のタイミングにおける動きの場合(yes)、ジェスチャ決定部290は、矩形を決定し、変化量を記憶する(ステップS1706)。ジェスチャ決定部290は、所定のタイミングにおける変化の場合、変化した最初から終わりまで、所定のフレーム数のフレーム画像各々に部位検出部230が設定した矩形からもっとも大きい矩形を決定する。これにより、ジェスチャをしたときに変化する画像領域を特定しておくことで、トラッキングする領域を限定し、処理を高速にすることができる。そして、決定した矩形を部位検出パラメータとしてパラメータデータベース284に、三次元座標(x,y,z)及び画面座標(u,v)で記憶する。
そして、ジェスチャ決定部290は、変化した最初の画像から終わりの画像までにおける、部位変化検出部250が算出した特徴点の座標変化による三次元軌跡を計算する。三次元軌跡は、動きの始点となる定常状態における座標と最大移動時である終点の座標それぞれが、三次元座標及び画面座標で記憶される。なお、座標値だけでなく、始点及び終点の距離を合わせて記憶してもよい。フレーム間差分を変化として検出する場合は、グレー画像又はグレー画像からのエッジ画像によるフレーム間差分を記憶する。これらのデータは、ジェスチャ指示プログラムが終了するまで、逐次記憶されていく。
所定のタイミングにおける動きではない場合(no)、ジェスチャ決定部290は、部位変化検出部が検出した変化は無視し、部位変化検出部250は所定位置の動きを検出する(ステップS1704)。
そして、ジェスチャ決定部290は、ジェスチャ指示プログラムが終了したかの判定を行う(ステップS1707)。ジェスチャ指示プログラムが終了した場合(yes)、ジェスチャ決定部290は、記憶した複数の変化量に基づき、平均値を算出する(ステップS1608)。算出した平均値は、ジェスチャ認識の際のしきい値となる。たとえば、座標変化による三次元軌跡を取得している場合、動きの始点となる座標値及び終点の座標値それぞれについて、平均値を算出する。ここで、平均値をしきい値としているが、必ずしも平均値に限らない。たとえば、動きの始点の座標と終点の座標の中間点をしきい値と決定したり、移動軌跡位置をヒストグラム化して2値のしきい値選定法によって決定してもよい。また、フレーム間差分の値を変化量としている場合は、変化量の極大値を集積し、その極大値の中の最小値を算出し、その最小値をジェスチャと認識するしきい値として決定してもよい。なお、この場合に、極大値の正規分布から一定量外れた下位の極大値は除外するようにしてもよい。
また、しきい値を算出するにあたって、過去に同じ利用者についてジェスチャ指示プログラムを実行して、しきい値を算出したことがある場合、過去に算出したしきい値を一又は複数記憶しておき、過去に実行したときのしきい値と今回実行した際の変化量から算出したしきい値との平均をさらに算出して、しきい値としてもよい。この場合、記憶されている過去のしきい値は、新しい値が記憶されるごとに、もっとも古い値が削除されていく(FIFO)ように構成されていてもよい。なお、ジェスチャ決定部290は、候補部位のなかで、取得できた値のばらつきが大きい部位がある場合、平均値を算出せず、その候補部位については、ジェスチャには使わないと決定する。
ジェスチャ指示プログラムが終了していない場合(no)、部位変化検出部250は、引き続き、所定位置の動きを検出する(ステップS1704)。
次に、ジェスチャ決定部290は、パラメータデータベース284に記憶している値を更新してジェスチャを決定する(ステップS1709)。具体的には、ジェスチャ決定部290は、ジェスチャを画像から抽出するための矩形の座標値と、ジェスチャ認識のための変化を検出するためのしきい値を、ジェスチャ認識を行う部位としてパラメータデータベース284に記憶させる。ジェスチャ認識のためのしきい値は、部位変化検出パラメータであって、始点及び終点の座標またはフレーム間差分値のいずれかである。更新された部位変化検出パラメータは、ジェスチャ認識モードにおいて、ジェスチャ認識の際に用いられる。また、ジェスチャ決定部290は、ジェスチャを決定すると、そのジェスチャとインターフェース制御とを対応づけるために、対応ジェスチャデータベース286を更新する。そして、ジェスチャ決定モードを終了する。このように第三の実施の形態においては、動いている部位が、身体のどこの部位であるかを意識することなく、個々人の症状に合わせたジェスチャ認識を行うことを可能としている。
図18は、本発明の第三の実施の形態におけるパラメータデータベース284及び対応ジェスチャデータベース286のデータ記憶内容を示す一例である。パラメータデータベース284では、利用者に対応付けて、ジェスチャ認識に用いる部位と矩形領域を特定するパラメータ及びジェスチャ認識のための変化を検出するためのしきい値が記憶されている。但し、部位の情報は、部位として身体のどこの部位を用いるかを特定する情報ではなくジェスチャに用いる領域が複数ある場合に、区別するための情報として例えば「部位1」「部位2」として記憶されている。このように第三の実施の形態においては、ジェスチャ認識を行う部位が実際の身体部位のどこであるかを意識することなく、動き領域を検出するための矩形の座標と、ジェスチャ認識するためのしきい値である、座標値またはフレーム間差分の値のみを記憶することで、ジェスチャ認識を可能としている。ここで、矩形領域の情報として、三次元座標及び画面座標の4点の座標を記憶しているが、これに限らず、矩形領域を特定する情報であれば、ほかの方法でもよい。また、視差値によるしきい値によって候補領域を検出するときに、個々人によって異なるしきい値設定する場合は、視差のしきい値を部位領域抽出パラメータとしてあわせて記憶してもよい。
対応ジェスチャデータベース286は、ジェスチャと認識する変化量と、インターフェース制御内容とを対応づけて記憶する。第三の実施の形態では、どの身体部位によるどういった動きを検出しているかではなく、ある場所が所定値以上動いた場合にジェスチャと認識することとしているため、ジェスチャと認識する変化量とインターフェース制御内容とを、利用者ごとに記憶している。
図19は、本発明の第三の実施の形態におけるジェスチャ認識装置20において行われる、利用者のジェスチャ動作認識と認識されたジェスチャに対応するインターフェース制御処理の流れの一例を示すフロー図である。
ジェスチャ認識モードにおいては、部位領域抽出部220は、撮像装置10に近い領域を抽出する(ステップS1901)。具体的には、画像取込部210が取り込んだ距離画像データから、部位領域抽出部220は、視差値によるしきい値に基づいて、そのしきい値を満たした領域を抽出する。
部位検出部230は、矩形を所定部位として検出する(ステップS1902)。パラメータデータベース284に記憶されている矩形領域の座標値を読み出して、部位領域抽出部220が抽出した領域のうちの一つを包含している矩形を設定する。なお、複数の部位をジェスチャ認識に用いる場合は、複数の矩形が設定される。
次に、部位変化検出部250は、設定されている矩形内の変化を検出する(ステップS1903)。座標値が部位変化検出パラメータとして記憶されている場合は、座標値の変化、フレーム間差分の値が記憶されている場合は、フレーム間差分を算出する。
ジェスチャ認識部260は、部位変化検出部250が検出した矩形内の変化が所定値以上であるか判定する(ステップS1904)。これは、パラメータデータベース284に記憶されている部位変化検出パラメータに基づいて判定される。変化が所定値以上である場合(yes)は、ジェスチャと認識される(ステップS1905)。矩形内の変化が所定値以上ではない場合(no)、部位変化検出部250は、引き続き矩形内の変化を検出する(ステップS1903)。ジェスチャ認識部260は、ジェスチャがなされたと認識すると、ジェスチャがなされたことをインターフェース制御部270へ出力する。
インターフェース制御部270は、ジェスチャ認識部260からの出力に応じて対応ジェスチャデータベース286を参照し、インターフェース制御をインターフェース30に対して行う(ステップS1906)。このように、身体部位ごとにジェスチャ認識のためのモデルをもたなくとも、ジェスチャ認識を行うことができる。
図20は、ジェスチャ認識装置のハードウェア構成図の一例である。ジェスチャ認識装置20は、システム使用者の所有するパーソナルコンピュータと、パーソナルコンピュータ上で実行されるプログラムとして構成されてもよい。パーソナルコンピュータは、CPU(中央演算装置)1001と、CPU1001にバスを介して接続されているRAM(Random Access Memory)1003、ROM(Read Only Memory)1005、ハードディスクドライブなどの外部記憶装置1007、I/Oインターフェース1009、通信ネットワーク回線に接続するための通信インターフェース1011などとを備え、インターフェース1009には、カメラ1013、アラーム1015、ボタン1017、スイッチ1019が接続されている。この場合、例えば、ジェスチャ認識装置20の画像取込部210、部位領域抽出部220、部位検出部230、部位変化検出部250、ジェスチャ認識部260、インターフェース制御部270、ジェスチャ決定部290の機能が、パーソナルコンピュータ上で実行されるプログラムによって実現され、記憶部280の機能が外部記憶装置1007によって実現され、撮像装置10、インターフェース30の機能がそれぞれカメラ、アラーム、ボタン、スイッチによって実現される。各種機能を実現するプログラムは、外部記憶装置1007に記憶され、RAM1003に読みだされた後に、CPU1001によって実行される。