図1〜図3には、本発明の一実施例であるゲーム装置10の外観が示される。ゲーム装置10は折り畳み型のゲーム装置であり、図1および図2は、開いた状態(開状態)におけるゲーム装置10を示し、図3は、閉じた状態(閉状態)におけるゲーム装置10を示している。また、図1は、開状態におけるゲーム装置10の正面図であり、図2は、開状態におけるゲーム装置の側面図である。ゲーム装置10は、2つの表示装置(LCD12および14)および2つのカメラ(カメラ16および18)を有し、カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることができる。
ゲーム装置10は、開いた状態において両手または片手で把持することができるような小型のサイズとされる。
ゲーム装置10は、下側ハウジング20および上側ハウジング22という2つのハウジングを有する。下側ハウジング20と上側ハウジング22とは、開閉可能(折り畳み可能)に接続されている。この実施例では、各ハウジング20および22はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
上側ハウジング22は、下側ハウジング20の上側の一部で回動自在に支持されている。これによって、ゲーム装置10は、閉状態(下側ハウジング20と上側ハウジング22とのなす角度が約0°の状態(図3参照))と、開状態(下側ハウジング20と上側ハウジング22とのなす角度が約180°の状態(図2参照))とをとることができる。ユーザは通常、開状態でゲーム装置10を使用し、ゲーム装置10を使用しない場合には閉状態としてゲーム装置10を保管する。また、ゲーム装置10は、上記閉状態および開状態のみでなく、下側ハウジング20と上側ハウジング22とのなす角度を、ヒンジに発生する摩擦力などによって閉状態と開状態との間の任意の角度に維持することができる。つまり、上側ハウジング22を下側ハウジング20に対して任意の角度で静止させることができる。
まず、下側ハウジング20に設けられる構成について説明する。図1に示すように、ゲーム装置10は、下側LCD(液晶表示装置)12を有する。下側LCD12は横長形状であり、長辺方向が下側ハウジング20の長辺方向に一致するように配置される。下側LCD12は下側ハウジング20に収納される。下側LCD12は、下側ハウジング20の内側面に設けられる。したがって、ゲーム装置10を使用しない場合には閉状態としておくことによって、下側LCD12の画面が汚れたり傷ついたりすることを防止することができる。なお、この実施例では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、ゲーム装置10は任意の解像度の表示装置を利用することができる。なお、ゲーム装置10を撮像装置として利用する場合、下側LCD12は主に、カメラ16または18で撮像されている画像をリアルタイムに表示(スルー表示)するために用いられる。
下側ハウジング20の内側面はほぼ平面状に形成される。当該内側面の中央には、下側LCD12を露出させるための開口部20bが形成される。当該開口部20bの左側(図示y軸負側)には開口部20cが形成され、当該開口部20bの右側には開口部20dが形成される。開口部20bおよび20cは、各キートップ(各ボタン24a〜24eの上面)を露出させるためのものである。そして、下側ハウジング20の内部に収納される下側LCD12の画面が開口部20bから露出し、各キートップが開口部20cおよび20dから露出される。このように、下側ハウジング20の内側面には、中央に設けられる下側LCD12用の開口部20bの左右両側に非画面領域(図1に示す点線領域A1およびA2。具体的には、各ボタン24a〜24eを配置するための領域;ボタン配置領域)がそれぞれ設けられる。
下側ハウジング20には、入力装置として、各ボタン24a〜24iおよびタッチパネル28が設けられる。図1に示されるように、各ボタン24a〜24iのうち、方向入力ボタン24a、ボタン24b、ボタン24c、ボタン24d、ボタン24e、および電源ボタン24fは、下側ハウジング20の内側面に設けられる。方向入力ボタン24aは例えば選択操作等に用いられ、各ボタン24b〜24eは例えば決定操作やキャンセル操作等に用いられる。電源ボタン24fは、ゲーム装置10の電源をオン/オフするために用いられる。ここでは、方向入力ボタン24aおよび電源ボタン24fは、下側ハウジング20の中央付近に設けられる下側LCD12に対して一方の側の(図1では左側)に設けられ、ボタン24b〜24eは下側LCD12に対して他方の側(図1では右側)に設けられる。方向入力ボタン24aおよびボタン24b〜24eは、ゲーム装置10に対する各種操作を行うために用いられる。
図3(A)は閉状態におけるゲーム装置10の左側面図であり、図3(B)は当該ゲーム装置10の正面図であり、図3(C)は当該ゲーム装置10の右側面図であり、そして図3(D)は当該ゲーム装置10の背面図である。図3(C)に示されるように、また、図3(A)に示されるように、音量ボタン24iは、下側ハウジング20の左側面に設けられる。音量ボタン24iは、ゲーム装置10が備えるスピーカ34の音量を調整するために用いられる。また、図3(D)に示されるように、ボタン24hは、下側ハウジング20の上面の右端部に設けられる。ボタン24gは、下側ハウジング20の上面の左端部に設けられる。各ボタン24gおよび24hは、ゲーム装置10に対して例えば撮影指示操作(シャッタ操作)を行うために用いられる。各ボタン24gおよび24hの両方をシャッターボタンとして機能させてもよく、この場合、右利きのユーザはボタン24hを使用し、左利きのユーザはボタン24gを使用することができ、いずれのユーザにも使い勝手が良い。なお、ゲーム装置10は、各ボタン24gおよび24hを常にシャッターボタンとして有効としておいてもよいし、右利きか左利きかの設定をして(メニュープログラムなどによりユーザに設定入力をさせ、設定されたデータを記憶しておく)、右利き設定のときにはボタン24hのみ有効とし、左利き設定のときにはボタン24gのみ有効とするようにしてもよい。
図1に示されるように、ゲーム装置10は、各操作ボタン24a〜24iとは別の入力装として、タッチパネル28をさらに備えている。タッチパネル28は、下側LCD12の画面上に装着されている。なお、この実施例では、タッチパネル28は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。この実施例では、タッチパネル28として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル28の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング20の右側面には挿入口30(図1および図3(D)に示す点線)が設けられている。挿入口30は、タッチパネル28に対する操作を行うために用いられるタッチペン36を収納することができる。なお、タッチパネル28に対する入力は通常タッチペン36を用いて行われるが、タッチペン36に限らずユーザの指でタッチパネル28を操作することも可能である。
図3(A)に示されるように、下側ハウジング20の右側面には開閉可能なカバー部11Bが設けられる。このカバー部11Bの内側には、ゲーム装置10とメモリカード38とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード38は、コネクタに着脱自在に装着される。メモリカード38は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
図1に示されるように、下側ハウジング20の軸部20aの左側部分には、3つのLED26a〜26cが取り付けられる。ここで、ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第1LED26aは、無線通信が確立している場合に点灯する。第2LED26bは、ゲーム装置10の充電中に点灯する。第3LED26cは、ゲーム装置10の電源がオンである場合に点灯する。したがって、3つのLED26a〜26cによって、ゲーム装置10の通信確立状況、充電状況、および、電源のオン/オフ状況をユーザに通知することができる。
以上に説明したように、下側ハウジング20には、ゲーム装置10に対する操作入力を行うための入力装置(タッチパネル28および各ボタン24a〜24i)が設けられる。したがって、ユーザは、ゲーム装置10を使用する際には通常、図1に示されるようにLCD12および14が上下に配置された状態で下側ハウジング20を両手で把持して(この持ち方を「横持ち」と呼ぶ)ゲーム装置10に対する操作を行う。また、ある種のゲームたとえば後述する「笑顔帳ゲーム」をプレイする場合には、撮像装置10は、図5に示すような縦持ち状態(横持ち状態から左回りに90°回転された状態)で把持される。この状態でユーザは、親指を突起部(軸部11Aおよび21A)に当接させ、人指し指を下側ハウジング11の上側面に当接させて撮像装置10を把持することができる。そして、撮像装置10を把持していない利き手で、ゲームのためのボタン操作やタッチ操作を容易に行うことができる。なお、左利きのユーザの場合には、ゲーム装置10を横持ち状態から右回りに90°回転された状態で把持してプレイすることができる。 一方、上側ハウジング22には、画像を撮像するための構成(カメラ)、および、撮像した画像を表示するための構成(表示装置)が設けられる。以下、上側ハウジング22に設けられる構成について説明する。
図1に示すように、ゲーム装置10は、上側LCD14を有する。上側LCD14は上側ハウジング22に収納される。上側LCD14は横長形状であり、長辺方向が上側ハウジング22の長辺方向に一致するように配置される。上側LCD14は、上側ハウジング22の内側面(ゲーム装置10が閉状態となった場合に内側となる面)に設けられる。したがって、ゲーム装置10を使用しない場合には閉状態としておくことによって、上側LCD14の画面が汚れたり傷ついたりすることを防止することができる。なお、下側LCD12と同様、上側LCD14に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。なお、他の実施形態においては、上側LCD14上にもタッチパネルを設けてもよい。
また、ゲーム装置10は、2つのカメラ16および18を有する。各カメラ16および18はともに上側ハウジング22に収納される。図1に示されるように、内側カメラ16は、上側ハウジング22の内側面に取り付けられる。一方、図3(B)に示されるように、外側カメラ18は、内側カメラ16が取り付けられる面の反対側の面、すなわち、上側ハウジング22の外側面(ゲーム装置10が閉状態となった場合に外側となる面)に取り付けられる。これによって、内側カメラ16は、上側ハウジング22の内側面が向く方向を撮像することが可能であり、外側カメラ18は、内側カメラ16の撮像方向の逆方向、すなわち、上側ハウジング22の外側面が向く方向を撮像することが可能である。以上のように、この実施例では、2つのカメラ16および18が撮像方向が互いに逆方向となるように設けられる。したがって、ユーザはゲーム装置10を持ち替えることなく、異なる2方向を撮像することができる。例えば、ユーザは、ゲーム装置10からユーザの方を見た景色を内側カメラ16で撮影することができるとともに、ゲーム装置10からユーザの反対側の方向を見た景色を外側カメラ18で撮影することができる。
また、内側カメラ16は、上側ハウジング22の下側の中央部に形成される軸部22aの中央に取り付けられる。つまり、内側カメラ16は、2つのハウジング20および22が接続される部分の中央に取り付けられる。したがって、ゲーム装置10を開状態にした場合、内側カメラ16は、2つのLCD12および14の間に配置されることになる(図1参照)。換言すれば、内側カメラ16は、ゲーム装置10の中心付近に配置されることになる。なお、「ゲーム装置10の中心」とは、ゲーム装置10の操作面(開状態における各ハウジング20および22の内側面からなる面)の中心という意味である。なお、内側カメラ16は、LCD12および14の横方向の中心付近に配置されているということもできる。
この実施例では、ゲーム装置10を開状態にした場合に内側カメラ16はゲーム装置10の中心付近に配置されるので、ユーザは、内側カメラ16によってユーザ自身を撮影する場合、ユーザがゲーム装置10に正対する位置でゲーム装置10を把持すればよい。つまり、通常の把持位置でゲーム装置を把持すれば、ユーザは撮像範囲の中心付近に位置することになり、ユーザ自身を撮像範囲内に収めることが容易になる。
また、図3(B)に示されるように、外側カメラ18は、ゲーム装置10を開状態とした場合において上側ハウジング22の上部(下側ハウジング20から遠い側の部分)に配置される。なお、外側カメラ18は、ゲーム装置10を把持するユーザを撮影するものではないので、ゲーム装置10の中心に設ける必要性は高くない。
また、図1または図3(B)に示されるように、マイク32は、上側ハウジング22に収納されている。具体的には、マイク32は、上側ハウジング22の軸部22aに取り付けられる。この実施例では、マイク32は、内側カメラ16の周囲(図ではy軸の側方)に取り付けられ、より具体的には、内側カメラ16からy軸正方向側の側方に取り付けられる。また、軸部22aにおいては、マイク32がゲーム装置10外部の音を検知することができるように、マイク32に対応する位置(内側カメラ16の側方)にマイクロフォン用孔22cが設けられる。なお、マイク32は下側ハウジング20に収納されてもよい。たとえば、マイクロフォン用孔22cを下側ハウジング20の内側面、具体的には下側ハウジング20の内側面の左下部分(ボタン配置領域A1)に設け、マイク32を、下側ハウジング20内における、マイクロフォン用孔22cの近傍に配置することができる。
図3(B)に示されるように、上側ハウジング22の外側面には、第4LED26dが取り付けられる。第4LED26dは、外側カメラ18の周囲(この実施例では、外側カメラ18の右側。図17(b)に示される例では、開状態において外側カメラ18の上側)に取り付けられる。第4LED26dは、内側カメラ16または外側カメラ18によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、内側カメラ16または外側カメラ18によって動画が撮影される間点灯する。第4LED26dによって、ゲーム装置10による撮影が行われた(行われている)ことを撮影対象者に通知することができる。
また、上側ハウジング22の内側面はほぼ平面状に形成される。図1に示すように、当該内側面の中央には、上側LCD14を露出させるための開口部21Bが形成される。上側ハウジング22の内部に収納される上側LCD14の画面は、開口部21Bから露出する。また、上記開口部21Bの左右両側には音抜き孔22dがそれぞれ1つずつ形成される。音抜き孔22dの奥の上側ハウジング22内にはスピーカ34が収納されている。音抜き孔22dは、スピーカ34からの音を外部に放出するための孔である。
このように、上側ハウジング22の内側面には、中央に設けられる上側LCD14用の開口部21Bの左右両側に非画面領域(図1に示す点線領域B1およびB2。具体的には、スピーカ34を配置するための領域;スピーカ配置領域)がそれぞれ設けられる。2つの音抜き孔22dは、左右方向については、各スピーカ配置領域の左右方向における中央部付近に配置され、上下方向については、各スピーカ配置領域の下部領域(下側ハウジング20に近い側の領域)に配置される。
以上に説明したように、上側ハウジング22には、画像を撮像するための構成であるカメラ16および18、および、撮像された画像を表示するための表示手段である上側LCD14が設けられる。一方、下側ハウジング20には、ゲーム装置10に対する操作入力を行うための入力装置(タッチパネル28および各ボタン24a〜24i)が設けられる。したがって、ゲーム装置10を撮像装置として使用する際には、ユーザは、上側LCD14に表示される撮像画像(カメラによって撮像された画像)を見ながら、下側ハウジング20を把持して入力装置に対する入力を行うことができる。
また、上側ハウジング22のカメラ16近傍には、音声を入力するための構成であるマイク32が設けられており、したがってゲーム装置10は、録音装置としても使用可能である。
図4は、ゲーム装置10の内部構成を示すブロック図である。図4に示すように、ゲーム装置10は、CPU42、メインメモリ48、メモリ制御回路50、保存用データメモリ52、プリセットデータ用メモリ54、メモリカードインターフェース(メモリカードI/F)44、無線通信モジュール56、ローカル通信モジュール58、リアルタイムクロック(RTC)39、電源回路46、およびインターフェース回路(I/F回路)40等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング20(または上側ハウジング22でもよい)内に収納される。
CPU42は、各種のプログラムを実行するための情報処理手段である。ゲーム装置10を撮像装置として利用する場合には、そのためのプログラムがゲーム装置10内のメモリ(例えば保存用データメモリ52)に記憶される。CPU42が当該プログラムを実行することで、ゲーム装置10は撮影装置として機能する。なお、CPU42によって実行されるプログラムは、ゲーム装置10内のメモリに予め記憶されていてもよいし、メモリカード38から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。
CPU42には、メインメモリ48、メモリ制御回路50、およびプリセットデータ用メモリ54が接続される。また、メモリ制御回路50には保存用データメモリ52が接続される。メインメモリ48は、CPU42のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ48は、ゲーム処理や撮像処理に用いられる各種データを記憶したり、外部(メモリカード38や他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ48として例えばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ52は、CPU42によって実行されるプログラムや各カメラ16および18によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ52は、例えばNAND型フラッシュメモリで構成される。メモリ制御回路50は、CPU42の指示に従って、保存用データメモリ52に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ54は、ゲーム装置10において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ54としては、SPI(Serial Peripheral Interface)バスによってCPU42と接続されるフラッシュメモリを用いることができる。
メモリカードI/F44はCPU42に接続される。メモリカードI/F44は、コネクタに装着されたメモリカード38に対するデータの読み出しおよび書き込みをCPU42の指示に従って行う。この実施例では、各カメラ16および18によって撮像された画像データがメモリカード38に書き込まれたり、メモリカード38に記憶された画像データがメモリカード38から読み出されて保存用データメモリ52に記憶されたりする。
無線通信モジュール56は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール58は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール56およびローカル通信モジュール58はCPU42に接続される。CPU42は、無線通信モジュール56を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール58を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
また、CPU42には、RTC60および電源回路46が接続される。RTC60は、時間をカウントしてCPU42に出力する。CPU42は、RTC60によって計時された時間に基づいて、現在時刻(日付)を計算したり、画像取り込み等の動作タイミングを検知したりする。電源回路46は、ゲーム装置10が有する電源(電池;下ハウジングに収納される)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
また、ゲーム装置10は、マイク32およびスピーカ34を備えている。マイク32およびスピーカ34はそれぞれI/F回路40に接続される。マイク32は、ユーザの音声を検知して音声信号をI/F回路40に出力する。スピーカ34は、I/F回路40からの音声信号に応じた音声を出力する。I/F回路40はCPU42に接続される。また、タッチパネル28はI/F回路40に接続される。I/F回路40は、マイク32およびスピーカ34の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。変換された音声データは、メインメモリ48の音声エリア80(図10参照)に書き込まれる。ゲーム装置10を録音装置として利用する場合には、音声エリア80に格納された音声データは、後にメモリ制御回路50を介して保存用データメモリ52に書き込まれる(必要に応じてさらに、メモリカードI/F44を介してメモリカード38に記録される)。タッチパネル制御回路は、タッチパネル28からの信号に基づいて所定の形式のタッチ位置データを生成してCPU42に出力する。タッチ位置データは、タッチパネル28の入力面のうちで入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル28からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU42は、タッチ位置データを取得することにより、タッチパネル28に対して入力が行われた位置を知ることができる。
操作部24は、上記各ボタン24a〜24iからなり、CPU42に接続される。操作部24からCPU42へは、各ボタン24a〜24iに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU42は、操作部24から操作データを取得することによって、操作部24に対する入力に従った処理を実行する。
各カメラ16および18はCPU42に接続される。各カメラ16および18は、CPU42の指示に従って画像を撮像し、撮像した画像データをCPU42に出力する。CPU42は、各カメラ16および18からの画像データをメインメモリ48の画像エリア78(図10参照)に書き込む。ゲーム装置10を撮像装置として利用する場合には、画像エリア78に格納された画像データは、後にメモリ制御回路50を介して保存用データメモリ52に書き込まれる(必要に応じてさらに、メモリカードI/F44を介してメモリカード38に記録される)。また、詳細は後述するが、画像エリア78に格納された画像データは、各種のゲーム処理にも利用される。
また、各LCD12および14はCPU42に接続される。各LCD12および14はCPU42の指示に従って画像を表示する。ゲーム装置10を撮像装置として利用する場合、CPU42は、各カメラ16および18のいずれかから取得した画像を上側LCD14に表示させ、所定の処理によって生成した操作画面を下側LCD12に表示させる。ゲーム装置10でゲームをプレイする場合には、LCD12および14の一方または両方にゲーム画像が表示される。
以上のように構成されたゲーム装置10で「笑顔帳ゲーム」を行うとき、ゲーム装置10はたとえば図5のように縦持ちされ、LCD12および14には図6〜図9のようなゲーム画像が表示される。図6はゲーム開始時に表示されるメインのゲーム画面であり、図7〜図9はメインのゲーム画面内で各種診断ボタンが押されたとき表示される各種診断画面である。図6〜図9に共通して、ゲーム画像は左右の2画面に分割され、左画面の画像がLCD14に、右画面の画像がLCD12にそれぞれ表示される。なお、以下では、LCD12側の表示画面を「右画面12」、LCD14側の表示画面を「左画面14」のように呼ぶことがある。
ここで「笑顔帳ゲーム」は、ユーザの顔画像を内側カメラ16(以下、単に「カメラ16」と呼ぶ)でリアルタイムに撮像(スルー撮影)しつつ、このスルー画像(スルー表示用の動画像)の態様を有するユーザの顔画像(以下「カメラ画像」と呼ぶ)と、過去に撮像され静止画像の態様で記録された他のユーザの顔画像(以下「お顔画像」と呼ぶ)とを用いて、たとえば「今日の相性」(図7参照),「イメージマップ」(図8参照)および「ふたりの子顔」(図9参照)といった各種の診断ないし評価を行うゲームである。なお、他の実施例では、ユーザの顔画像は、内側カメラ16に代えて、またはこれに加えて、外側カメラ18で撮影されてもよい。
登録されたお顔画像は、複数のグループここでは8つのグループにグループ分けされ、これら8つのグループからユーザによって任意に選択された1つのグループが、各種診断処理の主要な対象となる。メインのゲーム画面において、8つのグループのうち、あるグループが選択された状態を図6(A)に、別のグループが選択された状態を図6(B)に示す。図6(A)および図6(B)に共通して、左画面14は、画像を格納するための格納領域90を含み、右画面12は画像を操作するための操作領域として機能するアクティブボックス92Aを含む。
格納領域90には、8つのグループのうち現在選択されているものを除いた7つのグループにそれぞれ対応する7つのボックス(8個のボックス90a〜90hのうち7つ)が表示され、各ボックス90a,90b,…には最大10個のお顔画像が格納される。右画面12は、アクティブボックス92Aとは異なる位置に定義されたタブ領域92Bをさらに含み、タブ領域92Bには、左画面の7つのボックスにそれぞれ対応する7つのタブ(8個のタブ94a〜94hのうち7つ)と、現在選択されている1つのグループに対応する1つの隠れタブ(8個のタブ94a〜94hのうち1つ)とが表示される。アクティブボックス92Aには、上述したカメラ画像F0と、現在選択されている1つのグループに属するお顔画像(たとえばF1〜F10)とが格納される。
たとえば図6(A)のゲーム画面では、アクティブボックス92Aにおいて、カメラ画像F0は略中央に配置され、お顔画像F1〜F10はカメラ画像F0を取り囲むように配置される。カメラ画像F0は、アクティブボックス92A内のお顔画像F1〜F10よりも大きいサイズで表示される。アクティブボックス内のお顔画像F1〜F10のサイズは、左画面のボックス90a,90c〜90h内のお顔画像のサイズよりも大きい(以下、カメラ画像F0のサイズを「大サイズ」、アクティブボックス92A内のお顔画像F1,F2,…のサイズを「中サイズ」、そして各ボックス90a,90b,…内のお顔画像のサイズを「小サイズ」と呼ぶ)。また、右画面12には、カメラ画像F0を新たな1つのお顔画像として記録(登録)するためのカメラボタンB0と、各種診断処理を起動するための各種診断ボタンB1〜B5(後述)とがさらに表示される。
図6(A)のゲーム画面でタブ94aが短押しされると、このゲーム画面は図6(B)のゲーム画面によって更新される。具体的には、隠れタブ94bに対応するボックス90bが左画面14に登場し、アクティブボックス92A内に展開されていた10個のお顔画像F1〜F10がこのボックス90b内へと移動する。代わりに、ボックス90aに格納されていた10個のお顔画像F11〜F20がアクティブボックス92A内に移動し、ボックス90aは画面から消滅する。また、タブ94aが隠れタブとなる一方、隠れタブ94bは通常のタブに戻る。こうしてゲーム画面は、図6(A)の状態から図6(B)の状態へと変化する。
次に、図6(A)または図6(B)のようなメインのゲーム画面でカメラボタンB0が押下されると、動画像であるカメラ画像F0を構成する複数フレームの静止画像のうち、カメラボタンB0押下時点もしくはその近傍のフレームの静止画像が、新たな1つのお顔画像として記録される。なお、他の実施例では、カメラボタンB0を押したときメインのゲーム画面から撮影画面(図示せず)に移行し、撮影画面で「わかりました(撮影を始める)」ボタンを押したとき撮影処理を実行してもよい。
また、図6(A)または図6(B)のようなメインのゲーム画面では、カメラ画像F0またはいずれか1つのお顔画像を、当該画像を短押しすることによって選択することができ、選択されている画像の位置にはカーソル(ここでは画像を囲む円形状の太枠FR)が表示される。たとえば、図6(A)のゲーム画面ではお顔画像F10が、図6(B)の画面ではカメラ画像F0がそれぞれ選択されている。カメラ画像F0を選択した状態で今日の相性診断ボタンB1を押下すると、メインのゲーム画面は図7(A)のような相性診断画面に更新される。この相性診断画面には、右寄りの所定位置を中心とする同心円C1,C2,…が描かれており、メインのゲーム画面で選択されていたカメラ画像F0が、この同心円C1,C2,…の中心点C0に大サイズで表示される。
この相性診断画面にはさらに、メインのゲーム画面でアクティブボックス92A内に展開されていたお顔画像F31,F32,…が中サイズで、各ボックス90a,90b,…に格納されていたお顔画像は小サイズで、カメラ画像F0(中心点C0)から互いの相性に応じた距離だけ離れた位置に、それぞれ表示される(なお、小サイズのお顔画像は一部しか図示していない)。したがって、中心点C0の画像(ここではカメラ画像F0)との相性は、中心点C0に最も近いお顔画像F31が最もよく、中心点C0から遠いものほど悪くなる。
そして、この相性診断画面では、中心点C0の画像がカメラ画像F0なので、その顔の向きや表情によって各お顔画像F31,F32,…との相性が変わり、各お顔画像F31,F32,…の位置はリアルタイムに変化する。たとえば、図7(A)のゲーム画面で正面を向いていたカメラ画像F0の顔が横を向いたとすると、このゲーム画面は図7(B)のように更新される。図7(B)のゲーム画面では、中心点C0に最も近かったお顔画像F31は後退し、2番目に近かったお顔画像F32が前進して中心点C0に最も近い位置に来ている。他のお顔画像も、それぞれ前進または後退している。
なお、この相性診断画面にはまた、右端に図6のものと同様のタブ94a等が表示されており、所望のタブを押下することで、拡大表示中の各お顔画像F31,F32,…を縮小表示する代わりに、別のグループのお顔画像を拡大表示することが可能である。さらに、「もどる」ボタンB6が表示されており、これを押下するとメインのゲーム画面に復帰する。他の診断画面(図8,図9,図29および図30)でも同様である。
一方、図6(A)のゲーム画面のようにお顔画像(F10)が選択された状態で今日の相性診断ボタンB1を押下した場合には、このゲーム画面は、中心点C0にお顔画像(F10)が配置された相性診断画面(図示せず)に更新される。この相性診断画面では、中心点C0のお顔画像は、他のお顔画像と同様に静止画像であり、互いの相性が一定なので、どのお顔画像の位置も変化しない。一方、動画像であるカメラ画像F0の位置は変化する。
また、図6(A)または図6(B)のようなメインのゲーム画面でイメージマップボタンB3が押下されると、このゲーム画面は、図8のようなイメージマップ画面に更新される。イメージマップ画面では、互いに対立する2つのイメージワードが2組、上下および左右に配置される。一組目の対立するイメージワードは「のほほん」対「きりっと」であり、それぞれ画面の上下に位置する。二組目の対立するイメージワードは「かわいい」対「キレイ」であり、それぞれ画面の左右に位置する。イメージマップは、各お顔画像のイメージを、一組目のイメージワードつまり「のほほん」および「きりっと」間の任意の位置で示すための縦軸A1と、二組目のイメージワードつまり「かわいい」および「キレイ」の間の任意の位置で示すための横軸A2とで構成される。
プリセットデータ用メモリ54には、図10(B)に示すように、対立する複数組のイメージワードにそれぞれ対応する複数組の基準顔(たとえば「のほほん」対「きりっと」にそれぞれ対応する一組目の基準顔84,「かわいい」対「キレイ」にそれぞれ対応する二組目の基準顔86,…)が記憶されており、イメージマップ上には、これら複数組のイメージワードから任意に選択された2組が配置される。各基準顔は、この実施例では55個の特徴点P1〜P55の位置を示す位置データで記述される(図11参照:後述)。
CPU42は、まず各お顔画像を上下に配置された一組目のイメージワードに対応する一組目の基準顔84と比較して縦軸方向の位置(座標)を決定し、次いで各お顔画像を左右に配置された二組目のイメージワードに対応する二組目の基準顔86と比較して横軸方向の位置(座標)を決定する。イメージマップ画面では、こうして決定された一組の座標で示される位置に、それぞれ該当するお顔画像が表示される。
また、図6(A)または図6(B)のようなメインのゲーム画面でふたりの子顔ボタンB5が押下されると、このゲーム画面は、図9のようなふたりの子顔画面に更新される。ふたりの子顔画面は天秤の画像100を含み、その一方の皿100aにメインのゲーム画面で選択されていた画像つまりカメラ画像またはいずれかのお顔画像F51が配置される。天秤の画像100の周囲には、メインのゲーム画面でアクティブボックス92A内に展開されていた画像のうち選択されていた画像F51以外の画像F53等が表示されており、そのいずれかをカーソルで選択すると、選択された画像F52が天秤の他方の皿100bに配置される。次いで開始操作を行うと、これら2つの画像F51およびF52から「ふたりの子顔」画像F50が生成される。
ふたりの子顔画面には、こうして生成された「ふたりの子顔」画像F50が中央に大きく表示される。「ふたりの子顔」画像F50が天秤にかけられた2つの画像F51およびF52のどちらか一方により似ている場合には、似ている方の画像ここでは画像F51が拡大され、似ていない方の画像F52は縮小される。この結果、天秤が傾く、すなわち天秤の画像100において似ている画像F51の載った皿100aが下がる一方、似ていない画像F52の載った皿100bが上がる。
一方、ふたりの子顔画面でいずれのお顔画像も選択することなく、したがって一方の皿にしかお顔画像がない状態で開始操作を行うと、この1つの画像(たとえばF51)から「子顔」画像が生成される。ふたりの子顔画面には、こうして生成された「子顔」画像(図示せず)が表示される。
図10には、このような「笑顔帳ゲーム」をプレイする場合のメモリマップが示される。図10(A)がメインメモリ48の内容を、図10(B)はプリセットデータ用メモリ54の内容を示す。図10(A)を参照して、メインメモリ48にはプログラムエリア48aおよびデータエリア48bが形成され、プログラムエリア48aには、図12〜図28のフローチャートに対応するメインプログラム70が格納される。メインプログラム70は、図14〜図27のフローチャートに対応する診断(評価)プログラム72と、図28のフローチャートに対応する撮影プログラム74とをサブルーチンとして含む。
プログラムエリア48aにはさらに、図11に示す特徴点P1〜P55の解析を行うための特徴点解析プログラム75、およびI/F回路40等を制御して映像や音声の入出力ならびにタッチ入力を行うための入出力制御プログラム76も格納されている。なお、特徴点解析プログラム75および入出力制御プログラム76については、既存のものを利用可能であり、詳しい説明を省略する。
一方、データエリア48bは、画像エリア78,特徴点エリア80および位置エリア82などを含む。画像エリア78にはカメラ16からの画像データが一時記憶され、特徴点エリア80には、画像エリア78の画像データから検出された特徴点データが一時記憶される。位置エリア82には、カメラ画像およびお顔画像、つまり現時点で検出されているユーザの顔画像および過去に検出され記録された他のユーザの顔画像の各々について、画面内での表示位置を示す位置データが記憶される。
特徴点の一例を図11に示す。ここでは、ユーザの顔画像の輪郭線上、または目や口など各部位の画像の所定位置に定義された55個の特徴点P1〜P55が用いられる。特徴点データは、これらの特徴点P1〜P55の現在位置を示す座標データを含む。
図12〜図13を参照して、ゲームが開始されると、CPU42は、まずステップS1で初期処理を実行する。初期処理は、画像エリア78,特徴点エリア80および位置エリア82をクリアする処理などを含む。次に、スルー撮影(すなわち繰り返し撮像または逐次撮像)の開始命令をステップS3で発行する。応じて、カメラ16による繰り返し撮像が開始され、繰り返し撮像により得られた各フレームの画像はメインメモリ48の画像エリア78に書き込まれる。ここで、画像エリア78は、所定数フレームの画像を記憶可能なサイズを有し、画像エリア78内の画像のうち最古のフレームの画像が、最新のフレームの画像によって上書きされていく。したがって、画像エリア78には常時、直近に撮像された所定数フレームの画像が格納されていることになる。その後、ステップS5〜S15の一連の処理を通じ、図6のようなメインのゲーム画面をLCD12および14に表示する。
具体的には、まずステップS5で、第1LCD12つまり右画面12にアクティブボックス92Aを、第2LCD14つまり左画面14には8個のグループにそれぞれ対応する8個のボックス90a〜90hのうち7つ(図6(A)の例ではボックス90a,90c〜90h)をそれぞれ表示する。ステップS7では、8個のボックス90a〜90hのうち他の1つ(図6(A)の例ではボックス90b)に属するお顔画像(図6(A)の例ではお顔画像F1〜F10)をアクティブボックス92A内に中サイズで表示する。次のステップS9では、左画面14の7個のボックスに属するお顔画像をそれぞれが属するボックス内に小サイズで表示する。そしてステップS11で、カメラ画像F0つまりカメラ16で捉えられたユーザの顔画像をアクティブボックス92A内にさらに表示する。また、ステップS13ではボックス毎のタブ94a〜94hを右画面12のタブ領域92Bに表示し(タブ94a〜94hのうち1つは現在選択されていることがわかるように他の7つとは態様を変えて表示される)、ステップS15では各種ボタン(具体的にはカメラボタンB0や診断ボタンB1〜B5など)を右画面12(ここではアクディブボックス92A内)に表示する。その後、ステップS17〜S25の処理ループを通じて、いずれかのタブ(94a〜94h)またはボタン(B0〜B5)へのタッチ操作をタッチパネル28で検知する。
すなわち、ステップS17ではいずれかの診断ボタンB1〜B5が押されたか否かを判別し、ステップS19ではいずれかのタブ94a〜94hが短押しされたか否かを判別し、ステップS21ではいずれかのタブ94a〜94hが長押しされたか否かを判別し、ステップS23ではカメラボタンB0が押されたか否かを判別し、そしてステップS25ではいずれかのお顔画像F1,F2,…がいずれかのタブ94a〜94hにドラッグされたか否かを判別する。ステップS17でYESであれば、ステップS26で特徴点解析プログラム75を起動した後、ステップS27に移って、押された診断ボタンに対応する診断処理を実行する。特徴点解析プログラム75は、CPU42によってこのメインプログラムと並列的に実行され、図11に示す特徴点P1〜P55の解析を行う。なお、診断処理(「今日の相性」,「イメージマップ」および「ふたりの子顔」)の詳細については後述する。実行後、ステップS17〜S25の処理ループに戻る。
ステップS19でYESであれば、ステップS29およびS31の一連の処理を通じ、格納領域90(ボックス90a〜90h)およびアクティブボックス92Aの間でお顔画像を移動する。すなわち、ステップS29では、アクティブボックス92A内のお顔画像(たとえばF1〜F10)をそれぞれが属するボックス(たとえばボックス90b)内に移動表示する一方、ステップS31では、押されたタブ(たとえば94a)に対応するボックス(たとえば90a)内のお顔画像(たとえばF11〜F20)をアクティブボックス92A内に移動表示する。移動表示後、ステップS17〜S25の処理ループに戻る。
ステップS21でYESであれば、押されたタブ(たとえば94a)に対応するボックス内のお顔画像をその場で拡大表示する。具体的には、たとえば図6(A)のゲーム画面でタブ94aが長押しされると、押されている期間、ボックス90a内のお顔画像(これらは図6(B)のF11〜F20に対応する)が1個ずつ、たとえば左端のものから順番に小サイズから中サイズに拡大して表示されていく。拡大対象が右端に達すると、再び左端から同様の動作が繰り返される。
ステップS23でYESであれば、ステップS35で撮影処理(図28参照:後述)を実行し、これによりカメラ画像F0が新たな1つのお顔画像として記録される。撮影後、ステップS17〜S25の処理ループに戻る。ステップS25でYESであれば、ステップS36aに移って、当該タブに対応するボックスが満杯であるか否かを判別する。当該タブに対応するボックス内に格納されたお顔画像の個数が所定数たとえば10個未満であれば、ステップS36aでNOと判別し、直ちにステップS37に進む。なお、所定数“10”は、CPU24によって参照される他の定数と同様、たとえばプリセットデータ用メモリ54に記憶されている。一方、個数が10個に達していれば、ステップS36aでYESと判別し、ステップS36bの処理を経てステップS37に進む。
ステップS36bでは、当該タブに対応するボックス内に格納されたお顔画像の1つをアクティブボックス92A内へと移動表示する。ステップS37では、当該お顔画像を当該タブに対応するボックス内へと移動表示する。たとえば、図6(A)のゲーム画面でお顔画像F1がタブ94cへとドラックされると、ボックス90cには空きがあるので、このお顔画像F1はボックス90c内に格納される。また、お顔画像F2がタブ94aへとドラッグされると、ボックス90aは満杯なので、その中の1つ(たとえば左端のお顔画像)がアクティブボックス92A内へと移動された後に、お顔画像F2はボックス90a内に格納される。移動表示後、ステップS17〜S25の処理ループに戻る。
上記ステップS17で押された診断ボタンが「今日の相性」診断ボタンB1である場合には、ステップS27で実行される診断処理は、詳しくは図14〜図17に示すような処理となる。まず図14〜図16を参照して、CPU42は最初、ステップS101でRTC60からのタイミング信号を待ち、タイミング信号を検知するとステップS102に移って図6(A)のような相性診断画面をLCD12および14に表示し、さらにステップS103で画像エリア78(図10(A)参照)に一時記憶されているカメラ画像のうち1フレームのカメラ画像を取得する。
次のステップS105では、このカメラ画像について特徴点解析プログラム75による特徴点の解析が完了したか否かを判別し、YESであればステップS107に移って解析に成功したか否かをさらに判別する。ここでもYESであれば、ステップS109でこのカメラ画像およびこれを解析して得られた特徴点を画像エリア78および特徴点エリア80にそれぞれ記録する。言い換えれば、先行するフレームで記録されていたカメラ画像および特徴点は、ここで最新のカメラ画像および特徴点によって更新される。ステップS107でNOであれば、このカメラ画像およびこれを解析して得られた特徴点は、ステップS111で消去される。記録または消去後、ステップS113に進む。
ステップS113では、アクティブボックス92A内で選択されている画像はカメラ画像(F0:図6(B)参照)であるか否かを判別し、ここでYESであれば、カメラ画像の特徴点が記録されているか否かをステップS115でさらに判別する。ここでもYESであれば、ステップS117でカメラ画像と各お顔画像との間で相性ポイントを算出した後、ステップS125に進む。ステップS115でNOであれば、ステップS117をスキップしてステップS125に進む。なお、相性ポイント算出処理の詳細については後述する。
一方、カメラ画像以外の画像、つまりいずれかのお顔画像(たとえばF10:図6(A)参照)が選択されていれば、ステップS113でNOと判別し、ステップS119に移る。ステップS119では、選択されているお顔画像と他の各お顔画像との間で相性ポイントを算出する。その後、カメラ画像の特徴点が記録されているか否かをステップS121で判別し、YESであればステップS123で選択されているお顔画像とカメラ画像との間で相性ポイントを算出した後、ステップS125に進む。ステップS121でNOであれば、ステップS123をスキップしてステップS125に進む。
ステップS125では、対象の画像と中央の画像(たとえば図7(A)のゲーム画面では、各お顔画像F31,F32,…と中心点C0のカメラ画像F0)との相性ポイントからこれら2画像間の距離を求め、これを2画像間の目標距離とする。次のステップS127では、現時点での2画像間の距離を求め、これを2画像間の現在距離とする。その次のステップS129では、現在距離を水平および垂直の2方向(縦軸A1の方向および横軸A2の方向)に分解し、これらを2画像間の水平距離および垂直距離とする。そしてステップS131〜S143の処理を通じ、対象の画像を目標距離,水平距離および垂直距離に基づいて移動させる。
具体的には、ステップS131で目標距離が現在距離よりも大きいか否かを判別し、YESであればステップS133で水平距離が一定以下か否かをさらに判別する。ここでもYESであれば、ステップS135に移って目標距離が一定以下であるか否かをさらに判別する。そしてステップS135でYESであれば、ステップS137に進んで、対象の画像を中央の画像に近づくようにこれら2画像を結ぶ線分に沿って一定距離移動させる。移動後、ステップS101に戻る。
ステップS131でNOであれば、ステップS139に進んで、対象の画像を中央の画像(中心点C0)から遠ざかるように水平方向に一定距離移動させ、その後ステップS101に戻る。ステップS133でNOであれれば、ステップS141で対象の画像を中央の画像に近づくように水平方向に一定距離移動させ、その後ステップS101に戻る。ステップS135でNOであれば、ステップS143で垂直距離が目標距離より大きいか否かをさらに判別し、ここでもNOであれば前述のステップS141を経てステップS101に戻る。ステップS143でYESであれば、前述のステップS137を経てステップS101に戻る。
なお、上記ステップS137〜S141の移動処理は、位置エリア82に格納された位置データ上での移動であり、画面上での移動は、次回のステップS102により実現される。すなわち、CPU42は、次のタイミング信号を受け、ステップS101からステップS102に移って位置データに基づき表示画面を更新する。これにより、画面内でカメラ画像および各お顔画像が移動する。そしてステップS203で次のフレームの画像を取得し、同様の処理を繰り返す。
上記ステップS117,S119およびS123の相性ポイント算出処理は、詳しくは図17の手順で実行される。図17を参照して、最初のステップS151では、2つの画像間でサイズおよび方向を互いに一致させるべく調整する。次のステップS153では、2つの画像間で特徴点P1〜P55(図11参照)毎に座標の平均値を求め、これを「二人の平均顔」における特徴点P1〜P55の座標とする。その次のステップS155では、「二人の平均顔」の特徴点P1〜P55の各々について、「基準顔」の対応する特徴点との間の距離を求める。こうして求められた55個の距離の平均値をステップS157で計算し、この平均値に基づいて相性ポイントを算出する。算出後、上位層のルーチン(図14〜図16)に復帰する。
上記ステップS17で押された診断ボタンが「イメージマップ」診断ボタンB3である場合には、ステップS27で実行される診断処理は、詳しくは図18〜図22に示すような処理となる。まず図18〜図19を参照して、CPU42は最初、ステップS201で各イメージワードに対するスコアをお顔画像毎に算出する。次に、表示されているイメージワード(図8のゲーム画面では「のほほん」対「きりっと」および「かわいい」対「キレイ」)に対するスコアから、各お顔画像の移動目標となる座標をステップS203で求める。なお、ステップS201およびS203の詳細については後述する。その後、ステップS205でRTC60からのタイミング信号を待ち、タイミング信号を検知するとステップS206でイメージマップ画面の表示(もしくは更新)を行った後ステップS207に移り、画像エリア78に一時記憶されているカメラ画像のうち1フレームのカメラ画像を取得する。次のステップS209では、表示されているイメージワードを別のものに切り替えたか否かを判別し、ここでYESであればステップS211に移り、表示されているイメージワード(つまり切り替え後のイメージワード)に対するスコアから、各お顔画像の移動目標となる座標を求めた後、ステップS213に進む。ステップS209でNOであれば、ステップS211をスキップしてステップS213に進む。
ステップS213では、ステップS207で取得したカメラ画像について特徴点解析プログラム75による特徴点の解析が完了したか否かを判別し、YESであればステップS215に移って解析に成功したか否かをさらに判別する。ここでもYESであれば、ステップS217でこのカメラ画像およびこれを解析して得られた特徴点を画像エリア78および特徴点エリア80にそれぞれ記録する。次に、表示されているイメージワードに対するカメラ画像のスコアをステップS218で計算し、そしてステップS219で、表示されているイメージワードに対するスコアからカメラ画像の移動目標となる座標を求める。その後、ステップS225に進む。なお、ステップS218およびS219の詳細については後述する。
ステップS213でNOであれば、直ちにステップS225に進む。ステップS215でNOであれば、カメラ画像およびこれを解析して得られた特徴点はステップS221で消去される。そしてステップS223で、カメラ画像に対し所定の固定座標を移動目標の座標とした後、ステップS225に進む。
ステップS225では、ステップS211,S219またはS223で求められた座標に基づいて位置エリア82の位置データを更新することによって、カメラ画像およびお顔画像の各々を位置データ上で移動させる。移動後、ステップS205に戻る。ここでタイミング信号が検出されると、ステップS206に移り、位置データを参照してイメージマップ画面を更新する。これにより、イメージマップ画面内でカメラ画像およびお顔画像の各々(図8の画面では画像F41,F42,…)が移動する。そしてステップS207で次のフレームの画像を取得し、同様の処理を繰り返す。
上記ステップS201またはS208のスコア算出処理は、詳しくは図20の手順で実行される。図20を参照して、CPU42は、最初のステップS231で、対象の画像つまりカメラ画像またはお顔画像に対し、その大きさおよび方向が一定となるように修正を加える。次のステップS233では、プリセットデータ用メモリ54に格納された複数組の基準顔のうち任意の2つ(たとえば一組目の基準顔84および二組目の基準顔86)を参照して、対象の画像と各基準顔との関係から特徴点毎に縦軸A1方向および横軸A2方向のスコアを求める。スコアは、対立する2つの基準顔のうち一方(第1の基準顔)に近い特徴点ほど高くなり、他方(第2の基準顔)に近いほど低くなるように決定される。
次のステップS235では、こうして特徴点毎に求められたスコアを平均し、得られた平均値を対象の画像の当該2つのイメージワードに対するスコアとする。したがって、スコアの高い画像ほど第1の基準顔に対応する第1のイメージワードに近くなり、スコアの低い画像ほど第2の基準顔に対応する第2のイメージワードに近くなる。スコア算出後、上位層のルーチン(図18〜図19)に復帰する。
上記ステップS203,S211,S219のスコアに応じた移動目標の算出処理は、詳しくは図21の手順で実行される。図21を参照して、CPU42は、最初のステップS241で、イメージマップ上で上下(縦軸方向)に置かれた2つのイメージワード(図8の画面では「のほほん」および「きりっと」)に対するスコアから、縦軸A1方向の座標を求める。縦軸A1方向の座標は、上側のイメージワードつまり「のほほん」に近いほど画面上端に近い値(たとえば小さい値)が設定され、下側のイメージワードつまり「きりっと」に近いほど画面下端に近い値(たとえば大きい値)が設定される。
次のステップS243では、イメージマップ上で左右(横軸A2方向)に置かれた2つのイメージワード(図8の画面では「かわいい」および「キレイ」)に対するスコアから、横軸A2方向の座標を求める。横軸A2方向の座標は、左側のイメージワードつまり「かわいい」に近いほど画面左端に近い値(たとえば小さい値)が設定され、右側のイメージワードつまり「キレイ」に近いほど画面右端に近い値(たとえば大きい値)が設定される。
そしてステップS245で、こうして求められた縦軸A1方向の座標(x)および横軸A2方向の座標(y)を組み合わせ、これを移動目標の座標(x,y)とする。算出後、上位層のルーチン(図18〜図19)に復帰する。
上記ステップS225の画像の移動処理は、詳しくは図22の手順で実行される。図22を参照して、CPU42は、ステップS251で、図21のフローに従って算出された移動目標の座標に基づいて位置エリア82の位置データを更新することで、対象の画像を移動目標の座標に向かって一定距離移動させる。移動後、上位層のルーチン(図18〜図19)に復帰する。このような目標の移動は、復帰後のステップS206の画面更新処理を通じて、イメージマップ画面上に反映される。
上記ステップS17で押された診断ボタンが「ふたりの子顔」診断ボタンB5である場合には、ステップS27で実行される診断処理は、詳しくは図23〜図27に示すような処理となる。まず図23〜図25を参照して、CPU42は最初、ステップS301でタイミング信号を待ち、タイミング信号を検知するとステップS302に移って図9のようなふたりの子顔画面をLCD12および14に表示(ないし更新)し、さらにステップS303で画像エリア78に一時記憶されているカメラ画像のうち1フレームのカメラ画像を取得する。
次のステップS305では、このカメラ画像について特徴点解析プログラム75による特徴点の解析が完了したか否かを判別し、YESであればステップS307に移って解析に成功したか否かをさらに判別する。ここでもYESであれば、ステップS309でこのカメラ画像およびこれを解析して得られた特徴点を画像エリア78および特徴点エリア80にそれぞれ記録する。ステップS307でNOであれば、このカメラ画像およびこれを解析して得られた特徴点は、ステップS311で消去される。記録または消去後、ステップS313に進む。
ステップS313では、ふたりの子顔画面上で画像を選択しているか否かを判別し、ステップS313でYESであればステップS315に移って、画像を2つ選択しているか否かをさらに判別する。ステップS315でYESであれば、ステップS317に移ってカメラ画像を選択しているか否かをさらに判別し、ステップS317でもYESであれば、ステップS319に移ってカメラ画像の特徴点が記録されているか否かをさらに判別する。そしてステップS319でYESであれば、ステップS321に移り、選択されている2つの画像から「ふたりの子顔」画像を生成する。なお、このステップS321および後述するステップS329,S331およびS335の画像生成処理の詳細については後述する。生成後、ステップS301に戻る。
ステップS313でNOであれば、ステップS323を経てステップS301に戻る。ステップS323では、新たな画像は生成されず、現時点の画像が維持される。
ステップS315でNOであればステップS325に移って、カメラ画像を選択しているか否かをさらに判別する。ステップS325でYESであればステップS327に移り、カメラ画像の特徴点が記録されているか否かをさらに判別する。ステップS327でYESであればステップS329に移って、選択されている画像(カメラ画像)から子顔の画像を生成し、その後ステップS301に戻る。ステップS325でNOであればステップS331に移って、選択されている画像(1つのお顔画像)から子顔の画像を生成し、その後ステップS301に戻る。ステップS327でNOであれば、ステップS333を経てステップS301に戻る。ステップS333では、新たな画像の生成は行われず、現時点の画像が維持される。
ステップS317でNOであれば、ステップS335に移って、選択されている2つの画像(2つのお顔画像)から「ふたりの子顔」画像を生成し、その後ステップS301に戻る。ステップS319でNOであれば、ステップS337を経てステップS301に戻る。ステップS337では、新たな画像の生成は行われず、現時点の画像が維持される。
その後、ステップS301でタイミング信号を待った後、ステップS302に移り、前述のステップS321,S329,S331またはS335で生成された画像を参照してふたりの子顔画面を更新する。そして、ステップS303で次のフレームの画像を取得し、以降、同様の処理を繰り返す。
上記ステップS321,S329,S331またはS335の画像の生成処理は、詳しくは図26および図27の手順で実行される。図26および図27を参照して、CPU42は、最初のステップS341で、選択している画像において各特徴点を、当該特徴点および基準点を通る直線に沿って、当該2点間の距離に所定倍率を乗じた距離だけ移動させる。次のステップS343では、画像を2つ選択しているか否かを判別し、ここでYESであれば、ステップS345〜S351の一連の処理を通じて2つの画像からふたりの子顔画像を生成した後、上位層のルーチン(図23〜図25)に復帰する。
ステップS345では、選択している2つの画像において、対応する特徴点同士をユーザが設定した比率に応じて合成し、合成後の特徴点の座標を求める。具体的には、一方の画像の特徴点P1の座標が(x1,y1)であり、他方の画像の特徴点P1の座標が(x2,y2)であり、設定比率が2:1であるとき、合成後の特徴点P1の座標は、たとえば当該2点の内分点として((2*x1+1*x2)/(2+1),(2*y1+1*y2)/(2+1))のように計算される。
ステップS347では、合成後の特徴点をふたりの子顔の特徴点とする。ステップS349では、2つの元画像の各々について、次の処理を行う。まず当該画像の各特徴点を頂点とするポリゴンを生成し、次に生成されたポリゴンを各頂点が「子顔」画像の各頂点の位置に来るように変形させ、そして変形されたポリゴンから「子顔」の画像を生成する。ステップS351では、こうして2つの画像からそれぞれ生成された2つの「子顔」画像を、ユーザが設定した比率に応じた透明度で合成し、合成された画像を「ふたりの子顔」画像とする。
一方、ステップS343でNOであれば、ステップS353およびS355の処理を通じて1つの画像から子顔画像を生成した後、上位層のルーチンに復帰する。ステップS353では、ステップS341で移動された後の特徴点を子顔の特徴点とする。ステップS355では、まず元画像の各特徴点を頂点とするポリゴンを生成し、次に生成されたポリゴンを各頂点が「子顔」画像の各頂点の位置に来るように変形させ、そして変形されたポリゴンから「子顔」の画像を生成する。生成後、上位層のルーチン(図23〜図25)に復帰する。
上記ステップS28の撮影処理は、詳しくは図28の手順で実行される。図28を参照して、CPU42は、ステップS401でタイミング信号の発生を待った後、ステップS402に進んでアクティブボックス92A内のカメラ画像(F0)を更新し、さらにステップS403で画像エリア78に一時記憶されているカメラ画像のうち1フレームのカメラ画像を取得する。
次のステップS405では、このカメラ画像について特徴点解析プログラム75による特徴点の解析が完了したか否かを判別し、YESであればステップS407に移って解析に成功したか否かをさらに判別する。ここでもYESであれば、ステップS409でこのカメラ画像およびこれを解析して得られた特徴点を画像エリア78および特徴点エリア80にそれぞれ記録する。ステップS407でNOであれば、このカメラ画像およびこれを解析して得られた特徴点は、ステップS411で消去される。記録または消去後、ステップS413に進む。
ステップS413では、画像エリア78および特徴点エリア80に記録されているカメラ画像および特徴点は有効か否かを判別する。カメラ画像が不鮮明であったり特徴点の位置が所定範囲から外れていたりすると、ステップS413でNOと判別し、ステップS401に戻って次のフレームについて同様の処理を行う。カメラ画像および特徴点が上記のような無効条件のいずれにも該当しなければ、ステップS413でYESと判別し、ステップS415に移ってカメラ画像および特徴点を1つのお顔画像として登録する。こうして登録されたお顔画像は、現時点でアクティブボックス92A内に表示されているお顔画像と同じグループに所属するものとされる。登録後、上位層のルーチン(図12および図13)に復帰する。
なお、図6(A)または図6(B)のようなメインのゲーム画面で「そっくり指数」診断ボタンB2が押下されると、このゲーム画面は、図29のようなそっくり指数画面に更新される。そっくり指数画面では、メインのゲーム画面で選択されていた画像F60が中心点C0に配置され、さらに、アクティブボックス92F内の他の画像F61,F62,…および各ボックス90a,90b,…内の画像が、中心点C0の画像F60からそっくり指数(類似度)に応じた距離だけ離れた位置に、それぞれ表示される。したがって、中心点C0の画像F60とのそっくり指数は、中心点C0に最も近いお顔画像F61が最も高く、中心点C0から遠いものほど低くなる。そして、そっくり指数画面でも、中心点C0の画像F60がカメラ画像の場合、その顔の向きや表情によって各お顔画像F61,F62,…との間のそっくり指数が変わるので、各お顔画像F61,F62,…の位置はリアルタイムに変化する。
また、メインのゲーム画面で「未来顔」診断ボタンB4が押下されると、このゲーム画面は、図30のような未来顔画面に更新される。未来顔画面では、メインのゲーム画面で選択されていた画像F70が特大サイズで表示され、この画像F70の顔について、加齢による特徴点P1〜P55の位置変化をたとえば5年毎に予測し、その容貌を予測結果に基づいてたとえば3秒毎に変化させる。これにより、任意の顔の50年間に渡る変化を、30秒間に短縮して見せることができる。
以上から明らかなように、この実施例のゲーム装置10は、複数のグループに分けられた画像(お顔画像F1,F2,…)を画面(LCD12,14)に表示する。ゲーム装置10のコンピュータ(CPU42,メインメモリ48)は、画面内で画像を格納するための格納領域90において各グループに対応する各領域(ボックス90a,90b,…)に当該グループに属する画像を表示し(S9)、ユーザの操作に応じて複数のグループのうちいずれかのグループを選択する(S19)。そして、いずれかのグループが選択されたとき、この選択されたグループに属する画像を、画面内でユーザが画像を操作するためのアクティブボックス92Aに表示する(S31)。これにより、ユーザは、特定のグループに属する画像を容易に検索して操作することができる。
また、ゲーム装置10は、ユーザをカメラ16で逐次撮像し(S3,S103,S207,S303)、逐次撮像して得られた画像(F0)を示す第1画像データに対して評価を行い(S117,S218,S321,S329)、そして評価結果を画面に逐次更新して表示する(S102,S117,S206,S219,S302,S321,S329)。これにより、煩雑な操作を必要とすることなく、異なる表情や角度で撮像して得られる評価の結果をユーザに認識させることができる。
なお、この実施例では、タッチパネル28はLCD12にだけ設けられているが、他の実施例ではLCD14にも設けられてよい。また、タッチパネル28に代えて、またはこれに加えて、マウス,トラックボール、タッチパッド,DPD(Direct Pointing Device)といった各種のポインティングデバイス(画面内で任意の位置を指定するための位置指定手段)を用いることもできる。
なお、この実施例では、ゲーム装置10について説明したが、この発明は、複数のグループに分けられた画像を表示する表示制御装置に適用できる。また、この発明は、ユーザを撮像して得られる画像を用いて当該ユーザを評価する、情報処理装置に適用できる。