(57)【特許請求の範囲】
【請求項１】
撮像手段から撮像画像を取得可能な情報処理装置のコンピュータを、
取得された撮像画像に対して、当該撮像画像に含まれる所定の対象を認識する認識処理を繰り返し実行する認識手段と、
前記認識処理の処理結果を用いて生成される仮想オブジェクトの画像と、当該認識処理の対象となった撮像画像とを合成した合成画像を繰り返し生成する合成手段と、
前記合成画像を表示手段に表示させる表示制御手段として機能させる画像表示プログラムであって、
前記合成手段は、認識処理が失敗した場合、以前に成功した認識処理の対象となった撮像画像と、当該認識処理の処理結果を用いて生成される仮想オブジェクトの画像とを合成し、
前記表示制御手段は、前記認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、現時点で取得された撮像画像を前記表示手段に表示させる、画像表示プログラム。
【請求項２】
前記合成手段は、認識処理の処理結果にかかわらず、前記仮想オブジェクトの画像を更新して合成画像を生成する、請求項１に記載の画像表示プログラム。
【請求項３】
前記認識処理が成功した場合、成功した認識処理の対象となった撮像画像と当該認識処理の処理結果とを、前記コンピュータがアクセス可能な記憶手段に記憶させる記憶制御手段として前記コンピュータをさらに機能させ、
前記合成手段は、前記記憶手段に記憶される撮像画像と、当該記憶手段に記憶される処理結果に基づいて生成される合成画像とを合成する、請求項１または請求項２に記載の画像表示プログラム。
【請求項４】
前記記憶制御手段は、前記認識処理が成功した場合、成功した認識処理の対象となった撮像画像と当該認識処理の処理結果とが記憶されるように、前記記憶手段の記憶内容を更新する、請求項３に記載の画像表示プログラム。
【請求項５】
前記認識手段は、前記認識処理が成功する場合、当該認識処理によって認識された前記所定の対象と前記撮像手段もしくは前記情報処理装置との位置関係を前記処理結果として算出し、
前記合成手段は、前記認識処理が成功した場合、成功した認識処理の対象となった撮像画像から算出される位置関係に基づいて前記仮想オブジェクトの画像を生成し、前記認識処理が失敗した場合、以前に成功した認識処理の対象となった撮像画像から算出される位置関係に基づいて前記仮想オブジェクトの画像を生成する、請求項１から請求項４のいずれか１項に記載の画像表示プログラム。
【請求項６】
前記認識処理の処理結果をゲーム入力として用いて、仮想空間に登場するオブジェクトの動作を制御する所定のゲーム制御処理を実行するゲーム制御処理手段として前記コンピュータをさらに機能させる、請求項１から請求項５のいずれか１項に記載の画像表示プログラム。
【請求項７】
前記ゲーム制御処理手段は、認識処理が失敗した場合、以前に成功した認識処理の処理結果を用いて前記ゲーム制御処理を実行する、請求項６に記載の画像表示プログラム。
【請求項８】
前記認識処理の処理結果にかかわらず所定のゲーム処理を実行するゲーム処理手段として前記コンピュータをさらに機能させる、請求項１から請求項７のいずれか１項に記載の画像表示プログラム。
【請求項９】
前記ゲーム処理手段は、前記仮想オブジェクトの動作を制御する処理を前記ゲーム処理として実行する、請求項８に記載の画像表示プログラム。
【請求項１０】
前記表示制御手段は、前記認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、前記撮像画像とは異なる警告画像を前記表示手段に表示させる、請求項１から請求項９のいずれか１項に記載の画像表示プログラム。
【請求項１１】
前記表示制御手段は、前記認識処理が所定時間の間連続して失敗したことを前記所定の条件として、前記警告画像を前記表示手段に表示させる、請求項１０に記載の画像表示プログラム。
【請求項１２】
前記撮像手段または前記情報処理装置の動きを検知する動き検知手段として前記コンピュータをさらに機能させ、
前記表示制御手段は、前記動き検知手段によって前記撮像手段が所定の基準以上動いていることが検知されたことを前記所定の条件として、前記警告画像を前記表示手段に表示させる、請求項１０に記載の画像表示プログラム。
【請求項１３】
前記認識処理の処理結果をゲーム入力として用いて、前記仮想オブジェクトの動作を制御する所定のゲーム制御処理を実行するゲーム制御処理手段として前記コンピュータをさらに機能させ、
前記ゲーム制御処理手段は、前記警告画像が表示されることに応じて、ゲームの進行を中断する、請求項１０に記載の画像表示プログラム。
【請求項１４】
前記表示制御手段は、前記警告画像が表示された後において前記認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、現時点で取得された撮像画像を前記表示手段に表示させる、請求項１０に記載の画像表示プログラム。
【請求項１５】
撮像手段から撮像画像を取得可能であり、表示手段に画像を表示させる画像表示装置であって、
取得された撮像画像に対して、当該撮像画像に含まれる所定の対象を認識する認識処理を繰り返し実行する認識手段と、
前記認識処理の処理結果を用いて生成される仮想オブジェクトの画像と、当該認識処理の対象となった撮像画像とを合成した合成画像を繰り返し生成する合成手段と、
前記合成画像を表示手段に表示させる表示制御手段とを備え、
前記合成手段は、認識処理が失敗した場合、以前に成功した認識処理の対象となった撮像画像と、当該認識処理の処理結果を用いて生成される仮想オブジェクトの画像とを合成し、
前記表示制御手段は、前記認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、現時点で取得された撮像画像を前記表示手段に表示させる、画像表示装置。
【請求項１６】
撮像手段から撮像画像を取得可能であり、表示手段に画像を表示させる画像表示システムであって、
取得された撮像画像に対して、当該撮像画像に含まれる所定の対象を認識する認識処理を繰り返し実行する認識手段と、
前記認識処理の処理結果を用いて生成される仮想オブジェクトの画像と、当該認識処理の対象となった撮像画像とを合成した合成画像を繰り返し生成する合成手段と、
前記合成画像を表示手段に表示させる表示制御手段とを備え、
前記合成手段は、認識処理が失敗した場合、以前に成功した認識処理の対象となった撮像画像と、当該認識処理の処理結果を用いて生成される仮想オブジェクトの画像とを合成し、
前記表示制御手段は、前記認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、現時点で取得された撮像画像を前記表示手段に表示させる、画像表示システム。
【請求項１７】
撮像手段から撮像画像を取得し、表示手段に画像を表示させるための画像表示方法であって、
取得された撮像画像に対して、当該撮像画像に含まれる所定の対象を認識する認識処理を繰り返し実行する認識ステップと、
前記認識処理の処理結果を用いて生成される仮想オブジェクトの画像と、当該認識処理の対象となった撮像画像とを合成した合成画像を繰り返し生成する合成ステップと、
前記合成画像を表示手段に表示させる表示制御ステップとを備え、
前記合成ステップにおいては、認識処理が失敗した場合、以前に成功した認識処理の対象となった撮像画像と、当該認識処理の処理結果を用いて生成される仮想オブジェクトの画像とを合成し、
前記表示制御ステップにおいては、前記認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、現時点で取得された撮像画像が前記表示手段に表示される、画像表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、拡張現実感技術を用いて画像を表示する画像表示プログラム、画像表示装置、画像表示システム、および画像表示方法に関する。
【背景技術】
【０００２】
従来、現実空間の画像（カメラによる撮像画像）に仮想空間の画像（ＣＧ画像）を合成して表示する拡張現実感技術がある。非特許文献１には、拡張現実感技術の基本的な画像生成方法が記載されている。拡張現実感技術においては、現実空間にマーカを配置しておき、マーカ周辺をカメラで撮像する。撮像された画像内のマーカは画像認識処理によって検出され、マーカの３次元位置が計算される。計算された３次元位置を用いて仮想空間内の物体の画像（ＣＧ画像）を生成して、その画像をカメラ画像中のマーカの位置に合成して表示することで、現実空間の撮像画像に仮想の物体が合成された画像を表示することができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】加藤博一、Mark Billinghurst，「拡張現実感システムにおけるマーカー追跡とＨＭＤキャリブレーション（Marker Tracking andHMD Calibration for a video-based Augmented Reality Conferencing System）」，ＩＷＡＲ９９（拡張現実感に関する第２回国際ワークショップ（the 2nd InternationalWorkshop on Augmented Reality））における会報，米国，１９９９年１０月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の拡張現実感技術では、現実の撮像画像と仮想のＣＧ画像との間に位置ずれが生じて表示されたり、ＣＧ画像がちらついて表示されたりするという問題があった。
【０００５】
拡張現実感技術では、撮像画像に含まれるマーカを認識してマーカの３次元位置を計算する必要があり、これら認識および計算の処理には時間を要する。そのため、認識および計算の処理結果に基づいて生成されるＣＧ画像は、撮像画像に対して時間的に遅れてしまう。したがって、カメラが動かされて撮像画像が変化する場合、その撮像画像に合成されるべきＣＧ画像は時間的に遅れるために変化前の位置に合成されてしまうので、撮像画像内のマーカの位置とＣＧ画像が合成される位置とがずれてしまう。
【０００６】
また、実際にはマーカが撮像されていても、撮像画像からマーカをうまく認識することができず、認識処理が失敗する場合もある。認識処理が失敗した場合には、その認識処理の対象となった撮像画像からＣＧ画像を生成することはできないので、撮像画像のみが表示されることとなる。そのため、認識処理の失敗が断続的に起こると、ＣＧ画像がちらついて表示されてしまう。
【０００７】
このように、従来においては、ＣＧ画像は位置がずれて表示されたり、ちらついて表示されたりするおそれがあったため、撮像画像とＣＧ画像とを合成した合成画像は現実味（リアルさ）に欠けるおそれがあった。そのため、拡張現実感技術の特徴である「ＣＧ画像が実際に存在するかのような感覚を与える」効果を十分に発揮することができなかった。
【０００８】
それ故、本発明の目的は、拡張現実感技術において合成画像をより現実味を増して表示することができる画像表示プログラム、画像表示装置、画像表示システム、および画像表示方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するために、以下の（１）〜（１５）の構成を採用した。
【００１０】
（１）
本発明は、撮像手段から撮像画像を取得可能な情報処理装置のコンピュータを、認識手段と、合成手段と、表示制御手段として機能させる画像表示プログラムである。認識手段は、取得された撮像画像に対して、当該撮像画像に含まれる所定の対象を認識する認識処理を繰り返し実行する。合成手段は、認識処理の処理結果を用いて生成される仮想オブジェクトの画像と、当該認識処理の対象となった撮像画像とを合成した合成画像を繰り返し生成する。表示制御手段は、合成画像を表示手段に表示させる。また、合成手段は、認識処理が失敗した場合、以前に成功した認識処理の対象となった撮像画像と、当該認識処理の処理結果を用いて生成される仮想オブジェクトの画像とを合成する。
【００１１】
上記「情報処理装置」とは、後述する実施形態に記載のゲーム装置の他、コンピュータプログラムを実行することによって情報処理を行う任意のコンピュータを含む概念である。また、上記「情報処理装置」は、携帯型か否かを問わない。
上記「画像表示プログラム」とは、一例としては、後述する実施形態に記載のゲームプログラムであるが、パーソナルコンピュータや携帯端末において実行されるアプリケーションプログラムを含む概念である。
上記「所定の対象」とは、後述する実施形態におけるマーカ５２の他、認識処理によって認識することが可能な物であれば、どのような物であってもよい。例えば、ユーザ（プレイヤ）の顔等を所定の対象として認識するようにしてもよい。
上記「仮想オブジェクト」は、撮像画像と合成されるために生成される画像であればよく、仮想オブジェクトの画像の生成方法や内容はどのようなものであってもよい。
上記「認識手段」および上記「合成手段」は、繰り返し処理を実行するものであるが、両者の処理が繰り返される頻度（周期）は、同じである必要はない。例えば、下記（７）の構成や後述する実施形態のように、認識手段による認識処理の頻度は、合成手段による合成処理の頻度よりも少なくてもよい。
【００１２】
上記（１）の構成によれば、合成手段は、認識処理の処理結果を用いて生成される仮想オブジェクトの画像と撮像画像との合成画像を生成する。ここで、認識処理が失敗した場合、合成手段は、前回に成功した認識処理の対象となった撮像画像を用いて合成画像を生成する。したがって、認識に失敗した場合でも仮想オブジェクトの画像を含む合成画像が表示されるので、認識が失敗する度に仮想オブジェクトが消えてしまう（表示されない）ことによって仮想オブジェクトがちらついて表示されることを防止することができる。また、認識処理が失敗した場合に合成される仮想オブジェクトの画像は、撮像画像に合わせて、前回に成功した認識処理の処理結果を用いて生成される。したがって、仮想オブジェクトの画像は、その画像が生成される元となった撮像画像と合成されるので、撮像画像と仮想オブジェクトとの間で位置ずれが生じることがない。以上のように、上記（１）の構成によれば、画像のちらつきや位置ずれが生じないので、仮想オブジェクトが実世界にいるような実在感が増す。すなわち、上記（１）の構成によれば、拡張現実感技術において合成画像をより現実味を増して表示することができる。
【００１３】
（２）
合成手段は、認識処理の処理結果にかかわらず、仮想オブジェクトの画像を更新して合成画像を生成してもよい。
【００１４】
上記「認識処理の処理結果にかかわらず」とは、認識処理が成功した場合であっても失敗した場合であっても合成手段は仮想オブジェクトの画像を更新して合成画像を生成する意味である。また、合成画像の生成間隔が認識処理の処理時間よりも短い場合には、認識処理の処理結果が得られていない状況であっても、（合成画像を生成すべきタイミングが到来すると）合成手段は仮想オブジェクトの画像を更新して合成画像を生成する。
【００１５】
上記（２）の構成によれば、合成画像のうち、仮想オブジェクトの画像に関しては、一定の頻度で画像が更新される。そのため、仮想オブジェクトに関しては、認識処理の成功／失敗にかかわらず、滑らかな動画で表示することができる。ここで、上記（１）の構成によれば、認識処理が失敗した場合には撮像画像は更新されないので、撮像画像のみに関して言えば、動画が滑らかに表示されないためにユーザが違和感を抱くおそれがある。しかし、上記（２）の構成によれば、撮像画像に合成する仮想オブジェクトの動画が滑らかに表示されることによって、合成画像全体としては滑らかな印象をユーザに与えることができ、撮像画像に対してユーザが抱く違和感を軽減・抑止することができる。
【００１６】
（３）
画像表示プログラムは、認識処理が成功した場合、成功した認識処理の対象となった撮像画像と当該認識処理の処理結果とを、コンピュータがアクセス可能な記憶手段に記憶させる記憶制御手段としてコンピュータをさらに機能させてもよい。このとき、合成手段は、記憶手段に記憶される撮像画像と、当該記憶手段に記憶される処理結果に基づいて生成される合成画像とを合成する。
【００１７】
上記（３）の構成によれば、認識処理が成功した場合、処理対象の撮像画像と処理結果とを記憶手段に記憶しておくので、その撮像画像を用いた合成画像を容易に生成することができる。
【００１８】
（４）
記憶制御手段は、認識処理が成功した場合、成功した認識処理の対象となった撮像画像と当該認識処理の処理結果とが記憶されるように、記憶手段の記憶内容を更新してもよい。
【００１９】
上記（４）の構成によれば、認識処理が成功した最新の撮像画像とその処理結果とを記憶することができるので、その撮像画像を用いた合成画像を確実に生成することができる。
【００２０】
（５）
認識手段は、認識処理が成功する場合、当該認識処理によって認識された所定の対象と撮像手段もしくは情報処理装置との位置関係を処理結果として算出してもよい。このとき、合成手段は、認識処理が成功した場合、成功した認識処理の対象となった撮像画像から算出される位置関係に基づいて仮想オブジェクトの画像を生成する。また、認識処理が失敗した場合、合成手段は、以前に成功した認識処理の対象となった撮像画像から算出される位置関係に基づいて仮想オブジェクトの画像を生成する。
【００２１】
上記（５）の構成によれば、仮想オブジェクトの画像は、認識処理の処理結果として、所定の対象と撮像手段との位置関係に基づいて生成される。したがって、所定の対象と撮像手段との位置関係を反映した向きから見たときの仮想オブジェクトの画像を生成することができるので、仮想オブジェクトの画像をよりリアルに生成・表示することができる。また、上記（５）の構成によれば、仮想オブジェクトの画像は、認識処理が失敗した場合、前回に成功した認識処理の対象となった撮像画像から算出される位置関係に基づいて生成されるので、撮像画像と仮想オブジェクトとの間の位置ずれは生じない。特に、上記（２）の構成と上記（５）の構成とを組み合わせる場合には、仮想オブジェクトの画像は、仮想オブジェクトの動作や姿勢は毎回更新されつつ、仮想オブジェクトが表示される位置はずれが生じないので、合成画像をより現実味を増して表示することができる。
【００２２】
（６）
画像表示プログラムは、認識処理の処理結果をゲーム入力として用いて、仮想空間に登場するオブジェクトの動作を制御する所定のゲーム制御処理を実行するゲーム制御処理手段としてコンピュータをさらに機能させてもよい。
【００２３】
上記（６）の構成によれば、拡張現実感技術による画像をゲームに用いることができる。また、上記（６）の構成によれば、認識処理の処理結果がゲーム入力として用いられるので、ユーザ（プレイヤ）は、カメラ自体を動かすことによってゲーム操作を行うことができる。これによれば、あたかも仮想オブジェクトが存在するかのような現実空間においてプレイヤ自身が実際に動いて遊ぶという、拡張現実感技術を用いた新規なゲームを提供することができる。
【００２４】
（７）
ゲーム制御処理手段は、認識処理が失敗した場合、以前に成功した認識処理の処理結果を用いてゲーム制御処理を実行してもよい。
【００２５】
上記（７）の構成によれば、ゲーム制御処理手段は認識処理が失敗した場合でもゲーム制御処理を実行することができる。そのため、認識処理が断続的に失敗した場合でもゲーム制御処理を継続して実行することができ、ゲーム制御処理の制御対象であるオブジェクトをスムーズに動作させることができる。
【００２６】
（８）
画像表示プログラムは、認識処理の処理結果にかかわらず所定のゲーム処理を実行するゲーム処理手段としてコンピュータをさらに機能させてもよい。
【００２７】
上記「ゲーム処理」は、ゲームを進行するための処理であればよく、例えば後述する実施形態におけるステップＳ２４の処理のように、認識処理の処理結果をゲーム入力として用いない処理を含む概念である。
【００２８】
上記（８）の構成によれば、認識処理が仮に失敗した場合であってもゲームの進行は継続されるので、認識処理が断続的に失敗することによってゲームが頻繁に中断されることがない。そのため、プレイヤに不快感を与えることなく、拡張現実感技術を用いたゲームをスムーズに進行させることができる。
【００２９】
（９）
ゲーム処理手段は、上記仮想オブジェクトの動作を制御する処理をゲーム処理として実行してもよい。
【００３０】
なお、上記「仮想オブジェクトの動作を制御する処理」は、ユーザによる入力に従って仮想オブジェクトの動作を制御する処理であってもよいし、ゲームプログラムにおいて予め定められたアルゴリズムに従って仮想オブジェクトの動作を制御する処理であってもよい。
【００３１】
上記（９）の構成によれば、ゲーム処理の結果として仮想オブジェクトが動作する画像（動画）を拡張現実感技術によって表示することができる。さらに、ゲーム処理は認識処理の処理結果にかかわらず実行されるので、上記（２）の構成と同様、仮想オブジェクトは一定の頻度で画像が更新される。そのため、仮想オブジェクトの動画が滑らかに表示されることによって、合成画像（ゲーム画像）全体としては滑らかな印象をユーザに与えることができる。
【００３２】
（１０）
表示制御手段は、認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、撮像画像とは異なる警告画像を表示手段に表示させてもよい。
【００３３】
上記（１０）の構成によれば、（所定の条件を満たす程度に）認識処理が連続して失敗した場合には、合成画像から警告画像へと表示が変化することになる。したがって、所定の条件を適切に設定することによって、認識処理が成功する見込みが少ないことをユーザに通知することができる。ここで、認識処理が連続して失敗した場合には、仮想オブジェクトの画像のみを消去し、撮像画像のみを表示する方法も考えられる。しかし、この方法では、仮想オブジェクト自体が変化したことが原因で、仮想オブジェクトの画像が消えた（例えば、ゲームを例とすれば、敵オブジェクトが倒されて消える場合もある）のか、認識処理が失敗したことが原因で仮想オブジェクトの画像が消えたのか、判断がつきにくいこともある。これに対して、上記（１０）の構成によれば、撮像画像とは異なる警告画像を表示することで、認識処理が連続して失敗していることをユーザに明確に通知することができる。
【００３４】
（１１）
表示制御手段は、認識処理が所定時間の間連続して失敗したことを所定の条件として、警告画像を表示手段に表示させてもよい。
【００３５】
上記（１１）の構成によれば、認識処理が所定時間連続して失敗した場合、警告画像が表示される。このような場合には認識処理が再度成功する見込みが少ないと推測されるので、上記（１１）の構成によれば、適切なタイミングでユーザに対して警告を行うことができる。
【００３６】
（１２）
画像表示プログラムは、撮像手段または情報処理装置の動きを検知する動き検知手段としてコンピュータをさらに機能させてもよい。このとき、表示制御手段は、動き検知手段によって撮像手段が所定の基準以上動いていることが検知されたことを所定の条件として、警告画像を表示手段に表示させてもよい。
【００３７】
上記（１２）の構成によれば、撮像手段が所定の基準以上動かされた場合、警告画像が表示される。このような場合には認識処理が再度成功する見込みが少ないと推測されるので、上記（１２）の構成によれば、適切なタイミングでユーザに対して警告を行うことができる。
【００３８】
（１３）
画像表示プログラムは、認識処理の処理結果をゲーム入力として用いて、仮想オブジェクトの動作を制御する所定のゲーム制御処理を実行するゲーム制御処理手段としてコンピュータをさらに機能させてもよい。このとき、ゲーム制御処理手段は、警告画像が表示されることに応じて、ゲームの進行を中断する。
【００３９】
上記（１３）の構成によれば、警告画像が表示された場合、ゲームが中断される。したがって、ゲーム画像（合成画像）ではない警告画像が表示されている間にゲームが進行する不都合を防止することができる。
【００４０】
（１４）
表示制御手段は、警告画像が表示された後において認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、撮像画像を表示手段に表示させてもよい。
【００４１】
上記（１４）の構成によれば、警告画像が表示された後、所定の条件が満たされると、撮像画像が表示される。ここで、警告画像を表示し続けると、ユーザは撮像手段が撮像している画像を把握できないため、所定の対象を正しく撮像することができなくなってしまい、認識が成功する状態に戻すことが困難になる。これに対して、上記（１４）の構成によれば、警告画像の後に撮像画像を表示することによって、ユーザは、所定の対象を正しく撮像できるように撮像手段の向きを修正しやすくなるので、認識が成功する状態に容易に戻すことができる。
【００４２】
（１５）
表示制御手段は、認識処理が連続して失敗した結果、所定の条件が満たされたことに応じて、現時点で取得された撮像画像を表示手段に表示させてもよい。
【００４３】
上記（１５）の構成によれば、（所定の条件を満たす程度に）認識処理が連続して失敗した場合には、合成画像から警告画像へと表示が変化することになる。したがって、所定の条件を適切に設定することによって、認識処理が成功する見込みが少ないことをユーザに通知することができる。
【００４４】
また、本発明は、上記各手段と同等の手段を備える画像表示装置の形態で実施されてもよい。この画像表示装置においては、画像表示プログラムを実行するコンピュータによって上記各手段が実現されてもよいし、専用回路によって上記各手段の一部または全部が実現されてもよい。また、本発明は、上記各手段を備える１以上の情報処理装置からなる画像表示システムの形態で実施されてもよい。このとき、１以上の情報処理装置は、有線または無線通信によって直接通信を行ってもよいし、ネットワークを介して通信を行ってもよい。さらに、本発明は、上記各手段によって行われる画像表示方法の形態で実施されてもよい。
【発明の効果】
【００４５】
本発明は、撮像画像に対する認識処理が失敗した場合に、前回に成功した認識処理の対象となった撮像画像と、その認識処理の処理結果を用いて生成される仮想オブジェクトの画像との合成画像を表示することによって、画像のちらつきや位置ずれを防止することができ、合成画像をより現実味を増して表示することができる。
【図面の簡単な説明】
【００４６】
【図１】本実施形態に係るゲーム装置の外観図
【図２】ゲーム装置の内部構成の一例を示すブロック図
【図３】ゲーム装置を使用する例を示す図
【図４】ゲーム装置に表示されるゲーム画像の一例を示す図
【図５】合成画像の生成処理を説明するための図
【図６】認識が失敗した場合における合成画像の生成処理を説明するための図
【図７】撮像画像の取得間隔および認識処理に要する時間を、ＣＧ画像の生成間隔と同じとした場合における合成処理を示す図
【図８】ゲームプログラムによる処理において用いられる各種データを示す図
【図９】ゲーム装置において実行されるゲーム処理の流れを示すメインフローチャート
【図１０】図９に示す認識管理処理（ステップＳ３）の流れを示すフローチャート
【図１１】図９に示すゲーム制御処理（ステップＳ４）の流れを示すフローチャート
【図１２】図９に示す表示処理（ステップＳ５）の流れを示すフローチャート
【図１３】本実施形態における表示処理（ステップＳ５）の変形例を示すフローチャート
【発明を実施するための形態】
【００４７】
［ゲーム装置のハードウェア構成］
以下、図面を参照して、本発明の一実施形態に係る画像表示プログラムおよび画像表示装置について説明する。本発明は、表示装置に画像を表示させる任意の情報処理装置（コンピュータ）において画像表示プログラムが実行されることによって実現することができるが、本実施形態では、情報処理装置の一例として図１に示すゲーム装置１を用いる場合について説明する。
【００４８】
図１は、本実施形態に係るゲーム装置１の外観図である。ここでは、ゲーム装置１の一例として、携帯ゲーム装置を示す。なお、ゲーム装置１は、カメラを内蔵しており、当該カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【００４９】
図１において、ゲーム装置１は折り畳み型の携帯ゲーム装置であり、開いた状態（開状態）のゲーム装置１を示している。ゲーム装置１は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【００５０】
ゲーム装置１は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に連結されている。図１の例では、下側ハウジング１１および上側ハウジング２１は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置１を使用する。また、ユーザは、ゲーム装置１を使用しない場合には閉状態としてゲーム装置１を保管する。また、図１に示した例では、ゲーム装置１は、上記閉状態および開状態のみでなく、下側ハウジング１１と上側ハウジング２１とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング２１を下側ハウジング１１に対して任意の角度で静止させることができる。
【００５１】
下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２が設けられる。下側ＬＣＤ１２は横長形状であり、長辺方向が下側ハウジング１１の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置１に内蔵されている表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を利用しても良い。また、ゲーム装置１は、任意の解像度の表示装置を利用することができる。なお、下側ＬＣＤ１２には、内側カメラ２３または外側カメラ２５で撮像されている画像がリアルタイムに表示される。
【００５２】
下側ハウジング１１には、入力装置として、各操作ボタン１４Ａ〜１４Ｋおよびタッチパネル１３が設けられる。図１に示されるように、各操作ボタン１４Ａ〜１４Ｋのうち、方向入力ボタン１４Ａ、操作ボタン１４Ｂ、操作ボタン１４Ｃ、操作ボタン１４Ｄ、操作ボタン１４Ｅ、電源ボタン１４Ｆ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、下側ハウジング１１の内側主面上に設けられる。内側主面とは、上側ハウジング２１と下側ハウジング１１とを折り畳んだときに内側となる面である。図１に示す例では、方向入力ボタン１４Ａおよび電源ボタン１４Ｆは、下側ハウジング１１の内側主面の中央付近に設けられる下側ＬＣＤ１２に対して、左右一方側（図１では左側）の当該主面上に設けられる。また、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、下側ＬＣＤ１２に対して左右他方側（図１では右側）となる下側ハウジング１１の内側主面上に設けられる。方向入力ボタン１４Ａ、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、ゲーム装置１に対する各種操作を行うために用いられる。方向入力ボタン１４Ａは、例えば選択操作等に用いられる。各操作ボタン１４Ｂ〜１４Ｅは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン１４Ｆは、ゲーム装置１の電源をオン／オフするために用いられる。
【００５３】
なお、図１においては、操作ボタン１４Ｉ〜１４Ｋの図示を省略している。例えば、Ｌボタン１４Ｉは、下側ハウジング１１の上側面の左端部に設けられ、Ｒボタン１４Ｊは、下側ハウジング１１の上側面の右端部に設けられる。Ｌボタン１４ＩおよびＲボタン１４Ｊは、撮影機能を有するゲーム装置１に対して、例えば撮影指示操作（シャッター操作）を行うために用いられる。さらに、音量ボタン１４Ｋは、下側ハウジング１１の左側面に設けられる。音量ボタン１４Ｋは、ゲーム装置１が備えるスピーカの音量を調整するために用いられる。
【００５４】
また、ゲーム装置１は、各操作ボタン１４Ａ〜１４Ｋとは別の入力装置としてさらに、画面上における任意の位置を指定可能な入力装置であるポインティングデバイスの一例として、タッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル１３は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル１３は、抵抗膜方式に限らず、任意の方式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル１３として、例えば下側ＬＣＤ１２の解像度と同じ解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度とが一致している必要はない。また、下側ハウジング１１の右側面には、挿入口（図１では破線で示している）が設けられている。挿入口は、タッチパネル１３に対する操作を行うために用いられるタッチペン２７を収納することができる。なお、タッチパネル１３に対する入力（タッチ入力）は、通常タッチペン２７を用いて行われるが、タッチペン２７に限らずユーザの指でタッチパネル１３を操作することも可能である。
【００５５】
また、下側ハウジング１１の右側面には、メモリカード２８を収納するための挿入口（図１では二点鎖線で示している）が設けられている。この挿入口の内側には、ゲーム装置１とメモリカード２８とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２８は、例えばＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカードであり、コネクタに着脱自在に装着される。メモリカード２８は、例えば、ゲーム装置１によって撮像された画像を記憶（保存）したり、他の装置で生成された画像をゲーム装置１に読み込んだりするために用いられる。
【００５６】
さらに、下側ハウジング１１の上側面には、メモリカード２９を収納するための挿入口（図１では、一点鎖線で示している）が設けられている。この挿入口の内側にも、ゲーム装置１とメモリカード２９とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２９は、ゲームプログラム等の情報処理プログラムを記録した記録媒体であり、下側ハウジング１１に設けられた挿入口に着脱自在に装着される。
【００５７】
下側ハウジング１１と上側ハウジング２１との連結部の左側部分には、３つのＬＥＤ１５Ａ〜１５Ｃが取り付けられる。ここで、ゲーム装置１は、他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ１５Ａは、ゲーム装置１の電源がオンである場合に点灯する。第２ＬＥＤ１５Ｂは、ゲーム装置１の充電中に点灯する。第３ＬＥＤ１５Ｃは、無線通信が確立している場合に点灯する。したがって、３つのＬＥＤ１５Ａ〜１５Ｃによって、ゲーム装置１の電源のオン／オフ状況、充電状況、および、通信確立状況をユーザに通知することができる。
【００５８】
一方、上側ハウジング２１には、上側ＬＣＤ２２が設けられる。上側ＬＣＤ２２は横長形状であり、長辺方向が上側ハウジング２１の長辺方向に一致するように配置される。なお、下側ＬＣＤ１２と同様、上側ＬＣＤ２２に代えて、他の任意の方式および任意の解像度の表示装置を利用しても良い。なお、上側ＬＣＤ２２上を覆うように、タッチパネルを設けてもかまわない。上側ＬＣＤ２２には、例えば、各操作ボタン１４Ａ〜１４Ｋやタッチパネル１３の役割をユーザに教えるための操作説明画面が表示される。
【００５９】
また、上側ハウジング２１には、２つのカメラ（内側カメラ２３および外側カメラ２５）が設けられる。図１に示されるように、内側カメラ２３は、上側ハウジング２１の連結部付近の内側主面に取り付けられる。一方、外側カメラ２５は、内側カメラ２３が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング２１の外側主面（ゲーム装置１が閉状態となった場合に外側となる面であり、図１に示す上側ハウジング２１の背面）に取り付けられる。なお、図１においては、外側カメラ２５を破線で示している。これによって、内側カメラ２３は、上側ハウジング２１の内側主面が向く方向を撮像することが可能であり、外側カメラ２５は、内側カメラ２３の撮像方向の逆方向、すなわち、上側ハウジング２１の外側主面が向く方向を撮像することが可能である。このように、本実施形態では、２つの内側カメラ２３および外側カメラ２５の撮像方向が互いに逆方向となるように設けられる。例えば、ユーザは、ゲーム装置１からユーザの方を見た景色を内側カメラ２３で撮像することができるとともに、ゲーム装置１からユーザの反対側の方向を見た景色を外側カメラ２５で撮像することができる。
【００６０】
なお、上記連結部付近の内側主面には、音声入力装置としてマイク（図２に示すマイク４３）が収納されている。そして、上記連結部付近の内側主面には、マイク４３がゲーム装置１外部の音を検知できるように、マイクロフォン用孔１６が形成される。マイク４３を収納する位置およびマイクロフォン用孔１６の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング１１にマイク４３を収納し、マイク４３を収納位置に対応させて下側ハウジング１１にマイクロフォン用孔１６を設けるようにしても良い。
【００６１】
また、上側ハウジング２１の外側主面には、第４ＬＥＤ２６（図１では、破線で示す）が取り付けられる。第４ＬＥＤ２６は、内側カメラ２３または外側カメラ２５によって撮影が行われた（シャッターボタンが押下された）時点で点灯する。また、内側カメラ２３または外側カメラ２５によって動画が撮影される間点灯する。第４ＬＥＤ２６によって、ゲーム装置１による撮影が行われた（行われている）ことを撮影対象者や周囲に通知することができる。
【００６２】
また、上側ハウジング２１の内側主面の中央付近に設けられる上側ＬＣＤ２２に対して、左右両側の当該主面に音抜き孔２４がそれぞれ形成される。音抜き孔２４の奥の上側ハウジング２１内にはスピーカが収納されている。音抜き孔２４は、スピーカからの音をゲーム装置１の外部に放出するための孔である。
【００６３】
以上に説明したように、上側ハウジング２１には、画像を撮像するための撮像手段である内側カメラ２３および外側カメラ２５と、主に操作説明画面を表示するための表示手段である上側ＬＣＤ２２とが設けられる。一方、下側ハウジング１１には、ゲーム装置１に対する操作入力を行うための入力装置（タッチパネル１３および各操作ボタン１４Ａ〜１４Ｋ）と、撮像された画像を表示するための表示手段である下側ＬＣＤ１２とが設けられる。したがって、ゲーム装置１を使用する際には、ユーザは、下側ＬＣＤ１２に表示される撮像画像（カメラによって撮像された画像）を見ながら、下側ハウジング１１を把持して入力装置に対する入力を行うことができる。
【００６４】
次に、図２を参照して、ゲーム装置１の内部構成を説明する。図２は、ゲーム装置１の内部構成の一例を示すブロック図である。
【００６５】
図２において、ゲーム装置１は、ＣＰＵ３１、メインメモリ３２、メモリ制御回路３３、保存用データメモリ３４、プリセットデータ用メモリ３５、メモリカードインターフェース（メモリカードＩ／Ｆ）３６、メモリカードＩ／Ｆ３７、無線通信モジュール３８、ローカル通信モジュール３９、リアルタイムクロック（ＲＴＣ）４０、電源回路４１、インターフェース回路（Ｉ／Ｆ回路）４２、第１ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４５、第２ＧＰＵ４６、第１ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）４７、第２ＶＲＡＭ４８、およびＬＣＤコントローラ４９等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング１１（または上側ハウジング２１でも良い）内に収納される。
【００６６】
ＣＰＵ３１は、所定のプログラム（ここでは、本実施形態に係る画像表示プログラム）を実行するための情報処理手段である。本実施形態では、画像表示プログラムの一例としてゲームプログラムがゲーム装置１内のメモリ（例えば保存用データメモリ３４）やメモリカード２８および／または２９に記憶されており、ＣＰＵ３１は、当該ゲームプログラムを実行することによって、後述するゲーム処理を実行する。なお、ＣＰＵ３１によって実行されるプログラムは、ゲーム装置１内のメモリに予め記憶されていても良いし、メモリカード２８および／または２９から取得されても良いし、他の機器との通信によって他の機器から取得されても良い。
【００６７】
ＣＰＵ３１には、メインメモリ３２、メモリ制御回路３３、およびプリセットデータ用メモリ３５が接続される。メモリ制御回路３３には、保存用データメモリ３４が接続される。メインメモリ３２は、ＣＰＵ３１のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ３２は、上記ゲーム処理に用いられる各種データを記憶したり、外部（メモリカード２８および２９や他の機器等）から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ３２として、例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。保存用データメモリ３４は、ＣＰＵ３１によって実行されるプログラムや内側カメラ２３および外側カメラ２５によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ３４は、不揮発性の記憶媒体によって構成されており、本実施形態では例えばＮＡＮＤ型フラッシュメモリで構成される。メモリ制御回路３３は、ＣＰＵ３１の指示に従って、保存用データメモリ３４に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ３５は、ゲーム装置１において予め設定される各種パラメータ等のデータ（プリセットデータ）を記憶するための記憶手段である。プリセットデータ用メモリ３５としては、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バスによってＣＰＵ３１と接続されるフラッシュメモリを用いることができる。
【００６８】
メモリカードＩ／Ｆ３６および３７は、それぞれＣＰＵ３１に接続される。メモリカードＩ／Ｆ３６は、コネクタに装着されたメモリカード２８に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。また、メモリカードＩ／Ｆ３７は、コネクタに装着されたメモリカード２９に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。本実施形態では、内側カメラ２３および外側カメラ２５によって撮像された画像データや他の装置から受信された画像データがメモリカード２８に書き込まれたり、メモリカード２８に記憶された画像データがメモリカード２８から読み出されて保存用データメモリ３４に記憶されたり、読み出された画像データがメモリカード２８から読み出されて他の装置へ送信されたりする。また、メモリカード２９に記憶された各種プログラムが、ＣＰＵ３１によって読み出されて実行されたりする。
【００６９】
なお、ゲームプログラムは、メモリカード２９等の外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されても良い。また、ゲームプログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記録されていても良い。なお、ゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体でも良い。
【００７０】
無線通信モジュール３８は、例えばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３９は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール３８およびローカル通信モジュール３９は、ＣＰＵ３１に接続される。ＣＰＵ３１は、無線通信モジュール３８を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール３９を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００７１】
また、ＣＰＵ３１には、ＲＴＣ４０および電源回路４１が接続される。ＲＴＣ４０は、時間をカウントしてＣＰＵ３１に出力する。例えば、ＣＰＵ３１は、ＲＴＣ４０によって計時された時間に基づいて、現在時刻（日付）等を計算することもできる。電源回路４１は、ゲーム装置１が有する電源（典型的には電池であり、下側ハウジング１１に収納される）から供給される電力を制御し、ゲーム装置１の各部品に電力を供給する。
【００７２】
また、ゲーム装置１は、マイク４３およびアンプ４４を備えている。マイク４３およびアンプ４４は、それぞれＩ／Ｆ回路４２に接続される。マイク４３は、ゲーム装置１に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をＩ／Ｆ回路４２に出力する。アンプ４４は、Ｉ／Ｆ回路４２から音声信号を増幅してスピーカ（図示せず）から出力させる。Ｉ／Ｆ回路４２は、ＣＰＵ３１に接続される。
【００７３】
また、タッチパネル１３は、Ｉ／Ｆ回路４２に接続される。Ｉ／Ｆ回路４２は、マイク４３およびアンプ４４（スピーカ）の制御を行う音声制御回路と、タッチパネル１３の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データ（後述する検出座標データ）を生成してＣＰＵ３１に出力する。タッチ位置データは、タッチパネル１３の入力面に対して入力が行われた位置としてタッチパネル１３が検出した位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル１３からの信号の読み込み、および、検出座標データの生成を所定時間に１回の割合で繰り返し行う。
【００７４】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｋから構成され、ＣＰＵ３１に接続される。操作ボタン１４からＣＰＵ３１へは、各操作ボタン１４Ａ〜１４Ｋに対する入力状況（押下されたか否か）を示す操作データが出力される。ＣＰＵ３１は、操作ボタン１４から操作データを取得することによって、操作ボタン１４に対する入力に応じた処理を実行する。
【００７５】
内側カメラ２３および外側カメラ２５は、それぞれＣＰＵ３１に接続される。内側カメラ２３および外側カメラ２５は、ＣＰＵ３１の指示に応じて画像を撮像し、撮像した画像データをＣＰＵ３１に出力する。本実施形態では、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラが画像を撮像して画像データをＣＰＵ３１に送る。なお、内側カメラ２３および外側カメラ２５は動画の撮影も可能である。すなわち、内側カメラ２３および外側カメラ２５は、繰り返し撮像を行って撮像データをＣＰＵ３１へ繰り返し送ることも可能である。
【００７６】
第１ＧＰＵ４５には第１ＶＲＡＭ４７が接続され、第２ＧＰＵ４６には第２ＶＲＡＭ４８が接続される。第１ＧＰＵ４５は、ＣＰＵ３１からの指示に応じて、メインメモリ３２に記憶されている表示画像を生成するためのデータに基づいて第１の表示画像を生成し、第１ＶＲＡＭ４７に描画する。第２ＧＰＵ４６は、第１ＧＰＵ４５と同様に、ＣＰＵ３１からの指示に応じて第２の表示画像を生成し、第２ＶＲＡＭ４８に描画する。第１ＶＲＡＭ４７および第２ＶＲＡＭ４８は、ＬＣＤコントローラ４９に接続されている。
【００７７】
ＬＣＤコントローラ４９は、レジスタ４９１を含む。レジスタ４９１は、ＣＰＵ３１からの指示に応じて０または１の値を記憶する。ＬＣＤコントローラ４９は、レジスタ４９１の値が０の場合は、第１ＶＲＡＭ４７に描画された第１の表示画像を下側ＬＣＤ１２に出力し、第２ＶＲＡＭ４８に描画された第２の表示画像を上側ＬＣＤ２２に出力する。また、レジスタ４９１の値が１の場合は、第１ＶＲＡＭ４７に描画された第１の表示画像を上側ＬＣＤ２２に出力し、第２ＶＲＡＭ４８に描画された第２の表示画像を下側ＬＣＤ１２に出力する。例えば、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれかから取得した画像を下側ＬＣＤ１２に表示させ、所定の処理によって生成した操作説明画面を上側ＬＣＤ２２に表示させることも可能である。
【００７８】
［画像合成処理の概要］
次に、図３から図６を参照して、上記ゲームプログラムによって実行されるゲーム処理中において行われる画像合成処理について説明する。ゲームプログラムは、カメラによって撮像された現実空間の画像（撮像画像）に仮想空間の画像（ＣＧ画像）を合成して表示する拡張現実感技術を用いてゲーム画像を表示し、プレイヤにゲームをプレイさせるものである。
【００７９】
図３は、ゲーム装置を使用する例を示す図である。本実施形態においては、図３に示すように、プレイヤ（ユーザ）は、マーカ５２を任意の場所（図３では机５１の上）に設置しておき、ゲーム装置１を用いてマーカ５２およびその周辺を撮像する。撮像に用いられるカメラは、内側カメラ２３および外側カメラ２５のいずれであっても良いが、ここでは、外側カメラ２５を用いる場合を例として説明する。マーカ５２は、本実施形態では所定の模様が描かれた薄板状のものが用いられる。ただし、マーカは、後述する認識処理によって認識可能な物であれば良く、マーカ５２のような専用品に限らず、例えばプレイヤの体の一部（顔等）がマーカとして用いられても良い。
【００８０】
図４は、ゲーム装置に表示されるゲーム画像の一例を示す図である。図４は、図３に示すように机５１の上に置かれたマーカ５２をゲーム装置１が撮像する場合に、ゲーム装置１の上側ＬＣＤ２２に表示されるゲーム画像を示す。なお、本実施形態ではゲーム画像が上側ＬＣＤ２２に表示されるものとするが、ゲーム画像は下側ＬＣＤ１２に表示されてもよい。図４に示すように、上側ＬＣＤ２２には、仮想空間における仮想オブジェクトの画像（ＣＧ画像）として大砲５３の画像が撮像画像に合成されて表示される。これによって、実際の机５１の上に大砲５３が存在するかのような画像を表示することができる。なお、詳細は後述するが、大砲５３の動作はゲームプログラムによって制御され、大砲５３は向きを変えたり、弾を発射したりする。つまり、本実施形態では、仮想オブジェクトの画像は動画として表示される。なお、図４では、仮想オブジェクトの一例として大砲５３の画像が表示されるが、仮想オブジェクトはどのようなものであってもよい。
【００８１】
撮像画像に対してＣＧ画像を合成した画像（合成画像）は、例えば次の処理によって生成することができる。まず、ゲーム装置１は、カメラによる撮像画像から、その中に含まれるマーカ５２を認識する認識処理を実行する。マーカ５２が認識された場合、ゲーム装置１は、認識されたマーカ５２の形状および向き等から、ゲーム装置１（カメラ）とマーカ５２との位置関係を算出する。位置関係とは、例えば、ゲーム装置１およびマーカ５２の一方を基準としたときの他方の３次元の位置および姿勢として表される。なお、３次元位置を算出する場合には、例えば認識されたマーカ５２の（撮像画像上での）大きさ等に基づいて両者の距離を決定してもよい。ゲーム装置１は、上記認識処理の処理結果として上記位置関係を算出する。さらに、ゲーム装置１は、位置関係に基づいて仮想空間における仮想カメラの位置および姿勢を算出する。仮想カメラの位置および姿勢は、仮想空間における仮想カメラと仮想オブジェクトとの位置関係が、現実空間におけるゲーム装置１とマーカ５２との位置関係に一致するように算出される。仮想カメラの位置が決まると、ゲーム装置１は、仮想カメラの位置から仮想オブジェクトを見たＣＧ画像を生成し、撮像画像に対して仮想オブジェクトのＣＧ画像を合成する。以上の処理によって、ゲーム装置１は合成画像を生成して表示することができる。なお、上記認識処理（位置関係を算出する処理）、および、上記位置関係から仮想カメラの位置を算出する処理は、従来の拡張現実感技術における処理と同様であってもよい。
【００８２】
ここで、撮像画像にＣＧ画像を合成して表示する拡張現実感技術においては、本発明の課題として上述したように、撮像画像とＣＧ画像との位置ずれが生じたり、ＣＧ画像がちらついたりして表示されるおそれがあり、合成画像が現実味に欠けるおそれがある。そこで、本発明では、次に説明する処理によって、合成画像の現実味を増すようにしている。以下、図５および図６を参照して、合成画像の生成処理について説明する。
【００８３】
図５は、合成画像の生成処理を説明するための図である。図５において（後述する図６も同様）、横軸は時間を表しており、“撮像画像”、“ＣＧ画像”、“合成画像”の各欄は、それぞれの画像が取得（生成）されるタイミングを表す。また、“認識処理”の欄は、撮像画像に対する認識処理が完了するタイミングを表す。なお、図５では、ＣＧ画像は所定時間（１フレーム時間）間隔で生成されるのに対して、撮像画像はＣＧ画像の生成間隔よりも長い間隔で取得され、また、認識処理に要する時間はＣＧ画像の生成間隔よりも長い場合を想定している。
【００８４】
本実施形態において、撮像画像に対して認識処理を実行し、その処理結果に基づいてＣＧ画像を生成し、撮像画像とＣＧ画像とを合成して表示する点については、上述した通りである。なお、ＣＧ画像は認識処理の処理結果に基づいて生成され、認識処理には時間を要する。そのため、ＣＧ画像が生成される時点では、そのＣＧ画像を生成する元になった撮像画像は最新のものではなく、最新の撮像画像はＣＧ画像の元になった撮像画像とは別の画像となっている（例えば、図５に示す時刻Ｔ１，Ｔ４，Ｔ７参照）。
【００８５】
本実施形態では、ゲーム装置１は、合成画像を生成する際、取得された最新の撮像画像ではなく、認識処理が完了した撮像画像とＣＧ画像とを合成する。例えば図５において、時刻Ｔ１では、時刻Ｔ１より前に取得された撮像画像Ｒ０に対する認識処理が完了しており、現時点Ｔ１で取得された撮像画像Ｒ１に対する認識処理は完了していない。そのため、時刻Ｔ１では、撮像画像Ｒ１ではなく、撮像画像Ｒ０とＣＧ画像Ｖ１とが合成される。ここで、ＣＧ画像Ｖ１は撮像画像Ｒ０に対する認識処理の処理結果に基づいて生成された画像である。したがって、時刻Ｔ１においては、ＣＧ画像Ｖ１が生成される元となった撮像画像Ｒ０と、当該ＣＧ画像Ｖ１とを合成するので、上述した位置ずれは生じない。
【００８６】
また、時刻Ｔ２およびＴ３では、撮像画像Ｒ１の認識処理は途中であり、次の認識処理が完了していないので、時刻Ｔ１と同様、撮像画像Ｒ０の認識処理結果に基づいてＣＧ画像Ｖ２およびＶ３が生成される。したがって、時刻Ｔ２およびＴ３においても時刻Ｔ１と同様、撮像画像Ｒ０を用いて合成画像が生成される。つまり、ＣＧ画像Ｖ２およびＶ３は、これらのＣＧ画像Ｖ２およびＶ３が生成される元となった撮像画像Ｒ０に対して合成されるので、時刻Ｔ２およびＴ３においても時刻Ｔ１と同様、上述した位置ずれを防止することができる。このように、ゲーム装置１は、次の認識処理が完了するまでは、認識処理が完了済みの撮像画像を用いて合成画像を生成する。
【００８７】
なお、図５においては、時刻Ｔ４以降も時刻Ｔ１〜Ｔ３と同様、ＣＧ画像と、そのＣＧ画像が生成される元となった撮像画像とが合成される。すなわち、時刻Ｔ４においては撮像画像Ｒ１の認識処理が完了するので、時刻Ｔ４〜Ｔ６においては、撮像画像Ｒ１に対して、撮像画像Ｒ１に基づいて生成されるＣＧ画像Ｖ４〜Ｖ６がそれぞれ合成される。また、時刻Ｔ７においては撮像画像Ｒ２の認識処理が完了するので、時刻Ｔ７においては、撮像画像Ｒ２に対して、撮像画像Ｒ２に基づいて生成されるＣＧ画像Ｖ７が合成される。
【００８８】
以上のように、ゲーム装置１は、ＣＧ画像が生成される元となった撮像画像と、合成画像の生成に用いられる撮像画像とを一致させるので、上述した位置ずれを防止することができる。
【００８９】
次に、認識処理が失敗する場合を考える。カメラでマーカ５２を撮像していても、マーカ５２に反射光が入ったり、光の加減で撮像画像内におけるマーカ５２の色が変わったりする等の原因で、認識処理においてマーカ５２を正しく認識できずに認識に失敗する場合もある。本実施形態においては、ゲーム装置１は、認識に失敗した場合をも考慮して、撮像画像とＣＧ画像とを適切に合成する。
【００９０】
図６は、認識が失敗した場合における合成画像の生成処理を説明するための図である。図６においては、時刻Ｔ４において撮像画像Ｒ１の認識処理が失敗した場合を想定する。この場合、ゲーム装置１は、撮像画像Ｒ１に基づいてＣＧ画像を生成することができない。ここで、仮に（認識が失敗してＣＧ画像を生成できないため）ＣＧ画像を表示しないようにすれば、認識が断続的に失敗した場合、ＣＧ画像がちらついて表示されてしまう。そのため、本実施形態においては、ゲーム装置１は、認識が成功した最新の撮像画像Ｒ０の認識処理結果に基づいてＣＧ画像Ｖ４を生成する。つまり、ゲーム装置１は、認識が失敗したことに応じて即時にＣＧ画像の生成を中止することがないので、ＣＧ画像がちらついて表示されてしまうことを防止することができる。
【００９１】
さらに、本実施形態においては、時刻Ｔ４におけるＣＧ画像Ｖ４は、この時刻Ｔ４において認識処理が完了した最新の撮像画像Ｒ１ではなく、最後に認識が成功した撮像画像Ｒ０に対して合成される（図６参照）。ここで、合成画像を生成する際に、認識が成功する場合（図５における時刻Ｔ４の場合）と同様、認識処理が完了した最新の撮像画像Ｒ１を用いるとすれば、ＣＧ画像Ｖ４を生成する元となった撮像画像と、合成に用いられる撮像画像とが異なることになり、上述した位置ずれが生じるおそれがある。そこで、本実施形態では、認識が失敗した場合には、ゲーム装置１は、認識が成功した最新の撮像画像を用いて合成画像を生成する。これによれば、認識が失敗した場合においても、ＣＧ画像と、そのＣＧ画像が生成される元になった撮像画像とを合成することができるので、位置ずれを防止することができる。
【００９２】
以上のように、本実施形態においては、認識処理が失敗した場合、ゲーム装置１は、前回に成功した認識処理の対象となった撮像画像と、当該認識処理の処理結果を用いて生成されるＣＧ画像とを合成する。これによって、ＣＧ画像がちらついて表示されたり、撮像画像に対してＣＧ画像の位置がずれて表示されたりすることを防止することができるので、合成画像の現実味をより向上することができる。つまり、「ＣＧ画像が実際に存在するかのような感覚を与える」という拡張現実感技術の効果を十分に発揮することができる。
【００９３】
なお、認識処理が失敗した場合、本実施形態では「前回に成功した認識処理の対象となった撮像画像」が合成画像の生成に用いられた。ここで、他の実施形態においては、認識処理が失敗した場合に合成画像の生成に用いられる撮像画像は、以前に成功した認識処理の対象となった撮像画像であればよく、前回に成功した（すなわち、最後に成功した）認識処理の対象となった撮像画像に限らない。
【００９４】
なお、本実施形態においては、最後に認識処理が成功した撮像画像が合成画像に用いられるので、認識が失敗した場合には、１つの撮像画像が長期間表示されることになり、一見すると、表示される合成画像の動画が滑らかでなくなるようにも思われる。しかしながら、本実施形態においては、合成画像のうちのＣＧ画像は認識処理の成功／失敗にかかわらず毎回更新されるので、ＣＧ画像の動画は滑らかに表示される。そのため、ユーザは合成画像全体の動画についても不自然に感じることはなく、違和感を抱くことはないと考えられる。
【００９５】
なお、本実施形態においては、認識処理に要する時間がＣＧ画像の生成間隔よりも長い場合を想定したが、本発明は、認識処理に要する時間がＣＧ画像の生成間隔と同じ（もしくは短い）場合においても、有効である。以下、この場合についても本発明が有効であることを図７を参照して説明する。
【００９６】
図７は、撮像画像の取得間隔および認識処理に要する時間を、ＣＧ画像の生成間隔と同じとした場合における合成処理を示す図である。図７においては、１フレーム時間（ＣＧ画像が生成される単位時間）毎に、撮像画像が取得され、撮像画像に対する認識処理が完了する場合を想定している。
【００９７】
図７においては、時刻Ｔ２において撮像画像Ｒ２の認識に失敗したものとする。ここで、もし仮に時刻Ｔ２において（認識処理に失敗したために）ＣＧ画像を表示しないとすれば、ＣＧ画像がちらついて表示されてしまう。また、もし仮に時刻Ｔ２において撮像画像Ｒ１に基づくＣＧ画像Ｖ１と、撮像画像Ｒ２とを合成するとすれば、撮像画像Ｒ２とＣＧ画像Ｖ１との間で位置ずれが生じるおそれがある。これに対して、本発明によれば、ゲーム装置１は、図６に示す時刻Ｔ４の場合と同様、前回に成功した認識処理の対象となった撮像画像Ｒ１と、当該認識処理の処理結果を用いて生成されるＣＧ画像Ｖ２とを合成する。これによって、上記実施形態と同様、ゲーム装置１は、ＣＧ画像のちらつき、および、撮像画像とＣＧ画像との位置ずれを防止することができる。
【００９８】
［ゲーム処理の詳細］
次に、図８〜図１２を参照して、ゲームプログラムによって実行されるゲーム処理の詳細を説明する。以下では、ゲーム処理によって行われるゲームの例として、プレイヤが操作するプレイヤキャラクタが、図４に示したような大砲５３に弾を命中させるゲームを説明する。具体的には、本ゲームでは、ゲームプログラムによって動作が制御され、向きを変えたり、弾を発射したりする大砲５３がゲーム画像として表示される。また、本ゲームはいわゆる一人称視点のゲームであり、仮想空間における仮想カメラの位置はプレイヤキャラクタの位置としても用いられる。つまり、プレイヤは、ゲーム装置１を動かしてゲーム装置１とマーカ５２との位置関係を変化させることによって、仮想空間内におけるプレイヤキャラクタを移動させることができる。また、プレイヤは、所定の操作を行うことによってプレイヤキャラクタに弾を発射させることができる。本ゲームにおいては、プレイヤは、プレイヤキャラクタを大砲５３の弾に当たらないように移動させながら、大砲５３に弾を命中させて遊ぶ。
【００９９】
まず、ゲーム処理において用いられる各種データについて説明する。図８は、ゲームプログラムによる処理において用いられる各種データを示す図である。図８において、ゲーム装置１のメインメモリ３２には、ゲームプログラム領域６０、撮像画像バッファ領域６２、認識済画像バッファ領域６５、およびゲーム処理データ領域６７が設定される。
【０１００】
ゲームプログラム領域６０は、後述するゲーム処理（図９）をゲーム装置１のＣＰＵ３１に実行させるためのゲームプログラム６１を記憶する領域である。ゲームプログラム６１は、メモリカード２９からその一部または全部が適宜のタイミングで読み込まれることによってメインメモリ３２に記憶される。ゲームプログラム６１には、上述の画像合成処理を実行するためのプログラムや、認識処理を実行するためのプログラムが含まれる。
【０１０１】
撮像画像バッファ領域６２には、カメラによって撮像された撮像画像の画像データ（撮像画像データ）が記憶される。撮像画像バッファ領域６２には、所定個数（例えば３個）の撮像画像データを記憶することが可能である。また、撮像画像バッファ領域６２に記憶される撮像画像データは、認識処理中の撮像画像データを除いて、最も古い撮像画像データが削除されて新たな撮像画像データに更新されるように管理される。具体的には、撮像画像バッファ領域６２には、状態データ６３と撮像画像データ６４とが関連付けられて記憶される。状態データ６３は、それに関連付けられる撮像画像データ６４の状態を示すデータであり、具体的には、「書き込み対象」、「認識処理中」、および「処理可能」のいずれかの状態を示す。
【０１０２】
認識済画像バッファ領域６５には、撮像画像データのうちで、認識処理が成功して完了した撮像画像データ（認識済画像データと呼ぶ）６６が記憶される。すなわち、撮像画像バッファ領域６２に記憶される撮像画像データ６４に対して認識処理が行われ、認識処理が成功した場合、当該撮像画像データ６４は認識済画像バッファ領域６５に記憶される。なお、認識済画像バッファ領域６５には、最新の認識済画像データ６６のみが記憶されればよい。詳細は後述するが、認識済画像バッファ領域６５に記憶される撮像画像データが、ＣＧ画像と合成する合成処理の対象となる。
【０１０３】
ゲーム処理データ領域６７は、ゲーム処理において用いられる各種のデータを記憶するための領域である。ゲーム処理データ領域６７には、認識結果データ６８、プレイヤ位置データ６９、敵オブジェクトデータ７０、表示画像データ７１、および、失敗カウンタデータ７２が記憶される。なお、ゲーム処理データ領域６７には、上記の他、ゲームに登場する各種オブジェクト（上記大砲５３等）に関するデータや、ＢＧＭ等の音声データ等、ゲームに必要な各種データが記憶される。
【０１０４】
認識結果データ６８は、上述の認識処理の処理結果を示すデータであり、具体的には、上述の位置関係を示すデータである。位置関係は、ゲーム装置１およびマーカ５２の一方を基準としたときの他方の３次元位置、あるいは、一方から他方への３次元の方向として表されるので、３次元の座標や３次元のベクトル等によって表される。
【０１０５】
プレイヤ位置データ６９は、仮想空間（ゲーム空間）におけるプレイヤキャラクタの位置を示すデータである。上述のように、本実施形態においては仮想空間における仮想カメラの位置はプレイヤキャラクタの位置としても用いられる。つまり、プレイヤ位置データ６９は、仮想空間における仮想カメラの位置を示すとも言える。プレイヤ位置データ６９は、上記認識結果データ６８に基づいて算出される。
【０１０６】
敵オブジェクトデータ７０は、敵オブジェクト（すなわち、大砲５３）に関する各種パラメータを示すデータである。各種パラメータには、大砲５３の向き、および、プレイヤが弾を命中させた数等を示すパラメータが含まれる。
【０１０７】
表示画像データ７１は、表示装置（上側ＬＣＤ２２）に表示されるゲーム画像のデータである。詳細は後述するが、本ゲーム処理においては、上述した合成画像の他、後述する警告画像、あるいは、撮像画像のデータが表示されることもある。
【０１０８】
失敗カウンタデータ７２は、失敗カウンタを示すデータである。失敗カウンタは、認識処理が連続して失敗する場合において、最初に失敗してからの経過時間を表す。すなわち、認識処理が失敗した場合、ＣＰＵ３１は失敗カウンタのカウントを開始し、その後、認識処理の失敗が連続する間、失敗カウンタのカウントを続ける。
【０１０９】
次に、ゲーム装置１において行われるゲーム処理の詳細を、図９〜図１２を用いて説明する。図９は、ゲーム装置１において実行されるゲーム処理の流れを示すメインフローチャートである。電源ボタン１４Ｆが押下されることによってゲーム装置１の電源が投入されると、ゲーム装置１のＣＰＵ３１は、各種アプリケーションの起動を指示するためのメニュー画面（例えば、各アプリケーションを表す画像（アイコン）を含む画像）を表示する。ユーザは、メニュー画面においてゲームプログラム６１を起動する指示、例えば、ゲームプログラム６１のアイコンを選択する指示を行う。メニュー画面において、ゲームプログラム６１の起動が指示されると、ＣＰＵ３１は、メインメモリ３２等の初期化を行った後、図４に示す処理を行うためのゲームプログラム６１の実行を開始する。本実施形態においては、ゲームプログラム６１の実行によって、ＣＰＵ３１が請求項に記載の各手段として機能することとなる。つまり、ゲームプログラム６１は、請求項に記載の各手段としてＣＰＵ３１を機能させる。
【０１１０】
まずステップＳ１において、ＣＰＵ３１は、撮像画像が取得されたか否かを判定する。すなわち、カメラ（本実施形態では外側カメラ２６）から撮像画像のデータが送られてきたか否かを判定する。なお、本実施形態においては、ステップＳ１〜Ｓ６の処理ループは、１フレーム時間（１／６０秒）に１回の割合で実行されるのに対して、カメラはそれよりも少ない頻度（数フレーム時間に１回程度）で撮像画像を送るものとする。ステップＳ１の判定結果が肯定である場合、ステップＳ２の処理が実行される。一方、ステップＳ１の判定結果が否定である場合、ステップＳ２の処理がスキップされてステップＳ３の処理が実行される。
【０１１１】
ステップＳ２において、ＣＰＵ３１は、ステップＳ１で取得された撮像画像データをメインメモリ３２の撮像画像バッファ領域６２に記憶する。なお、撮像画像バッファ領域６２に記憶可能な数の撮像画像データ６４がすでに記憶されている場合、ＣＰＵ３１は、そのうちの１つを削除し、取得された撮像画像データを新たに記憶（更新）する。ここで、削除される撮像画像データ６４は、それに関連付けられた状態データ６３が「書き込み対象」を示す撮像画像データ６４である。新たな撮像画像データ６４の書き込みが完了すると、ＣＰＵ３１は、当該撮像画像データ６４に関連付けられる状態データ６３を「処理可能」を示すように変更する。また、状態データ６３が「処理可能」を示す撮像画像データ６４のうち、最も古い撮像画像データ６４に関連付けられる状態データ６３を、「書き込み対象」を示すように変更する。以上によって、撮像画像データ６４は、認識処理中の撮像画像データ６４を除いて、最も古い撮像画像データ６４が新たな撮像画像データに更新される。ステップＳ２の次にステップＳ３の処理が実行される。
【０１１２】
ステップＳ３において、ＣＰＵ３１は認識管理処理を実行する。認識管理処理においては、撮像画像に対する認識処理が実行されるとともに、認識処理の結果に応じてデータの更新処理等が実行される。以下、図１０を参照して、認識管理処理の詳細を説明する。
【０１１３】
図１０は、図９に示す認識管理処理（ステップＳ３）の流れを示すフローチャートである。認識管理処理においては、まずステップＳ１１において、ＣＰＵ３１は、認識処理中の撮像画像が存在するか否かを判定する。すなわち、ＣＰＵ３１は、撮像画像バッファ領域６２に記憶されている撮像画像のうちに、認識処理の対象となっている画像が存在するか否かを判定する。この判定は、状態データ６３が「認識処理中」を示す撮像画像データ６４が存在するか否かによって行うことができる。ステップＳ１１の判定結果が肯定である場合、ステップＳ１２の処理が実行される。一方、ステップＳ１１の判定結果が否定である場合、後述するステップＳ１９の処理が実行される。
【０１１４】
ステップＳ１２において、ＣＰＵ３１は、撮像画像に対する認識処理を実行する。ここで、本実施形態において、１つの撮像画像に関して認識結果を算出するまでの一連の認識処理（１回の認識処理）は、１フレーム時間を周期として実行される表示処理とは必ずしも同じ周期で実行されるわけではない。一般的には、１回の認識処理が１フレーム時間で完了することが困難な場合があり、そのような場合、１回のステップＳ１２の処理では、認識処理全体のうちの一部の処理だけが実行される。この場合、１回のステップＳ１２で実行される処理は、ステップＳ１〜Ｓ６の一連の処理が１フレーム時間内に完了することができるような処理量に調整される。
【０１１５】
また、ステップＳ１２の処理において認識処理が完了した場合（すなわち、認識結果が算出された場合）、ＣＰＵ３１は、認識結果のデータをメインメモリ３２に記憶する。具体的には、認識処理が成功した場合、上述の位置関係のデータが認識結果としてメインメモリ３２に記憶される。一方、認識処理が失敗した場合（撮像画像からマーカ５２を認識できなかった場合）、認識失敗を示すデータが認識結果としてメインメモリ３２に記憶される。
【０１１６】
一方、ステップＳ１２の処理において認識処理が完了しなかった場合、ＣＰＵ３１は、残りの認識処理の実行に必要なデータをメインメモリ３２に記憶し、ステップＳ１２の処理を終了する。次にステップＳ１２の処理が実行される際には、メインメモリ３２に記憶されたデータを用いて上記残りの処理が実行される。以上のステップＳ１２の次にステップＳ１３の処理が実行される。
【０１１７】
ステップＳ１３において、ＣＰＵ３１は、１つの撮像画像に対する認識処理が完了したか否かを判定する。すなわち、上記ステップＳ１２において認識処理の処理結果が得られた場合には、ステップＳ１３の判定結果は肯定となり、上記ステップＳ１２において認識処理の処理結果が得られなかった場合には、ステップＳ１３の判定結果は否定となる。ステップＳ１３の判定結果が肯定である場合、ステップＳ１４の処理が実行される。一方、ステップＳ１３の判定結果が否定である場合、ＣＰＵ３１は認識管理処理を終了する。
【０１１８】
ステップＳ１４において、ＣＰＵ３１は、ステップＳ１２で実行した認識処理の処理結果が成功であるか否かを判定する。ステップＳ１４の判定は、ステップＳ１２の終了時にメインメモリ３２に記憶される認識結果のデータを参照して行うことができる。ステップＳ１４の判定結果が否定である場合、ステップＳ１５の処理が実行される。一方、ステップＳ１４の判定結果が肯定である場合、後述するステップＳ１６の処理が実行される。
【０１１９】
ステップＳ１５において、ＣＰＵ３１は、失敗カウンタをカウントする。すなわち、失敗カウンタデータ７２が示す失敗カウンタの値を１だけ加算し、加算した値を示すデータを新たな失敗カウンタデータ７２としてメインメモリ３２に記憶する。これによって、認識処理が失敗してからの経過時間を測定することができる。ステップＳ１５の次に、後述するステップＳ１９の処理が実行される。
【０１２０】
ステップＳ１６〜Ｓ１８においては、認識処理が成功した場合に必要となるデータの更新処理等が実行される。ステップＳ１６において、ＣＰＵ３１は、上記ステップＳ１２で認識処理が完了した撮像画像を合成処理の対象に設定する。具体的には、ＣＰＵ３１は、認識処理が完了した撮像画像データ６４を、認識済画像バッファ領域６５に認識済画像データ６６として新たに記憶する。これによって、認識済画像データ６６が更新される。なお、認識処理が完了した撮像画像データ６４は、撮像画像バッファ領域６２に記憶されている撮像画像データ６４のうち、状態データ６３が「認識処理中」である撮像画像データ６４である。詳細は後述するが、認識済画像バッファ領域６５に記憶される認識済画像データ６６が、ＣＧ画像と合成する対象となる。ステップＳ１６の次にステップＳ１７の処理が実行される。
【０１２１】
ステップＳ１７において、ＣＰＵ３１は、メインメモリ３２に記憶されている認識結果データ６８を更新する。すなわち、上記ステップＳ１２で記憶された認識結果を示すデータが、新たな認識結果データ６８としてメインメモリ３２に記憶される。ステップＳ１７の次にステップＳ１８の処理が実行される。
【０１２２】
ステップＳ１８において、ＣＰＵ３１は失敗カウンタをリセットする。すなわち、メインメモリ３２に記憶される失敗カウンタデータ７２の値が０に設定される。ステップＳ１８の次にステップＳ１９の処理が実行される。
【０１２３】
ステップＳ１９において、ＣＰＵ３１は、次に認識処理を実行する対象となる撮像画像を決定する。ここで、認識処理の新たな対象となる撮像画像データは、撮像画像バッファ領域６２に格納されている撮像画像データ６４のうち、状態データ６３が「処理可能」を示す、最も新しい撮像画像データ６４である。ＣＰＵ３１は、認識処理の対象となる撮像画像データ６４に関連付けられる状態データ６３を「認識処理中」を示すように変更する。これによって、次回に実行されるステップＳ１２では、状態データ６３が「認識処理中」へと変更された撮像画像データ６４に対して認識処理が実行される。また、ＣＰＵ３１は、「認識処理中」を示す状態データ６３が複数存在することを避けるため、ステップＳ１９の前から「認識処理中」を示していた状態データ６３を「書き込み対象」を示すように変更する。ステップＳ１９の後、ＣＰＵ３１は認識管理処理を終了する。
【０１２４】
なお、上記ステップＳ１９によれば、１回の認識処理が終了すると、取得された撮像画像のうちで最新の撮像画像に対して次の認識処理が実行される。そのため、最新でない撮像画像は、認識処理が行われずに破棄されることもある。ここで、取得された撮像画像の全てについて認識処理を順次実行するとすれば、１回の認識処理に要する時間が撮像画像の取得間隔よりも長い場合には、認識処理が完了して表示対象となった撮像画像が次第に蓄積されていってしまう。つまり、表示される撮像画像は、実時間に対して次第に遅れていってしまうおそれがある。これに対して、本実施形態によれば、最新でない撮像画像については認識処理を行わないようにすることによって、表示される撮像画像の遅延が蓄積していくことを防止することができる。
【０１２５】
上記の認識管理処理によれば、撮像画像に対する認識処理が終了し、認識が成功した場合（ステップＳ１３およびＳ１４でＹＥＳ）、その撮像画像は合成処理（後述するステップＳ３５）の対象に設定される（ステップＳ１６）。つまり、認識処理が成功した撮像画像を用いて合成画像が生成される。一方、認識が失敗した場合（ステップＳ１４でＹＥＳ）にはステップＳ１６の処理は実行されないので、その撮像画像は合成処理の対象とされない。したがって、認識が失敗した場合には、合成処理の対象となる撮像画像は変更されず、合成処理においては前回と同じ撮像画像が用いられる。つまり、認識が失敗した場合には、前回に成功した認識処理の対象となった撮像画像が引き続き合成処理に用いられる。また、認識管理処理において、認識処理が終了しなかった場合もステップＳ１６の処理が実行されないので、合成処理の対象となる撮像画像は変更されず、合成処理においては前回と同じ撮像画像が用いられる。したがって、合成処理においては、認識処理が終了するまでは前回と同じ撮像画像（すなわち、前回に成功した認識処理の対象となった撮像画像）が用いられる。
【０１２６】
図９の説明に戻り、認識管理処理（ステップＳ３）の次のステップＳ４において、ＣＰＵ３１はゲーム制御処理を実行する。ゲーム処理においては、プレイヤによるゲーム入力等に基づいて仮想空間内のオブジェクトの動作が制御される。以下、図１１を参照して、ゲーム制御処理の詳細を説明する。
【０１２７】
図１１は、図９に示すゲーム制御処理（ステップＳ４）の流れを示すフローチャートである。ゲーム制御処理においては、まずステップＳ２１において、ＣＰＵ３１は、失敗カウンタの値が所定の第１閾値Ｎ１よりも大きいか否かを判定する。すなわち、ＣＰＵ３１は、メインメモリ３２に記憶されている失敗カウンタデータ７２を読み出し、失敗カウンタデータ７２の値と第１閾値Ｎ１とを比較する。なお、第１閾値Ｎ１は予め定められており、ゲームの内容等に応じて適切な値に設定される。ここで、失敗カウンタの値は、認識処理が連続して失敗する場合において、最初に失敗してからの経過時間を表す。つまり、ステップＳ２１の判定処理は、認識処理が所定時間の間連続して失敗したか否かを判定するための処理である。ステップＳ２１の判定結果が否定である場合、ステップＳ２２の処理が実行される。一方、ステップＳ２１の判定結果が肯定である場合、後述するステップＳ２５の処理が実行される。
【０１２８】
ステップＳ２２において、ＣＰＵ３１は、プレイヤによるゲーム操作の入力を受け付ける。具体的には、ＣＰＵ３１は、タッチパネル１３の入力面に対して入力が行われた位置を示すタッチ位置データを取得するとともに、各操作ボタン１４Ａ〜１４Ｋに対する入力状況（押下されたか否か）を示す操作データを取得する。ステップＳ２２の次にステップＳ２３の処理が実行される。
【０１２９】
ステップＳ２３において、ＣＰＵ３１は、入力に基づくゲーム制御を行う。ここで、本実施形態においては、上記ステップＳ２２で受け付けられた、入力装置（タッチパネル１３および各操作ボタン１４Ａ〜１４Ｋ）に対する入力だけでなく、認識結果データ６８もゲーム入力として用いられる。具体的には、ＣＰＵ３１は、認識結果データ６８に基づいてプレイヤキャラクタの位置（および姿勢）を算出する。本実施形態においては、プレイヤキャラクタの位置および姿勢は、仮想カメラの位置および姿勢と同じである。つまり、プレイヤキャラクタの位置は、大砲５３に対するプレイヤキャラクタの位置が、認識結果データ６８が示す位置関係（ゲーム装置１とマーカ５２との現実空間の位置関係）に応じた位置となるように算出される。また、プレイヤキャラクタの姿勢（仮想カメラの姿勢）は、表示画面上におけるマーカ５２の位置に大砲５３が表示されるように算出される。より具体的な処理としては、ＣＰＵ３１は、認識結果データ６８をメインメモリ３２から読み出し、認識結果データ６８に基づいてプレイヤキャラクタの位置を算出し、算出した位置を示すデータをプレイヤ位置データ６９としてメインメモリ３２に記憶する。また、入力装置に対する入力に応じた動作としては、ＣＰＵ３１は、例えば、所定のボタンが押下されたことに応じてプレイヤキャラクタから弾を発射する処理を行う。ステップＳ２３の次にステップＳ２４の処理が実行される。
【０１３０】
ステップＳ２４において、ＣＰＵ３１は、ステップＳ２３で実行される処理以外の他のゲーム制御を行う。ステップＳ２４で実行される処理としては、例えば、大砲５３の動作（大砲５３の向きを変えたり弾を発射したりする動作）の制御、各オブジェクトが弾に当たったか否かの判定、および、得点の計算等の処理が考えられる。なお、大砲５３に関するパラメータ（大砲５３の向き等を示すパラメータ）を示すデータは、敵オブジェクトデータ７０としてメインメモリ３２に記憶される。ステップＳ２４の後、ＣＰＵ３１は図１１に示すゲーム制御処理を終了する。
【０１３１】
一方、ステップＳ２５において、ＣＰＵ３１はゲームを中断する。ここで、ステップＳ２５が実行される場合とは、認識処理が所定時間の間連続して失敗した場合である。詳細は後述するが、認識処理が所定時間の間連続して失敗した場合（失敗カウンタの値が第１閾値Ｎ１以上となった場合）、認識が成功していないことを表す警告画像が合成画像に代えて表示される（後述するステップＳ３４）。警告画像が表示される場合にはゲームを進行することができないので、ＣＰＵ３１は、ステップＳ２５においてゲーム進行を中断する。ステップＳ２５の後、ＣＰＵ３１は図１１に示すゲーム制御処理を終了する。
【０１３２】
上記ゲーム制御処理によれば、認識処理の処理結果がゲーム入力として用いられる。すなわち、仮想空間に登場するオブジェクト（プレイヤキャラクタ）の動作が認識結果データ６８に基づいて制御される（ステップＳ２３）。これによれば、プレイヤは、ゲーム装置１を動かす（あるいはプレイヤ自身が移動する）ことによって、プレイヤキャラクタを移動させることができる。したがって、本実施形態においては、現実空間を表す撮像画像に仮想空間のオブジェクト（大砲５３）が合成されたゲーム画像が表示され（図４）、さらに、現実空間におけるゲーム装置１の位置が仮想空間のオブジェクト（プレイヤキャラクタ）の位置に反映される。これによって、あたかも仮想オブジェクトが存在するかのような現実空間においてプレイヤ自身が実際に動いて遊ぶという、拡張現実感技術を用いた新規なゲームを提供することができる。
【０１３３】
図９の説明に戻り、ゲーム制御処理（ステップＳ４）の次のステップＳ５において、ＣＰＵ３１は、上述の合成画像や警告画像等を生成して表示する表示処理を実行する。以下、図１２を参照して、表示処理の詳細を説明する。
【０１３４】
図１２は、図９に示す表示処理（ステップＳ５）の流れを示すフローチャートである。表示処理においては、まずステップＳ３１において、ＣＰＵ３１は、失敗カウンタの値が所定の第２閾値Ｎ２よりも大きいか否かを判定する。すなわち、ＣＰＵ３１は、メインメモリ３２に記憶されている失敗カウンタデータ７２を読み出し、失敗カウンタデータ７２の値と第２閾値Ｎ２とを比較する。なお、第２閾値Ｎ２は第１閾値Ｎ１よりも大きく、ゲームの内容等に応じて適切な値に予め設定される。ステップＳ３１の判定処理は、第２閾値Ｎ２に相当する所定時間の間、認識処理が連続して失敗したか否かを判定するための処理である。ステップＳ３１の判定結果が肯定である場合、ステップＳ３２の処理が実行される。一方、ステップＳ３１の判定結果が否定である場合、後述するステップＳ３３の処理が実行される。
【０１３５】
ステップＳ３２において、ＣＰＵ３１は、撮像画像を表示装置（上側ＬＣＤ２２）に表示させる。具体的には、ＣＰＵ３１は、カメラから送られてくる撮像画像データを上側ＬＣＤ２２に表示させる。このように、失敗カウンタが第２閾値Ｎ２以上である場合には、撮像画像のみが表示され、ＣＧ画像は合成されない。ステップＳ３２の後、ＣＰＵ３１は表示処理を終了する。
【０１３６】
一方、ステップＳ３３において、ＣＰＵ３１は、失敗カウンタの値が所定の第１閾値Ｎ１よりも大きいか否かを判定する。ステップＳ３３の処理は上述のステップＳ２１の処理と同じである。ステップＳ３３の判定結果が肯定である場合、ステップＳ３４の処理が実行される。一方、ステップＳ３３の判定結果が否定である場合、後述するステップＳ３５の処理が実行される。
【０１３７】
ステップＳ３４において、ＣＰＵ３１は、警告画像を表示装置（上側ＬＣＤ２２）に表示させる。警告画像は、マーカ５２の認識が所定期間連続して失敗していることをプレイヤに警告するための画像である。警告画像はどのような画像であってもよいが、撮像画像とは異なる、あるいは、撮像画像を含まない画像であることが好ましい。本実施形態においては、警告画像として、いわゆる砂嵐の画像（「マーカが認識されていません」等の文字を含んでもよい）が表示される。ＣＰＵ３１は、ゲームプログラム６１において予め用意される動画あるいは静止画を警告画像として用いてもよい。ステップＳ３４の後、ＣＰＵ３１は表示処理を終了する。
【０１３８】
一方、ステップＳ３５において、ＣＰＵ３１は、撮像画像とＣＧ画像とを合成した合成画像を生成する。ここで、合成に用いられる撮像画像データは、認識済画像バッファ領域６５に記憶されている撮像画像データ（認識済画像データ６６）である。つまり、本実施形態においては、認識処理が成功した最新の撮像画像（前回に認識処理が成功した撮像画像）が合成画像の生成に用いられる。生成された合成画像のデータは、表示画像データ７１としてメインメモリ３２に記憶される。
【０１３９】
なお、本実施形態においては、合成画像は、仮想空間の画像の背景として撮像画像を用いる方法によって生成される。すなわち、ＣＰＵ３１は、仮想空間における（仮想カメラから見て）大砲５３の後方に背景のオブジェクトを配置しておき、仮想カメラの位置から仮想カメラの方向に大砲５３を見た場合の仮想空間の画像を生成する際、背景オブジェクトのテクスチャとして撮像画像を用いる。これによって、撮像画像の上に大砲５３のＣＧ画像が合成された合成画像を生成することができる。なお、仮想カメラの位置および姿勢は、上述のステップＳ２３でプレイヤキャラクタの位置および姿勢として算出されている。また、大砲５３の動作（大砲５３の向き等）は、上述のステップＳ２４で算出されている。なお、他の実施形態においては、ＣＰＵ３１は、まずＣＧ画像を生成し、その後、撮像画像に対してＣＧ画像を合成することによって合成画像を生成してもよい。ステップＳ３５の次にステップＳ３６の処理が実行される。
【０１４０】
ステップＳ３６において、ＣＰＵ３１は、失敗カウンタの値が所定の第３閾値Ｎ３よりも大きいか否かを判定する。すなわち、ＣＰＵ３１は、メインメモリ３２に記憶されている失敗カウンタデータ７２を読み出し、失敗カウンタデータ７２の値と第３閾値Ｎ３とを比較する。第３閾値Ｎ３は第１閾値Ｎ１よりも小さく、ゲームの内容等に応じて適切な値に予め設定される。ステップＳ３６の判定処理は、第３閾値Ｎ３に相当する所定時間の間、認識処理が連続して失敗したか否かを判定するための処理である。ステップＳ３６の判定結果が肯定である場合、ステップＳ３７の処理が実行される。一方、ステップＳ３６の判定結果が否定である場合、ステップＳ３７の処理がスキップされてステップＳ３８の処理が実行される。
【０１４１】
ステップＳ３７において、ＣＰＵ３１は、合成画像に対して、失敗カウンタの値に応じた割合で警告画像をさらに合成する。合成画像と警告画像との合成方法はどのような方法であってもよいが、一般的なアルファブレンド処理による方法を用いることができる。このとき、ＣＰＵ３１は、警告画像の透明度を表すアルファ値を、失敗カウンタの値が“Ｎ３”の場合に１００％となり、失敗カウンタの値が“Ｎ１”の場合に０％となり、失敗カウンタの値が“Ｎ３”から“Ｎ１”へ増加するに従って透明度が小さくなるように決定する。そして、決定されたアルファ値に従って合成画像と警告画像とを合成する。以上のステップＳ３７の処理によって、時間の経過に従って（失敗カウンタの値の増加に従って）警告画像が次第に濃くなり、合成画像が薄くなる画像を生成することができる。ステップＳ３７で生成された画像データは、表示画像データ７１としてメインメモリ３２に記憶される。ステップＳ３７の次にステップＳ３８の処理が実行される。
【０１４２】
ステップＳ３８において、ＣＰＵ３１は、合成画像を表示装置（上側ＬＣＤ２２）に表示させる。具体的には、ＣＰＵ３１は、表示画像データ７１をメインメモリ３２から読み出して上側ＬＣＤ２２に表示させる。これによって、撮像画像に対してゲームオブジェクト（大砲５３）のＣＧ画像が合成されたゲーム画像（図４）が表示される。
【０１４３】
なお、ステップＳ３８において、認識処理が成功している場合、および、失敗カウンタの値が上記第３閾値Ｎ３より小さい場合には、ステップＳ３５で生成された合成画像がそのまま表示される。一方、失敗カウンタの値が上記第３閾値Ｎ３以上である場合には、合成画像と警告画像とが合成された画像が表示される。また、警告画像の透明度は失敗カウンタの値に応じて変化するので、失敗カウンタの値が上記第３閾値Ｎ３以上である場合には、時間の経過に従って警告画像が次第に濃く（合成画像が薄く）なるゲーム画像が表示される。上記ステップＳ３８の後、ＣＰＵ３１は表示処理を終了する。
【０１４４】
上記表示処理によれば、認識処理が成功している場合（ステップＳ３１，Ｓ３３，Ｓ３６でＮｏ）には、合成画像が表示される。また、認識処理が失敗した場合でも、第３閾値Ｎ３に相当する時間だけ連続して失敗するまでは、ステップＳ３１，Ｓ３３，およびＳ３６の判定結果は否定となるので、合成画像が表示される。その後、認識処理の失敗の時間が第３閾値Ｎ３に相当する時間を超えると、ステップＳ３６の判定結果が肯定となるので、合成画像に警告画像（砂嵐の画像）が合成された画像が表示される。そして、時間が経過するに従って警告画像が濃く表示されていく（ステップＳ３７）。さらに、認識処理の失敗の時間が第１閾値Ｎ１に相当する時間を超えると、ステップＳ３３の判定結果が肯定となるので、警告画像のみが表示される。また、警告画像が表示されるタイミングでゲームが中断される（ステップＳ２５）。したがって、上記表示処理によれば、認識処理が失敗した場合でも即座にＣＧ画像が表示されなくなるわけではないので、ＣＧ画像がちらついて表示されることがない。また、認識処理の失敗が所定時間以上連続する場合には、警告画像が表示されるので、認識処理が失敗していることをプレイヤに通知することができる。
【０１４５】
なお、警告画像として（ＣＧ画像を含まない）撮像画像を表示することも考えられる。警告画像として撮像画像を表示すると、プレイヤには仮想オブジェクトが消えたように見える。しかし、ゲームの進行によって仮想オブジェクトが表示されなくなる場合（例えば、仮想オブジェクトを破壊した場合）も考えられ、この場合、プレイヤにとっては、認識に失敗したのかどうかの判断がつきにくくなる。これに対して、本実施形態によれば、警告画像として撮像画像とは異なる画像を表示するので、認識処理が失敗していることをより確実にプレイヤに通知することができる。さらに、本実施形態では、警告画像は時間の経過に従って次第に濃くなるように表示されるので、警告画像が急に表示される場合に比べてプレイヤに与える違和感を軽減して通知を行うことができる。なお、他の実施形態においては、ＣＰＵ３１は、認識処理が連続して失敗した場合、警告画像を表示せずに撮像画像を表示するようにしてもよい。すなわち、図１２に示す表示処理において、ＣＰＵ３１は、上記ステップＳ３３およびＳ３４の処理を省略するようにしてもよい。これによっても、上記実施形態と同様、認識処理が失敗していることをプレイヤに通知することができる。
【０１４６】
さらに、上記表示処理によれば、警告画像が表示された後、認識処理の失敗の時間が第２閾値Ｎ２に相当する時間を超えると、ステップＳ３１の判定結果が肯定となるので、撮像画像のみが表示される。これは、警告画像を表示し続けると、プレイヤはゲーム装置１が撮像している画像を把握できないため、マーカ５２を正しく撮像することができなくなるからである。すなわち、本実施形態では、警告画像が表示されてゲームが中断された後は、プレイヤがマーカ５２を正しく撮像できるようにゲーム装置１の向きを修正しやすくする目的で、撮像画像を表示するようにしている。
【０１４７】
図９の説明に戻り、表示処理（ステップＳ５）の次のステップＳ６において、ＣＰＵ３１は、ゲームを終了するか否かを判定する。ステップＳ６の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ６の判定結果が否定である場合、ステップＳ１の処理が再度実行される。以降、ステップＳ６でゲームを終了すると判定されるまで、ステップＳ１〜Ｓ６の処理ループが繰り返し実行される。一方、ステップＳ６の判定結果が肯定である場合、ＣＰＵ３１は、図９に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【０１４８】
以上のように、上記ゲーム処理によれば、撮像画像に対する認識処理が成功した場合には、その撮像画像は認識済画像バッファ領域６５に記憶されて（ステップＳ１６）合成画像に用いられる（ステップＳ３５）。このとき、合成されるＣＧ画像は、成功した認識結果に基づいて生成される。一方、認識処理が失敗した場合には、その撮像画像は合成画像に用いられず、認識済画像バッファ領域６５には前の撮像画像が維持される。したがって、認識処理が失敗した場合には、前回に認識処理が成功した撮像画像を用いて合成画像が生成されて表示される。また、合成されるＣＧ画像も、前回に認識処理が成功したときの認識結果に基づいて生成される。これによれば、認識失敗が断続的に起こったとしてもＣＧ画像がちらついて表示されることがなく、また、撮像画像とＣＧ画像との位置ずれが生じることもない。したがって、本実施形態によれば、より現実感の高い合成画像を生成して表示することができる。
【０１４９】
また、上記ゲーム処理においては、表示される仮想オブジェクト（大砲５３）の動作を制御する処理（ステップＳ２４）は毎フレーム実行される。認識が成功した場合だけでなく、失敗した場合であっても一定期間（ステップＳ３３でＮｏとなる間）は仮想オブジェクトの画像が撮像画像に合成されて表示される。これによって、仮想オブジェクトの動作は毎フレーム更新されて動画として表示されることになる。そのため、撮像画像が毎フレーム更新されない場合でも、動画のコマ数が少ない印象をプレイヤに与えることなく、合成画像として滑らかな動画を表示することができる。
【０１５０】
なお、上記ゲーム処理においては、仮想オブジェクトの動作は毎フレーム更新される（ステップＳ２４）のに対して、仮想オブジェクトの表示位置（仮想カメラの位置および姿勢）を決定する処理（ステップＳ２３）は、認識が成功した場合に更新される（ステップＳ１７）認識結果データを用いて行われる。したがって、本実施形態によれば、仮想オブジェクトの動作を毎フレーム更新される滑らかな動画として表示しつつ、撮像画像と仮想オブジェクトの画像との位置ずれを防止することができる。
【０１５１】
また、上記ゲーム処理によれば、第１閾値Ｎ１に相当する所定時間の間、認識処理が連続して失敗した場合、警告画像が表示される他、ゲームが中断される（ステップＳ２５）。つまり、本実施形態では、警告画像が表示されることに応じて、ゲームの進行が中断される。ここで、本実施形態においては、認識が失敗してもＣＧ画像が表示されるので、認識が失敗しても即座にゲームを中断する必要はない。また、認識が失敗したことに応じてゲームを中断するようにすると、ゲームが頻繁に中断されてしまうおそれがある。そのため、本実施形態では、認識が失敗してもゲームを継続するようにしている。ただし、認識が失敗している間は、認識結果をゲーム入力として用いることができないので、認識が失敗した後でもずっとゲームが継続されると、プレイヤはゲーム操作を行えないためにゲームに支障が出る。そこで、本実施形態では、認識が失敗してから一定時間が経過した場合、ゲームを中断するようにしている。また、警告画像が表示されることに応じてゲームを中断するので、合成画像が表示されなくなるタイミングでゲームを中断することができ、プレイヤに違和感を与えることなくゲームを中断させることができる。
【０１５２】
なお、他の実施形態においては、ＣＰＵ３１は、認識が失敗したタイミングでゲームを中断するようにしてもよい。例えば、認識結果をゲーム入力として用いるゲームであって、シビアなゲーム操作が要求されるゲームにおいては、認識が失敗したことに応じてゲームを中断することが考えられる。また、上記ゲーム処理のように、警告画像を次第に濃く表示していく場合には、ＣＰＵ３１は、警告画像が合成画像に対して所定の割合で合成されたことに応じてゲームを中断するようにしてもよい。すなわち、上記ゲーム処理においては、ＣＰＵ３１は、失敗カウンタの値が第１閾値Ｎ１と第３閾値Ｎ３との間の所定値となった場合にゲームを中断してもよい。
【０１５３】
［変形例］
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【０１５４】
（画像処理プログラムに関する変形例）
上記実施形態においては、画像表示プログラムの例としてゲームプログラムを挙げて説明したが、本発明は、ゲームプログラム以外にも、拡張現実感技術を用いる任意の画像表示プログラムに利用することが可能である。
【０１５５】
（ゲームに関する変形例）
また、上記実施形態においては、ゲームプログラムによって実行されるゲームの例として、敵オブジェクト（大砲５３）が表示される一人称視点のゲームについて説明したが、本発明は、拡張現実感技術を用いてゲーム画像を表示する任意のゲームのためのゲームプログラムに利用することが可能である。例えば、上記実施形態では、画面に表示されない仮想オブジェクト（プレイヤキャラクタ）の動作が認識結果に基づいて制御された。ここで、他の実施形態では、ゲーム装置１は、認識結果に基づいて、画面上に表示される仮想オブジェクトの動作を制御するようにしてもよい。例えば、ゲームプログラムによって実行されるゲームとしては、次の例が考えられる。
・画面上の仮想オブジェクトの位置が上記認識結果に基づいて決定されるゲーム
ゲーム装置１とマーカ５２との位置関係（認識結果）に応じて仮想空間内における位置が決定されるクレーンのオブジェクトが登場し、プレイヤは、クレームのオブジェクトを操作して仮想空間内に配置される他のオブジェクトを釣り上げて遊ぶ。
・画面上の仮想オブジェクトの移動方向が上記処理結果に基づいて決定されるゲーム
ビリヤードのゲームであって、仮想オブジェクトとしてビリヤードの玉が配置され、プレイヤは、上記認識結果に基づいて決定される仮想カメラの視線方向に玉を突くことができる（つまり、玉の移動方向がゲーム装置１とマーカ５２との位置関係によって制御される）。
【０１５６】
（警告画像を表示する条件に関する変形例）
上記実施形態では、ゲーム装置１は、認識処理が所定時間連続して失敗したことを条件として、警告画像を表示するようにした。ここで、他の実施形態では、ゲーム装置１は、カメラ（ゲーム装置１）の動きを検知して、カメラが所定の基準以上動いていることが検知されたことを条件として、警告画像を表示するようにしてもよい。以下、カメラの動きを検知して警告画像を表示する変形例の詳細について説明する。
【０１５７】
図１３は、本実施形態における表示処理（ステップＳ５）の変形例を示すフローチャートである。なお、図１３においては、図１２と同じ処理については図１２と同じステップ番号を付し、詳細な説明を省略する。
【０１５８】
図１３においては、ステップＳ３３の判定結果が肯定である場合、ステップＳ４１の処理が実行される。ステップＳ４１において、ＣＰＵ３１は、カメラ（ゲーム装置１）の動きを検知する。ここで、動きを検知する方法はどのような方法でもよいが、例えば、ゲーム装置１が加速度センサあるいはジャイロセンサを備える場合には、ＣＰＵ３１はこれらのセンサによる検知結果を取得する。また、ＣＰＵ３１は、撮像画像から所定の対象（マーカとは別の物であってもよい）を認識し、撮像画像内における当該所定の対象の動きからカメラの動きを算出するようにしてもよい。ステップＳ４１の次にステップＳ４２の処理が実行される。
【０１５９】
ステップＳ４２において、ＣＰＵ３１は、カメラ（ゲーム装置１）の動きが所定の基準以上であるか否かを判定する。所定の基準としては、カメラの加速度（各速度）が所定値以上であることや、カメラの（単位時間当たりの）移動量が所定値以上であること等が考えられる。ステップＳ４２判定結果が肯定である場合、ステップＳ３４の処理が実行される。一方、ステップＳ４２の判定結果が否定である場合、ステップＳ３５の処理が実行される。
【０１６０】
以上より、図１３に示す変形例においては、カメラの動きが所定の基準よりも激しい場合、警告画像が表示され（ステップＳ３４）、カメラの動きが所定の基準よりも緩やかである場合、合成画像が引き続き表示される。ここで、カメラが激しく動いた場合には、マーカ５２が撮像範囲から外れて認識ができなくなっている可能性が高いと推測することができ、逆に、カメラがあまり動いていない場合には、マーカ５２が撮像範囲内にあり、認識が再度成功する可能性があると推測することができる。したがって、本変形例によれば、認識が失敗した場合において、その後認識が再度成功する（認識の失敗が一時的なものである）と推測される場合には合成画像が引き続き表示され、認識が再度成功する見込みが少ない場合には警告画像が表示される。これによって、警告画像をより適切な状況で表示させることができる。
【０１６１】
なお、上記変形例においては、図示しないが、ゲーム制御処理（ステップＳ４）におけるゲーム中断処理（ステップＳ２５）は、警告画像が表示されることに応じて行われることが好ましい。すなわち、ゲーム制御処理において、ＣＰＵ３１は、ステップＳ２１の判定結果が肯定である場合には図１３と同様のステップＳ４１およびＳ４２を実行し、ステップＳ４２の判定結果が肯定の場合にステップＳ２５を実行するようにしてもよい。
【０１６２】
また、上記変形例においては、認識が失敗となった場合にすぐにステップＳ４１およびＳ４２の処理が実行されるようにしてもよい。すなわち、第１閾値Ｎ１は“１”あるいは非常に小さい値に設定されてもよい。また、上記変形例においては、撮像画像を表示するステップＳ３２の処理は、警告画像が表示された後、警告画像が表示されてから所定時間が経過したことを条件として実行されてもよい。
【０１６３】
以上のように、上記変形例によれば、カメラ（ゲーム装置１）の動きを検知することによって、認識の失敗が一時的なものであるか否かを判断することができ、警告画像を表示するタイミングを適切に決定することができる。
【０１６４】
（ゲームシステムに関する変形例）
上記実施形態においては、合成画像を生成・表示するための一連の処理が単一の装置（ゲーム装置１）において実行される場合を説明したが、他の実施形態においては、一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、端末側の装置がカメラによって撮像画像を取得し、取得された撮像画像のデータをサーバ側装置へ送信する。撮像画像のデータを受信したサーバ側装置は、認識処理（上記実施形態で言えば、ステップＳ３の認識管理処理）およびゲーム処理（上記実施形態で言えば、ステップＳ４のゲーム制御処理）を実行し、ゲーム処理の結果のデータを端末側装置へ送信する。ゲーム処理の結果のデータは、例えば、ゲーム画像のデータ、あるいは、ゲーム画像の生成に必要なデータである。端末側装置は、ゲーム処理の結果のデータを受信し、当該データに基づいて合成画像等のゲーム画像を表示装置に表示する。このように、本発明は、複数の情報処理装置からなる情報処理システムによって実現されてもよい。
【産業上の利用可能性】
【０１６５】
以上のように、本発明は、拡張現実感技術において仮想画像をより現実味を増して表示すること等を目的として、例えばゲームプログラムやゲーム装置として利用することが可能である。
【符号の説明】
【０１６６】
１          ゲーム装置
１３        タッチパネル
２２        上側ＬＣＤ
２５        外側カメラ
３１        ＣＰＵ
３２        メインメモリ
５２        マーカ
５３        大砲（仮想オブジェクト）
６１        ゲームプログラム
６４        撮像画像データ
６６        認識済画像データ
６８        認識結果データ
６９        プレイヤ位置データ
【図１】
0005496991.tif 000002
【図２】
0005496991.tif 000003
【図３】
0005496991.tif 000004
【図４】
0005496991.tif 000005
【図５】
0005496991.tif 000006
【図６】
0005496991.tif 000007
【図７】
0005496991.tif 000008
【図８】
0005496991.tif 000009
【図９】
0005496991.tif 000010
【図１０】
0005496991.tif 000011
【図１１】
0005496991.tif 000012
【図１２】
0005496991.tif 000013
【図１３】
0005496991.tif 000014