(57)【要約】    【構成】  ゲーム装置１０は、内側カメラ３２を含み、内側カメラ３２で撮影した撮影画像から肌色を抽出する。ゲーム中では、特定領域（１１０，１１０´）において、所定の割合を超える肌色領域が検出されるかどうかを判定する。所定の割合を超える場合には、ユーザの顔が正しく認識されていると判断し、撮影画像から特徴点を検出する。この特徴点に基づいて、ユーザの顔全体を認識しているかを検出したり、顔の一部またはその動きを検出したりして、所定の条件を満たすか否かによって、ゲームを進行させる。ただし、所定の割合以下である場合には、ユーザの顔を正しく認識していないと判断し、特徴点に基づく判定は行わない。    【効果】  撮像したユーザの画像による操作をユーザの意図した通りにゲーム処理に反映させることができる【選択図】  図１
2010142553.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの顔の全体または一部に対応する画像を示す画像データに基づいてゲーム処理を実行する装置のコンピュータに実行させるゲームプログラムであって、
前記ユーザを撮像する撮像ステップ、
前記撮像ステップによって撮像された画像を示す画像データに基づいて、前記ユーザの顔の全部または一部を認識する顔認識ステップ、
前記撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの肌色を検出したか否かを判定する肌色検出判定ステップ、および
前記肌色検出判定ステップによって前記ユーザの肌色を検出したと判定されたとき、前記顔認識ステップによって認識された前記ユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行するゲーム処理ステップを実行させる、ゲームプログラム。
【請求項２】
前記撮像ステップによって撮像された画像を示す画像データに基づいて、肌色の領域の大きさを算出する肌色領域算出ステップをさらに実行させ、
前記肌色検出判定ステップは、前記肌色領域算出ステップによって算出された肌色の領域の大きさが所定値以上であるときに、前記ユーザの肌色を検出したと判定する、請求項１記載のゲームプログラム。
【請求項３】
前記肌色領域算出ステップは、前記撮像ステップによって撮像された画像における肌色の領域の割合を算出し、
前記肌色検出ステップは、前記肌色領域算出ステップによって算出された割合が所定値以上であるときに、前記ユーザの肌色を検出したと判定する、請求項２記載のゲームプログラム。
【請求項４】
前記撮像ステップによって撮像された画像において、特定の領域を設定する領域設定ステップをさらに実行させ、
前記肌色領域算出ステップは、前記領域設定ステップによって設定された特定の領域内における肌色の領域の大きさを算出する、請求項２記載のゲームプログラム。
【請求項５】
前記顔認識ステップは、前記撮像ステップによって撮像された画像を示す画像データに基づいて、前記ユーザの顔を認識するとともに、当該ユーザの肌色を検出し、
前記ゲーム処理ステップは、前記肌色検出判定ステップによって前記ユーザの肌色を検出したと判定されたとき、前記顔認識ステップによって認識された前記ユーザの顔の全部または一部を示す顔情報と当該ユーザの肌色を示す肌色情報とに基づいてゲーム処理を実行する、請求項１ないし４のいずれかに記載のゲームプログラム。
【請求項６】
前記ユーザを予め撮像して得られた画像を示す画像データに基づいて、当該ユーザの肌色の特徴を示す肌色特徴データを算出する肌色特徴データ算出ステップをさらに実行させ、
前記肌色検出判定ステップは、前記撮像ステップによって撮像された画像を示す画像データと前記肌色特徴データ算出ステップによって算出された肌色特徴データとに基づいて、前記ユーザの肌色を検出したか否かを判定する、請求項１記載のゲームプログラム。
【請求項７】
前記撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの顔の全部または一部の特徴点データを取得する特徴点データ取得ステップ、および
前記特徴点データ取得ステップによって取得された特徴点データが所定の条件を満たすか否かを判定する特徴点データ判定ステップをさらに実行させ、
前記ゲーム処理ステップは、前記肌色検出判定ステップによって前記ユーザの肌色を検出したと判定され、かつ、前記特徴点データ判定ステップによって前記特徴点データが所定の条件を満たすと判定されたときに、前記顔認識ステップによって認識された前記ユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行する、請求項１に記載のゲームプログラム。
【請求項８】
ユーザの顔の全体または一部に対応する画像を示す画像データに基づいてゲーム処理を実行するゲーム装置であって、
前記ユーザを撮像する撮像手段、
前記撮像手段によって撮像された画像を示す画像データに基づいて、前記ユーザの顔の全部または一部を認識する顔認識手段、
前記撮像手段によって撮像された画像を示す画像データに基づいて、ユーザの肌色を検出したか否かを判定する肌色検出判定手段、および
前記肌色検出判定手段によって前記ユーザの肌色を検出したと判定されたとき、前記顔認識手段によって認識された前記ユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行するゲーム処理手段を備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、撮像されたユーザの顔の全部または一部を認識して、その認識結果に基づいてゲーム処理を実行する、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
背景技術の一例が特許文献１に開示されている。この特許文献１の画像出力装置は、２台のカメラによりユーザの顔を撮像し、撮像して得られた顔画像から眼球と虹彩を検出することにより目の動きを特定し、特定した目の動きに応じて出力画像の表示領域を変更する。
【特許文献１】特開２００６−２０２１８１号公報［G06F 3/033,A63F 13/00,G06T 1/00,G06T 7/60］
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、特許文献１の画像出力装置では、ユーザの顔が撮影されていることを前提としているため、ユーザの目以外のものを検出することにより目の動きを特定したと判断して、出力画像の表示領域を変更してしまう可能性がある。したがって、この背景技術を、撮像されたユーザの画像によって操作を行うゲームに適用した場合には、撮像されたユーザの画像による操作をユーザの意図した通りにゲーム処理に反映させることができないという問題がある。
【０００４】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【０００５】
また、この発明の他の目的は、撮像したユーザの画像による操作をユーザの意図した通りにゲーム処理に反映させることができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、ユーザの顔の全体または一部に対応する画像を示す画像データに基づいてゲーム処理を実行する装置のコンピュータに実行させるゲームプログラムであって、ユーザを撮像する撮像ステップ、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの顔の全部または一部を認識する顔認識ステップ、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの肌色を検出したか否かを判定する肌色検出判定ステップ、および肌色検出判定ステップによってユーザの肌色を検出したと判定されたとき、顔認識ステップによって認識されたユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行するゲーム処理ステップを実行させる、ゲームプログラムである。
【０００８】
第１の発明では、ゲームプログラムは、ユーザの顔の全体または一部に対応する画像を示す画像データに基づいてゲーム処理を実行する装置（１０）のコンピュータに次のステップを実行させる。撮像ステップ（５０，Ｓ３）は、ユーザを撮像する。顔認識ステップ（５０，Ｓ７）は、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの顔の全部または一部を検出する。肌色検出ステップ（５０，Ｓ３、Ｓ５）は、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの肌色を検出したか否かを判定する。そして、ゲーム処理ステップ（５０，Ｓ９，Ｓ１５，Ｓ１７，Ｓ１９）は、肌色検出判定ステップによってユーザの肌色を検出したと判定されたとき（Ｓ５で“ＹＥＳ”）、顔認識ステップによって認識されたユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行する。
【０００９】
第１の発明によれば、撮像したユーザの画像からユーザの肌色を検出した場合にのみ、ユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行するので、撮像したユーザの画像による操作をユーザの意図した通りにゲーム処理に反映させることができる。
【００１０】
第２の発明は第１の発明に従属し、撮像ステップによって撮像された画像を示す画像データに基づいて、肌色の領域の大きさを算出する肌色領域算出ステップをさらに実行させ、肌色検出判定ステップは、肌色領域算出ステップによって算出された肌色の領域の大きさが所定値以上であるときに、ユーザの肌色を検出したと判定する。
【００１１】
第２の発明では、ゲームプログラムは、肌色領域算出ステップ（５０，Ｓ５）をさらに実行させる。肌色検出判定ステップは、肌色領域算出ステップによって算出された肌色の領域の大きさが所定値以上であるときに、ユーザの肌色を検出したと判定する。
【００１２】
第２の発明によれば、肌色の領域の大きさが所定値以上である場合にのみ、肌色を検出したと判定するので、たとえば、ゲームプログラマや開発者が意図するプレイ状態における平均的な肌色領域の大きさを所定値に設定しておくことにより、意図通りのプレイ状態でゲームをプレイさせることができる。
【００１３】
第３の発明は、第２の発明に従属し、肌色領域算出ステップは、撮像ステップによって撮像された画像における肌色の領域の割合を算出し、肌色検出ステップは、肌色領域算出ステップによって算出された割合が所定値以上であるときに、ユーザの肌色を検出したと判定する。
【００１４】
第３の発明では、肌色領域算出ステップは、撮像された画像における肌色の領域の割合を算出する。肌色検出ステップは、肌色領域算出ステップによって算出された割合が所定値以上であるときに、ユーザの肌色を検出したと判定する。
【００１５】
第３の発明においても、第２の発明と同様に、意図通りのプレイ状態でゲームをプレイさせることができる。
【００１６】
第４の発明は、第２の発明に従属し、撮像ステップによって撮像された画像において、特定の領域を設定する領域設定ステップをさらに実行させ、肌色領域算出ステップは、領域設定ステップによって設定された特定の領域内における肌色の領域の大きさを算出する。
【００１７】
第４の発明では、領域設定ステップ（５０）は、撮影ステップによって撮影された画像において、特定の領域（１１０，１１０´）を設定する。したがって、たとえば、肌色領域算出ステップは、領域設定ステップによって設定された特定の領域内における肌色の領域の大きさを算出する。
【００１８】
第４の発明によれば、特定の領域を設定するので、ユーザの顔や手が存在すると考えられる場所を特定の領域に設定しておけば、比較的簡単な処理で、肌色を検出したかどうかを判断することができる。
【００１９】
第５の発明は第１ないし第４の発明に従属し、顔認識ステップは、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの顔を認識するとともに、当該ユーザの肌色を検出し、ゲーム処理ステップは、肌色検出判定ステップによってユーザの肌色を検出したと判定されたとき、顔認識ステップによって認識されたユーザの顔の全部または一部を示す顔情報と当該ユーザの肌色を示す肌色情報とに基づいてゲーム処理を実行する。
【００２０】
第５の発明では、顔認識ステップは、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの顔を認識するとともに、当該ユーザの肌色を検出する。ゲーム処理ステップは、肌色検出判定ステップによって検出されたユーザの顔の全部または一部を示す情報と、当該ユーザの肌色情報とに基づいてゲーム処理を実行する。
【００２１】
第５の発明によれば、肌色と顔を示す情報とに基づいてゲーム処理を実行するので、たとえば、肌色のみを検出し、顔を示す情報を検出していないような顔を隠している状態と、肌色を検出するとともに、顔を示す情報を検出しているような顔を見せている状態とに基づいてゲームを進行させることができる。
【００２２】
第６の発明は、第１の発明に従属し、ユーザを予め撮像して得られた画像を示す画像データに基づいて、当該ユーザの肌色の特徴を示す肌色特徴データを算出する肌色特徴データ算出ステップをさらに実行させ、肌色検出判定ステップは、撮像ステップによって撮像された画像を示す画像データと肌色特徴データ算出ステップによって算出された肌色特徴データとに基づいて、ユーザの肌色を検出したか否かを判定する。
【００２３】
第６の発明では、ゲームプログラムは、肌色特徴データ算出ステップ（５０）をさらに実行させる。肌色特徴データ算出ステップは、ユーザを予め撮像して得られた画像を示す画像データに基づいて、当該ユーザの肌色の特徴を示す肌色特徴データ（色相、彩度、輝度の閾値）を算出する。肌色検出判定ステップは、撮像ステップによって撮像された画像を示す画像データと肌色特徴データ算出ステップによって算出された肌色特徴データとに基づいて、ユーザの肌色を検出したか否かを判定する。
【００２４】
第６の発明によれば、予め撮影した画像から得たユーザの肌色の特徴に基づいてユーザの肌色を検出したか否かを判断するので、ゲームの開始に先立って、肌色の特徴を得るようにしておけば、ユーザ毎に異なる肌色の特徴による誤差やゲームをプレイする時間や場所の違いによる誤差を無くすことができる。
【００２５】
第７の発明は、第１の発明に従属し、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの顔の全部または一部の特徴点データを取得する特徴点データ取得ステップ、および特徴点データ取得ステップによって取得された特徴点データが所定の条件を満たすか否かを判定する特徴点データ判定ステップをさらに実行させ、ゲーム処理ステップは、肌色検出判定ステップによってユーザの肌色を検出したと判定され、かつ、特徴点データ判定ステップによって特徴点データが所定の条件を満たすと判定されたときに、顔認識ステップによって認識されたユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行する。
【００２６】
第７の発明では、特徴点データ取得ステップ（５０）は、撮像ステップによって撮像された画像を示す画像データに基づいて、ユーザの顔の全部または一部の特徴点データを取得する。また、特徴点データ判定ステップ（５０，Ｓ９）は、特徴点データ取得ステップによって取得された特徴点データが所定の条件を満たすか否かを判定する。ゲーム処理ステップは、肌色検出判定ステップによってユーザの肌色を検出したと判定され（Ｓ５で“ＹＥＳ”）、かつ、特徴点データ判定ステップによって特徴点データが所定の条件を満たすと判定されたときに（Ｓ９で“ＹＥＳ”）、顔認識ステップによって認識されたユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行する。
【００２７】
第７の発明によれば、ユーザの肌色を検出し、かつ特徴点データが所定の条件を満たすと判定されたときに、ゲーム処理を実行するので、ユーザの顔の画像に基づいて、より正確にゲーム処理を実行することができる。
【００２８】
第８の発明は、ユーザの顔の全体または一部に対応する画像を示す画像データに基づいてゲーム処理を実行するゲーム装置であって、ユーザを撮像する撮像手段、撮像手段によって撮像された画像を示す画像データに基づいて、ユーザの顔の全部または一部を認識する顔認識手段、撮像手段によって撮像された画像を示す画像データに基づいて、ユーザの肌色を検出したか否かを判定する肌色検出判定手段、および肌色検出判定手段によってユーザの肌色を検出したと判定されたとき、顔認識手段によって認識されたユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行するゲーム処理手段を備える、ゲーム装置である。
【００２９】
第８の発明においても、第１の発明と同様に、撮像したユーザの画像による操作をユーザの意図した通りにゲーム処理に反映させることができる。
【発明の効果】
【００３０】
この発明によれば、撮像したユーザの画像からユーザの肌色を検出した場合にのみ、ユーザの顔の全部または一部を示す情報に基づいてゲーム処理を実行するので、撮像したユーザの画像による操作をユーザの意図した通りにゲーム処理に反映させることができる。
【００３１】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００３２】
図１を参照して、この発明の一実施例であるゲーム装置１０は、上側ハウジング１２および下側ハウジング１４を含み、上側ハウジング１２と下側ハウジング１４とは、開閉可能（折り畳み可能）に連結されている。図１の例では、上側ハウジング１２および下側ハウジング１４は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回動可能に連結されている。つまり、この実施例のゲーム装置１０は、折り畳み型の携帯ゲーム装置であり、図１には、当該ゲーム装置１０を開いた状態（開状態）で示してある。ゲーム装置１０は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【００３３】
通常、ユーザは、開状態でゲーム装置１０を使用する。また、ユーザは、ゲーム装置１０を使用しない場合には閉状態で保管する。ただし、ゲーム装置１０は、上記閉状態および開状態のみでなく、上側ハウジング１２と下側ハウジング１４とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング１２を下側ハウジング１４に対して任意の角度で静止させることができる。
【００３４】
なお、ゲーム装置１０は、後述するカメラ（３２，３４）を搭載しており、当該カメラ（３２，３４）によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【００３５】
図１に示すように、上側ハウジング１２には第１ＬＣＤ１６が設けられ、下側ハウジング１４には第２ＬＣＤ１８が設けられる。第１ＬＣＤ１６および第２ＬＣＤ１８は、横長形状であり、それぞれの長辺方向が上側ハウジング１２および下側ハウジング１４の長辺方向と一致すうように配置される。たとえば、第１ＬＣＤ１６および第２ＬＣＤ１８の解像度は、２５６(横)×１９２(縦）画素（ドット）に設定される。
【００３６】
なお、この実施例では、表示器としてＬＣＤを用いるようにしてあるが、ＬＣＤに代えて、ＥＬ(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。また、ゲーム装置１０は、任意の解像度の表示装置を利用することができる。詳細は後述するが、第２ＬＣＤ１８は、主に、内側カメラ３２または外側カメラ３４で撮像されている画像（静止画像や動画像）をリアルタイムに表示したり、ゲーム画面を表示したりするために用いられる。
【００３７】
下側ハウジング１４には、入力装置として、各操作ボタン２０ａ−２０ｋが設けられる。図１に示されるように、各操作ボタン２０ａ−２０ｋのうち、方向入力ボタン２０ａ、操作ボタン２０ｂ、操作ボタン２０ｃ、操作ボタン２０ｄ、操作ボタン２０ｅ、電源ボタン２０ｆ、スタートボタン２０ｇ、およびセレクトボタン２０ｈは、下側ハウジング１４の第２ＬＣＤ１８が設けられる側の面（内側の面）に配置される。具体的には、方向入力ボタン２０ａおよび電源ボタン２０ｆは、第２ＬＣＤ１８の左側に配置され、操作ボタン２０ｂ−２０ｅ，２０ｇおよび２０ｈは、第２ＬＣＤ１８の右側に配置される。また、上側ハウジング１２と下側ハウジング１４とを折り畳んだときには、操作ボタン２０ａ−２０ｈはゲーム装置１０の内部に収められる。
【００３８】
方向入力ボタン（十字キー）２０ａは、ディジタルジョイスティックとして機能し、プレイヤオブジェクトの移動方向を指示したり、カーソルを移動させたりするなどに用いられる。各操作ボタン２０ｂ−２０ｅは、プッシュボタンであり、たとえば、プレイヤオブジェクトに任意の動作をさせたり、決定やキャンセルを実行したりする等に用いられる。電源ボタン２０ｆは、プッシュボタンであり、ゲーム装置１０の主電源をオン／オフするために用いられる。スタートボタン２０ｇは、プッシュボタンであり、ゲームを中断（ポーズ）したり、開始（再開）したりするために用いられる。セレクトボタン２０ｈは、プッシュボタンであり、ゲームモードやメニューの選択等に用いられる。
【００３９】
図１においては、操作ボタン２０ｉ−２０ｋは省略したが、図２（Ａ）に示すように、操作ボタン（Ｌボタン）２０ｉは、下側ハウジング１４の上側面の左端部に設けられ、操作ボタン（Ｒボタン）２０ｊは、下側ハウジング１４の上側面の右端部に設けられる。また、図２（Ｂ）に示すように、音量ボタン２０ｋは、下側ハウジング１４の左側面に設けられる。
【００４０】
なお、図２（Ａ）は、ゲーム装置１０を折り畳んだ状態で、上面（上ハウジング１２）側から見た図であり、図２（Ｂ）は、同じくゲーム装置１０を折り畳んだ状態で、左側面から見た図である。
【００４１】
Ｌボタン２０ｉおよびＲボタン２０ｊは、プッシュボタンであり、操作ボタン２０ｂ−２０ｅと同様の操作に用いたり、それらの操作ボタン２０ｂ−２０ｅの補助的な操作に用いたりすることができる。また、この実施例では、Ｌボタン２０ｉおよびＲボタン２０ｊは、撮影指示の操作（シャッター操作）を行うために用いることもできる。音量ボタン２０ｋは、２つのプッシュボタンを用いて構成され、図示しない２つのスピーカ（右スピーカおよび左スピーカ）から出力される音の大きさを調整するために用いられる。この実施例では、音量ボタン２０ｋには、２つの押圧部を含む操作部が設けられ、各押圧部に対応して上記のプッシュボタンが設けられる。したがって、一方の押圧部を押すと音量が大きくされ、他方の押圧部を押すと音量が小さくされる。たとえば、押圧部を押し続けると、音量が次第に大きくされたり、次第に小さくされたりする。
【００４２】
図１に戻って、ゲーム装置１０は、操作ボタン２０ａ−２０ｋとは別の入力装置として、さらにタッチパネル２２を備えている。タッチパネル２２は、第２ＬＣＤ１８の画面上を覆うように装着されている。この実施例では、タッチパネル２２は、たとえば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル２２は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、この実施例では、タッチパネル２２として、たとえば第２ＬＣＤ１８の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル２２の解像度と第２ＬＣＤ１８の解像度とが一致している必要はない。
【００４３】
また、下側ハウジング１４の右側面には、挿入口（図１に示す破線）が設けられている。挿入口は、タッチパネル２２に対する操作を行うために用いられるタッチペン２４を収納することができる。通常、タッチパネル２２に対する入力は、タッチペン２４を用いて行われるが、タッチペン２４に限らずユーザの指でタッチパネル２２を操作することも可能である。したがって、たとえば、タッチペン２４を用いない場合には、タッチペン２４の挿入口および収納部を設ける必要はない。
【００４４】
また、下側ハウジング１４の右側面には、メモリカード２６を収納するための挿入口（図１では、二点鎖線で示している）が設けられている。この挿入口の内側には、ゲーム装置１０とメモリカード２６とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２６は、たとえばＳＤカードであり、コネクタに着脱自在に装着される。このメモリカード２６は、たとえば、ゲーム装置１０によって撮像された画像を記憶（保存）したり、他の装置で生成（撮像）ないし記憶された画像をゲーム装置１０に読み込んだりするために用いられる。
【００４５】
さらに、下側ハウジング１４の上側面には、メモリカード２８を収納するための挿入口（図１では、一点鎖線で示している）が設けられている。この挿入口の内側にも、ゲーム装置１０とメモリカード２８とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２８は、ゲームプログラムや他のアプリケーションプログラムおよび必要なデータなどを記録した記録媒体であり、下側ハウジング１４に設けられた挿入口に着脱自在に装着される。
【００４６】
また、上側ハウジング１２と下側ハウジング１４との連結部（ヒンジ）の左端部分には、インジケータ３０が設けられる。このインジケータ３０は、３つのＬＥＤ３０ａ，３０ｂ，３０ｃによって構成される。ここで、ゲーム装置１０は、他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ３０ａは、無線通信が確立している場合に点灯する。第２ＬＥＤ３０ｂは、ゲーム装置１０の充電中に点灯する。第３ＬＥＤ３０ｃは、ゲーム装置１０の主電源がオンである場合に点灯する。したがって、インジケータ３０（ＬＥＤ３０ａ−３０ｃ）によって、ゲーム装置１０の通信確立状況、充電状況、および主電源のオン／オフ状況をユーザに通知することができる。
【００４７】
上述したように、上側ハウジング１２には、第１ＬＣＤ１６が設けられる。この実施例では、第２ＬＣＤ１８を覆うように、タッチパネル２２を設けているが、第１ＬＣＤ１６を覆うように、タッチパネル２２を設けてもよい。または、第１ＬＣＤ１６および第２ＬＣＤ１８のそれぞれを覆うように、２つのタッチパネル２２を設けるようにしてもよい。たとえば、第２ＬＣＤ１８には、各操作ボタン２０ａ−２０ｋやタッチパネル２２の役割ないし操作方法をユーザに教えるための操作説明画面やゲーム画面が表示される。
【００４８】
また、上側ハウジング１２には、２つのカメラ（内側カメラ３２および外側カメラ３４）が設けられる。図１に示すように、内側カメラ３２は、上側ハウジング１２と下側ハウジング１４との連結部付近であり、第１ＬＣＤ１６が設けられる側の面に、この第１ＬＣＤ１６の表示面とその撮影面とが平行または面一になるように取り付けられる。一方、外側カメラ３４は、図２（Ａ）に示すように、内側カメラ３２が取り付けられる面とは反対側の面、すなわち、上側ハウジング１２の外側の面（ゲーム装置１０が閉状態となった場合に外側となる面であり、図１に示す上側ハウジング１２の背面）に取り付けられる。ただし、図１においては、外側カメラ３４を破線で示してある。
【００４９】
したがって、内側カメラ３２は、上側ハウジング１２の内側の面が向く方向を撮像することが可能であり、外側カメラ３４は、内側カメラ３２の撮像方向の逆方向、すなわち、上側ハウジング１２の外側の面が向く方向を撮像することが可能である。このように、この実施例では、内側カメラ３２および外側カメラ３４の撮像方向が互いに逆方向となるように、それら２つのカメラ３２，３４が設けられる。たとえば、ゲーム装置１０を把持したユーザは、このゲーム装置１０側からユーザの方を見た景色（たとえば、当該ユーザを含む）を内側カメラ３２で撮像することができるとともに、ゲーム装置１０側からユーザとは反対側の方向を見た景色を外側カメラ３４で撮像することができる。
【００５０】
なお、上記連結部付近の内側の面には、音声入力装置としてマイク８４（図３参照）が収納されている。そして、上記連結部付近の内側の面には、マイク８４がゲーム装置１０外部の音を検知できるように、そのマイク８４用の孔３６が形成される。マイク８４を収納する位置およびマイク８４用の孔３６の位置は必ずしも上記連結部である必要はなく、たとえば下側ハウジング１４にマイク８４を収納し、マイク８４の収納位置に対応させて下側ハウジング１４にマイク８４用の孔３６を設けるようにしてもよい。
【００５１】
また、上側ハウジング１２の外側の面には、外側カメラ３４の近傍に第４ＬＥＤ３８（図１では、破線で示す）が取り付けられる。第４ＬＥＤ３８は、内側カメラ３２または外側カメラ３４によって撮影が行われた（シャッターボタンが押下された）時点で点灯する。また、内側カメラ３２または外側カメラ３４によって動画が撮影される場合には、第４ＬＥＤ３８は、撮影の間点灯し続ける。つまり、第４ＬＥＤ３８を点灯することによって、ゲーム装置１０による撮影が行われた（行われている）ことを撮影対象者や周囲に通知することができる。
【００５２】
また、上側ハウジング１２には、第１ＬＣＤ１６の両側に、音抜き孔４０が形成される。この音抜き孔４０に対応する位置であり、上側ハウジング１２の内部には、上述したスピーカが収納されている。音抜き孔４０は、スピーカからの音をゲーム装置１０の外部に放出するための孔である。
【００５３】
以上に説明したように、上側ハウジング１２には、画像を撮像するための構成である内側カメラ３２および外側カメラ３４と、主として、撮影された画像およびゲーム画面を表示するための表示手段である第１ＬＣＤ１６とが設けられる。一方、下側ハウジング１４には、ゲーム装置１０に対する操作入力を行うための入力装置（操作ボタン２０（２０ａ−２０ｋ）およびタッチパネル２２）と、操作説明画面およびゲーム画面を表示するための表示手段である第２ＬＣＤ１８とが設けられる。したがって、ゲーム装置１０は、２つの画面（１６，１８）および２系統の操作部（２０，２２）を備えている。
【００５４】
図３は、この実施例のゲーム装置１０の電気的な構成を示すブロック図である。図３に示すように、ゲーム装置１０は、ＣＰＵ５０、メインメモリ５２、メモリ制御回路５４、保存用データメモリ５６、プリセットデータ用メモリ５８、メモリカードインターフェース（メモリカードＩ／Ｆ）６０、メモリカードＩ／Ｆ６２、無線通信モジュール６４、ローカル通信モジュール６６、リアルタイムクロック（ＲＴＣ）６８、電源回路７０、およびインターフェース回路（Ｉ／Ｆ回路）７２、第１ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７４、第２ＧＰＵ７６、第１ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）７８、第２ＶＲＡＭ８０、およびＬＣＤコントローラ８２等の電子部品を備えている。これらの電子部品（回路コンポーネント）は、電子回路基板上に実装されて、下側ハウジング１４（または上側ハウジング１２でもよい）内に収納される。
【００５５】
ＣＰＵ５０は、所定のプログラムを実行するための情報処理手段である。この実施例では、所定のプログラムは、ゲーム装置１０内のメモリ（たとえば保存用データメモリ５６）やメモリカード２６および／または２８に記憶されており、ＣＰＵ５０は、当該所定のプログラムを実行することによって、後述するゲーム処理を実行する。
【００５６】
なお、ＣＰＵ５０によって実行されるプログラムは、ゲーム装置１０内のメモリに予め記憶していてもよいし、メモリカード２６および／または２８から取得してもよいし、他の機器と通信することによって当該他の機器から取得してもよい。
【００５７】
ＣＰＵ５０には、メインメモリ５２、メモリ制御回路５４、およびプリセットデータ用メモリ５８が接続される。また、メモリ制御回路５４には、保存用データメモリ５６が接続される。メインメモリ５２は、ＣＰＵ５０のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ５２は、上記ゲーム処理に用いられる各種データを記憶（一時記憶）したり、外部（メモリカード２６および２８や他の機器等）から取得されるプログラムを記憶したりする。この実施例では、メインメモリ５２として、たとえばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。保存用データメモリ５６は、ＣＰＵ５０によって実行されるプログラムや内側カメラ３２および外側カメラ３４によって撮像された画像のデータ等を記憶（保存）するための記憶手段である。この保存用データメモリ５６は、不揮発性の記憶媒体によって構成されており、たとえば、ＮＡＮＤ型フラッシュメモリを用いることができる。メモリ制御回路５４は、ＣＰＵ５０の指示に従って、保存用データメモリ５６に対するデータの読み出しおよび書き込みを制御する。プリセットデータ用メモリ５８は、ゲーム装置１０において予め設定される各種パラメータ等のデータ（プリセットデータ）を記憶するための記憶手段である。プリセットデータ用メモリ５８としては、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バスによってＣＰＵ５０と接続されるフラッシュメモリを用いることができる。
【００５８】
メモリカードＩ／Ｆ６０および６２は、それぞれＣＰＵ５０に接続される。メモリカードＩ／Ｆ６０は、コネクタに装着されたメモリカード２６に対するデータの読み出しおよび書き込みを、ＣＰＵ５０の指示に応じて行う。また、メモリカードＩ／Ｆ６２は、コネクタに装着されたメモリカード２８に対するデータの読み出しおよび書き込みを、ＣＰＵ５０の指示に応じて行う。この実施例では、内側カメラ３２および外側カメラ３４によって撮像された画像に対応する画像データや他の装置から受信された画像データがメモリカード２６に書き込まれたり、メモリカード２６に記憶された画像データがメモリカード２６から読み出されて保存用データメモリ５６に記憶されたり、他の装置へ送信されたりする。また、メモリカード２８に記憶された各種プログラムが、ＣＰＵ５０によって読み出されて実行されたりする。
【００５９】
なお、ゲームプログラムは、メモリカード２８等の外部記憶媒体を通じてゲーム装置１０に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置１０に供給されてもよい。また、ゲームプログラムは、ゲーム装置１０内部の不揮発性記憶装置に予め記録されていてもよい。さらに、ゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【００６０】
無線通信モジュール６４は、たとえばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール６６は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール６４およびローカル通信モジュール６６は、ＣＰＵ５０に接続される。ＣＰＵ５０は、無線通信モジュール６４を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール６６を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００６１】
また、ＣＰＵ５０には、ＲＴＣ６８および電源回路７０が接続される。ＲＴＣ６８は、時間をカウントしてＣＰＵ５０に出力する。たとえば、ＣＰＵ５０は、ＲＴＣ６８によって計時された時間に基づいて、現在時刻（日付）等を計算することもできる。電源回路７０は、ゲーム装置１０が有する電源（典型的には電池であり、下側ハウジング１４に収納される）から供給される電力を制御し、ゲーム装置１０の各回路コンポーネントに電力を供給する。
【００６２】
また、ゲーム装置１０は、マイク８４およびアンプ８６を備えている。マイク８４およびアンプ８６は、それぞれＩ／Ｆ回路７２に接続される。マイク８４は、ゲーム装置１０に向かって発声ないし発生されたユーザの音声ないし音（拍手や手拍子など）を検知して、当該音声ないし音を示す音声信号をＩ／Ｆ回路７２に出力する。アンプ８６は、Ｉ／Ｆ回路７２から与えられる音声信号を増幅してスピーカ（図示せず）に与える。Ｉ／Ｆ回路７２は、ＣＰＵ５０に接続される。
【００６３】
また、タッチパネル２２は、Ｉ／Ｆ回路７２に接続される。Ｉ／Ｆ回路７２は、マイク８４およびアンプ８６（スピーカ）の制御を行う音声制御回路と、タッチパネル２２の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル２２からの信号に基づいて所定の形式のタッチ位置データを生成してＣＰＵ５０に出力する。たとえば、タッチ位置データは、タッチパネル２２の入力面に対して入力が行われた位置の座標を示すデータである。
【００６４】
なお、タッチパネル制御回路は、タッチパネル２２からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。ＣＰＵ５０は、Ｉ／Ｆ回路７２を介して、タッチ位置データを取得することにより、タッチパネル２２に対して入力が行われた位置を知ることができる。
【００６５】
操作ボタン２０は、上記の各操作ボタン２０ａ−２０ｋによって構成され、ＣＰＵ５０に接続される。操作ボタン２０からＣＰＵ５０へは、各操作ボタン２０ａ−２０ｋに対する入力状況（押下されたか否か）を示す操作データが出力される。ＣＰＵ５０は、操作ボタン２０からの操作データを取得し、取得した操作データに応じた処理を実行する。
【００６６】
内側カメラ３２および外側カメラ３４は、それぞれＣＰＵ５０に接続される。内側カメラ３２および外側カメラ３４は、ＣＰＵ５０の指示に応じて画像を撮像し、撮像した画像に対応する画像データをＣＰＵ５０に出力する。この実施例では、ＣＰＵ５０は、内側カメラ３２および外側カメラ３４のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラ（３２，３４）が画像を撮像して画像データをＣＰＵ５０に送る。
【００６７】
第１ＧＰＵ７４には、第１ＶＲＡＭ７８が接続され、第２ＧＰＵ７６には、第２ＶＲＡＭ８０が接続される。第１ＧＰＵ７４は、ＣＰＵ５０からの指示に応じて、メインメモリ５２に記憶されている表示画像を生成するためのデータに基づいて第１の表示画像を生成し、第１ＶＲＡＭ７８に描画する。第２ＧＰＵ７６は、同様にＣＰＵ５０からの指示に応じて第２の表示画像を生成し、第２ＶＲＡＭ８０に描画する。第１ＶＲＡＭ７８および第２ＶＲＡＭ８０は、ＬＣＤコントローラ８２に接続されている。
【００６８】
ＬＣＤコントローラ８２は、レジスタ８２ａを含む。レジスタ８２ａは、ＣＰＵ５０からの指示に応じて、「０」または「１」の値を記憶する。ＬＣＤコントローラ８２は、レジスタ８２ａの値が「０」である場合には、第１ＶＲＡＭ７８に描画された第１の表示画像を第２ＬＣＤ１８に出力し、第２ＶＲＡＭ８０に描画された第２の表示画像を第１ＬＣＤ１６に出力する。また、レジスタ８２ａの値が「１」である場合には、第１ＶＲＡＭ７８に描画された第１の表示画像を第１ＬＣＤ１６に出力し、第２ＶＲＡＭ８０に描画された第２の表示画像を第２ＬＣＤ１８に出力する。この実施例では、ＣＰＵ５０は、内側カメラ３２および外側カメラ３４で撮影された画像に対応する顔（肌色領域）のシルエットおよびゲーム画面を第１ＬＣＤ１６に表示させ、所定の処理によって生成した操作説明画面やゲーム画面などを第２ＬＣＤ１８に表示させる。
【００６９】
図示は省略するが、たとえば、第２ＬＣＤ１８には上記操作説明画面として、撮影指示ボタン説明画像、カメラ切替ボタン説明画像、ズーム指示ボタン説明画像、および表示画像選択ボタン説明画像等が表示される。撮影指示ボタン説明画像は、撮影指示を行うための操作ボタン２０の位置を示す画像である。カメラ切替ボタン説明画像は、カメラ切替指示を行うための操作ボタン２０の位置を示す画像である。ここで、カメラ切替指示とは、内側カメラ３２および外側カメラ３４のうちで、撮像を行うカメラを切り替える指示である。ズーム指示ボタン説明画像は、ズーム変更指示を行うための操作ボタン２０の位置を示す画像である。ここで、ズーム変更指示は、第１ＬＣＤ１６に表示される画像を拡大／縮小する指示である。表示画像選択ボタン説明画像は、表示変更指示を行うための操作ボタン２０の位置を示す画像である。ここで、表示画像選択指示とは、ゲーム装置１０に保存されている保存画像を、第１ＬＣＤ１６に表示する場合に、この第１ＬＣＤ１６に表示する保存画像を選択する指示である。
【００７０】
図４には、この実施例のゲーム装置１０を用いて、仮想ゲーム（アクションゲーム）をプレイする場合に、第１ＬＣＤ１６に表示されるゲーム画面１００の例が示される。図４（Ａ）および図４（Ｂ）に示すゲーム画面１００では、そのほぼ中央に、人間の唇を模したオブジェクト（唇オブジェクト）１０２が表示される。また、唇オブジェクト１０２の下方には、パンを模したオブジェクト（パンオブジェクト）１０４が表示される。
【００７１】
この仮想ゲームでは、ユーザないしプレイヤが、パンを食べるように、口を開閉すると、それを内側カメラ３２で撮影した画像に基づいて検出し、ゲーム画面１００に表示された唇オブジェクト１０２を開閉させ、パンオブジェクト１０４を食べる様子が表現される。たとえば、制限時間内に、パンオブジェクト１０４を食べ切った場合には、ゲームクリアとなるが、制限時間内に、パンオブジェクト１０４を食べ切れなかった場合には、ゲームオーバになる。
【００７２】
図４（Ａ）および図４（Ｂ）に示すように、ユーザの顔すなわち肌色が撮影画像から抽出され、抽出された肌色の領域がシルエット１０６でゲーム画面１００に表示されている。この実施例では、ユーザの顔が認識されているか否か、およびユーザの顔が認識されている場合には、その大きさ（ゲーム画面１００（内側カメラ３２）とユーザの顔との距離）が適切であるか否かが、シルエット１０６の形状および大きさによってユーザに報知される。
【００７３】
なお、図４および図５に示すように、ほぼ楕円形状で、ゲーム画面（１００，２００）に収まる大きさであれば、認識されているユーザの顔は、開発者ないしプログラマが意図した姿勢ないし状態であると言える。
【００７４】
ただし、この実施例では、図５に示すように、第１ＬＣＤ１６の表示領域に特定の領域（特定領域）１１０を設定し、その特定領域１１０を４画素単位（２×２の格子毎）で肌色か否かを検出し、格子の総数（この実施例では、２４×５６÷４＝３３８）のうち、肌色と検出された格子の数の割合が所定値（たとえば、３５％）以上であるか否かで、ユーザの顔を正しく認識しているかどうかを判定するようにしてある（肌色判定処理）。つまり、ゲーム画面（第１ＬＣＤ１６）ないし内側カメラ３２に対するユーザの顔（頭部）の位置（前後方向および左右方向の位置）が、プログラマないし開発者が意図したプレイ状態に適切な位置であるかどうかを判断するのである。
【００７５】
なお、撮影画像から肌色を抽出する方法（肌色の抽出処理）については後で詳細に説明することにする。同じく、肌色の抽出処理に使用する閾値の調整処理についても後で詳細に説明することにする。
【００７６】
また、図５に示すように、第１ＬＣＤ１６の座標系は、その表示領域の左上の頂点を原点Ｏとし、図面の右方向がＸ軸のプラス方向であり、図面の下方向がＹ軸のプラス方向である。以下、この実施例において同じである。
【００７７】
つまり、画面中央付近に、ユーザの顔が有るか否かを判定するのである。ここで、ユーザの顔が画面中央付近に存在しない場合には、ユーザの口もパンオブジェクト１０４の近くに無いと判断して、口の開閉を検出しない。一方、ユーザの顔が画面中央付近に存在する場合には、ユーザの口もパンオブジェクト１０４の近くに有ると判断して、口の開閉を検出する。
【００７８】
特定領域１１０は、第１ＬＣＤ１６の画面（表示領域）の中心を基準に、左右に１２画素（ドット）の長さを有し、上下に２８画素の長さを有する長方形で規定される。ただし、これは一例であり、特定領域１１０の位置および大きさ（形状）は、ゲームの種類などによって任意に設定可能である。
【００７９】
また、ゲーム中では、内側カメラ３２で撮影した画像から、ユーザの特徴点が検出され、その特徴点に基づいて、ユーザの顔を認識したり、ユーザの特定の表情（顔の動き）を検出したりするようにしてある。ただし、肌色領域のみならず、特徴点に基づいて、ユーザの顔を認識するのは、顔以外の肌色領域を、誤って顔と認識してしまうような誤動作を防止するためである。
【００８０】
ここで、具体的な口の開閉についての判定処理について説明することにする。図６は、内側カメラ３２によって撮影されたユーザの顔画像およびその特徴点Ｐｉ（ｉ＝１，２，…，５４，５５）を示す図解図である。ただし、図７に示すように、メインメモリ５２に展開される画像をカメラ座標系で示し、また、画像を展開する領域（展開領域）１５０は、第１ＬＣＤ１６の表示領域の大きさに相当する大きさで、メインメモリ５２に確保される。この展開領域１５０の左上の頂点がカメラ座標の原点Ｏである。また、カメラ座標系では、図面の右方向がＸ軸のプラス方向であり、図面の下方向がＹ軸のプラス方向である。また、図６および図７に示す顔画像は、内側カメラ３２によって撮影されたユーザの顔画像であり、その顔画像の鏡像が展開領域１５０に展開される。
【００８１】
なお、図７では、図面の都合上、図６に示した特徴点Ｐｉを省略し、顔画像のみを記載してある。
【００８２】
まず、特徴点Ｐｉのうち、上唇の上端中央の特徴点Ｐ３１の座標(X1, Y1)と、上唇の下端中央の特徴点Ｐ３５の座標(X2, Y2)との中点（上唇の中点）LipUの座標(LipU_X, LipU_Y)を算出するとともに、下唇の上端中央に特徴点Ｐ３８の座標(X3, Y3)と、下唇の下端中央の特徴点Ｐ４１の座標(X4, Y4)との中点（下唇の中点）LipDの座標(LipD_X, LipD_Y)を算出する。また、これら２つの中点LipU, LipDの各軸方向についての差分(唇の差分）(Lip_dX, Lip_dY)を算出する。ただし、唇の差分(Lip_dX, Lip_dY)は、絶対値であり、数１に従って算出される。
【００８３】
[数１]
Lip_dX=|LipU_X-LipD_X|
Lip_dY=|LipU_Y-LipD_Y|
また、特徴点Ｐｉのうち、左目の中心（瞳中央）の特徴点Ｐ１７の座標(X5, Y5)と、左目の上端中央（上瞼中央）の特徴点Ｐ１３の座標(X6, Y6)との中点（左目の中点）EyeLの座標(EyeL_X, EyeL_Y)を算出する。同様に、特徴点Ｐｉのうち、右目の中心（瞳中央）の特徴点Ｐ２４の座標(X7, Y7)と、右目の上端中央（上瞼中央）の特徴点Ｐ２０の座標（X8, Y8)との中点（右目の中点）EyeRの座標(EyeR_X, EyeR_Y)を算出する。また、これら２つの中点EyeL, EyeRの各軸方向についての差分（目の差分）(Eye_dX, Eye_dY)を算出する。ただし、目の差分(Eye_dX, Eye_dY)は、絶対値であり、数２に従って算出される。
【００８４】
[数２]
Eye_dX=|EyeL_X-EyeR_X|
Eye_dY=|EyeL_Y-EyeR_Y|
続いて、数３−数７を満たすか否かを判定する。これは、開発者ないしプログラマが意図するプレイ状態と異なる態様でゲームをプレイしている場合を排除するためである。ただし、“||”はオア（∪）を意味する。
【００８５】
[数３]
(LipU_X<16 || LipU_X>240 || LipU_Y<16 || LipU_Y>176)
(LipD_X<16 || LipD_X>240 || LipD_Y<16 || LipD_Y>176)
(EyeL_X<16 || EyeL_X>240 || EyeL_Y<16 || EyeL_Y>176)
(EyeR_X<16 || EyeR_X>240 || EyeR_Y<16 || EyeR_Y>176)
[数４]
Lip_dX>64
[数５]
Lip_dY>96
[数６]
Eye_dX>96
[数７]
Eye_dY>24
これら数３−数７のいずれか１つでも満たす場合には、誤検出、或いは、開発者等が想定するプレイ状態で無いと判断して、今回の口の開閉判定処理を無効にする。具体的には、数３のいずれかを満たす場合には、特徴点Ｐｉが画面の端に寄り過ぎていると判断される。つまり、ユーザの唇や目が画面の端に寄り過ぎているのである。このような場合には、誤検出、或いは開発者等が想定するプレイ状態で無いと判断される。
【００８６】
数４を満たす場合には、上下唇が左右にずれ過ぎていると判断される。このような場合には、誤検出、或いはユーザの顔が画面（第１ＬＣＤ１６）に接近し過ぎているなど、開発者等が想定するプレイ状態では無いと判断される。また、数５を満たす場合には、上下唇が上下に開き過ぎていると判断される。このような場合には、誤検出、或いはユーザの顔が画面（第１ＬＣＤ１６）に接近し過ぎているなど、開発者が想定するプレイ状態では無いと判断される。
【００８７】
数６を満たす場合には、左右の目が離れ過ぎていると判断される。このような場合には、誤検出、或いはユーザの顔が画面（第１ＬＣＤ１６）に接近し過ぎているなど、開発者等が想定するプレイ状態ではないと判断される。また、数７を満たす場合には、左右の目が上下にずれ過ぎていると判断される。このような場合には、誤検出、或いはユーザの顔が画面（第１ＬＣＤ１６）に接近し過ぎているなど、開発者等が想定するプレイ状態では無いと判断される。
【００８８】
肌色判定処理により、ユーザの顔（肌色領域）を正しく認識し、かつ、上記数３ないし数７のいずれも満たさない場合には、開発者等が意図したプレイ状態であると判断して、口の開閉を判断する。数８を満たす場合には、ユーザが口を閉じていると判断し、一方、数９を満たす場合には、ユーザが口を開いていると判断する。ただし、ユーザが口を開いた後に、口を閉じたと判断されたときに、パンオブジェクト１０４が唇オブジェクト１０２によって一回食べられる。
【００８９】
[数８]
Lip_dY<16
[数９]
Lip_dY≧16
このようにして、図４（Ａ）および図４（Ｂ）に示すゲームでは、肌色判定処理によって、ユーザの顔（肌色領域）のシルエット１０６がパンオブジェクト１０４付近に有ると判断されると、特徴点Ｐｉに基づいて、開発者等の意図したプレイ状態であるかどうかが判断される。ここで、意図したプレイ状態である場合には、さらに、特徴点Ｐｉに基づいて、ユーザが口を開閉したかどうかが判定される。そして、ユーザが口を開閉したと判定されと、これに応じて、パンを食べる様子のゲーム画面１００（図示せず）が第１ＬＣＤ１６に表示される。したがって、たとえば、図４（Ａ）に示す状態で、唇オブジェクト１０２が開閉し、このとき、パンオブジェクト１０４が唇オブジェクト１０２によってかじられ、図４（Ｂ）に示すように、パンオブジェクト１０４の一部が無くなった様子のゲーム画面１００が表示される。
【００９０】
ただし、図４（Ｂ）に示すゲーム画面１００では、パンオブジェクト１０４がかじられた後に、さらに、ユーザの口が開閉したことが検出され、これに応じて、唇オブジェクト１０２が開いて、パンオブジェクト１０４をかじろうとしている様子が示される。
【００９１】
この実施例では、パンを複数回（たとえば、２回）に分けて、食べるようにしてあるため、制限時間内に複数回ユーザの口の開閉が検出されると、パンオブジェクト１０４が全部無くなることにより、すなわち所定の目標を達成することにより、ゲームクリアとなる。ただし、制限時間内に複数回ユーザの口の開閉が検出されない場合には、パンオブジェクト１０４が無くならず、所定の目標を達成できずに、ゲームオーバとなる。
【００９２】
図８（Ａ）および図８（Ｂ）には、他の仮想ゲーム（アクションゲーム）のゲーム画面２００の例が示される。図８（Ａ）に示すように、ゲーム画面２００のほぼ中央には、赤ちゃんを模したオブジェクト（赤ちゃんオブジェクト）２０２が表示され、その左方に兎のぬいぐるみを模したオブジェクト（ぬいぐるみオブジェクト）２０４が表示される。また、ゲーム画面２００の左上部には、ユーザに現在行うべき動作（身振り手振り）を指示するための指示画像表示領域２０６が設けられる。そして、ゲーム画面２００には、ユーザの顔（肌色領域）のシルエット２０８が表示される。
【００９３】
この図８（Ａ）および図８（Ｂ）に示すゲーム画面２００を用いた仮想ゲームでは、ユーザが、制限時間内に、いわゆる「いないいないあばあ」の動作に成功すると、赤ちゃんオブジェクト２０２をあやすことができ、これによって所定の目的を達成し、ゲームクリアとなる。しかし、ユーザが、「いないいないばあ」の動作に失敗し、制限時間を超えると、すなわち、制限時間内に、赤ちゃんオブジェクト２０２をあやすことができなければ、ゲームオーバとなる。
【００９４】
このような仮想ゲームにおいても、肌色判定処理によって、ユーザの顔を正しく認識しているかどうかを判断し、正しく認識している場合には、さらに、ユーザの顔の特徴点Ｐｉに基づいて、ユーザの顔の一部を認識することにより、「いないいないばあ」の動作を検出する。
【００９５】
まず、この仮想ゲームでは、上述したように、肌色判定処理を行うが、図５に示した特定領域１１０とは、大きさ（範囲）が異なる特定領域１１０´が設定される。具体的には、図９に示すように、第１ＬＣＤ１６の画面（表示了領域）の中心を基準として、左右に２８画素を有し、上方向に２８画素を有し、下方向に１２画素を有するように、特定領域１１０´が設定される。これは、ユーザが手で自身の顔を覆うとき、目だけを隠す場合と、目、鼻および口を隠す場合とのように、ユーザ毎に動作が異なるためである。
【００９６】
また、このように、肌色領域を判定するのは、第１ＬＣＤ１６の画面の中央付近では、ユーザの顔が見えている状況においては、肌色が多少なりと分布しているはずであり、また、顔を素手で覆うことを想定しているため、顔を素手で覆った場合にも肌色が分布すると考えられるからである。
【００９７】
このように、肌色領域を判定するのは、特徴点Ｐｉのみによって顔を認識するようにすると、顔を画面の外（内側カメラ３２で撮影できないところ）に移動させて、顔が映らないようにすることにより、顔を手で覆った状況と同じ状況（すなわち特徴点Ｐｉが検出されない状況）が作れてしまい、そのようなプレイ状態は開発者等が意図する態様ではないからである。
【００９８】
肌色判定処理は、図５を用いて説明した場合と同様であり、特定領域１１０´を２×２画素の格子単位で肌色か否かを検出し、格子の総数（この実施例では、５６×４０÷４＝５６０）のうち、肌色を検出された格子の数の割合が所定値（たとえば、３５％）以上であるか否かで、ユーザの顔を正しく認識しているかどうかを判定するようにしてある。
【００９９】
肌色判定処理により、ユーザが顔を覆っている状態を検出すると、次に、特徴点Ｐｉに基づいて、上述したように、左右のそれぞれの目に対して、中点EyeL, EyeRを算出するとともに、差分(Eye_dX, Eye_dY )を算出する。ただし、これらの計算に用いる特徴点Ｐｉおよび数式（数１，数２）は上述したとおりであるため、重複した説明は省略する。
【０１００】
次に、数１０を満たすか否かが判断される。数１０の４つの条件のうち、３つ以上を満たす場合には、ユーザの顔をプログラマ等が意図した大きさおよび位置で検出できたと判断する。ただし、“&&”はアンド（∩）を意味する。
【０１０１】
[数１０]
(EyeL_X>16 && EyeL_X<240)
(EyeL_Y>16 && EyeL_Y<176)
(EyeR_X>16 && EyeR_X<240)
(EyeR_Y>16 && EyeR_Y<176)
ユーザの顔を検出できている状態とユーザの顔を検出できていない状態とに基づいて、ユーザが顔を手で覆っている（隠している）かどうかを判断するようにしてある。この実施例では、評価値（変数EV）を用いて、その判断を行うようにしてある。ただし、変数EVは０から１００の間で変化する整数である。また、変数EVが０に近いほど、ユーザの顔が隠されておらず、変数EVが１００に近いほど、ユーザの顔が隠されていると評価するように、変数EVを変化させるようにしてある。
【０１０２】
ユーザが顔を隠しているかどうかの評価の開始時には、変数EVは０に設定される。次に評価の開始からユーザが顔を隠したと判断されるまで、顔を検出できている状態が検出されると、数１１に従って変数EVが減算され、顔を検出できていない状態が検出されると、数１２に従って変数EVが加算される。ただし、上述したように、変数EVは、下限値０および上限値１００を超えないように変化される。また、減算される値および加算される値は経験的に得られた値であり、これに限定される必要はない。
【０１０３】
[数１１]
EV=EV-12
[数１２]
EV=EV+16
数１１および数１２に従って変数EVが変化され、変数EVすなわち評価値が所定値（この実施例では、７０）を超えると、ユーザが顔を隠したと判断される。続いて、ユーザが顔を隠してから次に顔を見せるまで、顔を検出できている状態が検出されると、数１３に従って変数EVが減算され、顔を検出できてない状態が検出されると、数１４に従って変数EVが加算される。ただし、上述したように、変数EVは、下限値０および上限値１００を超えないように変化される。また、減算される値および加算される値は経験的に得られた値であり、これに限定される必要はない。
【０１０４】
[数１３]
EV=EV-16
[数１４]
EV=EV+14
数１３および数１４に従って変数EVが変化され、変数EVすなわち評価値が所定値（この実施例では、３０）以下になると、ユーザが顔を見せたと判断される。
【０１０５】
このようにして、ユーザが顔を隠した後に、顔を見せると、「いないいないばあ」の動作に成功したと判断する。上述したように、ユーザが「いないいないばあ」の動作を制限時間内に成功すれば、赤ちゃんオブジェクト２０２をあやすことができ、ゲームクリアとなる。
【０１０６】
ここで、図４および図８に示した仮想ゲームでは、いずれも肌色判定処理を実行するようにしてある。ただし、肌色は、ユーザ毎に個体差があり、しかも、ゲームをプレイする時間や場所などの環境によっても変化するため、撮影画像から肌色を抽出するための処理に用いられる閾値（色相下限、色相上限、彩度下限、彩度上限、輝度下限、輝度上限）が予め調整される。この調整処理は、ゲームの本編を開始するのに先立って、ユーザを撮影した画像を用いて行われる。ただし、以下に説明する調整処理は、ゲームの本編の開始前のみならず、ゲームの内容（面やシーンなど）が変化するなどの要所において、実行されるようにしてもよい。
【０１０７】
たとえば、ゲームの本編の開始に先立って、図１０（Ａ）に示すような調整画面３００が第１ＬＣＤ１６に表示される。調整画面３００には、ユーザの顔を撮影した画像（顔画像）を表示するための位置および大きさを指示するための顔型の指標（顔型指標）３０２およびユーザの手を撮影した画像（手画像）を表示するための位置および大きさを指示するための手型の指標（手型指標）３０４が表示される。
【０１０８】
この実施例の仮想ゲームをプレイする場合には、ユーザは、図１１に示すように、ゲーム装置１０を机のような台上に置き、水平面（下側ハウジング１４）に対して斜めになるように、上側ハウジング１２を傾けるようにする。したがって、ユーザは、内側カメラ３２によって撮影された自身の顔画像が顔型指標３０２に収まるように、ユーザの顔（頭部）または体全体とゲーム装置１２（内側カメラ３２）との距離（前後の位置）や左右方向（水平方向）の位置を調整するともに、顔（頭部）の上下方向の位置や顔（頭部）の傾きも調整する。図示は省略するが、同様に、ユーザは、内側カメラ３２によって撮影された自身の右手（手のひら）の画像が手型指標３０４に収まるように、ユーザの右手とゲーム装置１２（内側カメラ３２）との距離（前後の位置）や水平方向位置を調整するとともに、右手の上下方向の位置や右手の手のひらの傾きも調整する。
【０１０９】
このような調整画面３００を用いて、ゲーム装置１０は、ユーザの記念撮影を実行し、複数（この実施例では、３〜４枚）の撮影画像を取得する。この実施例では、ゲーム装置１０からの音声ガイドにより、撮影タイミングが指示され、撮影タイミングとその１秒程度前までの数フレーム毎の撮影画像が取得される。具体的には、記念撮影を行う旨のメッセージがゲーム装置１０のスピーカから出力され、次いで、「３，２，１，パシャ」という、カウントダウンする音声およびシャッタ音がスピーカから出力される。ただし、この実施例では、複数枚の撮影画像を得るために、「１」をカウントした後シャッタ動作が実行されるまでの間に、たとえば、４フレーム（フレーム：画面更新単位（１／６０秒）毎に、内側カメラ３２からの撮影画像を保存用データメモリ５６に保存するようにしてある。つまり、１秒が約１６フレームに相当するため、３〜４枚の撮影画像が取得されるのである。これらの複数枚の撮影画像のデータ（以下、「評価用画像データ」という）を用いて、上述した閾値の調整を実行する。ただし、肌色判定処理のみならず、閾値の調整処理および後述する肌色抽出処理も、ＣＰＵ５０が実行する。
【０１１０】
閾値の調整処理では、まず、各閾値に初期値（静的）が与えられる。最初の評価用画像データについては、図１２に示す肌色判定の閾値の表に従う初期値が与えられるが、次回以降の評価用画像データについては、前回までの調整処理によって収束した閾値（最適値）が初期値として与えられる。また、図１２からも分かるように、調整処理により変化し得る閾値の最大値および最小値（いずれも静的）がそれぞれの初期値に対応づけて設定されている。
【０１１１】
ただし、色相については、３６０の角度を２５６（０以上２５６未満）段階に変換した値で処理を行う。また、色相は循環するため、０と２５６とは等価である。よって、図１２に示す色相の初期値の場合、色相下限が２２０であり、色相上限が２５であるので、肌色としての抽出範囲は、２２０,２２１，２２２，…，２５４，２５５，０，１，…，２４，２５となる。
【０１１２】
なお、実際には、色相のみならず、彩度および輝度についても条件を満たす必要があるため、色相、彩度および輝度のすべてが抽出範囲に属する場合に、肌色と判定される。
【０１１３】
また、所定のポーズ、この実施例では、図１０（Ａ）に示した調整画面３００に表示されている顔型指標３０２と手型指標３０４とのそれぞれに顔および右手の手のひらが納まる格好に対応したデータ（以下、「判定用データ」という）を静的に持っている。たとえば、判定用データは、ゲーム装置１０に装着されたメモリカード２８からロードされ、メインメモリ５２に記憶される。具体的には、判定用データは、第１ＬＣＤ１６の各画素が属性Ａ，Ｂ，Ｃのいずれであるかを示すデータ（２ドット毎の精度のデータである）である。ここで、属性Ａは肌色であるべきことを意味し、属性Ｂは肌色であるべきでないことを意味し、そして、属性Ｃはどちらでもよい（評価に関係ない）ことを意味する。
【０１１４】
図１０（Ｂ）に戻って、図１０（Ａ）に示した調整画面３００において撮影画像が表示される場合の属性Ａ，属性Ｂおよび属性Ｃで区別される画素の分布が示される。属性Ａで示される画素は、領域３１０で示される。属性Ｂで示される画素は、領域３１２で示される。そして、属性Ｃで示される画素は、第１ＬＣＤ１６の表示領域のうち、領域３１０および領域３１２以外の領域３１４で示される。
【０１１５】
評価用画像データを２×２画素の格子毎に、対応する画素の判定用データを参照しながら、次の２つの値Ｑ，Ｒを算出し、この値Ｑ，Ｒから評価値Ｘcrtを算出する。ただし、値Ｑは、着目する評価用画像データの画素が肌色であり、対応する画素の判定用データが属性Ａを示す場合の格子の数である。言い換えると、値Ｑは、正しく肌色が抽出されているとの良い評価が得られている格子の数である。一方、値Ｒは、着目する評価用画像データの画素が肌色であるが、対応する画素の判定用データが属性Ｂを示す場合の格子の数である。言い換えると、ノイズや誤った抽出であるとの悪い評価が得られている格子の数である。そして、評価値Ｘcrtは、値Ｑから値Ｒを減算した値であり、大きいほど、より正しく肌色を抽出できていると言える。
【０１１６】
このような評価は、最初の評価用画像データについては、各閾値を基準値に設定して行われる。そして、各閾値に対応する評価値Ｘcrtが識別可能にメインメモリ５２に記憶（一時記憶）される。次に、各閾値を最小値および最大値に設定した場合についての評価が閾値毎に行われる。
【０１１７】
たとえば、色相下限の閾値を図１２に示した最小値に設定し、上述のようにして、評価値Ｘminを算出する。評価値Ｘminが前回の評価値Ｘpre（ここでは、評価値Ｘcrt）を上回っているかどうかを判断する。評価値Ｘminが前回の評価値Ｘpreを超えている場合には、調整の方向が正しいと判断して、現在の閾値と現在の最適値（ここでは、基準値）との中間の値を新たな閾値として設定し、再度上述した評価を行い、より評価の高かった方の閾値を最適値として採用する。つまり、閾値は、最小値または最小値と現在の最適値（ここでは、基準値）との中間の値に設定されるのである。
【０１１８】
一方、評価値Ｘminが前回の評価値Ｘpreを下回る場合には、調整の方向が逆であったと判断して、色相下限の閾値を図１２に示した最大値に設定し、上述したようにして、評価値Ｘmaxを算出する。評価値Ｘmaxが前回の評価値Ｘpre（ここでは、評価値Ｘcrt）を上回っているかどうかを判断する。評価値Ｘmaxが前回の評価値Ｘpreを超えている場合には、現在の閾値と現在の最適値との中間の値を新たな閾値として設定し、再度上述した評価を行い、より評価の高かった方の閾値を最適値として採用する。しかし、評価値Ｘmaxも前回の評価値Ｘpreを下回る場合には、もともとの閾値が最適値であったと判断して、閾値を変更しない。
【０１１９】
他の色相上限、彩度下限、彩度上限、輝度下限、輝度上限についても上記の手順に従って閾値が調整（選択）される。また、次回以降の評価用画像データについては、前回までの調整処理によって選択（収束）された閾値（最適値）が初期値として与えられる。そして、すべての評価用画像データについて、調整処理が実行され、最終的に選択された閾値（最適値）が次に説明する肌色の抽出処理において用いられる。
【０１２０】
このように、この実施例では、ゲーム開始前にプレイヤを撮影した写真画像を用いて、現在の環境（光のあたり具合など）におけるプレイヤの肌色を判定するための閾値を調整する。これにより、ゲーム中の肌色検出を正確に行うことができる。
【０１２１】
また、この実施例では、複数の写真画像を用いて閾値の調整処理を行う。これにより、閾値を正確に調整することができ、また、ｎ枚目の写真画像により最適化された閾値をもとにｎ＋１枚目の写真画像についての評価処理を行うため効率的である。
【０１２２】
さらに、この実施例では、色相、彩度、輝度のそれぞれについて閾値を調整するため、そのときの環境における閾値を正確に設定することができる。なお、色相と彩度のみを調整してもよいし、色相と輝度のみを調整してもよい。
【０１２３】
さらにまた、肌色であるべき領域のみならず、肌色以外であるべき領域を判定するので、正確に閾値を設定することができる。
【０１２４】
上述したように、肌色を抽出する場合には、まず、内側カメラ３２によって撮影された画像（撮影画像）から、肌色の抽出処理用のデータが構築される。ここで、撮影画像は、ＲＧＢ（各成分５ビット）の形式でＡＰＩにより取得される。ただし、撮影画像は、第１ＬＣＤ１６の表示領域と同じ２５６×１９２ドットで構成される。
【０１２５】
肌色の抽出処理用のデータ（抽出処理用データ）は、８×８画素、４×４の画素、２×２画素の格子状の領域に対応して生成される。この実施例では、第１ＬＣＤ１６の表示領域は２５６×１９２ドットであるため、この表示領域を８×８画素の格子状の領域に分割する場合には、３２×２４個の格子が生成される。８×８画素の格子に分割する場合の例が、図１３（Ａ）に示される。図１３（Ａ）では（図１３（Ｂ），図１４も同じ）、８×８画素の格子を太線枠で示してある。ただし、図１３（Ａ）では（図１３（Ｂ），図１４も同じ）、簡単のため、第１ＬＣＤ１６の表示領域を２４×１６画素で示してある。また、図１３および図１４では、最も小さい格子（四角枠）が１画素（ドット）に相当する。同様に、表示領域を４×４画素の格子状の領域に分割する場合には、６４×４８個の格子が生成される。４×４画素の格子に分割する場合の例が、図１３（Ｂ）に示される。さらに、表示領域を２×２画素の格子状の領域に分割する場合には、１２８×９６個の格子が生成される。２×２画素の格子に分割する場合の例が、図１４に示される。
【０１２６】
抽出処理用データは、評価値（上述した評価値とは異なる）、状態値および色値の各情報を示す。評価値は、肌色らしさを示す値であり、８ビットのデータで示される。この実施例では、評価値は、０〜６４の値および２５５の値となる。ただし、０〜６４で肌色らしさが示され、２５５は無効であることを意味する。また、評価値が大きいほど、肌色らしいことを意味するようにしてある。
【０１２７】
状態値は、後述する各処理によって判定した内容（状態）を保持するためのデータであり、１６ビットのデータで示される。具体的には、肌色かどうかを示す１ビットの情報、周囲８つの格子のそれぞれについて肌色かどうかを示す８ビットの情報、強制的に自身を肌色とみなすための１ビットのフラグ、強制的に自身を肌色でないとみなすための１ビットのフラグで示され、余分な５ビットが付加される。
【０１２８】
色値は、ＲＧＢ５５５形式で示した１６ビットのデータであり、ＲＧＢがそれぞれ５ビットの階調で表現され、余分な１ビットが付されたデータである。ただし、撮影画像を格子単位で肌色か否かを評価する際には、色値（ＲＧＢ５５５形式）は、輝度、色相および彩度に変換して利用される。
【０１２９】
次に抽出処理用データの生成について説明する。まず、２×２画素の格子に対して、処理１によって色値を準備する。この実施例では、処理１は、格子（大）に含まれる４つの格子（小）の色値の平均値を算出する。ここでは、２×２画素の格子であるため、２×２画素の格子（大）に含まれる４つの格子（小）のそれぞれは１画素に相当する。
【０１３０】
なお、この実施例では、処理１では、格子（大）に含まれる４つの格子（小）の色値の平均値を算出するようにしてあるが、４つの格子（小）のうちの左上の格子の色値を採用するようにしてもよい。
【０１３１】
次に、４×４画素の格子に対して、処理１によって色値を準備する。さらに、８×８画素の格子に対して、処理１によって色値を準備する。ただし、４×４画素の格子に分割した場合には、４×４の格子（大）に含まれる４つの格子（小）のそれぞれは２×２画素の格子を意味する。また、８×８画素の格子に分割した場合には、８×８画素の格子（大）に含まれる４つの格子（小）のそれぞれは４×４画素の格子を意味する。
【０１３２】
続いて、８×８画素の格子に対して、処理２によって色値を補正する。この実施例では、処理２は、自身の格子を中心とする周囲８つの格子を含む９つの格子に対し、色値に基づく輝度値の中央値を算出し、中央値を有する格子の色値を、自身の格子の色値に変更する。
【０１３３】
ただし、最外周の格子については、色値の補正は無効化される。また、この実施例では、処理２は、自身の格子と、自身を含む周囲８つの格子との合計９つの格子について、色値に基づく輝度の中央値を求めて、中央値を有する格子の色値を自身の格子の色値に変更（補正）するようにしてあるが、色値は補正しなくてもよい。
【０１３４】
次に、８×８画素の格子に対して、処理３によって状態値を初期化する。この実施例では、処理３は、上述の閾値の調整処理によって調整された閾値に基づいて各格子が肌色かどうかを判断し、状態値に反映する。具体的には、上述のようにして準備および補正した色値を基に、輝度、色相および彩度のそれぞれが、閾値の範囲内であるか範囲外であるかを選別（判定）する。
【０１３５】
続いて、８×８画素の格子に対して、処理４によって評価値を初期化する。この実施例では、処理４は、周辺の格子の状態値から、重み付けして評価値に反映する。具体的には、中央の格子の評価値は、対応する位置関係の格子に対して、閾値による判定結果が閾値内である格子を「１」とし、閾値による判定結果が閾値外である格子を「０」として、重み付けの値に掛け合わしたものの総和で算出される。各格子の重み付けの値をＷｉ（ｉは格子に付した番号：１−９）とし、各格子の閾値による判定結果の値をＨｉとすると、中央の格子の評価値Ｙは、数１５に従って得られる。
【０１３６】
[数１５]
Y＝W1*H1+W2*H2+W3*H3+W4*H4+W5*H5+W6*H6+W7*H7+W8*H8+W9*H9
この実施例では、図１５（Ａ）に示すように、自身の格子を中心として、この自身の格子と周囲８つの格子とに対して、重み付けがなされている。ただし、重み付けの値の合計は、「６４」である。具体的には、（１），（３），（７）および（９）の格子に対して重み「０」が設定され、（２），（４），（６），（８）の格子に対して重み「１０」が設定され、そして、（５）の格子すなわち自身の格子に対して重み「２４」が設定される。
【０１３７】
また、図１５（Ｂ）には、各格子の閾値による判定結果（処理３の結果）の例が示される。この図１５（Ｂ）では、閾値の範囲内である格子（３），（５），（６），（８）には、「○」を付してあり、閾値の範囲外である格子（１），（２），（４），（７），（９）には「×」を付してある。
【０１３８】
したがって、図１５（Ａ）および図１５（Ｂ）に示す例では、中央の格子の評価値Ｙは、数１５に従って、数１６に示すように算出される。
【０１３９】
[数１６]
Y=0*0+10*0+0*1+10*0+24*1+10*1+0*0+10*1+0*0=44
このようにして、評価値Ｙが初期化される。評価値Ｙが初期化されると、８×８画素の格子に対して、処理５によって評価値を補正する。この実施例では、処理５は、隣接する格子の評価値Ｙに基づいて、中心の格子の状態値を補正し、評価値に反映させる。
【０１４０】
具体的には、周囲の８つの格子のそれぞれの評価値Ｙが２０以上であれば、周囲の格子（周辺）は肌色で満たされているとみなし、自身の格子について初期化された評価値Ｙに拘わらず、自身の格子の評価値Ｙも肌色とする。つまり、状態値において、強制的に自身の格子を肌色とみなすためのフラグをオンする。
【０１４１】
一方、周囲の８つの格子のそれぞれの評価値Ｙが２０未満であれば、周囲の格子（周辺）は肌色でないとみなし、自身の格子について初期化された評価値Ｙに拘わらず、自身の格子の評価値Ｙも肌色でないとする。つまり、状態値において、強制的に自身の格子を肌色でないとみなすためのフラグをオンする。
【０１４２】
なお、後述するように、処理５は、４×４画素の格子や２×２画素の格子に対しても実行されるが、より上層（大きい格子）において、強制的に肌色とみなしたり、強制的に肌色でないとみなしたりしている場合には、その上層における結果が優先されることになる。
【０１４３】
８×８画素の格子に対して、処理５を実行し、状態値が補正されると、処理６を実行することよって、４×４画素の格子の状態値が初期化される。つまり、８×８画素の格子の状態値がそれに含まれる４×４画素の格子のそれぞれの状態値の初期値として設定される。
【０１４４】
次に４×４画素の格子に対して、処理４によって評価値を初期化する。処理４は上述したとおりであるため、重複した説明は省略する。以下、同様である。さらに、４×４画素の格子に対して、処理５によって状態値が補正され、評価値Ｙに反映され、そして、処理６によって、２×２画素の格子の状態値が初期化される。つまり、４×４画素の格子の状態値がそれに含まれる２×２画素の格子のそれぞれの状態値の初期値として設定される。
【０１４５】
続いて、２×２画素の格子に対して、処理４によって評価値を初期化する。そして、２×２画素の格子に対して、処理５によって状態値が補正され、評価値Ｙに反映される。したがって、２×２画素の格子単位で、その状態値を参照することにより、肌色であるか否かを検出することができる。
【０１４６】
このように、この実施例では、撮像により取得した画像に対して、まずは、比較的大きいサイズＡ（上述の例では、８×８）の各分割画像（各格子）に対して、肌色か否かの判定処理、具体的には、色値の輝度、色相および彩度が一定範囲内であることを判定する処理（以下、同じ）を行い、サイズＡの各格子について判定結果（上述の例では、「状態値」）を生成する。そして、その後、比較的小さいサイズＢ（上述の例では、４×４）の各格子について処理を行う。具体的には、まず、サイズＡの各格子の判定結果を用いてサイズＢの各格子の判定結果を設定する（上述の処理６）。このため、小さいサイズの格子については肌色か否かの判定処理を行う必要が無い。そして、サイズＢの各格子の判定結果は周囲の格子の判定結果を用いて補正される（上述の処理４，処理５）。これにより、判定結果はより小さいサイズＢの単位で変動することとなって、解像度の高い判定結果が生成される。
【０１４７】
また、この実施例では、比較的大きいサイズＡの格子において、肌色の可能性が高いと設定された格子、上述の例では、「強制的に自身を肌色とみなすための１ビットのフラグ」が設定（オン）された格子については、当該サイズＡの格子に含まれる比較的小さいサイズＢの格子において肌色でないと判定された場合であっても、サイズＡの格子全域について肌色であると判定される。これにより、ノイズを減らすことができる。また、同様に、比較的大きいサイズＡの格子において、肌色の可能性が低いと設定された格子、上述の例では、「強制的に自身を肌色でないとみなすための１ビットのフラグ」が設定（オン）については、当該格子内の比較的小さいサイズＢの格子において肌色であると判定された場合であっても、サイズＡの格子全域について肌色でないと判定される。これにより、ノイズを減らすことができる。
【０１４８】
図１６はメインメモリ５２のメモリマップの一例を示す図解図である。図１６に示すように、メインメモリ５２は、ゲームプログラム記憶領域９０およびデータ記憶領域９２を含む。ゲームプログラム記憶領域９０は、ゲームプログラムを記憶し、ゲームプログラムは、メイン処理プログラム９０ａ、画像生成プログラム９０ｂ、画像表示プログラム９０ｃ、画像更新プログラム９０ｄ、撮影プログラム９０ｅ、閾値調整プログラム９０ｆ、肌色抽出プログラム９０ｇ、第１顔認識プログラム９０ｈ、特徴点取得プログラム９０ｉおよび第２顔認識プログラム９０ｊなどによって構成される。
【０１４９】
メイン処理プログラム９０ａは、この実施例の仮想ゲームのメイン処理を実行するためのプログラムである。画像生成プログラム９０ｂは、後述する画像データ９２ａを用いて、第１ＬＣＤ１６または第２ＬＣＤ１８にゲーム画面（１００,２００など）や操作画面などのゲームに必要な画面を表示するためのゲーム画像を生成するためのプログラムである。画像表示プログラム９０ｃは、画像生成プログラム９０ｂに従って生成されたゲーム画像を第１ＬＣＤ１６または第２ＬＣＤ１８に表示するためのプログラムである。画像更新プログラム９０ｄは、第１ＬＣＤ１６または第２ＬＣＤ１８に表示されたゲーム画面（ゲーム画像）を更新するためのプログラムである。撮影プログラム９０ｅは、ユーザの指示やゲームのイベントなどに従って、内側カメラ３２または外側カメラ３４で、被写体を撮影するためのプログラムである。通常のデジタルカメラと同様であるため、詳細な説明は省略するが、カメラ（撮影）モードが設定されると、リアルタイム動画像（スルー画像）が取得され、ビューファインダなどとして使用される第１ＬＣＤ１６または第２ＬＣＤ１８にそのスルー画像が表示される。また、ユーザのシャッタ操作またはゲームのイベントなどによって、静止画像の撮影画像が取得され、対応する撮影画像データが保存用データメモリ５６に記憶される。
【０１５０】
閾値調整プログラム９０ｆは、仮想ゲームの本編の開始に先立って、撮影画像に基づいて、肌色抽出処理における肌色判定のための色相、彩度、輝度の閾値を最適値に調整するためのプログラムである。肌色抽出プログラム９０ｇは、撮影画像から２×２画素の格子単位で肌色を抽出するためのプログラムである。第１顔認識プログラム９０ｈは、肌色抽出プログラム９０ｇに従って抽出された肌色の情報に基づいて、予め設定されている特定領域（１１０，１１０´）における肌色領域の割合が所定値（３５％）を超えているか否かを判断し、所定値を超えている場合には、ユーザの顔を正しく認識していると判定するためのプログラムである。
【０１５１】
特徴点取得プログラム９０ｉは、一定時間（たとえば、１０フレーム）毎に、内側カメラ３２によって撮影された撮影画像に対して、エッジ検出等の画像処理を施すことによって、ユーザの顔画像における５５個の特徴点Ｐｉを取得するためのプログラムである。第２顔認識プログラム９０ｊは、特徴点検出プログラム９０ｉに従って取得された特徴点Ｐｉに基づいて、ユーザの顔全体を認識したり、ユーザの顔の一部（この実施例では、口や目）ないしその動き（この実施例では、口の開閉）を認識したりするためのプログラムである。
【０１５２】
なお、図示は省略するが、ゲームプログラム記憶領域９０には、音出力プログラムやバックアッププログラムなども記憶される。音出力プログラムは、ゲームキャラクタの音声や擬声音、効果音、ＢＧＭのようなゲームに必要な音を生成および出力するためのプログラムである。バックアッププログラムは、メインメモリ５２に記憶されるゲームデータ（途中データ、結果データ）をメモリカード２６に記憶（セーブ）するためのプログラムである。
【０１５３】
図１７は、図１６に示したデータ記憶領域９２の詳細な内容を示す図解図である。この図１７に示すように、データ記憶領域９２には、画像データ９２ａ、撮影データ９２ｂ、特徴点データ９２ｃ、上唇抽出座標データ９２ｄ、下唇抽出座標データ９２ｅ、左目抽出座標データ９２ｆ、右目抽出座標データ９２ｇ、唇の差分データ９２ｈ、目の差分データ９２ｉ、設定閾値データ９２ｊ、判定用データ９２ｋ、色相閾値データ９２ｍ、彩度閾値データ９２ｎおよび輝度閾値データ９２ｐなどが記憶される。
【０１５４】
画像データ９２ａは、ゲーム画像を生成するためのポリゴンデータやテクスチャデータなどである。撮影データ９２ｂは、内側カメラ３２または外側カメラ３４で撮影された撮影画像のデータ（撮影画像データ）であり、保存用データメモリ５６が読み出して、メインメモリ５２に記憶（一時記憶）される。この実施例では、複数枚（たとえば、４枚）分の撮影画像データを記憶することができる。特徴点データ９２ｃは、上述したように、特徴点検出プログラム９０ｉに従って取得された特徴点Ｐｉの各々に対応する座標データであり、一定時間（１０フレーム）毎に更新される。
【０１５５】
上唇抽出座標データ９２ｄは、上述したように、特徴点Ｐｉに基づいて算出された上唇の中点LipUの座標データである。下唇抽出座標データ９２ｅは、上述したように、特徴点Ｐｉに基づいて算出された下唇の中点LipDの座標データである。左目抽出座標データ９２ｆは、上述したように、特徴点Ｐｉに基づいて算出された左目の中点EyeLの座標データである。右目抽出座標データ９２ｇは、上述したように、特徴点Ｐｉに基づいて算出された右目の中点EyeRの座標データである。
【０１５６】
唇の差分データ９２ｈは、上述したように、上唇の中点LipUと下唇の中点LipDとの各軸方向における唇の差分(Lip_dX, Lip_dY)についてのデータである。目の差分データ９２ｉは、上述したように、左目の中点EyeLと右目の中点EyeRとの各軸方向における目の差分(Eye_dX, Eye_dY)についてのデータである。
【０１５７】
設定閾値データ９２ｊは、図１２に示した肌色判定の閾値の表についてのデータであり、予めプログラマ等によって生成されたデータである。判定用データ９２ｋは、図１０（Ｂ）を用いて説明した属性Ａ，Ｂ，Ｃのそれぞれに対応する領域３１０，３１２，３１４を既定するためのデータである。
【０１５８】
色相閾値データ９２ｍは、上述した閾値調整プログラム９０ｆに従って調整された色相の閾値についての最適値の数値データである。同様に、彩度閾値データ９２ｎは、上述した閾値調整プログラム９０ｆに従って調整された彩度の閾値についての最適値の数値データである。同様に、輝度閾値データ９２ｐは、上述した閾値調整プログラム９０ｆに従って調整された輝度の閾値についての最適値の数値データである。
【０１５９】
なお、図示は省略するが、データ記憶領域９２には、音データのような他のデータが記憶されたり、ゲーム処理に必要なカウンタ（タイマ）やフラグなども設けられたりする。
【０１６０】
具体的には、図３に示したＣＰＵ５０が図１８に示すゲーム処理を実行する。図示は省略するが、図１８に示すゲーム処理（本編）の開始に先立って、上述した閾値の調整処理が実行される。また、図示は省略するが、調整処理の開始と同時或いはほぼ同時に、内側カメラ３２による撮影処理が開始される。さらに、図示は省略するが、ゲーム処理が開始されると、特徴点Ｐｉの取得処理が一定時間（１０フレーム）毎に実行される。これらの処理は、マルチタスクによって実行される。
【０１６１】
図１８に示すように、ＣＰＵ５０は、ゲーム処理を開始すると、ステップＳ１で、ゲーム初期画面を表示する。たとえば、図４（Ａ）に示したゲーム画面１００や図８（Ａ）に示したゲーム画面３００が第１ＬＣＤ１６に表示される。これらは、プレイするゲームに応じて異なる。続くステップＳ３では、撮影画像から肌色を抽出する。ここでは、上述したように、撮影データ９２ｂに含まれる最新の撮影画像データに対応する撮影画像から、肌色が抽出される。
【０１６２】
次のステップＳ５では、ユーザの顔を正しく認識しているかどうかを判断する。具体的には、ステップＳ３で抽出した結果を用いて、特定領域（１１０，１１０´）における肌色領域が所定の割合（３５％）を超えているかどうかを判断する。ステップＳ５で“ＮＯ”であれば、つまり特定領域（１１０，１１０´）における肌色領域が所定の割合以下であれば、ユーザの顔を正しく認識していないと判断して、そのままステップＳ１３に進む。
【０１６３】
一方、ステップＳ５で“ＹＥＳ”であれば、つまり特定領域（１１０，１１０´）における肌色領域が所定の割合を超えていれば、ユーザの顔を正しく認識していると判断して、ステップＳ７で、特徴点Ｐｉを検出する。ここでは、ＣＰＵ５０は、データ領域９２に記憶される特徴点データ９２ｃを検出するのである。続いて、ステップＳ９では、所定の条件を満たすかどうかを判断する。ここでは、ＣＰＵ５０は、特徴点Ｐｉに基づいてユーザの口が開閉したかどうかを判断したり、ユーザの顔（目）を認識していない状態から顔（目）を認識している状態に変化したかどうかを判断したりする。これらの判断は、ゲームの種類によって異なる。また、上述した仮想ゲームの例では、顔全体を認識するような仮想ゲームについては説明していないが、すべての特徴点Ｐｉ（顔全体）に基づいて所定の条件を満たすか否かを判定するようなゲーム処理を実行させることも可能である。つまり、ＣＰＵ５０は、ユーザの顔全体が認識されたり、ユーザの顔の一部またはその動きが認識されたりして、所定の条件を満たすかどうかを判断するのである。
【０１６４】
ステップＳ９で“ＮＯ”であれば、つまり所定の条件を満たしていない場合には、そのままステップＳ１３に進む。一方、ステップＳ９で“ＹＥＳ”であれば、つまり所定の条件を満たしている場合には、ステップＳ１１で、ゲームクリアかどうかを判断する。ここでは、ＣＰＵ５０は、ゲームクリアの条件を満たしたかどうかを判断するのである。たとえば、上述した仮想ゲームでは、制限時間内に、パンを全部食べたことや「いないいないばあ」に成功したことがゲームクリアの条件に該当する。
【０１６５】
ステップＳ１１で“ＹＥＳ”であれば、つまりゲームクリアであれば、ステップＳ１７で、ゲームクリア処理を実行して、ゲーム処理を終了する。たとえば、ステップＳ１７では、ゲームをクリアしたことを表現するゲーム画面が表示されたり、効果音が出力されたり、得点が加算されたり、レベルが上昇されたりするなどの様々な演出が実行される。
【０１６６】
一方、ステップＳ１１で“ＮＯ”であれば、つまりゲームクリアでなければ、ステップＳ１３で、ゲームオーバであるかどうかを判断する。ここでは、ＣＰＵ５０は、ゲームオーバの条件を満たしたかどうかを判断するのである。たとえば、上述した仮想ゲームでは、制限時間内に、パンを食べ切れなかったことや「いないいないばあ」に成功しなかったことがゲームオーバ条件に該当する。
【０１６７】
ステップＳ１３で“ＮＯ”であれば、つまりゲームオーバでなければ、ゲームを続行するべく、ステップＳ１５で、ゲーム画面（１００，２００）を更新してから、ステップＳ３に戻る。詳細な説明は省略するが、ステップＳ９で、所定の条件を満たすと判断された場合には、たとえば、唇オブジェクト１０２がパンオブジェクト１０４をかじる様子のゲーム画面１００が表示されたり、ユーザが顔を手で覆ったことが検出された場合には、指示画像表示領域２０６において次にユーザが実行するべき動作（ここでは、顔を覆った手を外す）を表示したりして、ゲームの進行状況が分かるように、ゲーム画面が更新される。一方、ステップＳ１３で“ＹＥＳ”であれば、つまりゲームオーバであれば、ステップＳ１９で、ゲームオーバ処理を実行して、ゲーム処理を終了する。たとえば、ステップＳ１９では、ゲームオーバを表現するゲーム画面が表示されたり、効果音が出力されたり、プレイヤないしプレイヤキャラクタのライフが減少されたりなどの演出が実行される。
【０１６８】
この実施例によれば、撮影画像から肌色を抽出し、抽出した肌色に基づいてユーザの顔を認識しているかどうかを判定し、ユーザの顔を認識している場合に限り、ユーザの顔の特徴点に基づいて所定の条件を満たすかどうかを判断するので、プログラマや開発者が意図したプレイ状態でゲームをプレイさせることができ、また、プレイヤが意図した操作を実行することができ、しかも、所定の条件を満たすか否かについて正しく判断することができる。
【０１６９】
なお、この実施例では、顔の特徴点に基づいて、ユーザの顔を認識しているかどうか、およびユーザが口を開閉したかどうかを判断して、所定の条件を満たすか否かを判定する仮想ゲームについて説明したが、これらに限定される必要はない。たとえば、眉毛の特徴点や目の特徴点に基づいて、笑顔や怒り顔のような所定の顔の表情を検出したか否かを判断して、所定の条件を満たすか否かを判定する仮想ゲームを実行することも可能である。
【０１７０】
また、この実施例では、より高い精度を要求するため、ユーザの顔が存在するであると予測される特定領域を設定して、特定領域における肌色領域の割合が所定値を超える場合に、ユーザの顔を認識するようにしたが、ＬＣＤの表示領域全体における肌色領域の割合に基づいて、ユーザの顔を認識するようにしてもよい。
【０１７１】
さらに、この実施例では、ゲーム画面にシルエットを表示することにより、ゲーム装置が認識している肌色領域をユーザに知らせるようにしてあるが、これに限定される必要はない。顔（肌色領域）を認識しているか否か、および顔を認識している場合には、その大きさ（顔とゲーム画面（内部カメラ）との距離）の適切さを示す指標をゲーム画面にバーグラフなどで表示してユーザに知らせるようにしてもよい。
【０１７２】
さらにまた、ゲーム装置の構成は実施例のものに限定される必要はない。たとえば、表示装置（ＬＣＤ）およびカメラは、それぞれ１つでもよい。また、タッチパネルは無くてもよい。さらに、タッチパネルを２つのＬＣＤ上に設けてもよい。
【図面の簡単な説明】
【０１７３】
【図１】図１はこの発明のゲーム装置の外観構成の一実施例を示す図解図である。
【図２】図２は図１に示すゲーム装置を折り畳んだ状態の上面図および左側面図を示す図解図である。
【図３】図３は図１および図２に示すゲーム装置の電気的な構成を示すブロック図である。
【図４】図４は図１に示す第１ＬＣＤに表示されるゲーム画面の一例を示す図解図である。
【図５】図５は図４に示すゲーム画面を用いた仮想ゲームをプレイする場合に、表示領域に対して設定される肌色判定領域を示す図解図である。
【図６】図６はユーザの顔画像から検出される特徴点を示す図解図である。
【図７】図７は図１に示すカメラで撮影された撮影画像の展開領域を示す図解図である。
【図８】図８は図１の第１ＬＣＤに表示されるゲーム画面の他の例を示す図解図である。
【図９】図９は図８に示すゲーム画面を用いた仮想ゲームをプレイする場合に表示領域に設定される肌色判定領域を示す図解図である。
【図１０】図１０は第１ＬＣＤに表示される調整画面の一例およびこの調整画面を用いる場合の判定用データの例を示す図解図である。
【図１１】図１１はこの実施例の仮想ゲームをプレイする場合のユーザの頭部（顔）とゲーム装置との位置関係を示す図解図である。
【図１２】図１２は肌色判定の閾値を示す図表である。
【図１３】図１３は第１ＬＣＤの表示領域を８×８画素および４×４画素に分割した格子を示す図解図である。
【図１４】図１４は第１ＬＣＤの表示領域を２×２画素に分割した格子を示す図解図である。
【図１５】図１５は肌色を抽出する場合の或る格子の評価値を算出するための重み付け値を示す図解図および閾値による判定結果の例を示す図解図である。
【図１６】図１６は図３に示すメインメモリのメモリマップを示す図解図である。
【図１７】図１７は図１６に示すデータ記憶領域の具体的な内容を示す図解図である。
【図１８】図１８は図３に示すＣＰＵのゲーム処理を示すフロー図である。
【符号の説明】
【０１７４】
１０  …ゲーム装置
１２，１４  …ハウジング
１６，１８  …ＬＣＤ
２０  …操作ボタン
２２  …タッチパネル
２４  …タッチペン
２６，２８  …メモリカード
３２，３４  …カメラ
５０  …ＣＰＵ
５２  …メインメモリ
５４  …メモリ制御回路
５６  …保存用データメモリ
５８  …プリセットデータ用メモリ
６０，６２  …メモリカードＩ／Ｆ
６４  …無線通信モジュール
６６  …ローカル通信モジュール
６８  …ＲＴＣ
７０  …電源回路
７２  …Ｉ／Ｆ回路
７４，７６  …ＧＰＵ
７８，８０  …ＶＲＡＭ
８２  …ＬＣＤコントローラ
８４  …マイク
【図１】
2010142553.tif 000003
【図２】
2010142553.tif 000004
【図３】
2010142553.tif 000005
【図４】
2010142553.tif 000006
【図５】
2010142553.tif 000007
【図６】
2010142553.tif 000008
【図７】
2010142553.tif 000009
【図８】
2010142553.tif 000010
【図９】
2010142553.tif 000011
【図１０】
2010142553.tif 000012
【図１１】
2010142553.tif 000013
【図１２】
2010142553.tif 000014
【図１３】
2010142553.tif 000015
【図１４】
2010142553.tif 000016
【図１５】
2010142553.tif 000017
【図１６】
2010142553.tif 000018
【図１７】
2010142553.tif 000019
【図１８】
2010142553.tif 000020