(57)【要約】      （修正有）【課題】ユーザにとって容易なジェスチャにより、クリック操作が行なわれたと判定する操作判定装置を提供する。【解決手段】指先５０が大体静止した状態になった場合に、最新の指先５０を中心とした矩形範囲５２を設定する（Ｓ２０００）。最新の指先５０から一定距離内に過去所定数分の指先５０が存在する場合に、指先５０が大体静止した状態であると判断される。矩形範囲５２の設定から一定時間ＴＣ以内に、矩形範囲５２から指先５０が消失し、矩形範囲５２に指先５０が存在しない状態になり（Ｓ２００２）、そして、再び、矩形範囲５２に指先５０が出現し、矩形範囲５２に指先５０が存在する状態になった時に（Ｓ２００４）、シングルクリックが行なわれたとみなす。【選択図】図１９
2012073659.tif 000002
【特許請求の範囲】
【請求項１】
三次元空間中で動かされるユーザの手を撮影する撮影手段と、
撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、
検出された前記指先に相当する部分を含む所定範囲を設定する設定手段と、
前記設定手段が、前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断する第１判断手段と、
前記第１判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第２判断手段と、
前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定する判定手段と、を備える操作判定装置。
【請求項２】
前記設定手段は、検出された前記指先に相当する部分の動きが一定範囲内に収まっている場合に、前記所定範囲を設定する、請求項１記載の操作判定装置。
この構成によれば、前記指先に相当する部分の動きが一定範囲内に収まっている場合に、ユーザがクリック操作を行なうことを意図しているとみなし、所定範囲を設定し、これをトリガとして、ユーザがクリック操作に対応するジェスチャを行ったか否かを判定できる。このため、ユーザが当該ジェスチャを行なったか否かを、常に判定する必要がなく、処理負荷を軽減できる。
【請求項３】
前記設定手段は、前記所定範囲が設定されてから第１所定時間内に、前記第１判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する、請求項１又は２記載の操作判定装置。
【請求項４】
前記設定手段は、前記所定範囲が設定されてから前記第１所定時間内に、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項３記載の操作判定装置。
【請求項５】
前記設定手段は、前記第１判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第２所定時間内に、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項３記載の操作判定装置。
【請求項６】
前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した後、前記指先に相当する部分が消失したか否かを判断する第３判断手段と、
前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第４判断手段と、をさらに備え、
前記判定手段は、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、ダブルクリック操作が行なわれたと判定する、請求項１又は２記載の操作判定装置。
【請求項７】
前記設定手段は、前記所定範囲が設定されてから前記第１所定時間内に、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する、請求項６記載の操作判定装置。
【請求項８】
前記設定手段は、前記所定範囲が設定されてから前記第１所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項７記載の操作判定装置。
【請求項９】
前記設定手段は、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第３所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項７記載の操作判定装置。
【請求項１０】
前記設定手段は、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断してから、第４所定時間内に、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する、請求項６記載の操作判定装置。
【請求項１１】
前記設定手段は、前記第４所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項１０記載の操作判定装置。
【請求項１２】
前記設定手段は、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第５所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項１０記載の操作判定装置。
【請求項１３】
三次元空間中で動かされるユーザの手を撮影する撮影手段と、
撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、
今回前記ユーザの指に相当する部分が１つ検出された場合において、前回前記ユーザの指に相当する部分が２つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える操作判定装置。
【請求項１４】
三次元空間中で動かされるユーザの手を撮影する撮影手段と、
撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、
今回前記ユーザの指に相当する部分が２つ検出された場合において、前回前記ユーザの指に相当する部分が１つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える操作判定装置。
【請求項１５】
三次元空間中で動かされるユーザの手を撮影する撮影手段と、
撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、
前記ユーザの指先に相当する部分が２つ検出された場合において、その２点間の距離が所定値より小さい場合に、擬似的にボタンが行なわれたと判定する判定手段と、を備える操作判定装置。
【請求項１６】
三次元空間中で動かされるユーザの手を撮影する撮影手段と、
撮影により得られた画像から、前記手の像の輪郭を検出する輪郭検出手段と、
前記輪郭から、前記手の指先に相当する部分の画素（以下、「指先画素」と呼ぶ。）を検出する指先検出手段と、
前記指先画素の周囲の画素（以下、「周囲画素」と呼ぶ。）の画素値及び座標を用いて、前記指先検出手段により検出された前記指先画素の座標を小数点精度で補正する補正手段と、を備える指先検出装置。
【請求項１７】
前記補正値算出手段は、前記指先画素及び前記周囲画素の画素値を重みとし、前記指先画素及び前記周囲画素の座標の加重平均を算出し、前記指先画素の座標を補正する、請求項１６記載の指先検出装置。
【請求項１８】
前記補正値算出手段は、補正後の指先の位置が、前記周囲画素の範囲を超えるように、前記補正を行う、請求項１６又は１７記載の指先検出装置。
【請求項１９】
前記補正値算出手段は、前記指先画素及び前記周囲画素の画素値を、前記指先画素及び前記周囲画素の座標への重みとし、重み付けされた前記指先画素及び前記周囲画素の座標の和を算出し、その和を、前記指先画素及び前記周囲画素の画素値のうちの最大値で除することにより、前記指先画素の座標を補正する、請求項１６記載の指先検出装置。
【請求項２０】
前記補正値算出手段は、前記指先画素と前記指先画素の斜め方向に位置する前記周囲画素との間の距離と、前記指先画素と前記指先画素の水平方向又は垂直方向に位置する前記周囲画素との間の距離と、が等しくなるように、前記周囲画素の座標を定義する、請求項１６から１９のいずれかに記載の指先検出装置。
【請求項２１】
三次元空間中で動かされるユーザの手を撮影するステップと、
撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、
検出された前記指先に相当する部分を含む所定範囲を設定するステップと、
前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断するステップと、
消失したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断するステップと、
出現したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定するステップと、を含む操作判定方法。
【請求項２２】
三次元空間中で動かされるユーザの手を撮影するステップと、
撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、
今回前記ユーザの指に相当する部分が１つ検出された場合において、前回前記ユーザの指に相当する部分が２つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む操作判定方法。
【請求項２３】
三次元空間中で動かされるユーザの手を撮影するステップと、
撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、
今回前記ユーザの指に相当する部分が２つ検出された場合において、前回前記ユーザの指に相当する部分が１つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む操作判定方法。
【請求項２４】
三次元空間中で動かされるユーザの手を撮影するステップと、
撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、
前記ユーザの指先に相当する部分が２つ検出された場合において、その２点間の距離が所定値より小さい場合に、擬似的にボタン操作が行なわれたと判定するステップと、を含む操作判定方法。
【請求項２５】
三次元空間中で動かされるユーザの手を撮影するステップと、
撮影により得られた画像から、前記手の像の輪郭を検出するステップと、
前記輪郭から、前記手の指先に相当する部分の画素（以下、「指先画素」と呼ぶ。）を検出するステップと、
前記指先画素の周囲の画素（以下、「周囲画素」と呼ぶ。）の画素値及び座標を用いて、前記指先画素を検出する前記ステップにより検出された前記指先画素の座標を小数点精度で補正するステップと、を含む指先検出方法。
【請求項２６】
請求項２１記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項２７】
請求項２２記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項２８】
請求項２３記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項２９】
請求項２４記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項３０】
請求項２５記載の指先検出方法をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジェスチャにより非接触で機器を操作する際に、クリック操作が行なわれたか否かを判定する操作判定装置及びその関連技術に関する。
【０００２】
また、本発明は、ジェスチャにより非接触で機器を操作する際に、擬似的にボタン操作が行なわれたか否かを判定する操作判定装置及びその関連技術に関する。
【０００３】
さらに、本発明は、人の手を撮像して、撮像画像から指先を検出する指先検出装置及びその関連技術に関する。
【背景技術】
【０００４】
特許文献１のカーソル操作装置は、カメラにより三次元空間中のユーザのジェスチャを検出して、非接触で機器を操作するためのカーソルを制御する。つまり、このカーソル操作装置は、画面を指し示す指先を検出し、その指先の位置に対応する画面上の位置にカーソルを表示する。そして、カーソル操作装置は、画面に表示されたボタンの上にカーソルが一定時間滞在すると、クリック操作がなされたと判断し、そのボタンが押下されたとみなす。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２５８８３７
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ユーザは、クリック操作のために、指先を一定時間静止させなければならず、それを三次元空間中で行なうのは、困難な場合も多い。
【０００７】
また、カメラによる画像の精度でしか、指先の位置を求めることができない。従って、カメラの画像が低解像度で、カーソルを表示する画面が高解像度である場合、カーソルを滑らかに動かすことができず、不連続な動きになる。
【０００８】
そこで、本発明は、ユーザにとって容易なジェスチャにより、クリック操作が行なわれたと判定する操作判定装置及びその関連技術を提供することを目的とする。
【０００９】
本発明の他の目的は、ユーザにとって容易なジェスチャにより、擬似的にボタン操作が行なわれたと判定する操作判定装置及びその関連技術を提供することである。
【００１０】
本発明のさらに他の目的は、人の指を撮影して得られた低解像度の画像から、高精度で指先の位置を検出することができ、かつ、記憶容量の削減と処理の高速化を図ることができる指先検出装置及びその関連技術を提供することである。
【課題を解決するための手段】
【００１１】
本発明の第１の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、検出された前記指先に相当する部分を含む所定範囲を設定する設定手段と、前記設定手段が、前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断する第１判断手段と、前記第１判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第２判断手段と、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定する判定手段と、を備える。
【００１２】
この構成によれば、ユーザは、三次元空間中で、１本指を立てた状態から、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、非接触のクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、クリック操作を行なうことができる。
【００１３】
このような人のジェスチャでは、指が曲げられた後、指先が、ほぼ元の位置に戻ることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、クリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
【００１４】
この操作判定装置において、前記設定手段は、検出された前記指先に相当する部分の動きが一定範囲内に収まっている場合に、前記所定範囲を設定する。
【００１５】
この構成によれば、前記指先に相当する部分の動きが一定範囲内に収まっている場合に、ユーザがクリック操作を行なうことを意図しているとみなし、所定範囲を設定し、これをトリガとして、ユーザがクリック操作に対応するジェスチャを行ったか否かを判定できる。このため、ユーザが当該ジェスチャを行なったか否かを、常に判定する必要がなく、処理負荷を軽減できる。
【００１６】
上記操作判定装置において、前記設定手段は、前記所定範囲が設定されてから第１所定時間内に、前記第１判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する。
【００１７】
この構成によれば、第１所定時間内に、第１判断手段が、指先に相当する部分が所定範囲から消失したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、第１所定時間を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００１８】
この操作判定装置において、前記設定手段は、前記所定範囲が設定されてから前記第１所定時間内に、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する。
【００１９】
この構成によれば、第１所定時間内に、第２判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、第１所定時間を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００２０】
また、上記操作判定装置において、前記設定手段は、前記第１判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第２所定時間内に、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除することもできる。
【００２１】
この構成によれば、第２所定時間内に、第２判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、第２所定時間を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００２２】
上記操作判定装置は、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した後、前記指先に相当する部分が消失したか否かを判断する第３判断手段と、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第４判断手段と、をさらに備え、前記判定手段は、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、ダブルクリック操作が行なわれたと判定する。
【００２３】
この構成によれば、ユーザは、三次元空間中で、１本指を立てた状態から、その指を折って、再び、元の立てた状態に戻し、さらに、再び、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、つまり、上記クリック操作（シングルクリック操作）のためのジェスチャを２回行なうだけで、非接触のダブルクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、ダブルクリック操作を行なうことができる。
【００２４】
このようなダブルクリック操作は、上記シングルクリック操作を２回行うものであるところ、折り曲げられた指先は、２回とも、ほぼ同じ位置に戻ってくることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、ダブルクリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
【００２５】
この操作判定装置において、前記設定手段は、前記所定範囲が設定されてから前記第１所定時間内に、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する。
【００２６】
この構成によれば、第１所定時間内に、第３判断手段が、指先に相当する部分が所定範囲から消失したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第１所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００２７】
この操作判定装置において、前記設定手段は、前記所定範囲が設定されてから前記第１所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する。
【００２８】
この構成によれば、第１所定時間内に、第４判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第１所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００２９】
また、上記操作判定装置において、前記設定手段は、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第３所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除することもできる。
【００３０】
この構成によれば、第３所定時間内に、第４判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第３所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００３１】
上記操作判定装置において、前記設定手段は、前記第２判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断してから、第４所定時間内に、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する。
【００３２】
この構成によれば、第４所定時間内に、第３判断手段が、指先に相当する部分が所定範囲から消失したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第４所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００３３】
この操作判定装置において、前記設定手段は、前記第４所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する。
【００３４】
この構成によれば、第４所定時間内に、第４判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第４所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００３５】
また、上記操作判定装置において、前記設定手段は、前記第３判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第５所定時間内に、前記第４判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除することもできる。
【００３６】
この構成によれば、第５所定時間内に、第４判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第５所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【００３７】
本発明の第２の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、今回前記ユーザの指に相当する部分が１つ検出された場合において、前回前記ユーザの指に相当する部分が２つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える。
【００３８】
この構成によれば、ユーザは、１本指を立てた状態から、もう一本の指を立てて２本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる。
【００３９】
また、擬似的なボタン操作の前後において、常に１本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる。
【００４０】
ここで、本明細書及び特許請求の範囲において、「擬似的なボタン操作」とは、ポインティングデバイス等のデバイスの実際のボタンの操作ではないが、実際のボタンを操作する場合と同等の情報ないしは命令を、三次元空間中のジェスチャにより、コンピュータに与えることを意味する。
【００４１】
本発明の第３の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、今回前記ユーザの指に相当する部分が２つ検出された場合において、前回前記ユーザの指に相当する部分が１つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える。
【００４２】
この構成によれば、ユーザは、２本指を立てた状態から、もう一本の指を閉じて１本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる。
【００４３】
また、擬似的なボタン操作の前後において、常に１本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる。
【００４４】
本発明の第４の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、前記ユーザの指先に相当する部分が２つ検出された場合において、その２点間の距離が所定値より小さい場合に、擬似的にボタンが行なわれたと判定する判定手段と、を備える。
【００４５】
この構成によれば、ユーザは、２本の指の指先を近づけるだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる。
【００４６】
また、検出された２つの指先の間（例えば中点）にカーソルを表示することができ、ポインティングと擬似的なボタン操作を片手で行なうことができる。
【００４７】
本発明の第５の観点によれば、指先検出装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記手の像の輪郭を検出する輪郭検出手段と、前記輪郭から、前記手の指先に相当する部分の画素（以下、「指先画素」と呼ぶ。）を検出する指先検出手段と、前記指先画素の周囲の画素（以下、「周囲画素」と呼ぶ。）の画素値及び座標を用いて、前記指先検出手段により検出された前記指先画素の座標を小数点精度で補正する補正手段と、を備える。
【００４８】
この構成によれば、輪郭から大体の指先を決定し、その周囲画素のみを用いて補正を行なうので、処理のための記憶容量の削減と処理速度の向上を図ることができる。
【００４９】
また、補正が小数点精度で実行されるので、撮像手段が比較的低解像度であっても、高精度で指先の位置を決定することができる。その結果、撮影手段より高解像度の画面上の、指先に対応する位置にカーソルを表示する場合でも、その動きを滑らかにすることができる。
【００５０】
さらに、周囲画素の画素値により、補正を行なうので、補正後の指先を、輪郭線上ではなく、指の内部の位置に決定でき、ユーザが指先と認識する位置により近づけることができる。その結果、指先に対応する画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が容易になる。なお、一般に、人は、指の腹を向けて、指を動かすときは、指の輪郭線上の凸点を指先と認識せず、指先端部の指の腹（ｆｉｎｇｅｒ  ｐａｄ）の中心を指先と認識するものである。
【００５１】
この指先検出装置において、前記補正値算出手段は、前記指先画素及び前記周囲画素の画素値を重みとし、前記指先画素及び前記周囲画素の座標の加重平均を算出し、前記指先画素の座標を補正する。
【００５２】
上記指先検出装置において、前記補正値算出手段は、補正後の指先の位置が、前記周囲画素の範囲を超えるように、前記補正を行う。
【００５３】
この構成によれば、補正後の指先の位置を指先端部の指の腹の一定位置あるいは略一定位置に決定することができ、輪郭検出手段により検出された指先の位置が安定していない場合でも、補正後の指先の位置を極力一定させ、あるいは、指先の位置の相違を極力小さい範囲に収めることができる。その結果、指先に対応する画面上の位置にカーソルを表示する場合、カーソルを安定化できる。
【００５４】
また、補正後の指先を、ユーザが指先と認識する位置により一層近づけることができる。その結果、指先に対応する画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が一層容易になる。
【００５５】
上記指先検出装置において、前記補正値算出手段は、前記指先画素及び前記周囲画素の画素値を、前記指先画素及び前記周囲画素の座標への重みとし、重み付けされた前記指先画素及び前記周囲画素の座標の和を算出し、その和を、前記指先画素及び前記周囲画素の画素値のうちの最大値で除することにより、前記指先画素の座標を補正することもできる。
【００５６】
上記指先検出装置において、前記補正値算出手段は、前記指先画素と前記指先画素の斜め方向に位置する前記周囲画素との間の距離と、前記指先画素と前記指先画素の水平方向又は垂直方向に位置する前記周囲画素との間の距離と、が等しくなるように、前記周囲画素の座標を定義する。
【００５７】
この構成によれば、画素値を利用するに当って、全周囲画素の画素値が均等に扱われ、方向によって偏りのない補正を行なうことができる。
【００５８】
本発明の第６の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、検出された前記指先に相当する部分を含む所定範囲を設定するステップと、前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断するステップと、消失したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断するステップと、出現したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定するステップと、を含む。
【００５９】
この構成によれば、上記第１の観点による操作判定装置と同様の効果を奏する。
【００６０】
本発明の第７の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、今回前記ユーザの指に相当する部分が１つ検出された場合において、前回前記ユーザの指に相当する部分が２つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む。
【００６１】
この構成によれば、上記第２の観点による操作判定装置と同様の効果を奏する。
【００６２】
本発明の第８の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、今回前記ユーザの指に相当する部分が２つ検出された場合において、前回前記ユーザの指に相当する部分が１つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む。
【００６３】
この構成によれば、上記第３の観点による操作判定装置と同様の効果を奏する。
【００６４】
本発明の第９の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、前記ユーザの指先に相当する部分が２つ検出された場合において、その２点間の距離が所定値より小さい場合に、擬似的にボタン操作が行なわれたと判定するステップと、を含む。
【００６５】
この構成によれば、上記第４の観点による操作判定装置と同様の効果を奏する。
【００６６】
本発明の第１０の観点によれば、指先検出方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記手の像の輪郭を検出するステップと、前記輪郭から、前記手の指先に相当する部分の画素（以下、「指先画素」と呼ぶ。）を検出するステップと、前記指先画素の周囲の画素（以下、「周囲画素」と呼ぶ。）の画素値及び座標を用いて、前記指先画素を検出する前記ステップにより検出された前記指先画素の座標を小数点精度で補正するステップと、を含む。
【００６７】
この構成によれば、上記第５の観点による指先検出装置と同様の効果を奏する。
【００６８】
本発明の第１１の観点によれば、コンピュータプログラムは、上記第６の観点による操作判定方法をコンピュータに実行させる。
【００６９】
本発明の第１２の観点によれば、コンピュータプログラムは、上記第７の観点による操作判定方法をコンピュータに実行させる。
【００７０】
本発明の第１３の観点によれば、コンピュータプログラムは、上記第８の観点による操作判定方法をコンピュータに実行させる。
【００７１】
本発明の第１４の観点によれば、コンピュータプログラムは、上記第９の観点による操作判定方法をコンピュータに実行させる。
【００７２】
本発明の第１５の観点によれば、コンピュータプログラムは、上記第１０の観点による指先検出方法をコンピュータに実行させる。
【図面の簡単な説明】
【００７３】
【図１】（ａ）本発明の実施の形態による擬似ボタン操作の説明図である。（ｂ）本発明の実施の形態による擬似ボタン操作の第１〜第３の例の説明図である。
【図２】本発明の実施の形態による画像処理装置１の電気的構成を示す図である。
【図３】図２のＭＣＵ３による画像解析処理の流れの一例を示すフローチャートである。
【図４】図３のステップＳ５の変曲点の検出処理の流れの一例を示すフローチャートである。
【図５】図３のステップＳ７の輪郭画像の形状を判定する処理の流れの一例を示すフローチャートである。
【図６】図５のステップＳ１６１の輪郭情報を算出する処理の流れの一例を示すフローチャートである。
【図７】図５のステップＳ１６３の指先を検出する処理の流れの一例を示すフローチャートである。
【図８】図５のステップＳ１６５の「パー」を判定する処理の流れの一例を示すフローチャートである。
【図９】図５のステップＳ１６７の「チョキ」を判定する処理の流れの一例を示すフローチャートである。
【図１０】図５のステップＳ１６９の「グー」を判定する処理の流れの一例を示すフローチャートである。
【図１１】図５のステップＳ１７１の一本指を判定する処理の流れの一例を示すフローチャートである。
【図１２】（ａ）図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第１の例の流れを示すフローチャートである。（ｂ）図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第２の例の流れを示すフローチャートである。（ｃ）図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第３の例の流れを示すフローチャートである。（ｄ）図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第４の例の流れを示すフローチャートである。
【図１３】（ａ）図３のステップＳ９の擬似ボタン操作判定処理の第１の例の流れを示すフローチャートである。（ｂ）図３のステップＳ９の擬似ボタン操作判定処理の第２の例の流れを示すフローチャートである。（ｃ）図３のステップＳ９の擬似ボタン操作判定処理の第３の例の流れを示すフローチャートである。
【図１４】図３のステップＳ３で検出される偏角θｊの説明図である。
【図１５】図３のステップＳ５で検出される変曲点及び図５のステップＳ１６３で検出される指先の説明図である。
【図１６】（ａ）図１２（ａ）及び図１２（ｃ）の指先補正値計算処理の説明図である。（ｂ）図１２（ｂ）及び図１２（ｄ）の指先補正値計算処理の説明図である。
【図１７】指先補正値計算処理における除数の説明図である。
【図１８】（ａ）図３のステップＳ９の擬似ボタン操作判定処理の第４の例の流れを示すフローチャートである。（ｂ）図３のステップＳ９の擬似ボタン操作判定処理の第５の例の流れを示すフローチャートである。（ｃ）図３のステップＳ９の擬似ボタン操作判定処理の第６の例の流れを示すフローチャートである。
【図１９】（ａ）本発明の実施の形態による擬似ボタン操作の第４の例（シングルクリック）の説明図である。（ｂ）本発明の実施の形態による擬似ボタン操作の第４の例（ダブルクリック）の説明図である。
【図２０】図３のステップＳ９の擬似ボタン操作判定処理の第７の例の流れの一部を示すフローチャートである。
【図２１】図３のステップＳ９の擬似ボタン操作判定処理の第７の例の流れの他の一部を示すフローチャートである。
【発明を実施するための形態】
【００７４】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、本明細書において、数字の後尾に付した「ｈ」は、１６進数であることを示す。
【００７５】
図１（ａ）及び図１（ｂ）は、本発明の実施の形態による擬似ボタン操作の説明図である。図１（ａ）を参照して、後述する画像処理装置１は、ユーザ（人）の手を撮影し、得られた画像を解析することによって、指先ａ及びｂの位置を求める。この例では、指先ａは、人差し指の指先であり、指先ｂは、親指の指先である。
【００７６】
図１（ｂ）を参照して、第１の例では、後述する電子機器９は、画像処理装置１から指先ａの位置を受け取って、後述するモニタ１３の画面上の対応する位置にカーソルを表示する。また、画像処理装置１は、撮影画像中に指先ａと指先ｂとが存在する状態から、撮影画像中に指先ａのみが存在する状態へ遷移したことを検出すると、例えば、二本の指（親指及び人差し指）が写っている状態から、カーソルの位置に関係ない一本の指（親指）が折り曲げられ、カーソルの位置を制御する他の一本の指（人差し指）のみが写っている状態に遷移したことを検出すると、ユーザが擬似的にボタン操作を行なったと判定し、擬似的にボタン操作が行なわれたことを電子機器９に通知する。すると、電子機器９は、ボタン操作に応じた処理を実行する。
【００７７】
第２の例では、電子機器９は、画像処理装置１から指先ａの位置を受け取って、モニタ１３の画面上の対応する位置にカーソルを表示する。また、画像処理装置１は、撮影画像中に指先ａのみが存在する状態から、撮影画像中に指先ａと指先ｂとが存在する状態へ遷移したことを検出すると、例えば、カーソルの位置に関係ない一本の指（親指）が折り曲げられ、カーソルの位置を制御する他の一本の指（人差し指）のみが写っている状態から、二本の指（親指及び人差し指）が写っている状態に遷移したことを検出すると、ユーザが擬似的にボタン操作を行なったと判定し、擬似的にボタン操作が行なわれたことを電子機器９に通知する。すると、電子機器９は、ボタン操作に応じた処理を実行する。
【００７８】
第３の例では、電子機器９は、画像処理装置１から指先ａの位置と指先ｂの位置との中点の位置を受け取って、モニタ１３の画面上の対応する位置にカーソルを表示する。また、画像処理装置１は、指先ａと指先ｂとの間の距離を算出して、その距離が一定値以下になったことを検出すると、つまり、指先ａと指先ｂとが近づいて、その距離が一定値以下になると、ユーザが擬似的にボタン操作を行なったと判定し、擬似的にボタン操作が行なわれたことを電子機器９に通知する。すると、電子機器９は、ボタン操作に応じた処理を実行する。
【００７９】
ここで、上記第１〜第３の例において、擬似的にボタン操作が行われたと判定されたことを、ボタンのプレス操作（ボタンを押したままの状態）が行なわれたとみなすこともできるし、あるいは、クリック操作（ボタンを押下して放す操作）が行なわれたとみなすこともできる。
【００８０】
なお、擬似的にボタン操作が行われたと判定されたことを、ボタンのプレス操作が行なわれたとみなす場合、ボタンを放したとみなす操作は、次のようにして判定される。
【００８１】
第１の例では、画像処理装置１は、撮影画像中に指先ａのみが存在する状態から、撮影画像中に指先ａと指先ｂとが存在する状態へ遷移したことを検出すると、ユーザが擬似的にボタンを放す操作を行なったと判定し、擬似的にボタンを話す操作が行なわれたことを電子機器９に通知する。
【００８２】
第２の例では、画像処理装置１は、撮影画像中に指先ａと指先ｂとが存在する状態から、撮影画像中に指先ａのみが存在する状態へ遷移したことを検出すると、ユーザが擬似的にボタンを放す操作を行なったと判定し、擬似的にボタンを放す操作が行なわれたことを電子機器９に通知する。
【００８３】
第３の例では、画像処理装置１は、指先ａと指先ｂとの間の距離を算出して、その距離が一定値以下になった後、再び、その距離が一定値を超えたことを検出すると、ユーザが擬似的にボタンを放す操作を行なったと判定し、擬似的にボタンを放す操作が行なわれたことを電子機器９に通知する。
【００８４】
なお、「擬似的なボタン操作」とは、ポインティングデバイス等のデバイスの実際のボタンの操作ではないが、実際のボタンを操作する場合と同等の情報ないしは命令を、三次元空間中のジェスチャにより、コンピュータに与えることを意味する。
【００８５】
図２は、本発明の実施の形態による画像処理装置１の電気的構成を示す図である。図１を参照して、この画像処理装置１は、ＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｅｒ  Ｕｎｉｔ）３及びイメージセンサ５を含む。ＭＣＵ３は、メモリ７を含む。イメージセンサ５は、カラー及びグレースケールのいずれでも使用でき、また、その画素数も任意のものを使用できるが、本実施の形態では、グレースケールで、６４×６４画素の比較的低解像度のものを使用する。また、イメージセンサ５としては、ＣＭＯＳイメージセンサやＣＣＤイメージセンサ等を採用できる。
【００８６】
ＭＣＵ３のメモリ７は、ＲＡＭ、ＲＯＭ、及びフラッシュメモリ等の半導体メモリであり、プログラム格納領域、データ格納領域、作業領域、及び一時格納領域等として利用される。ＭＣＵ３は、メモリ７に格納されたコンピュータプログラムに従って、後述のフローチャートで示される各種処理を実行する。なお、仕様に応じて、記録媒体として、メモリ７の他、ＣＤ（ＣＤ−ＲＯＭ、Ｖｉｄｅｏ−ＣＤを含む）やＤＶＤ（ＤＶＤ−Ｖｉｄｅｏ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭを含む）等の光ディスク、半導体メモリを搭載したメモリカード・メモリカートリッジ・ＵＳＢメモリ、ハードディスク、光磁気ディスク、磁気テープ、及び、フレキシブルディスク等を、ＭＣＵ３に接続することもできる。そして、これらにコンピュータプログラムやデータなどを格納することもできる。
【００８７】
画像処理装置１は、電子機器９と接続されて使用される。電子機器９は、コンピュータ１１及びその処理結果を表示するモニタ１３を含む。電子機器９は、例えば、テレビジョン、ビデオゲーム機、カーナビゲーション、及び、パーソナルコンピュータ等であるが、特に限定されるものではない。なお、本実施の形態では、イメージセンサ５よりも高解像度のモニタ１３を使用するものとする。
【００８８】
ＭＣＵ３は、メモリ７に格納されたプログラムに従って、イメージセンサ５を制御する。イメージセンサ５は、ＭＣＵ３の制御により、三次元空間中で動くあるいは動かされる被写体（本実施の形態では人の手）を撮影し、得られた画像をＭＣＵ３に出力する。ＭＣＵ３は、メモリ７に格納されたプログラムに従って、イメージセンサ５から受け取った画像を解析して、指先を検出して、その位置や擬似的なボタン操作の有無の情報等を、電子機器９のコンピュータ１１に出力する。すると、電子機器９のコンピュータ１１は、指先の位置に対応するモニタ１３の画面上の位置にカーソルを表示し、また、ボタン操作が行なわれたことが通知されると、それに応じた処理を実行する。その他、コンピュータ１１は、電子機器９の仕様に応じて、画像処理装置１から受け取った他の情報を処理し、また、独自の情報処理を実行する。
【００８９】
次に、フローチャートを用いて画像処理装置１のＭＣＵ３の処理の詳細を説明する。
【００９０】
図３は、図２のＭＣＵ３による画像解析処理の流れの一例を示すフローチャートである。図３を参照して、ステップＳ１にて、ＭＣＵ３は、イメージセンサ５が出力した画像データから被写体（本実施の形態では手）の像の輪郭線を抽出する。この処理では、輪郭線上の各画素Ｐｊ（ｊ＝０〜Ｊ−１）の座標（ＸＯ［ｊ］，ＹＯ［ｊ］）を求める。
【００９１】
ここで、本実施の形態では、値Ｊは、輪郭線上の画素Ｐｊの総数を示す。また、反時計回りに輪郭線の抽出処理が実行されるものとする。
【００９２】
輪郭線を抽出するためのアルゴリズムは、周知のものを使用できる。例えば、３×３の小画素領域からなるマスクを用いる方法で、このマスクの中心を輪郭線上にたえずおきならが、順次、マスクを移動して、輪郭線を抽出する。
【００９３】
ステップＳ３にて、ＭＣＵ３は、抽出した輪郭線上の各画素ＰｊのベクトルＶｊの偏角θｊを算出する。
【００９４】
図１４は、図３のステップＳ３で検出される偏角θｊの説明図である。図４を参照して、今、被写体の輪郭線上の３つの画素Ｐｊ−１，Ｐｊ，及びＰｊ＋１に注目する。また、輪郭線を反時計回りにスキャンするものとする。画素ＰｊのベクトルＶｊは、画素Ｐｊから次の画素Ｐｊ＋１に向かうベクトルとして定義される。画素ＰｊのベクトルＶｊの偏角θｊは、画素Ｐｊの１つ前の画素Ｐｊ−１のベクトルＶｊ−１に対してベクトルＶｊがなす角度として定義される。反時計回りの偏角θｊの符号は正であり、時計回りの偏角θｊの符号は負である。
【００９５】
図３に戻って、ステップＳ５にて、ＭＣＵ３は、抽出した輪郭線の変曲点を検出する。変曲点は、輪郭線の向きが変化する点であり、凸点と凹点とが定義される。
【００９６】
図１５は、図３のステップＳ５で検出される変曲点の説明図である。図１５を参照して、抽出した輪郭線２１の向きが変化する点として、変曲点Ｉ０〜Ｉ８が挙げられる。変曲点Ｉ０，Ｉ２，Ｉ４，Ｉ６及びＩ８は凸点である。変曲点Ｉ１，Ｉ３，Ｉ５及びＩ７は凹点である。
【００９７】
図３に戻って、ステップＳ７にて、ＭＣＵ３は、抽出した輪郭線（輪郭画像）の形状（グー、チョキ、パー、一本指、不定）を判定する。ステップＳ９にて、ＭＣＵ３は、擬似的にボタン操作が行なわれたか否かを判定する。ステップＳ１１にて、ＭＣＵ３は、ステップＳ７の結果（輪郭画像の重心座標、面積、形状の情報（後述のフラグＳＨ）、補正後の指先の座標、並びに、二つの指先の中点座標）及びステップＳ９の結果（後述の擬似ボタンフラグないしは後述のシングルクリックフラグ及びダブルクリックフラグ）を電子機器９のコンピュータ１１に送信する。なお、ＭＣＵ３は、イメージセンサ５から１フレームの画像データを受け取るたびに、ステップＳ１〜Ｓ１１を繰り返す。
【００９８】
図４は、図３のステップＳ５の変曲点の検出処理の流れの一例を示すフローチャートである。図４を参照して、ステップＳ２１にて、ＭＣＵ３は、変数ＤＡ，ＡＤＡ，ｊ，及びＣＦ［］に０を代入する。ステップＳ２３にて、ＭＣＵ３は、図３のステップＳ１で検出された輪郭線上の画素Ｐｊの偏角θｊをメモリ７から取得する。ステップＳ２５にて、ＭＣＵ３は、変数ＤＡの現在の値に偏角θｊを加算して、変数ＤＡに代入する。ステップＳ２７にて、ＭＣＵ３は、変数ＤＡの絶対値を求めて、変数ＡＤＡに代入する。
【００９９】
ステップＳ２９にて、ＭＣＵ３は、変数ＡＤＡの値が１３５度になったか否かを判断し、１３５度の場合輪郭線の向きが変わったと判断して、画素Ｐｊを変曲点とみなしてステップＳ３１に進み、それ以外はステップＳ３９に進む。ステップＳ３１では、ＭＣＵ３は、変数ＤＡの符号が正か否かを判断し、正の場合ステップＳ３３に進み、負の場合ステップＳ３５に進む。ステップＳ３３では、ＭＣＵ３は、凸凹フラグＣＦ［ｊ］に、変曲点が凸点であることを示す０１を代入する。一方、ステップＳ３５では、ＭＣＵ３は、凸凹フラグＣＦ［ｊ］に、変曲点が凹点であることを示す１０を代入する。
【０１００】
ステップＳ３７にて、ＭＣＵ３は、変数ＤＡに０を代入する。ステップＳ３９にて、ＭＣＵ３は、変数ｊを１つインクリメントする。ステップＳ４１にて、ＭＣＵ３は、変数ｊの値が、値Ｊと等しくなったか否かを判断し、ｊ＝Ｊの場合リターンし、それ以外はステップＳ２３に進む。
【０１０１】
図５は、図３のステップＳ７の輪郭画像の形状を判定する処理の流れの一例を示すフローチャートである。図５を参照して、ステップＳ１６１にて、ＭＣＵ３は、輪郭線に関する情報を算出する。ステップＳ１６３にて、ＭＣＵ３は、輪郭画像から手の指先に相当する画素を検出する。
【０１０２】
再び、図１５を参照して、凸点Ｉ０，Ｉ２，Ｉ４，Ｉ６及びＩ８を総称して、凸点Ａｓ（ｓ＝０，１，…，Ｓ）と表記し、凹点Ｉ１，Ｉ３，Ｉ５及びＩ７を総称して、凹点Ｂｔ（ｔ＝０，１，…，Ｔ）と表記する。ＭＣＵ３は、凸点Ａｓから一定画素数Ｎｐだけ離れて位置する２つの画素を結ぶ線分２３を求め、凸点Ａｓから線分２３に下ろした垂線２５の長さＬｖを算出する。ＭＣＵ３は、長さＬｖが、所定値ＣＬを超えている場合に、その凸点Ａｓを指先の候補とする。
【０１０３】
そして、ＭＣＵ３は、指先の候補とした凸点Ａｓの両側又は一方側に凹点Ｂｔが存在するか否かを判断し、存在する場合、その凸点Ａｓを指先とみなす。
【０１０４】
また、ＭＣＵ３は、「パー」及び「グー」を判定するのに必要な傾角θｖを算出する。傾角θｖは、指先とみなされた凸点Ａｓから線分２３に下ろした垂線２５が、差分画像のＸ軸と平行な線２７となす角である。
【０１０５】
図５に戻って、ステップＳ１６５にて、ＭＣＵ３は、輪郭画像の形状が「パー」をした手の形状であるか否かを判定する。ステップＳ１６７にて、ＭＣＵ３は、輪郭画像の形状が「チョキ」をした手の形状であるか否かを判定する。ステップＳ１６９にて、ＭＣＵ３は、輪郭画像の形状が「グー」をした手の形状であるか否かを判定する。ステップＳ１７１にて、ＭＣＵ３は、輪郭画像の形状が一本指を立てた手の形状であるか否かを判定してリターンする。
【０１０６】
図６は、図５のステップＳ１６１の輪郭情報を算出する処理の流れの一例を示すフローチャートである。図６を参照して、ステップＳ１９１にて、ＭＣＵ３は、変数ＸＧ，ＹＧ及びｊに０を代入する。ステップＳ１９３にて、ＭＣＵ３は、変数ＸＧの現在の値に輪郭線上の画素ＰｊのＸ座標ＸＯ［ｊ］を加算したものを、変数ＸＧに代入する。また、ＭＣＵ３は、変数ＹＧの現在の値に輪郭線上の画素ＰｊのＹ座標ＹＯ［ｊ］を加算したものを、変数ＸＧに代入する。ステップＳ１９５にて、ＭＣＵ３は、変数ｊを１つインクリメントする。ステップＳ１９７にて、ＭＣＵ３は、変数ｊの値が値Ｊになったか否かを判断し、値Ｊになった場合ステップＳ１９９に進み、それ以外はステップＳ１９３に進む。
【０１０７】
ステップＳ１９９にて、ＭＣＵ３は、変数ＸＧの値を値Ｊで除したものを、変数Ｘｇに代入する。また、ＭＣＵ３は、変数ＹＧの値を値Ｊで除したものを、変数Ｙｇに代入する。座標（Ｘｇ，Ｙｇ）は、輪郭画像の重心座標を示す。
【０１０８】
ステップＳ２０１にて、ＭＣＵ３は、変数ｊ，ＬＳ及びＬ［］に０を代入する。ステップＳ２０３にて、ＭＣＵ３は、次式により、重心座標（Ｘｇ，Ｙｇ）と輪郭線上の各画素Ｐｊの座標（ＸＯ［ｊ］，ＹＯ［ｊ］）との間の距離Ｌ［ｊ］を算出する。
【０１０９】
Ｌ［ｊ］←√（（Ｘｇ−ＸＯ［ｊ］）２＋（Ｙｇ−ＹＯ［ｊ］）２）
【０１１０】
ステップＳ２０５にて、ＭＣＵ３は、変数ＬＳの現在の値に変数Ｌ［ｊ］の値を加算したものを、変数ＬＳに代入する。ステップＳ２０７にて、ＭＣＵ３は、変数ｊを１つインクリメントする。ステップＳ２０９にて、ＭＣＵ３は、変数ｊの値が値Ｊになったか否かを判断し、値Ｊになった場合ステップＳ２１１に進み、それ以外はステップＳ２０３に進む。
【０１１１】
ステップＳ２１１にて、ＭＣＵ３は、変数ＬＳの値を値Ｊで除することにより、距離Ｌ［ｊ］の平均値ＡＶＬを算出する。ステップＳ２１３にて、ＭＣＵ３は、輪郭線及び輪郭線内の画素を計数して、輪郭画像の面積を算出してリターンする。
【０１１２】
図７は、図５のステップＳ１６３の指先を検出する処理の流れの一例を示すフローチャートである。図７を参照して、ステップＳ２４１にて、ＭＣＵ３は、変数ｊ及びＦＰ［］に０を代入する。ステップＳ２４３にて、ＭＣＵ３は、フラグＣＦ［ｊ］が凸点を示す０１にセットされているか否かを判断し、肯定的判断の場合ステップＳ２４５に進み、否定的判断の場合ステップＳ２４９に進む。
【０１１３】
ステップＳ２４５にて、ＭＣＵ３は、凸点である画素Ｐｊの両側又は一方側に、フラグＣＦ［ｊ］に凹点を示す１０がセットされている画素が存在するか否かを判断し、存在する場合画素Ｐｊを指先候補とみなしてステップＳ２４７に進み、存在しない場合ステップＳ２４９に進む。ステップＳ２４７にて、ＭＣＵ３は、フラグＦＰ［ｊ］に画素Ｐｊが指先候補であることを示す１をセットする。
【０１１４】
ステップＳ２４９にて、ＭＣＵ３は、変数ｊを１つインクリメントする。ステップＳ２５１にて、ＭＣＵ３は、変数ｊの値が値Ｊになったか否かを判断し、値Ｊになった場合ステップＳ２５３に進み、それ以外はステップＳ２４３に進む。
【０１１５】
ステップＳ２５３にて、ＭＣＵ３は、変数ｊ，ｑ，ＴＦ［］，θｖ［］，ＸＴ，ＹＴ，Ｑ及びθｖに０を代入する。ステップＳ２５５にて、ＭＣＵ３は、フラグＦＰ［ｊ］に指先候補を示す１がセットされているか否かを判断し、肯定的判断の場合ステップＳ２５７に進み、それ以外はステップＳ２７１に進む。
【０１１６】
ステップＳ２５７にて、ＭＣＵ３は、画素Ｐｊ＋Ｎｐと画素Ｐｊ−Ｎｐとを結ぶ線分２３に画素Ｐｊから下ろした垂線２５の長さＬｖを算出する（図１５参照）。ステップＳ２５９にて、ＭＣＵ３は、長さＬｖが所定値ＣＬを超えているか否かを判断し、超えている場合画素Ｐｊを指先とみなしてステップＳ２６１に進み、それ以外はステップＳ２７１に進む。
【０１１７】
ステップＳ２６１にて、ＭＣＵ３は、指先フラグＴＦ［ｊ］に画素Ｐｊが指先であることを示す１をセットする。ステップＳ２６３にて、ＭＣＵ３は、変数ＸＴ［ｑ］に画素ＰｊのＸ座標を代入する。また、ＭＣＵ３は、変数ＹＴ［ｑ］に画素ＰｊのＹ座標を代入する。座標（ＸＴ［ｑ］，ＹＴ［ｑ］）は、指先の座標である。ステップＳ２６５にて、ＭＣＵ３は、垂線２５の傾角θｖを算出する（図１５参照）。ステップＳ２６７にて、ＭＣＵ３は、変数θｖ［ｑ］に傾角θｖを代入する。傾角θｖ［ｑ］は、座標（ＸＴ［ｑ］，ＹＴ［ｑ］）で示される指先に対応する指の傾角である。ステップＳ２６９にて、ＭＣＵ３は、変数ｑを１つインクリメントする。
【０１１８】
ステップＳ２７１にて、ＭＣＵ３は、変数ｊを１つインクリメントする。ステップＳ２７３にて、ＭＣＵ３は、変数ｊの値が値Ｊになったか否かを判断し、値Ｊになった場合ステップＳ２７５に進み、それ以外はステップＳ２５５に進む。ステップＳ２７５にて、ＭＣＵ３は、変数Ｑに変数ｑの値を代入してリターンする。変数Ｑの値は、検出された指先の数を表す。
【０１１９】
図８は、図５のステップＳ１６５の「パー」を判定する処理の流れの一例を示すフローチャートである。図３を参照して、ステップＳ３０１にて、ＭＣＵ３は、変数Ｑの値（指先の数）が３以上か否かを判断し、３以上の場合ステップＳ３０３に進み、それ以外はリターンする。ステップＳ３０３にて、ＭＣＵ３は、変数ｑ及びｍに０を代入する。ステップＳ３０５にて、ＭＣＵ３は、配列θｖ［ｑ］と配列θｖ［ｑ＋１］との差の絶対値を算出し、変数θｄに代入する。変数θｄは、隣り合う指と指とがなす角度を表す。
【０１２０】
ステップＳ３０７にて、ＭＣＵ３は、変数θｄの値が１００度未満か否かを判断し、肯定的判断の場合ステップＳ３０９に進み、否定的判断の場合ステップＳ３１１に進む。ステップＳ３０９にて、ＭＣＵ３は、変数ｍを１つインクリメントする。ステップＳ３１１にて、ＭＣＵ３は、変数ｑを１つインクリメントする。
【０１２１】
ステップＳ３１３にて、ＭＣＵ３は、変数ｑの値が値Ｑになったか否かを判断し、値Ｑになった場合ステップＳ３１５に進み、それ以外はステップＳ３０５に進む。
【０１２２】
ステップＳ３１５では、ＭＣＵ３は、変数ｍの値が、６以下３以上であるか否かを判断し、肯定的判断の場合手の形状が「パー」であると判断してステップＳ３１７に進み、否定的判断の場合リターンする。変数ｍの値は、隣り合う指と指とがなす角度θｄが１００度未満のケースの発生回数である。ステップＳ３１７では、ＭＣＵ３は、フラグＳＨを「パー」を示す１０ｈにセットして、図３のステップＳ９に進む。
【０１２３】
図９は、図５のステップＳ１６７の「チョキ」を判定する処理の流れの一例を示すフローチャートである。図９を参照して、ステップＳ３４１にて、ＭＣＵ３は、変数Ｑの値（指先の数）が２又は３の場合ステップＳ３４３に進み、それ以外はリターンする。
【０１２４】
ステップＳ３４３にて、ＭＣＵ３は、変数ｑ，ｐ，ＳＨ，ＸＬ，ＹＬ，ＸＳ及びＹＳに０を代入する。ステップＳ３４５にて、ＭＣＵ３は、輪郭画像の重心座標（Ｘｇ，Ｙｇ）と指先の座標（ＸＴ［ｑ］，ＹＴ［ｑ］）との間の距離Ｌｇｔ０を算出する。ステップＳ３４７にて、ＭＣＵ３は、距離Ｌｇｔ０が平均値ＡＶＬ（図６のステップＳ２１１参照）に１．１を乗じたもの以上か否かを判断し、つまり、距離Ｌｇｔ０が平均値ＡＶＬの１１０％以上か否かを判断し、肯定的判断の場合ステップＳ３４９に進み、否定的判断の場合ステップＳ３５９に進む。
【０１２５】
ステップＳ３４９にて、ＭＣＵ３は、輪郭画像の重心座標（Ｘｇ，Ｙｇ）と指先の座標（ＸＴ［ｑ＋１］，ＹＴ［ｑ＋１］）との間の距離Ｌｇｔ１を算出する。座標（ＸＴ［ｑ＋１］，ＹＴ［ｑ＋１］）の指先は、座標（ＸＴ［ｑ］，ＹＴ［ｑ］）の指先の隣の指先である。ステップＳ３５１にて、ＭＣＵ３は、距離Ｌｇｔ１が値ＡＶＬに１．１を乗じたもの以上か否かを判断し、つまり、距離Ｌｇｔ１が平均値ＡＶＬの１１０％以上か否かを判断し、肯定的判断の場合ステップＳ３５３に進み、否定的判断の場合ステップＳ３５９に進む。
【０１２６】
ステップＳ３５３では、ＭＣＵ３は、配列θｖ［ｑ］と配列θｖ［ｑ＋１］との差の絶対値（つまり、隣あう指と指とがなす角度）を算出し、変数θｄに代入する。ステップＳ３５５にて、ＭＣＵ３は、変数θｄの値が９０度未満か否かを判断し、肯定的判断の場合ステップＳ３５７に進み、否定的判断の場合ステップＳ３５９に進む。ステップＳ３５７にて、ＭＣＵ３は、変数ｐを１つインクリメントする。
【０１２７】
ステップＳ３５９にて、ＭＣＵ３は、変数ｑを１つインクリメントする。ステップＳ３６１にて、ＭＣＵ３は、変数ｑの値が値Ｑになったか否かを判断し、値Ｑになった場合ステップＳ３６３に進み、それ以外はステップＳ３４５に進む。ステップＳ３６３にて、ＭＣＵ３は、変数ｐの値が１又は２の場合手の形状が「チョキ」と判断してステップＳ３６５に進み、それ以外はリターンする。
【０１２８】
ステップＳ３６５にて、ＭＣＵ３は、変数Ｑの値が２か否かを判断し、２の場合、つまり、検出された指が２本の場合、ステップＳ３６９に進み、それ以外はステップＳ３６７に進む。ステップＳ３６７では、ＭＣＵ３は、フラグＳＨを「チョキ」を示す２１ｈにセットして、図３のステップＳ９に進む。なお、値２１ｈは、３本の指が検出されたことになっているが、そのうち１本は指ではないノイズであることを示している。
【０１２９】
ステップＳ３６９では、ＭＣＵ３は、フラグＳＨを「チョキ」を示す２０ｈにセットする。なお、値２０ｈは、２本の指が検出され、ステップＳ３６７のようなノイズを含まないことを示している。ステップＳ３７１にて、ＭＣＵ３は、距離Ｌｇｔ０が距離Ｌｇｔ１より大きいか否かを判断し、つまり、検出された２本の指のどちらが長いか否かを判断し、距離Ｌｔｇ０が大きい場合ステップＳ３７３に進み、それ以外はステップＳ３７５に進む。
【０１３０】
ステップＳ３７３では、ＭＣＵ３は、座標ＸＬ及びＹＬにそれぞれ座標ＸＴ［０］及びＹＴ［０］を代入する。また、ＭＣＵ３は、座標ＸＳ及びＹＳにそれぞれ座標ＸＴ［１］及びＹＴ［１］を代入する。一方、ステップＳ３７５では、ＭＣＵ３は、座標ＸＬ及びＹＬにそれぞれ座標ＸＴ［１］及びＹＴ［１］を代入する。また、ＭＣＵ３は、座標ＸＳ及びＹＳにそれぞれ座標ＸＴ［０］及びＹＴ［０］を代入する。ここで、座標（ＸＬ，ＹＬ）は、長い指の指先の座標であり、座標（ＸＳ，ＹＳ）は、短い指の指先の座標である。
【０１３１】
ステップＳ３７７にて、ＭＣＵ３は、座標（ＸＬ，ＹＬ）及び座標（ＸＳ，ＹＳ）のそれぞれに対して、補正値を算出する。ステップＳ３７９にて、ＭＣＵ３は、座標（ＸＬ，ＹＬ）に、その補正値を加算して、補正後座標を求める。また、ＭＣＵ３は、座標（ＸＳ，ＹＳ）に、その補正値を加算して、補正後座標を求める。ステップＳ３８１にて、ＭＣＵ３は、座標（ＸＬ，ＹＬ）の補正後座標と座標（ＸＳ，ＹＳ）の補正後座標との中点座標を算出する。そして、ＭＣＵ３は、図３のステップＳ９に進む。
【０１３２】
図１０は、図５のステップＳ１６９の「グー」を判定する処理の流れの一例を示すフローチャートである。図１０を参照して、ステップＳ３９１にて、ＭＣＵ３は、変数Ｑの値（指先の数）が２以上か否かを判断して、肯定的判断の場合ステップＳ３９３に進み、否定的判断の場合リターンする。
【０１３３】
ステップＳ３９３にて、ＭＣＵ３は、変数ｊに０を代入する。ステップＳ３９５にて、ＭＣＵ３は、距離Ｌ［ｊ］（図６のステップＳ２０３参照）が、平均値ＡＶＬ（図６のステップＳ２１１参照）に０．６を乗じたもの以上であり、かつ、値ＡＶＬに１．４を乗じたもの以下であるか否かを判断し、つまり、距離Ｌ［ｊ］が、平均値ＡＶＬの６０％以上であり、かつ、平均値ＡＶＬの１４０％以下であるか否かを判断し、肯定的判断の場合ステップＳ３９７に進み、否定的判断の場合リターンする。
【０１３４】
ステップＳ３９７にて、ＭＣＵ３は、変数ｊを１つインクリメントする。ステップＳ３９９にて、ＭＣＵ３は、変数ｊの値が値Ｊになったか否かを判断し、値Ｊになった場合手の形状が「グー」と判断しステップＳ４０１に進み、それ以外はステップＳ３９５に進む。ステップＳ４０１にて、ＭＣＵ３は、フラグＳＨを「グー」を示す３０ｈにセットして、図３のステップＳ９に進む。
【０１３５】
図１１は、図５のステップＳ１７１の一本指を判定する処理の流れの一例を示すフローチャートである。図１１を参照して、ステップＳ４２１にて、ＭＣＵ３は、変数Ｑの値（指先の数）が１以下か否かを判断して、肯定的判断の場合ステップＳ４２３に進み、否定的判断の場合ステップＳ４４７に進む。ステップＳ４４７では、ＭＣＵ３は、フラグＳＨを「不定」を示す００ｈにセットしてリターンする。
【０１３６】
一方、ステップＳ４２３では、ＭＣＵ３は、変数ｊ，ｓ，Ｄｃ［］，Ｄｃａ及びＤｃｍに０を代入する。ステップＳ４２５にて、ＭＣＵ３は、フラグＦＰ［ｊ］に指先候補（つまり凸点）を示す１がセットされているか否かを判断し、肯定的判断の場合ステップＳ４２７に進み、それ以外はステップＳ４３３に進む。
【０１３７】
ステップＳ４２７では、ＭＣＵ３は、重心座標（Ｘｇ，Ｙｇ）と凸点の画素Ｐｊとの間の距離Ｄを算出する。ステップＳ４２９にて、ＭＣＵ３は、配列Ｄｃ［ｓ］に距離Ｄを代入する。ステップＳ４３１にて、ＭＣＵ３は、変数ｓを１つインクリメントする。ステップＳ４３３にて、ＭＣＵ３は、変数ｊを１つインクリメントする。ステップＳ４３５にて、ＭＣＵ３は、変数ｊの値が値Ｊになったか否かを判断し、値Ｊになった場合ステップＳ４３７に進み、それ以外はステップＳ４２５に進む。
【０１３８】
ステップＳ４３７にて、距離Ｄｃ［ｓ］の平均値Ｄｃａを算出する。つまり、平均値Ｄｃａは、重心から各凸点までの距離の平均値である。ステップＳ４３９にて、距離Ｄｃ［ｓ］から、最大値Ｄｃｍを検出する。つまり、最大値Ｄｃｍは、重心から各凸点までの距離のうち、最大のものである。ステップＳ４４１にて、ＭＣＵ３は、最大値Ｄｃｍが、平均値Ｄｃａに１．３を乗じた値以上か否かを判断し、肯定判断の場合一本の指が立った状態であるとみなしてステップＳ４４３に進み、否定判断の場合ステップＳ４４７に進む。
【０１３９】
ステップＳ４４３では、ＭＣＵ３は、フラグＳＨを「１本の指が立った状態」を示す４０ｈにセットする。ステップＳ４４５では、ＭＣＵ３は、座標ＸＨに、最大値Ｄｃｍに対応する凸点の画素ＰｊのＸ座標を代入する。また、ＭＣＵ３は、座標ＹＨに、最大値Ｄｃｍに対応する凸点の画素ＰｊのＹ座標を代入する。座標（ＸＨ，ＹＨ）は、立った状態の１本指の指先の座標である。ステップＳ４４７にて、ＭＣＵ３は、座標（ＸＨ，ＹＨ）の補正値（Ｘｃ，Ｙｃ）を計算する。ステップＳ４４９にて、ＭＣＵ３は、座標（ＸＨ，ＹＨ）に、その補正値（Ｘｃ，Ｙｃ）を加算し、補正後座標（Ｘｆ，Ｙｆ）を求める。そして、ＭＣＵ３は、リターンする。
【０１４０】
さて、次に、図９のステップＳ３７３及びＳ３７５で求めた指先を示す画素の座標（ＸＬ，ＹＬ）及び（ＸＳ，ＹＳ）、並びに、図１１のステップＳ４４５で求めた指先を示す画素の座標（ＸＨ，ＹＨ）を、イメージセンサ５の解像度を超える高精度で再計算する方法を説明する。以下では、再計算前の指先を示す画素Ｐ４の座標を、座標（Ｘｂ，Ｙｂ）と表記する。そして、下記のようにして、座標（Ｘｂ，Ｙｂ）の補正値（Ｘｃ，Ｙｃ）を求める。本実施の形態では、補正値の算出方法として、第１〜第４の例を挙げる。
【０１４１】
図１２（ａ）は、図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第１の例の流れを示すフローチャートである。図１２（ｂ）は、図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第２の例の流れを示すフローチャートである。図１２（ｃ）は、図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第３の例の流れを示すフローチャートである。図１２（ｄ）は、図９のステップＳ３７７及び図１１のステップＳ４４７の指先補正値計算処理の第４の例の流れを示すフローチャートである。
【０１４２】
図１６（ａ）は、図１２（ａ）及び図１２（ｃ）の指先補正値計算処理の説明図である。図１６（ｂ）は、図１２（ｂ）及び図１２（ｄ）の指先補正値計算処理の説明図である。
【０１４３】
図１６（ａ）及び図１６（ｂ）を参照して、補正前（再計算前）の指先画素Ｐ４の座標（Ｘｂ，Ｙｂ）を原点（０，０）とする。図中、水平右方向をｘ軸の正とし、垂直下方向をｙ軸の正とする。そして、補正前の指先画素Ｐ４を取り囲む８個の画素Ｐ０，Ｐ１，Ｐ２，Ｐ５，Ｐ６，Ｐ７及びＰ８を利用する。また、画素Ｐ０〜Ｐ８は、それぞれ、画素値（つまり輝度値）ｐ０〜ｐ８を有する。
【０１４４】
図１６（ａ）に示すように、第１及び第３の例では、原点（０，０）の指先画素Ｐ４の上下左右の画素Ｐ１，Ｐ７，Ｐ３及びＰ５の座標は、それぞれ、座標（０，−１），（０，１），（−１，０）及び（１，０）である。また、指先画素Ｐ４の左上画素Ｐ０、右上画素Ｐ２、左下画素Ｐ６及び右下画素Ｐ８の座標は、それぞれ、座標（−√２／２，−√２／２），（√２／２，−√２／２），（−√２／２，√２／２）及び（√２／２，√２／２）である。
【０１４５】
一方、図１６（ｂ）に示すように、第２及び第４の例では、原点（０，０）の指先画素Ｐ４の周囲画素Ｐ０，Ｐ１，Ｐ２，Ｐ５，Ｐ６，Ｐ７及びＰ８の座標は、それぞれ、座標（−１，−１）、（０，−１）、（１，−１）、（−１，０）、（１，０）、（−１，１）、（０，１）及び（１，１）である。
【０１４６】
なお、下記の数式中シンボル“＊”及び“／”は、それぞれ、乗算及び除算を示す。
【０１４７】
図１２（ａ）を参照して、第１の例では、ステップＳ３６１及びＳ３６３にて、ＭＣＵ３は、次式により、Ｘ座標Ｘｂの補正値Ｘｃ及びＹ座標Ｙｂの補正値Ｙｃを算出する。値Ｃｓは定数である。定数Ｃｓは１より大きい値である。
【０１４８】
Ｘｃ＝（Ａ／Ｃ）＊Ｃｓ
Ｙｃ＝（Ｂ／Ｃ）＊Ｃｓ
【０１４９】
Ａ＝−Ｒ＊ｐ０＋０＊ｐ１＋Ｒ＊ｐ２＋（−１）＊ｐ３＋０＊ｐ４＋１＊ｐ５＋（−Ｒ）＊ｐ６＋０＊ｐ７＋Ｒ＊ｐ８
Ｂ＝−Ｒ＊ｐ０＋（−１）＊ｐ１＋（−Ｒ）＊ｐ２＋０＊ｐ３＋０＊ｐ４＋０＊ｐ５＋Ｒ＊ｐ６＋１＊ｐ７＋Ｒ＊ｐ８
Ｃ＝ｐ０＋ｐ１＋ｐ２＋Ｐ３+ｐ４＋ｐ５＋ｐ６＋ｐ７＋ｐ８
Ｒ＝√２／２
【０１５０】
よって、補正後の指先のＸ座標Ｘｆ及びＹ座標Ｙｆは、次のようになる。
【０１５１】
Ｘｆ＝Ｘｂ＋Ｘｃ
Ｙｆ＝Ｙｂ＋Ｙｃ
【０１５２】
図１２（ｂ）を参照して、第２の例では、ステップＳ３７１及びＳ３７３にて、ＭＣＵ３は、次式により、Ｘ座標Ｘｂの補正値Ｘｃ及びＹ座標Ｙｂの補正値Ｙｃを算出する。値Ｃｓは定数である。
【０１５３】
Ｘｃ＝（Ｄ／Ｃ）＊Ｃｓ
Ｙｃ＝（Ｅ／Ｃ）＊Ｃｓ
【０１５４】
Ｄ＝−１＊ｐ０＋０＊ｐ１＋１＊ｐ２＋（−１）＊ｐ３＋０＊ｐ４＋１＊ｐ５＋（−１）＊ｐ６＋０＊ｐ７＋１＊ｐ８
Ｅ＝−１＊ｐ０＋（−１）＊ｐ１＋（−１）＊ｐ２＋０＊ｐ３＋０＊ｐ４＋０＊ｐ５＋１＊ｐ６＋１＊ｐ７＋１＊ｐ８
Ｃ＝ｐ０＋ｐ１＋ｐ２＋Ｐ３+ｐ４＋ｐ５＋ｐ６＋ｐ７＋ｐ８
【０１５５】
よって、補正後の指先のＸ座標Ｘｆ及びＹ座標Ｙｆは、次のようになる。
【０１５６】
Ｘｆ＝Ｘｂ＋Ｘｃ
Ｙｆ＝Ｙｂ＋Ｙｃ
【０１５７】
図１２（ｃ）を参照して、第３の例では、ステップＳ３８１及びＳ３８３にて、ＭＣＵ３は、次式により、Ｘ座標Ｘｂの補正値Ｘｃ及びＹ座標Ｙｂの補正値Ｙｃを算出する。値ｐｍａｘは、画素値ｐ０〜ｐ８のうちの最大値を示す。
【０１５８】
Ｘｃ＝Ａ／ｐｍａｘ
Ｙｃ＝Ｂ／ｐｍａｘ
【０１５９】
Ａ＝−Ｒ＊ｐ０＋０＊ｐ１＋Ｒ＊ｐ２＋（−１）＊ｐ３＋０＊ｐ４＋１＊ｐ５＋（−Ｒ）＊ｐ６＋０＊ｐ７＋Ｒ＊ｐ８
Ｂ＝−Ｒ＊ｐ０＋（−１）＊ｐ１＋（−Ｒ）＊ｐ２＋０＊ｐ３＋０＊ｐ４＋０＊ｐ５＋Ｒ＊ｐ６＋１＊ｐ７＋Ｒ＊ｐ８
Ｒ＝√２／２
【０１６０】
よって、補正後の指先のＸ座標Ｘｆ及びＹ座標Ｙｆは、次のようになる。
【０１６１】
Ｘｆ＝Ｘｂ＋Ｘｃ
Ｙｆ＝Ｙｂ＋Ｙｃ
【０１６２】
図１２（ｄ）を参照して、第４の例では、ステップＳ３９１及びＳ３９３にて、ＭＣＵ３は、次式により、Ｘ座標Ｘｂの補正値Ｘｃ及びＹ座標Ｙｂの補正値Ｙｃを算出する。値ｐｍａｘは、画素値ｐ０〜ｐ８のうちの最大値を示す。
【０１６３】
Ｘｃ＝Ｄ／ｐｍａｘ
Ｙｃ＝Ｅ／ｐｍａｘ
【０１６４】
Ｄ＝−１＊ｐ０＋０＊ｐ１＋１＊ｐ２＋（−１）＊ｐ３＋０＊ｐ４＋１＊ｐ５＋（−１）＊ｐ６＋０＊ｐ７＋１＊ｐ８
Ｅ＝−１＊ｐ０＋（−１）＊ｐ１＋（−１）＊ｐ２＋０＊ｐ３＋０＊ｐ４＋０＊ｐ５＋１＊ｐ６＋１＊ｐ７＋１＊ｐ８
【０１６５】
よって、補正後の指先のＸ座標Ｘｆ及びＹ座標Ｙｆは、次のようになる。
【０１６６】
Ｘｆ＝Ｘｂ＋Ｘｃ
Ｙｆ＝Ｙｂ＋Ｙｃ
【０１６７】
ここで、図９のステップＳ３７７の指先補正値算出処理では、ＭＣＵ３は、座標（ＸＬ，ＹＬ）及び（ＸＳ，ＹＳ）のそれぞれを指先Ｐ４の座標（Ｘｂ，Ｙｂ）として、それぞれの補正値を算出する。また、図１１のステップＳ４４７の指先補正値算出処理では、座標（ＸＨ，ＹＨ）を指先Ｐ４の座標（Ｘｂ，Ｙｂ）として、その補正値を算出する。
【０１６８】
図１６（ｂ）を参照しながら、上記第４の例について補足説明する。
【０１６９】
第４の例の上記式では、指先画素Ｐ４並びに周囲画素Ｐ０，Ｐ１，Ｐ２，Ｐ５，Ｐ６，Ｐ７及びＰ８の座標（０，０）、（−１，−１）、（０，−１）、（１，−１）、（−１，０）、（１，０）、（−１，１）、（０，１）及び（１，１）に、対応する画素値ｐ４，ｐ０，ｐ１，ｐ２，Ｐ３，ｐ５，ｐ６，ｐ７及びｐ８で重み付けをし、それらの和Ｄが算出される。そして、和Ｄを値ｐｍａｘで除することにより、補正値Ｘｃを求める。
【０１７０】
このようにして、小数点を持った精度の補正値Ｘｃが得られる。なお、座標Ｘｂは、画素単位で求められるので、整数値である。従って、座標Ｘｂに補正値Ｘｃを加えることにより、小数点精度の座標値を得ることができる。これらのことは同様にＹ座標についても言える。
【０１７１】
また、画素値による重み付けを行うことにより得られた補正値Ｘｃを、補正前のＸ座標Ｘｂに加えることにより、画素値（輝度値）の大きい側に、Ｘ座標Ｘｂを補正できる（画素値による重み付け）。このことは同様にＹ座標についても言える。つまり、偏角θｊから変曲点を求めることによって、手の輪郭線上の画素から、指先に相当する画素を特定し（図９のステップＳ３７３及びＳ３７５並びに図１１のステップＳ４４５）、さらに、画素値を加味することによって、輪郭線上で特定された画素の周囲で、より画素値の大きい位置に、指先の座標を補正している。なぜなら、画像に写り込んだ指の像のうち、その先端部分であって、さらに、画素値（輝度値）の大きい位置を、指先とみなすことにより、より適切に指先を特定できるからである。
【０１７２】
さらに、和Ｄを、画素値ｐ０〜ｐ８のうちの最大値ｐｍａｘで除している。つまり、除数を、固定値とするのではなく、変動値としている。これは、イメージセンサ５から手までの距離は、一定ではないからである。つまり、イメージセンサ５から手までの距離が近い場合は、画像に指は大きく写り込み、一方、イメージセンサ５から手までの距離が遠い場合は、画像には指は小さく写り込むので、補正値Ｘｃを、イメージセンサ５から手までの遠近に応じて、適切な値に設定するためである。補正値Ｙｃについても同様である。
【０１７３】
例えば、除数を固定値とする場合、その固定値が小さすぎると、イメージセンサ５から手までの距離が遠い場合は比較的妥当な値になるかもしれないが、近い場合は、補正値が大きくなりすぎてしまう。また、逆に、除数を固定値とする場合、その固定値が大きすぎると、イメージセンサ５から手までの距離が近い場合は比較的妥当な値になるかもしれないが、遠い場合は、補正値が小さくなりすぎてしまう。また、イメージセンサ５から手までの距離が遠い場合と近い場合の双方に適切な除数を、固定値として設定することは困難である。なぜなら、同じ距離で同じ指を撮影する場合であっても、イメージセンサ５が設置される環境（照明や外光など）によって、画素値（輝度値）は異なってくるし、また、指の色彩、輪郭、及び表面の形状等も人によって異なるからである。
【０１７４】
また、値Ｃ（＝ｐ０＋ｐ１＋ｐ２＋Ｐ３+ｐ４＋ｐ５＋ｐ６＋ｐ７＋ｐ８）で除することにより、加重平均をとることもできる。しかし、次の理由により、除数は、値Ｃではなく、最大値ｐｍａｘとするほうが好ましい。
【０１７５】
図１７を参照して、一般的に、実際の人間の指先３０は、平面視において、ある点を頂点（「実頂点」と呼ぶ。）３２として、円弧状となっている。一方、本実施の形態のように、比較的低解像度の画像から指の輪郭を検出し、指先を決定する場合、常に実頂点３２を指先として検出することは困難である。従って、検出される指先は、実頂点３２であったり、実頂点３２の左の点３４になったり、右の点３６になったりする。
【０１７６】
この場合、和Ｄを値Ｃで除して補正値とすると、その補正値は、図１６（ｂ）の画素Ｐ４を中心とした９×９画素の範囲を超えることができない。和Ｅについても同様である。このため、例えば、図１７の実頂点３２の補正後の位置は点３８、点３４の補正後の位置は点４０、点３６の補正後の位置は点４２となる。このように、補正後の指先の位置は、これら３つの点で異なっている。同じ指先を検出するのに、異なった部分を指先と認識したのでは、検出された指先位置に配置されるカーソルが安定しない。
【０１７７】
そこで、輪郭から求めた指先が、一定していな場合でも、補正後の位置を極力一定させるため、あるいは、指先の位置の相違を極力小さい範囲に収めるため、最大値ｐｍａｘで和Ｄ及びＥを除して、補正値を、９×９画素の範囲を越えるようにし、補正後の位置が、図１７の点４４、つまり、指先端部３０の腹の中心付近に集まるようにした。
【０１７８】
図１６（ａ）を参照しながら、上記第１の例について補足説明する。この例では、第４の例と異なり、画素Ｐ０，Ｐ２，Ｐ６及びＰ８の重み付けの対象を、それぞれ、座標（−√２／２，−√２／２），（√２／２，−√２／２），（−√２／２，√２／２）及び（√２／２，√２／２）とした。これは次の理由による。
【０１７９】
補正前の指先画素Ｐ４の中心からの距離を、全周囲画素で同じ値として、画素値を重みとするに当って、全画素値を均等に扱うためである。例えば、画素Ｐ４と画素Ｐ５との間の距離は「１」であるが、画素Ｐ２の座標を（１，−１）として計算すると、画素Ｐ４と画素Ｐ２との間の距離は、「√２」となってしまい、周囲画素の位置によって不均衡が発生する。補正前の指先画素Ｐ４の中心からの距離を、全周囲画素で同じ値とすることにより、補正値を方向によって偏りのないものとすることができる。
【０１８０】
また、この例では、Ａ／Ｃ及びＢ／Ｃに定数Ｃｓを乗じている。これは、第４の例で、除数を値Ｃとせず、加重平均をとらなかった理由と同じである。つまり、輪郭から求めた指先が、一定していな場合でも、補正後の位置を極力一定させるため、あるいは、指先の位置の相違を極力小さい範囲に収めるため、定数Ｃｓを乗じて、補正値を、９×９画素の範囲を越えるようにし、補正後の位置が、図１７の点４４に集まるようにしたのである。なお、定数Ｃｓを乗ずることなしにＡ／Ｃ及びＢ／Ｃを補正値とすることもできる。
【０１８１】
ここで、定数Ｃｓは、実験及び試行錯誤等により決定される。また、定数Ｃｓを、検出された指の幅に応じて動的に変更することもできる。例えば、画像から指の幅を算出し、その幅に所定数（小数値）を乗じることにより、定数Ｃｓを決定する。この所定数は、実験及び試行錯誤等により決定される。例えばこの所定数は２／３である。なお、例えば、補正前の指先画素の左右それぞれに一定画素数離れた左右の画素間の距離を求め、それを指の幅とする。
【０１８２】
また、和Ａ及びＢをそれぞれ値Ｃで除して加重平均をとるのは、小数点を持った精度の補正値Ｘｃ及びＹｃを得るためである。なお、座標Ｘｂは、画素単位で求められるので、整数値である。従って、座標Ｘｂに補正値Ｘｃを加えることにより、小数点精度の座標値を得ることができる。これらのことは同様にＹ座標についても言える。
【０１８３】
さらに、画素値による重み付けを行う理由は、第４の例と同様である。
【０１８４】
上記第２の例について補足説明する。定数Ｃｓを乗じる理由、加重平均をとる理由、及び、画素値による重み付けを行なう理由は、第１の例と同じである。
【０１８５】
上記第３の例について補足説明する。和Ａ及びＢをそれぞれ最大値ｐｍａｘで除して加重平均をとるのは、小数点を持った精度の補正値Ｘｃ及びＹｃを得るためである。なお、座標Ｘｂは、画素単位で求められるので、整数値である。従って、座標Ｘｂに補正値Ｘｃを加えることにより、小数点精度の座標値を得ることができる。これらのことは同様にＹ座標についても言える。
【０１８６】
また、画素Ｐ０，Ｐ２，Ｐ６及びＰ８の重み付けの対象を、それぞれ、座標（−√２／２，−√２／２），（√２／２，−√２／２），（−√２／２，√２／２）及び（√２／２，√２／２）とした理由は、第１の例と同じである。
【０１８７】
さらに、画素値による重み付けを行う理由、除数を変動値とした理由、及び、最大値ｐｍａｘで除し加重平均をとらない理由は、第４の例と同様である。
【０１８８】
図１３（ａ）は、図３のステップＳ９の擬似ボタン操作判定処理の第１の例の流れを示すフローチャートである（図１（ｂ）の第１の例に対応）。図１３（ａ）を参照して、ステップＳ６２１にて、ＭＣＵ３は、擬似的なボタン操作の有無を示す擬似ボタンフラグをオフにする。ステップＳ６２３にて、ＭＣＵ３は、手の形状を示す今回のフラグＳＨに４０ｈがセットされているか否かを判断し、４０ｈがセットされている場合（つまり、「１本指」の状態）、ステップＳ６２７に進み、それ以外はリターンする。
【０１８９】
ステップＳ６２７では、ＭＣＵ３は、手の形状を示す前回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ６２９に進み、それ以外はリターンする。ステップＳ６２９では、ＭＣＵ３は、擬似的にボタン操作が行なわれたことを示すため、擬似ボタンフラグをオンにする。
【０１９０】
図１３（ｂ）は、図３のステップＳ９の擬似ボタン操作判定処理の第２の例の流れを示すフローチャートである（図１（ｂ）の第２の例に対応）。図１３（ｂ）を参照して、ステップＳ６０１にて、ＭＣＵ３は、擬似的なボタン操作の有無を示す擬似ボタンフラグをオフにする。ステップＳ６０３にて、ＭＣＵ３は、手の形状を示す今回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ６０７に進み、それ以外はリターンする。
【０１９１】
ステップＳ６０７では、ＭＣＵ３は、手の形状を示す前回のフラグＳＨに４０ｈがセットされているか否かを判断し、４０ｈがセットされている場合（つまり、「１本指」の状態）、ステップＳ６０９に進み、それ以外はリターンする。ステップＳ６０９では、ＭＣＵ３は、擬似的にボタン操作が行なわれたことを示すため、擬似ボタンフラグをオンにする。
【０１９２】
図１３（ｃ）は、図３のステップＳ９の擬似ボタン操作判定処理の第３の例の流れを示すフローチャートである（図１（ｂ）の第３の例に対応）。図１３（ｃ）を参照して、ステップＳ６４１にて、ＭＣＵ３は、擬似的なボタン操作の有無を示す擬似ボタンフラグをオフにする。ステップＳ６４３にて、ＭＣＵ３は、手の形状を示す今回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ６４５に進み、それ以外はリターンする。
【０１９３】
ステップＳ６４５では、ＭＣＵ３は、補正後の一方の指先の座標と、補正後の他方の指先の座標と、の間の距離ＤＣを算出する。ステップＳ６４７にて、ＭＣＵ３は、距離ＤＣが一定値ＣＣより小さいか否かを判断し、小さい場合一方指先が他方指先に近づいたと判断してステップＳ６４９に進み、それ以外はリターンする。ステップＳ６４９にて、ＭＣＵ３は、擬似的にボタン操作が行なわれたことを示すため、擬似ボタンフラグをオンにする。
【０１９４】
ここで、図１３（ａ）〜図１３（ｃ）及び後述の図１８（ａ）〜図１８（ｃ）において、今回のフラグＳＨとは、イメージセンサ５から今回受け取った１フレームの画像データに基づき設定されたフラグを意味する。また、前回のフラグＳＨとは、イメージセンサ５から前回受け取った１フレームの画像データに基づき設定されたフラグを意味する。
【０１９５】
また、図１３（ａ）〜図１３（ｃ）は、擬似的にボタン操作が行われたと判定されたこと（つまり、擬似ボタンフラグのオン）を、クリック操作（ボタンを押下して放す操作）が行なわれたとみなす場合の処理例を示している。
【０１９６】
次に、図１８（ａ）〜図１８（ｃ）を参照して、擬似的にボタン操作が行われたと判定されたこと（つまり、擬似ボタンフラグのオン）を、ボタンのプレス操作（ボタンを押したままの状態）が行なわれたとみなす処理例を説明する。なお、擬似ボタンフラグのオフは、ボタンを放した状態とみなされる。
【０１９７】
図１８（ａ）は、図３のステップＳ９の擬似ボタン操作判定処理の第４の例の流れを示すフローチャートである（図１（ｂ）の第１の例に対応）。図１８（ａ）を参照して、ステップＳ７０１にて、ＭＣＵ３は、擬似的なボタン操作の有無を示す擬似ボタンフラグがオンか否かを判断し、オンの場合ステップＳ７０９に進み、オフの場合ステップＳ７０３に進む。なお、擬似ボタンフラグは、システム初期化時にオフにセットされるものとする。
【０１９８】
ステップＳ７０３にて、ＭＣＵ３は、手の形状を示す今回のフラグＳＨに４０ｈがセットされているか否かを判断し、４０ｈがセットされている場合（つまり、「１本指」の状態）、ステップＳ７０５に進み、それ以外はリターンする。
【０１９９】
ステップＳ７０５では、ＭＣＵ３は、手の形状を示す前回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ７０７に進み、それ以外はリターンする。ステップＳ７０７では、ＭＣＵ３は、擬似的にボタンがプレスされたことを示すため、擬似ボタンフラグをオンにする。
【０２００】
一方、ステップＳ７０９では、ＭＣＵ３は、今回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ７１１に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。ステップＳ７１１では、ＭＣＵ３は、擬似的にボタンが放されたことを示すため、擬似ボタンフラグをオフにする。
【０２０１】
図１８（ｂ）は、図３のステップＳ９の擬似ボタン操作判定処理の第５の例の流れを示すフローチャートである（図１（ｂ）の第２の例に対応）。図１８（ｂ）を参照して、ステップＳ７３１にて、ＭＣＵ３は、擬似的なボタン操作の有無を示す擬似ボタンフラグがオンか否かを判断し、オンの場合ステップＳ７３９に進み、オフの場合ステップＳ７３３に進む。なお、擬似ボタンフラグは、システム初期化時にオフにセットされるものとする。
【０２０２】
ステップＳ７３３にて、ＭＣＵ３は、手の形状を示す今回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ７３５に進み、それ以外はリターンする。
【０２０３】
ステップＳ７３５では、ＭＣＵ３は、手の形状を示す前回のフラグＳＨに４０ｈがセットされているか否かを判断し、４０ｈがセットされている場合（つまり、「１本指」の状態）、ステップＳ７３７に進み、それ以外はリターンする。ステップＳ７３７では、ＭＣＵ３は、擬似的にボタンがプレスされたことを示すため、擬似ボタンフラグをオンにする。
【０２０４】
一方、ステップＳ７３９では、ＭＣＵ３は、今回のフラグＳＨに４０ｈがセットされているか否かを判断し、４０ｈがセットされている場合（つまり、「一本指」の状態）、ステップＳ７４１に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。ステップＳ７４１では、ＭＣＵ３は、擬似的にボタンが放されたことを示すため、擬似ボタンフラグをオフにする。
【０２０５】
図１８（ｃ）は、図３のステップＳ９の擬似ボタン操作判定処理の第６の例の流れを示すフローチャートである（図１（ｂ）の第３の例に対応）。図１８（ｃ）を参照して、ステップＳ７６１にて、ＭＣＵ３は、擬似的なボタン操作の有無を示す擬似ボタンフラグがオンか否かを判断し、オンの場合ステップＳ７７１に進み、オフの場合ステップＳ７６３に進む。なお、擬似ボタンフラグは、システム初期化時にオフにセットされるものとする。
【０２０６】
ステップＳ７６３にて、ＭＣＵ３は、手の形状を示す今回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ７６５に進み、それ以外はリターンする。
【０２０７】
ステップＳ７６５では、ＭＣＵ３は、補正後の一方の指先の座標と、補正後の他方の指先の座標と、の間の距離ＤＣを算出する。ステップＳ７６７にて、ＭＣＵ３は、距離ＤＣが一定値ＣＣより小さいか否かを判断し、小さい場合一方指先が他方指先に近づいたと判断してステップＳ７６９に進み、それ以外はリターンする。ステップＳ７６９にて、ＭＣＵ３は、擬似的にボタンのプレスが行なわれたことを示すため、擬似ボタンフラグをオンにする。
【０２０８】
一方、ステップＳ７７１にて、ＭＣＵ３は、今回のフラグＳＨに２０ｈがセットされているか否かを判断し、２０ｈがセットされている場合（つまり、「チョキ」の状態）、ステップＳ７７３に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。
【０２０９】
ステップＳ７７３では、ＭＣＵ３は、補正後の一方の指先の座標と、補正後の他方の指先の座標と、の間の距離ＤＣを算出する。ステップＳ７７５にて、ＭＣＵ３は、距離ＤＣが一定値ＣＣ以上か否かを判断し、ＣＣ以上の場合擬似的にボタンが放されたとみなしてステップＳ７７７に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。ステップＳ７７７にて、ＭＣＵ３は、擬似的にボタンが放されたことを示すため、擬似ボタンフラグをオフにする。
【０２１０】
ところで、上記では、図１（ｂ）を参照して、擬似ボタン操作の第１〜第３の例を説明した。以下では、擬似ボタン操作の第４の例を説明する。この第４の例では、シングルクリック及びダブルクリックの判定を行なう。
【０２１１】
図１９（ａ）は、本発明の実施の形態による擬似ボタン操作の第４の例（シングルクリック）の説明図である。図１９（ａ）を参照して、一定時間ＴＣ以内に、ステップＳ２０００〜Ｓ２００４の変化が検出された場合に、シングルクリックが行なわれたとみなす。
【０２１２】
具体的には、指先５０が大体静止した状態になった場合に、最新の指先５０を中心とした矩形範囲（例えば３画素×３画素）５２を設定する（ステップＳ２０００）。例えば、最新の指先５０から一定距離ＲＤ内に過去所定数分の指先５０が存在する場合に、指先５０が大体静止した状態であると判断される。
【０２１３】
この矩形範囲５２の設定から一定時間ＴＣ以内に、矩形範囲５２から指先５０が消失し（出て）、矩形範囲５２に指先５０が存在しない状態になり（ステップＳ２００２）、そして、再び、矩形範囲５２に指先５０が出現し（入って）、矩形範囲５２に指先５０が存在する状態になった時に（ステップＳ２００４）、シングルクリックが行なわれたとみなす。例えば、矩形範囲５２内の画素値（輝度値）の合計値を、所定の閾値と比較して、合計値が閾値を超えていれば矩形範囲５２に指先５０が存在すると判断し、一方、合計値が閾値以下の場合に矩形範囲５２に指先５０が存在しないと判断する。
【０２１４】
なお、例えば、ユーザが、一定時間ＴＣ以内に、人差し指を伸ばした状態から、人差し指の第３関節（付け根の関節）を曲げて指を折り、再び、元の状態（人差し指を伸ばした状態）に戻すというジェスチャを行なった時に、シングルクリックが行なわれたとみなされる。この場合、第１及び第２関節の状態は任意である。また、例えば、ユーザが、一定時間ＴＣ以内に、人差し指を伸ばした状態から、人差し指の第２関節を曲げて指を折り（第３関節は固定）、再び、元の状態（人差し指を伸ばした状態）に戻すというジェスチャを行なった時に、シングルクリックが行なわれたとみなされる。この場合、第１関節の状態は任意である。ここで、指先に一番近い関節を第１関節、その次の関節を第２関節、さらにその次の関節を第３関節と呼んでいる。
【０２１５】
この例のような人のジェスチャでは、指が曲げられた後、指先が、ほぼ元の位置に戻ることが、本願発明者の実験により検証されている。このため、図１９（ａ）で説明した手法により、シングルクリックが行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できるのである。
【０２１６】
図１９（ｂ）は、本発明の実施の形態による擬似ボタン操作の第４の例（ダブルクリック）の説明図である。図１９（ｂ）を参照して、一定時間ＴＣ以内に、ステップＳ２１００〜Ｓ２１０８の変化が検出された場合に、ダブルクリックが行なわれたとみなす。この場合の一定時間ＴＣは、シングルクリックを判定するときの一定時間ＴＣと同じである。
【０２１７】
具体的には、指先５０が大体静止した状態になった場合に、最新の指先５０を中心とした矩形範囲（例えば３画素×３画素）５２を設定する（ステップＳ２１００）。指先５０が大体静止した状態の判断方法は、シングルクリックの場合と同じである。
【０２１８】
この矩形範囲５２の設定から一定時間ＴＣ以内に、矩形範囲５２から指先５０が消失し（出て）、矩形範囲５２に指先５０が存在しない状態になり（ステップＳ２１０２）、そして、再び、矩形範囲５２に指先５０が出現し（入って）、矩形範囲５２に指先５０が存在する状態になり（ステップＳ２１０４）、再び、矩形範囲５２から指先５０が消失し（出て）、矩形範囲５２に指先５０が存在しない状態になり（ステップＳ２１０６）、そして、再び、矩形範囲５２に指先５０が出現し（入って）、矩形範囲５２に指先５０が存在する状態になった時に（ステップＳ２１０８）、ダブルクリックが行なわれたとみなす。矩形範囲５２に指先５０が存在するか否かの判断は、シングルクリックの場合と同じである。
【０２１９】
なお、ダブルクリックは、上記のシングルクリックのジェスチャをユーザが２回行なうことで実行される。また、ダブルクリックは、シングルクリックを２回行なうものであり、それ故、折り曲げられた指先は、２回とも、ほぼ同じ位置に戻ってくる。この点も本願発明者により検証されている。このため、図１９（ｂ）で説明した手法により、ダブルクリックが行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できるのである。
【０２２０】
図２０及び図２１は、図３のステップＳ９の擬似ボタン操作判定処理の第７の例の流れを示すフローチャートである（図１９（ａ）及び図１９（ｂ）の第４の例に対応）。図２０を参照して、ステップＳ１２００にて、ＭＣＵ３は、シングルクリックが行なわれたとみなす時にオンにセットされるシングルクリックフラグと、ダブルクリックが行なわれたとみなす時にオンにセットされるダブルクリックフラグと、をオフにする。
【０２２１】
ステップＳ１２０２にて、ＭＣＵ３は、滞在フラグがオンか否かを判断し、オンの場合図２１のステップＳ１２５０に進み、オフの場合ステップＳ１２０４に進む。滞在フラグは、指先５０が大体静止した状態になったと判断された時に、つまり、図１９（ａ）及び図１９（ｂ）の矩形範囲５２が設定された時にオンにセットされるフラグである。従って、ステップＳ１２０２で否定判断がされた後のステップＳ１２０４〜Ｓ１２２０の処理は、矩形範囲５２を設定するための処理である。一方、ステップＳ１２０２で肯定判断がされた後のステップＳ１２５０〜Ｓ１２８４の処理は、図１９（ａ）及び図１９（ｂ）のステップＳ２００２，Ｓ２００４，Ｓ２１０２〜Ｓ２１０８の状態を判断するための処理である。
【０２２２】
ステップＳ１２０４にて、ＭＣＵ３は、変数ｋに０をセットする。ステップＳ１２０６にて、ＭＣＵ３は、最新の指先５０と、過去の指先５０と、の間の距離ＤＩＳを算出する。距離ＤＩＳは次式により算出される。
【０２２３】
ＤＩＳ＝√（ＸＤ２＋ＹＤ２）
ＸＤ＝Ｘｆ［０］−Ｘｆ［ｋ＋１］
ＹＤ＝Ｙｆ［０］−Ｙｆ［ｋ＋１］
【０２２４】
ここで、図１１のステップＳ４４９では、補正後の指先５０の座標（Ｘｆ，Ｙｆ）を計算する。この場合、補正後の指先５０の座標（Ｘｆ，Ｙｆ）は、キューに格納され、現在及び過去の計Ｎ個のデータが保存される（Ｎは２以上の整数。本実施の形態ではＮ＝１０）。キューは、Ｘ座標Ｘｆを代入する配列Ｘｆ［０］〜Ｘｆ［９］及びＹ座標Ｙｆを代入する配列Ｙｆ［０］〜Ｙｆ［９］により構成される。配列Ｘｆ［０］及びＹｆ［０］に常に最新の座標（Ｘｆ，Ｙｆ）が格納される。
【０２２５】
従って、ステップＳ１２０６では、最新の指先５０の座標（Ｘｆ［０］，Ｙｆ［０］）と、それより（ｋ＋１）個だけ過去の指先５０の座標（Ｘｆ［ｋ＋１］，Ｙｆ［ｋ＋１］）と、の間の距離ＤＩＳが計算される。
【０２２６】
そして、ステップＳ１２０８にて、ＭＣＵ３は、距離ＤＩＳが、一定距離ＲＤより小さいか否かを判断し、小さい場合ステップＳ１２１０に進み、それ以外は指先５０が静止した状態にないと判断してステップＳ１２２０に進む。ステップＳ１２１０にて、ＭＣＵ３は、変数ｋを１つインクリメントする。ステップＳ１２１２にて、ＭＣＵ３は、変数ｋの値が９になったか否かを判断し、９になった場合ステップＳ１２１４に進み、それ以外はステップＳ１２０６に戻る。
【０２２７】
ステップＳ１２１２でｋ＝９が判断されたことは、最新の指先５０と過去９個の指先５０それぞれとの間の距離全てが、一定距離ＲＤ内に存在することを意味する。つまり、指先５０が大体静止した状態にあることを意味する。このため、ステップＳ１２１４では、ＭＣＵ３は、滞在フラグをオンにする。一方、距離ＤＩＳが一定距離ＲＤ内にない過去の指先５０が１つでも存在する場合は、指先５０が静止した状態にないと判断する。このため、ステップＳ１２２０では、ＭＣＵ３は、滞在フラグをオフにしてリターンする。
【０２２８】
ステップＳ１２１４の次のステップＳ１２１６にて、ＭＣＵ３は、最新の指先５０の座標（Ｘｆ［０］，Ｙｆ［０］）を中心とした矩形範囲５２を設定する（図１９（ａ）のステップＳ２０００及び図１９（ｂ）のステップＳ２１００に相当）。そして、ステップＳ１２１８にて、ＭＣＵ３は、タイマＴＭをセットしてリターンする。このタイマＴＭは、上記一定時間ＴＣ（図１９（ａ）及び図１９（ｂ）参照）を計測するためのものである。この一定時間ＴＣは、実験及び試行錯誤等により、決定される。
【０２２９】
図２１を参照して、ステップＳ１２５０にて、ＭＣＵ３は、タイマＴＭの値が一定時間ＴＣになったか否かを判断し、一定時間ＴＣになった場合ステップＳ１２７８に進み、一定時間になっていない場合ステップＳ１２５２に進む。
【０２３０】
ステップＳ１２５２にて、ＭＣＵ３は、消失フラグがオンか否かを判断し、オンの場合ステップＳ１２６２に進み、オフの場合ステップＳ１２５４に進む。消失フラグは、矩形範囲５２に指先５０が存在する状態から存在しない状態に変化したときにオンにされるフラグである。
【０２３１】
ステップＳ１２５４では、ＭＣＵ３は、矩形範囲５２に指先５０が不存在か否かを判断し、存在する場合リターンし、不存在の場合ステップＳ１２５６に進む。ステップＳ１２５６にて、ＭＣＵ３は、消失フラグをオンにしてリターンする（図１９（ａ）のステップＳ２００２並びに図１９（ｂ）のステップＳ２１０２及びＳ２１０６に相当）。
【０２３２】
消失フラグがオンの場合、ステップＳ１２６２にて、ＭＣＵ３は、矩形範囲５２に指先５０が存在するか否かを判断し、存在しない場合リターンし、存在する場合ステップＳ１２６４に進む（図１９（ａ）のステップＳ２００４並びに図１９（ｂ）のステップＳ２１０４及びＳ２１０８に相当）。
【０２３３】
ステップＳ１２６４では、ＭＣＵ３は、仮クリックフラグがオンか否かを判断し、オンの場合ステップＳ１２７２に進み、オフの場合ステップＳ１２６６に進む。仮クリックフラグは、ユーザのジェスチャがシングルクリックの条件（図１９（ａ）のステップＳ２０００〜Ｓ２００４）を満たしたときにオンにされるフラグである。ただし、ダブルクリックはシングルクリックの動作を含むので（図１９（ｂ）のステップＳ２１００〜Ｓ２１０４）、一定時間ＴＣが経過するまでは、ダブルクリックが行なわれる可能性もある。このため、一定時間ＴＣの経過後に、シングルクリックかダブルクリックかを最終決定する必要がある。それ故、シングルクリックの条件が満たされた時、仮クリックフラグにより、最終決定まで、その事実を保持しておくのである。
【０２３４】
ステップＳ１２６６では、ＭＣＵ３は、シングルクリックの条件が満足されたので、仮クリックフラグをオンにする。そして、ステップＳ１２６８にて、ＭＣＵ３は、消失フラグをオフにしてリターンする。なぜなら、ステップＳ１２６２で肯定判断がされているからである。
【０２３５】
一方、ステップＳ１２７２にて、ＭＣＵ３は、ダブルクリックフラグをオンにする。なぜなら、仮クリックフラグがオンである状態において、さらに、図１９（ｂ）のステップＳ２１０６，Ｓ２１０８の変化が検出されたからである（ステップＳ１２６４にて肯定判断、ステップＳ１２５２にて肯定判断、ステップＳ１２６２にて肯定判断）。ステップＳ１２７４にて、ＭＣＵ３は、タイマＴＭを解除する。ステップＳ１２７６にて、ＭＣＵ３は、滞在フラグ、消失フラグ及び仮クリックフラグをオフにしてリターンする。なぜなら、ダブルクリックが決定されているため、これが最終決定だからである。なお、滞在フラグのオフは、矩形範囲５２の解除、つまり、クリック操作判定のリセットに相当する。
【０２３６】
さて、ステップＳ１２５０にて肯定判断がされた後、ＭＣＵ３は、最終決定を行なうべく、ステップＳ１２７８に進む。ステップＳ１２７８にて、ＭＣＵ３は、仮クリックフラグがオンか否かを判断し、オンの場合ステップＳ１２８０に進み、オフの場合シングルクリックもダブルクリックも行なわれていないためステップＳ１２８２に進む。ステップＳ１２８０では、ＭＣＵ３は、シングルクリックフラグをオンにしてステップＳ１２８２に進む。
【０２３７】
ステップＳ１２８２にて、ＭＣＵ３は、タイマＴＭを解除する。ステップＳ１２８４にて、ＭＣＵ３は、滞在フラグ、消失フラグ及び仮クリックフラグをオフにしてリターンする。なお、滞在フラグのオフは、矩形範囲５２の解除、つまり、クリック操作判定のリセットに相当する。
【０２３８】
なお、シングルクリックフラグ及びダブルクリックフラグは、図３のステップＳ１１にて、コンピュータ１１に送信される。
【０２３９】
さて、以上のように、本実施の形態によれば、ユーザは、１本指を立てた状態から、もう一本の指を立てて２本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる（図１（ｂ）の第１の例）。
【０２４０】
また、擬似的なボタン操作の前後において、常に１本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる（図１（ｂ）の第１の例）。
【０２４１】
また、本実施の形態によれば、ユーザは、２本指を立てた状態から、もう一本の指を閉じて１本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる（図１（ｂ）の第２の例）。
【０２４２】
また、擬似的なボタン操作の前後において、常に１本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる（図１（ｂ）の第２の例）。
【０２４３】
さらに、本実施の形態によれば、ユーザは、２本の指の指先を近づけるだけで、擬似的なボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる（図１（ｂ）の第３の例）。
【０２４４】
また、検出された２つの指先の間（例えば中点）にカーソルを表示することができ、ポインティングと擬似的なボタン操作を片手で行なうことができる（図１（ｂ）の第３の例）。
【０２４５】
さらに、本実施の形態によれば、ユーザは、三次元空間中で、１本指を立てた状態から、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、非接触のクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、クリック操作を行なうことができる（図１９（ａ）の第４の例）。
【０２４６】
このような人のジェスチャでは、指が曲げられた後、指先が、ほぼ元の位置に戻ることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、クリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
【０２４７】
さらに、本実施の形態によれば、ユーザは、三次元空間中で、１本指を立てた状態から、その指を折って、再び、元の立てた状態に戻し、さらに、再び、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、つまり、シングルクリック操作のためのジェスチャを２回行なうだけで、非接触のダブルクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、ダブルクリック操作を行なうことができる（図１９（ｂ）の第４の例）。
【０２４８】
このようなダブルクリック操作は、シングルクリック操作を２回行うものであるところ、折り曲げられた指先は、２回とも、ほぼ同じ位置に戻ってくることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、ダブルクリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
【０２４９】
また、本実施の形態では、ＭＣＵ３は、指先５０の動きが一定範囲ＤＩＳ内に収まっている場合に（図２０のステップＳ１２０８及びＳ１２１２で肯定判断）、ユーザがクリック操作（シングルクリック又はダブルクリック）を行なうことを意図しているとみなし、矩形範囲５２を設定し（図２０のステップＳ１２１６）、これをトリガとして、ユーザがクリック操作に対応するジェスチャを行ったか否かを判定できる。このため、ユーザが当該ジェスチャを行なったか否かを、常に判定する必要がなく、処理負荷を軽減できる。
【０２５０】
さらに、ＭＣＵ３は、矩形範囲５２が設定されてから所定時間ＴＣ内に、指先５０が矩形範囲５２から消失したと判断しない場合（図２１のステップＳ１２５４）、又は、矩形範囲５２に指先が出現したと判断しない場合（図２１のステップＳ１２６２）、滞在フラグをオフにして、矩形範囲５２を解除する（図２１のステップＳ１２８４）。
【０２５１】
このように、所定時間ＴＣ内に、指先５０が矩形範囲５２から消失したと判断しない場合、又は、矩形範囲５２に指先が出現したと判断しない場合、ユーザがクリック操作（シングルクリック又はダブルクリック）を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、所定時間ＴＣを適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【０２５２】
さらに、本実施の形態によれば、輪郭から大体の指先を決定し（図９のステップＳ３７３，Ｓ３７５、図１１のステップＳ４４５）、その周囲画素のみを用いて補正を行なうので（図１２（ａ）〜図１２（ｄ））、処理のための記憶容量の削減と処理速度の向上を図ることができる。
【０２５３】
また、補正が小数点精度で実行されるので、イメージセンサ５が比較的低解像度であっても、高精度で指先の位置を決定することができる。その結果、イメージセンサ５より高解像度のモニタ１３の画面上の、指先に対応する位置にカーソルを表示する場合でも、その動きを滑らかにすることができる。
【０２５４】
さらに、周囲画素の画素値により、補正を行なうので、補正後の指先を、輪郭線上ではなく、指の内部の位置に決定でき、ユーザが指先と認識する位置により近づけることができる。その結果、指先に対応するモニタ１３の画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が容易になる。なお、一般に、人は、指の腹を向けて、指を動かすときは、指の輪郭線上の凸点を指先と認識せず、指先端部の指の腹（ｆｉｎｇｅｒ  ｐａｄ）の中心を指先と認識するものである。
【０２５５】
さらに、本実施の形態では、補正後の指先の位置が、周囲画素の範囲（９×９画素の範囲）を超えるように、補正を行う。このため、補正後の指先の位置を指先端部の指の腹の一定位置あるいは略一定位置に決定することができ、図９のステップＳ３７３，Ｓ３７５、及び図１１のステップＳ４４５により検出された指先の位置が安定していない場合でも、補正後の指先の位置を極力一定させ、あるいは、指先の位置の相違を極力小さい範囲に収めることができる。その結果、指先に対応するモニタ１３の画面上の位置にカーソルを表示する場合、カーソルを安定化できる。
【０２５６】
また、補正後の指先を、ユーザが指先と認識する位置により一層近づけることができる。その結果、指先に対応するモニタ１３の画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が一層容易になる。
【０２５７】
さらに、本実施の形態では、指先画素Ｐ４と指先画素Ｐ４の斜め方向に位置する周囲画素（Ｐ０，Ｐ２，Ｐ６，Ｐ８）との間の距離と、指先画素Ｐ４と指先画素Ｐ４の水平方向又は垂直方向に位置する周囲画素（Ｐ１，Ｐ３，Ｐ５，Ｐ７）との間の距離と、が等しくなるように、周囲画素（Ｐ０，Ｐ２，Ｐ６，Ｐ８）の座標を定義する（図１６（ａ）参照）。その結果、重みとして画素値を利用するに当って、全周囲画素の画素値が均等に扱われ、方向によって偏りのない補正を行なうことができる。
【０２５８】
さらに、本実施の形態によれば、電子機器９は、被写体の形状（グー、チョキ、パー、１本指）を入力とした情報処理を実行することができる。
【０２５９】
さらに、本実施の形態によれば、指先と水かきとの間の画素に基づいて指を特定し（図７のステップＳ２５７及びＳ２５９、図１５参照）、輪郭画像の重心により指を特定しないので、重心により指を特定する場合と比較して、精度良く指を特定でき（図７）、ひいてはより精度良く手の形状を判定できる（図８、図９）。一般に、輪郭画像の重心と、被写体の重心と、は一致しない場合も多く、この場合に、重心により指を特定すると、認識の精度が低くなる。
【０２６０】
また、指先と水かきとの間の画素に基づいて得られた、隣り合う指と指とがなす角度だけでなく、重心から指先に相当する画素までの距離に基づいて、手の形状を判断するので（図９のステップＳ３４５〜Ｓ３５１）、より多様な手の形状を判定できる（図９）。例えば、手の形状が「チョキ」であることを判定できる。
【０２６１】
また、重心から輪郭線上の画素までの距離を求めるといった簡単な計算で（図６のステップＳ２０３）、手の形状を判定できる（図１０）。例えば、重心から輪郭線上の画素までの距離が、一定範囲内の場合に、手の形状が「グー」であることを判定できる。
【０２６２】
さらに、本実施の形態によれば、図７のステップＳ２７５の結果だけに基づいて、検出された指先の数を判断するのではなく、さらに、重心座標（Ｘｇ，Ｙｇ）と凸点（図４のステップＳ３３）の画素Ｐｊの座標との間の距離Ｄを加味して（図１１のステップＳ４２７，Ｓ４４１）、指が１本だけ立っている状態か否かを判定する。このため、より精度よく、指が１本だけ立っている状態を検出できる。
【０２６３】
さらに、本実施の形態によれば、画像上の被写体の面積は（図６のステップＳ２１３）、イメージセンサ５と被写体との間の距離に相関するので、面積により、イメージセンサ５と被写体との間の距離を容易に判断できる。
【０２６４】
なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
【０２６５】
（１）上記では、「グー」、「チョキ」、「パー」、及び「１本指」の形状を認識したが、これに限定されない。
【０２６６】
（２）画像処理装置１は、間欠的に点滅する赤外発光ダイオードを搭載することもできる。この場合、イメージセンサ５は、赤外光発光時及び消灯時のそれぞれにおいて撮影処理を実行し、発光時画像と消灯時画像との差分画像を生成して、ＭＣＵ３に出力する。ＭＣＵ３は、その差分画像から手を検出する。このように、差分といった簡易な処理で、背景画像を容易に除去できる。
【０２６７】
この場合、イメージセンサ５は、差分画像の各画素（例えばグレースケール）をシリアルに出力するところ、ＭＣＵ３は、イメージセンサ５から受け取った画素を、順次、所定の閾値と比較して、２値化し、メモリ７に格納する。そして、ＭＣＵ３は、２値化後の差分画像に基づいて、上述した各種処理を実行する。また、図１２（ａ）〜図１２（ｄ）に示す指先補正値計算処理を実行する場合は、ＭＣＵ３は、画素値ｐ０〜ｐ８を、イメージセンサ５から順次取得し、計算式に代入して、補正値（Ｘｃ，Ｙｃ）を算出する。なお、イメージセンサ５は、ＭＣＵ３による２値化のために差分画像を出力した後でも、一定時間は（次の撮影処理までは）、差分画像データを保持しているので、指先補正値計算処理では、そこから必要な画素を取得することができる。
【０２６８】
以上のように、２値化された差分画像をメモリ７に格納することで、メモリ容量を削減できる。また、指先補正値計算処理においても、メモリ７に格納した３×３画素（例えばグレースケール）を処理するのではなく、イメージセンサ５からの出力画素を順次処理しており、これもまたメモリ容量を削減できる。もちろん、イメージセンサ５が出力した差分画像をそのままメモリ７に格納して処理することもできる。
【０２６９】
（３）上記では、指先画素Ｐ４を原点（０，０）として、周囲画素の座標値を設定し、補正値（Ｘｃ，Ｙｃ）を算出し、それを指先画素Ｐ４の座標（Ｘｂ，Ｙｂ）に加算することで、補正座標（Ｘｆ，Ｙｆ）を得た（図１６（ａ）及び図１６（ｂ））。ただし、図１２の第１〜第４の例の各式で使用する座標の原点は、これに限定されない。例えば、図９のステップＳ３７３，Ｓ３７５、及び図１１のステップＳ４４５で求められた座標を、そのまま、指先画素Ｐ４の座標として使用して、周囲画素の座標を定め、補正座標（Ｘｆ，Ｙｆ）を求めることもできる。この場合は、図１２（ａ）〜図１２（ｄ）の各ステップで得られた値（Ｘｃ，Ｙｃ）が、補正座標（Ｘｆ，Ｙｆ）そのものであり、加算は不要である。
【０２７０】
（４）図１９（ａ）の第４の例では、所定時間ＴＣ内に、シングルクリック操作に対応するジェスチャが検出されない場合は、矩形範囲５２が解除されシングルクリック操作判定がリセットされた（図２１のステップＳ１２８４）。
【０２７１】
ただし、ＭＣＵ３が、指先５０が矩形範囲５２から消失したと判断した後（ステップＳ１２５４で肯定判断）の所定時間ＴＣ２内に、指先５０が矩形範囲５２に出現したと判断しない場合、矩形範囲５２を解除し、シングルクリック操作判定をリセットしてもよい。なお、ＭＣＵ３が、矩形範囲５２設定後所定時間ＴＣ内に、指先５０が矩形範囲５２から消失したと判断しない場合に、矩形範囲５２を解除する点は、図２１と同じである。
【０２７２】
このように、所定時間ＴＣ２内に、ＭＣＵ３が、指先５０が矩形範囲５２に出現したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、所定時間ＴＣ２を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【０２７３】
また、図１９（ｂ）の第４の例では、所定時間ＴＣ内に、ダブルクリック操作に対応するジェスチャが検出されない場合は、ダブルクリック操作判定がリセットされた（図２１のステップＳ１２８４）。
【０２７４】
ただし、仮クリックフラグがオンになった後において、ＭＣＵ３が、指先５０が矩形範囲５２から消失したと判断した後の所定時間ＴＣ３内に、指先５０が矩形範囲５２に出現したと判断しない場合、矩形範囲５２を解除し、ダブルクリック操作判定をリセットしてもよい。なお、仮クリックフラグがオンになった後において、ＭＣＵ３が、矩形範囲５２の設定後所定時間ＴＣ内に、指先５０が矩形範囲５２から消失したと判断しない場合に、矩形範囲５２を解除する点は、図２１と同じである。また、仮クリックフラグがオンになるまでの判定（シングルクリックの判定）は図２１又は上記変形と同じである。
【０２７５】
このように、所定時間ＴＣ３内に、ＭＣＵ３が、指先５０が矩形範囲５２に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間ＴＣ３を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【０２７６】
また、ＭＣＵ３が、指先５０が矩形範囲に出現したと判断してから、つまり、仮クリックフラグをオンにしてから所定時間ＴＣ４内に、指先５０が矩形範囲５２から消失したと判断しない場合、矩形範囲５２を解除し、ダブルクリック操作判定をリセットしてもよい。なお、仮クリックフラグがオンになるまでの判定（シングルクリックの判定）は図２１又は上記変形と同じである。
【０２７７】
このように、所定時間ＴＣ４内に、ＭＣＵ３が、指先５０が矩形範囲５２から消失したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間ＴＣ４を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【０２７８】
さらに、この場合、ＭＣＵ３が、仮クリックフラグをオンにしてから所定時間ＴＣ４内に、指先５０の消失の後、再び指先５０が矩形範囲５２に出現したと判断しない場合、矩形範囲５２を解除し、ダブルクリック操作判定をリセットしてもよい。
【０２７９】
このように、所定時間ＴＣ４内に、ＭＣＵ３が、指先５０が矩形範囲５２に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間ＴＣ４を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【０２８０】
また、このような判定に代えて、ＭＣＵ３が、仮クリックフラグをオンにしてから所定時間ＴＣ４内の指先５０の消失の後の所定時間ＴＣ５内に、指先５０が矩形範囲５２に出現したと判断しない場合、矩形範囲５２を解除し、ダブルクリック操作判定をリセットすることもできる。
【０２８１】
このように、所定時間ＴＣ５内に、ＭＣＵ３が、指先５０が矩形範囲５２に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間ＴＣ５を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
【０２８２】
ここで、上記の所定時間ＴＣ２〜ＴＣ５は、実験及び試行錯誤等により決定される。
【０２８３】
（５）ＭＣＵ３が行なう処理の全部又は一部をコンピュータ１１が行なうこともできる。要するに、どちらがどの処理を行なうかは、仕様に応じて、任意に決定できる。
【０２８４】
（６）ＭＣＵ３に各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、また、並列的あるいは個別に実行される処理も含むものである。
【０２８５】
（７）本明細書及び請求の範囲において、手段とは必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウェアによって実現される場合も含む。さらに、１つの手段の機能が２つ以上の物理的手段により実現されても、もしくは２つ以上の手段の機能が１つの物理的手段により実現されてもよい。
【産業上の利用可能性】
【０２８６】
本発明は、表示装置にカーソルを表示してポインティングを行なうポインティングデバイスの分野に利用可能である。
【０２８７】
また、本発明は、画像解析により指先を検出する画像解析の分野に利用可能である。
【符号の説明】
【０２８８】
１…画像処理装置、３…ＭＣＵ、５…イメージセンサ、７…メモリ、９…電子機器、１１…コンピュータ、１３…モニタ。
【図１】
2012073659.tif 000003
【図２】
2012073659.tif 000004
【図３】
2012073659.tif 000005
【図４】
2012073659.tif 000006
【図５】
2012073659.tif 000007
【図６】
2012073659.tif 000008
【図７】
2012073659.tif 000009
【図８】
2012073659.tif 000010
【図９】
2012073659.tif 000011
【図１０】
2012073659.tif 000012
【図１１】
2012073659.tif 000013
【図１２】
2012073659.tif 000014
【図１３】
2012073659.tif 000015
【図１４】
2012073659.tif 000016
【図１５】
2012073659.tif 000017
【図１６】
2012073659.tif 000018
【図１７】
2012073659.tif 000019
【図１８】
2012073659.tif 000020
【図１９】
2012073659.tif 000021
【図２０】
2012073659.tif 000022
【図２１】
2012073659.tif 000023