(57)【要約】【課題】  画像データを２値化する際の画素値の範囲を好適に設定する技術を提供することを目的とする。【解決手段】  本発明のゲームシステムにおいて、ゲーム用カードを配置するためのゲーム用マット３００を用意する。ゲーム用マット３００には、段階的に明度が変化する複数のグラデーション領域３１０が設けられる。ゲームシステムでは、ゲーム用マット３００に配置されるゲーム用カードを撮像して、ＲＧＢの画素値の範囲（２値化閾値）を設定して２値化処理を行うが、ゲーム用カードの２値化処理を行う前に、グラデーション領域３１０を２値化して最適なＲＧＢの画素値範囲を設定する。【選択図】  図１３
2007094452.tif 000002
【特許請求の範囲】
【請求項１】
ゲーム用カードを配置するためのゲーム用マットであって、段階的に明度が変化するグラデーション領域が設けられることを特徴とするゲーム用マット。
【請求項２】
前記グラデーション領域は、当該ゲーム用マット上に複数設けられ、
それぞれのグラデーション領域は、同一の色相で構成されることを特徴とする請求項１に記載のゲーム用マット。
【請求項３】
前記グラデーション領域の外縁は円形であり、グラデーション領域の中心から外縁に向かう方向に、高明度から低明度に明度が同心円状に段階的に変化することを特徴とする請求項１または２に記載のゲーム用マット。
【請求項４】
所定の色をもつセルをもつゲーム用カードと、
前記ゲーム用カードのセルと同一の色相の色により構成され、段階的に明度が変化するグラデーション領域を有するゲーム用マットと、
前記ゲーム用マットと、前記ゲーム用マット上に置かれる前記ゲーム用カードを撮像してフレーム画像を取得する撮像部と、
ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換する２値化処理部と、
フレーム画像の２値化データにおける前記ゲーム用マットのグラデーション領域を抽出する抽出部と、
グラデーション領域の２値化データをもとに、前記２値化処理部において２値化する際のＲＧＢの画素値の範囲を調整する調整部と、
を備えることを特徴とするカードゲームシステム。
【請求項５】
前記グラデーション領域の外縁は円形であり、グラデーション領域の中心から外縁に向かう方向に、高明度から低明度に明度が同心円状に段階的に変化することを特徴とする請求項４に記載のカードゲームシステム。
【請求項６】
前記グラデーション領域は、前記ゲーム用カードのセルの明度よりも高い明度をもつ領域と、低い明度をもつ領域とを少なくとも含むことを特徴とする請求項４または５に記載のカードゲームシステム。
【請求項７】
所定の色のセルをもつゲーム用カードと、前記ゲーム用カードのセルと同一の色相の色により構成され、段階的に明度が変化するグラデーション領域を有するゲーム用マットとを撮像したフレーム画像を解析する画像解析装置であって、
ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換する２値化処理部と、
フレーム画像の２値化データから前記ゲーム用マットのグラデーション領域を抽出する抽出部と、
グラデーション領域の２値化データをもとに、前記２値化処理部において２値化する際のＲＧＢの画素値の範囲を調整する調整部と、
を備えることを特徴とする画像解析装置。
【請求項８】
所定の色をもつセルをもつゲーム用カードと、前記ゲーム用カードのセルと同一の色相の色により構成され、段階的に明度が変化するグラデーション領域を有するゲーム用マットとを撮像したフレーム画像を解析する画像解析方法であって、
ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換するステップと、
フレーム画像の２値化データにおける前記ゲーム用マットのグラデーション領域を抽出するステップと、
グラデーション領域の２値化データをもとに、２値化する際のＲＧＢの画素値の範囲を調整するステップと、
を備えることを特徴とする画像解析方法。
【請求項９】
コンピュータに、所定の色をもつセルをもつゲーム用カードと、前記ゲーム用カードのセルと同一の色相の色により構成され、段階的に明度が変化するグラデーション領域を有するゲーム用マットとを撮像したフレーム画像を解析させるプログラムであって、
ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換させる機能と、
フレーム画像の２値化データにおける前記ゲーム用マットのグラデーション領域を抽出させる機能と、
グラデーション領域の２値化データをもとに、２値化する際のＲＧＢの画素値の範囲を調整させる機能と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のセルを２次元配置することでコードデータを表現する技術に関する。
【背景技術】
【０００２】
近年、２次元コードをカメラで撮像してコードデータを認識し、そのコードデータに対応付けられた所定の処理を実行させる技術が普及している。１次元バーコードと比較すると、２次元コードの方がコード化できる情報量が多く、現在では様々な種類の２次元コードが登場するようになっている。２次元コードのコードデータは、画像データから効率よく且つ正確に読み取られる必要がある。このような状況をふまえて、従来、２次元コードの画像認識に関する技術を提案するものがある（例えば、特許文献１参照）。
【特許文献１】特開２０００−８２１０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
画像データの解像度が高ければ、２次元コードの情報量を多く取得でき、コードデータの高い認識率を実現することができる。しかしながら、カメラによっては解像度の低いものもあり、そのような場合であっても、コードデータの認識率を高めることが好ましい。また、撮像して取得された画像データには、外部の環境光などの影響が含まれているため、取得した画像データを２値化する際にその影響を考慮して、２値化する画素値の範囲を好適に設定することが好ましい。
本発明は、精度よく認識することのできるカードなどの物体を提供することを目的とする。また本発明は、画像データを２値化する際の画素値の範囲を好適に設定する技術を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明のある態様のゲーム用マットは、ゲーム用カードを配置するためのゲーム用マットであって、段階的に明度が変化するグラデーション領域が設けられる。
【０００５】
本発明の別の態様は、カードゲームシステムである。このカードゲームシステムは、所定の色をもつセルをもつゲーム用カードと、ゲーム用カードのセルと同一の色相の色により構成され、段階的に明度が変化するグラデーション領域を有するゲーム用マットと、ゲーム用マットと、ゲーム用マット上に置かれるゲーム用カードを撮像してフレーム画像を取得する撮像部と、ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換する２値化処理部と、フレーム画像の２値化データにおけるゲーム用マットのグラデーション領域を抽出する抽出部と、グラデーション領域の２値化データをもとに、２値化処理部において２値化する際のＲＧＢの画素値の範囲を調整する調整部とを備える。
【０００６】
本発明のさらに別の態様は、画像解析装置である。この装置は、所定の色のセルをもつゲーム用カードと、ゲーム用カードのセルと同一の色相の色により構成され、段階的に明度が変化するグラデーション領域を有するゲーム用マットとを撮像したフレーム画像を解析する画像解析装置であって、ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換する２値化処理部と、フレーム画像の２値化データからゲーム用マットのグラデーション領域を抽出する抽出部と、グラデーション領域の２値化データをもとに、２値化処理部において２値化する際のＲＧＢの画素値の範囲を調整する調整部とを備える。
【０００７】
本発明のさらに別の態様は、画像解析方法である。この方法は、所定の色をもつセルをもつゲーム用カードと、ゲーム用カードのセルと同一の色相の色により構成され、段階的に明度が変化するグラデーション領域を有するゲーム用マットとを撮像したフレーム画像を解析する画像解析方法であって、ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換するステップと、フレーム画像の２値化データにおけるゲーム用マットのグラデーション領域を抽出するステップと、グラデーション領域の２値化データをもとに、２値化する際のＲＧＢの画素値の範囲を調整するステップとを備える。
【０００８】
本発明のさらに別の態様は、プログラムである。このプログラムは、所定の色をもつセルをもつゲーム用カードと、ゲーム用カードのセルと同一の色相の色により構成され段階的に明度が変化するグラデーション領域を有するゲーム用マットとを撮像したフレーム画像を解析させるプログラムであって、コンピュータに、ＲＧＢの画素値の範囲を設定して、フレーム画像を２進数のビット表現に変換させる機能と、フレーム画像の２値化データにおけるゲーム用マットのグラデーション領域を抽出させる機能と、グラデーション領域の２値化データをもとに、２値化する際のＲＧＢの画素値の範囲を調整させる機能とをコンピュータに実行させる。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によると、精度よく認識することのできる２次元コードを提供することができる。
【発明を実施するための最良の形態】
【００１１】
図１は、本発明の実施例にかかるゲームシステム１の構成を示す。ゲームシステム１は、撮像装置２、画像処理装置１０および出力装置６を備える。画像処理装置１０は、画像解析装置２０およびゲーム装置３０を備える。画像解析装置２０およびゲーム装置３０は別装置として構成されてもよいが、一体として構成されてもよい。撮像装置２は、ＣＣＤ撮像素子またはＭＯＳ撮像素子などから構成されるビデオカメラであり、例えば３２０画素×２４０画素の解像度を有する。撮像装置２は実空間を所定の周期で撮像して、周期ごとのフレーム画像を生成する。撮像領域５は撮像装置２により撮像される範囲であり、撮像装置２の高さや向きを調整することで、撮像領域５の位置や大きさが調整される。ゲームプレイヤは、撮像領域５において、実オブジェクトであるゲームカード４を指で動かす。ゲームカード４は、自身を一意に識別するための２次元コードを有して構成される。
【００１２】
出力装置６は、表示装置であるディスプレイ７を有する。出力装置６は、さらにスピーカ（図示せず）を有して構成されてもよい。基本的に画像処理装置１０は、撮像装置２により撮像されたフレーム画像をディスプレイ７に表示させ、その際に、ゲームカード４上に仮想オブジェクトであるキャラクタを重畳するように表示制御する。プレイヤは、ディスプレイ７を見ることで、ゲームカード４が撮像領域５に入っているか容易に確認でき、入っていない場合には、ゲームカード４の位置をずらしたり、また撮像装置２の向きを調整して、撮像装置２にゲームカード４を撮像させるようにする。
【００１３】
実施例のゲームアプリケーションでは、プレイヤがゲームカード４に対して所定の操作を施すことにより、キャラクタを動作させる。このゲームアプリケーションの性質上、プレイヤにゲームカード４とキャラクタとの一体性を認識させることが好ましく、そのため、キャラクタの画像を、ゲームカード４に重ね合わせて表示させている。撮像領域５内でゲームカード４をゆっくりと移動させると、キャラクタは、ゲームカード４の上に乗った状態を維持しながら、ゲームカード４の動きに追従して一緒に移動する。
【００１４】
以上のキャラクタの動きは、画像処理装置１０により制御される。まず、画像解析装置２０は、撮像装置２において取得されたフレーム画像から、ゲームカード４の画像情報を抽出する。さらに、画像解析装置２０は、ゲームカード４の画像情報から、ゲームカード４に印刷された２次元コードを抽出する。このとき、画像解析装置２０は、ゲームカード４の２次元コードから、ゲームカード４の空間における位置情報、方向情報、距離情報などを決定する。
【００１５】
後述するが、画像解析装置２０は、フレーム画像中のゲームカード４の画像における基準セルおよび４隅のコーナーセルを用いて、撮像装置２とゲームカード４との距離やゲームカード４の向きなどを計算して求める。これにより、キャラクタは、ゲームカード４上にて前方を向くように表示制御される。また、２次元コードにおける複数の方形セルの配列から、ゲームカード４のコードデータを取得する。
【００１６】
図１では、ゲームカード４が台３に単に置かれている状態を示しているが、ゲームカード４は、例えば台３に対して斜めに傾けられたり、また台３よりも上に持ち上げられたりしてもよい。画像解析装置２０は、ゲームカード４が傾斜された状態、または、台３からの高さを変化された状態を画像解析により認識する機能をもつ。画像解析装置２０において画像解析された結果は、ゲーム装置３０に送られる。なお、撮像装置２において撮像されたフレーム画像が、ゲーム装置３０に送られて、ゲーム装置３０側で画像解析を行ってもよい。この場合、画像処理装置１０は、ゲーム装置３０のみで構成されることになる。
【００１７】
ゲーム装置３０は、画像解析装置２０における画像解析結果をもとに、ディスプレイ７の表示画面上で、キャラクタをゲームカード４の上に位置するように表示制御する。キャラクタは、ゲームカード４から抽出したコードデータに対応付けられて、ゲームシーンごとに適宜割り当てられてもよい。この場合、ゲームシーンが切り替わると、表示されるキャラクタも切り替わることになる。
【００１８】
図２は、ゲームカードの表面に印刷した２次元コードを示す。ゲームカード４の表面には、複数の所定形状をもつ多角形セルが所定の配列規則にしたがって２次元的に配置されている。具体的に、ゲームカード４の２次元コードは、撮像装置２により撮像された画像データからゲームカード４の認識処理を行うための基準となる基準セル１００、複数の方形セル１０６を２次元配置することでコードデータを構成するコードデータ部分１０２、コードデータ部分１０２を取り囲むように配置される複数のコーナーセル１０４ａ、１０４ｂ、１０４ｃ、１０４ｄ（以下、総称する場合は、「コーナーセル１０４」と呼ぶ）を備えている。コードデータ部分１０２およびコーナーセル１０４は、２次元コードにおけるコード部１１０に存在している。
【００１９】
基準セル１００、方形セル１０６およびコーナーセル１０４は、それぞれ所定の形状を有して構成される。図２に示す２次元コードでは、各セルが黒色に塗りつぶされて存在している。図２において、領域１０８は、複数の方形セル１０６が連結して構成されたものであり、他の方形セル１０６とともにコードデータを構成している。方形セル１０６は、同一の形状、ここでは正方形の形状をもつ。実施例のゲームカード４が複数存在する場合に、基準セル１００およびコーナーセル１０４の配置および大きさは共通とされ、コードデータ部分１０２における方形セル１０６の配列により、ゲームカード４を一意に特定することができる。
【００２０】
以下に、本実施例における２次元コードの詳細を説明する。正方形状の方形セル１０６の１辺を１ブロックとすると、基準セル１００は、７ブロック分の横方向の長辺と１．５ブロック分の縦方向の短辺で形成される長方形状のセル（エレメント）として構成される。実施例において、縦１ブロックと横１ブロックで形成される正方形状の領域をブロック領域と呼ぶ。
【００２１】
コードデータ部分１０２は、７ブロック×７ブロックで囲まれる領域に形成される。この領域の一辺は、基準セル１００の長辺に平行であり且つ長辺から１ブロック離れた位置に配置される。図示のように、コード部１１０は、８ブロック×８ブロックで囲まれる領域であり、コードデータ部分１０２は、コード部１１０が形成される領域に含まれる。実際に方形セル１０６が配置される領域は、７ブロック×７ブロックで囲まれる領域の４隅における２ブロック×２ブロックの領域を除いた部分とする。すなわち、４隅の２ブロック×２ブロックの領域には方形セル１０６を配置させないこととし、したがって、（７×７−２×２×４）＝３３のブロック領域に方形セル１０６が配置されて、コードデータを構成する。
【００２２】
コーナーセル１０４ａは、コード部１１０の左上隅の領域に配置される。この左上隅の領域は、コードデータ部分１０２として７ブロック×７ブロックで囲まれる領域の左上隅の２ブロック×２ブロックの領域の範囲内であってよく、またその範囲内からはみ出してもよい。図示の例では、コーナーセル１０４ａが、コードデータ部分１０２における左上隅の２ブロック×２ブロックの領域から縦に０．５ブロック分、横に０．５ブロック分だけはみ出して配置されている。すなわち、コーナーセル１０４ａは、コード部１１０において２．５ブロック×２．５ブロックで囲まれる左上隅の領域に存在している。同様に、コーナーセル１０４ｂはコード部１１０の右上隅の領域に配置され、コーナーセル１０４ｃはコード部１１０の右下隅の領域に配置され、コーナーセル１０４ｄはコード部１１０の左下隅の領域に配置される。図示の例では、各コーナーセル１０４は方形に形成され、具体的には１辺を１．５ブロック分の長さとする正方形のセルとして形成されている。
【００２３】
コードデータ部分１０２は、１ブロック領域を１ビットとすると、合計で３３ビット分の情報をコード化することができる。この３３ビット中、９ビット分は、コードデータが、正しいコードデータであることを確かめるためのチェックデータを構成する。従って、コードデータ部分１０２には、２４ビット分の情報がコード化されている。
【００２４】
方形セル１０６は、コードデータを表現する重要なエレメントであり、画像解析装置２０において正確に画像認識される必要がある。そのためには、全ての方形セル１０６を大きく形成することが理想的であるが、当然のことながらゲームカード４の大きさには制約があり、方形セル１０６を大きくすることは、それだけコードデータ部分１０２を構成する方形セル１０６の数を減じる結果となる。これは情報のビット数を減らすことに相当し、好ましくない。
【００２５】
以上のことから、本実施例において、コーナーセル１０４は、方形セル１０６よりも大きな面積を有して構成される。後述するが、本実施例の画像解析装置２０において、４隅のコーナーセル１０４は、コードデータ部分１０２を検出するために利用される。逆に言えば、４隅のコーナーセル１０４を検出できなければ、方形セル１０６を検出することもできないため、この２次元コードでは、方形セル１０６よりもコーナーセル１０４をまず確実に認識する必要がある。４隅のコーナーセル１０４を方形セル１０６よりも大きく形成することで、４隅のコーナーセル１０４の認識率を高めることができる。
【００２６】
画像解析装置２０は、フレーム画像中の基準セル１００の候補を抽出して所定の基準を満たすものを基準セル１００として仮定し、その仮定した基準セル１００の近傍に４つのコーナーセル１０４が存在しているか否かを判定する。４つのコーナーセル１０４を認識すると、画像解析装置２０は、４つのコーナーセル１０４により囲まれた領域、すなわちコードデータ部分１０２における方形セル１０６の配置を読み取り、コードデータを取得する。これにより、仮定した基準セル１００が真の基準セル１００であったことが判断され、ゲームカード４を認識することができる。画像解析装置２０は、撮像装置２を基準（原点）とするゲームカード４の仮想３次元座標系における位置と方向を計算して求める。
【００２７】
図３は、画像解析装置の構成を示す。画像解析装置２０は、フレーム画像取得部４０、実オブジェクト抽出部４２および状態決定部４４を備える。実オブジェクト抽出部４２は、２値化処理部５０、基準セル検出部５２、コード部検出部５４、検証処理部５６を備える。本実施例における画像解析装置２０の処理機能は、ＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、画像解析装置２０に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、画像解析装置２０のＣＰＵが、フレーム画像取得部４０、実オブジェクト抽出部４２、状態決定部４４としての機能をもつ。
【００２８】
フレーム画像取得部４０が、撮像装置２にて撮像された実空間のフレーム画像を取得する。撮像装置２は、周期的にフレーム画像を取得し、好適には１／６０秒間隔でフレーム画像を生成する。
【００２９】
実オブジェクト抽出部４２は、フレーム画像から実オブジェクト画像、すなわちゲームカード４の画像を抽出する。具体的に、２値化処理部５０がフレーム画像を２進数のビット表現に変換して、フレーム画像の情報をビットのオンとオフで表現する。基準セル検出部５２は、フレーム画像の２値化データから、基準セル１００を検出する。基準セル１００を検出すると、コード部検出部５４が、基準セル１００の位置をもとにコード部１１０を検出し、検証処理部５６が、コード部１１０に含まれるコードデータの検証処理を行う。
【００３０】
状態決定部４４は、設定した座標系における実オブジェクトの状態を決定し、具体的には、ゲームカード４の位置、方向および撮像装置２からの距離を決定する。状態決定部４４において決定された位置情報、方向情報、距離情報は、２次元コードから取得されたコードデータにそれぞれ関連付けされて、ゲーム装置３０に送られる。なお、複数のゲームカード４が撮像領域５に存在する場合には、それぞれのゲームカード４ごとに、位置情報、方向情報、距離情報、コードデータが関連付けされてゲーム装置３０に送られる。また、ゲームシステム１では、撮像装置２により撮像されたフレーム画像をディスプレイ７に表示させるため、フレーム画像自体もゲーム装置３０に送られる。ゲーム装置３０は、コードデータに対応付けられたキャラクタを読み出し、３次元の仮想空間においてゲームカード４とキャラクタとを重畳させて表示させる。
【００３１】
図４は、２次元コードの認識処理の処理手順を示すフローチャートである。２次元コードが撮像装置２により撮像され、その結果得られた１フレーム分の画像データが、フレーム画像取得部４０により取得される。２値化処理部５０は、画像データに対して２値化処理を行う（Ｓ１０）。２値化処理では、所定の閾値より大きい輝度を保持する画素の画素値が"０"に符号化され、表示上、その画素は白色とされる。以下においては、このように、画素値が"０"に符号化された画素を、白色画素と称する。一方、閾値以下の輝度値を保持する画素の画素値は、"１"に符号化され、表示上、その画素は黒色とされる。以下においては、このように、画素値が"１"に符号化された画素を、黒色画素と称する。２値化処理部５０は、黒色画素が連続して存在する領域を１つの連結領域としてまとめ、抽出された複数の黒色画素連結領域に対して、番号を１から順に昇順で設定（ラベリング）する（Ｓ１２）。例えば、ラベリングの番号は、連結領域として抽出した順すなわち特定した順に設定されてもよい。番号は、その座標データとともにＲＡＭ（図示せず）に記憶させる。図２に示す２次元コードを利用すると、コーナーセル１０４が方形セル１０６よりも大きく表示されているため、コーナーセル１０４を黒色画素連結領域として検出できる確率および座標位置の精度を高くすることができる。
【００３２】
基準セル検出部５２は、今回対象とする画像データより前に実行された２次元コード認識処理において、認識された２次元コードの表示上の位置、例えば、基準セル１００の中央点が、ＲＡＭに記憶されているか否かを判定する（Ｓ１４）。前フレームにおける基準セル１００の中央点がＲＡＭに記憶されている場合（Ｓ１４のＹ）、記憶されている位置を基準セル検出処理の開始点として設定する（Ｓ１６）。前の画像フレームにおいて基準セル１００が検出されている場合、今回の画像フレームにおいてもゲームカード４の位置は大きく変化していないことが多いため、前フレームの基準セル１００の中央点を利用することで、今回のフレームにおいて効率的に基準セル１００を検出することが可能となる。一方、２次元コードの位置がＲＡＭに記憶されていない場合（Ｓ１４のＮ）、基準セル検出部５２は、ディスプレイ７の表示上の中心点を基準セル検出処理の開始点に設定する（Ｓ１８）。開始点を設定した後、基準セル検出部５２は、基準セル１００の検出処理を実行する（Ｓ２０）。
【００３３】
図５は、基準セルの検出処理を示すフローチャートである。なお、本フローにて示す画素数は撮像装置２の解像度などに依存し、ここでは理解を容易にするため、一例としての画素数を示すこととする。まず、基準セル検出部５２は、図４のＳ１２においてラベリングした黒色画素連結領域の総数Ｍを読み出し、カウンタの値ｊを１に初期設定する（Ｓ１００）。次に、図４のＳ１６またはＳ１８において設定した開始点から、ディスプレイ７の画面上を左回りの渦巻の軌跡に沿って、黒色画素連結領域を探索し、始めに検出した黒色画素連結領域を基準セル候補領域として選択する（Ｓ１０２）。基準セル検出部５２は、選択した基準セル候補領域の縁部分を抽出して、短辺および長辺を決定する（Ｓ１０４）。
【００３４】
基準セル検出部５２は、短辺が所定画素数、例えば２０画素以上の画素で構成されているか否かを判定する（Ｓ１０６）。短辺は１．５ブロック分の長さで構成されているが、短辺が２０画素より少ない画素で構成されている基準セル１００である場合、１ブロックの長さは、さらに少ない数の画素から構成されることとなる。そのため、２次元コードにおける最小の構成要素である方形セル１０６の一辺は約１３画素以下となり、撮像装置２で適切に撮像することはできない。このことより、短辺が２０画素より少ない画素で構成されていると判定された場合（Ｓ１０６のＮ）、Ｓ１０２で選択された黒色画素連結領域は、基準セル１００ではないと判断することとし、Ｓ１１６に進む。
【００３５】
短辺が２０画素以上の画素で構成されていると判定された場合（Ｓ１０６のＹ）、基準セル検出部５２は、基準セル候補領域の長辺が所定画素数、例えば３００画素以下の画素で構成されているか否かを判定する（Ｓ１０８）。例えば、長辺が３００画素より多い画素で構成されている基準セル１００であるとすると、長辺の長さが７に対して１の割合で求められる１ブロックの長さが大きくなり、基準セル１００から、８．５ブロック分離れて位置する右下コーナーセル１０４ｃおよび左下コーナーセル１０４ｄが、撮像装置２にて撮像されなくなる。このことより、長辺が３００画素より多い画素で構成されていると判定された場合（Ｓ１０８のＮ）、Ｓ１０２で選択された黒色画素連結領域は、基準セル１００ではないと判断することとし、Ｓ１１６に進む。
【００３６】
長辺が３００画素以下の画素で構成されていると判定された場合（Ｓ１０８のＹ）、基準セル検出部５２は、基準セル候補領域の黒色画素の総数が、２０画素以上かつ１５００画素未満であるか否かを判定する（Ｓ１１０）。黒色画素の総数が２０画素未満の場合（Ｓ１１０のＮ）、短辺が２０画素より少ない画素で構成された場合と同様の問題が発生し、また、１５００画素以上である場合（Ｓ１１０のＮ）、長辺が３００画素より多い画素で構成された場合と同様の問題が発生する。したがって、これらの場合には、基準セル候補領域が基準セル１００である可能性が小さいと判断することとし、Ｓ１１６に進む。
【００３７】
基準セル候補領域の黒色画素の総数が２０画素以上かつ１５００画素未満である場合（Ｓ１１０のＹ）、基準セル検出部５２が、基準セル候補領域の方形らしさを判定する（Ｓ１１２）。方形らしさは、既述した特許文献１に記載されるように、基準セル候補領域のモーメントをもとに求められる。方形でないと判定する場合（Ｓ１１２のＮ）、基準セル候補領域が基準セル１００でないと判断することとし、Ｓ１１６に進む。方形であると判定される場合（Ｓ１１２のＹ）、基準セル検出部５２は、基準セル候補領域を基準セル１００として設定し（Ｓ１１４）、基準セル候補領域とされた黒色画素連結領域のラベリング番号を、ＲＡＭに記憶させる。このようにして、基準セル１００を検出することができる。画像データ中に１枚のゲームカード４しか含まれていない場合、基準セル１００を検出した時点で、基準セルの検出処理を終了する。一方、ゲームカード４が複数含まれている可能性がある場合には、Ｓ１１６に進む。
【００３８】
基準セル検出部５２は、カウント値ｊが基準セル候補領域の総数Ｍに等しいか否かを判定する（Ｓ１１６）。カウント値ｊが総数Ｍに達していない場合（Ｓ１１６のＮ）、カウント値ｊを１インクリメントして（Ｓ１１８）、Ｓ１０２のステップに戻る。一方、カウント値ｊが総数Ｍに達すると（Ｓ１１６のＹ）、この基準セル検出処理を終了する。
【００３９】
図４に戻って、Ｓ２０の基準セル検出処理において基準セル１００が検出されない場合（Ｓ２２のＮ）、ゲームカード４の存在を確認できないため、２次元コードの認識処理を終了する。一方、基準セル１００が検出されると（Ｓ２２のＹ）、コード部検出処理が実行される（Ｓ２４）。
【００４０】
図６は、コード部の検出処理を示すフローチャートである。まず、コード部検出部５４は、図５のＳ１１４において設定された基準セル１００の総数Ｎを読み出し、カウンタの値ｋを１に初期設定する（Ｓ２００）。なお、Ｓ１１４において設定した基準セル１００には、設定した順に番号をふっているものとする。続いて、図４のＳ１２においてラベリングした黒色画素連結領域の総数Ｍを読み出し、カウンタの値ｊを１に初期設定する（Ｓ２０２）。コード部検出部５４は、カウント値ｊに対応する番号の黒色画素連結領域を検出し、それを左下隅のコーナーセル候補領域として選択する（Ｓ２０４）。
【００４１】
次に、コード部検出部５４は、選択した左下隅コーナーセル候補領域が、図４のＳ２０において検出してカウント値ｋに対応する番号の基準セル１００に対して予め設定された探索範囲内に存在するか否かを判定する（Ｓ２０６）。基準セル１００と左下隅のコーナーセル１０４ｄとの位置関係は図２に示すように予め定められているため、基準セル１００の座標データから、左下隅コーナーセルを探索する範囲を絞ることが可能である。なお、基準セル１００は横長の矩形状を有するため、長辺側を挟んで対向する２つの位置に探索範囲を設定することが可能となる。探索範囲内に存在しない場合（Ｓ２０６のＮ）、その黒色画素連結領域は左下コーナーセル１０４ｄではないと判断され、Ｓ２３２に進む。探索範囲内に存在する場合（Ｓ２０６のＹ）、その黒色画素連結領域を左下コーナーセル１０４ｄとして設定する（Ｓ２０８）。
【００４２】
左下コーナーセル１０４を設定した後、コード部検出部５４は、黒色画素連結領域の番号をカウントする他のカウンタの値ｌを１に初期設定する（Ｓ２１０）。コード部検出部５４は、カウント値ｌに対応する番号の黒色画素連結領域を検出し、それを右下隅のコーナーセル候補領域として選択する（Ｓ２１２）。
【００４３】
次に、コード部検出部５４は、Ｓ２０８で設定した左下コーナーセル１０４ｄの画素数（面積）と、Ｓ２１２で選択した右下コーナーセル候補領域の画素数（面積）の比を算出し、その比（面積比）が例えば１／６以上または６倍以下であるか否かを判定する（Ｓ２１４）。コーナーセル１０４は撮像装置２からの距離に応じて取得される画素数が変化する。具体的に、撮像装置２に近ければ大きい面積を有し、離れれば面積は小さくなる。そのため、コーナーセル同士であっても画像データ中の面積は異なるケースが想定される。しかしながら、例えば左下コーナーセルと右下コーナーセルの比が１／６より小さく、または６倍よりも大きくなるようなケース（Ｓ２１４のＮ）は通常想定しえないため、これらは一つの２次元コードにおけるコーナーセルであるとみなすことはできず、Ｓ２２６に進む。
【００４４】
面積比が例えば１／６以上、６倍以下である場合（Ｓ２１４のＹ）、コード部検出部５４は、左下コーナーセル１０４ｄの中心点と、Ｓ２１２で選択した右下コーナーセル候補領域の中心点の距離が所定の条件を満たすか否かを判定する（Ｓ２１６）。ここで所定の条件とは、中心点同士の距離が例えば基準セル１００の長辺の長さに近似していることであってもよい。所定の条件が成立しなければ（Ｓ２１６のＮ）、Ｓ２２６にすすみ、所定の条件が成立すると（Ｓ２１６のＹ）、コード部検出部５４は、その黒色画素連結領域を右下コーナーセル１０４ｃとして設定する（Ｓ２１８）。
【００４５】
以上のように左下コーナーセル１０４ｄ、右下コーナーセル１０４ｃを設定すると、コード部検出部５４が、設定した基準セル１００、左下コーナーセル１０４ｄ、右下コーナーセル１０４ｃを、ディスプレイ７の画面上のＸ軸方向およびＹ軸方向にアフィン変換する（Ｓ２２０）。なお、１ブロックの長さは、Ｓ２０で設定した基準セル１００の長辺または短辺の長さに基づいて算出される。コード部検出部５４は、アフィン変換して得られた画像から、コード部１１０の領域に含まれる黒色画素連結領域をセルとしてマッピングし、コードマップを生成する（Ｓ２２２）。
【００４６】
コード部検出部５４は、生成したコードマップのセルのうち、４隅のコーナーセル１０４を検出し、その周りの３ブロック領域が、白色画素とされているか否かを判定する（Ｓ２２４）。コーナーセル１０４の周囲の３ブロック領域が白色画素で構成されている場合（Ｓ２２４のＹ）、そのコードマップを２次元コードのコード部１１０と設定して（Ｓ２３０）、Ｓ２３６に進む。コーナーセル１０４の周囲の３ブロック領域が白色画素でない場合、Ｓ２２６に進む。
【００４７】
Ｓ２２６では、カウント値ｌが黒色画素連結領域の総数Ｍに等しいか否かを判定し、カウント値ｌがＭに等しければ（Ｓ２２６のＹ）、Ｓ２３２に進み、等しくなければ（Ｓ２２６のＮ）、カウント値ｌを１インクリメントして（Ｓ２２８）、Ｓ２１２に戻る。
【００４８】
Ｓ２３２では、カウント値ｊが黒色画素連結領域の総数Ｍに等しいか否かを判定し、カウント値ｊがＭに等しければ（Ｓ２３２のＹ）、Ｓ２３６に進み、等しくなければ（Ｓ２３２のＮ）、カウント値ｊを１インクリメントして（Ｓ２３４）、Ｓ２０４に戻る。
【００４９】
Ｓ２３６では、カウント値ｋが設定した基準セル１００の総数Ｎに等しいか否かを判定し、カウント値ｋがＮに等しくなければ（Ｓ２３６のＮ）、カウント値ｋを１インクリメントして（Ｓ２３８）、Ｓ２０２に戻る。これにより、画像データにおいて複数の２次元コードを探索することが可能となる。カウント値ｋがＮに等しくなると（Ｓ２３６のＹ）、以上により、コード部１１０の検出処理が終了する。
【００５０】
図４に戻って、Ｓ２４のコード部検出処理においてコード部１１０が検出されない場合（Ｓ２６のＮ）、２次元コードの存在を確認できないため、２次元コードの認識処理を終了する。一方、コード部１１０が検出されると（Ｓ２６のＹ）、コードデータの検証処理が実行される（Ｓ２８）。
【００５１】
図７は、コードデータの検証処理を示すフローチャートである。既述したように、３３ビットのコードデータ中、所定のアルゴリズムで生成された９ビットのチェックデータと、２４ビットの情報データとが存在し、この処理ではチェックデータを用いて、コードデータを検証する。以下では、所定のアルゴリズムで生成したチェックデータを、そのアルゴリズムに基づいてコードデータからチェックデータを生成して照合することで、コードデータを検証する処理を行う。
【００５２】
まず、検証処理部５６は、後のステップであるＳ３０４、Ｓ３０８で算出される基準値を、１ビット右方向にシフトする回数をカウントするカウンタの値ｐを１に初期設定する（Ｓ３００）。次に、検証処理部５６は、コード部１１０のコードマップから、コードデータおよびチェックデータの値を算出する（Ｓ３０２）。
【００５３】
検証処理部５６は、算出したコードデータの値（ビットストリーム）と、０ｘＦＦＦＦＦＦとの排他的論理和演算を行い（Ｓ３０４）、その結果得られた値（ビットストリーム）を基準値（基準ビットストリーム）とする。基準ビットストリームのLSB(Least Significant Bit)に"１"が立っているか否かを判定し（Ｓ３０６）、"１"が立っていないと判定した場合（Ｓ３０６のＮ）、検証処理部５６は、基準値（基準ビットストリーム）と、０ｘ８４０８との排他的論理和演算を行い（Ｓ３０８）、その結果得られた値（ビットストリーム）を新たな基準値（基準ビットストリーム）とし、Ｓ３１０に進む。LSBに"１"がたっている場合（Ｓ３０６のＹ）、同様にＳ３１０に進む。
【００５４】
検証処理部５６は、Ｓ３０４またはＳ３０８において算出した基準値（基準ビットストリーム）を１ビットだけ右にシフトさせ（Ｓ３１０）、カウント値ｐが、予め定めたシフト回数である２４に等しいか否かを判定する（Ｓ３１２）。ｐ＝２４ではないと判定した場合（Ｓ３１２のＮ）、カウント値ｐを１だけインクリメントした後（Ｓ３１４）、Ｓ３０６に戻る。
【００５５】
ｐ＝２４であると判定した場合（Ｓ３１２のＹ）、算出されたビットストリームと、０ｘ１ＦＦとの論理積演算を行う（Ｓ３１６）。検証処理部５６は、論理積演算より得られ値が、算出したチェックデータの値と等しいか否かを判定し（Ｓ３１８）、等しいと判定した場合（Ｓ３１８のＹ）、図４のＳ２４で検出されたコード部１１０が、２次元コードとして適正なパターンであるとし、２次元コードのコード部１１０を確定する（Ｓ３２０）。チェックコードと等しくなければ（Ｓ３１８のＮ）、コード部１１０の読み取りに誤りがあったことを判定して、コードデータの検証処理を終了する。なお、図７では１つのコード部１１０の検証処理のみを示しているが、複数のコード部１１０が検出されている場合は、それぞれについてこの検証処理を実行する。
【００５６】
図４に戻って、Ｓ２８のコードデータ検出処理においてコード部１１０が確定されない場合（Ｓ３０のＮ）、２次元コードの存在を確認できないため、２次元コードの認識処理を終了する。一方、コード部１１０が確定されると（Ｓ３０のＹ）、コードデータの値、すなわち、２次元コードの値を、例えばＲＡＭに記憶させ、保持し（Ｓ３２）、２次元コードの認識処理を終了する。
【００５７】
以下に、３次元座標系におけるゲームカード４の位置および方向の求め方について説明する。ゲームカード４の仮想３次元座標系の位置および方向を求めるために、本実施例では、撮像装置２の画角、スクリーン解像度、４つのコーナーセル１０４のスクリーン座標位置、実際のコーナーセル１０４間の距離を利用する。なお、スクリーンとは、撮像装置２により撮像された画像を表示するディスプレイ７の画面である。
【００５８】
（ステップ１）
まず、視点からスクリーン投影面までの距離を求める。ここでは、カメラの画角とスクリーン解像度により、視点からスクリーン投影面までの距離を求める。
カメラの水平方向の画角：θ
スクリーンの水平方向の解像度：Ｗ
視点からスクリーン投影面までの距離：Ｐ
とすると、以下の計算式が成り立つ。
Ｐ＝（Ｗ×０．５）／ｔａｎ（θ×０．５）
【００５９】
（ステップ２）
次に、視点から各コーナーセル１０４に伸びる３次元ベクトルを求める。
コーナーセルのスクリーン座標位置：ＳＸ、ＳＹ
視点からスクリーン投影面までの距離：Ｐ
コーナーセルへ伸びる３次元ベクトル：Ｖ
とすると、以下の計算式が成り立つ。
Ｖ＝（ＳＸ，ＳＹ，Ｐ）
なお、スクリーン座標位置は、スクリーンの中央を原点としている。
【００６０】
（ステップ３）
視点と、隣り合う２つのコーナーセルの３点が形成する平面の法線ベクトルを求める。この法線ベクトルは、合計で４つ生成される。
視点からコーナーセル１０４ａへ伸びる３次元ベクトル：Ｖ１
視点からコーナーセル１０４ｂへ伸びる３次元ベクトル：Ｖ２
視点からコーナーセル１０４ｃへ伸びる３次元ベクトル：Ｖ３
視点からコーナーセル１０４ｄへ伸びる３次元ベクトル：Ｖ４
視点とコーナーセル１０４ａ、１０４ｂが形成する平面の法線ベクトル：Ｓ１２
視点とコーナーセル１０４ｂ、１０４ｃが形成する平面の法線ベクトル：Ｓ２３
視点とコーナーセル１０４ｃ、１０４ｄが形成する平面の法線ベクトル：Ｓ３４
視点とコーナーセル１０４ｄ、１０４ａが形成する平面の法線ベクトル：Ｓ４１
とすると、以下の計算式が成り立つ。
Ｓ１２＝Ｖ１×Ｖ２
Ｓ２３＝Ｖ２×Ｖ３
Ｓ３４＝Ｖ３×Ｖ４
Ｓ４１＝Ｖ４×Ｖ１
なお、「×」は、外積を指す。
【００６１】
（ステップ４）
続いて、ゲームカード４の３次元上での方向（座標軸）を求める。ステップ３で求めた４つの法線ベクトルをもとに、カードの座標軸が求まる。
カードのローカル座標Ｘ軸（カード表面に対して左右方向）：ＶＸ
カードのローカル座標Ｙ軸（カード表面に対して貫く方向）：ＶＹ
カードのローカル座標Ｚ軸（カード表面に対して上下方向）：ＶＺ
とすると、以下の計算式が成り立つ。
ＶＸ＝Ｓ１２×Ｓ３４
ＶＺ＝Ｓ２３×Ｓ４１
ＶＹ＝ＶＺ×ＶＸ
【００６２】
（ステップ５）
最後に、ゲームカード４の３次元上での位置を求める。ステップ４では、ゲームカード４のローカル座標変換マトリクスを求めたが、現実のコーナーセル間の距離が分かれば、カードの位置は容易に求められる。コーナーセル１０４ａの３次元座標位置を変数として表現すると、その変数を使ってコーナーセル１０４ｂ、１０４ｃ、１０４ｄの３次元座標位置を表すことができる。４つのコーナーセルのスクリーン座標位置は判明しているため、これらの計算式の連立方程式を解くことで、ゲームカード４の３次元座標位置を特定できる。
【００６３】
以上の実施例に示したように、図２に示す２次元コードを利用することで、コード部１１０におけるコーナーセル１０４の認識率を高めることができるとともに、２次元座標系におけるコーナーセル１０４の座標位置を正確に求めることが可能となる。具体的には、コーナーセル１０４を大きく形成することで、コーナーセル１０４の中心位置を正確に求めることができるため、ゲームカード４の位置を正確に特定できる。また、複数のコーナーセル１０４の中心位置を正確に求めることで、基準セル１００とコーナーセル１０４との位置関係を正確に把握して、アフィン変換の精度を高めることができ、ゲームカード４の位置やゲームカード４が向いている方向などを正確に特定できる。
【００６４】
図８は、ゲームカードの表面に印刷した２次元コードの別の例を示す。ゲームカード４の表面には、所定の形状を有する基準セル１００およびコード部１１０が配置されている。図２の２次元コードと比較すると、図８に示す２次元コードでは、コードデータ部分１０２を取り囲む複数のコーナーセル１０４ａ、１０４ｂ、１０４ｃ、１０４ｄが円形に形成されている。既述したように、コーナーセル１０４の２次元座標位置は、コーナーセル１０４の中心点により特定される。コーナーセル１０４が丸い形状を有することで、撮像装置２に対するゲームカード４の向きによらず、撮像装置２により撮像されるコーナーセル１０４の形状は変化しない。そのため、撮像装置２に対する向きによって、コーナーセル１０４の中心点が変わらず、したがって安定して中心点を取得することが可能となる。これにより、既述したように、ゲームカード４の位置情報、方向情報、距離情報を正確に求めることが可能となる。なお、方形セル１０６を丸く形成してもよい。また、コーナーセル１０４を円形にするだけでなく、図２に関して説明したように、方形セル１０６に対して大きく形成することで、コーナーセル１０４の座標位置をさらに高精度に求めることが可能となる。
【００６５】
図９は、ゲームカードの表面に印刷した２次元コードのさらに別の例を示す。ゲームカード４の表面には、基準セル１００およびコード部１１０が配置されている。図２の２次元コードと比較すると、図９に示す２次元コードでは、所定の形状を有する基準セル１００、それぞれ２次元配置することでコードデータを構成する複数の方形セル１０６、コードデータ部分１０２の領域を取り囲むように配置される複数のコーナーセル１０４の少なくとも１つのセルが、他のセルと異なる色を付けられる。例えば、基準セル１００に赤色、方形セル１０６に緑色、コーナーセル１０４に青色とそれぞれのセルに異なる色を割り当ててもよい。なお、ここで割り当てる色は、撮像装置２において取り込んで、所定の輝度閾値を基準として２値化できる色であればよく、必ずしも人間の目に可視であることは要求されない。使用する撮像装置２の撮像特性が予め分かっている場合は、その特性に合わせてセルを色づけしてもよい。
【００６６】
本実施例の２次元コードの認識処理では、図４のＳ２０に示すように、まず基準セル１００を検出することが条件となる。２次元コードの認識処理全体のなかでも、この基準セル検出処理の負荷は高く、したがって、画像データ中から基準セル１００を効率的に抽出できることが好ましい。そこで、複数種類のセルのうち、少なくとも基準セル１００には、方形セル１０６およびコーナーセル１０４とは異なる色をつけることが好ましい。
【００６７】
撮像装置２の受光面の前面にはＲＧＢのカラーフィルタが配置されており、フレーム画像ごとに、ＲＧＢのそれぞれの画素値が２５６階調で表現されたデータとして記録される。この例において、２値化処理部５０が、２値化処理するためのＲＧＢの画素値の範囲を設定する機能をもつ。基準セル１００が赤色で塗りつぶされている場合、図４のＳ１０の２値化処理において、２値化処理部５０が、基準セル用のＲＧＢの画素値の範囲を設定する。例えば、２値化処理部５０は、赤色（Ｒ）の画素値の範囲を２００〜２５５、緑色（Ｇ）の画素値の範囲を０〜１００、青色（Ｂ）の画素値の範囲を０〜１００と設定する。この設定に基づいて、２値化処理部５０は、この範囲内にあるＲＧＢの複合画素を抽出して、その画素値を"１"に符号化する。例えば、Ｒ画素値が２２５、Ｇ画素値が３０、Ｂ画素値が５０となる複合画素の画素値は"１"に符号化され、２値画像としての色が黒色に設定される。一方、ＲＧＢの画素値がこれらの範囲内にない複合画素の画素値は"０"に符号化され、２値画像としての色が白色に設定される。このように、赤色の画素を画像データから抽出することで、図４のＳ１２において、２値画像において黒色画素となる連結領域をラベリングすることができる。黒色画素として抽出する画素を画像データにおいて特定の色、ここでは赤色のものに限定することで、抽出するノイズの数を少なくでき、基準セル検出部５２は、フレーム画像の２値化データから基準セル１００を検出する時間を短縮できる。
【００６８】
なお、画素値はカラーフィルタ特性の影響を受けるため、カラーフィルタの特性も加味した画素値の範囲設定を行うために、ゲームカード４を台３に配置した状態で、基準セル１００の赤色の画素値を調査してもよい。これにより、撮像装置２において取得される基準セル１００のＲＧＢの画素値を特定することができ、特定した画素値に若干のマージンを与えた範囲で２値化処理を行うことで、検出する黒色画素連結領域の数を飛躍的に少なくすることが可能となる。特に、ゲームシステム１においては、リアルタイムで処理することが好ましいため、基準セル１００を効率的に抽出できることには、大きなメリットがある。
【００６９】
なお、他の種類のセル、例えばコーナーセル１０４、方形セル１０６に色づけを施した場合も同様である。コーナーセル１０４を青色とする場合、図４のＳ１０において、２値化処理部５０が、コーナーセル用のＲＧＢの画素値の範囲を設定する。例えば、２値化処理部５０は、赤色（Ｒ）の画素値の範囲を０〜１００、緑色（Ｇ）の画素値の範囲を０〜１００、青色（Ｂ）の画素値の範囲を２００〜２５５と設定する。この設定に基づいて、２値化処理部５０は、この範囲内にあるＲＧＢの複合画素を抽出して、その画素値を"１"に符号化する。例えば、Ｒ画素値が２０、Ｇ画素値が３０、Ｂ画素値が２４０となる複合画素の画素値は"１"に符号化され、２値画像としての色が黒色に設定される。一方、ＲＧＢの画素値がこれらの範囲内にない複合画素の画素値は"０"に符号化され、２値画像としての色が白色に設定される。このように、青色の画素を画像データから抽出することで、図４のＳ１２において、２値画像において黒色画素となる連結領域をラベリングすることができる。
【００７０】
このように、青色の強い画像を黒色画像に変換する２値化処理を行ってから、Ｓ１２において黒色画素連結領域としてラベリングされたものを、コード部検出部５４が、図６のフローに示すコーナーセル候補領域として選択するために利用する。黒色画素として抽出する画素を画像データにおいて特定の色、ここでは青色のものに限定することで、抽出するノイズの数を少なくでき、コード部検出部５４は、フレーム画像の２値化データからコーナーセル１０４を検出する時間を短縮できる。方形セル１０６を緑色とした場合は、図４のＳ１０において緑色の強い画像を黒色画像に変換する２値化処理を行ってから、Ｓ１２において黒色画素連結領域としてラベリングされたものを、図６のＳ２２２のコードマップ生成処理に利用する。３種類のセルに異なる色づけをした場合、２値化処理をする回数が増えることになるが、２値化処理した後の連結領域を探索する処理量が大幅に低減されるため、全体的な効率化を実現できる。
【００７１】
図９に示した２次元コードは、色づけしたセルを有しており、色づけしたセルは、大きく形成されてもよく、また図８に示すように、丸く形成されてもよい。
【００７２】
図１０は、ゲームカードの表面に印刷した２次元コードのさらに別の例を示す。ゲームカード４の表面には、基準セル１００およびコード部１１０が配置されている。図１０に示す２次元コードは、図９に示した２次元コードの一つの実施態様である。図１０に示す２次元コードは、所定の形状を有する基準セル１００、それぞれ２次元配置することでコードデータを構成する複数の方形セル１０６、コードデータ部分１０２の領域を取り囲むように配置される複数のコーナーセル１０４を備える。４つのコーナーセル１０４ａ、１０４ｂ、１０４ｃ、１０４ｄには全て同一の配色がなされるが、基準セル１００および方形セル１０６とは異なる色を付けられる。
【００７３】
ゲームカード４の美観性を向上するために、コーナーセル１０４は、ゲームカード４の側縁まで設けられる。コーナーセル１０４はゲームカード４の４隅の近くに配置され、また方形セル１０６よりも大きく形成されるため、ゲームカード４の中で、４つのコーナーセル１０４は目立つ存在となる。本来、コーナーセル１０４は、方形セル１０６の存在位置を特定するために設けられるが、ゲームカード４として使用される以上は、美観性も重要である。そのためゲームカード４を縁取る枠縁１０７を、コーナーセル１０４の位置でコーナーセル１０４を取り囲むように内側に折れ曲げてデザイン的に変化をもたせることで、コーナーセル１０４に意匠性をもたせることとしている。
【００７４】
このようにコーナーセル１０４をゲームカード４の側縁に設ける場合、コーナーセル１０４は、黒色以外の色をつけられることが好ましい。仮に黒色を割り当てた場合、ゲームカード４を撮像装置２で撮像して２値化処理を施すと、ゲームカード４の縁部に生じる影も黒色画素として変換されることがあり、黒色画素に変換された２つのコーナーセル１０４が、ゲームカード４の縁部の影で連結される状況が想定される。２値化処理により２つのコーナーセル１０４が連結されると、連結した黒色画素から２つのコーナーセル１０４を分離することは難しくなる。そのため、コーナーセル１０４に黒色以外の色を割り当て、２値化する際のＲＧＢの閾値、すなわちＲＧＢの範囲を適切に設定して２値化処理することで、ゲームカード４の縁部の影によりコーナーセル１０４が連結される事態を回避することが可能となる。このように、コーナーセル１０４をゲームカード４の側縁まで設けた場合には、影の色以外の色、すなわち黒色以外の色を割り当てることで、コーナーセル１０４を適切に抽出することが可能となる。
【００７５】
また、図１０に示すゲームカード４においては、コーナーセル１０４が三角形状に構成される。この形状は、正三角形であってもよい。コーナーセル１０４を正三角形とすることで、コーナーセル１０４の認識精度を高めることができる。
【００７６】
図１１（ａ）〜図１１（ｃ）は、取得した黒色画素がコーナーセル１０４であるか否かを判別する方法を説明するための説明図である。既述したように、コーナーセル１０４は、フレーム画像を２値化したあと、黒色画素の連結領域をもとに判別される。２値化されたフレーム画像は、２次元のＸＹ座標上に表現されるため、この連結領域の座標値を利用して、連結領域がコーナーセル１０４であるか否かを判別することができる。
【００７７】
図１１（ａ）は、フレーム画像から抽出された連結領域の一例を示す。この連結領域１０９ａは、Ｘ軸方向の幅をＨ１、Ｙ軸方向の幅をＶ１とする。なお、この幅は、２次元座標上の画素数でカウントする。この連結領域１０９ａの画素数をＣ１とした場合、この連結領域１０９ａがコーナーセル１０４の候補であるか否かは、以下の式で判別される。
α×Ｈ１×Ｖ１≦  Ｃ１  ≦β×Ｈ１×Ｖ１（α＜β＜１）
例えばαは０．３、βは０．７である。
連結領域１０９ａの画素数Ｃ１が、上式を満たす場合、この連結領域１０９ａをコーナーセル１０４の候補であると判別してもよい。当然のことながら、定数α、βの値は、他の値に設定してもよい。
【００７８】
図１１（ｂ）は、フレーム画像から抽出された連結領域の別の例を示す。この連結領域１０９ｂがコーナーセル１０４の候補であるか否かは、同様に以下の式で判別される。この連結領域１０９ｂの画素数をＣ２、Ｘ軸方向の幅をＨ２、Ｙ軸方向の幅をＶ２とする。
α×Ｈ２×Ｖ２≦  Ｃ２  ≦β×Ｈ２×Ｖ２（α＜β＜１）
図１１（ａ）および図１１（ｂ）に示す連結領域は、それぞれ判別式を満たしており、コーナーセル１０４の候補であると判別された例である。図１１（ａ）および図１１（ｂ）に示されるように、フレーム画像において、ゲームカード４は様々な角度で撮像領域５中に配置されている可能性があるが、上記した判別式を利用することで、三角形状のコーナーセル１０４を適切に認識することが可能となる。
【００７９】
図１１（ｃ）は、フレーム画像から抽出された連結領域のさらに別の例を示す。この場合、連結領域１０９ｃの画素数Ｃ３は、α×Ｈ３（Ｘ軸方向の幅）×Ｖ３（Ｙ軸方向の幅）よりも小さい。すなわち、
Ｃ３  ＜  α×Ｈ３×Ｖ３
の関係が成立する。これは、判別式（α×Ｈ３×Ｖ３≦  Ｃ３  ≦β×Ｈ３×Ｖ３）を満足するものではないため、図１１（ｃ）に示す連結領域１０９ｃは、コーナーセル１０４ではないことが判別される。
【００８０】
以上のように、コーナーセル１０４の形状を三角形とすることで、２次元座標上の座標値を利用して、簡単にコーナーセル１０４の候補を抽出することができる。またコーナーセル１０４の形状を正三角形とすると、他の三角形状と比較して、上記判別式で判定する際の方向依存性を低減できるため、コーナーセル１０４の認識精度をより高めることができる。
なお、図１０に示すゲームカード４においては、方形セル１０６で構成されるコードデータ部分１０２を、カード下方のコーナーセル１０４ｃ、１０４ｄの間に配置する。これにより、ゲームカード４の中央部分にスペースを作ることができ、そこにキャラクタの絵などを印刷することが可能となる。
【００８１】
図１２は、ゲームカードの表面に印刷した２次元コードのさらに別の例を示す。図１２に示すゲームカード４では、図１０に示すゲームカード４と同様に、コーナーセル１０４がゲームカード４の側縁から設けられている。このコーナーセル１０４は三角形状に形成され、基準セル１００およびコードデータ部分１０２ａ、１０２ｂとは異なる色を付けられる。
【００８２】
図１２に示すゲームカード４では、方形セル１０６を設ける領域が２つに分離される。ここでは、２つのコードデータ部分１０２ａ、１０２ｂが、４つのコーナーセル１０４ａ、１０４ｂ、１０４ｃ、１０４ｄより取り囲まれる領域以外の部分に配置される。コードデータ部分１０２ａは、基準セル１００とゲームカード４の上縁との間に形成され、コードデータ部分１０２ｂは、コーナーセル１０４ｃおよび１０４ｄを結んだラインとゲームカード４の下縁との間に形成される。なお、コーナーセル１０４ｃおよび１０４ｄを結ぶラインとは、カード内向きの三角形頂点同士を結んだラインである。コードデータ部分１０２ａおよびコードデータ部分１０２ｂを、４つのコーナーセル１０４で囲まれる領域の外に配置することで、ゲームカード４の中央領域のスペースを広くとることができ、そこにキャラクタの絵などを印刷することが可能となる。コードデータ部分１０２ａおよび１０２ｂは、それぞれ１２ビットの情報を記録することができ、したがって合計２４ビットの情報量を保持できる。なお、ゲームカード４の下方に配置されたコードデータ部分１０２ｂは、基準セル１００と誤認識されることを防ぐために、所定のビット長、例えば３ビット以上連続して着色されないようにすることが望ましい。
【００８３】
図１２の方形セル１０６を認識する際には、既に基準セル１００と、左下および右下のコーナーセル１０４ｄ、１０４ｃが検出されているため、これらの近傍を探索することで、コードデータ部分１０２ａおよび１０２ｂを容易に検出することができる。すなわち、コードデータ部分１０２ａは、基準セル１００に対してコーナーセル１０４ｃおよび１０４ｄの反対側に存在し、コードデータ部分１０２ｂは、コーナーセル１０４ｃおよび１０４ｄに対して基準セル１００の反対側に存在する。基準セル１００とコードデータ部分１０２ａとを近傍に設定し、またコーナーセル１０４ｃおよび１０４ｄとコードデータ部分１０２ｂとを近傍に設定することで、コードデータ部分１０２の探索効率を高めることが可能となる。
【００８４】
なお、図１２のゲームカード４においては、コードデータ部分１０２ａおよび１０２ｂとが２つに分離した配置を示したが、コードデータ部分１０２ａおよび１０２ｂは、隣接して配置されてもよい。すなわち、コードデータ部分１０２ａおよび１０２ｂは、基準セル１００とゲームカード４の上縁の間に配置されてもよく、またコーナーセル１０４ｄおよび１０４ｃとゲームカード４の下縁の間に配置されてもよい。
【００８５】
なお以上は、ゲームカード４を台３上で動かしているが、台３にゲーム用マットを置いて、その上でゲームカード４を動かしてもよい。
図１３は、ゲーム用カードを配置するためのゲーム用マットを示す。図１を参照して、ゲーム用マット３００は、撮像装置２の撮像領域５に入るように台３に置かれる。ゲーム用マット３００は、フェルト生地などの柔らかい素材で作製されて、使用しない間はコンパクトに丸めて収納できることが好ましい。
【００８６】
ゲーム用マット３００には、複数の仕切り線３０４により、９つのマス３０２ａ、３０２ｂ、３０２ｃ、３０２ｄ、３０２ｅ、３０２ｆ、３０２ｇ、３０２ｈ、３０２ｉ（以下、総称する場合は、「マス３０２」と呼ぶ）が形成されている。ゲーム用マット３００は、ゲームアプリケーションに応じて構成され、それぞれのマス３０２は、ゲームカード４を配置する区画を形成する。１人以上のユーザがゲームカード４をいずれかのマス３０２に置くと、画像解析装置２０が、配置されたマス３０２を特定してゲームカード４の２次元コードを認識し、ゲーム装置３０が、配置されたマスに応じたゲームストーリーを展開してもよい。図１３に示すゲーム用マット３００では３×３のマス３０２が形成されているが、マス３０２の数は、これに限るものではない。ユーザがゲームカード４を動かしてよい領域を「プレイエリア」と呼ぶと、図１３に示すゲーム用マット３００においては、マス３０２が形成された正方形の領域がプレイエリア３０６を形成する。ゲーム用マット３００は、その全体が撮像領域５に入るように配置される必要はないが、少なくともプレイエリア３０６は撮像領域５に入っている必要がある。なお、ゲームカード４を自由に動かしてもよいゲームアプリケーションにおいては、マス３０２は形成されなくてもよい。
【００８７】
ゲーム用マット３００において、プレイエリア３０６の４隅に、段階的に明度が変化するグラデーション領域３１０ａ、３１０ｂ、３１０ｃ、３１０ｄ（以下、総称する場合は、「グラデーション領域３１０」と呼ぶ）が設けられる。色には、色相、明度、彩度の３つの属性があるが、グラデーション領域３１０は、一つの色相の明度を変化させることで構成され、彩度については変化させなくてもよい。グラデーション領域３１０の外縁は円形であり、グラデーション領域３１０の中心から外縁に向かう方向に、高明度から低明度に明度が同心円状に段階的に変化している。
【００８８】
図１４は、グラデーション領域の外観を示す。グラデーション領域３１０は、一つの色相で構成され、その色相において段階的に明度を変化させて構成される。色相は、赤、緑、青といった色合いの違いを表し、明度は明るさの違いを表す。ここではグラデーション領域３１０が色相をもち、すなわち有彩色で表現される場合を想定している。なお、白、黒、グレーなどの無彩色には色相は存在していないが、グラデーション領域３１０を、白から黒に明度を段階的に変化して構成することも可能である。グラデーション領域３１０における明度の相違は、ＲＧＢフィルタを介してデジタル化される際、輝度の相違として取得される。
【００８９】
このように、グラデーション領域３１０の外縁３１２の明度が低く、中心３１４の明度は高く設定される。すなわち、このグラデーション領域３１０は、外側が濃い有彩色の領域をもち、内側が白く構成される。４つのグラデーション領域３１０は、４つ全てを同色で構成してもよいが、少なくとも１つの色を変えることでゲーム用マット３００の向きを定めるための指標として利用することができる。例えば、３つのグラデーション領域３１０ａ、３１０ｂ、３１０ｃを同一の色相で構成し、１つのグラデーション領域３１０ｄを別の色相で構成してもよい。このとき、４つのグラデーション領域３１０を検出することができれば、グラデーション領域３１０ａ、３１０ｂ、３１０ｃに対するグラデーション領域３１０ｄの位置が既知であるため、ゲーム用マット３００の向きを特定することが可能となる。
【００９０】
また、グラデーション領域３１０を検出することができれば、上述した、ゲームカード４の仮想３次元座標系における位置及び方向を求める方法と同様の方法により、ゲーム用マット３００の位置、方向、距離などの幾何情報を算出することができる。予めゲーム用マット３００の位置や方向などを把握しておくことにより、プレイエリア３０６に配置されているゲームカード４を更に効率よく認識することができる。また、図１において、撮像装置２により撮像されたフレーム画像をディスプレイ７に表示させ、ゲームカード４上にキャラクタを重畳表示させることを説明したが、ゲーム用マット３００を使用している場合には、ゲーム用マット３００の幾何情報を取得して、ディスプレイ７に表示されるフレーム画像におけるゲーム用マット３００上に、例えばゲームカード４を使った戦闘の背景画像などを重畳表示させてもよい。これにより、ゲームカード４を効率よく認識するために用いられるゲーム用マット３００をそのままディスプレイ７に表示するのではなく、背景画像などを重畳表示させることができるので、演出効果を向上させることができる。
【００９１】
グラデーション領域３１０は、さらに、ゲームカード４の基準セル１００、コーナーセル１０４および／または方形セル１０６の画像を２値化して抽出する際のＲＧＢの画素値の閾値を決定するために利用される。例えば、コーナーセル１０４の色相が緑であり、所定の明度を有して構成されるものとする。このとき、グラデーション領域３１０の色相を緑に設定し、グラデーションの一部に、コーナーセル１０４と同一の明度をもつ領域を形成する。したがって、コーナーセル１０４と同一の明度をもつセル明度領域３１６が、グラデーション領域３１０の中心３１４から外縁３１２の間の所定位置に設定される。好適には、セル明度領域３１６は、中心３１４と外縁３１２の中間地点に同心円状に形成される。したがって、グラデーション領域３１０の半径方向において、セル明度領域３１６と中心３１４の間には、セル明度領域３１６よりも明度の高い領域が設けられ、またセル明度領域３１６と外縁３１２の間には、セル明度領域３１６よりも明度の低い領域が設けられる。
【００９２】
コーナーセル１０４と、グラデーション領域３１０のセル明度領域３１６とが、同一色相（Ｇ）で同一の輝度（階調）をもち、環境光などの影響がない場合には、Ｇフィルタを介して取得されるＧ画素値が、例えば１２７で表現されるものとする。２値化処理部５０は、２値化処理するためにＲＧＢの画素値の範囲を設定するが、コーナーセル１０４の画素値が予め分かっている場合には、理想的には、２値化閾値をコーナーセル１０４の画素値近傍で設定して、コーナーセル１０４よりも画素値の低い（すなわち明度の高い）ものを、できるだけ抽出しないように範囲設定することが好ましい。この場合、理論的には、２値化処理部５０が、例えば閾値を１２０として、Ｇ画素値の範囲を１２０〜２５５に設定することで、コーナーセル１０４を抽出でき、Ｇ画素値が１２０に満たない画像を２値化処理により”０”に変換できる。２値化処理の際のＧ画素値の範囲を狭くすることで、他のノイズを低減できる。
【００９３】
しかしながら、実際の環境下では、照明があったり、また太陽光が入るなどして、撮像装置２により取得されるコーナーセル１０４は、理論値（１２７）から異なることが多い。なお、「理論値」は、本実施例を説明するために便宜上使用する用語であって、基準となる環境下で画像データから抽出される画素値を意味する。２値化するために設定する画素値の範囲は、狭ければ狭いほど、後処理の負荷を低減できるが、一方で、環境光の影響により実際に取得される画素値が理論値とは異なってくるために、２値化する画素値の範囲が狭ければ、その範囲から外れる可能性が生じる。そのため、本実施例のゲームシステム１では、グラデーション領域３１０を利用して、２値化する際の画素値範囲にキャリブレーションを施し、環境光などの影響を加味した現実使用環境下での画素値範囲を設定する。
【００９４】
図１５は、画像解析装置の別の構成を示す。画像解析装置２０は、フレーム画像取得部４０および実オブジェクト抽出部４２を備える。実オブジェクト抽出部４２は、２値化処理部５０、領域抽出部６０、ＲＧＢ調整部６２を備える。図３に示したブロック図とは異なり、図１５では、２値化する際の画素値の範囲をキャリブレーションする構成が示されている。この画像解析装置２０の処理機能は、ＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、画像解析装置２０に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、画像解析装置２０のＣＰＵが、フレーム画像取得部４０、実オブジェクト抽出部４２としての機能をもつ。
【００９５】
フレーム画像取得部４０が、撮像装置２にて撮像された実空間のフレーム画像を取得する。撮像装置２は、周期的にフレーム画像を取得し、好適には１／６０秒間隔でフレーム画像を生成する。撮像領域５には、ゲーム用マット３００と、ゲーム用マット３００上に置かれたゲームカード４が配置されており、したがってフレーム画像は、ゲーム用マット３００とゲームカード４を含んでいる。
【００９６】
実オブジェクト抽出部４２は、フレーム画像から実オブジェクト画像を抽出する。ここでは、コーナーセル１０４を２値化する際のＲＧＢの画素値の範囲を調整することを目的とするため、抽出する実オブジェクト画像は、ゲーム用マット３００におけるグラデーション領域３１０である。以下では、コーナーセル１０４が所定の明度をもった緑色で構成されており、グラデーション領域３１０が、その所定の明度を含んだ緑色のグラデーションとして形成されている場合について説明する。
【００９７】
２値化処理部５０は、２値化するＲＧＢの範囲を設定して、フレーム画像を２進数のビット表現に変換する。具体的に、２値化処理部５０は、緑色のグラデーションが施されたグラデーション領域３１０ａ、３１０ｂ、３１０ｃを抽出するために、Ｇ画素値の範囲を１２０〜２５５、Ｒ画素値の範囲を０〜２０、Ｂ画素値の範囲を０〜２０に設定し、このＲＧＢの画素値の範囲内にあるＲＧＢの複合画素を抽出する。ＲＢについて画素値の範囲を０としないのは、カラーフィルタの特性などを考慮するためである。２値化処理部５０は、設定したＲＧＢの画素値の範囲内にある複合画素を抽出して、その画素値を”１”とする。
【００９８】
領域抽出部６０は、フレーム画像の２値化データから、ゲーム用マット３００のグラデーション領域３１０を抽出する。グラデーション領域３１０は、中心部分のＧ画素値が低く、外周部分のＧ画素値が高いグラデーションを形成している。２値化処理の結果、グラデーション領域３１０は、中心部分の複合画素値が０、外周部分の複合画素値が１のビット表現に変換され、中心部分が空白となるドーナツ形状となる。そこで、領域抽出部６０は、２値化されたデータの中からドーナツ形状を検出する。２値化処理の結果、グラデーション領域３１０以外にドーナツ形状に変換される領域は少ないと考えられるため、グラデーション領域３１０を円形に形成することは、グラデーション領域３１０の候補を絞る意味においてメリットが高い。
【００９９】
ここで、４つのグラデーション領域３１０は、正方形の頂点に配置されている。緑色用の２値化処理および黒色用の２値化処理の結果、複数のドーナツ領域が検出された場合に、それらのドーナツ領域が正方形の頂点にくる関係となるものを抽出し、それらをグラデーション領域３１０として特定する。緑色のグラデーション領域３１０ａ、３１０ｂ、３１０ｃとして特定されたドーナツ領域の形状は、２値化閾値のキャリブレーションのためにＲＧＢ調整部６２に送られる。
【０１００】
図１６（ａ）〜図１６（ｃ）は、グラデーション領域として特定されたドーナツ領域を示す。以下では、緑色のグラデーション領域３１０ａ〜３１０ｃをもとに、２値化して同一色のコーナーセル１０４を検出する際のＧ画素値の範囲をキャリブレーションする方法について説明する。Ｇ画素値の２値化閾値を１２０とし、抽出範囲を１２０〜２５５とする。ＲＧＢ調整部６２は、グラデーション領域３１０の２値化データをもとに、２値化処理部５０において２値化する際のＲＧＢの画素値の範囲を調整する。
【０１０１】
図１６（ａ）は、内径と外径との比が約１：２、正確には１２１：２５６となるドーナツ領域を示す。この場合は、撮像装置２により取り込んだフレーム画像において環境光の影響が一切なく、グラデーション領域３１０が理想的に２値化されている。このドーナツ領域において、方形セル１０６と同一階調をもつセル明度領域３１６は、中心と外縁とを１：１に分割した地点に存在し、ドーナツ領域の黒色部分に含まれている。したがって、Ｇ画素値の閾値を１２０に設定することで、コーナーセル１０４を好適に抽出することが可能となる。
【０１０２】
図１６（ｂ）は、ドーナツ領域の外径に対して内径が非常に小さくなった状態を示す。この場合、中心と外縁とを１：１に分割した地点に存在するセル明度領域３１６は、ドーナツ領域の黒色部分に含まれているが、その内側の階調の低い領域までもが検出されている。例えば、環境光に緑色光が含まれている場合に、緑色光とグラデーション領域３１０の緑色とが重なり合って、検出光のＧ成分が強くなることがある。このとき、ドーナツ領域の画素値は、グラデーション領域３１０の画素値の理論値よりも強い値で検出され、そのため、２値化されて”１”に符号化される領域が必要以上に増えることになる。
【０１０３】
したがって、２値化処理部５０が、Ｇ画素値の範囲を１２０〜２５５に設定してゲームカード４の画像を２値化すると、コーナーセル１０４を抽出することはできるが、コーナーセル１０４よりも薄い緑色の領域も同様に抽出することになる。コーナーセル１０４の候補が増えると、それだけコーナーセル１０４の特定処理に時間がかかるため、コーナーセル１０４の候補が少なくなるように、２値化する際の画素値の範囲を設定することが好ましい。
【０１０４】
ＲＧＢ調整部６２は、グラデーション領域３１０のグラデーションで表現される階調の分布と、コーナーセル１０４と同一の階調が存在する領域の位置を予め保持している。したがって、ＲＧＢ調整部６２は、図１６（ｂ）に示すドーナツ領域の形状を受け取ると、設定した閾値（１２０）が低かったことを判定し、閾値を高くする必要があることを決定する。
【０１０５】
例えばＲＧＢ調整部６２は、グラデーション領域３１０の階調分布をもとに、ドーナツ領域における中心から内径までの距離（すなわち、白色領域の半径）から、その地点におけるグラデーション領域３１０のＧ画素値の理論値を求める。その地点のＧ画素値の理論値は、本来、１２０よりも低いＧ画素値をとるが、図１６（ｂ）に示すドーナツ領域では、その地点のＧ画素値が１２０として検出されている。したがって、ＲＧＢ調整部６２は、グラデーション領域３１０上のＧ画素値の理論値と、設定された閾値１２０との差を、環境光による上昇分として、閾値の上げ量を定めてもよい。例えば、ドーナツ領域における白色領域と黒色領域の境界のグラデーション領域３１０上のＧ画素値の理論値を６０とした場合、設定閾値１２０との差は６０となるため、ＲＧＢ調整部６２は、２値化処理におけるＧ画素値の閾値を１８０として、２値化処理部５０に供給する。
【０１０６】
図１６（ｃ）は、ドーナツ領域の内径が外径の半分よりも大きくなった状態を示す。この場合、中心と外縁とを１：１に分割した地点に存在するセル明度領域３１６は、ドーナツ領域の白色部分に含まれており、したがって、コーナーセル１０４と同一階調のセル明度領域３１６は、２値化処理により”０”に変換されていることになる。例えば、環境が非常に暗いような場合に、グラデーション領域３１０の理論値よりも画素値が低く検出されることがある。
【０１０７】
したがって、２値化処理部５０が、Ｇ画素値の範囲を１２０〜２５５に設定してゲームカード４を２値化すると、コーナーセル１０４を抽出できないことになる。そのため、Ｇ画素値の抽出範囲を広げて、コーナーセル１０４と同一の画素値をもつセル明度領域３１６を抽出できるように、２値化処理のＧ画素値の範囲を再設定する必要がある。
【０１０８】
ＲＧＢ調整部６２は、図１６（ｃ）に示すドーナツ領域の形状を受け取ると、設定した閾値（１２０）が高かったことを判定し、閾値を低くする必要があることを決定する。例えばＲＧＢ調整部６２は、グラデーション領域３１０の階調分布をもとに、ドーナツ領域における中心から内径までの距離（すなわち、白色領域の半径）から、その地点におけるグラデーション領域３１０のＧ画素値の理論値を求める。その地点のＧ画素値の理論値は、本来、１２０よりも高いＧ画素値をとるが、図１６（ｃ）に示すドーナツ領域では、その地点のＧ画素値が１２０として検出されている。したがって、ＲＧＢ調整部６２は、グラデーション領域３１０上のＧ画素値の理論値と、設定された閾値１２０との差を、閾値の下げ量に定めてもよい。例えば、ドーナツ領域における白色領域と黒色領域の境界のグラデーション領域３１０上のＧ画素値の理論値を１８０とした場合、設定閾値１２０との差は６０となるため、ＲＧＢ調整部６２は、２値化処理におけるＧ画素値の閾値を６０として、２値化処理部５０に供給する。
【０１０９】
２値化処理部５０は、ＲＧＢ調整部６２より調整された画素値の範囲を受け取ると、その範囲をもとにフレーム画像の２値化処理を実行する。領域抽出部６０は、２値化されたデータから、グラデーション領域３１０に対応するドーナツ領域を検出して、ＲＧＢ調整部６２に供給する。ＲＧＢ調整部６２は、ドーナツ領域をもとに、２値化処理の閾値を調整し、２値化処理部５０にフィードバックする。以上のキャリブレーション処理は、ドーナツ領域が、図１６（ａ）に示すような状態となるまで実行されてもよい。
【０１１０】
なお、以上は、２値化する際のＧ画素値の範囲（閾値）をキャリブレーションする場合について説明したが、他のＲ、Ｂ画素値についても同様である。緑色のグラデーション領域３１０ａ、３１０ｂ、３１０ｃの２値化処理時のＲＢ画素値の閾値を２０にデフォルト設定しているが、ＲＧＢ調整部６２は、必要に応じてこのデフォルト値を調整することが好ましい。
【０１１１】
なお、グラデーション領域３１０ａ、３１０ｂ、３１０ｃは、空間的に異なる３点に存在しており、環境光などの影響により、その位置によって２値化処理時の最適な画素値の範囲が異なることも考えられる。外部照明の向きにより、グラデーション領域３１０ａ、３１０ｂの付近が明るく、グラデーション領域３１０ｃの付近が暗いような場合、グラデーション領域３１０ｃにあわせて、２値化する際の閾値を低く設定してもよい。これにより、ゲームカード４の配置位置にかかわらず、コーナーセル１０４を検出することが可能となる。
【０１１２】
しかしながら、グラデーション領域３１０ａ、３１０ｂ付近では、２値化閾値が低く設定されることで、コーナーセル１０４以外の様々な領域を抽出する可能性が高まる。そのため、それぞれのグラデーション領域３１０の位置における最適な２値化閾値を求め、この３点の２値化閾値から、プレイエリア３０６中の任意の位置における２値化閾値を導出してもよい。例えば、グラデーション領域３１０ｂにおける２値化閾値をＴ１、グラデーション領域３１０ｃにおける２値化閾値をＴ２とした場合、グラデーション領域３１０ｂおよび３１０ｃを結ぶライン上では、２値化閾値をＴ１からＴ２までリニアに変化させるように設定してもよい。他の任意の位置についても同様であり、３点の２値化閾値からの距離に応じて、それぞれの位置における２値化閾値が算出されてもよい。これにより、照明が近い場合など、カードの位置によって照明環境が異なり、撮影されるコード色が大きく異なるような場合であっても、適切にコードを認識することが可能となる。
【０１１３】
本実施例のキャリブレーション処理は、定期的に行われることが好ましい。なお、環境に変化がない場合には、頻繁にキャリブレーション処理が行われる必要性は高くないため、環境の変化を検知するセンサを別途設け、そのセンサにより環境変化が検知された場合に、キャリブレーション処理が行われるようにしてもよい。なお、環境変化には、ゲーム用マット３００を動かした場合や、外部照明などの明るさが変わった場合などがある。
【０１１４】
キャリブレーション処理の方法として、グラデーション領域３１０の所定位置における実際の画素値と、撮影の結果得られる測定値との差分から、２値化閾値を補正してもよいし、グラデーション領域３１０を２値化したときのドーナツ領域の形状が特定の形状になるように、２値化閾値を補正してもよい。後者の場合、例えば、ドーナツ領域の大小に応じて、２値化閾値をインクリメント又はデクリメントし、ドーナツ領域の形状が理論値に近づくように調整してもよい。また、単に１つの２値化閾値をもとに２値化するだけでなく、上限と下限の２つの閾値を設け、その範囲に入るか否かによって２値化してもよい。例えば、画素値が８５以上１７０以下であれば「０」、それ以外であれば「１」として２値化してもよい。この場合、ある２値化閾値の大小によりグラデーション領域３１０を２値化して、グラデーション領域３１０の外径を把握してから、上限と下限の２つの閾値により特定される中間領域のドーナツ領域の実測結果を取得し、その形状が理論値に近づくように上限と下限を補正してもよい。また、上述した例と濃淡が逆転していてもよく、その場合、反転処理をしてから２値化を行ってもよい。
【０１１５】
図１に示したように、撮像装置２は斜め上方からゲーム用マット３００を撮像するので、グラデーション領域３１０の形状が真円であったとしても、楕円形として認識される可能性がある。この場合であっても、上述したように、ゲーム用マット３００の位置や方向などを予め把握することが可能であるから、この情報をもとにグラデーション領域３１０の認識結果であるドーナツ領域の形状を、アフィン変換や相似変換などにより補正してから、上述したキャリブレーション処理を行ってもよい。
【０１１６】
また、ゲーム用マット３００が固定的に設置されてからキャリブレーション処理を行うことが好ましいので、例えば、グラデーション領域３１０の認識処理を複数回行って位置が変わらないことを確認してから、または、所定時間をおいて再度認識処理を行って位置が変わらないことを確認してから、キャリブレーション処理を開始してもよい。また、上述したように、ゲーム用マット３００の幾何情報を取得している場合には、ゲーム用マット３００とカードゲーム４の間の距離を算出することにより、ゲームカード４がゲーム用マット３００に置かれている（ゲームカード４とゲーム用マット３００との間の距離がほぼ０であり、かつ、平行である場合）のか、ユーザの手に持たれた状態にある（ゲームカード４とゲーム用マット３００との間の距離が離れているか、又は、平行ではない場合）のかを認識することができる。
【０１１７】
図１７は、実施例における画像データの伝送システムを示す。画像データ伝送システム２００は、画像データを生成する画像データ生成装置２０１、画像データを送信する送信局２０４、送信された画像データを受信する端末装置２０２を有して構成される。端末装置２０２は、受信した画像データを表示するための表示装置２０３を有する。画像データ伝送システム２００は、無線通信によりデータを伝送しているが、有線通信によりデータを伝送するものであってもよい。
【０１１８】
画像データ生成装置２０１は、上述した２次元コード、すなわち図２、図８、図９、図１０および図１２に関して説明した２次元コードの画像データを、端末装置２０２の表示装置２０３に表示させるためのデータフォーマットにしたがって生成する。画像データ生成装置２０１は、図２に示す２次元コードの画像データとして、複数の方形セルを表示装置２０３上の所定の座標位置に表示させるためのデータと、所定の座標位置に表示される複数の方形セルを取り囲む座標位置に複数のコーナーセルを表示させるためのデータを生成してもよい。画像データ生成装置２０１は、表示装置２０３上で、コーナーセルが方形セルよりも大きく表示されるように、コーナーセルと方形セルのデータを設定する。
【０１１９】
画像データ生成装置２０１は、図８に示す２次元コードの画像データとして、複数の方形セルを表示装置２０３上の所定の座標位置に表示させるためのデータと、所定の座標位置に表示される複数の方形セルを取り囲む座標位置に複数のコーナーセルを表示させるためのデータを生成してもよい。画像データ生成装置２０１は、コーナーセルが丸い形状に表示されるように、コーナーセルのデータを設定する。
【０１２０】
画像データ生成装置２０１は、図９に示す２次元コードの画像データとして、所定の形状を有する基準セルを表示装置上の所定の位置に表示させるためのデータと、基準セルに対して定められる領域の範囲内で複数の多辺形セルを表示させるためのデータと、領域を取り囲む座標位置に複数のコーナーセルを表示させるためのデータを生成してもよい。画像データ生成装置２０１は、基準セル、多辺形セル、コーナーセルの少なくとも一つのセルの色が、他のセルの色と異なるように設定する。また画像データ生成装置２０１は、図１０、図１２に示す２次元コードの画像データとして、所定の形状を有する基準セルを表示装置上の所定の位置に表示させるためのデータと、同一形状を有する複数のコーナーセルを表示させるためのデータと、所定の領域に複数のコーナーセルを表示させるためのデータを生成してもよい。画像データ生成装置２０１は、コーナーセルの色を、基準セルおよび多辺形セルとは異なる色に設定する。
【０１２１】
送信局２０４は、画像データ生成装置２０１により生成された画像データを、端末装置２０２に送信する。画像データは、端末装置２０２において解凍可能な形式で圧縮されていることが好ましく、また端末装置２０２におけるブラウザ機能などにより表示されるデータフォーマットで作成されている必要がある。送信局２０４は、例えばセルごとの画像データを表示座標位置に対応付けて送信することで、データ送信量を削減することが可能となる。端末装置２０２は、表示装置２０３上に２次元コードを表示する。図１のゲームシステム１において、ユーザは、表示装置２０３に表示された２次元コードを、ゲームカード４の代わりに使用して、撮像装置２により読み取らせることができる。これにより、ユーザは、ゲームカード４を有していなくても、画像データを端末装置２０２にダウンロードすることで、ゲームシステム１に参加することができる。
【０１２２】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【０１２３】
【図１】実施例にかかるゲームシステムの構成を示す図である。
【図２】ゲームカードの表面に印刷した２次元コードを示す図である。
【図３】画像解析装置の構成を示す図である。
【図４】２次元コードの認識処理の処理手順を示すフローチャートである。
【図５】基準セルの検出処理を示すフローチャートである。
【図６】コード部の検出処理を示すフローチャートである。
【図７】コードデータの検証処理を示すフローチャートである。
【図８】ゲームカードの表面に印刷した２次元コードの別の例を示す図である。
【図９】ゲームカードの表面に印刷した２次元コードのさらに別の例を示す図である。
【図１０】ゲームカードの表面に印刷した２次元コードのさらに別の例を示す図である。
【図１１】（ａ）〜（ｃ）は、コーナーセルであるか否かを判別する方法を説明するための説明図である。
【図１２】ゲームカードの表面に印刷した２次元コードのさらに別の例を示す図である。
【図１３】ゲーム用カードを配置するためのゲーム用マットを示す図である。
【図１４】グラデーション領域の外観を示す図である。
【図１５】画像解析装置の別の構成を示す図である。
【図１６】（ａ）〜（ｃ）は、グラデーション領域として特定されたドーナツ領域を示す図である。
【図１７】実施例における画像データの伝送システムを示す図である。
【符号の説明】
【０１２４】
１・・・ゲームシステム、２・・・撮像装置、４・・・ゲームカード、６・・・出力装置、７・・・ディスプレイ、１０・・・画像処理装置、２０・・・画像解析装置、３０・・・ゲーム装置、４０・・・フレーム画像取得部、４２・・・実オブジェクト抽出部、４４・・・状態決定部、５０・・・２値化処理部、５２・・・基準セル検出部、５４・・・コード部検出部、５６・・・検証処理部、６０・・・領域抽出部、６２・・・ＲＧＢ調整部、１００・・・基準セル、１０２・・・コードデータ部分、１０４・・・コーナーセル、１０６・・・方形セル、１０８・・・領域、１１０・・・コード部、２００・・・画像データ伝送システム、２０１・・・画像データ生成装置、２０２・・・端末装置、２０３・・・表示装置、２０４・・・送信局。
【図１】
2007094452.tif 000003
【図２】
2007094452.tif 000004
【図３】
2007094452.tif 000005
【図４】
2007094452.tif 000006
【図５】
2007094452.tif 000007
【図６】
2007094452.tif 000008
【図７】
2007094452.tif 000009
【図８】
2007094452.tif 000010
【図９】
2007094452.tif 000011
【図１０】
2007094452.tif 000012
【図１１】
2007094452.tif 000013
【図１２】
2007094452.tif 000014
【図１３】
2007094452.tif 000015
【図１５】
2007094452.tif 000016
【図１６】
2007094452.tif 000017
【図１７】
2007094452.tif 000018
【図１４】
2007094452.tif 000019