(57)【要約】    【構成】  ゲーム装置１０はカメラカートリッジ６０を含み、カメラカートリッジ６０で撮影されたユーザの顔画像から複数の特徴点を検出する。ゲーム装置１０は、この複数の特徴点を用いて、左目および右目の黒目の領域についての面積をそれぞれ算出する。そして、ゲーム装置１０は、算出した面積に基づいて、左目または右目のいずれか一方が閉じているかどうかを検知する。ゲーム装置１０は、この検知結果に応じてゲーム処理を実行する。    【効果】  片目を閉じる動作を簡単に検出することができる。【選択図】  図１
2009003730.tif 000002
【特許請求の範囲】
【請求項１】
撮像手段を備え、前記撮像手段により利用者の顔画像を取得する情報処理装置のコンピュータで実行される情報処理プログラムであって、
前記撮像手段により撮像された利用者の顔画像から、左右の目の領域の大きさを示す目領域値をそれぞれ算出する目領域値算出ステップと、
前記目領域値算出ステップによって算出された左右の目に対するそれぞれの目領域値を比較することにより片目を閉じたかどうかを判定する片目判定ステップとを、前記コンピュータに実行させる、情報処理プログラム。
【請求項２】
前記片目判定ステップは、前記左右の目に対するそれぞれの目領域値の比率に応じて片目が閉じたかどうかを判定する、請求項１記載の情報処理プログラム。
【請求項３】
前記左右の目に対する検索領域をそれぞれ設定する検索領域設定ステップを、前記コンピュータにさらに実行させ、
前記目領域値算出ステップは、前記検索領域設定ステップによって設定された前記左右の目に対する検索領域のそれぞれから前記目領域値を算出する、請求項１または２記載の情報処理プログラム。
【請求項４】
前記目領域値算出ステップは、前記撮像手段により撮像された利用者の顔画像から、左右の目の黒目領域の大きさを示す黒目領域値をそれぞれ算出する黒目領域値算出ステップを含む、請求項３記載の情報処理プログラム。
【請求項５】
前記撮像手段により撮像された利用者の顔画像から左右の目の特徴点を取得する特徴点取得ステップを、前記コンピュータにさらに実行させ、
前記検索領域設定ステップは、前記特徴点取得ステップによって取得された左右の目の特徴点を用いて前記左右の目に対する検索領域のそれぞれを設定する、請求項４記載の情報処理プログラム。
【請求項６】
前記検索領域設定ステップによって設定された前記左右の目に対する検索領域のそれぞれから黒目基準値を算出する黒目基準値算出ステップを、前記コンピュータにさらに実行させ、
前記黒目領域値算出ステップは、前記黒目基準値算出ステップによって算出された黒目基準値を閾値として前記黒目領域値を算出する、請求項５記載の情報処理プログラム。
【請求項７】
前記黒目基準値は、前記検索領域設定ステップによって設定された前記左右の目に対する検索領域のそれぞれにおける明度に関する値である、請求項６記載の情報処理プログラム。
【請求項８】
前記黒目基準値算出ステップは、前記検索領域設定ステップによって設定されたすべての検索領域内で最も暗い色と最も明るい色との少なくとも一方を用いて前記黒目基準値を設定する、請求項７記載の情報処理プログラム。
【請求項９】
前記撮像手段により撮像された利用者の顔画像をグレースケール化するグレースケール化ステップを、前記コンピュータにさらに実行させ、
前記目領域値算出ステップは、前記グレースケール化ステップによってグレースケール化された顔画像から目領域値を算出する、請求項１記載の情報処理プログラム。
【請求項１０】
前記左右の目に対する検索領域をそれぞれ設定する検索領域設定ステップを、前記コンピュータにさらに実行させ、
前記目領域値算出ステップは、前記検索領域設定ステップによって設定された前記左右の目に対する検索領域のそれぞれから前記目領域値を算出する、請求項９記載の情報処理プログラム。
【請求項１１】
前記目領域値算出ステップは、前記撮像手段により撮像された利用者の顔画像から、左右の目の黒目領域の大きさを示す黒目領域値をそれぞれ算出する黒目領域値算出ステップを含む、請求項１０記載の情報処理プログラム。
【請求項１２】
前記グレースケール化ステップによってグレースケール化された顔画像から左右の目の特徴点を取得する特徴点取得ステップを、前記コンピュータにさらに実行させ、
前記検索領域設定ステップは、前記特徴点取得ステップによって取得された左右の目の特徴点を用いて前記左右の目に対する検索領域のそれぞれを設定する、請求項１１記載の情報処理プログラム。
【請求項１３】
前記検索領域設定ステップによって設定された前記左右の目に対する検索領域のそれぞれから黒目基準値を算出する黒目基準値算出ステップを、前記コンピュータにさらに実行させ、
前記黒目領域値算出ステップは、前記黒目基準値算出ステップによって算出された黒目基準値を閾値として前記黒目領域値を算出する、請求項１２記載の情報処理プログラム。
【請求項１４】
前記黒目基準値は、前記検索領域設定ステップによって設定された前記左右の目に対する検索領域のそれぞれにおける明度に関する値である、請求項１３記載の情報処理プログラム。
【請求項１５】
前記黒目基準値算出ステップは、前記検索領域設定ステップによって設定されたすべての検索領域内で最も暗い色と最も明るい色との少なくとも一方を用いて前記黒目基準値を設定する、請求項１４記載の情報処理プログラム。
【請求項１６】
前記検索領域設定ステップは、前記特徴点取得ステップによって取得された左右の目の特徴点を中心に、前記左右の目に対する検索領域をそれぞれ設定する、請求項５または１２記載の情報処理プログラム。
【請求項１７】
前記特徴点取得ステップによって取得された左右の目の特徴点間の距離を算出する距離算出ステップを、前記コンピュータにさらに実行させ、
前記検索領域設定ステップは、前記距離算出ステップによって算出された左右の目の特徴点間の距離を用いて、左右の目に対する検索領域をそれぞれ設定する、請求項５または１２記載の情報処理プログラム。
【請求項１８】
前記距離算出ステップによって算出された左右の目の特徴点間の距離を用いて、前記黒目領域値算出ステップによって算出された黒目領域値を正規化する正規化ステップを、前記コンピュータにさらに実行させ、
前記片目判定ステップは、前記正規化ステップによって正規化された左右の目それぞれに対する黒目領域値を比較することにより片目を閉じたかどうかを判定する、請求項１７記載の情報処理プログラム。
【請求項１９】
前記黒目領域値算出ステップは、
前記検索領域設定ステップによって設定された検索領域内の第１方向に走査して、最も暗い画素を第１方向基準値として設定する第１方向基準値設定ステップと、
前記第１方向基準値から続く前記黒目基準値より暗い画素の数を算出する画素数算出ステップとを含み、
前記画素数算出ステップによって算出された暗い画素数を前記黒目領域値とする、請求項７または１４記載の情報処理プログラム。
【請求項２０】
前記黒目領域値算出ステップは、前記第１方向に直交する第２方向に対して第１方向を順次ずらして、前記第１方向基準値設定ステップと前記画素数算出ステップとを繰り返し実行し、前記第１方向基準値から続く前記黒目基準値より暗い画素数を合算する画素数合算ステップを含み、
前記画素数合算ステップによって合算された暗い画素数を前記黒目領域値とする、請求項１９記載の情報処理プログラム。
【請求項２１】
前記黒目領域値算出ステップは、前記画素数算出ステップによって、前記第1方向基準値から続く前記黒目基準値より暗い画素の数が所定数以上に達したときには、無効値を前記黒目領域値として設定する、請求項１９または２０記載の情報処理プログラム。
【請求項２２】
前記特徴点取得ステップ、前記検索領域算出ステップ、前記黒目基準値算出ステップ、前記黒目領域値算出ステップは、前記コンピュータによって少なくとも２回繰り返し実行され、連続して前記黒目領域値に無効値が設定されていないときにのみ、前記片目判定ステップを前記コンピュータに実行させる、請求項２１記載の情報処理プログラム。
【請求項２３】
前記画素数算出ステップは、前記黒目基準値より明るい画素が所定数以上続いた場合には、前記１方向基準値から当該明るい画素までの数を前記黒目領域値として設定する、請求項１９または２０記載の情報処理プログラム。
【請求項２４】
前記片目判定ステップによって片目を閉じていることが判定された場合に、所定の処理を実行する処理ステップを、前記コンピュータにさらに実行させる、請求項１記載の情報処理プログラム。
【請求項２５】
撮像手段を備え、前記撮像手段により利用者の顔画像を取得する情報処理装置であって、
前記撮像手段により撮像された利用者の顔画像から、左右の目の領域の大きさを示す目領域値をそれぞれ算出する目領域値算出手段と、
前記目領域値算出手段によって算出された左右の目に対するそれぞれの目領域値を比較することにより片目を閉じたかどうかを判定する片目判定手段とを備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は情報処理プログラムおよび情報処理装置に関し、特にたとえば、撮像手段を備え、この撮像手段により利用者の顔画像を取得する、情報処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
背景技術の一例が特許文献１に開示される。この特許文献１の運転者の状態検出装置では、入力された運転者の顔画像が２値化され、２値化された画像内で眼球の存在領域が定められる。そして、その眼球の存在領域が走査され、連続黒色画素が検出されて、黒目部分が存在するかどうかの判定基準が設定された上で、目の開閉が検出される。
【特許文献１】特開平６−２２７２７８号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、特許文献１に開示される技術では、目の開閉を検出することができるが、片目だけを閉じる動作を検出することができない。
【０００４】
それゆえに、この発明の主たる目的は、新規な、情報処理プログラムおよび情報処理装置を提供することである。
【０００５】
また、この発明の他の目的は、片目だけを閉じる動作を検出することができる、情報処理プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、撮像手段を備え、撮像手段により利用者の顔画像を取得する情報処理装置のコンピュータで実行される情報処理プログラムであって、撮像手段により撮像された利用者の顔画像から、左右の目の領域の大きさを示す目領域値をそれぞれ算出する目領域値算出ステップと、目領域値算出ステップによって算出された左右の目に対するそれぞれの目領域値を比較することにより片目を閉じたかどうかを判定する片目判定ステップとを、コンピュータに実行させる、情報処理プログラムである。
【０００８】
第１の発明では、情報処理プログラムは、情報処理装置（１０）のコンピュータで実行される。情報処理装置は、撮像手段（６０）を備えており、この撮像手段によって利用者の顔画像を取得する。目領域値算出ステップ（３４，Ｓ１３）は、撮像手段により撮像された利用者の顔画像から、左右の目の領域（黒目の領域、白目の領域、または、それら両方を合わせた領域など）の大きさを示す目領域値をそれぞれ算出する。片目判定ステップ（３４、Ｓ１９，Ｓ２３）は、目領域値算出ステップによって算出された左右の目に対するそれぞれの目領域値を比較することにより片目を閉じたかどうかを判定する。
【０００９】
第１の発明によれば、左右の目領域値を比較するので、片目を閉じているか否かを判定することができる。
【００１０】
第２の発明は第１の発明に従属し、片目判定ステップは、左右の目に対するそれぞれの目領域値の比率に応じて片目が閉じたかどうかを判定する。
【００１１】
第２の発明では、片目判定ステップは左右の目に対するそれぞれの目領域値の比率に応じて片目が閉じたかどうかを判定する。たとえば、一方の目領域の面積が、他方の目領域の面積の３分の２よりも小さいとき、当該一方の目を閉じていると判定することができる。
【００１２】
第２の発明によれば、左右の目領域値の比率を求めて比較するだけなので、片目を閉じたかどうかの判定が容易である。
【００１３】
第３の発明は第１または第２の発明に従属し、左右の目に対する検索領域をそれぞれ設定する検索領域設定ステップを、コンピュータにさらに実行させ、目領域値算出ステップは、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれから目領域値を算出する。
【００１４】
第３の発明では、検索領域設定ステップ（３４，Ｓ７７）は、左右の目に対する検索領域をそれぞれ設定する。目領域値算出ステップは、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれから目領域値を算出する。つまり、顔画像の一部から左右の目領域値が算出される。
【００１５】
第３の発明によれば、検索領域を設定するので、顔全体を検索する必要がない。つまり、処理の効率化を図ることができる。
【００１６】
第４の発明は第３の発明に従属し、目領域値算出ステップは、撮像手段により撮像された利用者の顔画像から、左右の目の黒目領域の大きさを示す黒目領域値をそれぞれ算出する黒目領域値算出ステップを含む。
【００１７】
第４の発明では、目領域は、左右の目の黒目領域である。黒目領域値算出ステップは、左右の目の黒目領域の大きさを示す黒目領域値をそれぞれ算出する。たとえば、黒目領域値は、黒目領域の面積や黒目領域の長さ（縦方向に最も長い部分）についての数値である。ただし、目の色は、黒色に限定される必要はなく、他の色（茶色や青色など）も含む。
【００１８】
第４の発明によれば、黒目の領域の大きさを左右の目で比較するだけなので、比較的簡単な計算によって片目を閉じたかどうかを判断することができる。
【００１９】
第５の発明は第４の発明に従属し、撮像手段により撮像された利用者の顔画像から左右の目の特徴点を取得する特徴点取得ステップを、コンピュータにさらに実行させ、検索領域設定ステップは、特徴点取得ステップによって取得された左右の目の特徴点を用いて左右の目に対数する検索領域のそれぞれを設定する。
【００２０】
第５の発明では、特徴点取得ステップ（３４，Ｓ４３，Ｓ４７）は、撮像手段により撮像された利用者の顔画像から左右の目の特徴点を取得する。検索領域設定ステップは、特徴点取得ステップによって取得された左右の目の特徴点を用いて検索領域のそれぞれを設定する。たとえば、右目と左目との距離を用いて、左右の黒目領域を検索する領域がそれぞれ設定される。
【００２１】
第５の発明によれば、左右の目の特徴点を利用するので、確実に目の位置を認識して、黒目領域値を取得することができる。つまり、片目を閉じたことを正確に判定することができる。
【００２２】
第６の発明は第５の発明に従属し、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれから黒目基準値を算出する黒目基準値算出ステップを、コンピュータにさらに実行させ、黒目領域値算出ステップは、黒目基準値算出ステップによって算出された黒目基準値を閾値として黒目領域値を算出する。
【００２３】
第６の発明では、黒目基準値算出ステップ（３４，Ｓ７９，Ｓ８１，Ｓ８３，Ｓ８５，Ｓ８７，Ｓ８９）は、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれから黒目基準値を算出する。黒目領域値算出ステップは、この黒目基準値を閾値として黒目領域値を算出する。たとえば、黒目基準値を用いて、黒目か白目かを判定する。
【００２４】
第６の発明によれば、黒目基準値を閾値として黒目領域値を算出するので、個体差や撮影状況によるばらつきを無くして、正確に片目を閉じたことを判定することができる。
【００２５】
第７の発明は第６の発明に従属し、黒目基準値は、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれにおける明度に関する値である。
【００２６】
第７の発明では、黒目基準値は、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれにおける明度に関する値である。たとえば、左右の明るさの違いで、左右の黒目基準値が異なる値に設定される。
【００２７】
第７の発明によれば、個体差や撮影状況によるばらつきを吸収することができる。
【００２８】
第８の発明は第７の発明に従属し、黒目基準値算出ステップは、検索領域設定ステップによって設定されたすべての検索領域内で最も暗い色と最も明るい色との少なくとも一方を用いて黒目基準値を設定する。
【００２９】
第８の発明では、黒目基準値算出ステップは、検索領域設定ステップによって設定されたすべての検索領域内で、最も暗い色と最も明るい色との少なくとも一方を用いて黒目基準値を設定する。たとえば、左目の検索領域のうちの最も暗い色（または明るい色）と、右目の検索領域のうちの最も暗い色（または明るい色）とを比較することにより明るさの違いが検出され、黒目基準値が設定される。または、最も暗い色同士の比較結果と、最も明るい色同士の比較結果とから明るさの違いが検出され、黒目基準値が設定される。
【００３０】
第８の発明によれば、左右で一番明るい画素と一番暗い画素とを元に黒色かどうかを判別する基準値を設定するので、ノイズなどの影響を無くすことができる。
【００３１】
第９の発明は第１の発明に従属し、撮像手段により撮像された利用者の顔画像をグレースケール化するグレースケール化ステップを、コンピュータにさらに実行させ、黒目領域値算出ステップは、グレースケール化ステップによってグレースケール化された顔画像から黒目領域値を算出する。
【００３２】
第９の発明では、グレースケール化ステップ（３４，Ｓ７１）は、撮像手段により撮像された利用者の顔画像をグレースケール化する。つまり、顔画像のグレースケール画像が取得される。黒目領域算出ステップは、グレースケール化ステップによってグレースケール化された顔画像から黒目領域値を算出する。
【００３３】
第９の発明によれば、顔画像をグレースケール化するので、黒目領域を容易に検出することができる。
【００３４】
第１０の発明は第９の発明に従属し、左右の目に対する検索領域をそれぞれ設定する検索領域設定ステップを、コンピュータにさらに実行させ、目領域算出ステップは、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれから目領域値を算出する。
【００３５】
第１０の発明においても、第３の発明と同様に、処理の効率化を図ることができる。
【００３６】
第１１の発明は第１０の発明に従属し、目領域値算出ステップは、撮像手段により撮像された利用者の顔画像から、左右の目の黒目領域の大きさを示す黒目領域値をそれぞれ算出する黒目領域値算出ステップを含む。
【００３７】
第１１の発明では、第４の発明と同様に、目領域は、左右の目の黒目領域であり、黒目領域値算出ステップは、左右の目の黒目領域の大きさを示す黒目領域値をそれぞれ算出する。
【００３８】
第１１の発明においても、第４の発明と同様に、比較的簡単な計算によって片目を閉じたかどうかを判断することができる。
【００３９】
第１２の発明は第１１の発明に従属し、グレースケール化ステップによってグレースケール化された顔画像から左右の目の特徴点を取得する特徴点取得ステップを、コンピュータにさらに実行させ、検索領域設定ステップは、特徴点取得ステップによって取得された左右の目の特徴点を用いて左右の目に対する検索領域のそれぞれを設定する。
【００４０】
第１２の発明においても、第５の発明と同様に、確実に目の位置を認識して、黒目領域値を取得することができる。
【００４１】
第１３の発明は第１２の発明に従属し、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれから黒目基準値を算出する黒目基準値算出ステップを、コンピュータにさらに実行させ、黒目領域値算出ステップは、黒目基準値算出ステップによって算出された黒目基準値を閾値として黒目領域値を算出する。
【００４２】
第１３の発明においても、第６の発明と同様に、個体差や撮影状況によるばらつきを無くして、正確に片目を閉じたことを判定することができる。
【００４３】
第１４の発明は第１３の発明に従属し、黒目基準値は、検索領域設定ステップによって設定された左右の目に対する検索領域のそれぞれにおける明度に関する値である。
【００４４】
第１４の発明においても、第７の発明と同様に、個体差や撮影状況によるばらつきを吸収することができる。
【００４５】
第１５の発明は第１４の発明に従属し、黒目基準値算出ステップは、検索領域設定ステップによって設定されたすべての検索領域内で最も暗い色と最も明るい色との少なくとも一方を用いて黒目基準値を設定する。
【００４６】
第１５の発明においても、第８の発明と同様に、ノイズなどの影響を無くすことができる。
【００４７】
第１６の発明は第５または第１２の発明に従属し、検索領域設定ステップは、特徴点取得ステップによって取得された左右の目の特徴点を中心に、左右の目に対する検索領域をそれぞれ設定する。
【００４８】
第１６の発明では、検索領域設定ステップは、特徴点取得ステップによって取得された左右の目の特徴点を中心に、左右の目に対する検索領域をそれぞれ設定する。たとえば、特徴点は、左右の黒目領域のそれぞれの中心点に設定される。
【００４９】
第１６の発明によれば、左右の目の特徴点を中心に検索領域が設定されるので、確実に黒目領域を検索領域に収めることができる。
【００５０】
第１７の発明は第５または第１２の発明に従属し、特徴点取得ステップによって取得された左右の目の特徴点間の距離を算出する距離算出ステップを、コンピュータにさらに実行させ、検索領域設定ステップは、距離算出ステップによって算出された左右の目の特徴点間の距離を用いて、左右の目に対する検索領域をそれぞれ設定する。
【００５１】
第１７の発明では、距離算出ステップ（３４，Ｓ７５）は、特徴点取得ステップによって取得された左右の目の特徴点間の距離を算出する。検索領域設定ステップは、その特徴点間の距離を用いて、左右の目に対する検索領域をそれぞれ設定する。
【００５２】
第１７の発明によれば、左右の目の特徴点間の距離を用いて検索領域を設定するので、検索領域の設定が簡単である。また、そのような距離を用いることにより、検索領域に確実に黒目を収めることができる。
【００５３】
第１８の発明は第１７の発明に従属し、距離算出ステップによって算出された左右の目の特徴点間の距離を用いて、黒目領域値算出ステップによって算出された黒目領域値を正規化する正規化ステップを、コンピュータにさらに実行させ、片目判定ステップは、正規化ステップによって正規化された左右の目それぞれに対する黒目領域値を比較することにより片目を閉じたかどうかを判定する。
【００５４】
第１８の発明では、正規化ステップ（３４，Ｓ１６１，Ｓ２２３）は、距離算出ステップによって算出された左右の目の特徴点間の距離を用いて、黒目領域値算出ステップによって算出された黒目領域値を正規化する。片目判定ステップは、正規化ステップによって正規化された左右の目それぞれに対する黒目領域値を比較することにより片目を閉じたかどうかを判定する。
【００５５】
第１８の発明では、黒目領域値を左右の目の特徴点間の距離を用いて正規化するので、撮影された顔画像の縮尺に拘わらず、片目を閉じたかどうかを判定することができる。
【００５６】
第１９の発明は、第７または第１４の発明に従属し、黒目領域値算出ステップは、検索領域設定ステップによって設定された検索領域内の第１方向に走査して、最も暗い画素を第１方向基準値として設定する第１方向基準値設定ステップと、第１方向基準値から続く黒目基準値より暗い画素の数を算出する画素数算出ステップとを含み、画素数算出ステップによって算出された暗い画素数を黒目領域値とする。
【００５７】
第１９の発明では、第１方向基準値設定ステップ（３４，Ｓ９５，Ｓ１６７）は、検索領域設定ステップによって設定された検索領域内の第１方向に走査して、最も暗い画素を第１方向基準値として設定する。画素数算出ステップ（３４，Ｓ９７−Ｓ１２３，Ｓ１６９−Ｓ１９５）は、第１方向基準値から続く黒目基準値より暗い画素の数を算出する。黒目領域値算出ステップは、画素数算出ステップによって算出された暗い画素数を黒目領域値とする。
【００５８】
第１９の発明によれば、最も暗い画素を中心にして第１方向に連続する暗い画素の数を算出するので、正確な基準で黒色が連続するラインを算出することができる。
【００５９】
第２０の発明は第１９の発明に従属し、黒目領域値算出ステップは、第１方向に直交する第２方向に対して第１方向を順次ずらして、第１方向基準値設定ステップと画素数算出ステップとを繰り返し実行し、第１方向基準値から続く黒目基準値より暗い画素数を合算する画素数合算ステップを含み、画素数合算ステップによって合算された暗い画素数を黒目領域値とする。
【００６０】
第２０の発明では、画素数合算ステップは、第１方向の走査が終了すると、第１方向に直交する第２方向に対して第１方向を順次ずらして（３４，Ｓ１３１，Ｓ２０３）、第１方向基準値設定ステップと画素数算出ステップとを繰り返し実行し、第１方向基準値から続く黒目基準値より暗い画素数を合算する。つまり、黒目領域値算出ステップは、黒目基準値より暗い画素が第１方向に連続する画素数を、第１方向に直交する第２方向にずらして順次算出し、それらすべてを合算した暗い画素数を黒目領域とする。
【００６１】
第２０の発明によれば、第１方向に連続する暗い画素のラインを第１方向とは直交する第２方向に順次ずらして算出し、その合計を求めるので、正確に黒目領域値を求めることができる。
【００６２】
第２１の発明は第１９または第２０の発明に従属し、黒目領域値算出ステップは、画素数算出ステップによって、第1方向基準値から続く黒目基準値より暗い画素の数が所定数以上に達したときには、無効値を黒目領域値として設定する。
【００６３】
第２１の発明では、黒目領域値算出ステップは、画素数算出ステップによって、第1方向基準値から続く黒目基準値より暗い画素の数が所定数以上に達したときには（Ｓ１２５またはＳ１９７で“ＹＥＳ”）、黒目ではなく、髪の毛や睫毛であると判断して、無効値を黒目領域として設定する（３４，Ｓ１２９，Ｓ２０１）。
【００６４】
第２１の発明によれば、黒目領域値が所定数以上の場合には、黒目ではないと判断して、それを無効にするので、髪の毛が目にかかっていたり、睫毛の長い人が目を閉じていたりするような所望でない状態を、片目を閉じているかどうかの判定から除外することができる。
【００６５】
第２２の発明は第２１の発明に従属し、特徴点取得ステップ、検索領域算出ステップ、黒目基準値算出ステップ、黒目領域値算出ステップは、コンピュータによって少なくとも２回繰り返し実行され、連続して黒目領域値に無効値が設定されていないときにのみ、片目判定ステップをコンピュータに実行させる。
【００６６】
第２２の発明では、情報処理プログラムは、特徴点取得ステップ、検索領域算出ステップ、黒目基準値算出ステップ、黒目領域値算出ステップを、コンピュータに少なくとも２回繰り返し実行させる。そして、情報処理プログラムは、連続して黒目領域値に無効値が設定されていないときにのみ（Ｓ１７で“ＮＯ”）、片目判定ステップをコンピュータに実行させる。
【００６７】
第２２の発明によれば、複数回繰り返した結果から片目を閉じたかどうかを判定するので、安定した正しい判定を行なうことができる。
【００６８】
第２３の発明は第１９または第２０の発明に従属し、画素数算出ステップは、黒目基準値より明るい画素が所定数以上続いた場合には、第１方向基準値から当該明るい画素までの数を黒目領域値として設定する。
【００６９】
第２３の発明では、画素数算出ステップは、黒目基準値より明るい画素が所定数以上続いた場合には（Ｓ１０７，Ｓ１２１，Ｓ１７９，Ｓ１９３で“ＹＥＳ”）、第１方向基準値から当該明るい画素までの数を黒目領域値として設定する。つまり、黒目に含まれる白い部分を黒目と判断し、黒目と白目とを正確に区別するようにしてある。
【００７０】
第２３の発明によれば、黒目と白目とを正確に区別するので、黒目領域値を正しく算出することができる。
【００７１】
第２４の発明は第１の発明に従属し、片目判定ステップによって片目を閉じていることが判定された場合に、所定の処理を実行する処理ステップを、コンピュータにさらに実行させる。
【００７２】
第２４の発明では、情報処理プログラムは、片目判定ステップによって片目を閉じていることが判定された場合に（Ｓ１９，Ｓ２３で“ＹＥＳ”）、所定の処理を実行する処理ステップを、コンピュータにさらに実行させる。
【００７３】
第２４の発明によれば、ユーザが片目を閉じることにより、所定の処理が実行されるので、ユーザは手で操作を行う必要がない。
【００７４】
第２５の発明は、撮像手段を備え、撮像手段により利用者の顔画像を取得する情報処理装置であって、撮像手段により撮像された利用者の顔画像から、左右の目の領域の大きさを示す目領域値をそれぞれ算出する目領域値算出手段と、目領域値算出手段によって算出された左右の目に対するそれぞれの目領域値を比較することにより片目を閉じたかどうかを判定する片目判定手段とを備える、情報処理装置である。
【００７５】
第２５の発明においても、第１の発明と同様に、片目を閉じている動作を検出することができる。
【発明の効果】
【００７６】
この発明によれば、左右の目領域値を比較するので、その比較結果に応じて片目を閉じている動作を検出することができる。
【００７７】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００７８】
図１を参照して、この発明の実施例であるゲーム装置１０は、第１の液晶表示器（ＬＣＤ）１２および第２のＬＣＤ１４を含む。ＬＣＤ１２およびＬＣＤ１４は、所定の配置位置となるようにハウジング1６に収納される。この実施例では、ハウジング１６は、上側ハウジング１６ａと下側ハウジング１６ｂとによって構成され、ＬＣＤ１２は上側ハウジング１６ａに収納され、ＬＣＤ１４は下側ハウジング１６ｂに収納される。したがって、ＬＣＤ１２とＬＣＤ１４とは縦（上下）に並ぶように近接して配置される。
【００７９】
なお、この実施例では、表示器としてＬＣＤを用いるようにしてあるが、ＬＣＤに代えて、ＥＬ(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【００８０】
図１からも分かるように、上側ハウジング１６ａは、ＬＣＤ１２の平面形状よりも少し大きな平面形状を有し、一方主面からＬＣＤ１２の表示面を露出するように開口部が形成される。一方、下側ハウジング１６ｂは、その平面形状が上側ハウジング１６ａよりも横長に選ばれ、横方向の略中央部にＬＣＤ１４の表示面を露出するように開口部が形成される。下側ハウジング１６ｂのＬＣＤ１４の左方には電源スイッチ１８が設けられる。
【００８１】
また、上側ハウジング１６ａには、ＬＣＤ１２を挟んで左右に、スピーカ３６ａおよび３６ｂ（図２）のための音抜き孔２０ａおよび２０ｂが形成される。そして、下側ハウジング１６ｂには、マイク（図示せず）のためのマイク孔２０ｃが形成されるとともに、操作スイッチ２２（２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２Ｌおよび２２Ｒ）が設けられる。
【００８２】
また、上側ハウジング１６ａと下側ハウジング１６ｂとは、上側ハウジング１６ａの下辺（下端）と下側ハウジング１６ｂの上辺（上端）の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、ＬＣＤ１２の表示面とＬＣＤ１４の表示面とが対面するように、上側ハウジング１６ａを回動させて折りたたんでおけば、ＬＣＤ１２の表示面およびＬＣＤ１４の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング１６ａと下側ハウジング１６ｂとは、回動可能に連結せずに、それらを一体的（固定的）に設けたハウジング１６を形成するようにしてもよい。
【００８３】
操作スイッチ２２は、方向指示スイッチ（十字スイッチ）２２ａ，スタートスイッチ２２ｂ、セレクトスイッチ２２ｃ、動作スイッチ（Ａボタン）２２ｄ、動作スイッチ（Ｂボタン）２２ｅ、動作スイッチ（Ｘボタン）２２ｆ、動作スイッチ（Ｙボタン）２２ｇ、動作スイッチ（Ｌボタン）２２Ｌおよび動作スイッチ（Ｒボタン）２２Ｒを含む。スイッチ２２ａは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の左側に配置される。その他のスイッチ２２ｂ−２２ｇは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の右側に配置される。さらに、スイッチ２２Ｌおよびスイッチ２２Ｒは、それぞれ、上側ハウジング１６ａとの連結部を挟む下側ハウジング１６ｂの上側面の左右角部に配置される。
【００８４】
方向指示スイッチ２２ａは、ディジタルジョイスティックとして機能し、４つの押圧部の１つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。また、各押圧部には、特定の役割を割り当てることができ、４つの押圧部の１つを操作することによって、割り当てられた役割を指示（指定）することができる。
【００８５】
スタートスイッチ２２ｂは、プッシュボタンで構成され、ゲームを開始（再開）したり、一時停止(Pause)したりする等に用いられる。また、セレクトスイッチ２２ｃは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【００８６】
動作スイッチ２２ｄすなわちＡボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(ＲＰＧ)やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。さらに、方向指示スイッチ２２ａやセレクトスイッチ２２ｃで選択された項目を決定することもできる。動作スイッチ２２ｅすなわちＢボタンは、プッシュボタンで構成され、セレクトスイッチ２２ｃで選択したゲームモードの変更やＡボタン２２ｄで決定したアクションの取り消し等のために用いられる。
【００８７】
動作スイッチ２２ｆすなわちＸボタン、および動作スイッチ２２ｇすなわちＹボタンは、プッシュボタンで構成され、Ａボタン２２ｄとＢボタン２２ｅだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Ｘボタン２２ｆおよびＹボタン２２ｇは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてＸボタン２２ｆとＹボタン２２ｇとを必ずしも使用しなくてよい。
【００８８】
動作スイッチ２２Ｌ（左押しボタン）および動作スイッチ２２Ｒ（右押しボタン）は、プッシュボタンで構成され、左押しボタン（Ｌボタン）２２Ｌおよび右押しボタン（Ｒボタン）２２Ｒは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることができ、また、Ａボタン２２ｄおよびＢボタン２２ｅの補助的な操作に用いることができる。さらに、Ｌボタン２２ＬおよびＲボタン２２Ｒは、方向スイッチ２２ａ、Ａボタン２２ｄ，Ｂボタン２２ｅ，Ｘボタン２２ｆ，Ｙボタン２２ｇに割り当てられた役割を、他の役割に変更することができる。
【００８９】
また、ＬＣＤ１４の上面には、タッチパネル２４が装着される。タッチパネル２４としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル２４は、その上面をスティック２６ないしはペン（スタイラスペン）或いは指（以下、これらを「スティック２６等」という場合がある。）で、押圧したり、撫でたり、触れたりすることにより操作（タッチ入力）すると、スティック２６等の操作位置の座標を検出して、検出した座標（検出座標）に対応する座標データを出力する。
【００９０】
なお、この実施例では、ＬＣＤ１４（ＬＣＤ１２も同じ、または略同じ。）の表示面の解像度は２５６ｄｏｔ×１９２ｄｏｔであり、タッチパネル２４の検出精度も表示画面に対応して２５６ｄｏｔ×１９２ｄｏｔとしてあるが、タッチパネル２４の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
【００９１】
ＬＣＤ１２およびＬＣＤ１４には異なるゲーム画面が表示されてもよい。たとえば、レースゲームでは一方のＬＣＤに運転席からの視点による画面を表示し、他方のＬＣＤにレース（コース）全体の画面を表示することができる。また、ＲＰＧでは、一方のＬＣＤにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のＬＣＤにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、一方のＬＣＤ（この実施例では、ＬＣＤ１４）にゲームの操作画面（ゲーム画面）を表示し、他方のＬＣＤ（この実施例では、ＬＣＤ１２）に当該ゲームに関する情報（得点やレベルなど）を含む他のゲーム画面を表示することができる。さらには、２つのＬＣＤ１２およびＬＣＤ１４を合わせて１つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物（敵キャラクタ）を表示することもできる。
【００９２】
したがって、プレイヤはスティック２６等でタッチパネル２４を操作することにより、ＬＣＤ１４の画面に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、操作オブジェクトなどの画像を指示（操作）したり、コマンドを選択（入力）したりすることができる。また、３次元ゲーム空間に設けられる仮想カメラ（視点）の方向（視線の向き）を変化させたり、ゲーム画面（マップ）のスクロール(徐々に移動表示)方向を指示したりすることもできる。
【００９３】
なお、ゲームの種類によっては、タッチパネル２４を用いることにより、その他の入力指示も可能である。たとえば、座標入力指示を入力したり、ＬＣＤ１４において文字，数字，記号等を手書き入力したりすることができる。
【００９４】
このように、ゲーム装置１０は、２画面分の表示部となるＬＣＤ１２およびＬＣＤ１４を有し、いずれか一方（この実施例では、ＬＣＤ１４）の上面にタッチパネル２４が設けられるので、２画面（１２，１４）と２系統の操作部（２２，２４）とを有する構成になっている。
【００９５】
また、この実施例では、スティック２６は、たとえば下側ハウジング１６ｂに設けられる収納部（図１では点線で示す）に収納することができ、必要に応じて取り出される。ただし、スティック２６を設けない場合には、その収納部も設ける必要はない。
【００９６】
さらに、ゲーム装置１０はメモリカード（またはカートリッジ）２８を含み、このメモリカード２８は着脱自在であり、下側ハウジング１６ｂの裏面ないしは上端（天面）に設けられる挿入部３０ａ（図１では点線で示す）に挿入される。図１では省略するが、挿入部３０ａの奥部には、メモリカード２８の挿入方向先端部に設けられるコネクタ（図示せず）と接合するためのコネクタ３２ａ（図２参照）が設けられており、したがって、メモリカード２８が挿入部３０ａに挿入されると、コネクタ同士が接合され、ゲーム装置１０のＣＰＵコア３４（図２参照）がメモリカード２８にアクセス可能となる。
【００９７】
さらにまた、ゲーム装置１０はカメラカートリッジ６０を含み、このカメラカートリッジ６０は着脱自在であり、下側ハウジング１６ｂの裏面ないし下端（底面）に設けられる挿入部３０ｂ（図１では点線で示す）に挿入される。図１では省略するが、挿入部３０ｂの奥部には、カメラカートリッジ６０の挿入方向先端部に設けられるコネクタ（図示せず）と接合するためのコネクタ３２ｂ（図２参照）が設けられており、したがって、カメラカートリッジ６０が挿入部３０ｂに挿入されると、コネクタ同士が接合され、ゲーム装置１０のＣＰＵコア３４（図２参照）がカメラカートリッジ６０にアクセス可能となる。
【００９８】
なお、図１では表現できないが、上側ハウジング１６ａの音抜き孔２０ａおよび２０ｂと対応する位置であり、この上側ハウジング１６ａの内部にはスピーカ３６ａおよび３６ｂ（図２参照）が設けられる。
【００９９】
また、図１では省略するが、たとえば、下側ハウジング１６ｂの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング１６ｂの底面側には、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【０１００】
図２はゲーム装置１０の電気的な構成を示すブロック図である。図２を参照して、ゲーム装置１０は電子回路基板３８を含み、この電子回路基板３８には上述のＣＰＵコア３４等の回路コンポーネントが実装される。ＣＰＵコア３４は、バス４０を介して前述のコネクタ３２ａおよびコネクタ３２ｂに接続されるとともに、ＲＡＭ４２、第１のグラフィック処理ユニット（ＧＰＵ）４４、第２のＧＰＵ４６、入出カインターフェース回路（以下、「Ｉ／Ｆ回路」という。）４８およびＬＣＤコントローラ５０が接続される。
【０１０１】
コネクタ３２ａには、上述したように、メモリカード２８が着脱自在に接続される。メモリカード２８は、ＲＯＭ２８ａおよびＲＡＭ２８ｂを含み、図示は省略するが、ＲＯＭ２８ａおよびＲＡＭ２８ｂは、互いにバスで接続され、さらに、コネクタ３２ａと接合されるコネクタ（図示せず）に接続される。したがって、上述したように、ＣＰＵコア３４は、ＲＯＭ２８ａおよびＲＡＭ２８ｂにアクセスすることができるのである。
【０１０２】
ＲＯＭ２８ａは、ゲーム装置１０で実行すべきゲームのためのゲームプログラム、画像データ（文字やオブジェクトの画像、背景画像、アイテム画像、アイコン（ボタン）画像、メッセージ画像など）およびゲームに必要な音（音楽）のデータ（音データ）等を予め記憶する。ＲＡＭ（バックアップＲＡＭ）２８ｂは、そのゲームの途中データやゲームの結果データなどを記憶（セーブ）する。
【０１０３】
ＲＡＭ４２は、バッファメモリないしはワーキングメモリとして使用される。つまり、ＣＰＵコア３４は、メモリカード２８のＲＯＭ２８ａに記憶されたゲームプログラム、画像データおよび音データ等をＲＡＭ４２にロードし、ロードしたゲームプログラムを実行する。また、ＣＰＵコア３４は、ゲームの進行に応じて一時的に発生するデータ（ゲームデータやフラグデータ）をＲＡＭ４２に記憶しつつゲーム処理を実行する。
【０１０４】
なお、ゲームプログラム、画像データおよび音データ等は、ＲＯＭ２８ａから一度に全部、または部分的かつ順次的に読み出され、ＲＡＭ４２に記憶（ロード）される。
【０１０５】
ただし、メモリカード２８のＲＯＭ２８ａには、ゲーム以外の他のアプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データが記憶される場合もある。また、必要に応じて、音（音楽）データが記憶されてもよい。かかる場合には、ゲーム装置１０では、当該アプリケーションが実行される。
【０１０６】
また、コネクタ３２ｂには、上述したように、カメラカートリッジ６０が着脱自在に接続される。カメラカートリッジ６０は、ＣＣＤイメージャやＣＭＯＳイメージャのような撮像装置を用いたカメラ機能を備え、撮影した画像のデータ（撮影画像データ）を、コネクタ３２ｂおよびバスを介してＣＰＵコア３４に与える。ＣＰＵコア３４は、カメラカートリッジ６０からの撮影画像データをＲＡＭ４２に記憶（一時記憶）する。なお、図１では、カメラカートリッジ６０の筐体から露出して、撮像装置のレンズ６０ａが設けられる。
【０１０７】
ＧＰＵ４４およびＧＰＵ４６は、それぞれ、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、ＣＰＵコア３４からのグラフィックスコマンド（作画命令）を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、ＣＰＵコア３４は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム（ゲームプログラムに含まれる。）をＧＰＵ４４およびＧＰＵ４６のそれぞれに与える。
【０１０８】
また、ＧＰＵ４４には、第１のビデオＲＡＭ（以下、「ＶＲＡＭ」という。）５２が接続され、ＧＰＵ４６には、第２のＶＲＡＭ５４が接続される。ＧＰＵ４４およびＧＰＵ４６が作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンやテクスチャ等のデータ）は、ＧＰＵ４４およびＧＰＵ４６が、それぞれ、第１のＶＲＡＭ５２および第２のＶＲＡＭ５４にアクセスして取得する。
【０１０９】
なお、ＣＰＵコア３４は、描画に必要な画像データをＧＰＵ４４およびＧＰＵ４６を介して第１のＶＲＡＭ５２および第２のＶＲＡＭ５４に書き込む。ＧＰＵ４４はＶＲＡＭ５２にアクセスして描画のための画像データを作成し、ＧＰＵ４６はＶＲＡＭ５４にアクセスして描画のための画像データを作成する。
【０１１０】
ＶＲＡＭ５２およびＶＲＡＭ５４は、ＬＣＤコントローラ５０に接続される。ＬＣＤコントローラ５０はレジスタ５６を含み、レジスタ５６はたとえば１ビットで構成され、ＣＰＵコア３４の指示によって「０」または「１」の値（データ値）を記憶する。ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「０」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１２に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１４に出力する。また、ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「１」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１４に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１２に出力する。
【０１１１】
なお、ＬＣＤコントローラ５０は、ＶＲＡＭ５２およびＶＲＡＭ５４から直接画像データを読み出したり、ＧＰＵ４４およびＧＰＵ４６を介してＶＲＡＭ５２およびＶＲＡＭ５４から画像データを読み出したりする。
【０１１２】
Ｉ／Ｆ回路４８には、操作スイッチ２２，タッチパネル２４およびスピーカ３６ａ，３６ｂが接続される。ここで、操作スイッチ２２は、上述したスイッチ２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２ｇ，２２Ｌおよび２２Ｒであり、操作スイッチ２２が操作されると、対応する操作信号（操作データ）がＩ／Ｆ回路４８を介してＣＰＵコア３４に入力される。また、タッチパネル２４からの座標データがＩ／Ｆ回路４８を介してＣＰＵコア３４に入力される。さらに、ＣＰＵコア３４は、ゲーム音楽（ＢＧＭ）、効果音またはゲームキャラクタの音声（擬制音）などのゲームに必要な音データをＲＡＭ４２から読み出し、Ｉ／Ｆ回路４８を介してスピーカ３６ａ，３６ｂから出力する。
【０１１３】
図３はこの実施例におけるゲーム装置１０の使用例を示す図解図である。図１および図３から分かるように、図３では、図１に示すゲーム装置１０を反時計周りに約９０°回転した状態で、ユーザないしプレイヤ（以下、単に「ユーザ」という。）が両手で把持している。したがって、ＬＣＤ１２およびＬＣＤ１４は横並びに配置される。このようにして、カメラカートリッジ６０でユーザの顔を撮影するとともに、当該ユーザがＬＣＤ１２およびＬＣＤ１４に表示される画面を見て仮想ゲーム等のアプリケーションを実行できるようにしてある。
【０１１４】
図４は、上述のゲーム装置１０を用いて仮想ゲーム等のアプリケーションを実行する場合に、図３に示した状態で、ＬＣＤ１２に表示される画面１００およびＬＣＤ１４に表示される画面２００の例を示す。ただし、図４においては、簡単のため、ＬＣＤ１２およびＬＣＤ１４の表示面のみを示してある。画面１００は、その上部に表示領域１０２を含み、表示領域１０２には、たとえば、ユーザに対する質問の内容がテキスト表示される。
【０１１５】
また、画面２００は、その中央上部に表示領域２０２を含み、この表示領域２０２には、画像（この実施例では、ユーザの顔画像）が表示される。顔画像は、上述したカメラカートリッジ６０で撮影されたユーザの顔画像であり、その顔画像の鏡像が表示領域２０２に表示される。また、表示領域２０２の下方には、上記表示領域１０２に表示された質問に回答するための選択肢がボタン画像２０４およびボタン画像２０６のそれぞれにテキスト表示される。
【０１１６】
このようなアプリケーションでは、ユーザが片目を閉じる動作を行うことにより、ボタン画像（２０４，２０６）を押す（オンする）などの操作が可能である。つまり、ユーザは、操作スイッチ２２の操作やタッチパネル２４のタッチ入力（タッチ操作）に代えて、片目を閉じる動作によってコマンドを入力することができるのである。
【０１１７】
たとえば、図４に示す例では、画面１００の表示領域１０２に表示される質問に対して、左目または右目を閉じることにより、ボタン画像２０４またはボタン画像２０６を選択（オン）して、回答することができる。ただし、カメラカートリッジ６０によって、ユーザの顔画像が撮影され、片目を閉じる動作が認識される必要がある。ユーザの顔画像が撮影されているか否かをユーザが容易に判断できるようにするために、画面２００の表示領域２０２にカメラカートリッジ６０で撮影されている画像を表示するようにしてある。
【０１１８】
図５（Ａ）および図５（Ｂ）には、画面１００および画面２００の他の例が示される。図５（Ａ）に示す画面１００では、その上部に表示領域１１０にユーザに対する指示ないし通知（メッセージ）がテキスト表示される。また、図５（Ａ）に示す画面２００では、表示領域２０２の下方にボタン画像２０８が表示される。かかる場合には、ユーザが左目または右目を閉じることにより、ボタン画像２０８をオンして、画面１００に表示された指示ないしメッセージを見た（理解した）旨を入力することができる。
【０１１９】
また、図５（Ｂ）に示す画面１００では、その全体にゲーム画面の背景（マップ）が表示され、その中央下部にプレイヤキャラクタ１２０が表示される。一方、図５（Ｂ）に示す画面２００では、表示領域２０２の下方にボタン画像２１０およびボタン画像２１２が設けられる。かかる場合には、ユーザは、左目または右目を閉じることにより、ボタン画像２１０またはボタン画像２１２をオンして、プレイヤキャラクタ１２０の進行方向（左または右）を指示することができる。
【０１２０】
このように、片目を閉じる動作によってアプリケーションを操作することができる。ここで、片目を閉じる動作の検出方法について簡単に説明することにする。図６は、撮影されたユーザの顔画像およびその特徴点Ｐｉ（ｉ＝１，２，…，４１，４２）を示す図解図である。ただし、図６では、ＲＡＭ４２に展開される画像をカメラ座標系で示し、また、画像を展開する領域（展開領域）は、後述するように、ＬＣＤ１４の大きさに相当する領域がＲＡＭ４２に確保される。図６からも分かるように、展開領域の左上の頂点がカメラ座標の原点Ｏである。また、カメラ座標系では、図面の右方向がＸ軸のプラス方向であり、図面の下方向がＹ軸のプラス方向である。
【０１２１】
ユーザの顔画像の特徴点Ｐｉの位置は、カメラカートリッジ６０によって撮影されたユーザの顔画像に対して、エッジ検出等の画像処理を施すことによって検出される。特徴点Ｐｉが検出されると、この特徴点Ｐｉを用いて、撮影画像の一部を走査することにより、左目および右目の黒目の領域（黒目領域）についての面積がそれぞれ求められる。そして、右目と左目との黒目領域の面積の比較結果（比率）に応じて、片目（左目または右目）を閉じているかどうかを判断するようにしてある。以下、この実施例では、片目を閉じる動作をウインクと言うことがあるが、同時に両目を閉じる動作は含まない。
【０１２２】
図７は、図２に示したＲＡＭ４２のメモリマップの一例を示す図解図である。図７に示すように、ＲＡＭ４２はプログラム記憶領域７０およびデータ記憶領域７２を含む。プログラム記憶領域７０には、仮想ゲームなどのアプリケーションプログラム（情報処理プログラム）が記憶され、この情報処理プログラムは、メイン処理プログラム７０ａ、画像生成プログラム７０ｂ、画像表示プログラム７０ｃ、画像更新プログラム７０ｄ、ウインク検知プログラム７０ｅおよびコマンド処理プログラム７０ｆなどによって構成される。また、ウインク検知プログラム７０ｅは、特徴点検出プログラム７００および面積計測プログラム７０２などを含む。
【０１２３】
メイン処理プログラム７０ａは、アプリケーションのメインルーチンを処理するためのプログラムである。画像生成プログラム７０ｂは、ポリゴンデータやテクスチャデータなどを用いて、アプリケーションを実行するために必要な画像（アプリケーション画像）を生成するためのプログラムである。画像表示プログラム７０ｃは、画像生成プログラム７０ｂに従って生成されたアプリケーション画像をＬＣＤ１２およびＬＣＤ１４に表示するためのプログラムである。画像更新プログラム７０ｄは、ＬＣＤ１２およびＬＣＤ１４に表示される画面１００および画面２００を更新するためのプログラムである。
【０１２４】
ウインク検知プログラム７０ｅは、ユーザのウインクを検知するとともに、閉じている目を検出するためのプログラムである。特徴点検出プログラム７００は、一定時間（この実施例では、１０フレーム：フレームは画面更新単位時間（１／６０秒））毎に、カメラカートリッジ６０によって撮影（撮像）されたユーザの顔画像に対して、エッジ検出等の画像処理を施すことによって、顔画像における４２個の特徴点Ｐｉを検出および更新するためのプログラムである。面積計測プログラム７０２は、特徴点検出プログラム７００に従って検出された特徴点Ｐｉを用いて、右目の黒目領域の面積および左目の黒目領域の面積を、それぞれ計測するためのプログラムである。
【０１２５】
コマンド処理プログラム７０ｆは、ウインク検知プログラム７０ｅに従ってウインクおよび閉じている目が検出されたとき、閉じている目に応じた処理を実行するためのプログラムである。
【０１２６】
なお、図示は省略するが、情報処理プログラムは、音出力プログラムやバックアッププログラムなども含む。音出力プログラムは、図示しない音（音楽）データを用いて、アプリケーションを実行する場合に必要な音（音楽）を生成および出力するためのプログラムである。バックアッププログラムは、ユーザの指示やアプリケーションの実行中に発生するイベントに応じて、作業中のデータ（途中データ）または作業後のデータ（結果データ）を、メモリカード２８のＲＡＭ２８ｂに保存（セーブ）するためのプログラムである。
【０１２７】
図８は図７に示したデータ記憶領域７２の具体的な内容の一例を示す図解図である。図８に示すように、データ記憶領域７２には、特徴点データ７２ａ、今回の左目の黒目領域の面積データ７２ｂ、今回の右目の黒目領域の面積データ７２ｃ、前回の左目の黒目領域の面積データ７２ｄおよび前回の右目の黒目領域の面積データ７２ｅが記憶される。また、特徴点取得フラグ７２ｆ、ウインク検知実行フラグ７２ｇ、左目処理フラグ７２ｈおよび右目処理フラグ７２ｉが記憶される。
【０１２８】
特徴点データ７２ａは、特徴点検出プログラム７０ｆに従って検出されたすべての特徴点Ｐｉについての座標データである。今回の左目の黒目領域の面積データ７２ｂは、左目の黒目領域について今回計測された面積についてのデータである。今回の右目の黒目領域の面積データ７２ｃは、右目の黒目領域について今回計測された面積についてのデータである。前回の左目の黒目領域の面積データ７２ｄは、右目の黒目領域について前回計測された面積についてのデータである。前回の右目の黒目領域について前回計測された面積についてのデータである。
【０１２９】
特徴点取得フラグ７２ｆは、撮影画像データから特徴点Ｐｉを取得できたか否かを示すフラグであり、たとえば、１ビットのレジスタで構成される。撮影画像データから特徴点Ｐｉを取得できた場合には、特徴点取得フラグ（IsEnable）７２ｆが成立（true）され、レジスタにデータ値「１」が設定される。一方、撮影画像データから特徴点Ｐｉを取得できない場合には、特徴点取得フラグ７２ｆが不成立（false）され、レジスタにデータ値「０」が設定される。
【０１３０】
ウインク検知実行フラグ７２ｇは、ウインクの有無を実際に検知するか否かを示すフラグであり、たとえば、１ビットのレジスタで構成される。この実施例では、一定時間（１０フレーム）毎に、ウインク検知実行フラグ(IsCheck)７２ｇが成立され、レジスタにデータ値「１」が設定される。それ以外では、ウインク検知実行フラグ７２ｇが不成立され、レジスタにデータ値「０」が設定される。
【０１３１】
左目処理フラグ７２ｈは、左目のウインク処理を実行するかどうかを示すフラグであり、たとえば、１ビットのレジスタで構成される。この左目処理フラグ（Lexe）７２ｈは、ウインクが検知され、左目が閉じられていることが判断されたときに成立され、レジスタにデータ値「１」が設定される。それ以外では、左目処理フラグ７２ｈは不成立され、レジスタにデータ値「０」が設定される。
【０１３２】
右目処理フラグ７２ｉは、右目のウインク処理を実行するかどうかを示すフラグであり、たとえば、１ビットのレジスタで構成される。この右目処理フラグ（Rexe）７２ｉは、ウインクが検知され、右目が閉じられていることが判断されたときに成立され、レジスタにデータ値「１」が設定される。それ以外では、右目処理フラグ７２ｉは不成立され、レジスタにデータ値「０」が設定される。
【０１３３】
なお、図示は省略するが、画像データ、音データなどの他のデータ、他のフラグ、カウンタなどもデータ記憶領域７２に記憶される。
【０１３４】
具体的には、図２に示したＣＰＵコア３４が図９および図１０に示すウインク検知処理を実行する。図９に示すように、ＣＰＵコア３４がウインク検知処理を開始すると、ステップＳ１で、変数、カウンタおよびフラグを初期化する。具体的には、変数maxSizeL，maxSizeR，preMaxSizeL，preMaxSizeRのそれぞれに初期値（−１）を代入する。ただし、これらの変数の初期値（−１）は、無効（値）を意味する。また、変数Countに初期値（０）を代入する。そして、フラグIsEnable，IsCheck，Lexe，Rexeを初期値（false）に設定する。
【０１３５】
ただし、変数maxSizeLは、今回の左目の黒目領域の面積データ７２ｂであり、変数maxSizeRは、今回の右目の黒目領域の面積データ７２ｃであり、変数preMaxSizeLは、前回の左目の黒目領域の面積データ７２ｄであり、そして、変数preMaxSizeRは、前回の右目の黒目領域の面積データ７２ｅである。また、変数countは、フレーム数のカウント値であり、一定値（９）になると、リセット（０）される。上述したように、フラグIsEnableは、特徴点Ｐｉを取得できたか否かを示す特徴点取得フラグ７２ｆであり、フラグIsCheckは、ウインクの検知を行うか否かを示すウインク検知実行フラグ７２ｇであり、フラグLexeは、左目のウインク処理を実行するか否かを示す左目処理フラグ７２ｈであり、そして、フラグRexeは、右目のウインク処理を実行するか否かを示す右目処理フラグ７２ｉである。
【０１３６】
次に、ステップＳ３では、後述する特徴点データの更新処理（図１１参照）を実行する。続くステップＳ５では、フラグIsCheckがtrueであるかどうかを判断する。つまり、ＣＰＵコア３４は、今回ウインクの検知を行うかどうかを判定する。ステップＳ５で“ＮＯ”であれば、つまりフラグIsCheckがfalseであれば、今回ウインクの検知を行わないと判定して、図１０に示すステップＳ２７に進む。一方、ステップＳ５で“ＹＥＳ”であれば、つまりフラグIsCheckがtrueであれば、今回ウインクの検知を行うと判定して、ステップＳ７で、変数preMaxSizeLに変数maxSizeLを代入するとともに、変数preMaxSizeRに変数maxSizeRを代入する。つまり、ＣＰＵコア３４は、今回の左目の黒目領域の面積データ７２ｂのコピーを前回の左目の黒目領域の面積データ７２ｄとしてデータ記憶領域７２に記憶するとともに、今回の右目の黒目領域の面積データ７２ｃのコピーを前回の右目の黒目領域の面積データ７２ｅとしてデータ記憶領域７２に記憶する。
【０１３７】
そして、ステップＳ９で、フラグIsEnableがtrueであるかどうかを判断する。つまり、ＣＰＵコア３４は、特徴点Ｐｉを取得できたかどうかを判定する。ステップＳ９で“ＮＯ”であれば、つまりフラグIsEnableがfalseであれば、特徴点Ｐｉを取得できていないと判断して、ステップＳ１１で、変数maxSizeLおよび変数maxSizeRのそれぞれに−１（無効値）を代入して、ステップＳ２７に進む。一方、ステップＳ９で“ＹＥＳ”であれば、つまりフラグIsEnableがtrueであれば、特徴点Ｐｉを取得できたと判断して、ステップＳ１３で、後述する面積計測処理（図１２−図２１参照）を実行して、ステップＳ１５に進む。
【０１３８】
ステップＳ１５では、変数minLに、変数preMaxSizeLおよび変数maxSizeLのうち小さい方を代入し、変数maxLに、変数preMaxSizeLおよび変数maxSizeLのうち大きい方を代入し、変数minRに、変数preMaxSizeRおよび変数maxSizeRのうち小さい方を代入し、変数minRに、変数preMaxSizeRおよび変数maxSizeRのうち大きい方を代入する。次のステップＳ１７では、変数minLまたは変数minRが０よりも小さいかどうかを判断する。つまり、ＣＰＵコア３４は、変数minLまたは変数minRが−１（無効値）であるかどうかを判断する。
【０１３９】
ステップＳ１７で“ＹＥＳ”であれば、つまり変数minLまたは変数minRが０より小さければ、ウインクを検知することができないと判断して、ステップＳ２７に進む。一方、ステップＳ１７で“ＮＯ”であれば、つまり変数minLおよびminRが０以上であれば、ウインクを検知することができると判断して、図１０に示すステップＳ１９に進む。
【０１４０】
図１０に示すように、ステップＳ１９では、変数maxLが変数minR×２／３よりも小さいかどうかを判断する。つまり、ＣＰＵコア３４は、左目を閉じたかどうかを判断する。ステップＳ１９で“ＹＥＳ”であれば、つまり変数maxLが変数minR×２／３よりも小さければ、ステップＳ２１で、左目のウインク処理についてのフラグLexeをtrueに設定して、ウインク検知処理を終了する。一方、ステップＳ１９で“ＮＯ”であれば、つまり変数maxLが変数minR×２／３以上であれば、ステップＳ２３で、変数maxRが変数minL×２／３よりも小さいかどうかを判断する。つまり、ＣＰＵコア３４は、右目を閉じたかどうかを判断する。
【０１４１】
ステップＳ２３で“ＹＥＳ”であれば、つまり変数maxRが変数minL×２／３よりも小さければ、ステップＳ２５で、右目のウインク処理についてのフラグRexeをtrueに設定して、ウインク検知処理を終了する。一方、ステップＳ２３で“ＮＯ”であれば、つまり変数maxRが変数minL×２／３以上であれば、ステップＳ２７で、ウインク検知を終了するかどうかを判断する。ここでは、ＣＰＵコア３４は、ユーザの指示やアプリケーションのイベントの発生によって、ウインク検知を終了するかどうかを判断する。ステップＳ２７で“ＮＯ”であれば、つまりウインク検知を終了しない場合には、図９に示したステップＳ３に戻る。一方、ステップＳ２７で“ＹＥＳ”であれば、つまりウインク検知を終了する場合には、ウインク検知処理を終了する。
【０１４２】
なお、図示は省略するが、左目のウインク処理のフラグLexeまたは右目のウインク処理のフラグRexeがtrueである場合には、図４および図５を用いて説明したように、アプリケーションにおいて、そのウインクに従った処理が実行される。
【０１４３】
また、ステップＳ１９およびＳ２３の判断処理において使用した数式は、経験的に得られたものであるが、これに限定される必要はない。左目の黒目領域の面積と右目の黒目領域の面積との比率で、ウインクを検知している点に着目されたい。
【０１４４】
図１１は図９に示したステップＳ３の特徴点データの更新処理を示すフロー図である。図１１を参照して、ＣＰＵコア３４は、特徴点データの更新処理を開始すると、ステップＳ４１で、特徴点取得処理を終了したかどうかを判断する。なお、図示は省略したが、ウインク検知処理が開始され、初期化処理（Ｓ１）が実行されるときに、特徴点取得処理も開始される。この特徴点取得処理は、ウインク検知処理とは別に実行される。
【０１４５】
ステップＳ４１で“ＮＯ”であれば、つまり特徴点取得処理を終了していなければ、そのままステップＳ４９に進む。一方、ステップＳ４１で“ＹＥＳ”であれば、つまり特徴点取得処理を終了すれば、ステップＳ４３で、特徴点Ｐｉを取得できたかどうかを判断する。つまり、ＣＰＵコア３４は、特徴点取得処理の結果、特徴点データ７２ａがＲＡＭ４２に記憶（更新）されたかどうかを判断するのである。
【０１４６】
ステップＳ４３で“ＮＯ”であれば、つまり特徴点Ｐｉを取得できていない場合には、特徴点の取得（更新）に失敗したと判断して、ステップＳ４５で、フラグIsEnableをfalseに設定して、ステップＳ４９に進む。一方、ステップＳ４３で“ＹＥＳ”であれば、つまり特徴点Ｐｉを取得できた場合には、ステップＳ４７で、フラグIsEnableをtrueに設定するとともに、顔特徴点FacePointArray[42]に、取得した特徴点Ｐｉ（ｉ＝１−４２）の座標を代入して、ステップＳ４９に進む。
【０１４７】
ステップＳ４９では、変数Countに、（変数Count＋１）÷１０の余りを代入する。この実施例では、１０フレーム毎に、ウインクを検知するようにするため、変数Countに１加算した値を１０で割っている。つまり、その余りが０である場合に、前回ウインクを検知してから（または、ウインク検知処理の開始から）、１０フレームが経過したことになる。そして、ステップＳ５１では、変数Countが０である場合には、フラグIsCheckをtrueに設定し、変数Countが０以外である場合には、フラグIsCheckをfalseに設定して、ウインク検知処理にリターンする。
【０１４８】
図１２ないし図２１は、図９に示したステップＳ１３の面積計測処理を示すフロー図である。図１２に示すように、ＣＰＵコア３４は、面積計測処理を開始すると、ステップＳ７１で、検知用のグレースケール画像（２５６×１９２ｄｏｔ）を取得し、画素値Image[256][192]に代入する。つまり、ＣＰＵコア３４は、ＬＣＤ１４（またはＬＣＤ１２）と同じ大きさについてのグレースケール画像を取得する。たとえば、５ビット（３２階調）のグレースケール画像が取得される。ただし、グレースケール画像は、５ビットに限定される必要はなく、それよりも少ないビット数（低階調）でも、多いビット数（高階調）でも構わない。
【０１４９】
続くステップＳ７３では、変数EyeLに、左目の特徴点の座標（ｘ，ｙ）を代入し、変数EyeRに、右目の特徴点の座標（ｘ，ｙ）を代入する。ただし、ステップＳ７３においては、左目の特徴点（EyeL）は、その左目の黒目領域の中心点Ｐ１３であり、右目の特徴点（EyeR）は、その右目の黒目領域の中心点Ｐ２２である。
【０１５０】
なお、これ以降の面積計測処理においては、左目および右目のそれぞれの中心点Ｐ１３およびＰ２２を原点とするローカル座標が用いられる。また、各ローカル座標では、図面の右方向がＸ軸のプラス方向であり、図面の上方向がＹ軸のプラス方向である。
【０１５１】
次のステップＳ７５では、変数EyeDistanceに、√｛(EyeL.x−EyeR.x)2＋(EyeL.y−EyeR.y)2｝を代入する。ただし、変数EyeDistanceは、左目の黒目領域の中心と、右目の黒目領域の中心との距離である。また、EyeL.xは左目の特徴点の座標（変数EyeL）のｘ座標であり、EyeL.yは左目の特徴点の座標（変数EyeL）のｙ座標であり、EyeR.xは右目の特徴点の座標（変数EyeR）のｘ座標であり、そして、EyeR.yは右目の特徴点の座標（変数EyeR）のｙ座標である。以下、同様である。
【０１５２】
続いて、ステップＳ７７では、ステップＳ７５で得られた変数EyeDistanceを用いるなどして、各種変数が定義される。具体的には、変数searchWidthに定数Ａ×EyeDistanceが設定され、変数searchTopに定数Ｂ×EyeDistanceが設定され、変数searchBottomに定数Ｃ×EyeDistanceが設定される。また、変数checkWidthに定数Ｄ×EyeDistanceが設定され、変数calcWidthに定数Ｅ×EyeDistanceが設定され、変数eyeLimitに定数Ｆ×EyeDistanceが設定され、変数eyeSkipに定数Ｇ×EyeDistanceが設定され、変数addBrightMaxには定数Ｈが設定される。
【０１５３】
ただし、変数searchWidthは、最も黒い色および最も明るい色を検出する範囲のうちの横方向（Ｘ軸方向）の範囲（横幅）を規定するための変数である。変数searchTopは、最も黒い色および最も明るい色を検出する範囲のうち、縦方向（Ｙ軸方向）の上半分を規定するための変数である。変数searchBottomは、最も黒い色および最も明るい色を検出する範囲のうち、Ｙ軸方向の下半分を規定するための変数であり、負の数で表わされる。図２２（Ａ）に示すように、変数searchWidth、変数searchTopおよび変数searchBottomは、目（ここでは、左目）の中心eyeLを基準として、上記最も黒い色および最も明るい色を検出する範囲（色検出範囲）を規定する。
【０１５４】
また、変数checkWidthは、黒い色の領域についての最も面積の大きい場所を検出する範囲のうちのＸ軸方向の範囲を規定するための変数である。変数calcWidthは、黒い色の領域についての面積を計算するＸ軸方向の幅を規定するための変数である。変数eyeLimitは、Ｙ軸方向（縦）に黒い色のピクセルが連続する場合に、黒い色の面積の検出不能か否かを判定するための閾値を示す変数である。変数eyeSkipは、Ｙ軸方向に白い色のピクセルが連続した場合に、黒い色のピクセルが連続していると擬制するかどうかを判定するための閾値を示す変数である。変数addBrightMaxは、左右の目の周囲の明るさが違っていた場合に、明るさを補正する場合の補正値の最大値を示す変数である。
【０１５５】
さらに、この実施例では、定数Ａを「７」に設定し、定数Ｂを「３」に設定し、定数Ｃを「−８」に設定し、定数Ｄを「１０」に設定し、定数Ｅを「５」に設定し、定数Ｆを「４０」に設定し、定数Ｇを「２」に設定し、そして、定数Ｈを「１７」に設定してある。
【０１５６】
図１２に戻って、ステップＳ７９では、画素値imageのうち、数１で示される範囲の色をチェックして、最大値を変数maxColLに代入し、最小値を変数minColLに代入する。つまり、左目の周囲の最も明るい色（maxColL）および最も暗い色（minColL）が検出される。
【０１５７】
［数１］
EyeL.x−searchWidth≦x＜EyeL.x＋searchWidth
EyeL.y＋searchBottom≦y＜EyeL.y＋searchTop
また、ステップS８１では、画素値imageのうち、数２で示される範囲の色をチェックして、最大値を変数maxColRに代入し、最小値を変数maxColRに代入する。つまり、右目の周囲の最も明るい色（maxColR）および最も暗い色（minColR）が検出される。
【０１５８】
［数２］
EyeR.x−searchWidth≦x＜EyeR.x＋searchWidth
EyeR.y＋searchBottom≦y＜EyeR.y＋searchTop
図１３に示すように、次のステップＳ８３では、ステップＳ７９およびステップＳ８１で求めた変数maxColL，minColL，maxColR，minColRが数３を満たすかどうかを判断する。つまり、ＣＰＵコア３４は、右目の最も明るい色よりも左目の最も明るい色の画素値が小さく、かつ、右目の最も暗い色よりも左目の最も暗い色の画素値が小さいかどうかを判断する。
【０１５９】
［数３］
maxColL＜maxColR  かつ  minColL＜minColR
ステップＳ８３で“ＹＥＳ”であれば、つまり数３を満たす場合には、左目の周囲よりも右目の周囲の方が明るいと判断して、ステップＳ８５で、変数colLimitRに、colLimitR＋｛（maxColR−maxcolL）またはaddBrightmaxの小さい方｝を代入して、ステップＳ９１に進む。つまり、右目の黒目領域の面積を計測する場合の黒い部分か白い部分かを判断するための閾値が補正される。ただし、ステップＳ８５において、（maxColR−maxcolL）またはaddBrightmaxの小さい方をcolLimitRに加算するのは、補正幅の上限をaddBrightmaxとして、黒い部分か白い部分かを判断するための閾値が左右で極端に異なることを防ぐためである。
【０１６０】
一方、ステップＳ８３で“ＮＯ”であれば、つまり数３を満たさない場合には、右目の周囲よりも左目の周囲の方が明るい、または左目の周囲の明るさと右目の周囲の明るさとが同程度であると判断して、ステップＳ８７で、数４を満たすかどうかを判断する。つまり、ＣＰＵコア３４は、左目の最も明るい色よりも右目の最も明るい色の画素値が小さく、かつ、左目の最も暗い色よりも右目の最も暗い色の画素値が小さいかどうかを判断する。
【０１６１】
［数４］
maxColR＜maxColL  かつ  minColR＜minColL
ステップＳ８７で“ＮＯ”であれば、つまり数４を満たさない場合には、左目の周囲の明るさと右目の周囲の明るさとは同程度であると判断して、ステップＳ９１に進む。一方、ステップＳ８７で“ＹＥＳ”であれば、つまり数４を満たす場合には、右目の周囲よりも左目の周囲の方が明るいと判断して、ステップＳ８９で、変数colLimitLに、colLimitL＋｛（maxColL−maxColR）またはaddBrightmaxの小さい方｝を代入して、ステップＳ９１に進む。つまり、左目の黒目領域の面積を計測する場合の黒い部分か白い部分かを判断するための閾値が補正される。ただし、ステップＳ８９において、（maxColL−maxColR）またはaddBrightmaxの小さい方をcolLimitLに加算するのは、補正幅の上限をaddBrightmaxとして、黒い部分か白い部分かを判断するための閾値が左右で極端に異なることを防ぐためである。
【０１６２】
このように、ＣＰＵコア３４は、左目の周囲の明るさまたは右目の周囲の明るさを補正するのは、個人差（個体差）や撮影状況（環境）の差異（ばらつき）を吸収するためである。引いては、正しくウインクを検出するためである。また、この実施例では、明るさの違いを正しく判定するために、左目の周囲および右目の周囲の最も明るい色と最も暗い色との両方に基づいて判定するようにしてあるが、最も明るい色同士または最も暗い色同士を比較することによっても、明るさを判定することは可能である。
【０１６３】
このように、明るさの違いによる閾値の補正を終了すると、ＣＰＵコア３４は、ステップＳ９１以降において、左目の黒目領域の面積を計測し（Ｓ９１−Ｓ１６１）、その後、右目の黒目領域の面積を計測する（Ｓ１６３−Ｓ２３３）。
【０１６４】
ここで、図２２（Ｂ）には、左目の黒目領域の面積を計測する場合の走査範囲（面積走査範囲）が示される。この面積走査範囲は、黒目領域の面積を検索する領域（検索領域）であり、上述した変数checkWidth，searchTop，searchBottomによって規定される。図２２（Ｂ）では分かり難いが、走査する場合には、最も暗い色の画素を中心として、走査方向を上下に分けて、たとえば、面積走査範囲の左端（N=1）から順次、縦方向に黒色が連続するドット数をカウントする。これを列毎に繰り返し、右端すなわち最終列（N=2*checkWidth-1）まで実行する。そして、上下方向に連続するドット数をすべての列について合計した値を黒目領域の面積として決定する。図示は省略するが、右目の黒色領域の面積を計測する場合についても同様である。以下、具体的な処理についてフロー図を用いて説明する。
【０１６５】
図１３に示すように、ステップＳ９１では、変数Ｉ（走査する列の数）を初期化（I=0）する。続くステップＳ９３では、変数CheckXに、EyeL.x−checkWidth＋Ｉを代入する。つまり、走査の開始位置（Ｘ座標）が設定される。次に、ステップＳ９５では、画素値imageのうち、数５で示される範囲の中で最小値になるyを求めて、変数CheckYに代入する。ただし、変数CheckXは着目する画素（ドット）のｘ座標であり、変数CheckYは着目する画素のｙ座標であり、そのうちの最も暗い色となる画素のｙ座標を求めるのである。
【０１６６】
［数５］
X＝CheckX
EyeL.y＋searchBottom≦Y＜EyeL.y＋searchTop
次のステップＳ９７では、変数nLen，nLight，yOffsetのそれぞれに初期値（０）を設定し、図１４に示すステップＳ９９で、数６を満たすかどうかを判断する。ただし、変数nLenは、黒色のドットが縦に連続している数を示す変数である。また、変数nLightは、明るい色のドットが縦に連続している数を示す変数である。さらに、変数yOffsetは、サブルーチン（Ｓ９９−Ｓ１０９）用の変数である。つまり、ＣＰＵ３４は、数６に従って、変数CheckYが面積走査範囲内であるかどうかを判断している。
【０１６７】
［数６］
0≦CheckY＋yOffset＜256
ステップＳ９９で“ＮＯ”であれば、つまり数６を満たさない場合には、変数CheckYが面積走査範囲外であると判断して、ステップＳ１１１にそのまま進む。一方、ステップＳ９９で“ＹＥＳ”であれば、つまり数６を満たす場合には、変数CheckYが面積走査範囲内であると判断して、ステップＳ１０１で、数７を満たすかどうかを判断する。つまり、着目している画素（ドット）の画素値image[CheckY＋yOffset][CheckX]が、黒い部分であるか白い部分であるかを判別するのである。
【０１６８】
［数７］
Image[CheckY＋yOffset][CheckX]＜colLimitL
ステップＳ１０１で“ＹＥＳ”であれば、つまり数７を満たす場合には、着目する画素（ドット）が黒い部分であると判別して、ステップＳ１０３で、変数nLightを初期化して（nLight=0）、ステップＳ１０７に進む。一方、ステップＳ１０１で“ＮＯ”であれば、つまり数７を満たさない場合には、着目する画素（ドット）が白い部分であると判別して、ステップＳ１０５で、変数nLightをインクリメントして（nLight←nLight＋1）、ステップＳ１０７に進む。
【０１６９】
ステップＳ１０７では、数８を満たすかどうかを判断する。つまり、縦方向に白い部分が連続する数（変数nLight）が黒い部分であると擬制するための閾値（変数eyeSkip）以上であるかどうかを判断することにより、黒目以外の白い部分であるかどうかを判定する。
【０１７０】
［数８］
nLight≧eyeSkip
ステップＳ１０７で“ＮＯ”であれば、つまり数８を満たさない場合には、ステップＳ１０９で、変数nLenをインクリメントするとともに（nLen←nLen＋1）、変数yOffsetをインクリメントして（yOffset←yOffset＋1）、ステップＳ９９に戻る。つまり、次の画素について黒い部分であるか白い部分であるかを調べる。一方、ステップＳ１０７で“ＹＥＳ”であれば、つまり数８を満たす場合には、黒目以外の白い部分であると判断して、ステップＳ１１１で、面積走査範囲の下側の画素について走査するべく、変数nLingtを初期化するとともに（nLingt←0）、変数yOffsetを初期化して（yOffset←-1）、図１５に示すステップＳ１１３で、上記の数６を満たすかどうかを判断する。つまり、変数CheckYが面積走査範囲内であるかどうかを判断する。
【０１７１】
ステップＳ１１３で“ＮＯ”であれば、つまり数６を満たさない場合には、そのままステップＳ１２５に進む。一方、ステップＳ１１３で“ＹＥＳ”であれば、つまり数６を満たす場合には、ステップＳ１１５で、上記の数７を満たすかどうかを判断する。つまり、着目する画素が黒い部分であるか白い部分であるかを判別する。ステップＳ１１５で“ＹＥＳ”であれば、つまり数７を満たす場合には、着目する画素が黒い部分であると判別して、ステップＳ１１７で、変数nLightを初期化して（nLight=0）、ステップＳ１２１に進む。一方、ステップＳ１１５で“ＮＯ”であれば、つまり数７を満たさない場合には、着目する画素が白い部分であると判別して、ステップＳ１１９で、変数nLightをインクリメントして（nLight←nLight＋1）、ステップＳ１２１に進む。
【０１７２】
ステップＳ１２１では、上記の数８を満たすかどうかを判断する。つまり、黒目以外の白い部分であるかどうかを判定する。ステップＳ１２１で“ＮＯ”であれば、つまり数８を満たさない場合には、ステップＳ１２３で、変数nLenをインクリメントするとともに（nLen←nLen＋1）、変数yOffsetをデクリメントして（yOffset←yOffset-1）、ステップＳ１１３に戻る。つまり、次の画素について黒い部分であるか白い部分であるかを調べる。一方、ステップＳ１２１で“ＹＥＳ”であれば、つまり数８を満たす場合には、黒目以外の白い部分であると判断して、ステップＳ１２５に進む。
【０１７３】
ステップＳ１２５では、数９を満たすかどうかを判断する。これは、変数nLenが変数eyeLimitを超えるかどうかを判断することにより、髪の毛が目にかかっていたり、睫毛の長いユーザが目を閉じていたりするような所望でない場合の検出結果を無効にするための処理である。つまり、所望でない場合には、黒目の部分としてカウントした変数nLenを面積の計測から除外するのである。
【０１７４】
［数９］
nLen≧eyeLimit
ステップＳ１２５で“ＮＯ”であれば、つまり数９を満たさない場合には、黒目の部分であると判断して、ステップＳ１２７で、変数LenArrey[I]に変数nLenの値を代入して、ステップＳ１３１に進む。つまり、今回調べた列（Ｉ列）において、黒い部分が連続する画素の数（LenArrey[I]）が記憶される。一方、ステップＳ１２５で“ＹＥＳ”であれば、つまり数９を満たす場合には、黒目以外の黒い部分であると判断して、ステップＳ１２９で、変数LenArrey[I]に−１（無効値）を代入して、ステップＳ１３１に進む。
【０１７５】
ステップＳ１３１では、変数Iをインクリメントする（I=I+1）。そして、ステップＳ１３３では、数１０を満たすかどうかを判断する。つまり、面積走査範囲のすべてについて走査したかどうかを判断する。
【０１７６】
［数１０］
I＞checkWidth×2−1
ステップＳ１３３で“ＮＯ”であれば、つまり数１０を満たさない場合には、次の列を走査するべく、図１３のステップＳ９３に戻る。一方、ステップＳ１３３で“ＹＥＳ”であれば、つまり数１０を満たす場合には、面積走査範囲のすべてについて走査したと判断して、図１６に示すステップＳ１３５で、変数maxSizeLを初期化するとともに（maxSizeL←−1）、変数StartXを初期化する（StartX=0）。続いて、ステップＳ１３７では、変数Sizeを初期化して（Size←0）、ステップＳ１３９では、変数Iに変数StartXを代入する。ただし、変数maxSizeLは、面積の合計値(Size)の最大値である。また、変数StartXは、サブルーチン（Ｓ１３９−Ｓ１５７）用の変数である。さらに、変数Sizeは、変数chalcWidth分の面積の合計値である。
【０１７７】
そして、ステップＳ１４１では、数１１を満たすかどうかを判断する。つまり、変数LenArray[I]が無効でないかどうかを判断するのである。
【０１７８】
［数１１］
LenArray[I]≧0
ステップＳ１４１で“ＮＯ”であれば、つまり数１１を満たさない場合には、ステップＳ１４３で、変数Sizeに無効値（-1）を代入して、ステップＳ１５１に進む。このようにして、一列でも無効値が含まれる場合には、今回の面積の計測処理を無効にするようにしてある。一方、ステップＳ１４１で“ＹＥＳ”であれば、つまり数１１を満たす場合には、ステップＳ１４５で、変数Sizeに、Size＋LenArray[I]を代入し、ステップＳ１４７で、変数Iをインクリメントして（I=I+1）、ステップＳ１４９に進む。ステップＳ１４９では、数１２を満たすかどうかを判断する。つまり、変数Ｉが面積走査範囲外であるかどうかを判断する。
【０１７９】
［数１２］
I＞StartX＋calcWidth−1
ステップＳ１４９で“ＮＯ”であれば、つまり数１２を満たさない場合には、ステップＳ１４１に戻る。一方、ステップＳ１４９で“ＹＥＳ”であれば、つまり数１２を満たす場合には、ステップＳ１５１に進む。ステップＳ１５１では、数１３を満たすかどうかを判断する。つまり、面積の合計値の最大値が今回算出した面積の合計値よりも小さいかどうかを判断する。
【０１８０】
［数１３］
maxSizeL＜Size
ステップＳ１５１で“ＹＥＳ”であれば、つまり数１３を満たす場合には、ステップＳ１５３で、変数maxSizeLに変数Sizeを代入して、ステップＳ１５５に進む。一方、ステップＳ１５１で“ＮＯ”であれば、つまり数１３を満たさない場合には、ステップＳ１５５で、変数StartXをインクリメントする（StartX=StartX+1）。そして、ステップＳ１５７で、数１４を満たすかどうかを判断する。つまり、変数StartXが面積走査範囲外であるかどうかを判断する。
【０１８１】
［数１４］
StartX＞checkWidth×２−calcWidth
ステップＳ１５７で“ＮＯ”であれば、つまり数１４を満たしていない場合には、ステップＳ１３９に戻る。一方、ステップＳ１５７で“ＹＥＳ”であれば、つまり数１４を満たしている場合には、図１７に示すステップＳ１５９で、変数maxSizeが０未満であるかどうかを判断する。つまり、面積の合計値の最大値が無効であるかどうかを判断するのである。
【０１８２】
ステップＳ１５９で“ＹＥＳ”であれば、つまり変数maxSizeが０未満であれば、そのままステップＳ１６３に進む。一方、ステップＳ１５９で“ＮＯ”であれば、つまり変数maxSizeが０以上であれば、ステップＳ１６１で、変数maxSizeLを正規化する。これは、撮影された顔画像の縮尺に無関係な値に変換するためである。具体的には、数１５に従って、変数maxSizeLは正規化される。
【０１８３】
［数１５］
maxSizeL＝maxSizeL／EyeDistance／EyeDistance
このようにして、左目の黒目領域の面積が求められる。続いて、右目の黒目領域の面積が求められるが、上述した左目の黒目領域の面積の計測方法と略同じであるため、重複した説明については簡単に説明することにする。
【０１８４】
図１７に戻って、ステップＳ１６３では、変数Iを初期化する（I=0）。続くステップＳ１６５では、変数checkXに、EyeR.x−checkWidth＋Ｉを代入する。次に、ステップＳ１６７では、画素値の数１６で示される範囲の中で最小値になるyを求めて、変数checkYに代入する。
【０１８５】
［数１６］
X＝CheckX
EyeR.y＋searchBottom≦Y＜EyeR.y＋searchTop
次のステップＳ１６９では、変数nLen，nLight，yOffsetのそれぞれに初期値（０）を設定し、図１８に示すステップＳ１７１で、上記の数６を満たすかどうかを判断する。つまり、変数CheckYが面積走査範囲内であるかどうかを判断している。ステップＳ１７１で“ＮＯ”であれば、つまり数６を満たさない場合には、変数CheckYが面積走査範囲外であると判断して、ステップＳ１８３にそのまま進む。一方、ステップＳ１７１で“ＹＥＳ”であれば、つまり数６を満たす場合には、変数CheckYが面積走査範囲内でＲと判断して、ステップＳ１７３で、数１７を満たすかどうかを判断する。つまり、着目している画素（ドット）の画素値image[CheckY＋yOffset][CheckX]が、黒い部分であるか白い部分であるかを判別するのである。
【０１８６】
［数１７］
Image[CheckY＋yOffset][CheckX]＜colLimitR
ステップＳ１７３で“ＹＥＳ”であれば、つまり数１７を満たす場合には、着目する画素が黒い部分であると判別して、ステップＳ１７５で、変数nLightを初期化して（nLight=0）、ステップＳ１７９に進む。一方、ステップＳ１７３で“ＮＯ”であれば、つまり数１７を満たさない場合には、着目する画素が白い部分であると判別して、ステップＳ１７７で、変数nLightをインクリメントして（nLight←nLight＋1）、ステップＳ１７９に進む。
【０１８７】
ステップＳ１７９では、上記の数８を満たすかどうかを判断する。つまり、縦方向に白い部分が連続する数（変数nLight）が黒い部分であると擬制するための閾値（変数eyeSkip）以上であるかどうかを判断することにより、黒目以外の白い部分であるかどうかを判定する。ステップＳ１７９で“ＮＯ”であれば、つまり数８を満たさない場合には、ステップＳ１８１で、変数nLenをインクリメントするとともに（nLen←nLen＋1）、変数yOffsetをインクリメントして（yOffset←yOffset＋1）、ステップＳ１７１に戻る。一方、ステップＳ１７９で“ＹＥＳ”であれば、つまり数８を満たす場合には、黒目以外の白い部分であると判断して、ステップＳ１８３で、面積走査範囲の下側の画素について走査するべく、変数nLingtを初期化するとともに（nLingt←0）、変数yOffsetを初期化して（yOffset←−1）、図１９に示すステップＳ１８５で、上記の数６を満たすかどうかを判断する。つまり、変数CheckYが面積走査範囲内であるかどうかを判断する。
【０１８８】
ステップＳ１８５で“ＮＯ”であれば、つまり数６を満たさない場合には、そのままステップＳ１９７に進む。一方、ステップＳ１８５で“ＹＥＳ”であれば、つまり数６を満たす場合には、ステップＳ１８７で、上記の数１７
を満たすかどうかを判断する。つまり、着目する画素が黒い部分であるか白い部分であるかを判別する。ステップＳ１８７で“ＹＥＳ”であれば、つまり数１６を満たす場合には、着目する画素が黒い部分であると判別して、ステップＳ１８９で、変数nLightを初期化して（nLight=0）、ステップＳ１９３に進む。一方、ステップＳ１８７で“ＮＯ”であれば、つまり数１６を満たさない場合には、着目する画素が白い部分であると判別して、ステップＳ１９１で、変数nLightをインクリメントして（nLight←nLight＋1）、ステップＳ１９３に進む。
【０１８９】
ステップＳ１９３では、上記の数８を満たすかどうかを判断する。つまり、黒目以外の白い部分であるかどうかを判定する。ステップＳ１９３で“ＮＯ”であれば、つまり数８を満たさない場合には、ステップＳ１９５で、変数nLenをインクリメントするとともに（nLen←nLen＋1）、変数yOffsetをデクリメントして（yOffset←yOffset−1）、ステップＳ１８５に戻る。つまり、次の画素について黒い部分であるか白い部分であるかを調べる。一方、ステップＳ１９３で“ＹＥＳ”であれば、つまり数８を満たす場合には、黒目以外の白い部分であると判断して、ステップＳ１９７に進む。
【０１９０】
ステップＳ１９７では、上記の数９を満たすかどうかを判断する。ステップＳ１９７で“ＮＯ”であれば、つまり数９を満たさない場合には、黒目の部分であると判断して、ステップＳ１９９で、変数LenArrey[I]に変数nLenの値を代入して、ステップＳ２０３に進む。一方、ステップＳ１９７で“ＹＥＳ”であれば、つまり数９を満たす場合には、黒目以外の黒い部分であると判断して、ステップＳ２０１で、変数LenArrey[I]に−１（無効値）を代入して、ステップＳ２０３に進む。
【０１９１】
ステップＳ２０３では、変数Iをインクリメントする（I=I+1）。そして、ステップＳ２０５では、上記の数１０を満たすかどうかを判断する。つまり、面積走査範囲のすべてについて走査したかどうかを判断する。ステップＳ２０５で“ＮＯ”であれば、つまり数１０を満たさない場合には、次の列を走査するべく、図１７のステップＳ１６５に戻る。一方、ステップＳ２０５で“ＹＥＳ”であれば、つまり数１０を満たす場合には、面積走査範囲のすべてについて走査したと判断して、図２０に示すステップＳ２０７で、変数maxSizeRを初期化するとともに（maxSizeR←−1）、変数StartXを初期化する（StartX=0）。続いて、ステップＳ２０９では、変数Sizeを初期化して（Size←0）、ステップＳ２１１では、変数Iに変数StartXを代入する。
【０１９２】
そして、ステップＳ２１３では、上記の数１１を満たすかどうかを判断する。つまり、変数LenArray[I]が無効でないかどうかを判断するのである。ステップＳ２１３で“ＮＯ”であれば、つまり数１１を満たさない場合には、ステップＳ２１５で、変数Sizeに無効値（-1）を代入して、ステップＳ２２３に進む。一方、ステップＳ２１３で“ＹＥＳ”であれば、つまり数１１を満たす場合には、ステップＳ２１７で、変数Sizeに、Size＋LenArray[I]を代入し、ステップＳ２１９で、変数Iをインクリメントして（I=I+1）、ステップＳ２２１に進む。ステップＳ２２１では、上記の数１２を満たすかどうかを判断する。
【０１９３】
ステップＳ２２１で“ＮＯ”であれば、つまり数１２を満たさない場合には、ステップＳ２１３に戻る。一方、ステップＳ２２１で“ＹＥＳ”であれば、つまり数１２を満たす場合には、ステップＳ２２３に進む。ステップＳ２２３では、上記の数１８を満たすかどうかを判断する。
【０１９４】
［数１８］
maxSizeR＜Size
ステップＳ２２３で“ＹＥＳ”であれば、つまり数１８を満たす場合には、ステップＳ２２５で、変数maxSizeRに変数Sizeを代入して、ステップＳ２２７に進む。一方、ステップＳ２２３で“ＮＯ”であれば、つまり数１８を満たさない場合には、ステップＳ２２７で、変数StartXをインクリメントする（StartX=StartX+1）。そして、ステップＳ２２９で、上記の数１４を満たすかどうかを判断する。つまり、変数StartXが走査する範囲を超えたかどうかを判断する。
【０１９５】
ステップＳ２２９で“ＮＯ”であれば、つまり数１４を満たしていない場合には、ステップＳ２１１に戻る。一方、ステップＳ２２９で“ＹＥＳ”であれば、つまり数１４を満たしている場合には、図２１に示すステップＳ２３１で、変数maxSizeが０未満であるかどうかを判断する。ステップＳ２３１で“ＹＥＳ”であれば、つまり変数maxSizeが０未満であれば、そのまま図９に示したウインク検知処理にリターンする。一方、ステップＳ２３１で“ＮＯ”であれば、つまり変数maxSizeが０以上であれば、ステップＳ２３３で、変数maxSizeRを正規化して、ウインク検知処理にリターンする。なお、変数maxSizeRの正規化は、上記の変数maxSizeLの正規化と同様であり、具体的には、数１９に従って、変数maxSizeRは正規化される。
【０１９６】
［数１９］
maxSizeR＝maxSizeR／EyeDistance／EyeDistance
この実施例によれば、左右の黒目領域の大きさを比較するので、片目を閉じる動作を認識することができる。また、黒目領域の大きさを比較するだけなので、処理負担を軽減することができる。
【０１９７】
なお、この実施例では、一例として黒目領域の面積を比較するようにしたが、これに限定される必要はない。たとえば、黒目領域のうち、黒い部分が連続する長さが最も長い列同士を左目と右目とで比較するようにしてもよい。また、左右の目の白目領域の大きさを表わす数値（面積や縦方向における最大長さ）を比較するようにしてもよい。
【０１９８】
また、この実施例では、一例として黒目領域の面積を比較するようにしたが、当該領域（虹彩と瞳孔とを含む領域）が他の色（茶色や青色など）であっても同様である。つまり、この明細書では、黒目領域は黒以外の色である場合も含む。
【０１９９】
さらに、この実施例では、撮影画像のグレースケール画像を用いて、黒目領域の面積を計測し、ウインクを検出するようにしたが、カラー画像を用いるようにしてもよい。かかる場合には、たとえば、白目領域と黒目領域との境界、または目の領域と皮膚との境界を、色の違いによって検出し、左右の目における黒目領域と白目領域との境界線の長さの違いや左右の目の領域の大きさの違いで、ウインクを検出することも可能である。
【０２００】
さらにまた、この実施例では、カメラカートリッジをゲーム装置に着脱可能に設けるようにしたが、ゲーム装置に固定的に設けるようにしてもよい。または、顔画像データをゲーム装置とは別個独立に設けられたカメラから受信するようにしてもよい。かかる場合には、たとえば、ゲーム装置とカメラとを近距離無線により接続したり、ケーブルで接続したりすればよい。
【図面の簡単な説明】
【０２０１】
【図１】図１はこの発明のゲーム装置の一実施例を示す図解図である。
【図２】図２は図１に示すゲーム装置の電気的な構成を示すブロック図である。
【図３】図３は図１に示すゲーム装置の使用例を示す図解図である。
【図４】図４は図３に示すゲーム装置の第１のＬＣＤおよび第２のＬＣＤに表示されるゲーム画面の一例を示す図解図である。
【図５】図５は図３に示すゲーム装置の第１のＬＣＤに表示されるゲーム画面の他の例を示す図解図である。
【図６】図６は撮影された顔画像から検出される特徴点を示す図解図である。
【図７】図７は図２に示すゲーム装置のＲＡＭのメモリマップの一例を示す図解図である。
【図８】図８は図７に示すデータ記憶領域の具体的な内容を示す図解図である。
【図９】図９は図２に示すＣＰＵコアのウインク検知処理の一部を示すフロー図である。
【図１０】図１０は図２に示すＣＰＵコアのウインク検知処理の他の一部であって、図９に後続するフロー図である。
【図１１】図１１は図２に示すＣＰＵコアの特徴点データの更新処理を示すフロー図である。
【図１２】図１２は図２に示すＣＰＵコアの面積計測処理の一部を示すフロー図である。
【図１３】図１３は図２に示すＣＰＵコアの面積計測処理の他の一部であって、図１２に後続するフロー図である。
【図１４】図１４は図２に示すＣＰＵコアの面積計測処理のその他の一部であって、図１３に後続するフロー図である。
【図１５】図１５は図２に示すＣＰＵコアの面積計測装置のさらに他の一部であって、図１４に後続するフロー図である。
【図１６】図１６は図２に示すＣＰＵコアの面積計測処理の他の一部であって、図１５に後続するフロー図である。
【図１７】図１７は図２に示すＣＰＵコアの面積計測処理のその他の一部であって、図１６に後続するフロー図である。
【図１８】図１８は図２に示すＣＰＵコアの面積計測処理のさらに他の一部であって、図１７に後続するフロー図である。
【図１９】図１９は図２に示すＣＰＵコアの面積計測処理の他の一部であって、図１８に後続するフロー図である。
【図２０】図２０は図２に示すＣＰＵコアの面積計測処理のその他の一部であって、図１９に後続するフロー図である。
【図２１】図２１は図２に示すＣＰＵコアの面積計測処理のさらに他の一部であって、図２０に後続するフロー図である。
【図２２】図２２は面積計測処理における色検出範囲および面積走査範囲を示す図解図である。
【符号の説明】
【０２０２】
１０  …ゲーム装置
１２，１４  …ＬＣＤ
１６，１６ａ，１６ｂ  …ハウジング
２２  …操作スイッチ
２４  …タッチパネル
２６  …スティック
２８  …メモリカード
２８ａ  …ＲＯＭ
２８ｂ，４２  …ＲＡＭ
３４  …ＣＰＵコア
３６ａ，３６ｂ  …スピーカ
４４，４６  …ＧＰＵ
４８  …Ｉ／Ｆ回路
５０  …ＬＣＤコントローラ
５２，５４  …ＶＲＡＭ
６０  …カメラカートリッジ
【図１】
2009003730.tif 000003
【図２】
2009003730.tif 000004
【図３】
2009003730.tif 000005
【図４】
2009003730.tif 000006
【図５】
2009003730.tif 000007
【図６】
2009003730.tif 000008
【図７】
2009003730.tif 000009
【図８】
2009003730.tif 000010
【図９】
2009003730.tif 000011
【図１０】
2009003730.tif 000012
【図１１】
2009003730.tif 000013
【図１２】
2009003730.tif 000014
【図１３】
2009003730.tif 000015
【図１４】
2009003730.tif 000016
【図１５】
2009003730.tif 000017
【図１６】
2009003730.tif 000018
【図１７】
2009003730.tif 000019
【図１８】
2009003730.tif 000020
【図１９】
2009003730.tif 000021
【図２０】
2009003730.tif 000022
【図２１】
2009003730.tif 000023
【図２２】
2009003730.tif 000024