(57)【特許請求の範囲】
【請求項１】
撮像手段によって撮像された撮像画像から、複数の図形を含む所定の撮像対象を検出する情報処理装置のコンピュータにおいて実行される画像認識プログラムであって、
前記撮像手段によって撮像された撮像画像を取得する画像取得手段と、
前記撮像画像から前記複数の図形をそれぞれ検出する図形検出手段と、
前記図形検出手段によって検出された複数の図形のそれぞれの中心位置を算出することによって所定の撮像対象の位置または向きを検出する対象検出手段として前記コンピュータを機能させる、画像認識プログラムであって、
前記所定の撮像対象は、前記複数の図形が内部に描かれた第１図形を含み、
前記画像認識プログラムは、前記撮像画像において第１の間隔で得られる画素値に基づいて前記撮像画像から前記第１図形の領域を検出する領域検出手段として前記コンピュータをさらに実行させ、
前記図形検出手段は、前記領域検出手段が検出した領域内から前記複数の図形をそれぞれ検出し、
前記対象検出手段は、前記領域検出手段によって検出された領域内の撮像画像において前記第１の間隔よりも小さい第２の間隔で得られる画素値に基づいて各図形の中心位置を算出する、画像認識プログラム。
【請求項２】
前記図形検出手段は、前記複数の図形の領域をそれぞれ検出し、
前記対象検出手段は、前記図形検出手段によって検出された各領域の中心位置をそれぞれ算出する位置算出手段を有する、請求項１に記載の画像認識プログラム。
【請求項３】
前記図形検出手段は、前記複数の図形の領域を示す輪郭をそれぞれ検出し、
前記位置算出手段は、前記図形検出手段によって検出された各輪郭で示される各領域の中心位置をそれぞれ算出する、請求項２に記載の画像認識プログラム。
【請求項４】
前記位置算出手段は、前記図形検出手段によって検出された各輪郭を表す各画素の位置を求め、求められた位置の平均値を算出することにより、前記各領域の中心位置をそれぞれ算出する、請求項３に記載の画像認識プログラム。
【請求項５】
前記対象検出手段は、前記複数の図形のそれぞれの中心位置に基づいて、所定の直線を算出する直線算出手段を有し、
前記直線算出手段により算出された所定の直線に基づいて、前記所定の撮像対象と前記撮像手段との位置関係を算出する位置関係手段として前記コンピュータをさらに機能させる、請求項１から請求項４のいずれか１項に記載の画像認識プログラム。
【請求項６】
前記複数の図形はそれぞれ円形状である、請求項１から請求項５のいずれか１項に記載の画像認識プログラム。
【請求項７】
前記画像認識プログラムは、前記領域検出手段によって検出された前記第１図形の領域において、当該第１図形の輪郭を抽出する輪郭抽出手段として前記コンピュータをさらに機能させ、
前記対象検出手段は、前記輪郭抽出手段によって抽出された輪郭内の領域から前記複数の図形をそれぞれ検出する、請求項１に記載の画像認識プログラム。
【請求項８】
前記輪郭抽出手段は、前記撮像画像において所定間隔で得られる画素値に基づいて当該第１図形の輪郭を抽出し、
前記対象検出手段は、前記撮像画像において前記所定間隔よりも小さい間隔で得られる画素値に基づいて、当該輪郭内の領域から前記複数の図形をそれぞれ検出する、請求項７に記載の画像認識プログラム。
【請求項９】
前記画像認識プログラムは、前記輪郭抽出手段によって抽出された輪郭が前記第１図形の形状を表すか否かを判定する形状判定手段として前記コンピュータを機能させ、
前記対象検出手段は、前記形状判定手段によって前記所定の撮像対象の形状を表すと判定される輪郭に対応する領域内から前記複数の図形をそれぞれ検出する、請求項７または請求項８に記載の画像認識プログラム。
【請求項１０】
前記所定の撮像対象は、前記第１図形と異なる位置に第２図形を含み、
前記撮像画像から前記第２図形を検出し、第１図形に対して第２図形が配置される方向に基づいて前記所定の撮像対象の向きを特定する向き特定手段として前記コンピュータをさらに機能させる、請求項１に記載の画像認識プログラム。
【請求項１１】
前記図形検出手段は、前記撮像画像において所定間隔で得られる画素値に基づいて前記複数の図形の領域をそれぞれ検出し、
前記位置算出手段は、前記撮像画像において前記所定間隔よりも小さい間隔で得られる画素値に基づいて、前記図形検出手段によって検出された各領域の中心位置をそれぞれ算出する、請求項２に記載の画像認識プログラム。
【請求項１２】
前記対象検出手段は、前記図形検出手段によって検出された領域の個数が、所定範囲内の個数であるか否かを判定する個数判定手段をさらに有し、
前記位置算出手段は、前記所定範囲内の個数の領域が検出された前記第１図形の領域について、前記図形検出手段によって検出された各領域の中心位置を算出する、請求項２または請求項１１に記載の画像認識プログラム。
【請求項１３】
前記所定の撮像対象には、３つ以上の図形が含まれており、
前記対象検出手段は、前記３つ以上の図形の中心位置に基づいて前記所定の撮像対象の位置および向きを検出する、請求項１から請求項１２のいずれか１項に記載の画像認識プログラム。
【請求項１４】
前記所定の撮像対象には、所定の直線上に３以上の所定数の図形が配置されており、
前記対象検出手段は、算出された中心位置のうちから、２以上であって前記所定数よりも少ない数の中心位置に少なくとも基づいて前記所定の直線を算出し、算出された所定の直線に基づいて前記所定の撮像対象の位置および向きを検出する、請求項１から請求項１３のいずれか１項に記載の画像認識プログラム。
【請求項１５】
撮像手段によって撮像された撮像画像から、複数の図形を含む所定の撮像対象を検出する画像認識装置であって、
前記撮像手段によって撮像された撮像画像を取得する画像取得手段と、
前記撮像画像から前記複数の図形をそれぞれ検出する図形検出手段と、
前記図形検出手段によって検出された複数の図形のそれぞれの中心位置を算出することによって所定の撮像対象の位置または向きを検出する対象検出手段とを備え、
前記所定の撮像対象は、前記複数の図形が内部に描かれた第１図形を含み、
前記画像認識装置は、前記撮像画像において第１の間隔で得られる画素値に基づいて前記撮像画像から前記第１図形の領域を検出する領域検出手段をさらに備え
前記図形検出手段は、前記領域検出手段が検出した領域内から前記複数の図形をそれぞれ検出し、
前記対象検出手段は、前記領域検出手段によって検出された領域内の撮像画像において前記第１の間隔よりも小さい第２の間隔で得られる画素値に基づいて各図形の中心位置を算出する、画像認識装置。
【請求項１６】
撮像手段によって撮像された撮像画像から、複数の図形を含む所定の撮像対象を検出する画像認識システムであって、
前記撮像手段によって撮像された撮像画像を取得する画像取得手段と、
前記撮像画像から前記複数の図形をそれぞれ検出する図形検出手段と、
前記図形検出手段によって検出された複数の図形のそれぞれの中心位置を算出することによって所定の撮像対象の位置または向きを検出する対象検出手段とを備え、
前記所定の撮像対象は、前記複数の図形が内部に描かれた第１図形を含み、
前記画像認識システムは、前記撮像画像において第１の間隔で得られる画素値に基づいて前記撮像画像から前記第１図形の領域を検出する領域検出手段をさらに備え
前記図形検出手段は、前記領域検出手段が検出した領域内から前記複数の図形をそれぞれ検出し、
前記対象検出手段は、前記領域検出手段によって検出された領域内の撮像画像において前記第１の間隔よりも小さい第２の間隔で得られる画素値に基づいて各図形の中心位置を算出する、画像認識システム。
【請求項１７】
撮像手段によって撮像された撮像画像から、複数の図形を含む所定の撮像対象を検出するための画像認識方法であって、
前記撮像手段によって撮像された撮像画像を取得する画像取得ステップと、
前記撮像画像から前記複数の図形をそれぞれ検出する図形検出ステップと、
前記図形検出ステップにおいて検出された複数の図形のそれぞれの中心位置を算出することによって所定の撮像対象の位置または向きを検出する対象検出ステップとを含み、
前記所定の撮像対象は、前記複数の図形が内部に描かれた第１図形を含み、
前記画像認識方法は、前記撮像画像において第１の間隔で得られる画素値に基づいて前記撮像画像から前記第１図形の領域を検出する領域検出ステップをさらに含み、
前記図形検出ステップにおいては、前記領域検出ステップによって検出された領域内から前記複数の図形がそれぞれ検出され、
前記対象検出においては、前記領域検出ステップによって検出された領域内の撮像画像において前記第１の間隔よりも小さい第２の間隔で得られる画素値に基づいて各図形の中心位置を算出する、画像認識方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像手段によって撮像された画像から所定の撮像対象を認識するための画像認識プログラム、画像認識装置、画像認識システム、および画像認識方法に関する。
【背景技術】
【０００２】
従来、カメラ等の撮像手段によって撮像された画像（撮像画像）から所定の撮像対象を検出する技術がある。例えば、非特許文献１には、拡張現実感技術において、カメラによる撮像画像に含まれる四角形のマーカに対して画像認識処理を行うことが記載されている。非特許文献１では、撮像画像に対して固定の閾値を用いて２値化を行うことで連結領域を抽出し、抽出された連結領域から所定の撮像対象でないもの（例えば、大きすぎたり小さすぎたりするもの）を除外した上で、連結領域の輪郭線を抽出する。そして、輪郭線から４本の線分を求めて四角形のマーカの頂点を算出することでマーカの位置を検出している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】加藤博一，Mark Billinghurst，浅野浩一，橘啓八郎、「マーカー追跡に基づく拡張現実感システムとそのキャリブレーション」、日本バーチャルリアリティ学会論文誌  Ｖｏｌ．４  Ｎｏ．４、１９９９年
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１に記載の認識方法では、撮像対象（マーカ）の輪郭から撮像対象の位置（４頂点）を検出しているので、例えば手ぶれ等によって撮像画像にぶれが生じている場合には、撮像対象の位置を正確に検出することができないおそれがある。すなわち、撮像画像にぶれが生じている場合には、撮像対象の輪郭が正確に得られていない可能性があるため、輪郭から撮像対象の位置を算出しても正確な位置を得ることができないのである（図７参照）。
【０００５】
それ故、本発明は、撮像画像にぶれが生じている場合であっても、撮像対象の位置を正確に検出することができる画像認識プログラム、画像認識装置、画像認識システム、および画像認識方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の（１）〜（１６）の構成を採用した。
【０００７】
（１）
本発明は、撮像手段によって撮像された撮像画像から、複数の図形を含む所定の撮像対象を検出する情報処理装置のコンピュータにおいて実行される画像認識プログラムである。画像認識プログラムは、画像取得手段と、図形検出手段と、対象検出手段としてコンピュータを機能させる。画像取得手段は、撮像手段によって撮像された撮像画像を取得する。図形検出手段は、複数の図形をそれぞれ検出する。対象検出手段は、図形検出手段によって検出された複数の図形のそれぞれの中心位置を算出することによって所定の撮像対象の位置または向きを検出する。
【０００８】
上記「撮像手段」は、情報処理装置が予め備えているものであってもよいし、情報処理装置とは別体で構成されるものであってもよい。また、情報処理手段が撮像手段を予め備えている場合、撮像手段は、情報処理装置に固定的に取り付けられていてもよいし、情報処理装置に対して着脱可能であってもよい。また、撮像手段は、情報処理装置の動作に連動して動作してもよいし、情報処理装置の動作とは独立して動作するものであってもよい。
上記「所定の撮像対象」は、典型的にはマーカであるが、複数の図形を含む物であればどのような物でもよい。また、上記「図形」は、後述する実施形態においては複数個の円形図形（図６）であるが、その形状、数、大きさ、色はどのようなものであってもよい。例えば、上記「図形」は、円形でもよいし、楕円形でもよいし、多角形であってもよい。
また、上記「図形」は、後述する実施形態では第１図形の内部に描かれた内部図形であるが、ある図形の内部に描かれている必要はない。すなわち、上記「図形検出手段」は、後述する実施形態や下記（２）のように、（第１図形の領域を検出してから）第１図形の領域内から複数の図形を検出してもよいし、（第１図形の領域を検出せずに）撮像画像の全領域から複数の図形を検出してもよい。
上記「情報処理装置」とは、後述する実施形態に記載のゲーム装置の他、コンピュータプログラムを実行することによって情報処理を行う任意のコンピュータを含む概念である。また、上記「情報処理装置」は、携帯型か否かを問わない。
上記「画像認識プログラム」とは、一例としては、後述する実施形態に記載のゲームプログラムであるが、パーソナルコンピュータや携帯端末において実行されるアプリケーションプログラムを含む概念である。
上記「画像取得手段」は、情報処理装置内に備えられた撮像手段から内部バス等を介して撮像画像を取得してもよいし、情報処理装置の外部の撮像手段から通信によって撮像画像を取得してもよいし、撮像手段によって撮像された撮像画像を記憶した記憶媒体が情報処理装置に装着されることによって当該記憶媒体から撮像画像を取得してもよい。
上記「図形検出手段」は、上記複数の図形を検出するものであればよく、複数の図形を検出する具体的な方法はどのような方法であってもよい。上記「図形検出手段」は、例えば、後述する実施形態や下記（３）のように図形の領域を検出してもよいし、下記（４）のように図形の輪郭を抽出してもよいし、パターンマッチングの手法を用いて図形を検出してもよい。
上記「図形の（それぞれの）中心位置」とは、図形の厳密な意味での中心の位置である必要はなく、各種の演算によって算出することが可能な、図形の中央付近の位置であればよい。例えば、「図形の中心位置」は、図形の輪郭を表す画素の平均値として算出されてもよいし、撮像画像の各画素に何らかの重み（輝度値等）が付される場合には、図形の領域内の各画素の重心位置として算出されてもよい。
上記「中心位置を算出することによって所定の撮像対象の位置を検出する」とは、中心位置に基づいて所定の撮像対象の位置を特定することができればよい。したがって、上記「対象検出手段」は、例えば、後述する実施形態や下記（６）や下記（１６）のように、中心位置から直線（近似直線）を算出し、近似直線から所定の撮像対象の位置を特定してもよいし、後述する（マーカ位置の算出に関する変形例）に記載のように、中心位置をそのまま所定の撮像対象の位置として用いてもよい。また、複数の図形の各中心位置から、撮像画像内における所定の撮像対象の位置または向きを特定することができるので、対象検出手段は、当該位置および向きの少なくとも一方を検出するものであればよい。
【０００９】
上記（１）の構成によれば、第１図形の輪郭ではなく、図形の中心位置によって所定の撮像対象の位置が検出される。ここで、撮像画像にぶれが生じている場合には所定の撮像対象の輪郭を正確に検出することが困難であるので、輪郭からでは所定の撮像対象の位置を正確に検出することができない。これに対して、上記中心位置は、撮像画像にぶれが生じていても正確に算出されるので、上記（１）の構成によれば、撮像画像にぶれが生じている場合でも、所定の撮像対象の位置または向きを正確に算出することができる。
【００１０】
（２）
所定の撮像対象は、複数の図形が内部に描かれた第１図形を含んでいてもよい。このとき、画像認識プログラムは、撮像画像から第１図形の領域を検出する領域検出手段としてコンピュータをさらに実行させる。図形検出手段は、領域検出手段が検出した領域内から複数の図形をそれぞれ検出する。
【００１１】
上記「領域検出手段」は、所定の撮像対象の第１図形を検出するものであればよく、第１図形を検出する具体的な方法はどのような方法であってもよい。上記「領域検出手段」は、例えば、第１図形の輪郭を抽出することで第１図形を検出してもよいし、パターンマッチングの手法を用いて第１図形を検出してもよい。
【００１２】
上記（２）の構成によれば、まず第１図形の領域が検出され、検出された領域内から、第１図形の内部に描かれる図形（内部図形）が検出される。これによれば、所定の撮像対象ではない物を内部図形として検出してしまう誤検出を防止することができ、内部図形を確実に検出することができる。
【００１３】
（３）
図形検出手段は、複数の図形の領域をそれぞれ検出してもよい。このとき、対象検出手段は、図形検出手段によって検出された各領域の中心位置をそれぞれ算出する位置算出手段を有する。
【００１４】
上記（３）の構成によれば、複数の図形の領域をそれぞれ検出した後で、検出された領域の中心位置を算出することで、中心位置を容易に算出することができる。
【００１５】
（４）
図形検出手段は、複数の図形の領域を示す輪郭をそれぞれ検出してもよい。このとき、位置算出手段は、図形検出手段によって検出された各輪郭で示される各領域の中心位置をそれぞれ算出する。
【００１６】
上記（４）の構成によれば、複数の図形の領域の輪郭を検出した後で、検出された輪郭の中心位置を算出することで、中心位置を容易に算出することができる。
【００１７】
（５）
位置算出手段は、図形検出手段によって検出された各輪郭を表す各画素の位置を求め、求められた位置の平均値を算出することにより、各領域の中心位置をそれぞれ算出してもよい。
【００１８】
上記（５）の構成によれば、輪郭を表す画素の位置の平均値を算出することで、中心位置を容易かつ正確に算出することができる。
【００１９】
（６）
対象検出手段は、複数の図形のそれぞれの中心位置に基づいて、所定の直線を算出する直線算出手段を有していてもよい。このとき、直線算出手段により算出された所定の直線に基づいて、所定の撮像対象と撮像手段との位置関係を算出する位置関係手段としてコンピュータをさらに機能させる。
【００２０】
上記（６）の構成によれば、中心位置に基づいて算出される直線によって、撮像画像内における所定の撮像対象の位置および向きを特定することができる。したがって、上記直線に基づくことによって上記位置関係を正確に算出することができる。
また、上記（６）の構成によれば、上記位置関係を用いて、後述する実施形態における仮想画像を撮像画像に合成することも可能である。つまり、上記（６）の構成によれば、撮像画像と仮想画像とを合成した合成画像を表示する拡張現実感技術において、撮像画像のぶれに強い（撮像画像にぶれが生じた場合でも所定の撮像対象を正確に検出できる）認識処理を用いることができる。なお、拡張現実感技術においては、ユーザが撮像手段を動かして使用する状況が多いと想定され、後述する実施形態のようにゲームに拡張現実感技術が用いられる場合には、そのような状況が特に多いと考えられる。したがって、上記（６）の構成を拡張現実感技術に用いる場合においては、上記（１）の構成による画像のぶれに強い認識処理が特に有効である。
【００２１】
（７）
複数の図形はそれぞれ円形状であってもよい。
【００２２】
上記（７）の構成によれば、所定の撮像対象がどのような向きであっても、撮像画像内における図形の形状が同じになる。したがって、所定の撮像対象の向きによって中心位置が変化することがないので、より正確に所定の撮像対象を検出することができる。
【００２３】
（８）
領域検出手段は、撮像画像において第１の間隔で得られる画素値に基づいて第１図形の領域を検出してもよい。このとき、対象検出手段は、領域検出手段によって検出された領域内の撮像画像において第１の間隔よりも小さい第２の間隔で得られる画素値に基づいて各図形の中心位置を算出する。
【００２４】
上記「第２の間隔」は、上記「第１の間隔」よりも小さければどのような長さであってもよい。また、後述する実施形態のように、撮像対象を検出する処理において複数種類の処理が実行される場合、対象検出手段は、中心位置を算出する処理を第２の間隔で得られる画素値に基づいて行えばよく、その他の処理についてはどのような精度で行ってもよい。
【００２５】
上記（８）の構成によれば、領域検出手段によってまず低い精度で第１図形が検出された後、第１図形内の複数の図形の中心位置を算出する処理が高い精度で行われる。これによれば、第１図形の検出処理が低い精度で行われるとともに、複数の図形を検出する処理の処理範囲が第１図形の領域内に限られるので、認識処理を短時間で行うことができる。また、検出された図形の中心位置を算出する処理は高い精度で行われるので、所定の撮像対象の位置を精度良く検出することができる。したがって、上記（８）の構成によれば、対象の検出精度を維持しつつ、検出に要する時間を短縮することができる認識処理を提供することができる。
【００２６】
（９）
画像認識プログラムは、領域検出手段によって検出された第１図形の領域において、当該第１図形の輪郭を抽出する輪郭抽出手段としてコンピュータをさらに機能させてもよい。このとき、対象検出手段は、輪郭抽出手段によって抽出された輪郭内の領域から複数の図形をそれぞれ検出する。
【００２７】
上記（９）の構成によれば、輪郭抽出手段によって抽出された輪郭内の領域から図形が検出されるので、図形を検出する範囲を適切に決定することができる。これによれば、図形の検出処理を無駄な領域に対して行わずに済むので、認識処理をより効率良く行うことができる。
【００２８】
（１０）
輪郭抽出手段は、撮像画像において所定間隔で得られる画素値に基づいて当該第１図形の輪郭を抽出してもよい。このとき、対象検出手段は、撮像画像において所定間隔よりも小さい間隔で得られる画素値に基づいて、当該輪郭内の領域から複数の図形をそれぞれ検出する。
【００２９】
上記（１０）の構成によれば、輪郭の抽出処理は図形の検出処理よりも低い精度で行われるので、輪郭の抽出処理をより短時間で行うことができる。その結果、認識処理をより短時間で行うことができる。
【００３０】
（１１）
画像認識プログラムは、輪郭抽出手段によって抽出された輪郭が第１図形の形状を表すか否かを判定する形状判定手段としてコンピュータを機能させてもよい。このとき、対象検出手段は、形状判定手段によって所定の撮像対象の形状を表すと判定される輪郭に対応する領域内から複数の図形をそれぞれ検出する。
【００３１】
上記（１１）の構成によれば、抽出された輪郭に基づいて、領域検出手段によって検出された領域内に第１図形が含まれるか否かを判定することができる。そして、領域内に第１図形が含まれない場合には、その領域については図形の検出処理が行われない。したがって、上記（１１）の構成によれば、第１図形を含まない領域を、図形の検出処理の対象から除くことができるので、図形の検出処理が無駄に行われることを防止することができる。これによれば、認識処理を効率良く行うことができ、認識処理をより短時間で行うことができる。特に、上記（１０）と（１１）との構成を組み合わせる場合には、（低精度で行われるため）相対的に高速に行われる輪郭の抽出処理によって、（高精度で行われるため）相対的に時間の要する図形の検出処理を省略することができるので、認識処理をより効率良く行うことができる。
【００３２】
（１２）
所定の撮像対象は、第１図形と異なる位置に第２図形を含んでいてもよい。このとき、画像認識プログラムは、撮像画像から第２図形を検出し、第１図形に対して第２図形が配置される方向に基づいて所定の撮像対象の向きを特定する向き特定手段としてコンピュータをさらに機能させる。
【００３３】
上記（１２）の構成によれば、第１図形に対する第２図形の方向によって、所定の撮像対象の向きを特定することができる。また、上記（１２）の構成によれば、所定の撮像対象において第２図形は第１図形とは異なる位置に形成されるので、第１図形の内部には内側図形のみを描くことができる。そのため、内側図形を検出する際に、第２図形またはその一部を誤検出することがなく、内側図形を正確に検出することができる。したがって、認識処理の精度をより向上することができる。
【００３４】
（１３）
図形検出手段は、撮像画像において所定間隔で得られる画素値に基づいて複数の図形の領域をそれぞれ検出してもよい。このとき、位置算出手段は、撮像画像において所定間隔よりも小さい間隔で得られる画素値に基づいて、図形検出手段によって検出された各領域の中心位置をそれぞれ算出する。
【００３５】
上記（１３）の構成によれば、複数の図形の領域の検出処理は、中心位置の算出処理よりも低い精度で行われるので、複数の図形の領域の検出処理をより短時間で行うことができる。その結果、認識処理をより短時間で行うことができる。
【００３６】
（１４）
対象検出手段は、図形検出手段によって検出された領域の個数が、所定範囲内の個数であるか否かを判定する個数判定手段をさらに有していてもよい。このとき、位置算出手段は、所定範囲内の個数の領域が検出された第１図形の領域について、図形検出手段によって検出された各領域の中心位置を算出する。
【００３７】
上記（１４）の構成によれば、図形検出手段によって検出された領域の個数が適切な数であるか否かを判定することができる。そして、領域の個数が適切でない場合には、領域検出手段によって検出された領域内に第１図形が含まれないと判断され、中心位置の算出処理が行われない。したがって、上記（１４）の構成によれば、第１図形を含まない領域を、中心位置の算出処理の対象から除くことができるので、当該算出処理が無駄に行われることを防止することができる。これによれば、認識処理を効率良く行うことができ、認識処理をより短時間で行うことができる。特に、上記（１３）と（１４）との構成を組み合わせる場合には、（低精度で行われるため）相対的に高速に行われる第１図形の領域の検出処理によって、（高精度で行われるため）相対的に時間の要する中心位置の算出処理を省略することができるので、認識処理をより効率良く行うことができる。
【００３８】
（１５）
所定の撮像対象には、３つ以上の図形が含まれていてもよい。このとき、対象検出手段は、３つ以上の図形の中心位置に基づいて所定の撮像対象の位置および向きを検出する。
【００３９】
上記「（所定の撮像対象の）向きを検出する」とは、所定の撮像対象の向きを一意に特定することに限らない。例えば、後述する実施形態におけるステップＳ２６の処理では、中心位置から４つの頂点の位置を算出するが、これら４つの頂点の位置では、マーカ５１が９０°、１８０°または２７０°回転した状態と回転しない状態とを区別することができない。上記（１５）の構成における対象検出手段は、上記ステップＳ２６の処理のように、所定の撮像対象の向きを一意に特定しない処理を行うものであってもよい。
【００４０】
上記（１５）の構成によれば、３つ以上の図形の中心位置を算出することによって、所定の撮像対象における３点の（撮像画像内の）位置を特定することができるので、所定の撮像対象の位置および向きを検出することができる。
【００４１】
（１６）
所定の撮像対象には、所定の直線上に３以上の所定数の図形が配置されていてもよい。このとき、対象検出手段は、算出された中心位置のうちから、２以上であって所定数よりも少ない数の中心位置に少なくとも基づいて所定の直線を算出し、算出された所定の直線に基づいて所定の撮像対象の位置および向きを検出する。
【００４２】
上記（１６）の構成によれば、撮像画像における所定の直線の位置および向きによって所定の撮像対象の位置および向きを検出することができる。ここで、所定の直線は、所定数よりも少ない図形の中心位置から算出されるので、所定数全ての図形が検出されない場合であっても算出可能である。したがって、上記（１６）の構成によれば、図形の数に冗長性を持たせることにより、図形のいくつかが検出されない場合でも所定の撮像対象の位置および向きを検出することができる。これによって、より確実に所定の撮像対象を検出することができ、認識処理の成功率を上げることができる。
【００４３】
また、本発明は、上記各手段と同等の手段を備える画像認識装置の形態で実施されてもよい。この画像認識装置においては、画像認識プログラムを実行するコンピュータによって上記各手段が実現されてもよいし、専用回路によって上記各手段の一部または全部が実現されてもよい。また、本発明は、上記各手段を備える１以上の情報処理装置からなる画像認識システムの形態で実施されてもよい。このとき、１以上の情報処理装置は、有線または無線通信によって直接通信を行ってもよいし、ネットワークを介して通信を行ってもよい。さらに、本発明は、上記各手段によって行われる画像認識方法の形態で実施されてもよい。
【００４４】
また、本発明は、拡張現実感技術において用いられるマーカの形態で実施されてもよい。すなわち、マーカは、撮像手段によって撮像された撮像画像に対して所定の認識処理を行うことによって撮像画像内におけるマーカの位置および向きを算出し、当該マーカの位置および向きに基づいて仮想オブジェクトの画像を生成し、当該撮像画像に対して当該仮想オブジェクトの画像を合成して表示する画像表示システムにおいて用いられる。マーカは、複数の内部図形を備える。複数の内部図形は、それぞれの中心位置が（画像表示システムによって）算出される。また、中心位置は、マーカの位置および向きを表す情報を（画像表示システムが）算出するために用いられる。また、マーカは、後述する実施形態のように、薄板状の部材に図形が描かれることによって実現されてもよいし、表示装置の画面に図形が表示されることによって実現されてもよい。
【発明の効果】
【００４５】
本発明によれば、所定の撮像対象に含まれる複数の図形の中心位置をそれぞれ算出し、各中心位置によって所定の撮像対象の位置を検出することによって、撮像画像にぶれが生じている場合でも、所定の撮像対象の位置を正確に算出することができる。
【図面の簡単な説明】
【００４６】
【図１】本実施形態に係るゲーム装置の外観図
【図２】ゲーム装置の内部構成の一例を示すブロック図
【図３】ゲーム装置を使用する例を示す図
【図４】ゲーム装置に表示されるゲーム画像の一例を示す図
【図５】本実施形態における画像認識処理で用いられる対象領域を示す図
【図６】本実施形態において用いられるマーカを示す図
【図７】左右の輪郭がぼけた第１図形の画像を示す図
【図８】第１図形の一部における内部図形の中心位置を示す図
【図９】第１図形内の各内部図形の中心点を示す図
【図１０】ゲームプログラムによる処理において用いられる各種データを示す図
【図１１】ゲーム装置において実行されるゲーム処理の流れを示すメインフローチャート
【図１２】図１１に示す認識処理（ステップＳ２）の流れを示すフローチャート
【図１３】撮像画像においてステップＳ１１の処理において画素値が参照される画素を示す図
【図１４】図１２に示すマーカ検出処理（ステップＳ１５）の流れを示すフローチャート
【図１５】ステップＳ２１の処理対象となる領域の一例を示す図
【図１６】撮像画像においてステップＳ２１の処理において画素値が参照される画素を示す図
【図１７】第１図形を表す撮像画像の一例を示す図
【図１８】図１７に示す各直線Ｌ１〜Ｌ４によって算出される４つの頂点Ｐ１１〜Ｐ１４を示す図
【図１９】ステップＳ２７で設定される所定領域の一例を示す図
【図２０】本実施形態の変形例におけるマーカを示す図
【図２１】本実施形態の他の変形例におけるマーカを示す図
【発明を実施するための形態】
【００４７】
［ゲーム装置のハードウェア構成］
以下、図面を参照して、本発明の一実施形態に係る画像認識プログラムおよび画像認識装置について説明する。本発明は、表示装置に画像を表示させる任意の情報処理装置（コンピュータ）において画像認識プログラムが実行されることによって実現することができるが、本実施形態では、情報処理装置の一例として図１に示すゲーム装置１を用いる場合について説明する。
【００４８】
図１は、本実施形態に係るゲーム装置１の外観図である。ここでは、ゲーム装置の一例として、携帯ゲーム装置を示す。なお、ゲーム装置１は、カメラを内蔵しており、当該カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【００４９】
図１において、ゲーム装置１は折り畳み型の携帯ゲーム装置であり、開いた状態（開状態）のゲーム装置１を示している。ゲーム装置１は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【００５０】
ゲーム装置１は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に連結されている。図１の例では、下側ハウジング１１および上側ハウジング２１は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置１を使用する。また、ユーザは、ゲーム装置１を使用しない場合には閉状態としてゲーム装置１を保管する。また、図１に示した例では、ゲーム装置１は、上記閉状態および開状態のみでなく、下側ハウジング１１と上側ハウジング２１とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング２１を下側ハウジング１１に対して任意の角度で静止させることができる。
【００５１】
下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２が設けられる。下側ＬＣＤ１２は横長形状であり、長辺方向が下側ハウジング１１の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置１に内蔵されている表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を利用しても良い。また、ゲーム装置１は、任意の解像度の表示装置を利用することができる。なお、下側ＬＣＤ１２には、内側カメラ２３または外側カメラ２５で撮像されている画像がリアルタイムに表示される。
【００５２】
下側ハウジング１１には、入力装置として、各操作ボタン１４Ａ〜１４Ｋおよびタッチパネル１３が設けられる。図１に示されるように、各操作ボタン１４Ａ〜１４Ｋのうち、方向入力ボタン１４Ａ、操作ボタン１４Ｂ、操作ボタン１４Ｃ、操作ボタン１４Ｄ、操作ボタン１４Ｅ、電源ボタン１４Ｆ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、下側ハウジング１１の内側主面上に設けられる。内側主面とは、上側ハウジング２１と下側ハウジング１１とを折り畳んだときに内側となる面である。図１に示す例では、方向入力ボタン１４Ａおよび電源ボタン１４Ｆは、下側ハウジング１１の内側主面の中央付近に設けられる下側ＬＣＤ１２に対して、左右一方側（図１では左側）の当該主面上に設けられる。また、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、下側ＬＣＤ１２に対して左右他方側（図１では右側）となる下側ハウジング１１の内側主面上に設けられる。方向入力ボタン１４Ａ、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、ゲーム装置１に対する各種操作を行うために用いられる。方向入力ボタン１４Ａは、例えば選択操作等に用いられる。各操作ボタン１４Ｂ〜１４Ｅは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン１４Ｆは、ゲーム装置１の電源をオン／オフするために用いられる。
【００５３】
なお、図１においては、操作ボタン１４Ｉ〜１４Ｋの図示を省略している。例えば、Ｌボタン１４Ｉは、下側ハウジング１１の上側面の左端部に設けられ、Ｒボタン１４Ｊは、下側ハウジング１１の上側面の右端部に設けられる。Ｌボタン１４ＩおよびＲボタン１４Ｊは、撮影機能を有するゲーム装置１に対して、例えば撮影指示操作（シャッター操作）を行うために用いられる。さらに、音量ボタン１４Ｋは、下側ハウジング１１の左側面に設けられる。音量ボタン１４Ｋは、ゲーム装置１が備えるスピーカの音量を調整するために用いられる。
【００５４】
また、ゲーム装置１は、各操作ボタン１４Ａ〜１４Ｋとは別の入力装置としてさらに、画面上における任意の位置を指定可能な入力装置であるポインティングデバイスの一例として、タッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル１３は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル１３は、抵抗膜方式に限らず、任意の方式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル１３として、例えば下側ＬＣＤ１２の解像度と同じ解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度とが一致している必要はない。また、下側ハウジング１１の右側面には、挿入口（図１では破線で示している）が設けられている。挿入口は、タッチパネル１３に対する操作を行うために用いられるタッチペン２７を収納することができる。なお、タッチパネル１３に対する入力（タッチ入力）は、通常タッチペン２７を用いて行われるが、タッチペン２７に限らずユーザの指でタッチパネル１３を操作することも可能である。
【００５５】
また、下側ハウジング１１の右側面には、メモリカード２８を収納するための挿入口（図１では二点鎖線で示している）が設けられている。この挿入口の内側には、ゲーム装置１とメモリカード２８とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２８は、例えばＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカードであり、コネクタに着脱自在に装着される。メモリカード２８は、例えば、ゲーム装置１によって撮像された画像を記憶（保存）したり、他の装置で生成された画像をゲーム装置１に読み込んだりするために用いられる。
【００５６】
さらに、下側ハウジング１１の上側面には、メモリカード２９を収納するための挿入口（図１では、一点鎖線で示している）が設けられている。この挿入口の内側にも、ゲーム装置１とメモリカード２９とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２９は、ゲームプログラム等の情報処理プログラムを記録した記録媒体であり、下側ハウジング１１に設けられた挿入口に着脱自在に装着される。
【００５７】
下側ハウジング１１と上側ハウジング２１との連結部の左側部分には、３つのＬＥＤ１５Ａ〜１５Ｃが取り付けられる。ここで、ゲーム装置１は、他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ１５Ａは、ゲーム装置１の電源がオンである場合に点灯する。第２ＬＥＤ１５Ｂは、ゲーム装置１の充電中に点灯する。第３ＬＥＤ１５Ｃは、無線通信が確立している場合に点灯する。したがって、３つのＬＥＤ１５Ａ〜１５Ｃによって、ゲーム装置１の電源のオン／オフ状況、充電状況、および、通信確立状況をユーザに通知することができる。
【００５８】
一方、上側ハウジング２１には、上側ＬＣＤ２２が設けられる。上側ＬＣＤ２２は横長形状であり、長辺方向が上側ハウジング２１の長辺方向に一致するように配置される。なお、下側ＬＣＤ１２と同様、上側ＬＣＤ２２に代えて、他の任意の方式および任意の解像度の表示装置を利用しても良い。なお、上側ＬＣＤ２２上を覆うように、タッチパネルを設けてもかまわない。上側ＬＣＤ２２には、例えば、各操作ボタン１４Ａ〜１４Ｋやタッチパネル１３の役割をユーザに教えるための操作説明画面が表示される。
【００５９】
また、上側ハウジング２１には、２つのカメラ（内側カメラ２３および外側カメラ２５）が設けられる。図１に示されるように、内側カメラ２３は、上側ハウジング２１の連結部付近の内側主面に取り付けられる。一方、外側カメラ２５は、内側カメラ２３が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング２１の外側主面（ゲーム装置１が閉状態となった場合に外側となる面であり、図１に示す上側ハウジング２１の背面）に取り付けられる。なお、図１においては、外側カメラ２５を破線で示している。これによって、内側カメラ２３は、上側ハウジング２１の内側主面が向く方向を撮像することが可能であり、外側カメラ２５は、内側カメラ２３の撮像方向の逆方向、すなわち、上側ハウジング２１の外側主面が向く方向を撮像することが可能である。このように、本実施形態では、２つの内側カメラ２３および外側カメラ２５の撮像方向が互いに逆方向となるように設けられる。例えば、ユーザは、ゲーム装置１からユーザの方を見た景色を内側カメラ２３で撮像することができるとともに、ゲーム装置１からユーザの反対側の方向を見た景色を外側カメラ２５で撮像することができる。
【００６０】
なお、上記連結部付近の内側主面には、音声入力装置としてマイク（図２に示すマイク４３）が収納されている。そして、上記連結部付近の内側主面には、マイク４３がゲーム装置１外部の音を検知できるように、マイクロフォン用孔１６が形成される。マイク４３を収納する位置およびマイクロフォン用孔１６の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング１１にマイク４３を収納し、マイク４３を収納位置に対応させて下側ハウジング１１にマイクロフォン用孔１６を設けるようにしても良い。
【００６１】
また、上側ハウジング２１の外側主面には、第４ＬＥＤ２６（図１では、破線で示す）が取り付けられる。第４ＬＥＤ２６は、内側カメラ２３または外側カメラ２５によって撮影が行われた（シャッターボタンが押下された）時点で点灯する。また、内側カメラ２３または外側カメラ２５によって動画が撮影される間点灯する。第４ＬＥＤ２６によって、ゲーム装置１による撮影が行われた（行われている）ことを撮影対象者や周囲に通知することができる。
【００６２】
また、上側ハウジング２１の内側主面の中央付近に設けられる上側ＬＣＤ２２に対して、左右両側の当該主面に音抜き孔２４がそれぞれ形成される。音抜き孔２４の奥の上側ハウジング２１内にはスピーカが収納されている。音抜き孔２４は、スピーカからの音をゲーム装置１の外部に放出するための孔である。
【００６３】
以上に説明したように、上側ハウジング２１には、画像を撮像するための撮像手段である内側カメラ２３および外側カメラ２５と、主に操作説明画面を表示するための表示手段である上側ＬＣＤ２２とが設けられる。一方、下側ハウジング１１には、ゲーム装置１に対する操作入力を行うための入力装置（タッチパネル１３および各操作ボタン１４Ａ〜１４Ｋ）と、撮像された画像を表示するための表示手段である下側ＬＣＤ１２とが設けられる。したがって、ゲーム装置１を使用する際には、ユーザは、下側ＬＣＤ１２に表示される撮像画像（カメラによって撮像された画像）を見ながら、下側ハウジング１１を把持して入力装置に対する入力を行うことができる。
【００６４】
次に、図２を参照して、ゲーム装置１の内部構成を説明する。図２は、ゲーム装置１の内部構成の一例を示すブロック図である。
【００６５】
図２において、ゲーム装置１は、ＣＰＵ３１、メインメモリ３２、メモリ制御回路３３、保存用データメモリ３４、プリセットデータ用メモリ３５、メモリカードインターフェース（メモリカードＩ／Ｆ）３６、メモリカードＩ／Ｆ３７、無線通信モジュール３８、ローカル通信モジュール３９、リアルタイムクロック（ＲＴＣ）４０、電源回路４１、インターフェース回路（Ｉ／Ｆ回路）４２、第１ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４５、第２ＧＰＵ４６、第１ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）４７、第２ＶＲＡＭ４８、およびＬＣＤコントローラ４９等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング１１（または上側ハウジング２１でも良い）内に収納される。
【００６６】
ＣＰＵ３１は、所定のプログラム（ここでは、本実施形態に係る画像表示プログラム）を実行するための情報処理手段である。本実施形態では、画像表示プログラムの一例としてゲームプログラムがゲーム装置１内のメモリ（例えば保存用データメモリ３４）やメモリカード２８および／または２９に記憶されており、ＣＰＵ３１は、当該ゲームプログラムを実行することによって、後述するゲーム処理を実行する。なお、ＣＰＵ３１によって実行されるプログラムは、ゲーム装置１内のメモリに予め記憶されていても良いし、メモリカード２８および／または２９から取得されても良いし、他の機器との通信によって他の機器から取得されても良い。
【００６７】
ＣＰＵ３１には、メインメモリ３２、メモリ制御回路３３、およびプリセットデータ用メモリ３５が接続される。メモリ制御回路３３には、保存用データメモリ３４が接続される。メインメモリ３２は、ＣＰＵ３１のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ３２は、上記ゲーム処理に用いられる各種データを記憶したり、外部（メモリカード２８および２９や他の機器等）から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ３２として、例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。保存用データメモリ３４は、ＣＰＵ３１によって実行されるプログラムや内側カメラ２３および外側カメラ２５によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ３４は、不揮発性の記憶媒体によって構成されており、本実施形態では例えばＮＡＮＤ型フラッシュメモリで構成される。メモリ制御回路３３は、ＣＰＵ３１の指示に従って、保存用データメモリ３４に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ３５は、ゲーム装置１において予め設定される各種パラメータ等のデータ（プリセットデータ）を記憶するための記憶手段である。プリセットデータ用メモリ３５としては、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バスによってＣＰＵ３１と接続されるフラッシュメモリを用いることができる。
【００６８】
メモリカードＩ／Ｆ３６および３７は、それぞれＣＰＵ３１に接続される。メモリカードＩ／Ｆ３６は、コネクタに装着されたメモリカード２８に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。また、メモリカードＩ／Ｆ３７は、コネクタに装着されたメモリカード２９に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。本実施形態では、内側カメラ２３および外側カメラ２５によって撮像された画像データや他の装置から受信された画像データがメモリカード２８に書き込まれたり、メモリカード２８に記憶された画像データがメモリカード２８から読み出されて保存用データメモリ３４に記憶されたり、読み出された画像データがメモリカード２８から読み出されて他の装置へ送信されたりする。また、メモリカード２９に記憶された各種プログラムが、ＣＰＵ３１によって読み出されて実行されたりする。
【００６９】
なお、ゲームプログラムは、メモリカード２９等の外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されても良い。また、ゲームプログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記録されていても良い。なお、ゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体でも良い。
【００７０】
無線通信モジュール３８は、例えばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３９は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール３８およびローカル通信モジュール３９は、ＣＰＵ３１に接続される。ＣＰＵ３１は、無線通信モジュール３８を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール３９を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００７１】
また、ＣＰＵ３１には、ＲＴＣ４０および電源回路４１が接続される。ＲＴＣ４０は、時間をカウントしてＣＰＵ３１に出力する。例えば、ＣＰＵ３１は、ＲＴＣ４０によって計時された時間に基づいて、現在時刻（日付）等を計算することもできる。電源回路４１は、ゲーム装置１が有する電源（典型的には電池であり、下側ハウジング１１に収納される）から供給される電力を制御し、ゲーム装置１の各部品に電力を供給する。
【００７２】
また、ゲーム装置１は、マイク４３およびアンプ４４を備えている。マイク４３およびアンプ４４は、それぞれＩ／Ｆ回路４２に接続される。マイク４３は、ゲーム装置１に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をＩ／Ｆ回路４２に出力する。アンプ４４は、Ｉ／Ｆ回路４２から音声信号を増幅してスピーカ（図示せず）から出力させる。Ｉ／Ｆ回路４２は、ＣＰＵ３１に接続される。
【００７３】
また、タッチパネル１３は、Ｉ／Ｆ回路４２に接続される。Ｉ／Ｆ回路４２は、マイク４３およびアンプ４４（スピーカ）の制御を行う音声制御回路と、タッチパネル１３の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データ（後述する検出座標データ）を生成してＣＰＵ３１に出力する。タッチ位置データは、タッチパネル１３の入力面に対して入力が行われた位置としてタッチパネル１３が検出した位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル１３からの信号の読み込み、および、検出座標データの生成を所定時間に１回の割合で繰り返し行う。
【００７４】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｋから構成され、ＣＰＵ３１に接続される。操作ボタン１４からＣＰＵ３１へは、各操作ボタン１４Ａ〜１４Ｋに対する入力状況（押下されたか否か）を示す操作データが出力される。ＣＰＵ３１は、操作ボタン１４から操作データを取得することによって、操作ボタン１４に対する入力に応じた処理を実行する。
【００７５】
内側カメラ２３および外側カメラ２５は、それぞれＣＰＵ３１に接続される。内側カメラ２３および外側カメラ２５は、ＣＰＵ３１の指示に応じて画像を撮像し、撮像した画像データをＣＰＵ３１に出力する。本実施形態では、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラが画像を撮像して画像データをＣＰＵ３１に送る。なお、内側カメラ２３および外側カメラ２５は動画の撮影も可能である。すなわち、内側カメラ２３および外側カメラ２５は、繰り返し撮像を行って撮像データをＣＰＵ３１へ繰り返し送ることも可能である。
【００７６】
第１ＧＰＵ４５には第１ＶＲＡＭ４７が接続され、第２ＧＰＵ４６には第２ＶＲＡＭ４８が接続される。第１ＧＰＵ４５は、ＣＰＵ３１からの指示に応じて、メインメモリ３２に記憶されている表示画像を生成するためのデータに基づいて第１の表示画像を生成し、第１ＶＲＡＭ４７に描画する。第２ＧＰＵ４６は、第１ＧＰＵ４５と同様に、ＣＰＵ３１からの指示に応じて第２の表示画像を生成し、第２ＶＲＡＭ４８に描画する。第１ＶＲＡＭ４７および第２ＶＲＡＭ４８は、ＬＣＤコントローラ４９に接続されている。
【００７７】
ＬＣＤコントローラ４９は、レジスタ４９１を含む。レジスタ４９１は、ＣＰＵ３１からの指示に応じて０または１の値を記憶する。ＬＣＤコントローラ４９は、レジスタ４９１の値が０の場合は、第１ＶＲＡＭ４７に描画された第１の表示画像を下側ＬＣＤ１２に出力し、第２ＶＲＡＭ４８に描画された第２の表示画像を上側ＬＣＤ２２に出力する。また、レジスタ４９１の値が１の場合は、第１ＶＲＡＭ４７に描画された第１の表示画像を上側ＬＣＤ２２に出力し、第２ＶＲＡＭ４８に描画された第２の表示画像を下側ＬＣＤ１２に出力する。例えば、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれかから取得した画像を下側ＬＣＤ１２に表示させ、所定の処理によって生成した操作説明画面を上側ＬＣＤ２２に表示させることも可能である。
【００７８】
［ゲーム処理の概要］
次に、図３から図９を参照して、上記ゲームプログラムによって実行されるゲーム処理中において行われるゲーム処理について説明する。ゲームプログラムは、カメラによって撮像された現実空間の画像（撮像画像）に対して画像認識処理を行い、画像認識処理の結果に基づいて仮想空間の画像（仮想画像）を撮像画像に対して合成したゲーム画像を表示し、プレイヤにゲームをプレイさせるものである。
【００７９】
図３は、ゲーム装置を使用する例を示す図である。本実施形態においては、図３に示すように、プレイヤ（ユーザ）は、所定の撮像対象としてのマーカ５１を任意の場所（図３では机５０の上）に設置しておき、ゲーム装置１を用いてマーカ５１およびその周辺を撮像する。撮像に用いられるカメラは、内側カメラ２３および外側カメラ２５のいずれであっても良いが、ここでは、外側カメラ２５を用いる場合を例として説明する。マーカ５１は、本実施形態では所定の模様（図６参照）が描かれた薄板状のものが用いられる。
【００８０】
図４は、ゲーム装置に表示されるゲーム画像の一例を示す図である。図４は、図３に示すように机５０の上に置かれたマーカ５１をゲーム装置１が撮像する場合に、ゲーム装置１の上側ＬＣＤ２２に表示されるゲーム画像を示す。なお、本実施形態ではゲーム画像が上側ＬＣＤ２２に表示されるものとするが、ゲーム画像は下側ＬＣＤ１２に表示されてもよい。図４に示すように、上側ＬＣＤ２２には、仮想空間における仮想オブジェクトの画像（仮想画像）として大砲５２の画像が撮像画像に合成されて表示される。これによって、実際の机５０の上に大砲５２が存在するかのような画像を表示することができる。なお、図４では、仮想オブジェクトの一例として大砲５２の画像が表示されるが、仮想オブジェクトはどのようなものであってもよい。このように、本実施形態においては、拡張現実感技術を用いて、仮想オブジェクトがあたかも現実空間に存在するかのようなゲーム画像が表示される。
【００８１】
なお、撮像画像に対して仮想画像を合成した画像（合成画像）は、例えば次の処理によって生成することができる。すなわち、ゲーム装置１はまず、カメラによる撮像画像から、その中に含まれるマーカ５１を認識する（画像）認識処理を実行する。ここでは、認識処理の処理結果として、撮像画像内におけるマーカ５１の位置および向きを示す情報が算出される。マーカ５１が認識された場合、ゲーム装置１は、認識処理の処理結果であるマーカ５１の位置および向きから、ゲーム装置１（カメラ）とマーカ５１との位置関係を算出する。さらに、ゲーム装置１は、位置関係に基づいて仮想空間における仮想カメラの位置および姿勢を算出する。仮想カメラの位置および姿勢は、仮想空間における仮想カメラと仮想オブジェクトとの位置関係が、現実空間におけるゲーム装置１とマーカ５１との位置関係に一致するように算出される。仮想カメラの位置が決まると、ゲーム装置１は、仮想カメラの位置から仮想オブジェクトを見た仮想画像を生成し、撮像画像に対して仮想画像を合成する。以上の処理によって、ゲーム装置１は合成画像を生成して表示することができる。なお、上記位置関係から仮想カメラの位置を算出する処理は、従来の拡張現実感技術における処理と同様であってもよい。
【００８２】
［画像認識処理の概要］
以上のように、本実施形態では、ゲーム装置１は撮像画像から認識処理によってマーカ５１を検出する。認識処理においてマーカ５１を正確に検出することができなければ、仮想画像を正確に生成することができず、撮像画像上の正しい位置に仮想画像を合成することができなくなってしまい、合成画像の現実味（リアルさ）が薄れてしまう。そこで、本実施形態では、マーカ５１を正確にかつ効率良く検出するべく、ゲーム装置１は以下の認識処理を実行する。
【００８３】
（複数種類の精度を用いた認識処理）
図５は、本実施形態における画像認識処理で用いられる対象領域を示す図である。本実施形態では、認識処理を行うべき撮像画像が取得されると、ゲーム装置１はまず、撮像画像のうちでマーカ５１を含む領域（「対象領域」と呼ぶ）５４を検出する処理（領域検出処理）を行う（図５に示す表の上欄参照）。この領域検出処理は、撮像画像全体の領域５３に対して行われ、後述するマーカ検出処理よりも低い精度で行われる。ここで、「低い精度」とは、処理において画素値を参照する画素の間隔を相対的に大きくすることを意味する。例えば本実施形態では、ゲーム装置１は、撮像画像の画素３つ分の間隔で画素値を参照して（すなわち、画素を２つとばしで画素値を参照して）領域検出処理を行う。このように、対象領域５４の検出処理は低い精度で行われるので、当該検出処理は比較的高速に行われる。
【００８４】
上記対象領域５４が検出されると、ゲーム装置１は、対象領域５４の画像からマーカ５１を検出する処理（マーカ検出処理）を行う。マーカ検出処理は、（撮像画像全体の領域５３ではなく）対象領域５４のみを対象として行われ、かつ、上記領域検出処理よりも高い精度で行われる（図５に示す下欄参照）。つまり、マーカ検出処理においては、参照される画素が領域検出処理よりも細かく、換言すれば、画素値を参照する画素の間隔が領域検出処理よりも小さい。具体的には、本実施形態では、ゲーム装置１は、撮像画像の画素１つ分の間隔で画素値を参照して（すなわち、全ての画素の画素値を参照して）領域検出処理を行う。このように、マーカ検出処理は高い精度で行われるので、検出結果として得られるマーカ５１の位置および向きは精度良く算出される。また、マーカ検出処理は対象領域５４のみに対して行われるので、ゲーム装置１は、撮像画像全体の領域５３に対して処理が行われる場合に比べて高速に処理を行うことができる。
【００８５】
以上のように、本実施形態では、ゲーム装置１は、まず対象領域５４を検出する処理を行い、対象領域５４に対してマーカ５１の検出処理を行う。そのため、必要な領域（すなわち、対象領域）のみに対してマーカ５１の検出処理を行うことができ、マーカ５１の検出処理を短時間で行うことができる。また、対象領域５４の検出処理は低い精度で行われるので、この検出処理も短時間で行うことができ、認識処理全体としても短時間で処理を行うことができる。さらに、マーカ５１の検出処理は高精度で行われるので、認識結果として得られるマーカ５１の位置および向きは高精度で算出することができる。つまり、本実施形態によれば、撮像画像からマーカ５１を検出する認識処理を高速かつ精度良く行うことができる。
【００８６】
なお、本実施形態においては、上記マーカ検出処理内においても、異なる精度で処理が行われる。すなわち、マーカ検出処理には複数の処理が含まれており、各処理は異なる精度で実行される。これら各処理の詳細について後述する。
【００８７】
（内部図形の中心位置によってマーカを検出する認識処理）
また、本実施形態における認識処理では、複数の内部図形が描かれた図形を含むマーカ５１を用いて、内部図形の中心位置を算出することでマーカ５１の検出を行う。図６は、本実施形態において用いられるマーカを示す図である。図６に示すように、マーカ５１は、第１図形５５と第２図形５７とを含む。第１図形５５は、複数個（図６では８個）の白い円形の図形５６が内部に描かれている。本実施形態では、この白い円形の図形５６が内部図形である。また、本実施形態では、８つの内部図形５６は、四角形（正方形）の４頂点と４辺の中点との位置に配置されている。なお、第１図形は内部に複数の図形（内部図形）が描かれたものであればどのようなものであってもよく、内部図形の位置、形状、大きさ、および色はどのようなものでもよい。また、第２図形５７は図６では矢印を表す図形であるが、第２図形５７はどのような図形であってもよい。
【００８８】
なお、本実施形態では図６に示すマーカ５１を用いるので、上述の領域検出処理においては、ゲーム装置１はマーカ５１の第１図形５５の領域を対象領域として検出する。そして、上述のマーカ検出処理においては第１図形５５の検出を高精度で行うことでマーカ５１の位置および向きを検出する。
【００８９】
ここで、上記マーカ５１の位置を検出するために、マーカ５１の第１図形５５の輪郭を検出する方法を考える。図７は、左右の輪郭がぼけた第１図形５５の画像を示す図である。カメラによって撮像される撮像画像は、いわゆる手ブレ等の原因で画像にぶれが生じて、輪郭が不明確になることがある。例えば、画像の撮像時に左右にカメラ（ゲーム装置１）が動いてしまうと、図７に示すように、輪郭が左右にぼけて不明確になる。このように撮像画像にぶれが生じて輪郭が不明確になる場合には、上述の輪郭を検出する方法では、輪郭を正確に検出することが難しいため、図形の位置を正確に算出することができない。輪郭は、例えば画素間における画素値（輝度値あるいは色値等）の差に基づいて検出することができるが、撮像画像にぶれが生じる場合、検出される輪郭の位置は画像の内容や閾値等に応じて大きく変化してしまう。例えば図７に示す画像の例で言えば、図７に示す点線５８が輪郭として検出される場合や、点線５９が輪郭として検出されたりする場合がある。これらの場合、第１図形５５の横方向に関する長さは正しく算出されず、第１図形５５の位置を正確に算出することができない。このように、輪郭を検出して輪郭からマーカの位置を算出する方法では、撮像画像にぶれが生じている場合にマーカの位置を正確に算出することができないおそれがある。
【００９０】
そこで、本実施形態における認識処理では、ゲーム装置１は、第１図形５５の内部図形５６を検出し、各内部図形５６の中心位置を算出することによってマーカ５１を検出する。図８は、第１図形５５の一部における内部図形５６の中心位置を示す図である。上述のマーカ検出処理において、ゲーム装置１は、内部図形５６の領域（輪郭）を検出し、検出した領域の中心点Ｐを算出する（図８参照）。ここで、図８において、撮像画像にぶれが生じているために図８に示す白の点線が輪郭として検出された場合でも、図８に示す黒の点線が輪郭として検出された場合でも、中心点Ｐは同じ位置となる。
【００９１】
図９は、第１図形５５内の各内部図形５６の中心点を示す図である。本実施形態においては、各内部図形５６の中心点Ｐ１〜Ｐ８がそれぞれ算出される。ここで、第１図形５５の左右方向の長さは、点Ｐ１から点Ｐ３までの長さ等によって表される。この長さは、図８に示す白の点線が輪郭として検出される場合でも、黒の点線が輪郭として検出される場合でも、同じになる。つまり、この長さは、撮像画像にぶれが生じている場合でも正確に算出することができる。
【００９２】
詳細は後述するが、本実施形態では、ゲーム装置１は、各内部図形５６の中心点Ｐ１〜Ｐ８からマーカ５１の４点の位置を特定する。この４点の位置は、８個の内部図形５６によって表される四角形（正方形）の４つの頂点の位置である。この４点の位置によって、マーカ５１の位置および向きが特定される。ただし、上記４点の位置は正方形の各頂点であるため、マーカ５１が９０°、１８０°または２７０°回転した状態と回転しない状態とで同じ値となるので、上記４点の位置では、上下左右の４方向に関するマーカ５１の向きを特定することができず、マーカ５１の向きを一意に特定することができない。そのため、ゲーム装置１は、第２図形５７を検出することによって、マーカ５１の向きを一意に特定する。なお、第２図形５７を用いてマーカ５１の向きを特定する方法については後述する。
【００９３】
以上のように、本実施形態では、マーカ検出処理において、ゲーム装置１は、各内部図形５６の中心点Ｐ１〜Ｐ８を算出する。そして、中心点Ｐ１〜Ｐ８からマーカ５１の４点の位置を特定することで、マーカ５１の位置を算出する。ここで、上記中心点Ｐ１〜Ｐ８は、撮像画像にぶれが生じている場合でも正確に算出されるので、ゲーム装置１は、撮像画像にぶれが生じている場合でも、中心点Ｐ１〜Ｐ８を用いることによってマーカ５１の位置を正確に算出することができる。
【００９４】
［ゲーム処理の詳細］
次に、図１０〜図１５を参照して、ゲームプログラムによって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図１０は、ゲームプログラムによる処理において用いられる各種データを示す図である。図１０において、ゲーム装置１のメインメモリ３２には、ゲームプログラム６１、撮像画像データ６２、およびゲーム処理データ６３が記憶される。
【００９５】
ゲームプログラム６１は、後述するゲーム処理（図１１）をゲーム装置１のＣＰＵ３１に実行させるためのプログラムである。ゲームプログラム６１は、メモリカード２９からその一部または全部が適宜のタイミングで読み込まれることによってメインメモリ３２に記憶される。ゲームプログラム６１には、ゲームを進行させるためのプログラムの他、上述の画像認識処理を実行するためのプログラムが含まれる。
【００９６】
撮像画像データ６２は、カメラ（内側カメラ２３または外側カメラ２５）によって撮像された画像（撮像画像）を示すデータである。撮像画像データ６２としては、カメラから取得された最新の画像データのみが記憶されてもよいし、新しいものから順にそれぞれ所定個数の画像データが記憶されてもよい。
【００９７】
ゲーム処理データ６３は、ゲーム処理において用いられる各種のデータである。ゲーム処理データ６３には、対象領域データ６４、輪郭データ６５、内部領域データ６６、中心位置データ６７、頂点データ６８、および認識結果データ６９が含まれる。なお、ゲーム処理データ６３には、上記の他、ゲームに登場する各種オブジェクト（上記大砲５２等）に関するデータや、ＢＧＭ等の音声データ等、ゲームに必要な各種データが記憶される。
【００９８】
対象領域データ６４は、上述した対象領域、すなわち、撮像画像内における上記第１図形５５の領域を示すデータである。対象領域データ６４は上述の領域検出処理によって得られる。なお、本実施形態では、領域検出処理においては、低い精度で検出処理が行われるので、実際には第１図形５５でない領域も第１図形５５の領域として検出される場合がある。そのため、領域検出処理においては複数の領域が対象領域として検出される場合がある。この場合、検出された領域毎の対象領域データ６４がメインメモリ３２に記憶される（つまり、複数の対象領域データが記憶される）。なお、対象領域データ６４は、領域を示すものであればよく、領域の輪郭のみを示すものであってもよいし、領域に対応する各画素を示すものであってもよい。
【００９９】
輪郭データ６５は、撮像画像内における上記第１図形５５の輪郭を示すデータである。輪郭データ６５は、上記対象領域データ６４と同様、第１図形５５の領域を示すデータであるが、対象領域データ６４よりも高精度で検出される点で異なる。
【０１００】
内部領域データ６６は、上記第１図形５５内の内部図形５６の領域を示すデータである。上述のように、第１図形５５には複数個（８個）の内部図形５６が含まれている。そのため、マーカ検出処理において８個の内部図形５６が正しく検出されれば、８個の内部領域データ６６がメインメモリ３２に記憶される。ただし、実際には８個全ての内部図形５６が検出されない場合もある。この場合、検出された内部図形５６の個数と同数の内部領域データ６６がメインメモリ３２に記憶される。なお、内部領域データ６６は、領域を示すものであればよく、領域の輪郭のみを示すものであってもよいし、領域に対応する各画素を示すものであってもよい。
【０１０１】
中心位置データ６７は、各内部図形５６の中心位置をそれぞれ示すデータである。中心位置データ６７は、マーカ検出処理において検出された内部図形５６の数と同数の中心位置を示す。
【０１０２】
頂点データ６８は、８個の内部図形５６によって表される四角形（正方形）の４つの頂点の位置を示すデータである。詳細は後述するが、４つの頂点は、８つの内部図形５６の各中心位置に基づいて算出される。
【０１０３】
認識結果データ６９は、認識処理の結果として出力される、マーカ５１の位置および向きを示すデータである。詳細は後述するが、マーカ５１の位置および向きは、上記頂点データ６８が示す４つの頂点と、撮像画像における第１図形５５に対する第２図形５７の向きとに基づいて算出される。
【０１０４】
次に、ゲーム装置１において行われるゲーム処理の詳細を、図１１〜図１６を用いて説明する。図１１は、ゲーム装置１において実行されるゲーム処理の流れを示すメインフローチャートである。電源ボタン１４Ｆが押下されることによってゲーム装置１の電源が投入されると、ゲーム装置１のＣＰＵ３１は、各種アプリケーションの起動を指示するためのメニュー画面（例えば、各アプリケーションを表す画像（アイコン）を含む画像）を表示する。ユーザは、メニュー画面においてゲームプログラム６１を起動する指示、例えば、ゲームプログラム６１のアイコンを選択する指示を行う。メニュー画面において、ゲームプログラム６１の起動が指示されると、ＣＰＵ３１は、メインメモリ３２等の初期化を行った後、図１１に示す処理を行うためのゲームプログラム６１の実行を開始する。本実施形態においては、ゲームプログラム６１の実行によって、ＣＰＵ３１が請求項に記載の各手段として機能することとなる。つまり、ゲームプログラム６１は、請求項に記載の各手段としてＣＰＵ３１を機能させる。
【０１０５】
まずステップＳ１において、ＣＰＵ３１は、撮像画像が取得されたか否かを判定する。すなわち、カメラ（本実施形態では外側カメラ２５）から撮像画像のデータが送られてきたか否かを判定する。また、撮像画像のデータがカメラから送られてきた場合、ＣＰＵ３１は、当該データを撮像画像データ６２としてメインメモリ３２に記憶する。なお、本実施形態においては、ステップＳ１〜Ｓ７の処理ループは、１フレーム時間（１／６０秒）に１回の割合で実行されるのに対して、カメラはそれよりも少ない頻度（数フレーム時間に１回程度）で撮像画像を送るものとする。ただし、他の実施形態においては、１フレーム時間（または１フレーム時間より短い時間）に１回の割合で撮像画像が取得されてもよい。ステップＳ１の判定結果が肯定である場合、ステップＳ２の処理が実行される。一方、ステップＳ１の判定結果が否定である場合、ステップＳ２からＳ４の処理がスキップされて後述するステップＳ５の処理が実行される。
【０１０６】
ステップＳ２において、ＣＰＵ３１は、ステップＳ１で取得された撮像画像に対する認識処理を実行する。認識処理においては、撮像画像内にマーカ５１の画像が含まれるか否かが判定され、マーカ５１の画像が含まれる場合には撮像画像内におけるマーカ５１の向きおよび位置が算出される。以下、図１２を参照して、認識処理の詳細を説明する。
【０１０７】
図１２は、図１１に示す認識処理（ステップＳ２）の流れを示すフローチャートである。認識処理においては、まずステップＳ１１において、ＣＰＵ３１は、上述の領域検出処理を実行する、すなわち、第１図形５５を含む領域（対象領域）を検出する。上述のように、ステップＳ１１の領域検出処理は低い精度で行われる。具体的には、ＣＰＵ３１は、撮像画像において画素３つ分の間隔で得られる画素値に基づいて、当該撮像画像から対象領域を検出する。より具体的には、ＣＰＵ３１は、撮像画像データ６２をメインメモリ３２から読み出し、画像データが示す各画素の各画素値から、画素３つ分の間隔で画素値を抽出する。そして、抽出した画素値に基づいて対象領域を検出する。図１３は、撮像画像においてステップＳ１１の処理において画素値が参照される画素を示す図である。図１３においては、斜線で示される画素が、画素値が参照される画素である。
【０１０８】
また、本実施形態では、隣接する画素の画素値（本実施形態では輝度値。ただし、色値でもよい）の差を用いて対象領域が検出される。すなわち、本実施形態では、黒色の第１図形５５の周囲には白い枠が形成される（図６参照）ので、隣接する画素よりも輝度値が所定値以上低い画素を検出することで、第１図形５５の輪郭部分の画素を検出することができる。なお、上記「隣接する画素」とは、画素値が参照される各画素の間で隣接する画素である。図１３の例で言えば、斜線で示されるある画素と、画素３つ分離れた位置の（斜線で示される）画素とが、上記「隣接する画素」である。輪郭部分の画素を検出した後、ＣＰＵ３１は、検出された画素のうちで隣接する画素同士を１つの集合とすることで、１つの対象領域を特定する。特定された対象領域を形成する各画素を示すデータは、対象領域毎に１つの対象領域データ６４としてメインメモリ３２に記憶される。なお、特定された対象領域が大きすぎたり小さすぎたりする場合には、ＣＰＵ３１は当該対象領域を除外し、当該対象領域を示す対象領域データ６４を記憶しないようにしてもよい。上記ステップＳ１１の次にステップＳ１２の処理が実行される。
【０１０９】
なお、上記ステップＳ１１における対象領域の検出方法はどのような方法であってもよい。例えば他の実施形態においては、ＣＰＵ３１は、画素値を所定の閾値で２値化することによって第１図形５５の輪郭を検出し、検出された輪郭内の領域を対象領域としてもよい。また、他の実施形態においては、ＣＰＵ３１は、パターンマッチングの手法によって対象領域を検出してもよい。すなわち、第１図形５５のパターン画像を予めメインメモリ３２に記憶しておき、撮像画像の領域内から当該パターン画像と一致（類似）する領域を検出することによって、対象領域を検出してもよい。この場合、パターンマッチングの処理は、従来の拡張現実感技術における処理と同様であってもよい。
【０１１０】
また、本実施形態では、上記ステップＳ１１ではＣＰＵ３１は第１図形５５の領域を対象領域として検出したが、他の実施形態においては、第１図形５５および第２図形５７を含むマーカ５１の領域を対象領域として検出するようにしてもよい。
【０１１１】
また、本実施形態では、上述のように低い精度で対象領域の検出が行われ、対象領域の検出処理では、マーカ５１の第１図形５５とその周囲の白枠との輝度差を用いている。そのため、マーカ５１の白枠が細すぎると低い精度では撮像画像において白枠が現れず、対象領域を正確に検出することができなくなるおそれがある。したがって、マーカ５１の白枠は、低い精度でも撮像画像上に現れるように、ある程度の太さに設定されることが好ましい。なお、白枠の太さは、ゲーム装置１の使用時におけるカメラからマーカ５１までの距離として想定される距離の範囲や、撮像画像の解像度や、マーカ５１の大きさ等に応じて適宜決められる。
【０１１２】
ステップＳ１２において、ＣＰＵ３１は、ステップＳ１１で対象領域が検出されたか否かを判定する。ステップＳ１１において対象領域が検出されなかった場合、ステップＳ１３の処理が実行される。一方、ステップＳ１１において対象領域が１つ以上検出された場合、ステップＳ１４の処理が実行される。
【０１１３】
ステップＳ１３において、ＣＰＵ３１は、マーカ５１の認識が失敗したと判断する。すなわち、ＣＰＵ３１は、認識失敗を示すデータを認識結果データ６９としてメインメモリ３２に記憶する。ステップＳ１３の後、ＣＰＵ３１は認識処理を終了する。
【０１１４】
ステップＳ１４において、ＣＰＵ３１は、ステップＳ１１で検出された対象領域のうち１つを選択する。なお、ステップＳ１１で複数の対象領域が検出される場合、ステップＳ１４〜Ｓ１６の処理ステップが繰り返し実行される。この場合、ステップＳ１４においては、当該処理ステップにおいてまだ選択されていない対象領域が選択される。ステップＳ１４の次にステップＳ１５の処理が実行される。
【０１１５】
ステップＳ１５において、ＣＰＵ３１は、ステップＳ１４で選択された対象領域に対してマーカ検出処理を実行する。マーカ検出処理は、対象領域からマーカ５１を検出し、マーカ５１の位置および向きを算出する処理である。以下、図１４を参照して、マーカ検出処理の詳細を説明する。
【０１１６】
図１４は、図１２に示すマーカ検出処理（ステップＳ１５）の流れを示すフローチャートである。マーカ検出処理においては、まずステップＳ２１において、ＣＰＵ３１は、中程度の精度で第１図形５５の輪郭を抽出する。ここで、「中程度の精度」とは、上記ステップＳ１１の処理における精度よりは高く、後述するステップＳ２３およびＳ２５の処理における精度よりは低いという意味である。つまり、本実施形態では、マーカ検出処理において、２段階の精度で処理が行われ、ステップＳ２１の処理は低い方の精度で行われる。以下、ステップＳ２１の処理の詳細を説明する。
【０１１７】
上記ステップＳ２１の処理は、ステップＳ１１で検出された対象領域内を処理対象とするが、上記ステップＳ１１の処理とステップＳ２１の処理とでは処理を行う精度が異なる。そこで、ステップＳ２１においては、ＣＰＵ３１はまず、ステップＳ１１で検出された対象領域に対応する、ステップＳ２１の処理対象となる領域を決定する。すなわち、ステップＳ１１で得られる対象領域データ６４により示される各画素から、ステップＳ２１の処理対象となる領域を決定する。より具体的には、ＣＰＵ３１は、低精度の処理（ステップＳ１１）で参照される画素（図１３に示す斜線の画素）と、その周囲８つの画素（図１３に示す一点鎖線で囲まれる画素）とを関連付けておく。そして、ステップＳ１１で検出された対象領域内の画素と、当該画素に対応する周囲８つの画素とからなる領域を、ステップＳ２１の処理対象の領域とする。図１５は、ステップＳ２１の処理対象となる領域の一例を示す図である。図１５においては、ステップＳ１１で画素Ｑ１〜Ｑ３が検出され、画素Ｑ１〜Ｑ３よりも右側の領域が対象領域として検出された場合を想定する。この場合、図１５に示す一点鎖線よりも右の領域Ａ１がステップＳ２１の処理対象の領域となる。
【０１１８】
処理対象となる領域が決定されると、ＣＰＵ３１は、中程度の精度で第１図形５５の輪郭を抽出する。本実施形態では、この輪郭の抽出処理は、撮像画像における各画素の画素値のうち、画素２つ分の間隔で得られる画素値に基づいて行われる。図１６は、撮像画像においてステップＳ２１の処理において画素値が参照される画素を示す図である。例えば図１５に示す領域Ａ１がステップＳ２１の処理対象の領域となる場合、図１６に示す斜線で示される画素が、輪郭の抽出処理において画素値が参照される画素である。
【０１１９】
なお、ステップＳ２１における輪郭の抽出処理は、上記ステップＳ１１における対象領域の検出方法と同様、輝度値の差を用いた方法で行われてもよいし、それ以外の方法で行われてもよい。ステップＳ２１で抽出された輪郭を形成する各画素のデータは、輪郭データ６５としてメインメモリ３２に記憶される。ステップＳ２１の次にステップＳ２２の処理が実行される。
【０１２０】
ステップＳ２２において、ＣＰＵ３１は、ステップＳ２１で抽出された輪郭が第１図形５５を表すか否かを判定する。本実施形態では、ステップＳ２２の判定は、ＣＰＵ３１は上記輪郭が四角形を表すか否かによって行われる。すなわち、ＣＰＵ３１は、輪郭データ６５をメインメモリ３２から読み出し、上記輪郭を形成する各画素を直線で近似することによって、当該各画素で形成される多角形を算出する。そして、算出された多角形が四角形となるか否かによって、上記輪郭が第１図形５５を表すか否かを判定する。ステップＳ２２の判定結果が肯定となる場合、ステップＳ２３の処理が実行される。一方、ステップＳ２２の判定結果が否定となる場合、後述するステップＳ３０の処理が実行される。
【０１２１】
なお、上記ステップＳ２２では、抽出された輪郭が第１図形５５を表すか否かの判定は、当該輪郭が四角形となるか否かによって行われたが、他の方法によって行われてもよい。例えば、他の実施形態において、マーカ５１の大きさが既知である場合には、上記の判定は、抽出された輪郭の大きさ（面積や周の長さ）が所定値以上であるか否か等によって行われてもよい。
【０１２２】
ステップＳ２３において、ＣＰＵ３１は、高精度で内部図形５６の領域を検出する。ここで、「高精度」とは、上記ステップＳ１１の処理およびステップＳ２１の処理における精度より高いという意味である。本実施形態では、ＣＰＵ３１は、画素１つ分の間隔で画素値を参照して、つまり、ステップＳ２３の処理対象となる領域内の全画素の画素値を参照して、内部図形５６の領域を検出する。
【０１２３】
ステップＳ２３の処理対象となる領域は、ステップＳ２１で抽出された輪郭が表す領域内を対象として行われるが、上記ステップＳ２１の処理とステップＳ２３の処理とでは処理を行う精度が異なる。そこで、ステップＳ２３においては、ステップＳ２１と同様、処理対象となる領域を決定する必要がある。この処理対象となる領域の決定は、ステップＳ２１と同様の方法で行うことができる。すなわち、ＣＰＵ３１は、中精度の処理(ステップＳ２１）で参照され得る基準画素と、それに対応する３つの画素（例えば、基準画素の右、下、および右下の画素）とを関連付けておく。そして、ステップＳ２１で抽出された輪郭内に含まれる基準画素と、当該基準画素に対応する３つの画素とをステップＳ２３の処理対象とする。
【０１２４】
処理対象となる領域が決定されると、ＣＰＵ３１は、高精度で内部図形５６の領域を検出する。ここで、内部図形５６の領域の検出は、上記ステップＳ１１における対象領域の検出方法と同様、輝度値の差を用いた方法で行われてもよいし、それ以外の方法で行われてもよい。なお、ステップＳ２３で検出すべき内部図形５６は白色でその周囲が黒色であるので、輝度値の差を用いる方法を採用する場合には、ＣＰＵ３１は、隣接する画素よりも輝度値が所定値以上高い画素を検出することが好ましい。また、本実施形態では、ＣＰＵ３１は、内部図形５６の領域を表す情報として、内部図形５６の輪郭を表す（複数の）画素を検出するものとする。ステップＳ２３で検出された内部図形５６の領域を示す各画素のデータは、内部領域データ６６としてメインメモリ３２に記憶される。また、ステップＳ２３において複数の内部図形５６が検出される場合は、１つの内部図形につき１つの内部領域データ６６がメインメモリ３２に記憶される。以上のステップＳ２３の次にステップＳ２４の処理が実行される。
【０１２５】
なお、他の実施形態においては、上記ステップＳ２３において、ＣＰＵ３１は、検出された領域の形状および／または大きさに関して条件を設定しておき、条件を満たさない領域を除外するようにしてもよい。すなわち、ＣＰＵ３１は、輝度差を用いて検出された領域のうち、形状が円形でない領域、および、大きさが所定の範囲以内でない領域については、内部領域データ６６を記憶しないようにしてもよい。
【０１２６】
ステップＳ２４において、ＣＰＵ３１は、ステップＳ２３で所定個数の領域が検出されたか否かを判定する。ここで、所定個数とは、第１図形５５内に描かれた内部図形５６の数、すなわち８個である。具体的には、ＣＰＵ３１は、メインメモリ３２に記憶された内部領域データ６６の数が８個であるか否かを判定する。ステップＳ２４の判定結果が肯定となる場合、ステップＳ２５の処理が実行される。一方、ステップＳ２４の判定結果が否定となる場合、後述するステップＳ３０の処理が実行される。
【０１２７】
ステップＳ２５において、ＣＰＵ３１は、内部図形５６の中心位置を高精度で算出する。内部図形５６の中心位置は、ステップＳ２３で検出された領域、すなわち、内部図形５６の輪郭を表す各画素に基づいて算出される。中心位置の具体的な算出方法はどのような方法であってもよく、例えば、内部図形５６の輪郭を表す各画素の位置座標の平均値を算出することで中心位置を得ることができる。本実施形態においては、ＣＰＵ３１は、内部領域データ６６をメインメモリ３２から読み出し、内部領域データ６６が示す各画素の平均値を算出する。なお、内部領域データ６６は８個記憶されているので、各データ毎に平均値を算出する処理が行われる。算出された８種類の平均値を示すデータは、中心位置データ６７としてメインメモリ３２に記憶される。ステップＳ２５の次にステップＳ２６の処理が実行される。
【０１２８】
ステップＳ２６において、ＣＰＵ３１は、ステップＳ２５で算出された中心位置から、マーカ５１の位置を表す４つの頂点の位置を算出する。ここで、４つの頂点とは、８つの内部図形５６が頂点および辺の中点となる四角形の頂点である。以下、図１７および図１８を参照して、４つの頂点の算出方法を説明する。
【０１２９】
図１７は、第１図形を表す撮像画像の一例を示す図である。図１７において、点Ｐ１〜Ｐ８は、８つの内部図形５６の中心位置として上記ステップＳ２６で算出された位置を表す点である。ステップＳ２６においては、ＣＰＵ３１は、まず、８つの中心位置のうち３つを通る４本の直線Ｌ１〜Ｌ４を算出する。具体的には、ＣＰＵ３１は、点Ｐ１〜Ｐ３を通る直線Ｌ１と、点Ｐ１，Ｐ４，およびＰ６を通る直線Ｌ２と、点Ｐ６〜Ｐ８を通る直線Ｌ３と、点Ｐ３，Ｐ５，およびＰ８を通る直線Ｌ４とを算出する。各直線Ｌ１〜Ｌ４は、最小二乗法等を用いて３点を通る近似直線としてそれぞれ算出することができる。
【０１３０】
図１８は、図１７に示す各直線Ｌ１〜Ｌ４によって算出される４つの頂点Ｐ１１〜Ｐ１４を示す図である。各直線Ｌ１〜Ｌ４が算出されると、ＣＰＵ３１は、各直線Ｌ１〜Ｌ４によって形成される四角形の頂点Ｐ１１〜Ｐ１４を算出する。すなわち、ＣＰＵ３１は、直線Ｌ１と直線Ｌ２との交点Ｐ１１、直線Ｌ１と直線Ｌ４との交点Ｐ１２、直線Ｌ２と直線Ｌ３との交点Ｐ１３、および、直線Ｌ３と直線Ｌ４との交点Ｐ１４をそれぞれ算出する。以上によって、４つの頂点Ｐ１１〜Ｐ１４を算出することができる。算出された４つの頂点の位置を示すデータは、頂点データ６８としてメインメモリ３２に記憶される。ステップＳ２６の次にステップＳ２７の処理が実行される。
【０１３１】
上記ステップＳ２６で４つの頂点を算出することによって、マーカ５１内の４点の位置を算出できたことになる。ここで、マーカ５１内の４点の位置によって、マーカ５１の位置および向きを算出することができる。ただし、上記４点の位置は正方形の各頂点であり、マーカ５１が９０°、１８０°または２７０°回転した状態と回転しない状態とで同じ値となる。そのため、上記４点の位置では、上下左右の４方向に関するマーカ５１の向きを特定することができず、マーカ５１の向きを一意に特定することができない。そこで、ＣＰＵ３１は、下記ステップＳ２７〜Ｓ２９の処理によって、上下左右の４方向に関するマーカ５１の向きを特定し、マーカ５１の向きを一意に特定する。なお、マーカ５１の上下左右の４方向のうちどの方向から撮像するかが予め決まっている（既知である）場合や、上下左右の４方向に関するマーカ５１の向きを意識しない場合（マーカ５１が９０°、１８０°または２７０°回転した状態と回転しない状態とを同じ状態とみなす場合）には、ＣＰＵ３１は、下記ステップＳ２７〜Ｓ２９の処理を省略し、上記４点の位置を認識結果として用いてもよい。
【０１３２】
ステップＳ２７において、ＣＰＵ３１は、第１図形５５の周囲の領域から第２図形５７を検出する。本実施形態においては、ＣＰＵ３１は、ステップＳ２６で算出された４つの頂点で形成される四角形を基準として、当該四角形の上下左右の４方向に位置する４つの所定領域内から第２図形５７を検出する。第２図形５７は第１図形５５の隣に位置しており（図６参照）、４つの頂点によって第１図形５５の位置が特定されているので、上記４つの所定領域について検出処理を行えば、第２図形５７を検出することができるからである。
【０１３３】
図１９は、ステップＳ２７で設定される所定領域の一例を示す図である。図１９においては、直線Ｌ５〜Ｌ８で囲まれる領域αが上記所定領域である。所定領域αは、４つの頂点Ｐ１１〜Ｐ１４で形成される四角形の４辺のうち、辺Ｐ１１−Ｐ１２の側に設定される所定領域である。また、直線Ｌ５〜Ｌ８は、それぞれ、４つの頂点Ｐ１１〜Ｐ１４で形成される四角形に対して所定領域αが位置する側を上方向とした場合における所定領域αの下辺、上辺、右辺、および左辺である。所定領域αの４辺である直線Ｌ５〜Ｌ８は、例えば次のように設定することができる。下辺である直線Ｌ５は、直線Ｌ１に平行で、直線Ｌ１に垂直な方向に直線Ｌ１から所定の第１距離だけ離れた位置に設定される。また、上辺である直線Ｌ６は、直線Ｌ１に平行で、直線Ｌ１に垂直な方向に直線Ｌ１から所定の第２距離（第１距離よりも大きい）だけ離れた位置に設定される。また、右辺である直線Ｌ７は、頂点Ｐ１１〜Ｐ１４で形成される四角形の右辺である直線Ｌ４に平行で、直線Ｌ１の方向に関して直線Ｌ４から所定の第３距離だけ離れた位置に設定される。左辺である直線Ｌ８は、頂点Ｐ１１〜Ｐ１４で形成される四角形の左辺である直線Ｌ２に平行で、直線Ｌ１の方向に関して直線Ｌ２から所定の第４距離だけ離れた位置に設定される。以上のようにして、所定領域αを算出することができる。また、他の３つの所定領域についても所定領域αと同様に算出することができる。
【０１３４】
上記４つの所定領域内から第２図形５７を検出する方法はどのような方法であってもよいが、本実施形態においては、パターンマッチングの手法によって第２図形５７を検出する。すなわち、第２図形５７のパターン画像を予めメインメモリ３２に記憶しておき、ＣＰＵ３１は、各所定領域内から当該パターン画像と一致（類似）する領域を検出することによって第２図形５７を検出する。また、第２図形５７を検出する処理の精度は、どのような精度で行われてもよい。なお、この処理は、処理対象となる範囲を上記所定領域に絞って行うことができるので、必ずしも高い精度で行う必要はない。
【０１３５】
上記ステップＳ２７の具体的な処理としては、ＣＰＵ３１はまず、頂点データ６８をメインメモリ３２から読み出して、上記４つの頂点に基づいて上記４つの所定領域を特定する。次に、第２図形５７のパターン画像をメインメモリ３２から読み出して、特定した４つの所定領域内から、当該パターン画像と一致する部分を検出する。ステップＳ２７の処理の次にステップＳ２８の処理が実行される。
【０１３６】
ステップＳ２８において、ＣＰＵ３１は、上記ステップＳ２７において第２図形５７が検出されたか否かを判定する。すなわち、上記４つの所定領域のうちに、第２図形５７が検出された領域があったか否かを判定する。ステップＳ２８の判定結果が肯定となる場合、ステップＳ２９の処理が実行される。一方、ステップＳ２８の判定結果が否定となる場合、後述するステップＳ３０の処理が実行される。
【０１３７】
ステップＳ２９において、ＣＰＵ３１は、（上下左右の４方向に関する）マーカ５１の向きを特定する。ここで、上記４つの頂点で形成される四角形から見て、第２図形５７が検出された所定領域がある方向（当該四角形から見て所定領域がどちらの方向にあるか）がわかれば、撮像画像内において第１図形５５に対して第２図形５７が配置される方向がわかったことになるので、マーカ５１の向きを特定することができる。つまり、ステップＳ２９においては、撮像画像内において第１図形５５に対して第２図形５７が配置される方向に応じてマーカ５１の向きが特定される。
【０１３８】
なお、本実施形態においては、上記４つの頂点を結ぶ２つのベクトルＶ１およびＶ２によってマーカ５１の位置および向きを表すものとする。具体的には、ベクトルＶ１は、第１図形５５に対して第２図形５７が配置される方向を上方向とした場合において、左上の頂点を始点とし、右上の頂点を終点とするベクトルとする。また、ベクトルＶ２は、上記の場合において、左下の頂点を始点とし、右下の頂点を終点とするベクトルとする。上記のようにベクトルＶ１およびＶ２を想定した場合において、第２図形５７が検出された所定領域が、例えば図１９に示す直線Ｌ１の側に位置する場合、図１９に示す直線Ｌ１が上記４つの頂点で形成される四角形の上辺となる。したがって、この場合、ベクトルＶ１は、点Ｐ１１を始点とし点Ｐ１２を終点とするベクトルとして算出され、ベクトルＶ２は、点Ｐ１３を始点とし点Ｐ１４を終点とするベクトルＶ２として算出される。これらベクトルＶ１およびＶ２によって、マーカ５１の位置および向きを表すことができる。
【０１３９】
上記ステップＳ２９においては、ＣＰＵ３１は、上記４つの頂点で形成される四角形に対する第２図形５７が検出された所定領域の方向に応じた向きとなるように、当該４つの頂点を用いてベクトルＶ１およびＶ２を算出する。算出された各ベクトルＶ１およびＶ２を示すデータはメインメモリ３２に記憶される。以上のステップＳ２９の後、ＣＰＵ３１はマーカ検出処理を終了する。
【０１４０】
一方、ステップＳ３０において、ＣＰＵ３１は、今回のマーカ検出処理の処理対象である対象領域には第１図形５５が無いと判断する。この場合、今回のマーカ検出処理におけるステップＳ２１〜Ｓ２８で算出された各種データ６５〜６８はメインメモリ３２から削除される。ステップＳ３０の後、ＣＰＵ３１はマーカ検出処理を終了する。
【０１４１】
上記マーカ検出処理によれば、ＣＰＵ３１は、対象領域の画像から複数の内部図形をそれぞれ検出し（ステップＳ２３）、各内部図形の中心位置をそれぞれ算出することによってマーカ５１を検出する（ステップＳ２５およびＳ２６）。このように、内部図形の中心位置を用いることによって、撮像画像にぶれが生じている場合でもマーカ５１の位置を正確に算出することができる。
【０１４２】
また、上記ステップＳ２１〜Ｓ２３の一連の処理によれば、対象領域内から第１図形５５の輪郭が抽出され（ステップＳ２１）、抽出された輪郭が第１図形５５を表すか否かが判定される（ステップＳ２２）。そして、抽出された輪郭が第１図形５５を表す場合に、当該輪郭に対応する領域内から複数の内部図形５６が検出される（ステップＳ２３）。つまり、第１図形５５を表すと判定される輪郭に対応する領域内から内部図形５６が検出される。これによれば、内部図形５６を検出する処理の前に、第１図形５５を含まない対象領域を除くことができるので、内部図形５６を検出する処理を無駄に行うことを防止することができ、認識処理を効率良く行うことができる。さらに、本実施形態によれば、輪郭の抽出処理は、内部図形５６を検出する処理よりも高速に行うことができるので、ゲーム装置１は、認識処理をより短時間で行うことができる。
【０１４３】
また、上記ステップＳ２３〜Ｓ２５の一連の処理によれば、対象領域において複数の内部図形５６の領域がそれぞれ検出され（ステップＳ２３）、検出された領域の個数が所定個数であるか否かが判定される（ステップＳ２４）。そして、検出された領域の個数が所定個数である場合、当該領域の中心位置が算出される（ステップＳ２５）。つまり、所定個数の領域が検出された対象領域について、内部図形５６の中心位置が算出される。これによれば、内部図形５６の中心位置を算出する処理の前に、第１図形５５を含まない対象領域を除くことができるので、中心位置を算出する処理を無駄に行うことを防止することができ、認識処理を効率良く行うことができる。
【０１４４】
また、上記マーカ検出処理においては、内部図形５６の検出処理（ステップＳ２３）を行う精度と、内部図形５６の中心位置の算出処理（ステップＳ２５）を行う精度とは同じであった。ここで、他の実施形態においては、ＣＰＵ３１は、内部図形５６の中心位置の算出処理を行う精度よりも低い精度で内部図形５６の検出処理を行うようにしてもよい。つまり、内部図形５６の検出処理に用いられる画素値の間隔を、中心位置の算出処理において用いられる画素値の間隔よりも大きくしてもよい。これによれば、内部図形５６の検出処理をより高速に行うことができ、認識処理をより高速に行うことができる。なお、このとき、内部図形５６の検出処理は、第１図形５５の輪郭の抽出処理（ステップＳ２１）と同じ精度で行われてもよいし、当該抽出処理よりも高い精度で行われてもよい。
【０１４５】
図１２の説明に戻り、ステップＳ１５のマーカ検出処理の次にステップＳ１６の処理が実行される。ステップＳ１６において、ＣＰＵ３１は、ステップＳ１１で検出された全ての対象領域についてマーカ検出処理を行ったか否かを判定する。ステップＳ１６の判定結果が肯定となる場合、ステップＳ１７の処理が実行される。一方、ステップＳ１６の判定結果が否定となる場合、上記ステップＳ１４の処理が再度実行される。以降、ステップＳ１６において全ての対象領域についてマーカ検出処理を行ったと判定されるまで、ステップＳ１４〜Ｓ１６の処理が繰り返し行われる。これによって、ステップＳ１１で検出された各対象領域についてマーカ検出処理を行われる。
【０１４６】
ステップＳ１７において、ＣＰＵ３１は、上記ステップＳ１５のマーカ検出処理においてマーカ５１が検出されたか否かを判定する。具体的には、ＣＰＵ３１は、メインメモリ３２に認識結果データ６９が記憶されているか否かによってマーカ５１が検出されたか否かを判定する。ステップＳ１７の判定結果が肯定となる場合、ステップＳ１８の処理が実行される。一方、ステップＳ１７の判定結果が否定となる場合、上記ステップＳ１３の処理が再度実行される。つまり、ステップＳ１７の判定結果が否定となる場合、マーカ５１の認識が失敗したと判断され、認識処理が終了する。
【０１４７】
ステップＳ１８において、ＣＰＵ３１は、ステップＳ１５のマーカ検出処理で得られたマーカ５１の位置および向きを示す情報を認識結果として記憶する。すなわち、マーカ検出処理のステップＳ２９で算出されたベクトルＶ１およびＶ２を示すデータを、認識結果データ６９としてメインメモリ３２に記憶する。ステップＳ１８の後、ＣＰＵ３１は認識処理を終了する。
【０１４８】
なお、１つの撮像画像からステップＳ１１で検出される複数の対象領域に対して、マーカ検出処理によってベクトルＶ１およびＶ２が算出される可能性がある。つまり、１回の認識処理において、ベクトルＶ１およびＶ２の組がメインメモリ３２に複数組記憶される場合がある。この場合、いずれか１組が正しいマーカ５１を表し、他の組は誤検出によって算出されたものである。したがって、上記の場合、ＣＰＵ３１は、マーカ検出処理において得られた各図形（第１図形５５、内部図形５６、第２図形５７）の形状および配置等に基づいて、正しいマーカ５１を表すベクトルＶ１およびＶ２を選出するようにしてもよい。例えば、ステップＳ２１で抽出される第１図形５５の輪郭や、ステップＳ２３で検出される各内部図形５６の配置や、ステップＳ２７で検出される第２図形５７の、パターン画像に対する類似度等に基づいて、正しいベクトルＶ１およびＶ２を選出することができる。ＣＰＵ３１は、選出されたベクトルＶ１およびＶ２を示すデータを認識結果データ６９としてメインメモリに記憶する。これによって、認識処理において（誤検知によって）複数組のベクトルＶ１およびＶ２が得られた場合でも、正しい認識結果を得ることができる。なお、他の実施形態においては、１回の認識処理において複数組のベクトルＶ１およびＶ２が得られた場合には、ＣＰＵ３１は、認識が失敗したと判断するようにしてもよい。
【０１４９】
上記認識処理によれば、撮像画像において第１の間隔（画素３つ分の間隔）で得られる画素値に基づいて、対象領域を検出する処理が行われる（ステップＳ１１）。そして、対象領域内の撮像画像において第１の間隔よりも小さい第２の間隔（画素１つまたは２つ分の間隔）で得られる画素値に基づいて、当該対象領域の画像から第１図形５５を検出する処理が行われる。これによれば、対象領域を検出する処理を短時間で行うことによって、認識処理を高速に行うことができる。また、第１図形５５の検出処理は高精度で行われるので、第１図形５５を高精度で正確に検出することができる。つまり、上記認識処理によれば、撮像画像から第１図形５５を検出する処理を高速かつ精度良く行うことができる。
【０１５０】
なお、本実施形態では、ステップＳ２の認識処理が１フレーム時間内に実行され、ステップＳ１〜Ｓ７の処理ループ内で認識処理が完了されるものとした。ここで、撮像画像の解像度やＣＰＵ３１等の処理能力によっては、１回の認識処理が１フレーム時間で完了することが困難な場合もある。そのため、他の実施形態においては、認識処理は、１フレーム時間を周期として実行される表示処理（ステップＳ５）等の処理とは必ずしも同じ周期で実行されなくてもよい。つまり、１回のステップＳ２の処理では、認識処理全体のうちの一部の処理だけが実行されてもよい。この場合、１回のステップＳ２で実行される処理は、ステップＳ１〜Ｓ７の一連の処理が１フレーム時間内に完了することができるような処理量に調整される。換言すれば、認識処理は、ステップＳ１〜Ｓ７（Ｓ２を除く）の処理ループとは別に並列的に実行され、ＣＰＵ３１がアイドル状態のときに実行されてもよい。
【０１５１】
図１１の説明に戻り、ステップＳ２の認識処理の次にステップＳ３の処理が実行される。ステップＳ３において、ＣＰＵ３１は、ステップＳ２の認識処理が成功したか否かを判定する。ステップＳ３の判定は、メインメモリ３２に記憶されている認識結果データ６９がマーカ５１の位置および向きを示すか否かによって行うことができる。ステップＳ３の判定結果が肯定となる場合、ステップＳ４の処理が実行される。一方、ステップＳ３の判定結果が否定となる場合、ステップＳ４の処理がスキップされて後述するステップＳ５の処理が実行される。
【０１５２】
ステップＳ４において、ＣＰＵ３１は、ステップＳ２の認識結果に基づいて、仮想カメラの位置および姿勢を算出する。仮想カメラは、仮想空間の画像を生成する場合における視点、視線方向、および視野角を定めるために仮想空間に設定されるものである。ステップＳ４においては、ＣＰＵ３１は、まず、ステップＳ２の認識結果であるマーカ５１の位置および向きから、ゲーム装置１（カメラ）とマーカ５１との位置関係を算出する。この位置関係は、例えば、ゲーム装置１およびマーカ５１の一方を基準としたときの他方の３次元の位置および姿勢として表される。次に、ＣＰＵ３１は、上記位置関係に基づいて仮想空間における仮想カメラの位置および姿勢を算出する。仮想カメラの位置および姿勢は、仮想空間における仮想カメラと、仮想空間におけるマーカ５１に対応する位置との位置関係が、現実空間におけるゲーム装置１とマーカ５１との位置関係に一致するように算出される。なお、ステップＳ４における処理は、例えば上述の非特許文献１に記載されているような従来の拡張現実感技術で用いられる処理と同様の方法であってもよい。また、上記ステップＳ２における認識処理が失敗であった場合、ＣＰＵ３１は、仮想カメラの位置および姿勢の算出を行わず、認識処理が最後に成功した時に算出された仮想カメラの位置および姿勢を用いる。ステップＳ４の次にステップＳ５の処理が実行される。
【０１５３】
ステップＳ５において、ＣＰＵ３１はゲーム制御処理を実行する。ゲーム制御処理は、ユーザ（プレイヤ）の入力等に応じて仮想空間内のオブジェクトを動作させること等によってゲームを進行させる処理である。具体的には、ゲーム制御処理には、ユーザの入力に従ってプレイヤキャラクタの動作を制御したり、ゲームプログラム６１において定められた制御ルールに従ってオブジェクト（図４に示す大砲５２等）の動作を制御したりする処理が含まれる。また、ＣＰＵ３１は、ゲーム装置１に設けられた各種入力装置（タッチパネル１３、各操作ボタン１４Ａ〜１４Ｌ）に対する操作結果の他、上記認識結果データ６９をゲーム入力として用いてもよい。例えば、認識結果データ６９から算出される仮想カメラの位置がプレイヤキャラクタの位置として用いられてもよい。ステップＳ５の次にステップＳ６の処理が実行される。
【０１５４】
ステップＳ６において、ＣＰＵ３１は、撮像画像と仮想空間における仮想オブジェクトの画像（仮想画像）とを合成した合成画像を生成して表示装置（上側ＬＣＤ２２）に表示する。すなわち、ＣＰＵ３１は、まず、ステップＳ４で設定された仮想カメラの位置および姿勢に基づいて仮想画像を生成する。これによって、仮想カメラの位置から見た仮想オブジェクトの画像が生成される。次に、ＣＰＵ３１は、生成された仮想オブジェクトの画像を撮像画像に対して合成し、合成画像を生成・表示する。なお、合成画像の生成に用いられる撮像画像は、取得された最新の撮像画像でもよいし、認識処理が成功であった最新の撮像画像でもよい。なお、合成画像の生成処理は、従来における拡張現実感技術と同様の処理であってもよい。ステップＳ６の次にステップＳ７の処理が実行される。
【０１５５】
ステップＳ７において、ＣＰＵ３１は、ゲームを終了するか否かを判定する。ステップＳ７の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ７の判定結果が否定である場合、ステップＳ１の処理が再度実行される。以降、ステップＳ７でゲームを終了すると判定されるまで、ステップＳ１〜Ｓ７の処理ループが繰り返し実行される。一方、ステップＳ７の判定結果が肯定である場合、ＣＰＵ３１は、図１１に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【０１５６】
上記ゲーム処理によれば、撮像画像から第１図形５５の領域を検出する対象検出処理（ステップＳ１１）と、検出した領域から第１図形５５を含むマーカ５１を検出するマーカ検出処理（ステップＳ１５）とで、処理の精度を変えることによって、認識処理を高速かつ精度良く行うことができる。また、第１図形５５内の内部図形５６の中心位置を算出し、中心位置に基づいてマーカ５１上の位置（４つの頂点）を算出することによって、撮像画像にぶれが生じている場合でも、マーカ５１の位置を正確に算出することができる。
【０１５７】
なお、上記ステップＳ３〜Ｓ６の一連の処理によれば、マーカ５１が検出された場合（ステップＳ３でＹｅｓの場合）、マーカ５１と外側カメラ２５との位置関係が、認識処理における処理結果（マーカ５１の検出結果）に基づいて算出される（ステップＳ４）。そして、仮想空間に配置される仮想オブジェクトを表す仮想画像が上記位置関係に基づいて生成され、撮像画像に対して仮想画像を合成した画像が表示装置に表示される（ステップＳ５）。このように、本実施形態では、いわゆる拡張現実感技術において、上述の認識処理を用いることができる。ここで、本実施形態のように拡張現実感技術を用いる場合には、認識処理においてマーカ５１の位置および向きを正確に算出することが好ましい。また、本実施形態のようなゲーム処理においては、処理が遅れることによってゲーム操作に対する応答性が悪くなったり、ゲーム進行が遅れたりすることは好ましくなく、認識処理は高速に行われることが好ましい。したがって、拡張現実感技術を用いたゲーム処理には、高速でかつ精度良く行うことができる本実施形態における認識処理が特に有効である。
【０１５８】
［変形例］
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【０１５９】
（中心位置から４つの頂点を算出する方法に関する変形例）
また、上記ステップＳ２４においては、ＣＰＵ３１は、ステップＳ２３で検出された内部図形５６の領域の個数が所定個数であるか否かを判定した。ここで、本実施形態では、８個の内部図形５６の中心位置から４本の直線を算出することで４つの頂点を特定しているので、８個全ての内部図形５６が検出されなくても４つの頂点を算出することは可能である。例えば、図１７における中心点Ｐ１〜Ｐ８のいずれか１つがなくても、４本の直線Ｌ１〜Ｌ４を算出することは可能である。したがって、他の実施形態においては、ステップＳ２４において、ＣＰＵ３１は、ステップＳ２３で検出された内部図形５６の領域の個数が所定範囲の個数であるか否かを判定するようにしてもよい。ここで、所定範囲は、内部図形の個数（８個）を含む範囲であり、例えば、７個から８個の範囲である。
【０１６０】
なお、上記実施形態において、７個の中心位置から４本の直線を算出する場合には、２個の中心位置から１本の直線を特定する必要がある。この場合、誤った組み合わせの２個の中心位置から誤った直線が算出される（例えば、中心点Ｐ３と中心点Ｐ４を通る直線が算出される）ことを防止する必要がある。そのため、例えば、ＣＰＵ３１は、以下の条件を満たすように、７個の中心位置から４本の直線を算出するようにしてもよい。
（条件１）７個の中心位置のうち２つまたは３つの中心位置を通る。
（条件２）第１図形５５の輪郭を表す４本の直線のいずれかと略平行である。
（条件３）第１図形５５の輪郭を表す４本の直線のいずれかから所定距離内にある（第１図形５５の中心付近を通らない）。
なお、上記（条件２）および（条件３）において、第１図形５５の輪郭を表す４本の直線は、上記ステップＳ２２で算出されるものを用いてもよい。上記条件１〜３を満たす直線を算出することで、７個の中心位置から４本の直線を算出することができる。
【０１６１】
以上のように、一直線上に配置される３つ以上の内部図形が描かれた第１図形５５を撮像対象とする一方、２つ以上の内部図形の中心位置から近似直線を算出し、この近似直線によってマーカ５１の位置（４つの頂点の位置）を算出するようにしてもよい。これによれば、内部図形の数に冗長性を持たせることによって、全ての内部図形を検出できない場合でも４つの頂点の位置を算出することができる。
【０１６２】
（マーカに関する変形例）
上記実施形態においては、８個の内部図形５６が描かれた第１図形５５を含むマーカ５１を用いる場合を例として説明したが、本発明において用いることができるマーカはこれに限らない。例えば、他の実施形態においては、内部図形５６の数は８個に限らない。図２０は、本実施形態の変形例におけるマーカを示す図である。図２０に示すマーカ７３は、１２個の内部図形５６を有する第１図形７４と、図６と同様の第２図形５７とを含む。また、第１図形７４内の１２個の内部図形５６は、（正方形）の４頂点と４辺の位置に配置されている。他の実施形態においては、図６に示すマーカ５１に代えて、図２０に示すマーカ７３を用いるようにしてもよい。マーカ７３を用いる場合、上述のステップＳ２６では、ＣＰＵ３１は、３つまたは４つの中心位置から上記直線Ｌ１〜Ｌ４を算出するようにしてもよい。これによれば、内部図形の数に冗長性を持たせることができるので、ＣＰＵ３１は、全ての内部図形を検出できない場合でも４つの頂点の位置を算出することができる。
【０１６３】
また、上記実施形態においては、内部図形５６は全て同じ色（白色）としたが、他の実施形態においては、第１図形５５内における位置に応じて内部図形５６の色を異ならせるようにしてもよい。図２１は、本実施形態の他の変形例におけるマーカを示す図である。図２１に示すマーカ７５は、図２０に示す第１図形７４と同様、１２個の内部図形５６が描かれた第１図形７６を含む。ここで、第１図形７６においては、四角形（正方形）の４辺の位置に配置される各内部図形５６の色は、辺毎に異なっている（図２１では、色の違いを斜線の方向および間隔で表す）。他の実施形態においては、図６に示すマーカ５１に代えて、図２１に示すマーカ７５を用いるようにしてもよい。この場合、ＣＰＵ３１は、第２図形を用いずにマーカ７５の向き（上下左右の４方向に関する向き）を算出することができる。すなわち、ＣＰＵ３１は、内部図形５６の色を検知することによって、マーカ７５の上下左右の４方向に関する向きを特定することができる。
【０１６４】
また、上記実施形態においては、第１図形５５を検出しやすくする目的で、マーカ５１には黒色の第１図形５５の周囲に白色の枠が設けられた。そのため、認識処理による検出対象はマーカ５１内の第１図形５５であった。ここで、他の実施形態においては、白色の枠はなくてもよく、マーカ５１全体が認識処理による検出対象とされてもよい。
【０１６５】
また、上記実施形態では、マーカ５１は、第１図形５５と異なる位置に第２図形５７を含んでいた。ＣＰＵ３１は、第１図形５５に対して第２図形５７が配置される方向に基づいて第１図形５５の向き（上下左右の４方向に関する向き）を特定した（Ｓ２９）。ここで、他の実施形態においては、第１図形の内部に第２図形が描かれたマーカを用いてもよい。例えば、図６に示すマーカ５１において、第１図形５５の内部の８個の内部図形５６によって表される四角形の内側に、第２図形５７が形成されてもよい。なお、第２図形は、上記実施形態の矢印の図形のように、向きを特定することができる形状であればどのような図形であってもよい。このとき、ＣＰＵ３１は、ステップＳ２６で４つの頂点を算出した後、４つの頂点によって形成される四角形の内側の領域から第２図形を検出する。そして、検出された第２図形の向きから、上下左右の４方向に関する第１図形の向きを特定する。以上によっても上記実施形態と同様、上下左右の４方向に関する第１図形の向きを特定することができる。ただし、第１図形の内部に第２図形が描かれたマーカを用いる場合には、第１図形の内部に内側図形と第２図形との両方が含まれることになる。そのため、内側図形を検出する際に誤検出が生じる可能性が高くなり、（上記実施形態と比べて）認識処理の精度が落ちる可能性がある。換言すれば、上記実施形態では、第１図形内に内側図形のみが形成されたマーカを用いるので、内側図形をより正確に検出することができ、認識処理の精度を向上することができる。
【０１６６】
また、上記実施形態では、マーカ５１は、所定の図形が描かれた薄板状の部材であったが、他の実施形態においては、マーカ５１は、表示装置によって所定の図形を表示することによって実現されてもよい。例えば、他の実施形態においては、画面にマーカ５１を表示された他の携帯ゲーム装置がマーカ５１として用いられてもよい。
【０１６７】
（認識処理に用いる撮像画像に関する変形例）
上記実施形態においては、低精度で行う領域検出処理（ステップＳ１１）と、高精度で行うマーカ検出処理（ステップＳ１５）とにおいて、同じ撮像画像が用いられた。ここで、他の実施形態においては、上記２つの処理で解像度が異なる画像を用いてもよい。具体的には、領域検出処理においては、マーカ検出処理において用いられる撮像画像よりも解像度が低い画像が用いられてもよい。例えば、認識処理以外の他の処理において必要となる等の理由で、ゲーム装置１がカメラによる撮像画像から解像度の低い画像を生成する場合には、当該解像度の低い画像を領域検出処理において用いるようにしてもよい。
【０１６８】
（認識処理の精度に関する変形例）
上記実施形態においては、認識処理における領域検出処理（ステップＳ１１）とマーカ検出処理（ステップＳ１５）との間で処理の精度を変えるようにした。また、マーカ検出処理内における各処理の間（ステップＳ２１とステップＳ２３およびＳ２５との間）でも処理の精度を変えるようにした。ここで、他の実施形態においては、認識処理における各処理を行う精度は、どのように設定されてよく、各処理は同じ精度で行われてもよい。
【０１６９】
（マーカ位置の算出に関する変形例）
上記実施形態においては、ＣＰＵ３１は、内部図形５６の中心位置を算出し、中心位置に基づいて、撮像画像内におけるマーカ５１の位置（４つの頂点Ｐ１１〜Ｐ１４の位置）を算出した。ここで、他の実施形態においては、ＣＰＵ３１は、内部図形５６の中心位置をそのままマーカ５１の位置として用いてもよい。例えば、ＣＰＵ３１は、図９および図１７に示す点Ｐ１，Ｐ３，Ｐ６および点Ｐ８をマーカ５１の位置として用いてもよい。また、上記実施形態においては、マーカ５１の位置および向きを表す情報として、４つの点の位置（４つの頂点Ｐ１１〜Ｐ１４の位置）を用いたが、マーカ５１の３つ以上の点の位置がわかればマーカ５１の位置および向きを特定することができる。したがって、他の実施形態においては、マーカ５１の位置および向きを表す情報として３つまたは５つ以上の点の位置を用いてもよい。したがって、ＣＰＵ３１は、３つ以上の内部図形の中心位置に基づいてマーカ５１の位置および向きを検出することができる。
【０１７０】
（その他の変形例）
上記実施形態では、ゲーム装置１は、ゲーム装置１が備える外側カメラ２５によってリアルタイムに取得される撮像画像に対して認識処理を実行した。ここで、他の実施形態においては、認識処理の対象となる撮像画像は、過去に撮像されたものであってもよいし、ゲーム装置１が外部の機器から取得した撮像画像であってもよい。また、上記実施形態では、外側カメラ２５がゲーム装置１に予め搭載されているが、他の実施形態では、ゲーム装置１に着脱可能な外付け型のカメラが外側カメラ２５に代えて利用されてもよい。
【０１７１】
また、上記実施形態では、拡張現実感技術において認識処理が用いられる場合を例として説明した。また、認識処理の認識対象となる物体は、拡張現実感技術において用いられるマーカであった。ここで、本発明は、撮像画像から任意の撮像対象を認識する任意の画像認識処理に適用することが可能である。例えば、他の実施形態においては、認識処理は、撮像画像からユーザの顔を認識し、認識した顔に対して所定の処理（例えば、落書き等の画像を追加する処理）を行う技術に用いられてもよい。
【０１７２】
また、上記実施形態では、一台の情報処理装置（ゲーム装置１）のみによって認識処理を実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有する画像認識システムにおいて、当該複数の情報処理装置が認識処理を分担して実行するようにしてもよい。
【産業上の利用可能性】
【０１７３】
以上のように、本発明は、撮像画像にぶれが生じている場合であっても、撮像対象の位置を正確に検出すること等を目的として、例えばゲームプログラムやゲーム装置に利用することが可能である。
【符号の説明】
【０１７４】
１      ゲーム装置
１３    タッチパネル
２２    上側ＬＣＤ
２５    外側カメラ
３１    ＣＰＵ
３２    メインメモリ
５１    マーカ
５４    対象領域
５５    第１図形
５６    内部図形
５７    第２図形
【図１】
0005647443.tif 000002
【図２】
0005647443.tif 000003
【図３】
0005647443.tif 000004
【図４】
0005647443.tif 000005
【図５】
0005647443.tif 000006
【図６】
0005647443.tif 000007
【図１０】
0005647443.tif 000008
【図１１】
0005647443.tif 000009
【図１２】
0005647443.tif 000010
【図１３】
0005647443.tif 000011
【図１４】
0005647443.tif 000012
【図１５】
0005647443.tif 000013
【図１６】
0005647443.tif 000014
【図１７】
0005647443.tif 000015
【図１８】
0005647443.tif 000016
【図１９】
0005647443.tif 000017
【図２０】
0005647443.tif 000018
【図２１】
0005647443.tif 000019
【図７】
0005647443.tif 000020
【図８】
0005647443.tif 000021
【図９】
0005647443.tif 000022