(57)【特許請求の範囲】
【請求項１】
画像領域からエッジを抽出し、エッジに挟まれた領域の中心部分を複数抽出する中心部分抽出部と、
隣り合う中心部分の間にエッジが存在しない中心部分同士を同一のグループに分類することで、複数の中心部分をグループ分けする分類部と、
前記分類部によりあるグループに分類された中心部分と該中心部分周辺のエッジとに囲まれる領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、該領域を指の領域であると判定する判定部と
を有することを特徴とする画像処理装置。
【請求項２】
前記判定部は、前記分類部によりあるグループに分類された中心部分と該中心部分周辺のエッジから得られる疑似スケルトンの上端の座標から下端の座標までの距離値に基づき算出される矩形の領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、前記中心部分と同一のグループに分類される中心部分とエッジとに囲まれる領域を指の領域であると判定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記中心部分抽出部は、エッジに挟まれた領域の中心部分のうち、エッジからの距離が所定の閾値未満となる中心部分を抽出することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記中心部分抽出部は、エッジに挟まれた領域の中心部分に対して、縦方向および横方向の輝度勾配を求め、縦方向および横方向の輝度勾配が所定の閾値未満となる中心部分を抽出することを特徴とする請求項１、２または３に記載の画像処理装置。
【請求項５】
コンピュータが実行する画像処理方法であって、
画像領域からエッジを抽出し、エッジに挟まれた領域の中心部分を複数抽出し、
隣り合う中心部分の間にエッジが存在しない中心部分同士を同一のグループに分類することで、複数の中心部分をグループ分けし、
あるグループに分類された中心部分と該中心部分周辺のエッジとに囲まれる領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、該領域を指の領域であると判定することを特徴とする画像処理方法。
【請求項６】
コンピュータに、
画像領域からエッジを抽出し、エッジに挟まれた領域の中心部分を複数抽出し、
隣り合う中心部分の間にエッジが存在しない中心部分同士を同一のグループに分類することで、複数の中心部分をグループ分けし、
あるグループに分類された中心部分と該中心部分周辺のエッジとに囲まれる領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、該領域を指の領域であると判定する処理を実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置等に関する。
【背景技術】
【０００２】
利用者の手をカメラで撮影して、手先の動きを判定し、手先の動きに応じた処理を実行する従来技術がある。この従来技術では、利用者の手先の動きを判定する場合に、手先の色が肌色であることを利用して、画像中に存在する手の指の領域を判定している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−３４６１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、手の指の領域を抽出することができないという問題があった。
【０００５】
上記の従来技術では、手が肌色であることを利用して、手の指の領域を判定しているが、指の色と同一色の背景と、手の指とが重なった場合には、色によって手の指の領域を判定することができない。例えば、利用者の手の指が顔にかかった状態では、指の領域を判定することができない。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、手の指の領域を判定することができる画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
開示の画像処理装置は、中心部分抽出部と、分類部と、判定部を有する。中心部分抽出部は、画像領域からエッジを抽出し、エッジに挟まれた領域の中心部分を複数抽出する。分類部は、隣り合う中心部分の間にエッジが存在しない中心部分同士を同一のグループに分類することで、複数の中心部分をグループ分けする。判定部は、中心部分と該中心部分周辺のエッジとに囲まれる領域において長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に中心部分と同一のグループに分類される中心部分とエッジとに囲まれる領域を指の領域であると判定する。
【発明の効果】
【０００８】
開示の画像処理装置によれば、手の指の領域を判定することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施例にかかる画像処理装置の構成を示す機能ブロック図である。
【図２】図２は、第２指検出部の構成を示す機能ブロック図である。
【図３】図３は、エッジ画像の一例を示す図である。
【図４】図４は、エッジ画像とマップ値との関係を説明するための図である。
【図５】図５は、前向き処理を説明するための図である。
【図６】図６は、後向き処理を説明するための図である。
【図７】図７は、疑似スケルトンの一例を示す図である。
【図８】図８は、疑似スケルトン抽出データのデータ構造の一例を示す図である。
【図９】図９は、クラスタリング部の処理を説明するための図である。
【図１０】図１０は、クラス化スケルトンデータのデータ構造の一例を示す図である。
【図１１】図１１は、指に対する輝度の特徴を説明する図である。
【図１２】図１２は、ｄおよびｅを説明するための図である。
【図１３】図１３は、指の方向の輝度勾配Ｇｆと円周方向の輝度勾配Ｇｎとの関係を示す図である。
【図１４】図１４は、ａ００、ａ０１、ａ１０、ａ１１を説明するための図である。
【図１５】図１５は、本実施例にかかる画像処理装置の処理手順を示すフローチャートである。
【図１６Ａ】図１６Ａは、指検出処理の処理手順を示すフローチャートである。
【図１６Ｂ】図１６Ｂは、形状に基づく指検出処理の処理手順を示すフローチャートである。
【図１７】図１７は、疑似スケルトンによる抽出処理の処理手順を示すフローチャートである。
【図１８】図１８は、前向き処理の処理手順を示すフローチャート（１）である。
【図１９】図１９は、前向き処理の処理手順を示すフローチャート（２）である。
【図２０】図２０は、後ろ向き処理の処理手順を示すフローチャートである。
【図２１】図２１は、疑似スケルトン抽出処理の処理手順を示すフローチャートである。
【図２２】図２２は、疑似スケルトンクラスタリング処理の処理手順を示すフローチャート（１）である。
【図２３】図２３は、疑似スケルトンクラスタリング処理の処理手順を示すフローチャート（２）である。
【図２４】図２４は、疑似スケルトンクラスタリング処理の処理手順を示すフローチャート（３）である。
【図２５】図２５は、疑似スケルトン評価処理の処理手順を示すフローチャートである。
【図２６】図２６は、輝度勾配による抽出処理の処理手順を示すフローチャート（１）である。
【図２７】図２７は、輝度勾配による抽出処理の処理手順を示すフローチャート（２）である。
【図２８】図２８は、実施例にかかる画像処理装置を構成するコンピュータのハードウェア構成を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する画像処理装置、画像処理方法および画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１１】
本実施例にかかる画像処理装置の構成について説明する。図１は、本実施例にかかる画像処理装置の構成を示す機能ブロック図である。図１に示すように、この画像処理装置１００は、カメラ１０１ａ、表示部１０１ｂ、第１指検出部１０２、第２指検出部１０３、指操作判定部１０４、制御部１０５を有する。
【００１２】
カメラ１０１ａは、撮影範囲の画像を撮影し、撮影した画像データを第１指検出部１０２に出力する。表示部１０１ｂは、各種の情報を表示するディスプレイなどの表示装置である。
【００１３】
第１指検出部１０２は、色に基づいて、画像に含まれる指を検出する処理部である。例えば、第１指検出部１０２は、画像データから肌色の領域を抽出し、抽出した領域を指の領域として、指操作判定部１０４に通知する。
【００１４】
なお、ここで抽出対象とする指は、カメラから特定の距離を挟む一定の区間とし、カメラの画角を予め計測しておくことにより、対象とする指の太さの範囲を指定するものとする。さらに、指の腹はカメラに対して正対ないしはほぼ正対していることを前提とする。
【００１５】
一方、第１指検出部１０２は、色に基づいて、指を検出できない場合には、画像データを第２指検出部１０３に出力することで、指の検出を依頼する。例えば、第１指検出部１０２は、画像データの肌色の領域の画素数が、第１の画素数未満、または、第２の画素数以上である場合に、指を検出できないと判定する。第１の画素数および第２の画素数は、予め設定された値である。第１指検出部１０２が指を検出する処理は、例えば、特開２００３−３４６１６２に開示された技術を利用して、指を検出してもよい。
【００１６】
第２指検出部１０３は、画像データからエッジを抽出し、エッジに挟まれた領域の中心部分に対応する疑似スケルトンを求め、疑似スケルトンおよびエッジに囲まれる領域の輝度勾配を利用して、指を検出する処理部である。第２指検出１０２は、指の検出結果を指操作判定部１０４に出力する。
【００１７】
指操作判定部１０４は、指の検出結果を基にして、利用者の指示内容を判定する処理部である。指操作判定部１０４は、指示内容を制御部１０５に出力する。制御部１０５は、指示内容を基にして、例えば、表示部１０１ｂの制御や、図示しないスピーカの音量制御などを行う。
【００１８】
次に、図１に示した第２指検出部１０３の構成について説明する。図２は、第２指検出部の構成を示す機能ブロック図である。図２に示すように、第２指検出部１０３は、画像サイズ変更部２０１、エッジ抽出部２０２、疑似距離変換部２０３、疑似スケルトン抽出部２０４、クラスタリング部２０５を有する。また、第２指検出部１０３は、疑似スケルトン評価部２０６、輝度勾配抽出部２０７、指領域判定部２０８を有する。
【００１９】
エッジ抽出部２０２、疑似距離変換部２０３、疑似スケルトン抽出部２０４は、中心部分抽出部の一例である。クラスタリング部２０５は、分類部の一例である。輝度勾配抽出部２０７、指領域判定部２０８は、判定部の一例である。
【００２０】
画像サイズ変更部２０１は、画像の幅に関するパラメータSizeXと、画像の高さに関するパラメータSizeYを変更することで、画像のサイズを調整し、サイズを調整した画像データをエッジ抽出部２０２、輝度勾配抽出部２０７に出力する。例えば、画像サイズ変更部２０１は、原画像データ、１／２に縮小した画像データ、１／４に縮小した画像データ等を順次、エッジ抽出部２０２、輝度勾配抽出部２０７に出力する。
【００２１】
エッジ抽出部２０２は、画像データからエッジを抽出する処理部である。画像データからエッジを抽出したものをエッジ画像と表記する。エッジ抽出部２０２は、例えば、ハフ変換、微分エッジ検出などを利用して、画像データからエッジを検出する。エッジ抽出部２０２は、エッジ画像を疑似距離変換部２０３に出力する。図３は、エッジ画像の一例を示す図である。図３に示すように、このエッジ画像１０には、エッジ１０ａが含まれている。
【００２２】
疑似距離変換部２０３は、エッジ画像において、各画素に対して最も距離の近いエッジからの距離を計測する処理部である。疑似距離変換部２０３は、エッジ画像をＭ（ｊ，ｉ）のマップに分割し、エッジからの距離に応じて、Ｍ（ｊ，ｉ）にマップ値を与える。マップは、画素に対応する。
【００２３】
図４は、エッジ画像とマップ値との関係を説明するための図である。図４において、黒い画素は、エッジに対応し、白い画素は、非エッジに対応する。図４に示すように、疑似距離変換部２０３は、エッジからの距離が近いマップＭ（ｊ，ｉ）に対しては、小さいマップ値を与え、エッジからの距離が遠いマップＭ（ｊ，ｉ）に対しては、大きいマップ値を与える。疑似距離変換部２０３は、エッジに対応するマップＭ（ｊ、ｉ）に対しては、マップ値「０」を与える。
【００２４】
具体的に、疑似距離変換部２０３の処理を説明する。疑似距離変換部２０３は、前向き処理と後向き処理を実行することで、各マップＭ（ｊ，ｉ）にマップ値を与える。
【００２５】
前向き処理について説明する。前向き処理では、疑似距離変換部２０３は、エッジ画像の左上から横に走査して、エッジ画像の右下のまで下記の処理を順次実行する。図５は、前向き処理を説明するための図である。前向き処理において、疑似距離変換部２０３は、マップＭ（ｊ，ｉ）を選択し、選択したものがエッジであるか非エッジであるかを判定する。疑似距離変換部２０３は、マップＭ（ｊ，ｉ）がエッジである場合には、マップＭ（ｊ，ｉ）のマップ値を０に設定し、次のマップを選択する。
【００２６】
これに対して、疑似距離変換部２０３は、選択したマップＭ（ｊ，ｉ）が非エッジの場合には、選択したマップＭ（ｊ，ｉ）の上部のマップのマップ値に２を加算した値と、マップＭ（ｊ，ｉ）の右上部のマップのマップ値に３を加算した値を取得する。また、疑似距離変換部２０３は、選択したマップＭ（ｊ，ｉ）の左上部のマップのマップ値に３を加算した値と、マップＭ（ｊ，ｉ）の左側のマップのマップ値に２を加算した値を取得する。そして、疑似距離変換部２０３は、取得したマップ値のうち、最小のものを、選択したマップＭ（ｊ，ｉ）のマップ値に設定する。
【００２７】
図５に示すように、疑似距離変換部２０３が、選択したマップＭ（２，２）とする。また、マップＭ（２，２）の上部のマップＭ（１，２）のマップ値に２を加算した値を１２、マップＭ（２，２）の右上部のマップＭ（１，３）のマップ値に３を加算した値を１０とする。また、選択したマップＭ（２，２）の左上部のマップＭ（１，１）のマップ値に３を加算した値を１４、マップＭ（２，２）の左側のマップＭ（２，１）のマップ値に２を加算した値を１２とする。この場合には、疑似距離変換部２０３は、マップＭ（２，２）のマップ値を１０に設定する。
【００２８】
次に、後向き処理について説明する。後向き処理では、疑似距離変換部２０３は、エッジ画像の右下から横に走査して、エッジ画像の左上まで下記の処理を順次実行する。図６は、後向き処理を説明するための図である。後向き処理において、疑似距離変換部２０３は、マップＭ（ｊ，ｉ）を選択し、選択したものがエッジであるか非エッジであるかを判定する。疑似距離変換部２０３はマップＭ（ｊ，ｉ）がエッジである場合には、マップＭ（ｊ，ｉ）のマップ値を０に設定し、次のマップを選択する。
【００２９】
これに対して、疑似距離変換部２０３は、選択したマップＭ（ｊ，ｉ）が非エッジの場合には、選択したマップＭ（ｊ，ｉ）の下部のマップのマップ値に２を加算した値と、マップＭ（ｊ，ｉ）の右下部のマップのマップ値に３を加算した値を取得する。また、疑似距離変換部２０３は、選択したマップＭ（ｊ，ｉ）の左下部のマップのマップ値に３を加算した値と、マップＭ（ｊ，ｉ）の右側のマップのマップ値に２を加算した値を取得する。そして、疑似距離変換部２０３は、取得したマップ値のうち、最小のものを、選択したマップＭ（ｊ，ｉ）のマップ値に設定する。
【００３０】
図６に示すように、疑似距離変換部２０３が、選択したマップＭ（２，２）とする。また、マップＭ（２，２）の下部のマップＭ（３，２）のマップ値に２を加算した値を１２、マップＭ（２，２）の右下部のマップＭ（３，３）のマップ値に３を加算した値を１０とする。また、選択したマップＭ（２，２）の左下部のマップＭ（３，１）のマップ値に３を加算した値を１４、マップＭ（２，２）の右側のマップＭ（２，３）のマップ値に２を加算した値を１２とする。この場合には、疑似距離変換部２０３は、マップＭ（２，２）のマップ値を１０に設定する。
【００３１】
上記のように、疑似距離変換部２０３は、前向き処理および後向き処理を実行することで、各マップＭ（ｊ，ｉ）にマップ値を付与する。この各マップＭ（ｊ，ｉ）にマップ値を付与したデータを、疑似距離変換マップと表記する。疑似距離変換部２０３は、疑似距離変換マップを疑似スケルトン抽出部２０４に出力する。
【００３２】
疑似スケルトン抽出部２０４は、疑似距離変換マップを基にして、エッジに囲まれた領域の中心部分に対応する疑似スケルトンを抽出する処理部である。疑似スケルトン抽出部２０４が、疑似スケルトンを抽出する処理は、指の中心を含むある領域の中心部分を検出することに相当する。図７は、疑似スケルトンの一例を示す図である。図７において、線１０ａはエッジを示す。線１１〜１４は、疑似スケルトンに対応する。
【００３３】
疑似スケルトン抽出部２０４は、疑似距離変換マップから注目画素を選択し、選択した注目画素のマップ値が、３×３の近傍領域で最大となるか否かを判定する。注目画素のマップ値が近傍領域で最大となる場合には、疑似スケルトン抽出部２０４は、閾値比較により、該当する画素が、疑似スケルトンであるか否かを判定する。
【００３４】
抽出したい指をカメラから特定の範囲の距離にあるものに限定する。その場合、指の太さはある範囲に存在する。標準的な指の太さを予め設定しておき、指の太さが画像に撮影される太さの最大を閾値Ｔｈ（ｍａｘ）とし、撮影される太さの最小を閾値Ｔｈ（ｍｉｎ）とする。
【００３５】
上記閾値Ｔｈ（ｍａｘ）とＴｈ（ｍｉｎ）との関係が「Ｔｈ（ｍａｘ）＞Ｔｈ（ｍｉｎ）＊４」である場合には、画像それ自身を縮小することにより、スケルトンそれ自身の幅のゆらぎを回避することができる。例えば、「Ｔｈ（ｍａｘ）＝Ｔｈ（ｍｉｎ）＊４」であるとき、一度目のＴｈ（ｍａｘ）をＴｈ（ｍｉｎ）＊３に設定して、以下の処理を実行することで、指の太さの範囲のうち、細い方３／４に分布する指の太さだけを抽出する。一連の処理が終了したら、後述する図１６Ｂの処理Ｓ５２により画像サイズを半分にする。
【００３６】
このとき、画像サイズを半分にするため、指のサイズも半分になる。このときＴｈ（ｍａｘ）を半分になることから、Ｔｈ（ｍａｘ）を半分にし、Ｔｈ（ｍｉｎ）をＴｈ（ｍｉｎ）＊１．５とする。こうすることで、太い方３／４に相当する指を抽出することができる。このとき画像を縮小することで、処理する画素自体を削減することが可能になる。
【００３７】
例えば、疑似スケルトン抽出部２０４は、注目画素のマップ値が閾値Ｔｈ（ｍａｘ）より小さく、かつ、閾値Ｔｈ（ｍｉｎ）よりも大きい場合に、該当注目画素を、疑似スケルトンに対応する画素と判定する。閾値Ｔｈ（ｍａｘ）および閾値Ｔｈ（ｍｉｎ）の値は予め設定されているものとする。また、疑似スケルトン抽出部２０４が注目画素を選択することは、上記のマップＭ（ｊ，ｉ）を選択することに等しい。
【００３８】
疑似スケルトン抽出部２０４は、上記の処理を実行して、疑似スケルトン抽出データを生成する。図８は、疑似スケルトン抽出データのデータ構造の一例を示す図である。図８に示すように、この疑似スケルトン抽出データは、疑似スケルトン番号、座標、マップ値を対応づけて記憶する。例えば、疑似スケルトン番号「０」の疑似スケルトンでは、ｘ座標が１００、ｙ座標が１００であり、マップ値が１３である。疑似スケルトン抽出部２０４は、疑似スケルトン抽出データを、クラスタリング部２０５に出力する。
【００３９】
クラスタリング部２０５は、疑似スケルトン抽出データを基にして、疑似スケルトンに対応する画素をクラスタ化する処理部である。疑似スケルトンに対応する画素を疑似スケルトン画素と表記する。クラスタリング部２０５は、異なる二つの疑似スケルトン画素を選択し、各疑似スケルトン画素の間に、エッジが存在しない場合に、各疑似スケルトン画素を、同一のグループに分類する。
【００４０】
クラスタリング部２０５の処理を具体的に説明する。疑似スケルトン画素のマップ値は、最も近いエッジからの距離を示している。このため、式（１）が成り立つ場合には、各疑似スケルトン画素の間にエッジが存在していない。式（１）において、Ｄａｂは、疑似スケルトン画素ａと疑似スケルトン画素ｂとのユーグリッド距離を示す。また、ｖａｌ（ａ）は、疑似スケルトン画素のマップ値、ｖａｌ（ｂ）は、疑似スケルトン画素ｂのマップ値に対応する。
【００４１】
Ｄａｂ＜Ｍｉｎ（ｖａｌ（ａ）／２、ｖａｌ（ｂ）／２）・・・（１）
【００４２】
式（１）において、マップ値を２で割ることの意義は、疑似距離変換部２０３にて置き換えられたマップ値が、ユーグリッド距離の２倍の距離に対応しているためである。
【００４３】
図９は、クラスタリング部の処理を説明するための図である。図９において、ａを疑似スケルトン画素ａとし、ｂを疑似スケルトン画素ｂとすると、ｖａｌ（ａ）は５となり、ｖａｌ（ｂ）は８となる。また、Ｄａｂは、４となる。この場合には、式（１）の条件を満たさないので、クラスタリング部２０５は、疑似スケルトン画素ａと、疑似スケルトン画素ｂとを異なるクラスに分類する。
【００４４】
クラスタリング部２０５は、式（１）を利用して、各疑似スケルトン画素を分類することで、クラス化スケルトンデータを生成する。図１０は、クラス化スケルトンデータのデータ構造の一例を示す図である。図１０に示すように、このクラス化スケルトンデータは、クラス番号、疑似スケルトン番号、座標、マップ値を対応づけて記憶する。図１０に示す例では、クラス番号Ｐｃ「０」には、疑似スケルトン番号「０，１」の疑似スケルトン画素が含まれている。クラスタリング部２０５は、クラス化スケルトンデータを、疑似スケルトン評価部２０６に出力する。
【００４５】
疑似スケルトン評価部２０６は、同一のクラスに分類される疑似スケルトン画素を評価し、指の候補であるか否かを判定する処理部である。疑似スケルトン評価部２０６は、長さと直線度に基づいて、同一のクラスに分類される疑似スケルトン画素を評価する。
【００４６】
疑似スケルトン評価部２０６が、長さに基づいて、クラスｉの疑似スケルトン画素を評価する処理について説明する。疑似スケルトン評価部２０６は、クラスｉに属する疑似スケルトン画素の上端の座標と、下端の座標との距離を長さとして算出する。疑似スケルトン評価部２０６は、長さがＴｈ（Ｌｅｎ  ｍａｘ）より小さく、かつ、Ｔｈ（Ｌｅｎ  ｍｉｎ）よりも大きい場合に、クラスｉに属する疑似スケルトン画素を指の候補と判定する。Ｔｈ（Ｌｅｎ  ｍａｘ）およびＴｈ（Ｌｅｎ  ｍｉｎ）の値は、予め設定されているものとする。なお、この長さは検出されたスケルトンのマップ値（指の幅）に応じて決定される。ここでの抽出対象とする指は、カメラに指の腹が正対ないしはほぼ正対しているものとする。このとき、指の長さは指の幅の定数倍を持つと仮定し、この定数倍によって決定される指の長さに対して、マージンを加減することによりＴｈ（Ｌｅｎ  ｍａｘ）とＴｈ（Ｌｅｎ  ｍｉｎ）を決定する。
【００４７】
長さに基づいた評価の後、疑似スケルトン評価部２０６は、指の候補としたクラスｉに属する疑似スケルトン画素の直線度を計測し、指の候補とするかを再度評価する。疑似スケルトン評価部２０６は、直線の法線ベクトルを（Ｖｘ、Ｖｙ）、直線上の任意の点（Ｃｘ、Ｃｙ）としたときの直線のパラメータ（Ｖｘ、Ｖｙ）、（Ｃｘ、Ｃｙ）を直線度として求める。線の法線ベクトルを（Ｖｘ、Ｖｙ）、直線上の任意の点（Ｃｘ、Ｃｙ）としたときの直線は、式（２）のように表すことができる。
【００４８】
Ｖｘ（ｘ−Ｃｘ）＋Ｖｙ（ｙ−Ｃｙ）＝０・・・（２）
【００４９】
疑似スケルトン評価部２０６が、直線度Ｖｘ、Ｖｙ、Ｃｘ、Ｃｙを求める処理について説明する。まず、疑似スケルトン評価部２０６は、式（３）によって表される直線の評価関数を最小にするＶｘ’、Ｖｙ’を求める。直線の評価関数は、式（４）によって表される。式（４）において、ｊは、クラスｉに含まれる疑似スケルトン画素の疑似スケルトン番号に対応するインデックスである。
【００５０】
Ｖｘ’＋Ｖｙ’ｙ＋１＝０・・・（３）
【００５１】
評価関数＝ΣｊＶｘ’（Ｐｘ（ｊ））＋Ｖｙ’（Ｐｙ（ｊ））＋１）＾２・・・（４）
【００５２】
疑似スケルトン評価部２０６は評価関数を最小にするＶｘ’、Ｖｙ’を式（５）により求める。
【００５３】
【数１】
0005716504.tif 000002
【００５４】
疑似スケルトン評価部２０６は、Ｖｘ’、Ｖｙ’を求めた後に、Ｖｘ’、Ｖｙ’を法線ベクトルになるように規格化することでＶｘ、Ｖｙを求める。疑似スケルトン評価部２０６は、式（６）および式（７）に基づいて、Ｖｘ’、Ｖｙ’を法線ベクトルになるように規格化する。なお、式（６）および式（７）に含まれるＺは、式（８）により求められる。
【００５５】
Ｖｘ＝Ｖｘ’／Ｚ・・・（６）
【００５６】
Ｖｙ＝Ｖｙ’／Ｚ・・・（７）
【００５７】
Ｚ＝ｓｑｒｔ（Ｖｘ×Ｖｘ＋Ｖｙ×Ｖｙ）・・・（８）
【００５８】
ところで、式（２）、式（３）の関係から、式（９）が成り立つ。そして、Ｃｘ、ＣｙをＵｘ、Ｕｙの直線に対する推薦の足と仮定すると、式（９）は式（１０）によって表すことができる。ここで、Ｕｘ、Ｕｙは、同一のクラスに属する疑似スケルトン画素のうち、最も上部に位置するものの座標に対応する。本実施例では、このＵｘ、Ｕｙの方向に、指先があると仮定する。
【００５９】
ＶｘＣｘ＋ＶｙＣｙ＝Ｚ・・・（９）
【００６０】
（Ｕｙ−Ｃｙ）Ｖｘ−（Ｕｘ−Ｃｘ）Ｖｙ・・・（１０）
【００６１】
式（９）と式（１０）を連立すると、式（１１）によって、Ｃｘ、Ｃｙを表すことができる。疑似スケルトン評価部２０６は、式（１１）を利用して、Ｃｘ、Ｃｙを求める。
【００６２】
【数２】
0005716504.tif 000003
【００６３】
疑似スケルトン評価部２０６は、Ｖｘ、Ｖｙ、Ｃｘ、Ｃｙを求めた後に、式（１２）の評価式Ｊの値を求める。
【００６４】
評価式Ｊ＝Σｊ（Ｖｘ（ｘ−Ｃｘ）＋Ｖｙ（ｙ−Ｃｙ））＾２・・・（１２）
【００６５】
疑似スケルトン評価部２０６は、評価式Ｊの値がＴｈ（ｌｉｎｅ）以下の場合に、クラスｉに属する疑似スケルトン画像を指の候補と判定する。Ｔｈ（ｌｉｎｅ）の値は予め設定されているものとする。
【００６６】
また、疑似スケルトン評価部２０６は、指の候補と判定したクラスに含まれる各疑似スケルトン画素のマップ値を平均化することで、平均マップ値ｖａｌ（ａｖｅ）を算出する。
【００６７】
疑似スケルトン評価部２０６は、指の候補と判定したクラスに含まれる疑似スケルトン画像を基にして、クラスデータを作成する。このクラスデータは、長さｌ、上部の位置（Ｕｘ、Ｕｙ）、平均マップ値ｖａｌ（ａｖｅ）、直線パラメータ（Ｖｘ、Ｖｙ）（Ｃｘ、Ｃｙ）を含む。疑似スケルトン評価部２０６は、クラスデータを輝度勾配抽出部２０７に出力する。
【００６８】
輝度勾配抽出部２０７は、指の方向の輝度勾配と、指の方向に対する垂直方向の輝度勾配とを基にして、指の候補と判定されたクラスから、指に対応するクラスを判定する処理部である。指の方向に対する垂直方向は、指の円周方向と表記する。
【００６９】
図１１は、指に対する輝度の特徴を説明する図である。図１１に示す円筒モデル２０は、指に相当するものである。円筒モデル２０は、一様な反射特性を持つものとする。図１１の縦軸ｙは、指の方向に対応する。横軸ｘは、指の円周方向に対応する。平行光源からの光が照射された場合に、縦軸ｙ方向には輝度の変化はない。これに対して、横軸ｘ方向には、輝度勾配が存在する。輝度勾配抽出部２０７は、この光源を照射された円筒モデル２０の特性を利用して、指に対応するクラスを判定する。指のような小さな対象では、蛍光灯のような照明もほぼ平行光源とみなすことができる。
【００７０】
輝度勾配抽出部２０７の処理を具体的に説明する。輝度勾配抽出部２０７は、疑似スケルトン評価部２０６から取得したクラスデータを基にして、画像データから指の方向の輝度勾配と、円周方向の輝度勾配とを分離する。
【００７１】
円周方向は、直線パラメータの法線ベクトルＶ＝（Ｖｘ，Ｖｙ）によって得られる。この法線ベクトルＶが既知であれば、指の方向（Ｗｘ、Ｗｙ）は、式（１３）、式（１４）によって求めることができる。輝度勾配抽出部２０７は、Ｖｙの値が０未満の場合には、式（１３）を利用して、指の方向（Ｗｘ，Ｗｙ）を算出する。輝度勾配抽出部２０７は、Ｖｙの値が０より大きい場合には、式（１４）を利用して、指の方向（Ｗｘ，Ｗｙ）を算出する。
【００７２】
（Ｗｘ，Ｗｙ）＝（Ｖｙ，−Ｖｘ）・・・（１３）
【００７３】
（Ｗｘ，Ｗｙ）＝（−Ｖｙ，Ｖｘ）・・・（１４）
【００７４】
指の方向（Ｗｘ，Ｗｙ）を算出した後に、輝度勾配抽出部２０７は、クラスｉに関する指の領域を特定する。任意の点（ｘ，ｙ）を指の方向および円周方向に分解すると、式（１５）に示す関係となる。
【００７５】
（ｘ，ｙ）＝（Ｃｘ＋ｄ×Ｖｘ＋ｅ×Ｗｘ，Ｃｙ＋ｄ×Ｖｙ＋ｅ×Ｗｙ）・・・（１５）
【００７６】
式（１５）に含まれるｄは、円周方向に対して指の中心からの距離に対応する。ｅは、指の方向に対して、指の先端からの距離に対応する。図１２は、ｄおよびｅを説明するための図である。図１２の線分３０は、法線ベクトルＶ＝（Ｖｘ，Ｖｙ）に対応する。座標３１は、任意の座標（ｘ，ｙ）に対応する。座標３２は、指の先端の座標（Ｃｘ，Ｃｙ）に対応する。
【００７７】
輝度勾配抽出部２０７は、ｄおよびｅを式（１６）により求める。ただし、輝度勾配抽出部２０７は、ｄの範囲が式（１７）及び式（１８）を満たし、ｅの範囲が式（１９）および式（２０）を満たす画素（ｘ，ｙ）を指領域とし、かかる指領域を輝度勾配の検索範囲とする。
【００７８】
【数３】
0005716504.tif 000004
【００７９】
ｄ＞−ｖａｌ（ａｖｅ）／２・・・（１７）
【００８０】
ｄ＜ｖａｌ（ａｖｅ）／２・・・（１８）
【００８１】
ｅ＞０・・・（１９）
【００８２】
ｅ＜ｌ・・・（２０）
【００８３】
輝度勾配抽出部２０７は、輝度勾配の検索範囲となる指の領域を特定した後に、検索範囲の内部の各画素に対して、輝度勾配を求める。指の方向の輝度勾配をＧｆとし、指の円周方向の輝度勾配をＧｎとする。輝度勾配抽出部２０７は、式（２１）、（２２）を利用して、指の方向の輝度勾配Ｇｆ、円周方向の輝度勾配Ｇｎを求める。式（２１）、（２１）のθは、式（２３）により求められる角度である。
【００８４】
Ｇｆ＝Ｇ×ｃｏｓ（γ−θ）・・・（２１）
【００８５】
Ｇｎ＝Ｇ×ｓｉｎ（γ−θ）・・・（２２）
【００８６】
θ＝ｔａｎ−１（Ｗｙ／Ｗｘ）・・・（２３）
【００８７】
図１３は、指の方向の輝度勾配Ｇｆと円周方向の輝度勾配Ｇｎとの関係を示す図である。図１３において、画素３０は、注目画素であり、座標を（ｘ，ｙ）とする。線分３１は、（Ｗｘ，Ｗｙ）に対応する指の方向のベクトルである。線分３２は、画素３０の輝度勾配である。線分３２ａは、指の方向の輝度勾配Ｇｆに対応する。線分３２ｂは、指の円周方向の輝度勾配Ｇｎに対応する。角度３３は、上記θに対応するものである。
【００８８】
なお、式（２１）、（２２）におけるＧは、各画素の輝度勾配の大きさに対応し、図１３の線分３２に対応する。また、式（２１）、（２２）におけるγは、水平軸３５と、線分３２とのなす角度３４に対応する。輝度勾配抽出部２０７は、輝度勾配Ｇを式（２４）により求める。また、輝度勾配抽出部２０７は、γを式（２５）により求める。
【００８９】
Ｇ＝ｓｑｕｒｔ（Ｇｖ＾２＋Ｇｈ＾２）・・・（２４）
【００９０】
γ＝ｔａｎ−１（Ｇｖ／Ｇｈ）・・・（２５）
【００９１】
輝度勾配抽出部２０７は、式（２４）、（２５）に含まれるＧｖを式（２６）により求める。また、輝度勾配抽出部２０７は、式（２４）、（２５）に含まれるＧｈを式（２７）により求める。
【００９２】
Ｇｖ＝（ａ１１＋ａ１０−ａ０１−ａ００）・・・（２６）
【００９３】
Ｇｈ＝（ａ１１＋ａ００−ａ１０−ａ００）・・・（２７）
【００９４】
式（２６）、（２７）に含まれるａ００、ａ０１、ａ１０、ａ１１は、注目画素（ｘ，ｙ）の左上画素、右上画素、左下画素、右下画素の輝度値に対応する。図１４は、ａ００、ａ０１、ａ１０、ａ１１を説明するための図である。注目画素を３３とすると、注目画素と左上画素Ａ００、右上画素Ａ０１、左下画素Ａ１０、右下画素Ａ１１の位置関係は図１４のようになる。Ａ００、Ａ０１、Ａ１０、Ａ１１の画素値がそれぞれａ００、ａ０１、ａ１０、ａ１１となる。
【００９５】
輝度勾配抽出部２０７は、検索範囲に含まれる任意の座標（ｘ，ｙ）について、指の方向の輝度勾配Ｇｆと円周方向の輝度勾配Ｇｎとを求めた後に、式（２８）の条件を満たすか否かを判定する。輝度勾配抽出部２０７は、式（２８）の条件を満たす場合には、任意の座標の画素は、指の領域ではないと判定する。これに対して、輝度勾配抽出部２０７は、式（２８）の条件を満たさない場合には、指の領域であると判定し、Ｎｕｍ（ｆｉｎｇ）の値に１を加算する。Ｎｕｍ（ｆｉｎｇ）の初期値を０とする。
【００９６】
Ｇｆ／Ｇｎ＞Ｔｈ・・・（２８）
【００９７】
輝度勾配抽出部２０７は、クラスｉに対する指の検索範囲に含まれる全ての画素に対して、式（２８）の条件を満たすか否かを判定し、Ｎｕｍ（ｆｉｎｇ）の値をカウントアップする。輝度勾配抽出部２０７は、指の検索範囲に含まれる全ての画素に対して、式（２８）の条件を満たすか否かを判定した後、Ｎｕｍ（ｆｉｎｇ）の値が、閾値Ｔｈ（ｍ）以下であるか否かを判定する。
【００９８】
輝度勾配抽出部２０７は、Ｎｕｍ（ｆｉｎｇ）の値が、閾値Ｔｈ（ｍ）以下の場合には、クラスｉを指に対応するクラスと判定する。輝度勾配抽出部２０７は、疑似スケルトン評価部２０６から取得した他のクラスに関しても、上記処理を実行し、指に対応するクラスか否かを判定する。輝度勾配抽出部２０７は、指に対応するクラスの情報を、指領域判定部２０８に出力する。
【００９９】
指領域判定部２０８は、輝度勾配抽出部２０７から取得するクラスの情報を基にして、指の領域を判定する処理部である。例えば、指領域判定部２０８は、クラスに含まれる疑似スケルトン画素の範囲を、指の領域とする。また、指領域判定部２０８は、各疑似スケルトン画素のうち、最も上部に位置する疑似スケルトン画素の座標を指先の座標として判定する。指領域判定部２０８は、指の領域の情報と、指先の座標の情報を、指操作判定部１０４に出力する。
【０１００】
次に、指操作判定部１０４の処理の一例について説明する。指操作判定部１０４は、指の領域の情報と、指の座標の情報とを基にして、指の本数を判定する。あるいは、指操作判定部１０４は、指の領域の情報と、指の座標の情報とを基にして、立てている指の組み合わせを判定する。指操作判定部１０４は、指の本数あるいは立てている指の組み合わせと、操作の種別とを対応づけたテーブルを参照し、操作の種別を判定する。かかるテーブルは、例えば、指操作判定部１０４が保持する。例えば、指操作判定部１０４は、特開２００３−３４６１６２等に開示される、画像から認識した指の状態に応じて、操作を判断する既知の技術を用いてもよい。
【０１０１】
次に、本実施例にかかる画像処理装置１００の処理手順について説明する。図１５は、本実施例にかかる画像処理装置の処理手順を示すフローチャートである。例えば、図１５に示す処理は、カメラ１０１ａから画像データを取得したことを契機として実行される。画像処理装置１００は、カメラ１０１ａから画像データを取得し（ステップＳ１０１）、指検出処理を実行する（ステップＳ１０２）。
【０１０２】
画像処理装置１００は、カーソルを描画し（ステップＳ１０３）、指先位置に対応したボタン算出処理を実行する（ステップＳ１０４）。画像処理装置１００は、押下フラグが１か否かを判定する（ステップＳ１０５）。
【０１０３】
画像処理装置１００は、押下フラグが１ではない場合には（ステップＳ１０５，Ｎｏ）、ステップＳ１０１に移行する。一方、画像処理装置１００は、押下フラグが１の場合には（ステップＳ１０５，Ｙｅｓ）、指示内容がｅｎｄか否かを判定する（ステップＳ１０６）。
【０１０４】
画像処理装置１００は、指示内容がｅｎｄではない場合には（ステップＳ１０６，Ｎｏ）、指示内容に応じた処理を実行し（ステップＳ１０７）、ステップＳ１０１に移行する。一方、画像処理装置１００は、指示内容がｅｎｄの場合には（ステップＳ１０６，Ｙｅｓ）、処理を終了する。
【０１０５】
次に、図１５のステップＳ１０２に示した指検出処理の処理手順について説明する。図１６Ａは、指検出処理の処理手順を示すフローチャートである。図１６Ａに示すように、画像処理装置１００は、色に基づいて指を抽出し（ステップＳ１１０）、指が検出されたか否かを判定する（ステップＳ１１１）。
【０１０６】
画像処理装置１００は、指が検出された場合には（ステップＳ１１１，Ｙｅｓ）、指検出処理を終了する。一方、画像処理装置１００は、指が検出されなかった場合には（ステップＳ１１１，Ｎｏ）、形状に基づく指抽出処理を実行する（ステップＳ１１２）。
【０１０７】
次に、図１６ＡのステップＳ１１２に示した形状に基づく指抽出処理の処理手順について説明する。図１６Ｂは、形状に基づく指検出処理の処理手順を示すフローチャートである。図１６Ｂに示すように、画像処理装置１００は、疑似スケルトンによる抽出処理を実行し（ステップＳ５０）、輝度勾配による抽出処理を実行する（ステップＳ５１）。
【０１０８】
画像処理装置１００は、縮小サイズが所定のサイズ未満ではない場合には（ステップＳ５２，Ｎｏ）、形状に基づく指抽出処理を終了する。一方、画像処理装置１００は、縮小サイズが所定のサイズ未満の場合には（ステップＳ５２，Ｙｅｓ）、画像のサイズを２倍に設定し（ステップＳ５３）、画面サイズを変更し（ステップＳ５４）、ステップＳ５０に移行する。
【０１０９】
次に、図１６ＢのステップＳ５０に示した疑似スケルトンによる抽出処理について説明する。図１７は、疑似スケルトンによる抽出処理の処理手順を示すフローチャートである。図１７に示すように、画像処理装置１００は、エッジ抽出処理を実行し（ステップＳ１１５）、疑似距離変換処理を実行する（ステップＳ１１６）。
【０１１０】
画像処理装置１００は、疑似スケルトン抽出処理を実行し（ステップＳ１１７）、疑似スケルトンクラスタリング処理を実行し（ステップＳ１１８）、疑似スケルトン評価処理を実行する（ステップＳ１１９）。
【０１１１】
次に、図１７のステップＳ１１６に示した疑似距離変換処理の処理手順について説明する。この疑似距離変換処理は、前向き処理と後ろ向き処理を順に実行する。図１８および図１９は、前向き処理の処理手順を示すフローチャートである。図２０は、後ろ向き処理の処理手順を示すフローチャートである。
【０１１２】
前向き処理の処理手順について説明する。図１８に示すように、画像処理装置１００は、エッジ画像Ｅを取得し（ステップＳ１２０）、距離変換マップＭを設定する（ステップＳ１２１）。画像処理装置１００は、エッジ画像Ｅにおいて、０の画素を２５５とし、それ以外の画素を０に設定する（ステップＳ１２２）。
【０１１３】
画像処理装置１００は、ｙ方向のカウンタｉを０に設定し（ステップＳ１２３）、ｘ方向のカウンタｊを０に設定する（ステップＳ１２４）。画像処理装置１００は、Ｅ（ｊ，ｉ）の値が０の場合には（ステップＳ１２５，Ｙｅｓ）、ステップ１２７に移行する。一方、画像処理装置１００は、Ｅ（ｊ，ｉ）の値が０ではない場合には（ステップＳ１２５，Ｎｏ）、Ｍ（ｊ，ｉ）の値を０に設定する（ステップＳ１２６）。
【０１１４】
画像処理装置１００は、ｊに１を加算し（ステップＳ１２７）、Ｅ（ｊ，ｉ）の値が０か否かを判定する（ステップＳ１２８）。画像処理装置１００は、Ｅ（ｊ，ｉ）の値が０ではない場合には（ステップＳ１２８，Ｎｏ）、Ｍ（ｊ，ｉ）の値を０に設定し（ステップＳ１２９）、ステップＳ１３１に移行する。
【０１１５】
一方、画像処理装置１００は、Ｅ（ｊ，ｉ）の値が０の場合には（ステップＳ１２８，Ｙｅｓ）、Ｍ（ｊ，ｉ）の値を、ＭＩＮ［２５５、Ｍ（ｊ−１、ｉ）＋２］とし（ステップＳ１３０）、ｊに１を加算する（ステップＳ１３１）。画像処理装置１００は、ｊの値がＳｉｚｅＸ未満の場合には（ステップＳ１３２，Ｙｅｓ）、ステップＳ１２８に移行する。
【０１１６】
画像処理装置１００は、ｊの値がＳｉｚｅＸ未満ではない場合には（ステップＳ１３２，Ｎｏ）、図１９のステップＳ１３３に移行する。画像処理装置１００は、ｉの値に１を加算し、ｊの値を０に設定する（ステップＳ１３４）。画像処理装置１００は、Ｅ（ｊ，ｉ）の値が０ではない場合には（ステップＳ１３５，Ｎｏ）、Ｍ（ｊ，ｉ）の値を０に設定し（ステップＳ１３６）、ステップＳ１３８に移行する。
【０１１７】
画像処理装置１００は、Ｅ（ｊ，ｉ）の値が０の場合には（ステップＳ１３５，Ｙｅｓ）、Ｍ（ｊ，ｉ）の値を、ＭＩＮ［２５５、Ｍ（ｊ−１、ｉ）＋２、Ｍ（ｊ＋１、ｉ−１）＋３］とする（ステップＳ１３７）。画像処理装置１００は、ｊの値に１を加算し（ステップＳ１３８）、Ｅ（ｊ，ｉ）の値が０ではない場合に（ステップＳ１３９，Ｎｏ）、Ｍ（ｊ，ｉ）の値を０に設定する（ステップＳ１４０）。
【０１１８】
画像処理装置１００は、Ｅ（ｊ，ｉ）の値が０の場合に（ステップＳ１３９，Ｙｅｓ）、Ｍ（ｊ，ｉ）の値を、ＭＩＮ［２５５、Ｍ（ｊ、ｉ−１）＋２、Ｍ（ｊ＋１、ｉ−１）＋３、Ｍ（ｊ−１、ｉ−１）＋２、Ｍ（ｊ−１、ｉ−１）＋３］とする（ステップＳ１４１）。
【０１１９】
画像処理装置１００は、ｊの値に１を加算し（ステップＳ１４２）、ｊの値がＳｉｚｅＸ未満の場合には（ステップＳ１４３，Ｙｅｓ）、ステップＳ１３９に移行する。一方、画像処理装置１００は、ｊの値がＳｉｚｅＸ未満ではない場合には（ステップＳ１４３，Ｎｏ）、ｉの値に１を加算する（ステップＳ１４４）。
【０１２０】
画像処理装置１００は、ｉの値がＳｉｚｅＹ未満の場合には（ステップＳ１４５，Ｙｅｓ）、ステップＳ１３４に移行する。一方、画像処理装置１００は、ｉの値がＳｉｚｅＹ未満ではない場合には（ステップＳ１４５，Ｎｏ）、前向き処理を終了する。
【０１２１】
次に、後ろ向き処理の処理手順について説明する。図２０に示すように、画像処理装置１００は、エッジ画像Ｅを取得し（ステップＳ１５０）、距離変換マップＭを設定する（ステップＳ１５１）。
【０１２２】
画像処理装置１００は、ｙ方向のカウンタｉをＳｉｚｅＹ−１に設定し（ステップＳ１５２）、画像処理装置１００は、ｘ方向のカウンタｊをＳｉｚｅＸ−１に設定する（ステップＳ１５３）。画像処理装置１００は、Ｍ（ｊ，ｉ）の値を、ＭＩＮ［Ｍ（ｉ，ｊ）、Ｍ（ｊ＋１，ｉ）＋２］に設定し（ステップＳ１５４）、ｊの値から１を減算する（ステップＳ１５５）。
【０１２３】
画像処理装置１００は、ｊの値が０の場合には（ステップＳ１５６，Ｙｅｓ）、ステップＳ１５４に移行する。一方、画像処理装置１００は、ｊの値が０ではない場合には（ステップＳ１５６，Ｎｏ）、ｊの値をＳｉｚｅＹ−１に設定する（ステップＳ１５７）。
【０１２４】
画像処理装置１００は、Ｍ（ｊ，ｉ）の値を、ＭＩＮ［Ｍ（ｉ，ｊ）、Ｍ（ｊ、ｉ＋１１）＋２、Ｍ（ｊ−１、ｉ＋１）＋３］に設定し（ステップＳ１５８）、ｊの値から１を減算する（ステップＳ１５９）。
【０１２５】
画像処理装置１００は、Ｍ（ｊ，ｉ）の値を、ＭＩＮ［Ｍ（ｉ、ｊ），Ｍ（ｊ、ｉ＋１）＋２、Ｍ（ｊ−１、ｉ＋１）＋３，Ｍ（ｊ＋１、ｉ）＋２，Ｍ（ｊ＋１、ｉ＋１）＋３］とする（ステップＳ１６０）。
【０１２６】
画像処理装置１００は、ｊの値から１を減算し（ステップＳ１６１）、ｊの値がＳｉｚｅＸ未満の場合には（ステップＳ１６２，Ｙｅｓ）、ステップＳ１６０に移行する。一方、画像処理装置１００は、ｊの値がＳｉｚｅＸ未満ではない場合には（ステップＳ１６２，Ｎｏ）、ｉの値から１を減算する（ステップＳ１６３）。
【０１２７】
画像処理装置１００は、ｉの値がＳｉｚｅＹ未満の場合には（ステップＳ１６４，Ｙｅｓ）、ステップＳ１５７に移行する。一方、画像処理装置１００は、ｉの値がＳｉｚｅＹ未満ではない場合には（ステップＳ１６４，Ｎｏ）、後ろ向き処理を終了する。
【０１２８】
次に、図１７のステップＳ１１７に示した疑似スケルトン抽出処理の処理手順について説明する。図２１は、疑似スケルトン抽出処理の処理手順を示すフローチャートである。図２１に示すように、画像処理装置１００は、画面サイズ（ＳｉｚｅＸ、ＳｉｚｅＹ）を取得し（ステップＳ１７０）、距離変換マップＭを取得する（ステップＳ１７１）。
【０１２９】
画像処理装置１００は、スケルトン座標Ｐｘ、Ｐｙを取得し（ステップＳ１７２）、スケルトン座標数ＮｕｍＰを取得する（ステップＳ１７３）。画像処理装置１００は、ｙ方向のカウンタｉの値を０に設定し（ステップＳ１７４）、ｘ方向のカウンタｊの値を０に設定する（ステップＳ１７５）。
【０１３０】
画像処理装置１００は、注目画素が３×３の近傍で最も高いマップ値か否かを判定する（ステップＳ１７６）。画像処理装置１００は、注目画素が３×３の近傍で最も高いマップ値ではない場合に（ステップＳ１７６，Ｎｏ）、ステップＳ１７９に移行する。
【０１３１】
一方、画像処理装置１００は、注目画素が３×３の近傍で最も高いマップ値の場合には（ステップＳ１７６，Ｙｅｓ）、マップ値＜Ｔｈ（ｍａｘ）またはマップ値＞Ｔｈ（ｍｉｎ）であるか否かを判定する（ステップＳ１７７）。
【０１３２】
画像処理装置１００は、マップ値＜Ｔｈ（ｍａｘ）またはマップ値＞Ｔｈ（ｍｉｎ）ではない場合には（ステップＳ１７７，Ｎｏ）、ステップＳ１７９に移行する。一方、画像処理装置１００は、マップ値＜Ｔｈ（ｍａｘ）またはマップ値＞Ｔｈ（ｍｉｎ）である場合には（ステップＳ１７７，Ｙｅｓ）、Ｐｘ（ＮｕｍＰ）の値をｊとし、Ｐｙ（ＮｕｍＰ）の値をｉとする（ステップＳ１７８）。
【０１３３】
画像処理装置１００は、ＮｕｍＰの値に１を加算し（ステップＳ１７９）、ｊの値に１を加算し（ステップＳ１８０）、ｊの値がＳｉｚｅＸ未満であるか否かを判定する（ステップＳ１８１）。
【０１３４】
画像処理装置１００は、ｊの値がＳｉｚｅＸ未満の場合には（ステップＳ１８１，Ｙｅｓ）、ステップＳ１７６に移行する。一方、画像処理装置１００は、ｊの値がＳｉｚｅＹ未満ではない場合に（ステップＳ１８１，Ｎｏ）、ｉの値に１を加算する（ステップＳ１８２）。画像処理装置１００は、ｉの値がＳｉｚｅＹ未満の場合には（ステップＳ１８３，Ｙｅｓ）、ステップＳ１７５に移行する。一方、画像処理装置１００は、ｉの値がＳｉｚｅＹ未満ではない場合には（ステップＳ１８３，Ｎｏ）、疑似スケルトン抽出処理を終了する。
【０１３５】
次に、図１７のステップＳ１１８に示した疑似スケルトンクラスタリング処理について説明する。図２２〜図２４は、疑似スケルトンクラスタリング処理の処理手順を示すフローチャートである。図２２に示すように、画像処理装置１００は、画面サイズ（ＳｉｚｅＸ，ＳｉｚｅＹ）を取得し（ステップＳ２０１）、スケルトン座標配列（Ｐｘ，Ｐｙ）を取得する（ステップＳ２０２）。
【０１３６】
画像処理装置１００は、スケルトン座標数ＮｕｍＰの値を０に設定し（ステップＳ２０３）、スケルトンクラスＰｃを取得する（ステップＳ２０４）。画像処理装置１００は、スケルトンクラス数ＮｕｍＰｃの値を０に設定する（ステップＳ２０５）。画像処理装置１００は、スケルトンクラスを初期値に設定する（ステップＳ２０６）。
【０１３７】
画像処理装置１００は、スケルトンカウンタｉの値を０に設定し（ステップＳ２０７）、スケルトンカウンタｊの値をｉ＋１の値に設定する（ステップＳ２０８）。画像処理装置１００は、Ｄｉｊの値を、ｓｑｒｔ（（Ｐｘ（ｉ）−Ｐｘ（ｊ））＾２＋（Ｐｙ（ｉ）−Ｐｙ（ｊ））＾２）とする（ステップＳ２０９）。
【０１３８】
画像処理装置１００は、Ｄｉｊの値が、Ｍｉｎ（ｖａｌ（ｉ），ｖａｌ（ｊ））未満ではない場合には（ステップＳ２１０，Ｎｏ）、図２３のステップＳ２２２に移行する。一方、画像処理装置１００は、、Ｄｉｊの値が、Ｍｉｎ（ｖａｌ（ｉ），ｖａｌ（ｊ））未満の場合には（ステップＳ２１０，Ｙｅｓ）、Ｐｃ（ｉ）の値がＰｃ（ｊ）の値未満か否かを判定する（ステップＳ２１１）。
【０１３９】
画像処理装置１００は、Ｐｃ（ｉ）の値がＰｃ（ｊ）の値未満ではない場合には（ステップＳ２１１，Ｎｏ）、図２３のステップＳ２１２に移行する。一方、画像処理装置１００は、Ｐｃ（ｉ）の値がＰｃ（ｊ）の値未満の場合には（ステップＳ２１１，Ｙｅｓ）、図２３のステップＳ２１７に移行する。
【０１４０】
図２３の説明に移行する。画像処理装置１００は、スケルトンカウンタｉｉの値を０に設定し（ステップＳ２１２）、Ｐｃ（ｉｉ）の値とＰｃ（ｉ）の値とが等しくない場合には（ステップＳ２１３，Ｎｏ）、ステップＳ２１５に移行する。一方、画像処理装置１００は、Ｐｃ（ｉｉ）の値とＰｃ（ｉ）の値とが等しい場合には（ステップＳ２１３，Ｙｅｓ）、Ｐｃ（ｉｉ）の値をＰｃ（ｊ）に設定する（ステップＳ２１４）。
【０１４１】
画像処理装置１００は、ｉｉの値に１を加算し（ステップＳ２１５）、ｉｉの値とｊ＋１の値とが等しくない場合に（ステップＳ２１６，Ｎｏ）、ステップＳ２１３に移行する。一方、画像処理装置１００は、ｉｉの値とｊ＋１の値とが等しい場合には（ステップＳ２１６，Ｙｅｓ）、ステップＳ２２２に移行する。
【０１４２】
ところで、画像処理装置１００は、スケルトンカウンタｊｊの値を０に設定し（ステップＳ２１７）、Ｐｃ（ｊｊ）の値とＰｃ（ｊ）の値とが等しくない場合には（ステップＳ２１８，Ｎｏ）、ステップＳ２２０に移行する。一方、画像処理装置１００は、Ｐｃ（ｊｊ）の値とＰｃ（ｊ）の値とが等しい場合には（ステップＳ２１８，Ｙｅｓ）、Ｐｃ（ｊｊ）の値をＰｃ（ｉ）に設定する（ステップＳ２１９）。
【０１４３】
画像処理装置１００は、ｊｊの値に１を加算し（ステップＳ２２０）、ｊｊの値とｊ＋１の値とが等しくない場合に（ステップＳ２２１，Ｎｏ）、ステップＳ２１８に移行する。一方、画像処理装置１００は、ｊｊの値とｊ＋１の値とが等しい場合には（ステップＳ２２１，Ｙｅｓ）、ステップＳ２２２に移行する。
【０１４４】
画像処理装置１００は、ｊの値に１を加算し（ステップＳ２２２）、ｊの値がＮｕｍＰの値未満ではない場合には（ステップＳ２２３，Ｎｏ）、図２２のステップＳ２０８に移行する。一方、画像処理装置１００は、ｊの値がＮｕｍＰの値未満の場合には（ステップＳ２２３，Ｙｅｓ）、ｉの値に１を加算し（ステップＳ２２４）、ｊの値がＮｕｍＰ−１の値未満か否かを判定する（ステップＳ２２５）。
【０１４５】
画像処理装置１００は、ｊの値がＮｕｍＰ−１の値未満ではない場合には（ステップＳ２２５，Ｎｏ）、図２２のステップＳ２０９に移行する。一方、画像処理装置１００は、ｊの値がＮｕｍＰ−１の値未満の場合には（ステップＳ２２５，Ｙｅｓ）、図２４のステップＳ２２６に移行する。
【０１４６】
図２４の説明に移行する。画像処理装置１００は、スケルトンカウンタｉの値を０に設定し（ステップＳ２２６）、ｉの値とＰｃ（ｉ）の値とが等しくない場合には（ステップＳ２２７，Ｎｏ）、Ｐｃ（ｉ）の値をＰｃ（Ｐｃ（ｉ））の値に設定する（ステップＳ２２８）。画像処理装置１００は、ｉに１を加算し（ステップＳ２２９）、ステップＳ２３２に移行する。
【０１４７】
一方、画像処理装置１００は、ｉの値とＰｃ（ｉ）の値とが等しい場合には（ステップＳ２２７，Ｙｅｓ）、Ｐｃ（ｉ）にＮｕｍＰｃの値を設定する（ステップＳ２３０）。画像処理装置１００は、ＮｕｍＰｃに１を加算する（ステップＳ２３１）。
【０１４８】
画像処理装置１００は、ｉの値とＮｕｍＰの値とが等しくない場合には（ステップＳ２３２，Ｎｏ）、ステップＳ２２７に移行する。一方、画像処理装置１００は、ｉの値とＮｕｍＰの値とが等しい場合には（ステップＳ２３２，Ｙｅｓ）、疑似スケルトンクラスタリング処理を終了する。
【０１４９】
次に、図１７のステップＳ１１９に示した疑似スケルトン評価処理について説明する。図２５は、疑似スケルトン評価処理の処理手順を示すフローチャートである。図２５に示すように、画像処理装置１００は、スケルトンクラス変数ｉの値を０に設定し（ステップＳ２５０）、クラス数Ｎｃを取得する（ステップＳ２５１）。
【０１５０】
画像処理装置１００は、クラスｉの上端の点と下端の点との距離を直線の長さｌに設定し（ステップＳ２５２）、Ｔｈ（ＬｅｎＭｉｎ）＜ｌ＜Ｔｈ（ＬｅｎＭａｘ）の関係を満たさない場合には（ステップＳ２５３，Ｎｏ）、ステップＳ２５９に移行する。
【０１５１】
画像処理装置１００は、Ｔｈ（ＬｅｎＭｉｎ）＜ｌ＜Ｔｈ（ＬｅｎＭａｘ）の関係を満たす場合には（ステップＳ２５３，Ｙｅｓ）、クラスｉのＰｘ、Ｐｙから最小二乗法により直線を算出する（ステップＳ２５４）。画像処理装置１００は、非直線度を算出し（ステップＳ２５５）、非直線度がＴｈ（ｌｉｎｅ）より大きい場合には（ステップＳ２５６，Ｙｅｓ）、ステップＳ２５９に移行する。
【０１５２】
一方、画像処理装置１００は、非直線度がＴｈ（ｌｉｎｅ）より大きくない場合には（ステップＳ２５６，Ｎｏ）、Ｎｃｎｅｗに１を加算する（ステップＳ２５７）。Ｎｃｎｅｗの初期値を０とする。画像処理装置１００は、クラスｉの情報を格納し（ステップＳ２５８）、ｉに１を加算する（ステップＳ２５９）。
【０１５３】
画像処理装置１００は、ｉの値がＮｃの値未満ではない場合には（ステップＳ２６０，Ｎｏ）、ステップＳ２５２に移行する。一方、画像処理装置１００は、ｉの値がＮｃの値未満の場合には（ステップＳ２６０，Ｙｅｓ）、ＮｃにＮｃｎｅｗの値を設定し（ステップＳ２６１）、疑似スケルトン評価処理を終了する。
【０１５４】
次に、図１６ＢのステップＳ５１に示した輝度勾配による抽出処理の処理手順について説明する。図２６および図２７は、輝度勾配による抽出処理の処理手順を示すフローチャートである。図２６に示すように、画像処理装置１００は、スケルトンクラス変数ｉの値を０に設定し（ステップＳ２７０）、クラス数Ｎｃを取得し（ステップＳ２７１）、候補画素数Ｎｕｍ（ｆｉｎｇ）の値を０に設定する（ステップＳ２７２）。
【０１５５】
画像処理装置１００は、探索数Ｎｕｍ（ｃａｎｄ）の値を０に設定し（ステップＳ２７３）、クラスカウンタＮを設定する（ステップＳ２７４）。画像処理装置１００は、ｙ方向カウンタｉの値を０に設定し（ステップＳ２７５）、ｘ方向カウンタｊの値を０に設定する（ステップＳ２７６）。
【０１５６】
画像処理装置１００は、座標（ｊ，ｉ）におけるｄ、ｅを算出し（ステップＳ２７７）、検索範囲内ではない場合には（ステップＳ２７８，Ｎｏ）、図２７のステップＳ２８５に移行する。
【０１５７】
一方、画像処理装置１００は、検索範囲内の場合には（ステップＳ２７８，Ｙｅｓ）、Ｎｕｍ（ｃａｒｄ）に１を加算し（ステップＳ２７９）、指方向を算出する（ステップＳ２８０）。画像処理装置１００は、指方向の輝度勾配を算出し（ステップＳ２８１）、円周方向の輝度勾配を算出する（ステップＳ２８２）。
【０１５８】
画像処理装置１００は、勾配比（Ｇｆ／Ｇｎ）が閾値未満の場合には（ステップＳ２８３，Ｙｅｓ）、図２７のステップＳ２８５に移行する。一方、画像処理装置１００は、勾配比（Ｇｆ／Ｇｎ）が閾値未満ではない場合には（ステップＳ２８３，Ｎｏ）、Ｎｕｍ（ｆｉｎｇ）に１を加算し（ステップＳ２８４）、図２７のステップＳ２８５に移行する。
【０１５９】
図２７の説明に移行する。画像処理装置１００は、ｊから１を減算し（ステップＳ２８５）、ｊの値がＳｉｚｅＸの値未満の場合には（ステップＳ２８６，Ｙｅｓ）、図２６のステップＳ２７７に移行する。
【０１６０】
画像処理装置１００は、ｊの値がＳｉｚｅＸ未満ではない場合には（ステップＳ２８６，Ｎｏ）、ｉから１を減算し（ステップＳ２８７）、ｉの値がＳｉｚｅＹの値未満の場合には（ステップＳ２８８，Ｙｅｓ）、図２６のステップＳ２７６に移行する。
【０１６１】
画像処理装置１００は、Ｎｕｍ（ｆｉｎｇ）／Ｎｕｍ（ｃａｎｄ）の値が、Ｔｈ（ｍ）の値未満ではない場合には（ステップＳ２８９，Ｎｏ）、ステップＳ２９１に移行する。一方、画像処理装置１００は、Ｎｕｍ（ｆｉｎｇ）／Ｎｕｍ（ｃａｎｄ）の値がＴｈ（ｍ）の値未満の場合には（ステップＳ２８９，Ｙｅｓ）、クラスＮｃの情報を指として出力領域に格納する（ステップＳ２９０）。
【０１６２】
画像処理装置１００は、Ｎに１を加算し（ステップＳ２９１）、Ｎの値がＮｃの値未満の場合には（ステップＳ２９２，Ｙｅｓ）、ステップＳ２７５に移行する。一方、画像処理装置１００は、Ｎの値がＮｃの値未満ではない場合には（ステップＳ２９２，Ｎｏ）、輝度勾配による抽出処理を終了する。
【０１６３】
次に、本実施例にかかる画像処理装置１００の効果について説明する。画像処理装置１００は、認識対象の画像からエッジを抽出し、エッジに挟まれた領域の疑似スケルトンを求める。そして、画像処理装置１００は、疑似スケルトンとエッジとに囲まれる領域の長辺方向および短辺方向の輝度勾配を利用することで、指の領域か否かを判定する。このため、画像処理装置１００によれば、背景色によらず指の領域を判定することができる。
【０１６４】
また、画像処理装置１００は、表示部１０１ｂの画面上の領域と該画面上の領域に対応する操作の種別とを対応づけたボタン管理情報と指の領域の座標とを基にして、操作の種別を判定する。このため、画像処理装置１００は、手と顔とが画像データに含まれている場合でも、指の動きによる操作を可能にする。
【０１６５】
また、画像処理装置１００は、疑似スケルトンを抽出する場合に、エッジからの距離が所定の閾値未満となる疑似スケルトンを抽出する。このため、画像処理装置１００は、指とは明らかに異なる疑似スケルトンを効率よく排除することができる。
【０１６６】
ところで、上記に示した画像処理装置１００の処理は一例である。以下では、画像処理装置１００のその他の処理について説明する。
【０１６７】
図１に示した第２指検出部１０３は、画像サイズ変更部２０１が、画像データのサイズを変更して、各サイズの画像データから、指の領域を検出する場合を例に説明したが、これに限定されるものではない。例えば、画像データのサイズを変更する代わりに、各閾値を変更することで、各サイズの画像データから、指の領域を検出することができる。
【０１６８】
例えば、第２指検出部１０３は、画像の横縦を１／２に縮小する代わりに、閾値Ｔｈ（ｍａｘ）および閾値Ｔｈ（ｍｉｎ）の値、Ｔｈ（Ｌｅｎ  ｍａｘ）より小さく、かつ、Ｔｈ（Ｌｅｎ  ｍｉｎ）の値を２倍にする。また、第２指検出部１０３は、Ｔｈ（ｌｉｎｅ）の値を２倍にする。すなわち、第２指検出部１０３は、画像の横縦を１／ｎ倍する場合には、閾値Ｔｈ（ｍａｘ）および閾値Ｔｈ（ｍｉｎ）の値、Ｔｈ（Ｌｅｎ  ｍａｘ）より小さく、かつ、Ｔｈ（Ｌｅｎ  ｍｉｎ）の値をｎ倍にする。また、第２指検出部１０３は、Ｔｈ（ｌｉｎｅ）の値をｎ２倍にする。このように、第２指検出部１０３は、画像サイズを変更しなくても、各サイズに対応する指の領域を検出することができる。
【０１６９】
また、疑似スケルトン抽出部２０４は、疑似スケルトンを抽出する場合には、上記処理に加えて、輝度勾配を利用してもよい。例えば、疑似スケルトン抽出部２０４は、縦軸方向および横軸方向の輝度勾配を求め、縦軸方向および横軸方向の輝度勾配が所定の閾値未満となる疑似スケルトンを抽出してもよい。指は円柱状であるため、縦軸方向および横軸方向で輝度は変化しないが、鼻は末広がりになるので、縦軸方向および横軸方向で輝度が変わることを利用する。このような処理を疑似スケルトン抽出部２０４が実行することで、抽出する疑似スケルトンの数を減らして処理負荷を軽減し、指の検出精度を向上させることができる。
【０１７０】
ところで、画像処理装置１００は、既存のＰＣ（Personal  Computer）などの情報処理装置に、画像処理装置１００の各機能を搭載することによって実現することもできる。
【０１７１】
図２８は、実施例にかかる画像処理装置を構成するコンピュータのハードウェア構成を示す図である。図２８に示すように、このコンピュータ３００は、各種演算処理を実行するＣＰＵ（Central  Processing  Unit）３０１と、ユーザからのデータの入力を受け付ける入力装置３０２と、ディスプレイ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る読み取り装置３０４と、ネットワークを介して他の装置と通信を行うインターフェース装置３０５、画像を撮影するカメラ３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）３０７と、ハードディスク装置３０８とを有する。各装置３０１〜３０８は、バス３０９に接続される。
【０１７２】
ハードディスク装置３０８は、中心部抽出プログラム３０８ａ、分類プログラム３０８ｂ、判定プログラム３０８ｃを記憶する。
【０１７３】
ＣＰＵ３０１は、ハードディスク装置３０８に記憶された各プログラム３０８ａ〜３０８ｃを読み出して、ＲＡＭ３０７に展開する。これにより、中心部抽出プログラム３０８ａは、中心部抽出プロセス３０７ａとして機能する。分類プログラム３０８ｂは、分類プロセス３０７ｂとして機能する。判定プログラム３０８ｃは、判定プロセス３０７ｃとして機能する。
【０１７４】
例えば、中心部分抽出プロセス３０７ａは、エッジ抽出部２０２、疑似距離変換部２０３、疑似スケルトン抽出部２０４に対応する。分類プロセス３０７ｂは、クラスタリング部２０５に対応する。判定プロセス３０７ｃは、輝度勾配抽出部２０７、指領域判定部２０８に対応する。
【０１７５】
なお、上記のプログラム３０８ａ〜３０８ｃは、必ずしもハードディスク装置３０８に格納されている必要はない。例えば、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたプログラム３０８ａ〜３０８ｃを、コンピュータ３００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等に接続された記憶装置に、各プログラム３０８ａ〜３０８ｃを記憶させておいてもよい。この場合、コンピュータ３００がこれらから各プログラム３０８ａ〜３０８ｃを読み出して実行するようにしてもよい。
【０１７６】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１７７】
（付記１）画像領域からエッジを抽出し、エッジに挟まれた領域の中心部分を複数抽出する中心部分抽出部と、
隣り合う中心部分の間にエッジが存在しない中心部分同士を同一のグループに分類することで、複数の中心部分をグループ分けする分類部と、
前記分類部によりあるグループに分類された中心部分と該中心部分周辺のエッジとに囲まれる領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、該領域を指の領域であると判定する判定部と
を有することを特徴とする画像処理装置。
【０１７８】
（付記２）前記判定部は、前記分類部によりあるグループに分類された中心部分と該中心部分周辺のエッジから得られる疑似スケルトンとスケルトンの各点のエッジからの距離値に基づき算出される矩形の領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、前記中心部分と同一のグループに分類される中心部分とエッジとに囲まれる領域を指の領域であると判定することを特徴とする付記１に記載の画像処理装置。
【０１７９】
（付記３）前記中心部分抽出部は、エッジに挟まれた領域の中心部分のうち、エッジからの距離が所定の閾値未満となる中心部分を抽出することを特徴とする付記１に記載の画像処理装置。
【０１８０】
（付記４）前記中心部分抽出部は、エッジに挟まれた領域の中心部分に対して、縦方向および横方向の輝度勾配を求め、縦方向および横方向の輝度勾配が所定の閾値未満となる中心部分を抽出することを特徴とする付記１、２または３に記載の画像処理装置。
【０１８１】
（付記５）コンピュータが実行する画像処理方法であって、
画像領域からエッジを抽出し、エッジに挟まれた領域の中心部分を複数抽出し、
隣り合う中心部分の間にエッジが存在しない中心部分同士を同一のグループに分類することで、複数の中心部分をグループ分けし、
あるグループに分類された中心部分と該中心部分周辺のエッジとに囲まれる領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、該領域を指の領域であると判定することを特徴とする画像処理方法。
【０１８２】
（付記６）前記指の領域を判定する処理は、前記分類部によりあるグループに分類された中心部分と該中心部分周辺のエッジから得られる疑似スケルトンとスケルトンの各点のエッジからの距離値に基づき算出される矩形の領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、前記中心部分と同一のグループに分類される中心部分とエッジとに囲まれる領域を指の領域であると判定することを特徴とすることを特徴とする付記５に記載の画像処理方法。
【０１８３】
（付記７）中心部分を抽出する場合に、エッジに挟まれた領域の中心部分のうち、エッジからの距離が所定の閾値未満となる中心部分を抽出すること特徴とすることを特徴とする付記５に記載の画像処理方法。
【０１８４】
（付記８）中心部分を抽出する場合に、エッジに挟まれた領域の中心部分に対して、縦方向および横方向の輝度勾配を求め、縦方向および横方向の輝度勾配が所定の閾値未満となる中心部分を抽出することを特徴とする付記５、６または７に記載の画像処理方法。
【０１８５】
（付記９）コンピュータに、
画像領域からエッジを抽出し、エッジに挟まれた領域の中心部分を複数抽出し、
隣り合う中心部分の間にエッジが存在しない中心部分同士を同一のグループに分類することで、複数の中心部分をグループ分けし、
あるグループに分類された中心部分と該中心部分周辺のエッジとに囲まれる領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、該領域を指の領域であると判定する処理を実行させる画像処理プログラム。
【０１８６】
（付記１０）前記指の領域を判定する処理は、前記分類部によりあるグループに分類された中心部分と該中心部分周辺のエッジから得られる疑似スケルトンとスケルトンの各点のエッジからの距離値に基づき算出される矩形の領域において、長辺方向の輝度勾配に対する短辺方向の輝度勾配の割合が所定の閾値以内となる場合に、前記中心部分と同一のグループに分類される中心部分とエッジとに囲まれる領域を指の領域であると判定することを特徴とすることを特徴とする付記９に記載の画像処理プログラム。
【０１８７】
（付記１１）中心部分を抽出する場合に、エッジに挟まれた領域の中心部分のうち、エッジからの距離が所定の閾値未満となる中心部分を抽出することを特徴とする付記９に記載の画像処理プログラム。
【０１８８】
（付記１２）中心部分を抽出する場合に、エッジに挟まれた領域の中心部分に対して、縦方向および横方向の輝度勾配を求め、縦方向および横方向の輝度勾配が所定の閾値未満となる中心部分を抽出することを特徴する付記９、１０または１１に記載の画像処理プログラム。
【符号の説明】
【０１８９】
１００    画像処理装置
１０１ａ  カメラ
１０２    第１指検出部
１０３    第２指検出部
１０４    指操作判定部
【図１】
0005716504.tif 000005
【図２】
0005716504.tif 000006
【図３】
0005716504.tif 000007
【図４】
0005716504.tif 000008
【図５】
0005716504.tif 000009
【図６】
0005716504.tif 000010
【図７】
0005716504.tif 000011
【図８】
0005716504.tif 000012
【図９】
0005716504.tif 000013
【図１０】
0005716504.tif 000014
【図１１】
0005716504.tif 000015
【図１２】
0005716504.tif 000016
【図１３】
0005716504.tif 000017
【図１４】
0005716504.tif 000018
【図１５】
0005716504.tif 000019
【図１６Ａ】
0005716504.tif 000020
【図１６Ｂ】
0005716504.tif 000021
【図１７】
0005716504.tif 000022
【図１８】
0005716504.tif 000023
【図１９】
0005716504.tif 000024
【図２０】
0005716504.tif 000025
【図２１】
0005716504.tif 000026
【図２２】
0005716504.tif 000027
【図２３】
0005716504.tif 000028
【図２４】
0005716504.tif 000029
【図２５】
0005716504.tif 000030
【図２６】
0005716504.tif 000031
【図２７】
0005716504.tif 000032
【図２８】
0005716504.tif 000033