"情報処理装置のコンピュータを、撮像手段から画像を取得する画像取得手段、前記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出手段、前記一連のエッジ画素に基づいて複数の直線を生成する直線生成手段、前記複数の直線に基づいて前記輪郭の頂点を検出する頂点検出手段、前記頂点に基づいて前記撮像手段と前記物体との相対的な位置および姿勢を算出する位置姿勢算出手段、前記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定手段、および前記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御手段として機能させる、画像処理プログラム。前記直線生成手段は、同一直線上の互いに離間した複数の直線を1つの直線へと統合する直線統合手段を含む、請求項1に記載の画像処理プログラム。前記直線生成手段は、前記一連のエッジ画素のうちの一部のエッジ画素が同一直線上にあるか否かを判定する第1判定手段、および前記第1判定手段によって同一直線上にあると判定された一部のエッジ画素に基づいて直線を算出する直線算出手段を含む、請求項1または請求項2に記載の画像処理プログラム。前記直線算出手段は、前記第1判定手段によって同一直線上にあると判定された複数のエッジ画素に基づいて、最小自乗法により各直線を算出する、請求項3に記載の画像処理プログラム。前記直線生成手段は、前記一連のエッジ画素のうちのいずれか1つのエッジ画素を起点として、時計回りまたは反時計回りに直線を生成または更新する処理を繰り返し実行することによって、前記一連のエッジ画素に基づいて複数の直線を生成する、請求項1または2に記載の画像処理プログラム。前記直線生成手段は、時計回りまたは反時計回りに直線を生成または更新する処理を実行できるか否かを判定する手段を含み、前記直線を生成または更新する処理を実行できない場合に、当該直線を生成または更新する処理を実行してきた時計回りまたは反時計回りとは逆方向に直線を生成または更新する処理を繰り返し実行する、請求項5に記載の画像処理プログラム。前記直線生成手段は、前記起点のエッジ画素と、当該起点のエッジ画素から時計回りまたは反時計回りのいずれか一方向に連なる所定数のエッジ画素とに基づいて最初の直線を生成する手段、すでに生成または更新された直線の方向と、当該直線から前記いずれか一方向に連なる所定数のエッジ画素に基づく仮直線の方向とを比較する比較手段、前記比較手段によって、前記直線と前記仮直線とが同一直線上であると判定された場合に、前記直線および前記仮直線に対応する複数のエッジ画素に基づいて前記直線を更新する手段、前記比較手段によって、前記直線と前記仮直線とが同一直線上ではなく、かつ前記直線と前記仮直線の交点付近に対応する前記輪郭の頂点が凸角であると判定された場合に、前記仮直線に基づいて新たな直線を生成する手段、および前記比較手段によって、前記直線と前記仮直線とが同一直線上ではなく、かつ前記直線と前記仮直線の交点に対応する前記輪郭の頂点が凹角であると判定された場合に、前記基点のエッジ画素から時計回りまたは反時計回りのいずれか他方向に向かって直線を生成および更新する処理を開始する手段を含む、請求項5に記載の画像処理プログラム。前記画像処理プログラムは、前記コンピュータを、前記直線生成手段によって生成された複数の直線から、所定数の直線を選出する直線選出手段としてさらに機能させ、前記頂点検出手段は、前記直線選出手段によって選出された前記所定数の直線の交点を、前記輪郭の頂点として検出する、請求項1~請求項7のいずれか1項に記載の画像処理プログラム。前記直線選出手段は、前記直線生成手段によって生成された複数の直線から、長さがより長い所定数の直線を選出することを特徴とする、請求項8に記載の画像処理プログラム。撮像手段から画像を取得する画像取得手段、前記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出手段、前記一連のエッジ画素に基づいて複数の直線を生成する直線生成手段、前記複数の直線に基づいて前記輪郭の頂点を検出する頂点検出手段、前記頂点に基づいて前記撮像手段と前記物体との相対的な位置および姿勢を算出する位置姿勢算出手段、前記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定手段、および前記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御手段を備える、画像処理装置。撮像手段から画像を取得する画像取得ステップ、前記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出ステップ、前記一連のエッジ画素に基づいて複数の直線を生成する直線生成ステップ、前記複数の直線に基づいて前記輪郭の頂点を検出する頂点検出ステップ、前記頂点に基づいて前記撮像手段と前記物体との相対的な位置および姿勢を算出する位置姿勢算出ステップ、前記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定ステップ、および前記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御ステップを備える、画像処理方法。撮像手段から画像を取得する画像取得手段、前記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出手段、前記一連のエッジ画素に基づいて複数の直線を生成する直線生成手段、前記複数の直線に基づいて前記輪郭の頂点を検出する頂点検出手段、前記頂点に基づいて前記撮像手段と前記物体との相対的な位置および姿勢を算出する位置姿勢算出手段、前記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定手段、および前記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御手段を備える、画像処理システム。画像処理装置とマーカーを備えた画像処理システムであって、前記画像処理装置は、前記マーカーを撮像する撮像部、前記撮像部から画像を取得する画像取得手段、前記画像から、前記マーカーまたは前記マーカーに表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出手段、前記一連のエッジ画素に基づいて複数の直線を生成する直線生成手段、前記複数の直線に基づいて前記輪郭の頂点を検出する頂点検出手段、前記頂点に基づいて前記撮像手段と前記マーカーとの相対的な位置および姿勢を算出する位置姿勢算出手段、前記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定手段、および前記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御手段を備える、画像処理システム。非特許文献1に記載されているマーカーの検出方法は、種々の状況例えば、明るい状況や、暗い状況や、マーカーの一部がユーザの指等で隠れてしまう状況や、カメラに対してマーカーが真正面を向いていない状況や、強い光がマーカーで反射している状況などにおいて、マーカーを必ずしも高い精度または小さい処理負荷で検出できるものではなかった。また、非特許文献1に記載されているマーカーの検出方法は、マーカーの検出位置の微細なブレを防止することができなかった。それゆえに、この発明は、画像から所定の物体または図柄を高い精度または小さい処理負荷で検出することができる画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法、もしくは、検出された所定の物体または図柄の位置の微細なブレを防止または緩和することのできる画像処理プログラム、画像処理装置、画像処理システム、および画像処理方法を提供することを目的とする。上記目的を達成するために、以下のような構成を採用し得る。第1の構成例は、情報処理装置のコンピュータを、画像取得手段、エッジ画素検出手段、直線生成手段、頂点検出手段、位置姿勢算出手段、仮想カメラ設定手段、および表示制御手段として機能させる画像処理プログラムである。上記画像取得手段は、撮像手段から画像を取得する。上記エッジ画素検出手段は、上記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出する。上記直線生成手段は、上記一連のエッジ画素に基づいて複数の直線を生成する。上記頂点検出手段は、上記複数の直線に基づいて上記輪郭の頂点を検出する。上記位置姿勢算出手段は、上記頂点に基づいて上記撮像手段と上記物体との相対的な位置および姿勢を算出する。上記仮想カメラ設定手段は、上記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する。上記表示制御手段は、上記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる。上記構成例によれば、画像に含まれる物体や図柄の輪郭の頂点を、高精度で検出することができる。なお、変形例として、上記直線生成手段は、同一直線上の互いに離間した複数の直線を1つの直線へと統合する直線統合手段を含んでいてもよい。上記変形例によれば、画像に含まれる物体や図柄のいずれかの辺の途中で輪郭が途切れていても、当該辺に対応する1つの直線を生成することができる。また、他の変形例として、上記直線生成手段は、上記一連のエッジ画素のうちの一部のエッジ画素が同一直線上にあるか否かを判定する第1判定手段、および上記第1判定手段によって同一直線上にあると判定された一部のエッジ画素に基づいて直線を算出する直線算出手段を含んでいてもよい。また、他の変形例として、上記直線算出手段は、上記第1判定手段によって同一直線上にあると判定された複数のエッジ画素に基づいて、最小自乗法により各直線を算出してもよい。上記変形例によれば、輪郭の頂点を高精度で検出することができる。また、物体や図柄の輪郭の頂点付近のエッジ画素が周囲環境の状況により大きくずれて検出された場合であっても、ブレの少ない仮想空間画像を表示することができる。また、他の変形例として、上記直線生成手段は、上記一連のエッジ画素のうちのいずれか1つのエッジ画素を起点として、時計回りまたは反時計回りに直線を生成または更新する処理を繰り返し実行することによって、上記一連のエッジ画素に基づいて複数の直線を生成してもよい。また、他の変形例として、上記直線生成手段は、時計回りまたは反時計回りに直線を生成または更新する処理を実行できるか否かを判定する手段を含み、上記直線を生成または更新する処理を実行できない場合に、当該直線を生成または更新する処理を実行してきた時計回りまたは反時計回りとは逆方向に直線を生成または更新する処理を繰り返し実行してもよい。また、他の変形例として、上記直線生成手段は、上記起点のエッジ画素と、当該起点のエッジ画素から時計回りまたは反時計回りのいずれか一方向に連なる所定数のエッジ画素とに基づいて最初の直線を生成する手段、すでに生成または更新された直線の方向と、当該直線から上記いずれか一方向に連なる所定数のエッジ画素に基づく仮直線の方向とを比較する比較手段、上記比較手段によって、上記直線と上記仮直線とが同一直線上であると判定された場合に、上記直線および上記仮直線に対応する複数のエッジ画素に基づいて上記直線を更新する手段、上記比較手段によって、上記直線と上記仮直線とが同一直線上ではなく、かつ上記直線と上記仮直線の交点付近に対応する上記輪郭の頂点が凸角であると判定された場合に、上記仮直線に基づいて新たな直線を生成する手段、および上記比較手段によって、上記直線と上記仮直線とが同一直線上ではなく、かつ上記直線と上記仮直線の交点に対応する上記輪郭の頂点が凹角であると判定された場合に、上記基点のエッジ画素から時計回りまたは反時計回りのいずれか他方向に向かって直線を生成および更新する処理を開始する手段を含んでいてもよい。また、他の変形例として、上記画像処理プログラムは、上記コンピュータを、上記直線生成手段によって生成された複数の直線から、所定数の直線を選出する直線選出手段としてさらに機能させ、上記頂点検出手段は、上記直線選出手段によって選出された上記所定数の直線の交点を、上記輪郭の頂点として検出してもよい。上記変形例によれば、不要な直線を排除することができる。また、他の変形例として、上記直線選出手段は、上記直線生成手段によって生成された複数の直線から、長さがより長い所定数の直線を選出してもよい。上記変形例によれば、短い直線を排除することができる。なお、上記画像処理プログラムは、任意のコンピュータ読み取り可能な記憶媒体例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ、半導体メモリカード、ROM、RAMなどに格納され得る。第2の構成例は、撮像手段から画像を取得する画像取得手段、上記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出手段、上記一連のエッジ画素に基づいて複数の直線を生成する直線生成手段、上記複数の直線に基づいて上記輪郭の頂点を検出する頂点検出手段、上記頂点に基づいて上記撮像手段と上記物体との相対的な位置および姿勢を算出する位置姿勢算出手段、上記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定手段、および上記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御手段を備える、画像処理装置である。第3の構成例は、撮像手段から画像を取得する画像取得ステップ、上記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出ステップ、上記一連のエッジ画素に基づいて複数の直線を生成する直線生成ステップ、上記複数の直線に基づいて上記輪郭の頂点を検出する頂点検出ステップ、上記頂点に基づいて上記撮像手段と上記物体との相対的な位置および姿勢を算出する位置姿勢算出ステップ、上記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定ステップ、および上記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御ステップを備える、画像処理方法である。第4の構成例は、撮像手段から画像を取得する画像取得手段、上記画像から、物体または物体に表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出手段、上記一連のエッジ画素に基づいて複数の直線を生成する直線生成手段、上記複数の直線に基づいて上記輪郭の頂点を検出する頂点検出手段、上記頂点に基づいて上記撮像手段と上記物体との相対的な位置および姿勢を算出する位置姿勢算出手段、上記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定手段、および上記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御手段を備える、画像処理システムである。第5の構成例は、画像処理装置とマーカーを備えた画像処理システムである。上記画像処理装置は、上記マーカーを撮像する撮像部、上記撮像部から画像を取得する画像取得手段、上記画像から、上記マーカーまたは上記マーカーに表される図柄の輪郭を表す一連のエッジ画素を検出するエッジ画素検出手段、上記一連のエッジ画素に基づいて複数の直線を生成する直線生成手段、上記複数の直線に基づいて上記輪郭の頂点を検出する頂点検出手段、上記頂点に基づいて上記撮像手段と上記マーカーとの相対的な位置および姿勢を算出する位置姿勢算出手段、上記位置および姿勢に基づいて、仮想空間内の仮想カメラを設定する仮想カメラ設定手段、および上記仮想カメラで仮想空間を撮影することにより得られる仮想空間画像を表示装置に表示させる表示制御手段を備える。上記の各構成例によれば、画像から所定の物体または図柄を高い精度で検出することができる。ゲーム装置の構成以下、本発明の一実施形態に係るゲーム装置について説明する。ゲーム装置10は携帯型のゲーム装置である。図1および図2A~Dに示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能折り畳み可能に接続されている。下側ハウジングの説明図1および図2A~Dに示すように、下側ハウジング11には、下側LCDLiquidCrystalDisplay:液晶表示装置12、タッチパネル13、各操作ボタン14A~14L、アナログスティック15、LED16A~16B、挿入口17、および、マイクロフォン用孔18が設けられる。タッチパネル13は、下側LCD12の画面上に装着されている。下側ハウジング11の上側面には、タッチペン28を収納するための挿入口17図1および図2Dに示す点線が設けられている。下側ハウジング11の内側面主面には、十字ボタン14A方向入力ボタン14A、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。アナログスティック15は、方向を指示するデバイスである。下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42図3参照が設けられる。図2BおよびDに示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。また、図2Aに示されるように、下側ハウジング11の左側面には、ゲーム装置10が備えるスピーカ43図3参照の音量を調整するための音量ボタン14Iが設けられる。図2Aに示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタが設けられる。図2Dに示されるように、下側ハウジング11の上側面には、外部メモリ44を挿入するための挿入口11Dが設けられる。図1および図2Cに示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる図2C参照。上側ハウジングの説明図1および図2に示すように、上側ハウジング21には、上側LCDLiquidCrystalDisplay:液晶表示装置22、外側撮像部23外側撮像部左23aおよび外側撮像部右23b、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。具体的には、パララックスバリア方式の裸眼立体視可能な表示装置である。上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある画像立体視画像を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる。このように、上側LCD22は、立体視画像を表示する立体表示モードと、画像を平面的に表示する平面視画像を表示する平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、例えば、後述する3D調整スイッチ25によって行われる。外側撮像部23は、上側ハウジング21の外側面21Dに設けられた2つの撮像部23aおよび23bの総称である。外側撮像部左23aと外側撮像部右23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。内側撮像部24は、上側ハウジング21の内側面21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像立体画像の立体感を調整するために用いられる。3D調整スイッチ25のスライダ25aは、所定方向上下方向の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。3Dインジケータ26は、上側LCD22が立体表示モードか否かを示すLEDである。また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。ゲーム装置10の内部構成次に、図3を参照して、ゲーム装置10の内部の電気的構成について説明する。図3に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス外部メモリI/F33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロックRTC38、加速度センサ39、電源回路40、およびインターフェイス回路I/F回路41等の電子部品を備えている。情報処理部31は、所定のプログラムを実行するためのCPUCentralProcessingUnit311、画像処理を行うGPUGraphicsProcessingUnit312、VRAMVideoRAM313を含む。CPU311は、ゲーム装置10内のメモリ例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、CPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。GPU312は、CPU311からの命令に応じて画像を生成し、VRAM313に描画する。VRAM313に描画された画像は、上側LCD22及び/又は下側LCD12に出力され、上側LCD22及び/又は下側LCD12に当該画像が表示される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。メインメモリ32は、情報処理部31のCPU311のワーク領域やバッファ領域として用いられる揮発性の記憶装置である。外部メモリ44は、情報処理部31によって実行されるプログラム等を記憶するための不揮発性の記憶装置である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ例えばNAND型フラッシュメモリで構成され、任意のデータを保存するために用いられる。データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ例えばNAND型フラッシュメモリで構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。無線通信モジュール36は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式例えば独自プロトコルによる通信や、赤外線通信により同種のゲーム装置との間で無線通信を行う機能を有する。加速度センサ39は、3軸xyz軸方向に沿った直線方向の加速度直線加速度の大きさを検出する。情報処理部31は、加速度センサ39が検出した加速度を示すデータ加速度データを受信して、ゲーム装置10の姿勢や動きを検出することができる。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻日付を計算する。電源回路40は、ゲーム装置10が有する電源充電式電池からの電力を制御し、ゲーム装置10の各部品に電力を供給する。I/F回路41には、タッチパネル13、マイク42およびスピーカ43が接続される。I/F回路41は、マイク42およびスピーカ43アンプの制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。操作ボタン14は、上記各操作ボタン14A~14Lからなり、操作ボタン14から情報処理部31へは、各操作ボタン14A~14Iに対する入力状況押下されたか否かを示す操作データが出力される。下側LCD12および上側LCD22は情報処理部31に接続される。具体的には、情報処理部31は、上側LCD22のLCDコントローラ図示せずと接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。画像処理の概要次に、図4~図72を参照して、ゲーム装置10において実行される画像処理の概要を説明する。ゲーム装置10において実行される画像処理には、画像認識処理と画像生成処理が含まれている。画像認識処理は、カメラ外側撮像部左23aまたは外側撮像部右23bによって撮像された画像実写画像に含まれているマーカーの位置を検出するための処理である。画像生成処理は、画像認識処理の結果を利用して、上側LCD22に表示すべき画像を生成するための処理である。ゲーム装置10のCPU311は、画像認識処理の結果を利用して、現実世界におけるマーカーの周辺例えば、マーカーの上に仮想オブジェクトがあたかも実在しているかのような画像を上側LCD22に表示することができる。例えば、図4の例では、ゲーム装置10の上側LCD22に、机に置かれたマーカー50上に犬を模した仮想オブジェクト60があたかも実在しているかのような画像が表示されている。このような画像は、カメラによって撮像された実写画像に、仮想オブジェクト60の画像仮想空間画像を合成することによって得られる。仮想空間画像は、仮想空間に配置された仮想カメラに基づいて描画され、仮想空間における仮想カメラと仮想オブジェクトの位置関係相対的な位置および姿勢は、現実空間におけるカメラ外側撮像部左23aまたは外側撮像部右23bとマーカー50との位置関係に一致するようにリアルタイムに制御される。これにより、仮想オブジェクト60があたかも現実空間に実在しているかのような画像が得られる。図5に示すように、マーカー50は四角形であって、外周に沿った白領域と、白領域に囲まれた黒領域を有しており、黒領域の内部には所定の内部図形ここでは一例として矢印が描かれている。なお、本実施形態では図5のようなマーカー50を用いているが、これは単なる一例に過ぎず、他の形状、模様、色のマーカーを用いても良い。例えば、外周に沿った黒領域の内部に、白領域が設けられていてもよい。また、白領域や黒領域の代わりに、別の色の領域を設けてもよい。ただし、後述する輪郭検出処理のためには、コントラストが高い色の組み合わせを用いることが好ましい。図6は、カメラ外側撮像部左23aまたは外側撮像部右23bによって撮像された画像実写画像の一例である。実写画像は、例えば、512画素水平方向×384画素垂直方向で構成される。図6に示すような実写画像からマーカー50の位置を検出するために、本実施形態では、以下のような処理が行われる。1輪郭検出処理2頂点検出処理3粗判別処理4図柄判別処理5マーカー位置補正処理輪郭検出処理まず、輪郭検出処理について説明する。輪郭検出処理は、実写画像において、マーカー50に描かれている図柄の輪郭図5に示した白領域と黒領域の境界線を検出するための処理である。本実施形態では、実写画像において、まず16,16の座標で示される画素を注目画素として、当該注目画素の輝度値と、当該注目画素から数えて左に8個目の画素8,16の輝度値とに基づいて、当該2つの画素の間のどこかにエッジ左側が白領域で右側が黒領域となるようなエッジが存在するかどうかを判定する判定方法の詳細は後述する。そして、エッジが存在しないと判定された場合には、図7に示すように、現在の注目画素16,16から数えて右に8個目の画素24,16を新たな注目画素として、当該注目画素の輝度値と、当該注目画素から数えて左に8個目の画素すなわち、直前の注目画素16,16の輝度値とに基づいて、当該2つの画素の間のどこかにエッジが存在するかどうかを判定する。以降、注目画素を順次更新しつつ同様の処理を行う。なお、Y座標値が16であるラインについての処理が終わると、そこから数えて下に16本目のラインすなわちY座標値が32であるラインについて、同様の処理を行う。なお、このような注目画素の選び方は単なる一例に過ぎず、これに限定されるものではない。以下の説明では、注目画素を画素Pnと表し、注目画素から見て左にk個目の画素を画素Pn-kと表し、注目画素から見て右にk個目の画素を画素Pnkと表す。また、注目画素の輝度値をLnと表し、注目画素から見て左にk個目の画素の輝度値をLn-kと表し、注目画素から見て右にk個目の画素の輝度値をLnkと表す。図8に示すように、注目画素すなわち画素Pnと、注目画素から見て左に8個目の画素すなわち画素Pn-8との間のどこかにエッジが存在するかどうかは、Ln-8とLnとに基づいて判定される。具体的には、Ln-8-Lnが所定値以上かどうかによって判定される。そして、Ln-8-Lnが所定値以上である場合には、それらの画素の間のどこかにエッジが存在すると判定される。なお、本実施形態では、各画素の輝度値は0~255の値で表されるものとし、上記所定値は60であるとする。なお、これらの数字は単なる一例に過ぎず、これらに限定されるものではない。画素Pnと画素Pn-8の間のどこかにエッジが存在すると判定された場合には、続いて、これらの2つの画素またはこれらの近傍周辺の画素の輝度値に基づいて、エッジの位置を検出するために用いられるエッジ判定閾値が計算される。以下、図9~図12を参照して、エッジ判定閾値の計算方法を説明する。まず、図9~図12に示すように、画素Pn-8またはその近傍の画素の輝度値に基づいて、白領域輝度値Lwが決定される。以下、白領域輝度値Lwの決定方法の一例を説明する。まず、画素Pn-9の輝度値が、画素Pn-8の輝度値よりも小さいかどうかを判定し、小さい場合には、画素Pn-8の輝度値が白領域輝度値Lwとなる。例えば、図9,図11および図12の例では、画素Pn-9の輝度値は210であり、画素Pn-8の輝度値は220であるので、画素Pn-8の輝度値である220が白領域輝度値Lwとなる。画素Pn-9の輝度値が、画素Pn-8の輝度値以上である場合には、続いて、画素Pn-10の輝度値が、画素Pn-9の輝度値よりも小さいかどうかを判定し、小さい場合には、画素Pn-9の輝度値が白領域輝度値Lwとなる。画素Pn-9の輝度値が、画素Pn-8の輝度値以上であり、かつ、画素Pn-10の輝度値が、画素Pn-9の輝度値以上である場合には、続いて、画素Pn-11の輝度値が、画素Pn-10の輝度値よりも小さいかどうかを判定し、小さい場合には、画素Pn-9の輝度値が白領域輝度値Lwとなる。例えば、図10の例では、画素Pn-11の輝度値は210であり、画素Pn-10の輝度値は220であるので、画素Pn-10の輝度値である220が白領域輝度値Lwとなる。上記のような処理は、画素Pn-8から左方向に向けて、画素の輝度値を順次参照して輝度値の極大値最初に現れる極大値を見つける処理だと言い換えることができる。さらには、画素Pn-8とその周辺の画素の輝度値の中から極大値を検出する処理だと言い換えることもできる。このような処理を行うことによって、図10に示すように、画素Pn-8が、マーカー50の白領域と黒領域の境界実写画像においては灰色で表示されるに位置しているような場合でも、マーカー50の白領域の輝度値を、白領域輝度値Lwとして正しく設定することができる。なお、本実施形態では、上記のようにして白領域輝度値Lwを決定しているが、これは単なる一例に過ぎず、白領域輝度値Lwの決定方法はこれに限定されない。例えば、画素Pn-8の輝度値と、その周辺の画素のいずれかの輝度値とを比較し、当該周辺の画素の輝度値の方が大きい場合に、当該周辺の画素の輝度値に基づいて白領域輝度値Lwを計算するようにしてもよい。また、例えば、画素Pn-8から左方向に向けて、画素の輝度値を順次参照して輝度値の極大値最初に現れる極大値を見つける処理の途中で、参照画素の輝度値が所定値例えば250を超えた場合に、輝度値の極大値を見つける処理を中断して、当該参照画素の輝度値に基づいて白領域輝度値Lwを計算するようにしてもよい。次に、図9~図12に示すように、画素Pnまたはその近傍の画素の輝度値に基づいて、黒領域輝度値Lbが決定される。以下、黒領域輝度値Lbの決定方法の一例を説明する。まず、画素Pn2の輝度値が、画素Pnの輝度値以下かどうかを判定し、画素Pnの輝度値以下である場合には、画素Pnの輝度値が黒領域輝度値Lbとなる。例えば、図9および図10の例では、画素Pn2の輝度値は100であり、画素Pnの輝度値は100であるので、画素Pnの輝度値である100が黒領域輝度値Lbとなる。画素Pn2の輝度値が、画素Pnの輝度値よりも大きい場合には、続いて、白領域輝度値Lwから画素Pn2の輝度値を引いた結果の値すなわち、Lw-Ln2が上記所定値すなわち、60以上であるかどうかを判定する。そして、当該結果の値が60以上である場合には、画素Pn2の輝度値が黒領域輝度値Lbとなり、当該結果の値が60未満である場合には、画素Pnの輝度値が黒領域輝度値Lbとなる。例えば、図11の例では、画素Pnの輝度値は20であり、画素Pn2の輝度値は100であり、白領域輝度値Lwは220である。そして、Lw-Ln2=120であるので、画素Pn2の輝度値である100が黒領域輝度値Lbとなる。ところで、エッジ強調処理輪郭強調処理、シャープネス処理が施された実写画像では、図11に示すように、白領域に隣接する黒領域画素の輝度値が、本来の黒領域の輝度値よりも著しく小さい値になっていることがある。そこで、本実施形態では、このような場合でも適切な黒領域輝度値Lbを決定できるように、上記のような条件を満たす場合には、画素Pn2の輝度値を黒領域輝度値Lbとしている。一方、図12の例では、画素Pnの輝度値は100であり、画素Pn2の輝度値は210であり、白領域輝度値Lwは220である。そして、Lw-Ln2=10であるので、画素Pnの輝度値である100が黒領域輝度値Lbとなる。なお、本実施形態では、上記のようにして黒領域輝度値Lbを決定しているが、これは単なる一例に過ぎず、黒領域輝度値Lbの決定方法はこれに限定されない。上記のようにして白領域輝度値Lwおよび黒領域輝度値Lbが決定されると、続いて、これらの白領域輝度値Lwおよび黒領域輝度値Lbに基づいて、エッジ判定閾値が計算される。本実施形態では、白領域輝度値Lwと黒領域輝度値Lbの平均値を、エッジ判定閾値として決定する。例えば、図9~図12の例では、いずれも、エッジ判定閾値は160となる。ただし、これは単なる一例に過ぎず、エッジ判定閾値の計算方法はこれに限定されない。上記のようにしてエッジ判定閾値が決定されると、当該エッジ判定閾値を用いて、画素Pnと画素Pn-8の間のどこにエッジが存在するかを検出する。具体的には、エッジ判定閾値よりも大きい輝度値を有する画素は白領域だと判定され、エッジ判定閾値よりも小さい輝度値を有する画素は黒領域だと判定される。そして、白領域と黒領域の境界をエッジだと判定する。なお、本実施形態では、白領域に隣接する黒領域画素を、エッジ上に位置するまたはエッジに隣接するエッジ画素として検出する。例えば、図9の例では、画素Pn-5がエッジ画素であると判定され、図10の例では、画素Pn-7がエッジ画素であると判定され、図11の例では、画素Pnがエッジ画素であると判定され、図12の例では、画素Pn-6がエッジ画素であると判定される。なお、他の実施形態では、黒領域に隣接する白領域画素を、エッジ上に位置するエッジ画素として検出してもよい。実写画像の各画素には、当該画素がエッジ画素であるか否かを示すフラグエッジフラグが対応付けられており、エッジ画素であると判定された画素については、エッジフラグがオンになる。上記のようにして検出されたエッジ画素のことを、以下の説明では起点エッジ画素と称する。起点エッジ画素は、マーカー50に描かれている図柄の輪郭図5に示した白領域と黒領域の境界線の一部であると推測される。もし起点エッジ画素がマーカー50に描かれている図柄の輪郭の一部であった場合には、この起点エッジ画素を起点として隣接するエッジ画素を順次辿っていくことによって、マーカー50に描かれている図柄図5に示した白領域と黒領域の境界線の輪郭を検出することができる。以下、起点エッジ画素を起点として隣接するエッジ画素を順次辿っていく処理エッジ辿り処理について説明する。まず、図13に示すように、起点エッジ画素を基準として、左下隣接画素→下隣接画素→右下隣接画素→右隣接画素→右上隣接画素→上隣接画素→左上隣接画素という順番ですなわち、起点エッジ画素を中心として左隣接画素から反時計回りに黒領域画素を探索し、最初に検出された黒領域画素を、起点エッジ画素に続く新たなエッジ画素として検出する。各隣接画素が黒領域画素であるか否かの判定は、起点エッジ画素を検出したときに利用されたエッジ判定閾値に基づいて行われ、より具体的には、隣接画素の輝度値がエッジ判定閾値よりも小さい場合に、当該隣接画素は黒領域画素だと判定される。例えば、図14の例では、左下隣接画素が新たなエッジ画素として検出され、図15の例では、右隣接画素が新たなエッジ画素として検出される。エッジ辿り処理において起点エッジ画素を起点として順次検出されるエッジ画素は、一連のエッジ画素として、それらの座標値がメインメモリ32に順次記憶される。なお、以下の説明では、エッジ辿り処理において最後に検出されたエッジ画素のことを先頭エッジ画素と称し、先頭エッジ画素の直前に検出されたエッジ画素のことを2番目エッジ画素と称す。先頭エッジ画素に続く新たなエッジ画素は、先頭エッジ画素を中心として、当該先頭エッジ画素から見て2番目エッジ画素の方向から反時計回りに135度ずれた方向にある隣接画素を始点として他の実施形態では、反時計回りに45度ずれた方向にある隣接画素、または、反時計回りに90度ずれた方向にある隣接画素を始点としてもよい、反時計回りに黒領域画素を探索することによって行われる。そして、当該探索において最初に検出された黒領域画素が、新たなエッジ画素すなわち、新たな先頭エッジ画素として検出される。例えば、図16に示すように、2番目エッジ画素が先頭エッジ画素の右上隣接画素である場合には、先頭エッジ画素を中心として左隣接画素から反時計回りに黒領域画素が探索される。よって、図17の例では、先頭エッジ画素の下隣接画素が、新たなエッジ画素として検出される。また例えば、図18に示すように、2番目エッジ画素が先頭エッジ画素の左隣接画素である場合には、先頭エッジ画素を中心として右下隣接画素から反時計回りに黒領域画素が探索される。よって、図19の例では、先頭エッジ画素の右隣接画素が、新たなエッジ画素として検出される。上記のような処理が繰り返されることによって、新たなエッジ画素が順次検出され、最終的に、先頭エッジ画素が起点エッジ画素に到達することによって、黒領域の輪郭の検出が完了するすなわち、黒領域の輪郭を示す一連のエッジ画素群に関するデータがメインメモリ32に格納されることになる。なお、本実施形態では、エッジ辿り処理において新たなエッジ画素が検出される度に、当該新たなエッジ画素が、すでに検出されている一連のエッジ画素群に含まれているか否かを前述のエッジフラグに基づいて判断する。そして、新たなエッジ画素が、すでに検出されている一連のエッジ画素群に含まれていると判定されることが3回連続した場合には、エッジ辿り処理を中断するようにしている。例えば、図20に示すように、新たなエッジ画素が、すでに検出されている一連のエッジ画素群に含まれていると判定されることが2回だけ連続する場合には、エッジ辿り処理が中断されることはない。しかしながら、図21に示すように、新たなエッジ画素が、すでに検出されている一連のエッジ画素群に含まれていると判定されることが3回連続した場合には、エッジ辿り処理が中断される。これは、図21に示すような黒領域は、マーカー50に描かれている図柄の輪郭ではないすなわち、マーカー50以外の物体の輪郭である可能性が高いからである。また、もし仮にマーカー50に描かれている図柄の輪郭であったとしても、後述するパターンマッチング処理等が正常に行えない可能性が高いからである。これにより、無駄な処理を回避することができる。なお、3回という回数は単なる一例に過ぎず、他の回数であってもよい。なお、上記の説明では、起点エッジ画素を始点として、黒領域の輪郭を反時計回りに辿っていく例を説明したが、他の実施形態では、起点エッジ画素を始点として、黒領域の輪郭を時計回りに辿っていくようにしても構わない。上記のように、輪郭抽出処理では、白領域輝度値Lwと黒領域輝度値Lbが決定され、これらの白領域輝度値Lwおよび黒領域輝度値Lbに基づいて、エッジ判定閾値が計算される。よって、実写画像の明るさが全体的または部分的に変化して、それに応じて実写画像におけるマーカー50の白領域および黒領域の輝度が変化したとしても、適切なエッジ判定閾値を用いて輪郭抽出処理を行うことができる。これにより、マーカー50の認識精度が向上する。なお、上記輪郭抽出処理では、画素の輝度値に基づいて輪郭を抽出しているが、輝度値に限らず、他の任意の画素値典型的には色値に基づいて輪郭を検出してもよい。また、上記輪郭抽出処理では、まず、水平方向に離れた2つの画素画素Pnと画素Pn-8の間にエッジが存在するかどうかを判定しているが、2つの画素の選び方はこれに限らない。例えば、垂直方向に離れた2つの画素の間にエッジが存在するかどうかを判定するようにしてもよいし、斜め方向に離れた2つの画素の間にエッジが存在するかどうかを判定するようにしてもよい。また、上記輪郭抽出処理では、Ln-8-Lnが所定値以上である場合に、画素Pnと画素Pn-8の間にエッジが存在すると判定しているこの場合、左側が白領域であり、右側が黒領域であるようなエッジを見つけることができるが、他の実施形態では、Ln-8-Lnの絶対値が所定値以上である場合に、画素Pnと画素Pn-8の間にエッジが存在すると判定してもよい。この場合、左側が白領域であり、右側が黒領域であるようなエッジだけでなく、左側が黒領域であり、右側が白領域であるようなエッジも見つけることができる。また、上記輪郭抽出処理では、起点エッジ画素を検出したときに利用されたエッジ判定閾値を上記エッジ辿り処理において用いているが、他の実施形態では、当該エッジ判定閾値を、実写画像における任意の領域例えば、実写画像の全体からエッジ画素を検出するために用いてもよい。例えば、起点エッジ画素を含むラインの1つ下のラインのエッジ画素や、起点エッジ画素を含む輪郭とは別の輪郭のエッジ画素などを、上記エッジ判定閾値に基づいて検出するようにしてもよい。頂点検出処理次に、頂点検出処理について説明する。頂点検出処理とは、実写画像におけるマーカー50の黒領域の4頂点を検出する処理であって、以下の処理から成る。直線算出処理直線統合処理直線選出処理頂点算出処理直線算出処理では、前述の輪郭検出処理においてメインメモリ32に格納された、黒領域の輪郭を示す一連のエッジ画素群に関するデータに基づいて、複数の直線が算出される。以下、図22~図36を参照して、直線算出処理について詳細に説明する。メインメモリ32に格納された一連のエッジ画素群に関するデータにおいては、複数のエッジ画素が順序付けられている。以下の説明では、便宜上、黒領域の輪郭を反時計回りに辿っていく方向すなわち、黒領域から白領域の方向を見たときの左方向を前方と称し、黒領域の輪郭を時計回りに辿っていく方向すなわち、黒領域から白領域の方向を見たときの右方向を後方と称する。まず、図22に示すように、起点エッジ画素Pe0から、当該起点エッジ画素Pe0より4つ前方のエッジ画素Pe4までの5つのエッジ画素Pe0~Pe4に基づいて最初の直線Li0-4が生成され、当該直線Li0-4を示すデータがメインメモリ32に格納される。なお、複数のエッジ画素に基づいて直線を生成する方法としては種々の方法を採用し得るが、本実施形態では最小自乗法により生成するものとする。次に、図23に示すように、直線Li0-4のすぐ前方の5つのエッジ画素Pe5~Pe9に基づいて、例えば最小自乗法により、仮直線が生成され、直線Li0-4と仮直線とが同一直線上にあるかどうかを判定する。当該判定は、例えば、直線Li0-4に対する仮直線の角度に基づいて行われる。本実施形態では、図24に示すように、直線Li0-4に対する仮直線の角度反時計回り方向を正とするが-30°から30°までの範囲である場合には、直線Li0-4と仮直線が同一直線上にあると判定される。なお、-30°および30°という値は単なる一例に過ぎず、これに限定されない。直線Li0-4と仮直線が同一直線上にあると判定されると、直線Li0-4に対応するエッジ画素Pe0~Pe4と、仮直線に対応するエッジ画素Pe5~Pe9の10個のエッジ画素に基づいて、例えば最小自乗法により、図25に示す直線Li0-9が計算され、メインメモリ32に格納されている直線Li0-4を示すデータが、直線Li0-9を示すデータへと更新される。このような処理を繰り返すことによって、直線が順次更新延長されていく。なお、本実施形態では、5つのエッジ画素毎に仮直線を生成しているが、これは単なる一例に過ぎず、これに限定されない。図26の例では、直線Li0-14に対する仮直線すなわち、直線Li0-14の前方の5つのエッジ画素Pe15~Pe19に基づいて生成された仮直線の角度が30°を超えているので、直線Li0-14と仮直線の交点付近において黒領域が凸角となっているすなわち、直線Li0-14と仮直線の交点付近において黒領域が外側に尖っていると判定される図24参照。この場合、仮直線は、直線Li0-14とは異なる新たな直線であると判定され、当該仮直線に対応する新たな直線Li15-19が生成される図27参照。この場合、直線Li0-14を示すデータはメインメモリ32にそのまま保持され、直線Li15-19を示すデータがメインメモリ32に新たに格納される。続いて、図28に示すように、直線Li15-19と、その前方の5つのエッジ画素Pe20~Pe24に基づいて生成された仮直線とが同一直線上にあるかどうかを判定する。そして、同一直線上にあると判定されると、図29に示すように、エッジ画素Pe15~Pe24に基づいて、直線Li15-19が直線Li15-24へと更新される。以上のような処理を繰り返すことによって、最終的には、図30に示すように複数の直線図30の例では直線A~直線Fの6本の直線が算出される。なお、この中には、直線Dのように短い直線も含まれ得る。このように、直線算出処理では、一連のエッジ画素のうち、同一直線上にある一部のエッジ画素から各直線が算出される。なお、上記直線算出処理では、起点エッジ画素Pe0を起点として直線を生成および更新しているが、これに限らず、起点エッジ画素Pe0以外の任意のエッジ画素を起点として直線を生成および更新してもよい。また、上記直線算出処理では、反時計回りに直線を生成および更新しているが、これに限らず、時計回りに直線を生成および更新してもよい。また、上記直線算出処理では、すでに生成された直線と、それに隣接する仮直線とが同一直線上にあるかどうかを判定し、同一直線上であると判定された場合に、これらの直線および仮直線に対応する複数のエッジ画素に基づいて直線を算出していれるが、他の実施形態では、まず多数の仮直線を生成した後に、これらの多数の仮直線のうち、同一直線上にある複数の仮直線に対応する複数のエッジ画素に基づいて直線を算出してもよい。ところで、図31に示すように、実写画像においてマーカー50の黒領域の一辺に部分的に重なるように黒い物体が表示されている場合には、直線算出処理において、直線Aおよび直線Bが生成された後、図32に示すように、直線Bと、当該直線Bの前方の仮直線とが同一直線上かどうかが判定される。直線Bに対する仮直線の角度は-30°よりも小さいので、直線Bと仮直線の交点付近において黒領域が凹角となっているすなわち、直線Bと仮直線の交点付近において黒領域が内側に凹んでいると判定される図24参照。マーカー50の黒領域の輪郭には凹角は存在しないすなわち凸角のみ存在するため、このような凹角が検出された場合には、仮直線は、マーカー以外の物体の輪郭の一部を示していると予想される。上記のように、直線算出処理において凹角が検出された場合には、直線を更新延長または新たに生成する処理を実行できないと判定される。そして、黒領域に対して反時計回りに直線を更新延長および新たに生成する処理を中断し、次に、それまでの方向とは逆方向すなわち時計回りに直線を更新延長および新たに生成する処理を開始する。例えば、図31の例では、起点エッジ画素から時計回りに、直線Aを後方に向かって延長する処理、および新たな直線を生成する処理を実行する。その結果、図33に示すように、図31の直線Aは直線A’へと更新され、さらに、直線C~直線Eが順次生成される。なお、直線Eの後端では凹角が検出されるため、その時点で直線算出処理は終了する。結果として、直線A’,直線B~直線Eの5本の直線が算出される。さらに他の例として、図34に示すように、実写画像においてマーカー50の黒領域の一辺に部分的に重なるように白い物体が表示されている場合には、直線算出処理において、直線A~直線Cが生成された後、凹角が検出される。そして、起点エッジ画素から時計回りに、直線Aを後方に向かって延長する処理、および新たな直線を生成する処理が開始され、直線Aは直線A’へと更新され、さらに、直線D~直線Gが順次生成される。結果として、直線A’,直線B~直線Gの7本の直線が算出される。さらに他の例として、図35に示すように、実写画像においてマーカー50の黒領域の一頂点に重なるように黒い物体が表示されている場合には、結果的に、直線A’,直線B~直線Dの4本の直線が算出される。さらに他の例として、図36に示すように、実写画像においてマーカー50の黒領域の一頂点に重なるように白い物体が表示されている場合には、結果的に、直線A’,直線B~直線Fの6本の直線が算出される。直線算出処理が完了すると、続いて直線統合処理が行われる。直線統合処理とは、直線算出処理において算出された複数の直線のうち、同一直線上にある同一方向の複数の直線を1つの直線に統合する処理である。例えば図30の例では、直線Aと直線Fが、同一直線上にあり、かつ同一方向を向いているので、図37に示すように、これらの2つの直線が1つの直線AFへと統合される。また、例えば図33の例では、直線Bと直線Eが、同一直線上にあり、かつ同一方向を向いているので、図38に示すように、これらの2つの直線が1つの直線BEへと統合される。また、例えば図34の例では、直線Bと直線Fが、同一直線上にあり、かつ同一方向を向いているので、図39に示すように、これらの2つの直線が1つの直線BFへと統合される。直線統合処理が完了すると、続いて直線選出処理が行われる。直線選出処理とは、直線算出処理および直線統合処理を経て最終的に残った複数の直線から、マーカー50の黒領域の4辺に対応する直線を選択する処理である。本実施形態では、最終的に残った複数の直線のうち、長さがより長い4本の直線すなわち、最も長い直線と2番目に長い直線と3番目に長い直線と4番目に長い直線を、マーカー50の黒領域の4辺に対応する直線として選出する。以下の説明では、選出された4つの直線のそれぞれを、これらの中の任意の直線から反時計回りに、第1直線,第2直線,第3直線および第4直線と称す。例えば図37の例では、直線AF,直線B~直線Eの5本の直線から、直線AF,直線B,直線Cおよび直線Eが、直線選出処理において選出される図40参照。また、例えば図39の例では、直線A’,直線BF,直線C~直線E,直線Gの6本の直線から、直線A’,直線BF,直線Eおよび直線Dが、直線選出処理において選出される。また、例えば図36の例では、直線A’,直線B~直線Fの6本の直線から、直線A’,直線B,直線Eおよび直線Dが、直線選出処理において選出される図41参照。なお、図35および図38の例では4本の直線しか存在しないので、直線選出処理ではそれらの4本の直線が選出される。なお、上記直線選出処理では4本の直線を選出しているが、これは、マーカー50の黒領域が四角形だからである。したがって、もしもマーカー50の黒領域が例えば六角形である場合には、直線選出処理では6本の直線を選出することになる。直線選出処理が完了すると、続いて頂点算出処理が行われる。頂点算出処理では、直線選出処理において選出された4つの直線第1直線~第4直線に基づいて、マーカー50の黒領域の4頂点の位置が算出される。具体的には、第1直線と第2直線の交点の位置が、マーカー50の黒領域の第1頂点の位置として算出され、第2直線と第3直線の交点の位置が、マーカー50の黒領域の第2頂点の位置として算出され、第3直線と第4直線の交点の位置が、マーカー50の黒領域の第3頂点の位置として算出され、第4直線と第1直線の交点の位置が、マーカー50の黒領域の第4頂点の位置として算出される。例えば図40の例では、図42のように第1頂点~第4頂点の位置が算出される。また例えば図41の例では、図43のように第1頂点~第4頂点の位置が算出される。以上のようにして、直線算出処理,直線統合処理,直線選出処理および頂点算出処理を経て、実写画像におけるマーカー50の黒領域の4頂点が検出される。このようにして検出された頂点の位置は、同一直線上にある複数のエッジ画素に基づいて生成された直線の交点として計算されるので、非常に高精度である。例えば、一連のエッジ画素のうちのいずれかのエッジ画素を頂点として決定する場合には、環境光等の影響によって頂点の位置がぶれてしまうが、上記のようにして検出された頂点の位置は、多数のエッジ画素に基づいて計算されているため、そのようなブレは生じない。粗判別処理次に、粗判別処理について説明する。粗判別処理とは、後述する図柄判別処理に先立って、頂点検出処理によって検出された4頂点がマーカー50の4頂点であるか否かを、それらの4頂点の位置関係に基づいて判別する処理である。本実施形態では、以下に示す除外条件A~Dを満たした場合に、頂点検出処理によって検出された4頂点がマーカー50の4頂点ではないと判定する。除外条件Aいずれかの隣り合う2頂点の距離が近すぎる場合具体的には、第1頂点と第2頂点の間の距離が所定の閾値第1の最小許容距離よりも小さい場合、または、第2頂点と第3頂点の間の距離が第1の最小許容距離よりも小さい場合、または、第3頂点と第4頂点の間の距離が第1の最小許容距離よりも小さい場合、または、第4頂点と第1頂点の間の距離が第1の最小許容距離よりも小さい場合である。例えば、図44の例では、第1頂点と第2頂点の距離が近すぎるため、第1頂点~第4頂点はマーカー50の4頂点ではないと判定される。除外条件Bいずれかの頂点と当該頂点に隣接しない2辺のいずれかとの距離が近すぎる場合具体的には、第1頂点と第3直線との距離が所定の閾値第2の最小許容距離よりも小さい場合、または、第1頂点と第4直線との距離が第2の最小許容距離よりも小さい場合、または、第2頂点と第4直線との距離が第2の最小許容距離よりも小さい場合、または、第2頂点と第1直線との距離が第2の最小許容距離よりも小さい場合、または、第3頂点と第1直線との距離が第2の最小許容距離よりも小さい場合、または、第3頂点と第2直線との距離が第2の最小許容距離よりも小さい場合、または、第4頂点と第2直線との距離が第2の最小許容距離よりも小さい場合、または、第4頂点と第3直線との距離が第2の最小許容距離よりも小さい場合である。例えば、図45の例では、第1頂点と第3直線の距離が近すぎるため、第1頂点~第4頂点はマーカー50の4頂点ではないと判定される。除外条件Cいずれかの対向する2辺の直線ベクトルが概ね同一方向の場合具体的には、第1直線第4頂点から第1頂点を結ぶベクトルと第3直線第2頂点から第3頂点を結ぶベクトルが概ね同一方向である場合、または、第2直線第1頂点から第2頂点を結ぶベクトルと第4直線第4頂点から第1頂点を結ぶベクトルが概ね同一方向である場合である。例えば、図44の例では、第1直線第4頂点から第1頂点を結ぶベクトルと第3直線第2頂点から第3頂点を結ぶベクトルが概ね同一方向であるため、第1頂点~第4頂点はマーカー50の4頂点ではないと判定される。なお、2つのベクトルが概ね同一方向であるかどうかは、例えば、図24に示すように、2つのベクトルのなす角度に基づいて判定することができる。除外条件D凹角が含まれている場合具体的には、第1頂点~第4頂点のいずれかの頂点が凹角である場合である。例えば、図47の例では、第2頂点が凹角であるため、第1頂点~第4頂点はマーカー50の4頂点ではないと判定される。なお、本実施形態では上記除外条件A~除外条件Dに基づいて粗判別処理を行っているが、これは単なる一例に過ぎず、これらの除外条件のうちの1つまたは複数を用いてもよいし、これらの除外条件とは異なる除外条件を用いてもよい。上記除外条件A~除外条件Dのいずれかを満たしている場合、頂点検出処理によって検出された4頂点は、マーカー50の4頂点ではないと判定され、後述する図柄判別処理の処理対象から除外される。これにより、図柄判別処理に要する処理負担が軽減される。図柄判別処理次に、図柄判別処理について説明する。図柄判別処理は、頂点検出処理で検出された4頂点で囲まれる領域に表示されている図柄が、マーカー50に描かれている図柄と同一か否かを判別するための処理である。図柄判別処理では、マーカー50に描かれている図柄に基づいて予め生成されたパターン定義データを用いて、頂点検出処理で検出された4頂点で囲まれる領域に表示されている図柄が、マーカー50に描かれている図柄と同一か否かを判別する。パターン定義データは、マーカー50に描かれている図柄を表すデータであって、本実施形態では、図48に示すように、マーカー50の各辺を16等分することによって生成される格子の交点をサンプル点S1,1~S15,15とし、マーカー50上の各サンプル点の画素値を定義したデータである図49参照。なお、本実施形態では、マーカー50の各辺を16分割しているが、これは単なる一例に過ぎず、16分割に限定されない。また、本実施形態では、マーカー50の各辺を等分することによって生成される格子の交点をサンプル点としているが、他の実施形態では、格子によって区切られた各四角形の中心をサンプル点としてもよい。本実施形態では、マーカー50の左上頂点に最も近い交点をサンプル点S1,1とし、マーカー50の左下頂点に最も近い交点をサンプル点S1,15とし、マーカー50の右上頂点に最も近い交点をサンプル点S15,1とし、マーカー50の右下頂点に最も近い交点をサンプル点S15,15としている。なお、図49の例では、画素値の欄に黒または白と定義されているが、他の実施形態では、色値RGB値や輝度値などで定義されていてもよい。図50は、マーカー50を含む実写画像を示している。当該実写画像に対して、前述した輪郭検出処理および頂点検出処理が行われることによって、第1頂点~第4頂点の位置が算出される。図51は、実写画像において、第1頂点~第4頂点によって囲まれる四角形の各辺を16等分することによって、これらの頂点によって囲まれる領域内のサンプル点の位置を決定する例を示している。図柄判別処理では、実写画像におけるサンプル点の画素値と、パターン定義データとを照合例えば、相関係数を計算するなどすることによって、実写画像における第1頂点~第4頂点によって囲まれる領域に表示されている図柄が、マーカー50に描かれている図柄と同一か否かを判別する。しかしながら、図51に示すような方法で実写画像におけるサンプル点を決定した場合には、正確な判別ができないという問題がある。例えば、パターン定義データにおけるサンプル点S8,2の画素値は黒であるのに対して、図51の実写画像におけるサンプル点S8,2の画素値は白となっている。また、パターン定義データにおけるサンプル点S8,13の画素値は白であるのに対して、図51の実写画像におけるサンプル点S8,13の画素値は黒となっている。その結果、図50の実写画像にはマーカー50が含まれていない、と誤って判別されてしまう可能性がある。上記のような問題を解消するためには、実写画像におけるサンプル点の位置の決定方法を工夫する必要がある。以下では、実写画像におけるサンプル点の位置の決定方法の他の例第1の決定方法および第2の決定方法を説明する。まず、図52~図58を参照して、実写画像におけるサンプル点の位置を決定するための第1の決定方法を説明する。第1の決定方法では、第1頂点~第4頂点によって囲まれる四角形において、対向する2辺が平行概ね平行である場合も含むであれば、それらの2辺については16等分し、対向する2辺が平行でなければ、それらの2辺については不均等に16分割することによって、こうして生成される格子の交点をサンプル点とする。例えば、図52の例では、第1頂点と第4頂点を結ぶ辺と、第2頂点と第3頂点を結ぶ辺とは平行であるので、第1頂点と第4頂点を結ぶ辺と、第2頂点と第3頂点を結ぶ辺は、それぞれ16等分される。一方、第1頂点と第2頂点を結ぶ辺と、第4頂点と第3頂点を結ぶ辺とは平行でないので、第1頂点と第2頂点を結ぶ辺と、第4頂点と第3頂点を結ぶ辺は、16等分ではなく、不均等に16分割される。すなわち、図52に示すように、第1頂点と第2頂点を結ぶ辺を16分割する各点以下、分割点と称すは、当該辺を16等分した場合と比較して、第1頂点側にシフトしている。また、第4頂点と第3頂点を結ぶ辺を16分割する各分割点は、当該辺を16等分した場合と比較して、第4頂点側にシフトしている。以下、図52における第1頂点と第2頂点を結ぶ辺上、および第4頂点と第3頂点を結ぶ辺上の分割点の決定方法の一例を、図53~図55を参照して説明する。なお、以下の説明では、第1頂点と第2頂点を結ぶ辺を16分割する15個の分割点を、第1頂点に近い方から順番に、第1分割点M1,第2分割点M2,第3分割点M3,,第15分割点M15と称する。同様に、第4頂点と第3頂点を結ぶ辺を16分割する15個の分割点を、第4頂点に近い方から順番に、第1分割点N1,第2分割点N2,第3分割点N3,,第15分割点N15と称する。まず、図53に示すように、第8分割点M8および第8分割点N8が決定される。具体的には、まず、第1頂点と第4頂点の間の距離と、第2頂点と第3頂点の間の距離が計算される。そして、第1頂点と第4頂点の間の距離をaとし、第2頂点と第3頂点の間の距離をbとしたときに、第1頂点と第2頂点の間をa:bの比率で分割する点と、第4頂点と第3頂点の間をa:bの比率で分割する点が計算される。そして、計算された前者の点が第8分割点M8として決定され、計算された後者の点が第8分割点N8として決定される。この結果、第8分割点M8は、第1頂点と第2頂点の中点よりも第1頂点に近い位置に決定され、第8分割点N8は、第4頂点と第3頂点の中点よりも第4頂点に近い位置に決定される。次に、図54に示すように、第4分割点M4および第4分割点N4が決定される。具体的には、まず、第8分割点M8と第8分割点N8の間の距離が計算される。そして、当該距離をcとしたときに、第1頂点と第8分割点M8の間をa:cの比率で分割する点と、第4頂点と第8分割点N8の間をa:cの比率で分割する点が計算される。そして、計算された前者の点が第4分割点M4として決定され、計算された後者の点が第4分割点N4として決定される。この結果、第4分割点M4は、第1頂点と第8分割点M8の中点よりも第1頂点に近い位置に決定され、第4分割点N4は、第4頂点と第8分割点N8の中点よりも第4頂点に近い位置に決定される。次に、図55に示すように、第2分割点M2および第2分割点N2が決定される。具体的には、まず、第4分割点M4と第4分割点N4の間の距離が計算される。そして、当該距離をdとしたときに、第1頂点と第4分割点M4の間をa:dの比率で分割する点と、第4頂点と第4分割点N4の間をa:dの比率で分割する点が計算される。そして、計算された前者の点が第2分割点M2として決定され、計算された後者の点が第2分割点N2として決定される。この結果、第2分割点M2は、第1頂点と第4分割点M4の中点よりも第1頂点に近い位置に決定され、第2分割点N2は、第4頂点と第4分割点N4の中点よりも第4頂点に近い位置に決定される。以下、同様にして、他の分割点第1分割点M1,第3分割点M3,第5分割点M5~第7分割点M7,第9分割点M9~第15分割点M15,第1分割点N1,第3分割点N3,第5分割点N5~第7分割点N7,第9分割点N9~第15分割点N15が決定され、最終的に、図52に示すようなサンプル点が決定される。なお、第1の決定方法では、第1頂点~第4頂点によって囲まれる四角形において、対向する2辺が平行であれば、それらの2辺については16等分するようにしている。以下、図56~図58を参照して、その理由を説明する。実写画像において図56に示すような第1頂点~第4頂点が検出された場合、第1頂点と第4頂点を結ぶ辺と、第2頂点と第3頂点を結ぶ辺とは平行になっている。このような場合、もし仮に、図53~図55に示した方法を用いてそれらの辺を16分割したとすると、図57に示すように、第1頂点と第4頂点を結ぶ辺を分割する分割点は、全体的に第1頂点寄りに位置し、第2頂点と第3頂点を結ぶ辺を分割する分割点は、全体的に第2頂点寄りに位置することになる。しかしながら、実写画像においてマーカー50が図56に示すような形状で表示されている場合すなわち、第1頂点と第4頂点を結ぶ辺と、第2頂点と第3頂点を結ぶ辺とが平行である場合には、カメラから第1頂点までの距離と、カメラから第4頂点までの距離とは、ほぼ同じである。同様に、カメラから第2頂点までの距離と、カメラから第3頂点までの距離とは、ほぼ同じである。したがって、このような場合には、図58に示すように、第1頂点と第4頂点を結ぶ辺と、第2頂点と第3頂点を結ぶ辺を16等分する方が、サンプル点の位置をより適切な位置に決定することができる。次に、図59および図60を参照して、実写画像におけるサンプル点の位置を決定するための第2の決定方法を説明する。第2の決定方法では、図59に示すように、まず、頂点検出処理で検出された4頂点によって囲まれる四角形の対向する2辺を延長して、それら2辺の交点第1消失点および第2消失点が計算される。以下の説明では、頂点検出処理で検出された4頂点のうち、第1消失点と第2消失点を結ぶ直線第1直線に最も近い頂点を頂点Aと称し、当該頂点から反時計回りに頂点B,頂点C,頂点Dと称する。次に、頂点Cを通り、かつ第1消失点と第2消失点を結ぶ直線第1直線に平行な直線第2直線を計算する。そして、頂点Aおよび頂点Bを通る直線と、第2直線との交点第1点と、頂点Aおよび頂点Dを通る直線と、第2直線との交点第2点とを計算する。次に、図60に示すように、第1点から頂点Cまでを16等分する15個の分割点を計算し、これらの分割点と第2消失点とを結ぶ。同様に、頂点Cから第2点までを16等分する15個の分割点を計算し、これらの分割点と第1消失点とを結ぶ。そして、このようにして生成される交点が、実写画像におけるサンプル点として決定される。本願の発明者による検証結果によると、第2の決定方法を採用することで、第1の決定方法よりも適切に実写画像におけるサンプル点を決定できることが確認された。しかしながら、第1の決定方法であっても、図51に示した方法と比べて大きく有利であるので、第1の決定方法を採用するか、第2の決定方法を採用するかは、要求される検出精度や、マーカー50の図柄の複雑さ等の条件を考慮して、設計者が適宜に決定すればよい。上記の第1の決定方法や第2の決定方法のように、少なくとも1組の対向する2辺の各辺を不均等に分割して実写画像におけるサンプル点を決定することによって、図51に示した方法と比較して、より正確にマーカー50を判別することができる。なお、対向する2辺の各辺を不均等に分割する方法としては、上記の第1の決定方法や第2の決定方法に限らず、他の方法を採用してもよい。なお、頂点検出処理で検出された第1頂点~第4頂点のどの頂点が、マーカー50の左上頂点,左下頂点,右下頂点,右上頂点のどの頂点に対応しているかは、頂点検出処理の直後には分からない。したがって、第1頂点が左上頂点に対応している場合と、第1頂点が左下頂点に対応している場合と、第1頂点が右下頂点に対応している場合と、第1頂点が右上頂点に対応している場合の4つの場合が考えられるので、図柄判別処理では、これらの4つの場合について、それぞれ、パターン定義データとの照合が行われる。その結果、実写画像における左上頂点の座標と、左下頂点の座標と、右下頂点の座標と、右上頂点の座標が検出され、これらがマーカー位置情報としてメインメモリ32に記憶される。ところで、ゲーム装置10では、カメラからリアルタイムに順次取得される実写画像に基づいて、上記のような輪郭検出処理、頂点検出処理、粗判別処理および図柄判別処理を、所定の周期例えば、60分の1秒の周期で繰り返し実行する。これにより、実写画像におけるマーカー50の位置をリアルタイムに検出することができる。しかしながら、マーカー50に対する光の当たり具合などの原因により、実写画像にマーカー50が表示されているにもかかわらず、実写画像におけるマーカー50の輪郭および頂点の検出に一時的に失敗することがあり得る。マーカー50の輪郭および頂点の検出に一時的に失敗すると、例えば図4に示す状態において、ユーザがゲーム装置10を移動させていないにもかかわらず仮想オブジェクト60が一時的に消えることになり、仮想オブジェクト60が頻繁に消えたり出現したりすると、ユーザの興味がそがれてしまうことになる。本実施形態では、上記のような好ましくない現象意図しないマーカー位置の変動を防止するために、現在の実写画像からマーカー50の輪郭および頂点の検出に失敗した場合には、直前の実写画像から検出されたマーカー50の頂点またはサンプル点の位置に基づいて、現在の実写画像に対して図柄判別処理を行う。なお、現在の実写画像とは、現在処理中の実写画像を意味するものであって、必ずしもカメラで撮像された最新の実写画像を意味するものではない。具体的に説明すると、現在の実写画像からマーカー50の輪郭および頂点の検出に失敗した場合には、図61に示すように、直前の実写画像から検出されたマーカー50の4頂点または、それらの4頂点から決定されたサンプル点の位置を、メインメモリ32に記憶されているマーカー位置情報から取得する。そして、図62に示すように、直前の実写画像から検出されたマーカー50の4頂点の位置に基づいて、現在の実写画像におけるサンプル点の位置を決定し、こうして決定したサンプル点または、前回の図柄判別処理において決定されたサンプル点の画素値を用いて、図柄判別処理が行われる。そして、当該図柄判別処理の結果、現在の実写画像において、直前の実写画像と同じ位置にマーカー50が存在すると判定された場合には、直前の実写画像におけるマーカー50の4頂点の座標を、現在の実写画像に対応するマーカー位置情報としてメインメモリ32に記憶する。上記のような処理により、ユーザがゲーム装置10を移動させていない場合には、実写画像におけるマーカー50の輪郭および頂点の検出に一時的に失敗したとしても、マーカー50の位置を検出することが可能となる。したがって、前述のように、ユーザがゲーム装置10を移動させていないにもかかわらず仮想オブジェクト60が頻繁に消えたり出現したりするような現象の発生を防止することができる。なお、現在の実写画像におけるマーカー50の位置は、直前の実写画像におけるマーカー50の位置から少しずれている可能性がある。そこで、他の実施形態では、直前の実写画像におけるマーカー50の位置だけでなく、直前の実写画像におけるマーカー50の位置の近傍の範囲を対象として、図柄判別処理を行うようにしてもよい。例えば、直前の実写画像から検出されたマーカー50の4頂点の位置を少しずつずらしながら図柄判別処理を複数回実行し、それらの結果のうち、パターン定義データとの類似度が最も高い4頂点の位置を、現在の実写画像におけるマーカー50の4頂点の位置として決定してもよい。なお、本実施形態では、現在の実写画像からマーカー50の輪郭および頂点の検出に失敗した場合に、直前の実写画像から検出されたマーカー50の頂点またはサンプル点の位置に基づいて、現在の実写画像に対して図柄判別処理を行っているが、これに限らず、現在の実写画像以前の他の任意の実写画像から検出されたマーカー50の頂点またはサンプル点の位置に基づいてすなわち、メインメモリ32にすでに記憶されている、他の任意の実写画像に対応するマーカー位置情報に基づいて、現在の実写画像に対して図柄判別処理を行ってもよい。なお、本実施形態では、現在の実写画像からマーカー50の輪郭および頂点の検出に失敗した場合に、直前の実写画像から検出されたマーカー50の頂点またはサンプル点の位置に基づいて、現在の実写画像に対して図柄判別処理を行っているが、このような処理は、図48~図60に示したようなパターンマッチング手法を用いて図柄判別処理を行う場合に限らず、公知の他の任意のパターンマッチング手法を用いて図柄判別処理を行う場合にも効果的である。マーカー位置補正処理次に、マーカー位置補正処理について説明する。マーカー位置補正処理とは、図柄判別処理において検出されたマーカー50の位置すなわち、マーカー50の黒領域の4頂点の位置を適宜に補正する処理である。マーカー位置補正処理について具体的に説明する前に、まず、マーカー位置補正処理を行わなければ、どういう不具合が発生し得るかについて説明する。前述したように、実写画像におけるマーカー50の位置は、実写画像に対する輪郭検出処理結果に基づいて検出される。この輪郭検出処理では、エッジ判定閾値と各画素の輝度値とを比較することによってエッジ画素を検出している。ここで、エッジ判定閾値に非常に近い輝度値を有する画素があった場合、例えば、或る実写画像においては、その画素は黒領域だと判定され、次の実写画像においては、その画素が白領域だと判定されることがある。これは、カメラすなわちゲーム装置10を全く動かしていない場合にも起こり得る。環境光等の影響で、各画素の輝度値は時間的にわずかに変動し得るからである。こうして、輪郭検出処理の結果が変動すると、最終的に検出される、実写画像におけるマーカー50の位置も変動するため、例えば、図4に示した仮想オブジェクト60の位置や向きが、ユーザがゲーム装置10を動かしていないにもかかわらず変動することになってしまう。すなわち、仮想空間画像がぶれているように見えてしまう。このような好ましくない現象を防ぐまたは緩和するために、本実施形態では、マーカー位置補正処理が行われる。マーカー位置補正処理では、まず、直前の実写画像から検出されたマーカー50の位置と、現在の実写画像から検出されたマーカー50の位置とに基づいて、実写画像におけるマーカー50の移動量を計算する。図63を参照して、実写画像におけるマーカー50の移動量の計算方法の一例を説明する。図63に示すように、直前の実写画像から検出されたマーカー50の左上頂点をVp1、左下頂点をVp2、右下頂点をVp3、右上頂点をVp4とし、現在の実写画像から検出されたマーカー50の左上頂点をVc1、左下頂点をVc2、右下頂点をVc3、右上頂点をVc4とする。そして、Vp1とVc1の距離をaとし、Vp2とVc2の距離をbとし、Vp3とVc3の距離をcとし、Vp4とVc4の距離をdとすると、実写画像におけるマーカー50の移動量は、a^2b^2c^2d^2となる^は累乗を示す。なお、上記の計算方法は単なる一例に過ぎず、実写画像におけるマーカー50の移動量の計算方法は、これに限定されない。実写画像におけるマーカー50の移動量が算出されると、次に、当該移動量に基づいて、図柄判別処理において検出されたマーカー50の位置を補正する。図64を参照して、マーカー50の位置の補正方法について説明する。マーカー50の移動量がD1未満である場合には、現在の実写画像におけるマーカー50の各頂点Vc図63のVc1~Vc4の位置が、前回検出された各頂点Vp図63のVp1~Vp4の位置へとそれぞれ補正される。なお、D1は、所定の閾値であって、後述するように、実写画像上でのマーカー50の大きさに応じて、その値は変化する。マーカー50の移動量がD1以上、D2未満である場合には、現在の実写画像におけるマーカー50の各頂点Vc図63のVc1~Vc4の位置が、Vp×AVc×1-Aにより計算される位置へと補正される。なお、D2は、D1よりも大きい所定の閾値であって、後述するように、実写画像上でのマーカー50の大きさに応じて、その値は変化する。また、Aは、0よりも大きく、1よりも小さい所定値であって、後述するように、マーカー50の動きベクトルに応じて、その値は変化する。マーカー50の移動量がD2以上である場合には、現在の実写画像におけるマーカー50の各頂点Vc図63のVc1~Vc4の位置の補正は行われない。上記のように、マーカー50の移動量がD1未満である場合すなわち、マーカー50の移動量が非常に小さい場合には、直前の実写画像におけるマーカー50の位置から、マーカー50が全く移動していないものとして扱われる。よって、上記のような、意図しないマーカー位置の変動を防止することができ、その結果として、仮想空間画像のぶれを防止することができる。また、マーカー50の移動量がD1以上、D2未満である場合すなわち、マーカー50の移動量が小さい場合には、図65に示すように、直前の実写画像におけるマーカー50の位置と現在の実写画像におけるマーカー50の位置とを結ぶ線分上の位置すなわち、VpからVcまでの線分を1-A:Aの比率で内分する点に、マーカー50の位置が補正される。よって、上記のような、意図しないマーカー位置の変動を緩和することができ、その結果として、仮想空間画像のぶれを緩和することができる。また、マーカー50の移動量がD1未満である場合とは異なり、補正後のマーカー50の位置は、直前の実写画像におけるマーカー50の位置よりも、現在の実写画像におけるマーカー50の位置に近い位置となるため、ユーザがゲーム装置10を小さくまたはゆっくりと動かした場合に、意図しないマーカー位置の変動を緩和しつつも、ゲーム装置10の動きに応じてマーカー50の位置すなわち、仮想オブジェクト60の位置が更新される。なお、マーカー50の移動量がD2以上である場合すなわち、マーカー50の移動量が大きい場合には、マーカー50の位置の補正は行われない。よって、ユーザがゲーム装置10を急激に大きく動かした場合に、そのようなゲーム装置10の急激な動きに即座に反応してマーカー50の位置が更新されるので、例えば図4における仮想オブジェクト60がマーカー50から大きくずれて表示されてしまうことはない。次に、上記の閾値D1およびD2の決定方法について説明する。前述のように、上記の閾値D1およびD2は、実写画像におけるマーカー50の移動量がどの程度かすなわち、非常に小さいか、小さいか、大きいかを判断するための閾値であるが、これらの閾値は、実写画像上でのマーカー50の大きさに応じて変更するのが好ましい。以下、図66および図67を参照して、その理由を説明する。図66は、実写画像上でのマーカー50の大きさが大きいときすなわち、現実世界において、マーカー50の位置がカメラに近いときに、仮想オブジェクト60を直前のマーカー位置に表示した例である。ここで、直前のマーカー位置と現在のマーカー位置との距離実写画像上での距離はDであるとする。この場合、ユーザにとって、仮想オブジェクト60は現在のマーカー位置から大きくずれていないように見える。図67は、実写画像上でのマーカー50の大きさが小さいときすなわち、現実世界において、マーカー50の位置がカメラから遠いときに、仮想オブジェクト60を直前のマーカー位置すなわち、直前の実写画像におけるマーカー50の位置に表示した例である。ここでも、直前のマーカー位置と現在のマーカー位置との距離実写画像上での距離は図66と同じくDであるとする。この場合、ユーザにとって、仮想オブジェクト60は現在のマーカー位置から大きくずれているように見える。図66および図67から明らかなように、直前のマーカー位置と現在のマーカー位置との距離実写画像上での距離が同じであっても、実写画像上でのマーカー50の大きさが小さいほど、ユーザにとって、直前のマーカー位置と現在のマーカー位置とが大きくずれているように見える。そこで、図68に示すように、実写画像上でのマーカー50の大きさが大きい場合にはD1の値を大きくし、実写画像上でのマーカー50の大きさが小さい場合にはD1の値を小さくするのが好ましい。すなわち、実写画像上でのマーカー50の大きさが小さいほど、D1の値を小さくするのが好ましい。同様に、図69に示すように、実写画像上でのマーカー50の大きさが大きい場合にはD2の値を大きくし、実写画像上でのマーカー50の大きさが小さい場合にはD2の値を小さくするのが好ましい。すなわち、実写画像上でのマーカー50の大きさが小さいほど、D2の値を小さくするのが好ましい。なお、実写画像上のマーカー50の大きさの計算方法としては、種々の方法が考えられる。例えば、実写画像上のマーカー50の面積を、実写画像上のマーカー50の大きさとして計算してもよい。他の実施形態では、実写画像上のマーカー50の2つの対角線の外積の大きさを、実写画像上のマーカー50の大きさとして計算してもよい。さらに他の実施形態では、実写画像上のマーカー50の4頂点を内包する円の直径を、実写画像上のマーカー50の大きさとして計算してもよい。さらに他の実施形態では、実写画像上のマーカー50のX軸方向の幅およびY軸方向の幅に基づいて、実写画像上のマーカー50の大きさを計算してもよい。次に、上記の所定値Aの決定方法について説明する。前述のように、マーカー50の移動量がD1以上、D2未満である場合には、図65に示すように、直前の実写画像におけるマーカー50の位置と現在の実写画像におけるマーカー50の位置とを結ぶ線分を1-A:Aの比率で内分する点に、マーカー50の位置が補正される。ここで、Aの値を小さい値例えば、0.1に固定した場合には、直前の実写画像におけるマーカー50の位置とほぼ同じ位置に、マーカー50の位置が補正されることになる。したがって、応答性が低下し、実写画像におけるマーカー50の位置が変化しても、仮想オブジェクト60の位置はそれほど変化しないことになる。よって、例えば、ユーザがゲーム装置10を所望の方向へゆっくりと継続的に動かしたときに、仮想オブジェクト60がマーカー50からはっきりとずれて見えてしまうという問題がある。逆に、Aの値を大きい値例えば、0.9に固定した場合には、現在の実写画像におけるマーカー50の位置とほぼ同じ位置に、マーカー50の位置が補正されることになる。したがって、応答性は向上するものの、前述したような意図しないマーカー位置の変動を緩和する効果が大きく損なわれてしまうという問題がある。本実施形態では、上記のような2つの問題点を両方とも解決するために、マーカー50の動きベクトルに応じてAの値を変化させている。具体的には、或る実写画像におけるマーカー50の位置例えば、マーカー50の各頂点の位置と、その直前の実写画像におけるマーカー50の位置とに基づいて、マーカー50がどの方向へ移動したかを示す動きベクトルを順次計算してメインメモリ32に順次記憶する。そして、新たに計算された動きベクトルと、メインメモリ32に記憶されている過去に計算された動きベクトルとに基づいて、実写画像においてマーカー50が一定方向概ね一定方向であってもよいに継続して移動しているかどうかを判定し、一定方向に継続して移動している場合にはAの値を大きくし、そうでない場合にはAの値を小さくする。上記のようにAの値を変化させることにより、例えば、ユーザがゲーム装置10を所望の方向へゆっくりと継続的に動かしている間は応答性が向上するので、仮想オブジェクト60がマーカー50から大きくずれて見えてしまうことがない。また、それ以外の状況では応答性が低下するので、前述したような意図しないマーカー位置の変動を緩和する効果が十分に発揮される。なお、本実施形態では、図64のように、マーカー50の移動量がD1未満の場合と、D1以上、D2未満の場合と、D2以上の場合とで、マーカー50の位置例えば4頂点の位置の補正方法を変えているが、これは単なる一例に過ぎず、マーカー50の位置の補正方法はこれに限定されない。例えば、他の実施形態として、図70に示すように、マーカー50の移動量がD3未満の場合には、現在の実写画像に基づいて検出されたマーカー50の位置を、直前の実写画像におけるマーカー50の位置へと補正し、D3以上の場合には、現在の実写画像に基づいて検出されたマーカー50の位置を補正せずにそのまま用いるようにしてもよい。これにより、意図しないマーカー位置の変動を防止することができる。なお、D3は、所定の閾値であって、実写画像上でのマーカー50の大きさに応じて、その値が変化してもよい。また、さらに他の実施形態として、図71に示すように、マーカー50の移動量がD4未満の場合には、現在の実写画像に基づいて検出されたマーカー50の位置を、直前の実写画像におけるマーカー50の位置と現在の実写画像におけるマーカー50の位置とを結ぶ線分を1-A:Aの比率で内分する点へと補正し、D4以上の場合には、現在の実写画像に基づいて検出されたマーカー50の位置を補正せずにそのまま用いるようにしてもよい。これにより、意図しないマーカー位置の変動を緩和することができる。なお、D4は、所定の閾値であって、実写画像上でのマーカー50の大きさに応じて、その値が変化してもよい。なお、マーカー位置補正処理では、前述のように、マーカー50の移動量やマーカー50の動きベクトルを用いて処理を行っているが、実写画像に同一図柄の複数のマーカーが含まれている場合には、それらのどのマーカーがどこに移動したのかをそれぞれ判別する必要がある。例えば、図72に示すように、直前の実写画像から互いに同一図柄の複数のマーカーマーカーA,マーカーBが検出され、現在の実写画像から、それらと同一図柄の複数のマーカー第1マーカー,第2マーカーが検出された場合、それらの対応関係を判別する必要がある。本実施形態では、直前の実写画像から検出された各マーカーの代表点から、現在の実写画像から検出された各マーカーの代表点までの距離をそれぞれ計算し、当該距離が所定の閾値よりも小さい場合に、それらの2つのマーカーが互いに対応していると判定する。マーカーの代表点としては、例えば、マーカーの4頂点の座標を平均することによって得られる座標を利用することができる。図72を参照して具体的に説明すると、まず、マーカーAの代表点から第1マーカーまでの距離を計算し、当該距離が所定の閾値当該閾値は、実写画像上でのマーカーAまたは第1マーカーの大きさが大きくなるほど、大きくなるようにするのが好ましいよりも小さい場合には、マーカーAと第1マーカーとが対応していると判定する。同様に、マーカーAの代表点から第2マーカーまでの距離を計算し、当該距離が所定の閾値当該閾値は、実写画像上でのマーカーAまたは第2マーカーの大きさが大きくなるほど、大きくなるようにするのが好ましいよりも小さい場合には、マーカーAと第2マーカーとが対応していると判定する。また同様に、マーカーBの代表点から第1マーカーまでの距離を計算し、当該距離が所定の閾値当該閾値は、実写画像上でのマーカーBまたは第1マーカーの大きさが大きくなるほど、大きくなるようにするのが好ましいよりも小さい場合には、マーカーBと第1マーカーとが対応していると判定する。また同様に、マーカーBの代表点から第2マーカーまでの距離を計算し、当該距離が所定の閾値当該閾値は、実写画像上でのマーカーBまたは第2マーカーの大きさが大きくなるほど、大きくなるようにするのが好ましいよりも小さい場合には、マーカーBと第2マーカーとが対応していると判定する。上記のようにしてマーカーの対応関係を判別することによって、実写画像に同一図柄の複数のマーカーが含まれている場合でも、各マーカーの移動量や動きベクトルを計算することができる。なお、実写画像に異なる図柄の複数のマーカーが含まれている場合には、それらの図柄に基づいてマーカーの対応関係を判別することができる。なお、上記マーカー位置補正処理では、直前の実写画像から検出されたマーカー50の位置と、現在の実写画像から検出されたマーカー50の位置とに基づいて、実写画像におけるマーカー50の移動量を計算しているが、これに限らず、例えば、現在の実写画像以前に取得された任意の実写画像例えば、現在の実写画像の2つ前に取得された実写画像などから検出されたマーカー50の位置と、現在の実写画像から検出されたマーカー50の位置とに基づいて、実写画像におけるマーカー50の移動量を計算してもよい。以上のように、輪郭検出処理、頂点検出処理、粗判別処理、図柄判別処理およびマーカー位置補正処理を経て、実写画像からマーカー50の位置例えば、マーカー50の黒領域の4頂点の位置が検出される。そして、こうして検出されたマーカー50の位置に基づいて、現実空間におけるカメラ外側撮像部左23aまたは外側撮像部右23bとマーカー50との位置関係が計算され、この計算結果に基づいて、仮想空間における仮想カメラと仮想オブジェクト60の位置関係が設定される。そして、当該仮想カメラに基づいて仮想空間画像が生成されて、カメラによって撮像された実写画像に仮想空間画像が合成されて、当該合成された画像が上側LCD22に表示される。次に、画像認識プログラムに基づいてCPU311によって実行される画像認識処理の流れを具体的に説明する。図73は、メインメモリ32に格納されるプログラムおよびデータを示している。メインメモリ32には、画像認識プログラム70、画像生成プログラム71、仮想オブジェクトデータ72、仮想カメラデータ73、パターン定義データ74、実写画像データ75、エッジ判定閾値76、エッジ画素情報77、直線情報78、頂点情報79、マーカー位置情報80、動きベクトル情報81および各種変数82が記憶される。画像認識プログラム70は、実写画像からマーカーを検出するためのコンピュータプログラムであり、画像生成プログラム71は、画像認識プログラムに基づいて検出されたマーカーの位置に基づいて実写画像に仮想空間画像を合成するためのコンピュータプログラムである。これらのプログラムは、データ保存用内部メモリ35からメインメモリ32にロードされてもよいし、外部メモリ44からメインメモリ32にロードされてもよいし、無線通信モジュール36またはローカル通信モジュール37を通じてサーバ装置や他のゲーム装置からメインメモリ32にロードされてもよい。なお、画像生成プログラム71に基づいてCPU311によって実行される画像生成処理については、公知技術を用いればよく、本発明との関連性も低いため、本明細書では詳細な説明を省略する。また、画像認識プログラム70および画像生成プログラム71が、1つの画像処理プログラムとして構成されてもよい。仮想オブジェクトデータ72は、仮想空間に配置される仮想オブジェクト60に関する形状や色や模様等に関するデータである。仮想カメラデータ73は、仮想空間に配置される仮想カメラの位置や姿勢等に関するデータである。パターン定義データ74は、マーカー50を判別するために用いられる、マーカー50の図柄を示すデータであり、予め記憶されている図49。実写画像データ75は、カメラ外側撮像部左23aまたは外側撮像部右23bによって撮像された実写画像の画像データである。エッジ判定閾値76は、輪郭検出処理において、実写画像の各画素がエッジ画素であるか否かを判定するための閾値である。エッジ画素情報77は、輪郭検出処理において、エッジ画素であると判定された画素に関する情報である。直線情報78は、直線算出処理において生成および更新される直線に関する情報である。頂点情報79は、頂点算出処理において算出される頂点に関する情報である。マーカー位置情報80は、頂点検出処理によって生成され、マーカー位置補正処理によって必要に応じて更新される、実写画像におけるマーカー50の位置マーカー50の黒領域の4頂点の位置を示す情報である。マーカー位置情報80には、現在の実写画像から検出されたマーカー50の位置を示す情報80aだけでなく、直前の実写画像から検出されたマーカー50の位置を示す情報80bも含まれる。動きベクトル情報81は、マーカー50が移動した方向を示す動きベクトルを示す情報である。各種変数82は、画像認識プログラム70や画像生成プログラム71の実行時に利用される各種変数例えば、白領域輝度Lw、黒領域輝度Lb、閾値D1、閾値D2、所定値Aなどである。まず、図74を参照して、画像認識プログラムに基づいてCPU311によって実行される画像認識処理全体の流れを説明する。ステップS1において、CPU311は、カメラ外側撮像部左23aまたは外側撮像部右23bによって撮像された実写画像を取得して、メインメモリ32に格納する。ステップS2において、CPU311は、輪郭検出処理を行う。輪郭検出処理の具体的な流れについては、図75を参照して後述する。ステップS3において、CPU311は、ステップS2の輪郭検出処理において輪郭が検出されたかどうかを判断し、輪郭が検出された場合には処理はステップS4に進み、そうでない場合には処理はステップS9に進む。ステップS4において、CPU311は、頂点検出処理を行う。頂点検出処理の具体的な流れについては、図76を参照して後述する。ステップS5において、CPU311は、ステップS4の頂点検出処理において頂点が検出されたかどうかを判断し、頂点が検出された場合には処理はステップS6に進み、そうでない場合には処理はステップS9に進む。ステップS6において、CPU311は、粗判別処理を行う。粗判別処理の具体的な流れについては、図77を参照して後述する。ステップS7において、CPU311は、ステップS6の粗判別処理の結果に基づいて、マーカー50の候補となるような頂点が存在するかどうかを判断し、マーカー50の候補となるような頂点が検出された場合には処理はステップS8に進み、そうでない場合には処理はステップS12に進む。ステップS8において、CPU311は、図柄判別処理を行う。図柄判別処理の具体的な流れについては、図78を参照して後述する。ステップS9において、CPU311は、直前の実写画像におけるマーカー50の位置すなわち、直前の実写画像において検出された頂点の位置または直前の実写画像において決定されたサンプル点の位置に基づいて、図柄判別処理を行う。ステップS10において、CPU311は、ステップS8またはステップS9の図柄判別処理においてマーカー50が検出されたかどうかを判断し、頂点が検出された場合には処理はステップS11に進み、そうでない場合には処理はステップS12に進む。ステップS11において、CPU311は、マーカー位置補正処理を行う。マーカー位置補正処理の具体的な流れについては、図79を参照して後述する。ステップS12において、CPU311は、画像認識処理を終了するかどうかを判断し、画像認識処理を続行する場合にはステップS1に戻り、画像認識処理を終了する場合には画像認識プログラムの実行を終了する。次に、図75を参照して、画像認識プログラムに基づいてCPU311によって実行される輪郭検出処理の流れを説明する。ステップS21において、CPU311は、注目画素Pnを決定する。ステップS22において、CPU311は、Ln-8-Lnが60以上かどうかを判定し、60以上である場合にはステップS23に進み、そうでない場合にはステップS34に進む。ステップS23において、CPU311は、変数kに初期値として8を代入する。ステップS24において、CPU311は、Ln-k-1がLn-kよりも小さいかどうかを判定し、Ln-k-1がLn-kよりも小さい場合にはステップS25に進み、そうでない場合にはステップS26に進む。ステップS25において、CPU311は、変数kをインクリメントする。ステップS26において、CPU311は、Ln-kを白領域輝度値Lwとして決定する。ステップS27において、CPU311は、LnがLn2よりも小さいかどうかを判定し、LnがLn2よりも小さい場合にはステップS28に進み、そうでない場合には処理はステップS30に進む。ステップS28において、CPU311は、Lw-Ln2が60以上かどうかを判定し、60以上である場合にはステップS29に進み、そうでない場合にはステップS30に進む。ステップS29において、CPU311は、Ln2を黒領域輝度値Lbとして決定する。ステップS30において、CPU311は、Lnを黒領域輝度値Lbとして決定する。ステップS31において、CPU311は、LwとLbの平均値をエッジ判定閾値として決定する。ステップS32において、CPU311は、エッジ判定閾値に基づいて起点エッジ画素を検出する。当該起点エッジ画素の座標は、エッジ画素情報としてメインメモリ32に格納される。ステップS33において、CPU311は、起点エッジ画素を起点として隣接するエッジ画素を順次辿っていくエッジ辿り処理を実行する。当該エッジ辿り処理で順次検出されるエッジ画素の座標は、エッジ画素情報としてメインメモリ32に順次格納される。ステップS34において、CPU311は、次の注目画素が存在するかどうかを判定し、存在する場合にはステップS21に戻り、そうでない場合にはすなわち、実写画像の全ての注目画素候補についての処理が完了した場合には輪郭検出処理を終了する。次に、図76を参照して、画像認識プログラムに基づいてCPU311によって実行される頂点検出処理の流れを説明する。ステップS41において、CPU311は、最初の直線すなわち、起点エッジ画素Pe0からエッジ画素Pe5までを結んだベクトルV0-5に対応する直線Li0-5を生成し、当該直線を示すデータをメインメモリ32に格納する。ステップS42において、CPU311は、生成された直線と、当該直線に続くベクトルとが同一直線上にあるかどうかを、直線に対するベクトルの角度に基づいて判定する図24参照。そして、同一直線上にあると判定された場合には、ステップS43に進み、そうでない場合にはステップS44に進む。ステップS43において、CPU311は、直線を更新する。具体的には、直線の後端からベクトルの先端までに含まれるサンプルエッジ画素に基づいて、最小自乗法により直線を算出し、当該算出結果に応じて直線を更新するすなわち、メインメモリ32に格納されている当該直線を示すデータを更新する。ステップS44において、CPU311は、直線と、当該直線に続くベクトルとの交点において黒領域が凸角となっているかどうかを、直線に対するベクトルの角度に基づいて判定する図24参照。そして、凸角となっていると判定された場合にはステップS45に進み、そうでない場合にはステップS47に進む。ステップS45において、CPU311は、ベクトルに対応する直線を新たに生成し、当該新たに生成した直線を示すデータをメインメモリ32に新たに格納する。ステップS46において、CPU311は、黒領域の輪郭を一周し終えたすなわち、起点エッジ画素に戻ってきたかどうかを判断し、一周し終えた場合にはステップS49に進み、そうでない場合にはステップS42に戻る。ステップS47において、CPU311は、直線算出処理すなわちステップS42~ステップS46の処理が反時計回りに行われているかどうかを判断し、反時計回りに行われている場合にはステップS48に進み、そうでない場合にはステップS49に進む。なお、本実施形態では、直線算出処理は最初に反時計回りで開始されるものとする。ステップS48において、CPU311は、直線算出処理を反時計回りから時計回りへと変更する。ステップS49において、CPU311は、メインメモリ32に格納されている複数の直線を表すデータに基づいて、それらの複数の直線の中に、同一直線上かつ同一方向の複数の直線が存在するかどうかを判断する。そして、同一直線上かつ同一方向の複数の直線が存在する場合にはステップS50に進み、そうでない場合にはステップS51に進む。ステップS50において、CPU311は、同一直線上かつ同一方向の複数の直線を、1つの直線に統合し、メインメモリ32に格納されている複数の直線に関するデータを更新する。ステップS51において、CPU311は、メインメモリ32に格納されている複数の直線に関するデータに基づいて、これら複数の直線の中から4つの直線を選出する。具体的には、各直線の長さを計算し、最も長い直線と2番目に長い直線と3番目に長い直線と4番目に長い直線を選出する。ステップS52において、CPU311は、上記4つの直線の交点の位置を計算することによって、黒領域の4つの頂点の位置を算出する。そして、当該4つの頂点の位置をメインメモリ32に格納して、頂点検出処理を終了する。次に、図77を参照して、画像認識プログラムに基づいてCPU311によって実行される粗判別処理の流れを説明する。ステップS61において、CPU311は、頂点検出処理において検出された4頂点が、除外条件Aを満たすかどうかを判断する。除外条件Aとは、前述したように、いずれかの隣り合う2頂点の距離が近すぎる場合である。そして、除外条件Aを満たす場合にはステップS65に進み、そうでない場合にはステップS62に進む。ステップS62において、CPU311は、頂点検出処理において検出された4頂点が、除外条件Bを満たすかどうかを判断する。除外条件Bとは、前述したように、いずれかの頂点と当該頂点に隣接しない2辺のいずれかとの距離が近すぎる場合である。そして、除外条件Bを満たす場合にはステップS65に進み、そうでない場合にはステップS63に進む。ステップS63において、CPU311は、頂点検出処理において検出された4頂点が、除外条件Cを満たすかどうかを判断する。除外条件Cとは、前述したように、いずれかの対向する2辺の直線が概ね同一方向である場合である。そして、除外条件Cを満たす場合にはステップS65に進み、そうでない場合にはステップS64に進む。ステップS64において、CPU311は、頂点検出処理において検出された4頂点が、除外条件Dを満たすかどうかを判断する。除外条件Dとは、前述したように、凹角が含まれている場合である。そして、除外条件Dを満たす場合にはステップS65に進み、そうでない場合には粗判別処理を終了する。ステップS65において、CPU311は、頂点検出処理において検出された4頂点を、図柄判別処理の処理対象から除外する例えば、当該4頂点に関するデータをメインメモリ32から削除する。そして、粗判別処理を終了する。次に、図78を参照して、画像認識プログラムに基づいてCPU311によって実行される図柄判別処理の流れを説明する。ステップS71において、CPU311は、頂点検出処理で検出された4頂点で囲まれる四角形の4辺のうち、いずれか対向する2辺を選択する。ステップS72において、CPU311は、ステップS71で選択した2辺が平行概ね平行である場合も含むであるかどうかを判定し、平行である場合にはステップS73に進み、そうでない場合にはステップS74に進む。ステップS73において、CPU311は、ステップS71で選択した2辺のそれぞれを16等分する。ステップS74において、CPU311は、ステップS71で選択した2辺のそれぞれを不均等に例えば、図53~図55に示す方法で16分割する。ステップS75において、CPU311は、頂点検出処理で検出された4頂点で囲まれる四角形の4辺のうち、ステップS71において選択しなかった方の対向する2辺を選択する。ステップS76において、CPU311は、ステップS75で選択した2辺が平行概ね平行である場合も含むであるかどうかを判定し、平行である場合にはステップS77に進み、そうでない場合にはステップS78に進む。ステップS77において、CPU311は、ステップS75で選択した2辺のそれぞれを16等分する。ステップS78において、CPU311は、ステップS75で選択した2辺のそれぞれを不均等に例えば、図53~図55に示す方法で16分割する。ステップS79において、CPU311は、頂点検出処理で検出された4頂点で囲まれる四角形の4辺を分割することによって決定されたサンプル点の画素値と、パターン定義データにおいて定義されているサンプル点の画素値とに基づいて、これらの類似度を表す相関係数を計算する。ステップS80において、CPU311は、ステップS79において計算された相関係数に基づいて、頂点検出処理で検出された4頂点で囲まれる領域に表示されている図柄と、マーカー50の図柄とが一致するか否か判別する。そして、図柄が一致する場合にはステップS81に進み、そうでない場合には図柄判別処理を終了する。ステップS81において、CPU311は、実写画像におけるマーカー50の4頂点左上頂点,左下頂点,右下頂点,右上頂点の座標を、マーカー位置情報としてメインメモリ32に記憶する。次に、図79を参照して、画像認識プログラムに基づいてCPU311によって実行されるマーカー位置補正処理の流れを説明する。ステップS91において、CPU311は、実写画像上でのマーカー50の大きさを計算し、その結果をメインメモリ32に格納する。ステップS92において、CPU311は、現在の実写画像から検出されたマーカーと同一のマーカーが直前の実写画像に存在したかどうかを判断し、存在した場合にはステップS93に進み、そうでない場合にはマーカー位置補正処理を終了するすなわち、現在の実写画像から検出されたマーカーの位置を補正せずにそのまま利用する。なお、現在の実写画像から検出されたマーカーと同一のマーカーが直前の実写画像に存在したかどうかどうかは、例えば、ステップS91で計算されたマーカー50の大きさに基づいて、図72を参照して説明したような方法によって、判断することができる。ステップS93において、CPU311は、ステップS91で計算されたマーカー50の大きさに基づいて、閾値D1およびD2を計算し図68、図69、メインメモリ32に格納する。ステップS94において、CPU311は、マーカー50の移動量がD1未満かどうかを判断し、D1未満である場合にはステップS95に進み、そうでない場合にはステップS96に進む。ステップS95において、CPU311は、図柄判別処理において検出されたマーカー50の位置を、前回検出されたマーカーの位置へと補正する。そして、マーカー位置補正処理を終了する。ステップS96において、CPU311は、マーカー50の移動量がD2未満かどうかを判断し、D2未満である場合にはステップS97に進み、そうでない場合にはマーカー位置補正処理を終了するすなわち、現在の実写画像から検出されたマーカーの位置を補正せずにそのまま利用する。ステップS97において、CPU311は、マーカー50の動きベクトルを計算し、当該動きベクトルと過去の動きベクトルとに基づいて所定値Aを決定する。具体的には、これらの動きベクトルに基づいて、実写画像においてマーカー50が一定方向に継続して移動しているかどうかを判定し、一定方向に継続して移動している場合にはAの値を大きくし、そうでない場合にはAの値を小さくする。ここで計算された動きベクトルは、動きベクトル情報81としてメインメモリ32に格納される。ステップS98において、CPU311は、直前の実写画像におけるマーカー50の位置と現在の実写画像におけるマーカー50の位置とを結ぶ線分を1-A:Aの比率で内分する点に、マーカー50の位置を補正する。そして、マーカー位置補正処理を終了する。変形例なお、上記実施形態では、1輪郭検出処理、2頂点検出処理、3粗判別処理、4図柄判別処理、および5マーカー位置補正処理に関して、それぞれ、具体的な処理方法を説明したが、これらの処理のうちの1以上の処理を、公知技術で置き換えても構わない。また、画像認識処理の処理対象となる画像は、カメラからリアルタイムに順次取得される実写画像に限らず、例えば、過去にカメラによって撮像されてデータ保存用内部メモリ35等に保存されている画像であってもよいし、他の装置から受信した画像であってもよいし、外部記憶媒体を通じて取得した画像であってもよい。また、画像認識処理の認識対象は、マーカー50の黒領域に限らず、画像に含まれる任意の物体例えば、人の顔や手などまたは図柄であってもよい。また、画像認識処理の処理結果は、AR技術に限らず、任意の他の用途にも利用することができる。また、本実施形態では、ゲーム装置10において画像処理画像認識処理および画像生成処理を実行しているが、これに限らず、据え置き型ゲーム装置、パーソナルコンピュータ、携帯電話などの任意の情報処理装置または情報処理システムにおいて画像処理を実行してもよい。また、本実施形態では、上記画像処理を1台のゲーム装置10において実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置によって分担して実行してもよい。また、本実施形態では、画像認識プログラム等を1つのCPU311によって実行しているが、他の実施形態では、画像認識プログラム等を複数のCPU311によって分担して実行してもよい。また、本実施形態では、画像認識プログラム等に基づいてCPU311によって上記画像処理が実行されるが、他の実施形態では、画像処理の一部をCPU311以外のハードウェアによって実現してもよい。また、上記実施形態では、カメラによって撮像された実写画像に仮想空間画像を合成して上側LCD22に表示しているビデオシースルー方式が、これに替えて、透過型の表示画面に仮想オブジェクトを表示し、当該透過型の表示画面を通じて見える実世界にあたかも仮想オブジェクトが実在するかのようにユーザに視認されるような光学シースルー方式を採用してもよい。"