(57)【要約】【課題】ユーザの動きに応じて、ユーザの意図する処理を正確に実行する。【解決手段】画像処理部１７は、異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置を検出し、モード処理部１９は、ユーザ位置を表す複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、ユーザの動きを示すユーザ動き情報を算出し、算出したユーザ動き情報に基づいて、ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理を決定し、決定した処理を実行する。本発明は、例えばユーザの３次元位置を検出する検出装置に適用できる。【選択図】図１
2012063824.tif 000002
【特許請求の範囲】
【請求項１】
異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置を検出するユーザ位置検出手段と、
前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザの動きを示すユーザ動き情報を算出する算出手段と、
算出された前記ユーザ動き情報に基づいて、前記ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理を決定する決定手段と、
決定された前記処理を実行する実行手段と
を含む情報処理装置。
【請求項２】
前記算出手段は、前記ユーザ動き情報として、所定の時間内における前記座標点の移動量、移動方向、速さ、又は前記座標点が描く軌跡の曲率の少なくとも１つを算出する
請求項１に記載の情報処理装置。
【請求項３】
第１の波長の光を前記ユーザに照射する第１の照射手段と、
前記第１の波長よりも長波長である第２の波長の光を前記ユーザに照射する第２の照射手段と、
前記第１の波長の光が照射されているときに入射される前記ユーザからの反射光に基づいて第１の画像を生成するとともに、前記第２の波長の光が照射されているときに入射される前記ユーザからの反射光に基づいて第２の画像を生成する撮像生成手段と、
生成された前記第１及び第２の画像に基づいて、前記ユーザの肌を表す肌領域を検出する肌領域検出手段と
をさらに含み、
前記ユーザ位置検出手段は、前記肌領域に基づいて、前記ユーザ位置を検出する
請求項２に記載の情報処理装置。
【請求項４】
前記ユーザの動きに応じて移動するポインタを表示させる表示制御手段を
さらに含む請求項３に記載の情報処理装置。
【請求項５】
前記表示制御手段は、前記ユーザ動き情報、前記決定手段により決定された処理、前記ユーザ位置検出手段の検出結果、前記肌領域検出手段の検出結果、又は前記ポインタの動きを示すポインタ動き情報の少なくとも１つを表示させる
請求項４に記載の情報処理装置。
【請求項６】
前記表示制御手段は、前記ユーザ位置検出手段による検出結果として、検出された前記ユーザ位置を表す前記複数の座標軸上の値の少なくとも１つを表示させる
請求項５に記載の情報処理装置。
【請求項７】
前記表示制御手段は、前記ポインタ動き情報として、前記ポインタが移動している方向、又は前記ポインタの軌跡を示す情報の少なくとも１つを表示させる
請求項５に記載の情報処理装置。
【請求項８】
検出された前記ユーザ位置が異常なデータであるか否かを判定するデータ判定手段をさらに含み、
前記算出手段は、検出された複数の前記ユーザ位置のうち、異常なデータではないと判定された前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザ動き情報を算出する
請求項２に記載の情報処理装置。
【請求項９】
前記ユーザ位置検出手段は、前記ユーザ位置として、異なる３本の座標軸上の値により表される３次元位置を検出し、
前記算出手段は、
前記３本の座標軸のうち、２本の座標軸上の値により定義される第１の座標点に基づいて、第１の前記ユーザ動き情報を算出し、
前記３本の座標軸のうち、残りの座標軸上の値により定義される第２の座標点に基づいて、前記第１のユーザ動き情報とは異なる第２の前記ユーザ動き情報を算出する
請求項１に記載の情報処理装置。
【請求項１０】
前記決定手段は、前記ユーザの動きに応じて実行すべき処理として、
表示部に表示しているポインタを移動させるポインタモード処理、
前記ユーザによる選択又は実行を指示するクリック操作を検出するクリックモード処理、
前記ポインタが円の軌跡を描いて移動したことに対応して、前記円の軌跡に対応する処理を行なう回転モード処理、
前記ポインタが直線の軌跡を描いて移動したことに対応して、前記直線の軌跡に対応する処理を行なうラインモード処理
のいずれか１つを決定する
請求項１に記載の情報処理装置。
【請求項１１】
ユーザの動きに応じた処理を実行する情報処理装置の情報処理方法において、
前記情報処理装置は、
ユーザ位置検出手段と、
算出手段と、
選択手段と、
実行手段と
を含み、
前記ユーザ位置検出手段が、異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置を検出し、
前記算出手段が、前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザの動きを示すユーザ動き情報を算出し、
前記決定手段が、算出された前記ユーザ動き情報に基づいて、前記ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理を決定し、
前記実行手段が、決定された前記処理を実行する
ステップを含む情報処理方法。
【請求項１２】
コンピュータを、
異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置を検出するユーザ位置検出手段と、
前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザの動きを示すユーザ動き情報を算出する算出手段と、
算出された前記ユーザ動き情報に基づいて、前記ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理を決定する決定手段と、
決定された前記処理を実行する実行手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及びプログラムに関し、特に、例えば、ユーザの手等の動きに基づいて、ユーザの意図する処理を正確に実行できるようにした情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
ユーザを撮像して得られる撮像画像上から、ユーザの顔や手などのように肌が露出している領域（以下、肌領域という）を検出する肌検出技術が存在する（例えば、特許文献１乃至４を参照）。
【０００３】
この肌検出技術では、波長λ１の光が照射されている被写体（ユーザ）を撮像した第１の画像と、波長λ１とは異なる波長λ２の光が照射されている被写体を撮像した第２の画像との輝度値の差分が所定の閾値よりも大きな領域を肌領域として検出する。
【０００４】
なお、波長λ１，λ２は、人間の肌の反射特性に依存して決定される。すなわち、波長λ１，λ２は、人の肌に照射したときの反射率が異なり、かつ、人の肌以外（例えば、髪の毛、衣服など）に照射したときの反射率がほぼ等しいものに決定されている。具体的には、例えば、波長λ１は850nm、波長λ２は970nmとされている。
【０００５】
また、肌検出技術では、検出した肌領域に基づいて、肌領域に対応するユーザの手等の３次元位置（x,y,z）を検出する。そして、検出した３次元位置（x,y,z）に基づいて、ディスプレイ上のポインタを移動させるポインタ移動処理や、ポインタが存在する位置でのクリック操作を検出するクリック検出処理等を行なう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−４７０６７号公報
【特許文献２】特開平０６−１２３７００号公報
【特許文献３】特開平０５−３２９１６３号公報
【特許文献４】特開２００８−２７２４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、肌検出技術のように、肌領域に基づいてユーザの手等の３次元位置（x,y,z）を検出する場合、３次元位置（x,y,z）の検出精度によっては、検出される３次元位置（x,y,z）が大きく変動することが生じ得る。
【０００８】
具体的には、例えば、ユーザが、ディスプレイ上のポインタを移動させるために、自身の手を、X方向及びY方向（ユーザを基準とする水平方向及び垂直方向）にのみ移動させたとしても、検出される３次元位置（x,y,z）において、x及びyの他、zも大きく変動することが生じ得る。
【０００９】
この場合、ユーザの意図した処理として、ディスプレイ上のポインタを移動させるポインタ移動処理が行なわれるとともに、ユーザの意図しない処理として、ユーザの手がZ方向に移動したことに対応して、クリック操作を検出するクリック検出処理が行なわれてしまうことになる。
【００１０】
また、例えば、ユーザがポインタを所定の位置に移動させた後、所定の位置でのクリック操作を行うために、自身の手をZ方向（ユーザを基準とする前後方向）にのみ移動させたとしても、検出される３次元位置（x,y,z）において、zの他、x及びyも大きく変動することが生じ得る。
【００１１】
この場合、ユーザの意図した処理として、クリック検出処理が行なわれるのみならず、ユーザの意図しない処理として、ポインタ移動処理が行なわれることが生じ得る。
【００１２】
本発明は、このような状況に鑑みてなされたものであり、ユーザの動きに応じて、ユーザの意図する処理を正確に実行できるようにしたものである。
【課題を解決するための手段】
【００１３】
本発明の一側面の情報処理装置は、異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置を検出するユーザ位置検出手段と、前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザの動きを示すユーザ動き情報を算出する算出手段と、算出された前記ユーザ動き情報に基づいて、前記ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理を決定する決定手段と、決定された前記処理を実行する実行手段とを含む情報処理装置である。
【００１４】
前記算出手段には、前記ユーザ動き情報として、所定の時間内における前記座標点の移動量、移動方向、速さ、又は前記座標点が描く軌跡の曲率の少なくとも１つを算出させることができる。
【００１５】
第１の波長の光を前記ユーザに照射する第１の照射手段と、前記第１の波長よりも長波長である第２の波長の光を前記ユーザに照射する第２の照射手段と、前記第１の波長の光が照射されているときに入射される前記ユーザからの反射光に基づいて第１の画像を生成するとともに、前記第２の波長の光が照射されているときに入射される前記ユーザからの反射光に基づいて第２の画像を生成する撮像生成手段と、生成された前記第１及び第２の画像に基づいて、前記ユーザの肌を表す肌領域を検出する肌領域検出手段とをさらに設けることができ、前記ユーザ位置検出手段には、前記肌領域に基づいて、前記ユーザ位置を検出させることができる。
【００１６】
前記ユーザ動きに応じて移動するポインタを表示させる表示制御手段をさらに設けることができる。
【００１７】
前記表示制御手段には、前記ユーザ動き情報、前記決定手段により決定された処理、前記ユーザ位置検出手段の検出結果、前記肌領域検出手段の検出結果、又は前記ポインタの動きを示すポインタ動き情報の少なくとも１つを表示させることができる。
【００１８】
前記表示制御手段には、前記ユーザ位置検出手段による検出結果として、検出された前記ユーザ位置を表す前記複数の座標軸上の値の少なくとも１つを表示させることができる。
【００１９】
前記表示制御手段には、前記ポインタ動き情報として、前記ポインタが移動している方向、又は前記ポインタの軌跡を示す情報の少なくとも１つを表示させることができる。
【００２０】
検出された前記ユーザ位置が異常なデータであるか否かを判定するデータ判定手段をさらに設けることができ、
前記算出手段には、検出された複数の前記ユーザ位置のうち、異常なデータではないと判定された前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザ動き情報を算出させることができる。
【００２１】
前記ユーザ位置検出手段には、前記ユーザ位置として、異なる３本の座標軸上の値により表される３次元位置を検出させ、前記算出手段には、前記３本の座標軸のうち、２本の座標軸上の値により定義される第１の座標点に基づいて、第１の前記ユーザ動き情報を算出させ、前記３本の座標軸のうち、残りの座標軸上の値により定義される第２の座標点に基づいて、前記第１のユーザ動き情報とは異なる第２の前記ユーザ動き情報を算出させることができる。
【００２２】
前記決定手段には、前記ユーザの動きに応じて実行すべき処理として、表示部に表示しているポインタを移動させるポインタモード処理、前記ユーザによる選択又は実行を指示するクリック操作を検出するクリックモード処理、前記ポインタが円の軌跡を描いて移動したことに対応して、前記円の軌跡に対応する処理を行なう回転モード処理、前記ポインタが直線の軌跡を描いて移動したことに対応して、前記直線の軌跡に対応する処理を行なうラインモード処理のいずれか１つを決定させることができる。
【００２３】
本発明の一側面の情報処理方法は、ユーザの動きに応じた処理を実行する情報処理装置の情報処理方法であって、前記情報処理装置は、ユーザ位置検出手段と、算出手段と、選択手段と、実行手段とを含み、前記ユーザ位置検出手段が、異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置を検出し、前記算出手段が、前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザの動きを示すユーザ動き情報を算出し、前記決定手段が、算出された前記ユーザ動き情報に基づいて、前記ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理を決定し、前記実行手段が、決定された前記処理を実行するステップを含む情報処理方法である。
【００２４】
本発明の一側面のプログラムは、コンピュータを、異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置を検出するユーザ位置検出手段と、前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザの動きを示すユーザ動き情報を算出する算出手段と、算出された前記ユーザ動き情報に基づいて、前記ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理を決定する決定手段と、決定された前記処理を実行する実行手段として機能させるためのプログラムである。
【００２５】
本発明によれば、異なる複数の座標軸上の値により表される、ユーザの位置を表すユーザ位置が検出され、前記ユーザ位置を表す前記複数の座標軸上の値のうち、少なくとも１軸上の値により定義される座標点に基づいて、前記ユーザの動きを示すユーザ動き情報が算出され、算出された前記ユーザ動き情報に基づいて、前記ユーザの動きに応じて実行される複数の処理の中から、実行すべき処理が決定され、決定された前記処理が実行される。
【発明の効果】
【００２６】
本発明によれば、ユーザの動きに応じて、ユーザの意図する処理を正確に実行することが可能となる。
【図面の簡単な説明】
【００２７】
【図１】本発明を適用した検出装置の構成例を示すブロック図である。
【図２】表示部の表示例を示す第１の図である。
【図３】表示部の表示例を示す第２の図である。
【図４】ユーザの手から撮像部の集光レンズまでの距離に応じて、ポインタが描く円の軌跡が異なることを示す図である。
【図５】画像処理部が３次元位置を変換するときの様子の一例を示す図である。
【図６】検出装置が行なう第１の割込処理を説明するためのフローチャートである。
【図７】座標算出処理の詳細を説明するためのフローチャートである。
【図８】クリックモード処理の詳細を説明するためのフローチャートである。
【図９】回転モード処理の詳細を説明するためのフローチャートである。
【図１０】検出装置が行なう第２の割込処理を説明するためのフローチャートである。
【図１１】モード選択処理の詳細を説明するためのフローチャートである。
【図１２】ラインモード処理の詳細を説明するためのフローチャートである。
【図１３】チュートリアルモードを説明するための第１の図である。
【図１４】チュートリアルモードを説明するための第２の図である。
【図１５】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００２８】
以下、発明を実施するための形態（以下、本実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．本実施の形態（ユーザの３次元位置に応じて、実行する処理を１つ選択する場合の一例）
２．変形例
＜１．本実施の形態＞
［検出装置の構成例］
図１は、本実施の形態である検出装置１の構成例を示している。この検出装置１は、撮像した画像から検出対象物２１となる人の肌領域（例えば、顔、手など）を検出するものである。そして、検出した肌領域に基づいて、後述する図２及び図３に示されるポインタ６１の移動や、ユーザによる選択又は実行を指示するクリック操作の検出等を行わせるものである。
【００２９】
検出装置１は、制御部１１、LED(light emitting diode)制御部１２、LED１３−１及び１３−２、光学フィルタ１４、撮像部１５、撮像制御部１６、画像処理部１７、保持部１８、モード処理部１９並びに表示部２０から構成される。
【００３０】
制御部１１は、検出装置１の各部の動作を統括して制御する。LED制御部１２は、制御部１１からの制御に従い、LED１３−１及び１３−２の点灯タイミング、消灯タイミング、出力レベルを制御する。LED１３−１は、LED制御部１２の制御に従い、発光スペクトルのピーク波長がλ１である光（以下、波長λ１の光という）を発光する。LED１３−２は、LED制御部１２の制御に従い、発光スペクトルのピーク波長がλ２である光（以下、波長λ２の光という）を発光する。
【００３１】
なお、波長λ１及びλ２の値は、人間の肌の反射特性に依存して決定される。すなわち、波長λ１，λ２は、人の肌に照射したときの反射率が異なり、かつ、人の肌以外（例えば、髪の毛、衣服など）に照射したときの反射率がほぼ等しいものに決定されている。
【００３２】
具体的には、例えば、波長λ１の値は640nmから1000nm、波長λ１よりも長波長側の波長λ２の値は900nmから1100nmとされる。
【００３３】
光学フィルタ１４は、撮像部１５に入射する光を制限するよう撮像部１５の前面に設けられており、その分光特性として第１の波長から第２の波長までの光を透過し、それ以外の光を吸収（遮断）するようになされている。
【００３４】
なお、第１の波長及び第２の波長は、光学フィルタ１４が、波長λ１の光及びλ２の光を透過できるように、波長λ１及びλ２の値に応じて決定される。
【００３５】
撮像部１５は、集光レンズ（図４及び図５の集光レンズ７１）と、CCD、CMOSなどの撮像素子とを内蔵しており、撮像制御部１６からの制御に従い、光学フィルタ１４を透過してきた光（被写体からの反射光）を受光して画像を生成する。なお、LED１３−１が波長λ１の光を発光しているときに生成される画像を第１の画像とし、LED１３−２が波長λ２の光を発光しているときに生成される画像を第２の画像とする。
【００３６】
撮像制御部１６は、制御部１１からの制御に従い、撮像部１５の撮像タイミング、輝度増幅のゲインなどを制御する。また、撮像制御部１６は、撮像部１５により生成された第１及び第２の画像を画像処理部１７に出力する。
【００３７】
画像処理部１７は、第１の画像及び第２の画像に基づいて、被写体の肌領域を検出する。そして、画像処理部１７は、検出した肌領域に基づいて、被写体の３次元位置（x,y,z）tを算出し、保持部１８に供給して記憶させる。なお、３次元位置（x,y,z）tは、t番目に算出された３次元位置（x,y,z）を表す。３次元位置（x,y,z）は、例えば、撮像部１５の集光レンズの光軸方向をZ軸とし、撮像部１５の水平方向をX軸とし、撮像部１５の垂直方向をY軸とするXYZ座標軸上に定義される。
【００３８】
また、画像処理部１７は、３次元位置（x,y,z）tを保持部１８に供給して記憶させる際に、３次元位置（x,y,z）tに対して所定の変換式を用いた変換処理を行う。この変換処理の詳細は、図４及び図５を参照して後述する。
【００３９】
保持部１８は、画像処理部１７により算出される最新の３次元位置（x,y,z）t、及び表示部２０に表示されるアイコンがフォーカス（選択）されているか否かを表すフォーカス情報を保持（記憶）する。なお、保持部１８には、被写体の３次元位置（x,y,z）tとして、例えば、最新に算出された１０個以上の３次元位置（x,y,z）が記憶されているものとする。
【００４０】
モード処理部１９は、保持部１８に記憶されている被写体の３次元位置（x,y,z）tに基づいて、ユーザによるクリック操作が行なわれたか否かを判定するクリックモード処理、ポインタ６１の移動に応じて、フォーカスするアイコンを順次変更する回転モード処理、又はポインタ６１を移動させるポインタモード処理のいずれかの処理を実行する。
【００４１】
表示部２０は、モード処理部１９からの制御にしたがって、図２や図３に示されるような画像を表示する。
【００４２】
[表示部２０における第１の表示例]
図２は、モード処理部１９により、ポインタモード処理が行なわれた場合における表示部２０の表示画面の一例を示している。
【００４３】
図２には、６枚の画像データそれぞれを表すアイコン４１乃至４６が表示されている。
【００４４】
モード処理部１９は、ポインタモード処理を行なう場合、保持部１８に保持されている被写体の３次元位置（x,y,z）tのうち、最新に算出された３次元位置（x,y,z）tに対応する、表示部２０の表示画面上の位置に、ポインタ６１を移動させる。
【００４５】
具体的には、例えば、ユーザが、検出装置１における撮像部１５の前で、点線で示されるポインタ６１を、アイコン４１上の位置に移動させるように、ユーザの手を右下から左上方向に移動させたことに対応して、ポインタ６１を、表示部２０の表示画面における右下の位置から、アイコン４１上の位置に移動させる。
【００４６】
[表示部２０における第２の表示例]
次に、図３は、モード処理部１９により、回転モード処理が行なわれた場合における表示部２０の表示画面の一例を示している。
【００４７】
モード処理部１９は、回転モード処理を行なう場合、保持部１８に保持されている被写体の３次元位置（x,y,z）により、ポインタ６１が、時計回り（右回り）に円を描くように移動されたか、それとも、反時計回り（左回り）に円を描くように移動されたかを判定する。
【００４８】
そして、モード処理部１９は、図３に示されるように、ポインタ６１が、時計回りに円を描くように移動されたと判定する毎に、時計回りに新たにアイコンを選択する。
【００４９】
具体的には、例えば、現在、アイコン４１が選択されている場合に、モード処理部１９が、ポインタ６１が時計回りに円を描くように移動されたと判定したとき、選択されているアイコンを、アイコン４１から、アイコン４１の右隣に存在するアイコン４２に変化させる。
【００５０】
なお、モード処理部１９は、ポインタ６１が、反時計回りに円を描くように移動されたと判定した場合には、反時計回りに新たにアイコンを選択するものとなる。
【００５１】
検出装置１によれば、ユーザが自身の手等を円を描くように移動することに応じて、図３に示されるように、表示部２０の表示画面上のポインタ６１も同様にして円を描くように移動する。
【００５２】
しかしながら、図４に示されるように、撮像部１５の集光レンズ７１からユーザの手までの距離に拘らず、ユーザの手が同一半径Xrの円を描くように移動した場合でも、距離に応じて、ポインタ６１が描く円の軌跡（特に、円の半径）は異なるものとなる。
【００５３】
すなわち、例えば、ユーザの手が、近距離zmin（例えば、図４でいう距離50mm）で半径Xrの円の軌跡７２aを描くように移動された場合、撮像部１５の撮像により得られる画像において、ユーザの手は、比較的大きな半径Ximinの円の軌跡７２bを描くものとなる。
【００５４】
これに対して、例えば、ユーザの手が、遠距離zmax（例えば、図４でいう距離220mm）で半径Xrの円の軌跡７３aを描くように移動された場合、撮像部１５の撮像により得られる画像において、ユーザの手は、比較的小さな半径Ximaxの円の軌跡７３bを描くものとなる。
【００５５】
この場合、ユーザの手が、同一半径Xrの円の軌跡を描くように移動されたにも拘らず、ユーザの手から集光レンズ７１までの距離に応じて、ポインタ６１の動きが異なるものとなってしまう。
【００５６】
なお、集光レンズ７１の焦点距離をｆとすれば、ユーザの手が描く円の半径Xrと、撮像画像上における半径Ximin及びXiminとは、以下の関係式（１）により表される。
Xr={(zmin-f)×Ximin}/f={(zmax-f)×Ximax}/f      ・・・（１）
【００５７】
したがって、例えば、画像処理部１７は、所定の距離ｚ0を、基準となる基準距離z0とする。そして、画像処理部１７は、同一半径Xrで円の軌跡を描くようにユーザの手が移動された場合、任意の距離ｚにおいて算出した３次元位置（x,y,z）のうちの(x,y)を、距離ｚに拘らず、基準距離z0において得られる撮像画像上の３次元位置（x',y',z0）のうちの(x',y')に変換するようにしている。そして、画像処理部１７は、変換後の３次元位置（x,y,z）（=（x',y',z））を、保持部１８に供給して記憶させる。
【００５８】
次に、図５は、画像処理部１７が、算出した３次元位置（x,y,z）を変換するときの一例を示している。
【００５９】
図５において、３次元位置７４及び７５は、ユーザの手等が現実に存在する３次元空間上の位置を表す。また、３次元位置７４及び７５は、同一のXY位置を表し、異なる距離ｚ（Z位置）を表す。
【００６０】
例えば、ユーザの手が、基準距離ｚ0において３次元位置７４に存在する場合、画像処理部１７は、基準距離ｚ0における３次元位置（x',y',z0）を算出する。また、例えば、ユーザの手が、任意の距離ｚにおいて３次元位置７５に存在する場合、画像処理部１７は、任意の距離ｚにおける３次元位置（x,y,z）を算出する。
【００６１】
ここで、任意の距離ｚにおいて算出されるＸ位置xと、基準距離ｚ0において算出されるＸ位置x'との関係式（２）、及び任意の距離ｚにおいて算出されるＹ位置yと、基準距離ｚ0において算出されるＹ位置y'との関係式（３）は、以下のように、上述の関係式（１）と同様にして表される。
Xr={(z-f)×x}/f={(z0-f)×x'}/f                  ・・・（２）
Xr={(z-f)×y}/f={(z0-f)×y'}/f                  ・・・（３）
【００６２】
関係式（２）をx'について、関係式（３）をy'についてそれぞれ解くと、以下の変換式（４）及び（５）が得られる。
x'={(z-f)×x}/(z0-f)                            ・・・（４）
y'={(z-f)×y}/(z0-f)                            ・・・（５）
【００６３】
したがって、画像処理部１７は、変換式（４）を用いて、算出した３次元位置（x,y,z）のうちのxをx'に変換する。また、画像処理部１７は、変換式（５）を用いて、算出した３次元位置（x,y,z）のうちのyをy'に変換する。そして、画像処理部１７は、変換後の３次元位置（x,y,z）（=（x',y',z））を、保持部１８に供給して記憶させる。
【００６４】
なお、画像処理部１７は、内蔵するメモリ（図示せず）に、予め決められた基準距離ｚ0を保持しているものとする。画像処理部１７は、内蔵するメモリに保持されている基準距離ｚ0と算出した３次元位置（x,y,z）とに基づき、変換式（４）及び（５）を用いて、算出した３次元位置（x,y,z）を変換するようにしている。
【００６５】
[検出装置の動作説明]
次に、図６のフローチャートを参照して、検出装置１が行う第１の割込処理について説明する。
【００６６】
なお、この第１の割込処理は、制御部１１からの制御に応じて、所定のタイミング毎に開始される。具体的には、例えば、制御部１１は、時間を計時するタイマーを有しており、そのタイマーにより所定の時間が経過する毎に、第１の割込処理を実行させる。
【００６７】
ステップＳ１において、制御部１１乃至画像処理部１７は、被写体の３次元位置（x,y,z）tを算出する座標算出処理を行う。なお、座標算出処理の詳細は、図７を参照して後述する。
【００６８】
ステップＳ２において、画像処理部１７は、例えば、保持部１８に保持されている３次元位置（x,y,z）t-9乃至３次元位置（x,y,z）tに基づいて、修正トンプソン法等の統計処理方法により、今回のステップＳ１の処理により算出した３次元位置（x,y,z）tが異常データであるか否かを判定する。
【００６９】
なお、修正トンプソン法とは、座標算出処理により算出される複数の３次元位置（x,y,z）に基づく統計処理により、算出した３次元位置（x,y,z）tが統計的に有り得ない異常データであるか否かを判定する方法をいう。
【００７０】
また、修正トンプソン法を用いる場合、少なくとも１０個以上の３次元位置（x,y,z）を必要とする。したがって、保持部１８は、最新の３次元位置（x,y,z）を、少なくとも１０個以上保持するものとなっている。なお、この修正トンプソン法により用いられる３次元位置（x,y,z）は、統計処理による信頼性を確保する観点から、３０個以上であることが望ましい。
【００７１】
ステップＳ２において、画像処理部１７は、修正トンプソン法により、算出した３次元位置（x,y,z）tが異常データであると判定した場合、処理をステップＳ３に進める。そして、画像処理部１７は、算出した３次元位置（x,y,z）tを破棄する（保持部１８に記憶させない）。
【００７２】
また、ステップＳ２において、画像処理部１７は、修正トンプソン法により、算出した３次元位置（x,y,z）tが異常データではないと判定した場合、処理をステップＳ４に進める。
【００７３】
ステップＳ４において、画像処理部１７は、保持部１８に記憶されている３次元位置（x,y,z）のうち、最も過去に記憶された３次元位置（x,y,z）を削除する。そして、画像処理部１７は、算出した３次元位置（x,y,z）tを、保持部１８に供給して記憶させる。これにより、保持部１８には、常に、最新の３次元位置（x,y,z）が保持されることとなる。
【００７４】
ステップＳ５において、モード処理部１９は、保持部１８に記憶されている複数の３次元位置（x,y,z）に基づいて、所定の時間内における座標点（x,y）の移動距離Dxy、及び座標点ｚの移動距離Dzを算出する。
【００７５】
なお、座標点（x,y）とは、３次元位置（x,y,z）のうち、X軸及びY軸上の値x及びyにより定義される座標点を表す。また、座標点ｚとは、３次元位置（x,y,z）のうち、Z軸上の値zにより定義される座標点を表す。
【００７６】
すなわち、例えば、ステップＳ５において、モード処理部１９は、保持部１８に記憶されている複数の３次元位置（x,y,z）のうち、例えば３次元位置（x,y,z）t及び３次元位置（x,y,z）t-1を読み出す。
【００７７】
そして、モード処理部１９は、読み出した３次元位置（x,y,z）t及び３次元位置（x,y,z）t-1に基づいて、座標点（x,y）の移動距離Dxy、及び座標点ｚの移動距離Dzを算出する。
【００７８】
なお、３次元位置（x,y,z）tにおけるx,y,zをそれぞれ、xt,yt,ztと表すこととすれば、座標点（x,y）の移動距離Dxyは式{(xt-xt-1)2+(yt-yt-1)2}1/2により表され、座標点ｚの移動距離Dzは式|zt-zt-1|により表される。
【００７９】
ステップＳ６において、モード処理部１９は、算出した移動距離Dxyが、算出した移動距離Dzよりも大きいか否かを判定する。そして、モード処理部１９は、算出した移動距離Dxyが、算出した移動距離Dzよりも大きくないと判定した場合、処理をステップＳ７に進める。
【００８０】
ステップＳ７では、モード処理部１９は、座標点（x,y）及び座標点zのうちの座標点zを選択し、選択した座標点ｚ(保持部１８が保持する複数の３次元位置（x,y,z）それぞれの座標点ｚ)に基づくクリックモード処理を行なう。なお、クリックモード処理の詳細は、図８を参照して後述する。
【００８１】
ステップＳ６において、モード処理部１９は、算出した移動距離Dxyが、算出した移動距離Dzよりも大きいと判定した場合、処理をステップＳ８に進める。
【００８２】
そして、モード処理部１９は、座標点（x,y）及び座標点zのうちの座標点（x,y）を選択し、選択した座標点（x,y）(保持部１８が保持する複数の３次元位置（x,y,z）それぞれの座標点（x,y）)に基づいて、所定の時間における座標点（x,y）の移動速度Vxyを算出する。
【００８３】
ステップＳ９において、モード処理部１９は、算出した移動速度Vxyの大きさが、予め決められた閾値A以上であるか否かを判定し、閾値A以上であると判定した場合、処理をステップＳ１０に進め、回転モード処理を実行する。なお、回転モード処理の詳細は、図９を参照して後述する。
【００８４】
また、ステップＳ９において、モード処理部１９は、算出した移動速度Vxyの大きさが、閾値A以上ではないと判定した場合、処理をステップＳ１１に進め、例えば、算出され保持部１８に保持された３次元位置（x,y,z）tの座標点（x,y）に対応する位置に、ポインタ６１を移動させるポインタモード処理を実行する。以上で第１の割込処理は終了される。
【００８５】
なお、モード処理部１９において、移動速度Vxyの大きさが閾値A以上である場合に、回転モード処理を実行し、移動速度Vxyが閾値A未満である場合に、ポインタモード処理を実行するようにしたのは、以下の理由による。
【００８６】
すなわち、ユーザは、ポインタ６１を時計回り又は反時計回りに円を描くように移動させて回転モード処理を実行させる場合、自身の手を移動させて、ポインタ６１を移動させるポインタモード処理を実行させる場合と比較して、より速く手を移動させることが多いことによる。なお、閾値Aは、本発明者等により予め行なわれた実験等により求められ、モード処理部１９が内蔵するメモリ等（図示せず）に予め記憶されているものとする。
【００８７】
以上説明したように、第１の割込処理によれば、ステップＳ６の処理において、ユーザの手等の動きを表すユーザ動き情報として算出された移動距離Dxy及び移動距離Dzに基づき、実行すべき処理を、クリックモード処理とするか否かを決定するようにした。
【００８８】
また、処理が、ステップＳ６からステップＳ８を介してステップＳ９に進められた場合、ステップＳ９において、ユーザ動き情報としての移動速度Vxyに基づき、実行すべき処理を、ポインタモード処理とするか否かを決定するようにしている。
【００８９】
すなわち、処理が、ステップＳ６からステップＳ８を介してステップＳ９に進められた場合には、ユーザ動き情報として、移動距離Dxy及び移動距離Dzの他、移動速度Vxyを用いて、実行すべき処理を、ポインタモード処理とするか否かを決定するようにした。
【００９０】
さらに、処理がステップＳ９からステップＳ１０に進められた場合、ステップＳ１０の回転モード処理では、図９を参照して後述するように、ユーザ動き情報としての曲率であって、ポインタ６１の軌跡についての曲率に基づき、回転モード処理として実行すべき処理（例えば、後述する図９において、ステップＳ７４乃至ステップＳ７６の処理、ステップＳ７８の処理、またはステップＳ７９の処理のいずれか）を決定するようにしている。
【００９１】
すなわち、処理が、ステップＳ６からステップＳ８及びステップＳ９を介してステップＳ１０に進められた場合には、ユーザ動き情報として、移動距離Dxy、移動距離Dz、及び移動速度Vxyの他、曲率を用いて、実行すべき処理を決定するようにした。
【００９２】
このため、第１の割込処理によれば、ユーザ動き情報に基づいて、ユーザの意図する処理を正確に識別して実行することができるとともに、ユーザの意図しない処理が行なわれることを防止できる。
【００９３】
なお、ステップＳ９乃至ステップＳ１１において、モード処理部１９は、算出した移動速度Vxyの大きさが、予め決められた閾値A以上であるか否かに基づいて、行なう処理を決定するようにしているが、移動速度Vxyの大きさに代えて、移動速度Vxyの移動方向に基づいて、行なう処理を決定することができる。
【００９４】
その他、例えば、移動速度Vxyの大きさと移動方向とを用いて、行なう処理を決定するようにしてもよい。
【００９５】
また、ステップＳ８において、モード処理部１９は、選択した座標点（x,y）に基づいて、座標点（x,y）の移動方向と速さ（大きさ）を表すベクトル量として、座標点（x,y）の移動速度Vxyを算出するようにしている。
【００９６】
しかしながら、ステップＳ８において、モード処理部１９は、スカラー量として、座標点（x,y）の速さを算出するようにしてもよい。この場合、ステップＳ９において、モード処理部１９は、算出した座標点（x,y）の速さが、予め決められた閾値A以上であるか否かを判定するものとなる。また、ステップＳ９において、座標点（x,y）の移動方向に基づき、行う処理を決定する場合には、ステップＳ８において、座標点（x,y）の移動方向を算出すればよい。
【００９７】
なお、第１の割込処理において、クリックモード処理以外に座標点zを用いて行なう処理が複数存在する場合、例えば、処理がステップＳ６からステップＳ７に進められたとき、所定の時間における座標点zの移動速度Vz等が算出され、算出された移動速度Vz等に基づき、座標点ｚを用いて行なう処理が決定される。
【００９８】
また、例えば、モード処理部１９において用いられる座標点として、例えば、座標点（x,y）及び座標点ｚを採用したが、これに限定されず、その他、例えば、３次元位置（x,y,z）のうち、X軸上の値xにより定義される座標点xや、３次元位置（x,y,z）のうち、X軸及びZ軸上の値x及びzにより定義される座標点(x,z)等を採用することができる。
【００９９】
さらに、例えば、モード処理部１９において用いられる座標点として、２個の座標点（座標点（x,y）及び座標点ｚ）を採用したが、座標点の個数は、３個以上とすることができる。
【０１００】
この場合、ステップＳ５において、モード処理部１９は、３個以上の座標点それぞれの移動距離を算出することとなる。そして、それ以降の処理において、３個以上の座標点それぞれの移動距離が用いられて、実行すべき処理が決定される。
【０１０１】
[座標算出処理の詳細]
次に、図７のフローチャートを参照して、図６のステップＳ１における座標算出処理の詳細について説明する。
【０１０２】
ステップＳ３１において、LED１３−１は、波長λ１の光を被写体に照射する。この照射光は外光とともに被写体により反射され、光学フィルタ１４を介して撮像部１５に入射される。ステップＳ３２において、撮像部１５は、入射された光を光電変換することにより第１の画像を生成し、撮像制御部１６に供給する。
【０１０３】
ステップＳ３３において、LED１３−２により波長λ２の光を被写体に照射する。この照射光は外光とともに被写体により反射され、光学フィルタ１４を介して撮像部１５に入射される。ステップＳ３４において、撮像部１５は、入射された光を光電変換することにより第２の画像を生成し、撮像制御部１６に供給する。
【０１０４】
撮像制御部１６は、撮像部１５から供給される第１の画像及び第２の画像を、画像処理部１７に供給する。
【０１０５】
ステップＳ３５において、画像処理部１７は、第１の画像と第２の画像との対応する画素の輝度値Ｙ１，Ｙ２の差分Ｓ＝Ｙ１−Ｙ２を算出し、その差分Ｓを所定の閾値と比較することにより２値化し、２値の一方の領域（所定の閾値以上となる差分Ｓに対応する領域）を肌領域として検出する。
【０１０６】
ステップＳ３６において、画像処理部１７は、検出した肌領域に基づいて、被写体の３次元位置（x,y,z）tを算出する。すなわち、例えば、画像処理部１７は、検出した肌領域の重心を、３次元位置（x,y,z）tのうちの（x,y）として算出する。また、例えば、画像処理部１７は、検出した肌領域の大きさに基づいて、３次元位置（x,y,z）tのうちのzとして、被写体までの距離ｚを算出する。そして、画像処理部１７は、図５を参照して説明したようにして、算出した被写体の３次元位置（x,y,z）tのうちの(x,y)を（x',y'）に変換し、変換後の３次元位置（x,y,z）t（=（x',y',z）t）を保持部１８に供給して記憶（保持）させる。
【０１０７】
なお、画像処理部１７は、被写体までの距離ｚが短い程に、肌領域の大きさは大きくなることを利用して、被写体までの距離ｚを算出している。
【０１０８】
また、画像処理部１７は、LED１３−１及びLED１３−２から被写体までの距離が短い程に、肌領域の輝度値（例えば、平均輝度値等）は大きくなることを利用して、被写体までの距離ｚを算出するようにしてもよい。
【０１０９】
以上で座標算出処理は終了され、処理は、図６のステップＳ１にリターンされる。
【０１１０】
[クリックモード処理の詳細]
次に、図８のフローチャートを参照して、図６のステップＳ７におけるクリックモード処理の詳細について説明する。
【０１１１】
ステップＳ５１において、モード処理部１９は、選択した座標点ｚ（例えば、保持部１８に保持されている複数の３次元位置（x,y,z）それぞれの座標点ｚ）に基づいて、選択した座標点ｚが所定の時間内に移動した移動距離Dzを算出する。
【０１１２】
そして、モード処理部１９は、算出した移動距離Dzが、所定の距離閾値以上であるか否かに基づいて、ユーザによるクリック操作（以下、クリック動作ともいう）が行なわれたか否かを判定する。
【０１１３】
なお、ステップＳ５１において、モード処理部１９は、選択した座標点ｚに基づき新たに算出される移動距離Dzに代えて、ステップＳ５の処理で算出した移動距離Dzを用いるようにしてもよい。この場合、新たに移動距離Dzを算出する処理を省略できるため、より迅速に処理を行うことが可能となる。
【０１１４】
ステップＳ５１において、モード処理部１９は、算出した移動距離Dzが、所定の距離閾値以上であると判定した場合、クリック動作が行なわれたと判定して、処理をステップＳ５２に進める。
【０１１５】
ステップＳ５２において、モード処理部１９は、保持部１８に保持されているフォーカス情報に基づいて、すでにフォーカスされている（選択済みの）アイコンが存在するか否かを判定し、フォーカスされているアイコンが存在すると判定した場合、処理をステップＳ５３に進める。
【０１１６】
そして、モード処理部１９は、フォーカスされているアイコンの重心位置（x,y）でクリック動作が行なわれたものとして取り扱う。すなわち、例えば、モード処理部１９は、フォーカスされたアイコンがクリックされたものとして、そのアイコンがクリックされたことに対応して行われる処理を実行する。
【０１１７】
また、ステップＳ５２において、モード処理部１９は、保持部１８に保持されているフォーカス情報に基づいて、フォーカスされているアイコンが存在しないと判定した場合、処理をステップＳ５４に進める。
【０１１８】
ステップＳ５４において、モード処理部１９は、複数のアイコン（例えば、図２のアイコン４１乃至４６）それぞれの重心位置のうち、３次元位置（x,y,z）tの座標点（x,y）に対応する表示画面上の位置（ポインタ６１の位置を表す）から最も近くに存在する重心位置を検出する。そして、モード処理部１９は、検出した重心位置に対応するアイコンをフォーカス（選択）する。
【０１１９】
ステップＳ５５において、モード処理部１９は、フォーカスしたアイコンの重心位置と、３次元位置（x,y,z）tの座標点（x,y）に対応する、表示部２０の表示画面上の位置との距離を算出し、算出した距離が、選択したアイコンの横と縦との一片のうち、長い方の一片の長さよりも大きいか否かを判定する。
【０１２０】
ステップＳ５５において、モード処理部１９は、算出した距離が、フォーカスしたアイコンの一片の長さよりも大きいと判定した場合、そのアイコンに対するフォーカスを解除し、クリックモード処理を終了する。
【０１２１】
また、ステップＳ５５において、モード処理部１９は、算出した距離が、フォーカスしたアイコンの一片の長さよりも大きくないと判定した場合、処理をステップＳ５６に進める。
【０１２２】
ステップＳ５６では、モード処理部１９は、フォーカスしたアイコンの重心位置（x,y）でクリック動作が行なわれたものとして取り扱う。すなわち、例えば、モード処理部１９は、フォーカスしたアイコンがクリックされたものとして、そのアイコンがクリックされたことに対応して行われる処理を実行する。そして、モード処理部１９は、保持部１８に保持されているフォーカス情報を、ステップＳ５６の処理でクリックされたアイコンがフォーカスされていることを表す情報に更新する。
【０１２３】
以上、クリックモード処理が終了した後、処理を、図６のステップＳ７にリターンし、第１の割込処理は終了される。
【０１２４】
以上説明したように、クリックモード処理によれば、ステップＳ５５において、モード処理部１９は、算出した距離が、フォーカスしたアイコンの一片の長さよりも大きくないと判定した場合、処理をステップＳ５６に進め、ステップＳ５４の処理でフォーカスしたアイコンがクリックされたものとして取り扱うようにした。
【０１２５】
よって、クリックの対象とされるアイコンが、比較的小さい場合でも、所望のアイコンをクリックすることが可能となる。このため、表示部２０の表示画面に表示させるアイコンを小さくすることができるので、表示部２０の表示画面上により多くのアイコンを表示させることができる。
【０１２６】
[回転モード処理の詳細]
次に、図９のフローチャートを参照して、図６のステップＳ１０における回転モード処理の詳細について説明する。
【０１２７】
ステップＳ７１において、モード処理部１９は、保持部１８に保持されている複数の３次元位置（x,y,z）それぞれの座標点（x,y）に基づいて、最小自乗法等により、表示部２０の表示画面上におけるポインタ６１の軌跡を表す関数を算出する。そして、モード処理部１０９は、算出した関数に基づいて、その関数が表す曲線（ポインタ６１の軌跡）がどの程度曲がっているかの程度を表す曲率を算出する。
【０１２８】
ステップＳ７２において、モード処理部１９は、ステップＳ７１の処理で算出した関数に基づいて、ポインタ６１の軌跡が、時計回りに移動したものであるのか、反時計回りに移動したものであるのかを算出する。
【０１２９】
ステップＳ７３では、モード処理部１９は、ステップＳ７１の処理で算出した曲率が、閾値Ｂよりも大きい値であって、閾値Ｃよりも小さい値であるか否か、すなわち、ユーザが、時計回り又は反時計回りに円を描くようにポインタ６１を移動させるときに想定される曲率であるか否かを判定する。
【０１３０】
なお、閾値Ｂ及びＣは、予め決められているものであり、例えば、閾値Ｂは、表示部２０の表示画面（ポインタ６１が表示されている画像）の縦と横との長さのうち、短い方の一片の長さの逆数とされる。また、例えば、閾値Ｃは、閾値Ｂに所定値を加算したものとされる。閾値Ｂ及びＣは、例えば、モード処理部１９が内蔵するメモリ等（図示せず）に予め保持される。
【０１３１】
ステップＳ７３において、モード処理部１９は、ステップＳ７１の処理で算出した曲率が、閾値Ｂよりも大きい値であって、閾値Ｃよりも小さい値であると判定した場合、すなわち、ユーザが、時計回り又は反時計回りに円を描くようにポインタ６１を移動させるときに想定される曲率であると判定した場合、処理をステップＳ７４に進める。
【０１３２】
ステップＳ７４において、モード処理部１９は、ステップＳ７２の処理で算出したポインタ６１の軌跡が、時計回りであるのか否かを判定し、時計回りであると判定した場合、処理をステップＳ７５に進める。そして、モード処理部１９は、表示部２０に表示されている複数のアイコンを、時計回りに順次選択する。
【０１３３】
また、ステップＳ７４において、モード処理部１９は、ステップＳ７２の処理で算出したポインタ６１の軌跡が、時計回りではない、すなわち、反時計回りであると判定した場合、処理をステップＳ７６に進める。そして、モード処理部１９は、表示部２０に表示されている複数のアイコンを、反時計回りに順次選択する。
【０１３４】
一方、ステップＳ７３において、モード処理部１９は、ステップＳ７１の処理で算出した曲率が、閾値Ｂよりも大きい値であって、閾値Ｃよりも小さい値ではないと判定した場合、すなわち、ユーザが、時計回り又は反時計回りに円を描くようにポインタ６１を移動させるときに想定される曲率ではないと判定した場合、処理をステップＳ７７に進める。
【０１３５】
ステップＳ７７において、モード処理部１９は、ステップＳ７１の処理で算出した曲率が、閾値Ｂ以下であるか否かを判定し、閾値Ｂ以下であると判定した場合、処理をステップＳ７８に進め、図８のクリックモード処理を実行して、回転モード処理は終了される。
【０１３６】
また、ステップＳ７７において、モード処理部１９は、ステップＳ７１の処理で算出した曲率が、閾値Ｂ以下ではない、すなわち、閾値Ｃ以上であると判定した場合、ポインタモード処理によりポインタ６１を移動させてアイコンを選択しようとしている場合であるとみなし、処理をステップＳ７９に進め、３次元位置（x,y,z）tの座標点（x,y）に基づいて、アイコンを選択する。
【０１３７】
以上で回転モード処理は終了され、処理は、図６のステップＳ１０にリターンされ、第１の割込処理が終了される。
【０１３８】
なお、第１の割込処理では、ユーザ動き情報として、移動距離Dxy、移動距離Dz、移動速度Vxy、及び曲率を用いるようにしたが、その他、例えば、移動速度Vxy及び曲率のみをユーザ動き情報として用いるようにすることもできる。
【０１３９】
[検出装置の他の動作説明]
次に、図１０のフローチャートを参照して、ユーザ動き情報として、移動速度Vxy及び曲率のみを用いる第２の割込処理について説明する。
【０１４０】
なお、この第２の割込処理は、第１の割込処理が開始される場合と同様にして、制御部１１からの制御に応じて、所定のタイミング毎に開始される。
【０１４１】
ステップＳ９１乃至ステップＳ９４において、図６のステップＳ１乃至ステップＳ４と同様の処理が行なわれる。ステップＳ９６において、図６のステップＳ８と同様にして、所定の時間における座標点（x,y）の移動速度Vxyが算出される。
【０１４２】
すなわち、例えば、ステップＳ９６において、モード処理部１９は、座標点（x,y）及び座標点zのうちの座標点（x,y）を選択し、選択した座標点（x,y）(保持部１８が保持する複数の３次元位置（x,y,z）それぞれの座標点（x,y）)に基づいて、所定の時間における座標点（x,y）の移動速度Vxyを算出する。
【０１４３】
ステップＳ９６において、モード処理部１９は、図６のステップＳ９の処理と同様にして、算出した移動速度Vxyの大きさが、予め決められた閾値A1以上であるか否かを判定し、閾値A1以上であると判定した場合、処理をステップＳ９７に進め、図９の回転モード処理を実行する。
【０１４４】
また、ステップＳ９６において、モード処理部１９は、算出した移動速度Vxyの大きさが、閾値A1以上ではないと判定した場合、処理をステップＳ９８に進める。そして、モード処理部１９は、算出した移動速度Vxyの大きさが、閾値A1よりも小さな閾値A2以上であるか否かを判定し、閾値A2以上であると判定した場合、すなわち、算出した移動速度Vxyの大きさが、閾値A2以上であって閾値A1未満であると判定した場合、処理をステップＳ９９に進める。ステップＳ９９では、モード処理部１９は、図６のステップＳ１１の処理と同様のポインタモード処理を実行する。
【０１４５】
また、ステップＳ９８において、モード処理部１９は、算出した移動速度Vxyの大きさが、閾値A2以上ではない（閾値A2未満である）と判定した場合、処理をステップＳ１００に進め、図８のクリックモード処理を実行する。以上で第２の割込処理は終了される。
【０１４６】
以上説明したように、第２の割込処理によれば、ステップＳ９６及びステップＳ９８の処理において、ユーザ動き情報として算出された移動速度Vxyに基づき、実行すべき処理を、回転モード処理、ポインタモード処理、又はクリックモード処理のいずれかに決定するようにした。
【０１４７】
また、処理が、ステップＳ９６からステップＳ９７に進められた場合、ステップＳ９７の回転モード処理では、ユーザ動き情報としての曲率に基づき、回転モード処理として実行すべき処理を決定するようにしている。
【０１４８】
すなわち、処理が、ステップＳ９６からステップＳ９７に進められた場合には、ユーザ動き情報として、移動速度Vxyの他、曲率を用いて、実行すべき処理を決定するようにした。
【０１４９】
このため、第２の割込処理によれば、ユーザ動き情報に基づいて、ユーザの意図する処理を正確に識別して実行することができるとともに、ユーザの意図しない処理が行なわれることを防止できる。
【０１５０】
なお、第２の割込処理において、移動速度Vxyの大きさに応じて、実行する処理を決定するようにしたのは、回転モード処理、ポインタモード処理、及びクリックモード処理において、ユーザの手による移動速度が異なることが、予め行なった実験等によりわかっていることによる。なお、上述の閾値A1及びA2は、予め行なった実験等の結果から予め求められて、モード処理部１９が内蔵するメモリ等（図示せず）に保持される。
【０１５１】
第１及び第２の割込処理によれば、回転モード処理、ポインタモード処理、及びクリックモード処理のいずれかを行なうようにしたが、それらの処理の他、ポインタ６１による直線方向の移動に対応して所定の処理を行なうラインモード処理を含めるようにすることができる。
【０１５２】
具体的には、例えば、第１及び第２の割込処理における回転モード処理（図６のステップＳ１０の処理、または図１０のステップＳ９７の処理）に代えて、図１１を参照して後述するモード選択処理を行なうようにすることで、回転モード処理、ポインタモード処理、クリックモード処理、及びラインモード処理のいずれかを行なうようにすることができる。
【０１５３】
[モード選択処理の詳細]
次に、図１１のフローチャートを参照して、検出装置１が行うモード選択処理について説明する。
【０１５４】
ステップＳ１２１において、モード処理部１９は、保持部１８に保持されている複数の３次元位置（x,y,z）それぞれの座標点（x,y）に基づいて、最小自乗法等により、表示部２０の表示画面上におけるポインタ６１の軌跡を表す関数を算出する。そして、モード処理部１０９は、算出した関数に基づいて、その関数が表す曲線（ポインタ６１の軌跡）がどの程度曲がっているかの程度を表す曲率を算出する。
【０１５５】
ステップＳ１２２では、モード処理部１９は、ステップＳ１２１の処理で算出した曲率が、閾値Ｃ以上であるか否かを判定し、曲率が閾値Ｃ以上であると判定した場合、処理をステップＳ１２３に進め、ポインタモード処理を実行する。
【０１５６】
また、ステップＳ１２２において、モード処理部１９は、ステップＳ１２１の処理で算出した曲率が、閾値Ｃ以上ではない（閾値Ｃ未満である）と判定した場合、処理をステップＳ１２４に進める。
【０１５７】
ステップＳ１２４では、モード処理部１９は、ステップＳ１２１の処理で算出した曲率が、閾値Ｃよりも小さな閾値Ｂ以下であるか否かを判定する。そして、モード処理部１９は、曲率が閾値Ｂ以下ではない（閾値Ｂよりも大きい）と判定した場合、すなわち、曲率は閾値Ｂよりも大きく、閾値Ｃ未満であると判定した場合、処理をステップＳ１２５に進め、回転モード処理を実行する。
【０１５８】
すなわち、ステップＳ１２５において、モード処理部１９は、回転モード処理として、図９のステップＳ７２及びステップＳ７４乃至ステップＳ７６における処理を実行する。
【０１５９】
具体的には、例えば、モード処理部１９は、ステップＳ１２１の処理で算出した関数に基づいて、ポインタ６１の軌跡が、時計回りに移動したものであるのか、反時計回りに移動したものであるのかを算出する。そして、モード処理部１９は、算出したポインタ６１の軌跡が、時計回りであるのか否かを判定し、時計回りであると判定した場合、表示部２０に表示されている複数のアイコンを、時計回りに順次選択する。また、モード処理部１９は、算出したポインタ６１の軌跡が、時計回りではない、すなわち、反時計回りであると判定した場合、表示部２０に表示されている複数のアイコンを、反時計回りに順次選択する。
【０１６０】
また、ステップＳ１２４では、モード処理部１９は、ステップＳ１２１の処理で算出した曲率が、閾値Ｂ以下であると判定した場合、処理をステップＳ１２６に進め、ラインモード処理を実行する。以上でモード選択処理は終了される。なお、モード選択処理は、図１２のフローチャートを参照して後述する。
【０１６１】
以上説明したように、モード選択処理によれば、ポインタ６１が描く軌跡の曲率に応じて、実行すべき処理を、ポインタモード処理、回転モード処理、又はラインモード処理のいずれかに決定し、決定した処理を実行するようにしている。
【０１６２】
なお、モード選択処理において、ポインタ６１が描く軌跡の曲率に応じて、実行する処理を決定するようにしたのは、ポインタモード処理、回転モード処理、及びラインモード処理において、ポインタ６１が描く軌跡の曲率が異なることが、予め行なった実験等によりわかっていることによる。
【０１６３】
また、モード選択処理は、図６のステップＳ１０、又は図１０のステップＳ９７の処理に代えて行う他、第１の割込処理において、ステップＳ５乃至ステップＳ１１の処理に代えてモード選択処理を行なうようにしてもよい。この場合、ユーザ動き情報として、曲率のみを用いて、実行すべき処理を決定することとなる。
【０１６４】
この場合、第１の割込処理において、ポインタ６１が描く軌跡の曲率のみにより、実行する処理を決定できるので、図６を参照して説明した第１の割込処理（モード選択処理を行なわない場合の第１の割込処理）のように、移動速度Vxy、移動距離Dxy及び移動距離Dzを算出する必要はないので、より迅速に処理を決定して実行することが可能となる。
【０１６５】
[ラインモード処理の詳細]
次に、図１２のフローチャートを参照して、図１１のステップＳ１２６におけるラインモード処理について説明する。
【０１６６】
ステップＳ１４１において、モード処理部１９は、保持部１８に保持されている複数の３次元位置（x,y,z）それぞれの座標点（x,y）に基づいて、最小自乗法等により、表示部２０の表示画面上におけるポインタ６１の軌跡を表す関数を算出する。そして、モード処理部１９は、算出した関数（いまの場合、ポインタ６１の軌跡である直線を表す）に基づいて、ポインタ６１の軌跡を表す直線の傾き（の絶対値）を算出する。
【０１６７】
なお、ステップＳ１４１では、モード処理部１９は、図１１のステップＳ１２１において算出済みの関数に基づいて、ポインタ６１の軌跡を表す直線の傾きを算出するようにしてもよい。この場合、ステップＳ１４１において関数を算出する処理を省略できる。
【０１６８】
ステップＳ１４２において、モード処理部１９は、ステップＳ１４１の処理で算出した傾きが、予め決められた閾値Ｄ以下であるか否かを判定し、傾きが閾値Ｄ（>0）以下であると判定した場合、すなわち、ポインタ６１が、ほぼＸ方向（水平方向）に移動していると判定した場合、処理をステップＳ１４３に進める。
【０１６９】
ステップＳ１４３では、モード処理部１９は、ポインタ６１がＸ方向に移動された場合における処理を実行する。具体的には、例えば、検出装置１が、楽曲等を再生するオーディオプレーヤに内蔵されている場合、ステップＳ１４３において、検出装置１のモード処理部１９は、オーディオプレーヤを制御して、Ｘ方向に対応する処理（例えば、楽曲の早送り等）を行わせる。
【０１７０】
また、ステップＳ１４２において、モード処理部１９は、ステップＳ１４１の処理で算出した傾きが、予め決められた閾値Ｄ以下ではない(閾値Ｄよりも大きい)と判定した場合、処理をステップＳ１４４に進める
【０１７１】
ステップＳ１４４では、モード処理部１９は、ステップＳ１４１の処理で算出した傾きが、閾値Ｄよりも大きい予め決められた閾値Ｅ以上であるか否かを判定し、傾きが閾値Ｅ以上であると判定した場合、すなわち、ポインタ６１が、ほぼＹ方向（垂直方向）に移動していると判定した場合、処理をステップＳ１４５に進める。
【０１７２】
ステップＳ１４５では、モード処理部１９は、ポインタ６１がＹ方向に移動された場合における処理を実行する。具体的には、例えば、検出装置１が、楽曲等を再生するオーディオプレーヤに内蔵されている場合、ステップＳ１４５において、検出装置１のモード処理部１９は、オーディオプレーヤを制御して、Ｙ方向に対応する処理（例えば、楽曲の巻き戻し等）を行わせる。
【０１７３】
また、ステップＳ１４４において、モード処理部１９は、ステップＳ１４１の処理で算出した傾きが、閾値Ｅ以上ではないと判定した場合（傾きが閾値Ｄより大きく閾値Ｅより小さい場合）、すなわち、ポインタ６１が、Ｘ方向でもなくＹ方向でもなく、ＸＹ方向（斜め方向）に移動していると判定した場合、処理をステップＳ１４６に進める。
【０１７４】
ステップＳ１４６では、モード処理部１９は、ポインタ６１がＸＹ方向に移動された場合における処理を実行する。具体的には、例えば、検出装置１が、楽曲等を再生するオーディオプレーヤに内蔵されている場合、ステップＳ１４６において、検出装置１のモード処理部１９は、オーディオプレーヤを制御して、ＸＹ方向に対応する処理（例えば、楽曲の再生等）を行わせる。
【０１７５】
以上でラインモード処理は終了され、処理は、図１１のステップＳ１２６にリターンされる。
【０１７６】
また、ラインモード処理では、移動方向として、Ｘ方向、Ｙ方向、又はＸＹ方向の３方向を採用し、３方向それぞれに異なる処理を対応付けて実行するようにしたが、移動方向は、３方向に限定されない。なお、傾きと比較される閾値の値や個数は、採用される移動方向の個数に応じて変更される。
【０１７７】
さらに、ラインモード処理において、モード処理部１９は、保持部１８に保持されている複数の３次元位置（x,y,z）それぞれの座標点（x,y）に基づいて、ポインタ６１が、どの方向からどの方向に移動しているかも算出するようにし、その算出結果にも基づいて、対応する処理を行うようにしてもよい。
【０１７８】
この場合、例えば、ポインタ６１がＸ方向に移動している場合でも、左方向から右方向に移動しているときと、右方向から左方向に移動しているときとで、異なる処理を行なわせるようにすることができる。
【０１７９】
[チュートリアルモードの追加]
なお、検出装置１によれば、ユーザが、手をＸ方向やＹ方向に移動させることにより、ポインタ６１を移動させたり、手をＺ方向に移動させるクリック動作を検出するようにしたが、ユーザが、手を移動させることにより、ポインタ６１を移動させること等に不慣れな場合には、チュートリアルモードを設けるようにしてもよい。
【０１８０】
次に、図１３は、チュートリアルモードについての一例を示している。
【０１８１】
図１３において、表示部２０の表示画面には、円状に配列されたアイコン８１乃至８８を表示するアイコン表示領域が設けられているとともに、アイコン８１乃至８８の下側には、ユーザの手の移動や、肌領域の検出状況等を表示する状態表示領域が設けられている。
【０１８２】
この状態表示領域には、３次元位置（x,y,z）tのz値を表示するZ値表示領域８９、肌領域の検出結果を表示する肌検出表示領域９０、ポインタ６１が上方向又は下方向のいずれに移動中であるかを表示するアップダウン表示領域９１、３次元位置（x,y,z）tのx値及びy値における位置を表示するｘｙ値表示領域９２、及びポインタ６１の動作状態を表示する動作表示領域９３により構成される。
【０１８３】
Z値表示領域８９は、３次元位置（x,y,z）tのz値を表示するための領域である。具体的には、例えば、図１３に示されるように、クリック動作として認識される場合のｚ値の大きさを最大値とするメータにより、ｚ値の大きさを表示するようにしている。
【０１８４】
肌検出表示領域９０は、肌領域の検出結果を表示するための領域である。具体的には、例えば、肌検出表示領域９０には、肌領域を検出できなかった場合、図１３に示されるようなバツ印を表示させ、肌領域を検出できた場合、手の形状を模した印を表示させることができる。
【０１８５】
また、例えば、肌領域を検出できた場合、さらに、ｚ値に応じて、手の形状を模した印の色を変化させるようにしてもよい。具体的には、例えば、ｚ<Th1である場合、手の形状を模した印の色を赤色に変化させ、Th1≦ｚ≦Th2である場合、手の形状を模した印の色を黄色に変化させ、Th2≦ｚ≦Th3である場合、手の形状を模した印の色を緑色に変化させるようにしてもよい。さらに、例えば、肌検出表示領域９０において、クリック動作が検出された場合には、その旨を示す表示を表示させるようにしてもよい。
【０１８６】
アップダウン表示領域９１は、ポインタ６１の移動方向を表示するための領域である。具体的には、例えば、アップダウン表示領域９１は、図１３に示されるように、「Up」と「Down」とが表示された領域であり、ポインタ６１が上方向に移動している場合には、「Up」と表示された領域を強調して表示させるようにし、ポインタ６１が下方向に移動している場合には、「Down」と表示された領域を強調して表示させるようにする。なお、ポインタ６１の移動方向として表示する方向は、上方向及び下方向に限定されない。
【０１８７】
ｘｙ値表示領域９２は、３次元位置（x,y,z）tのx値及びy値における位置を表示するための領域である。ｘｙ値表示領域９２は、例えば、表示部２０の表示画面全体を縮小して得られる画像を表示し、その画像内に、３次元位置（x,y,z）tのx値及びy値における位置（x,y）を表示するようになされている。なお、ｘｙ値表示領域９２において、３次元位置（x,y,z）tのx値又はy値の一方のみを表示するようにしてもよい。
【０１８８】
動作表示領域９３は、ポインタ６１の動作状態を表示するための領域である。具体的には、例えば、動作表示領域９３は、ポインタ６１が移動していない場合、図１３に示されるような印を表示し、ポインタ６１が移動している場合、その旨を表す印を表示する。
【０１８９】
なお、ポインタ６１が移動している場合、ポインタ６１が移動していることを表す表示に代えて、ポインタ６１の移動（軌跡）として直線的に移動していることを表す表示（例えば、ポインタモード処理やラインモード処理を実行する場合に表示される）や、時計回り又は反時計回りに円を描くように移動していることを表す表示を表示（例えば、回転モード処理を実行する場合に表示される）するようにしてもよい。
【０１９０】
図１３に示されるように、モード処理部１９からの制御により、Z値表示領域８９乃至動作表示領域９３を含む状態表示領域を、表示部２０の表示画面に表示させるようにした場合には、ユーザが、自身の手等の動きに応じて、ポインタ等を移動させる検出装置１に不慣れであっても、検出装置１を違和感なく操作することが可能となる。
【０１９１】
また、ユーザが、検出装置１による操作に慣れるまで、Z値表示領域８９乃至動作表示領域９３を含む状態表示領域を、表示部２０の表示画面に表示させるようにしておき、検出装置１による操作に慣れたところで、状態表示領域の表示を中止するように構成できる。なお、表示部２０の表示画面には、Z値表示領域８９乃至動作表示領域９３すべてを表示する他、Z値表示領域８９乃至動作表示領域９３の少なくとも１つを表示するようにしてもよい。
【０１９２】
また、例えば、表示部２０の表示画面には、ユーザ動き情報（例えば、移動距離Dxy、移動距離Dz、移動速度Vxy、又は曲率等）を表示するようにしてもよいし、実行すべき処理として決定された処理の名称等を表示するようにしてもよい。
【０１９３】
すなわち、表示部２０の表示画面には、ユーザが手を移動させて、検出装置１を操作する際に、操作に不慣れなユーザによる検出装置１の操作を補助するための情報であれば、どのような情報を表示するようにしてもよい。
【０１９４】
その他、例えば、検出装置１は、音楽や動画の記録又は再生を行なう記録再生装置に内蔵することができる。この場合、検出装置１が内蔵された記録再生装置おいて、内蔵された検出装置１により算出されるユーザの３次元位置（x,y,z）に基づいて、再生や記録（録音や録画等）を行なわせることができる。
【０１９５】
具体的には、例えば、ユーザの３次元位置（x,y,z）に基づいて、左から右方向に手が移動するという動きを検出した場合には、早送りを行うように構成してもよいし、右から左方向に手が移動するという動きを検出した場合には、巻き戻しを行うように構成してもよい。
【０１９６】
なお、検出装置１を、記録再生装置に内蔵して用いる場合には、チュートリアルモードにおいて、表示部２０の表示画面には、例えば、図１４に示されるような画像が表示されることとなる。
【０１９７】
なお、図１４に示される表示部２０の表示画面には、複数のアイコン８１乃至８８に代えて、音楽や動画の巻き戻しを行うための巻き戻しボタン１０１、音楽や動画の再生を行うための再生ボタン１０２、音楽や動画の停止を行うための停止ボタン１０３、音楽や動画の早送りを行うための早送りボタン１０４、及び再生中の音楽の歌手や、再生する動画を表示させるための領域１０５が設けられている他は、図１３の場合と同様である。
【０１９８】
＜２．変形例＞
本実施の形態では、検出装置１が、ユーザの肌領域を検出し、検出した肌領域に基づいて、ユーザの３次元位置（x,y,z）tを算出するようにしたが、ユーザの３次元位置（x,y,z）tの算出方法は、これに限定されない。
【０１９９】
すなわち、例えば、ユーザの３次元位置（x,y,z）tの算出方法としては、ステレオカメラ処理を用いた算出方法を採用できる。このステレオカメラ処理では、２台のカメラを用いて撮像した２枚の撮像画像を用いて、２台のカメラそれぞれの視差に基づき、ユーザの３次元位置（x,y,z）tを算出する。
【０２００】
また、例えば、ユーザの３次元位置（x,y,z）tのうちのzを算出する算出方法としては、肌領域の大きさや輝度値に基づいてｚを算出する他、Time of Flight距離画像センサを用いてｚを算出するようにしてもよい。
【０２０１】
このTime of Flight距離画像センサは、ユーザに対して赤外線等の光を照射したときから、照射した光がユーザに反射して戻ってくるまでの時間を計測し、計測した時間と、照射した光の速さとに基づいて、ユーザまでの距離ｚを算出するものである。
【０２０２】
ところで、上述した一連の処理は、専用のハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、いわゆる組み込み型のコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０２０３】
[コンピュータの構成例]
図１５は、上述した一連の処理をプログラムにより実行するコンピュータの構成例を示すブロック図である。
【０２０４】
CPU（Central Processing Unit）２０１は、ROM（Read Only Memory）２０２、または記憶部２０８に記憶されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）２０３には、CPU２０１が実行するプログラムやデータなどが適宜記憶される。これらのCPU２０１、ROM２０２、およびRAM２０３は、バス２０４により相互に接続されている。
【０２０５】
CPU２０１にはまた、バス２０４を介して入出力インタフェース２０５が接続されている。入出力インタフェース２０５には、キーボード、マウス、マイクロホンなどよりなる入力部２０６、ディスプレイ、スピーカなどよりなる出力部２０７が接続されている。CPU２０１は、入力部２０６から入力される指令に対応して各種の処理を実行する。そして、CPU２０１は、処理の結果を出力部２０７に出力する。
【０２０６】
入出力インタフェース２０５に接続されている記憶部２０８は、例えばハードディスクからなり、CPU２０１が実行するプログラムや各種のデータを記憶する。通信部２０９は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
【０２０７】
また、通信部２０９を介してプログラムを取得し、記憶部２０８に記憶してもよい。
【０２０８】
入出力インタフェース２０５に接続されているドライブ２１０は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア２１１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部２０８に転送され、記憶される。
【０２０９】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図１５に示すように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む）、光磁気ディスク（ＭＤ（Mini-Disc）を含む）、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア２１１、または、プログラムが一時的もしくは永続的に記録されるROM２０２や、記憶部２０８を構成するハードディスクなどにより構成される。記録媒体へのプログラムの記録は、必要に応じてルータ、モデムなどのインタフェースである通信部２０９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０２１０】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２１１】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０２１２】
１  検出装置,  １１  制御部,  １２  LED制御部,  １３−１,１３−２  LED,  １４  光学フィルタ,  １５  撮像部,  １６  撮像制御部,  １７  画像処理部,  １８  保持部,  １９  モード処理部,  ２０  表示部
【図１】
2012063824.tif 000003
【図２】
2012063824.tif 000004
【図３】
2012063824.tif 000005
【図４】
2012063824.tif 000006
【図５】
2012063824.tif 000007
【図６】
2012063824.tif 000008
【図７】
2012063824.tif 000009
【図８】
2012063824.tif 000010
【図９】
2012063824.tif 000011
【図１０】
2012063824.tif 000012
【図１１】
2012063824.tif 000013
【図１２】
2012063824.tif 000014
【図１３】
2012063824.tif 000015
【図１４】
2012063824.tif 000016
【図１５】
2012063824.tif 000017