(57)【要約】【課題】安価なコストで製造及び読み取りが可能で偽造が困難かつコード生成及び認識を高速に行うことが可能な２次元コードを提供すること。【解決手段】所与のデータが２次元画像としてコード化された２次元コードであって、予め設定された２値データ列配置条件に従って、所与のデータに一義的に対応付けられた２値データ列に基づき２次元領域の点配置予約位置に配置された点と、前記各点と結線対象となる点を予め設定された結線条件に従って繋がれた線と、を画像構成要素に含み、前記点を結ぶ線に所与の幅を与えて２次元画像化された２次元コードである。【選択図】図４４
2008003791.tif 000002
【特許請求の範囲】
【請求項１】
所与のデータが２次元画像としてコード化された２次元コードであって、
予め設定された２値データ列配置条件に従って、所与のデータに一義的に対応付けられた２値データ列に基づき２次元領域の点配置予約位置に配置された点と、
前記各点と結線対象となる点を予め設定された結線条件に従って繋がれた線と、を画像構成要素に含み、
前記点を結ぶ線に所与の幅を与えて２次元画像化された２次元コード。
【請求項２】
請求項１において、
前記線は、
各点と他の点を結ぶ直線がそれ以外の点の点配置予約位置を含む点配置予約エリアを横切らないという必要条件を満たす他の点を各点の結線対象点とし、所定の条件を満たす結線対象点と各点との間を結ぶ線であることを特徴とする２次元コード。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記点は、
予め設定された２値データ列配置条件に従って、前記２値データ列に基づき、２次元領域に設定されたメインレイヤーに属する点配置予約位置に配置された点を含むことを特徴とする２次元コード。
【請求項４】
所与のデータが２次元画像としてコード化された２次元コードであって、
所与のデータに一義的に対応付けられた２値データ列に基づき、２次元領域に設定されたメインレイヤーに属する点配置予約位置に配置された点と、
２次元領域のメインレイヤー以外に属する点配置予約位置に配置されたダミーの点と、を画像構成要素に含み、
前記点に所与のパタンを与えて２次元画像化された２次元コード。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記点は、
２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件に従って配置されたダミーの点を含むことを特徴とする２次元コード。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記点は、
２次元領域のメインレイヤー以外に設定されたパリティレイヤーに属する点配置予約位置に、パリティ情報に基づき配置された点を含むことを特徴とする２次元コード。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記２値データ列は、所与のデータの標準フィボナッチ表現に基づき生成されたことを特徴とする２次元コード。
【請求項８】
２次元コードを認識するプログラムであって、
認識対象画像の基準点対応位置を検出し、基準点対応位置に基づき基準点に関連づけて設定されている注目点に対応する認識画像上の注目点対応位置を演算し、演算した注目点位置対応位置に基づき認識対象画像の画素情報を検出する注目点画素情報検出部と、
検出された画素情報に基づき２次元コードに対応付けられた対応データを演算する対応データ演算部と、
としてコンピュータを機能させることを特徴とするプログラム。
【請求項９】
請求項８において、請求項３乃至４に記載の２次元コードを認識する場合に、
前記注目点画素情報検出部は、
メインレイヤーに属する点配置予定位置を注目点として、注目点対応位置として認識画像上の点配置予定位置を演算し、演算した点配置予定位置に基づき認識対象画像の画素情報を検出し、
前記対応データ演算部は、
検出された画素情報に基づき２値データ列を求め、求めた２値データ列に一義的に対応付けられた所与のデータを対応データとして求めることを特徴とするプログラム。
【請求項１０】
請求項９において、請求項１乃至２に記載の２次元コードを認識する場合に、
前記対応データ演算部によって演算された２値データ列に基づき、予め設定された２値データ列配置条件に従って、２次元領域の点配置予約位置に点を配置し、予め設定された結線条件に従って前記各点と結線対象となる点を繋ぐ結線シミュレーション処理を行う結線シミュレーション処理手段と、
認識対象画像から検出したサンプリングした点の結線状態と結線シミュレーション処理によって得られたサンプリングした点の結線状態とを比較して、エラーの検出及びエラー補正の少なくとも一方を行う線エラー検出・補正処理部とを、さらに含むことを特徴とするプログラム。
【請求項１１】
請求項９乃至１０のいずれかにおいて、請求項７に記載の２次元コードを認識する場合に、
対応データ演算部によって演算された２値データ列に対して、標準フィボナッチ表現で表される２値データ列の条件に基づきエラーの検出及びエラー補正の少なくとも一方を行うフィボナッチエラー検出・補正処理部とを、さらに含むことを特徴とするプログラム。
【請求項１２】
請求項８乃至１０のいずれかにおいて、請求項５に記載の２次元コードを認識する場合に、
２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件にダミーの点を配置するシミュレーション処理を行うダミー点配置シミュレーション処理部と、
認識対象画像から検出したサンプリングしたダミー点の位置とダミー点シミュレーション処理によって得られたダミー点の位置とを比較して、エラーの検出及びエラー補正の少なくとも一方を行うダミー点エラー検出・補正処理部とを、さらに含むことを特徴とするプログラム。
【請求項１３】
請求項８乃至１２のいずれかにおいて、
２値データ列の値と認識対象画像の向きの関係に関する向き判定情報を記憶する手段と、
対応データ演算手段によって演算された２値データ列と前記向き判定情報に基づき認識対象画像の向きを判定する向き判定部を、さらに含むことを特徴とするプログラム。
【請求項１４】
請求項８乃至１３のいずれかにおいて、
入力された画像データから認識対象画像を抽出するための認識対象画像抽出部をさらに含み、
画素情報抽出部は、
認識対象画像抽出部が抽出した認識対象画像に基づき画素情報を抽出し、
前記認識対象画像抽出部は、
前記画像データから所定の画素条件を満たす画素情報をもち連続する画素からなる画素群の輪郭を抽出する輪郭抽出処理を行う輪郭抽出部と、
前記輪郭抽出部によって抽出された輪郭の軌跡が所定の軌跡条件を満たすか否かを判定する輪郭判定部と、
前記輪郭判定部によって所定の軌跡条件を満たさないと判定された場合に、前記輪郭抽出部によって抽出された輪郭を構成する各画素の画素情報を前記所定の画素条件を満たす画素情報以外の画素情報に変更する画素情報変更部と、
前記輪郭判定部によって所定の軌跡条件を満たすと判定された場合に、前記輪郭抽出部によって抽出された輪郭の内部領域に対応する画像データを前記認識対象画像として抽出する抽出部と、
とを含むことを特徴とするプログラム。
【請求項１５】
請求項８乃至１４のいずれかにおいて、
前記画像データに対して二値化処理を行う二値化処理部としてコンピュータを機能させ、
前記輪郭抽出部は、
前記二値化処理部により二値化処理が行われた画像データから前記輪郭を抽出することを特徴とするプログラム。
【請求項１６】
請求項１５において、
前記画像データに対して微分処理を行う微分処理部と、
前記微分処理部によって微分処理が行われた画像データに対して、着目画素とその周辺に配置された周囲画素の画素情報を平均化して着目画素の新たな画素情報とするぼかし処理を行うぼかし処理部としてコンピュータを機能させ、
前記二値化処理部は、
前記ぼかし処理部によってぼかし処理が行われた画像データに対して二値化処理を行うことを特徴とするプログラム。
【請求項１７】
請求項１６において、
認識対象画像抽出部が抽出した認識対象画像を構成する線の幅を検出する線幅検出部をさらに含み、
前記ぼかし処理部は、
検出された線の幅に基づきぼかし処理の回数を決定して、決定された回数だけぼかし処理を行うことを特徴とするプログラム。
【請求項１８】
請求項１５において、
認識対象画像抽出手段が抽出した認識対象画像を構成する線の幅を検出する線幅検出部をさらに含み、
前記二値化処理部は、
検出された線の幅に基づき二値化処理に用いる閾値の値を決定して、決定された閾値で二値化処理を行うことを特徴とするプログラム。
【請求項１９】
コンピュータ読み取り可能な情報記憶媒体であって、請求項８〜１８のいずれかのプログラムが記憶されていることを特徴とする情報記憶媒体。
【請求項２０】
２次元コードを認識する画像認識装置であって、
認識対象画像の基準点対応位置を検出し、基準点対応位置に基づき基準点に関連づけて設定されている注目点に対応する認識画像上の注目点対応位置を演算し、演算した注目点位置対応位置に基づき認識対象画像の画素情報を検出する注目点画素情報検出部と、
検出された画素情報に基づき２次元コードに対応付けられた対応データを演算する対応データ演算部と、
を含むことを特徴とする画像認識装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２次元コード、プログラム、情報記憶媒体及び画像認識装置に関する。
【背景技術】
【０００２】
従来より、所定のフォーマット情報に基づいて、データを示すモジュールを２次元に配置した２次元コードが知られている。この２次元コードでは、１次元コードに比して狭い領域で多くのデータを読み取らせることができる。このような従来の技術として、例えば特許第２９３８３３８号公報に開示されるものがある。
【特許文献１】特許第２９３８３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
かかる２次元コードをカードの識別等に用いる場合にはカードの表面または裏面に可視インクまたは赤外線等を吸収する不可視インクで印刷される。
【０００４】
ここで図４６に示すように、切り貼りすると比較的容易にレアカードを偽造できてしまうという問題点があった。
【０００５】
例えばカード側に高度な技術を導入することで、偽造対策を施すことも可能であるが、製造コストが高くなり利益率が低下する。
【０００６】
またカードに細かなパタンを印刷することで偽造対策を施すことも可能であるが、読み取りに高性能なカメラが必要となり、安価なカメラで一度に多量の読み取りを行うような使用は困難である。
【０００７】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、安価なコストで製造及び読み取りが可能で偽造が困難かつコード生成及び認識を高速に行うことが可能な２次元コードを提供することである。
【課題を解決するための手段】
【０００８】
（１）本発明は、
所与のデータが２次元画像としてコード化された２次元コードであって、
予め設定された２値データ列配置条件に従って、所与のデータに一義的に対応付けられた２値データ列に基づき２次元領域の点配置予約位置に配置された点と、
前記各点と結線対象となる点を予め設定された結線条件に従って繋がれた線と、を画像構成要素に含み、
前記点を結ぶ線に所与の幅を与えて２次元画像化された２次元コードである。
【０００９】
（２）本発明の２次元コードは、
前記線は、
各点と他の点を結ぶ直線がそれ以外の点の点配置予約位置を含む点配置予約エリアを横切らないという必要条件を満たす他の点を各点の結線対象点とし、所定の条件を満たす結線対象点と各点との間を結ぶ線であることを特徴とする。
【００１０】
（３）本発明の２次元コードは、
前記点は、
予め設定された２値データ列配置条件に従って、前記２値データ列に基づき、２次元領域に設定されたメインレイヤーに属する点配置予約位置に配置された点を含むことを特徴とする。
【００１１】
（４）本発明は、
所与のデータが２次元画像としてコード化された２次元コードであって、
所与のデータに一義的に対応付けられた２値データ列に基づき、２次元領域に設定されたメインレイヤーに属する点配置予約位置に配置された点と、
２次元領域のメインレイヤー以外に属する点配置予約位置に配置されたダミーの点と、を画像構成要素に含み、
前記点に所与のパタンを与えて２次元画像化された２次元コードである。
【００１２】
（５）本発明の２次元コードは、
前記点は、
２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件に従って配置されたダミーの点を含むことを特徴とする。
【００１３】
（６）本発明の２次元コードは、
前記点は、
２次元領域のメインレイヤー以外に設定されたパリティレイヤーに属する点配置予約位置に、パリティ情報に基づき配置された点を含むことを特徴とする。
【００１４】
（７）本発明の２次元コードは、
前記２値データ列は、所与のデータの標準フィボナッチ表現に基づき生成されたことを特徴とする。
【００１５】
（８）本発明は、
２次元コードを認識するプログラムであって、
認識対象画像の基準点対応位置を検出し、基準点対応位置に基づき基準点に関連づけて設定されている注目点に対応する認識画像上の注目点対応位置を演算し、演算した注目点位置対応位置に基づき認識対象画像の画素情報を検出する注目点画素情報検出部と、
検出された画素情報に基づき２次元コードに対応付けられた対応データを演算する対応データ演算部と、
としてコンピュータを機能させることを特徴とする。
【００１６】
また本発明は上記各部を含む画像認識装置に関係する。また本発明はコンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶した情報記憶媒体に関係する。
【００１７】
（９）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
前記注目点画素情報検出部は、
メインレイヤーに属する点配置予定位置を注目点として、注目点対応位置として認識画像上の点配置予定位置を演算し、演算した点配置予定位置に基づき認識対象画像の画素情報を検出し、
前記対応データ演算部は、
検出された画素情報に基づき２値データ列を求め、求めた２値データ列に一義的に対応付けられた所与のデータを対応データとして求めることを特徴とする。
【００１８】
（１０）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
前記対応データ演算部によって演算された２値データ列に基づき、予め設定された２値データ列配置条件に従って、２次元領域の点配置予約位置に点を配置し、予め設定された結線条件に従って前記各点と結線対象となる点を繋ぐ結線シミュレーション処理を行う結線シミュレーション処理手段と、
認識対象画像から検出したサンプリングした点の結線状態と結線シミュレーション処理によって得られたサンプリングした点の結線状態とを比較して、エラーの検出及びエラー補正の少なくとも一方を行う線エラー検出・補正処理部とを、さらに含むことを特徴とする。
【００１９】
（１１）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
対応データ演算部によって演算された２値データ列に対して、標準フィボナッチ表現で表される２値データ列の条件に基づきエラーの検出及びエラー補正の少なくとも一方を行うフィボナッチエラー検出・補正処理部とを、さらに含むことを特徴とする。
【００２０】
（１２）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件にダミーの点を配置するシミュレーション処理を行うダミー点配置シミュレーション処理部と、
認識対象画像から検出したサンプリングしたダミー点の位置とダミー点シミュレーション処理によって得られたダミー点の位置とを比較して、エラーの検出及びエラー補正の少なくとも一方を行うダミー点エラー検出・補正処理部とを、さらに含むことを特徴とする。
【００２１】
（１３）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
２値データ列の値と認識対象画像の向きの関係に関する向き判定情報を記憶する手段と、
対応データ演算手段によって演算された２値データ列と前記向き判定情報に基づき認識対象画像の向きを判定する向き判定部を、さらに含むことを特徴とする。
【００２２】
（１４）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
入力された画像データから認識対象画像を抽出するための認識対象画像抽出部をさらに含み、
画素情報抽出部は、
認識対象画像抽出部が抽出した認識対象画像に基づき画素情報を抽出し、
前記認識対象画像抽出部は、
前記画像データから所定の画素条件を満たす画素情報をもち連続する画素からなる画素群の輪郭を抽出する輪郭抽出処理を行う輪郭抽出部と、
前記輪郭抽出部によって抽出された輪郭の軌跡が所定の軌跡条件を満たすか否かを判定する輪郭判定部と、
前記輪郭判定部によって所定の軌跡条件を満たさないと判定された場合に、前記輪郭抽出部によって抽出された輪郭を構成する各画素の画素情報を前記所定の画素条件を満たす画素情報以外の画素情報に変更する画素情報変更部と、
前記輪郭判定部によって所定の軌跡条件を満たすと判定された場合に、前記輪郭抽出部によって抽出された輪郭の内部領域に対応する画像データを前記認識対象画像として抽出する抽出部と、
とを含むことを特徴とする。
【００２３】
（１５）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
前記画像データに対して二値化処理を行う二値化処理部としてコンピュータを機能させ、
前記輪郭抽出部は、
前記二値化処理部により二値化処理が行われた画像データから前記輪郭を抽出することを特徴とする。
【００２４】
（１６）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
前記画像データに対して微分処理を行う微分処理部と、
前記微分処理部によって微分処理が行われた画像データに対して、着目画素とその周辺に配置された周囲画素の画素情報を平均化して着目画素の新たな画素情報とするぼかし処理を行うぼかし処理部としてコンピュータを機能させ、
前記二値化処理部は、
前記ぼかし処理部によってぼかし処理が行われた画像データに対して二値化処理を行うことを特徴とする。
【００２５】
（１７）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
認識対象画像抽出部が抽出した認識対象画像を構成する線の幅を検出する線幅検出部をさらに含み、
前記ぼかし処理部は、
検出された線の幅に基づきぼかし処理の回数を決定して、決定された回数だけぼかし処理を行うことを特徴とするプログラム。
【００２６】
（１８）本発明に係るプログラム、情報記憶媒体及び画像認識装置は、
認識対象画像抽出手段が抽出した認識対象画像を構成する線の幅を検出する線幅検出部をさらに含み、
前記二値化処理部は、
検出された線の幅に基づき二値化処理に用いる閾値の値を決定して、決定された閾値で二値化処理を行うことを特徴とする。
【発明を実施するための最良の形態】
【００２７】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２８】
１．２次元コード
図１６（Ａ）〜（Ｃ）は、本実施の形態の２次元コードの一例である。
【００２９】
図１６（Ａ）は、ＩＤ＝１２３４５６７８９０１２３４５６に対応する２次元コードであり、図１６（Ｂ）は、ＩＤ＝１２３４５６７８９０１２３４５７に対応する２次元コードであり、図１６（Ｃ）は、ＩＤ＝１２３４５６７８９０１２３４５８に対応する２次元コードである。
【００３０】
図１７（Ａ）（Ｂ）は、本実施の形態の簡易版の２次元コードの一例である。図２（Ａ）はＩＤ＝１２３４５６７８に対応する２次元コードであり、図１７（Ｂ）はＩＤ＝１２３４５６７９に対応する２次元コードである。
【００３１】
図１６（Ａ）〜（Ｃ）や図２（Ａ）（Ｂ）に示すように、本実施の形態の２次元コードは、メロンの皮の模様のような切り貼りが困難なデザインの２次元画像である。図１６（Ａ）〜（Ｃ）では０〜２55、（３．６×１０16）の整数値を埋め込み可能であり、図１７（Ａ）（Ｂ）では０〜２25、（３．３×１０7）の整数値を埋め込み可能である。
【００３２】
本実施の形態の２次元コードは、所与のデータ（図１６（Ａ）〜（Ｃ）や図１７（Ａ）（Ｂ）のＩＤに相当）が２次元画像としてコード化された２次元コードであって、予め設定された２値データ列配置条件に従って、所与のデータに一義的に対応付けられた２値データ列に基づき２次元領域の点配置予約位置に配置された点と、前記各点と結線対象となる点を予め設定された結線条件に従って繋がれた線とを画像構成要素に含み、前記点を結ぶ線に所与の幅を与えて２次元画像化された２次元コードである。
【００３３】
構成要素となる点や線については「２．２次元コードの生成」で詳しく説明する。
【００３４】
図１６（Ａ）〜（Ｃ）や図１７（Ａ）（Ｂ）に示した２次元コードから構成要素となる点や線の情報を認識することで、対応するデータ（ＩＤ）をもとめることができる。２次元コードから構成要素となる点や線の情報を認識する手法については、「４−４．認識対象画像の認識処理及びエラー補正処理」で詳しく説明する。
【００３５】
また本実施の形態の２次元コードは、前記線が各点と他の点を結ぶ直線がそれ以外の点の点配置予約位置を含む点配置予約エリアを横切らないという必要条件を満たす他の点を各点の結線対象点とし、所定の条件を満たす結線対象点と各点との間を結ぶ線である構成でもよい。
【００３６】
所定の条件を満たす結線対象点については、「２−２．橋を架ける処理（結線処理）」で詳しく説明する。
【００３７】
また本実施の形態の２次元コードは、前記点が、予め設定された２値データ列配置条件に従って、前記２値データ列に基づき、２次元領域に設定されたメインレイヤーに属する点配置予約位置に配置された点を含む構成でもよい。予め設定された２値データ列配置条件及び２次元領域に設定されたメインレイヤーについては「２−３．２次元領域」「２−４．メインレイヤーへのデータの配置」で詳しく説明する。
【００３８】
また本実施の形態の２次元コードは、所与のデータが２次元画像としてコード化された２次元コードであって、所与のデータに一義的に対応付けられた２値データ列に基づき、２次元領域に設定されたメインレイヤーに属する点配置予約位置に配置された点と、２次元領域のメインレイヤー以外に属する点配置予約位置に配置されたダミーの点とを画像構成要素に含み、前記点に所与のパタンを与えて２次元画像化された２次元コードである。
【００３９】
また本実施の形態の２次元コードは、前記点が、２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件に従って配置されたダミーの点を含む構成でもよい。サブレイヤーへのダミーの点の配置手法については「２−６．サブレイヤーへのダミーデータの配置」で詳しく説明する。
【００４０】
また本実施の形態の２次元コードは、２次元領域のメインレイヤー以外に設定されたパリティレイヤーに属する点配置予約位置に、パリティ情報に基づき配置された点を含む構成でもよい。パリティレイヤーに属する点配置予約位置へのパリティ情報の配置手法については「２−５．パリティ情報の設定」で詳しく説明する。
【００４１】
また本実施の形態の２次元コードは、前記２値データ列が、所与のデータの標準フィボナッチ表現に基づき生成されたものでもよい。所与のデータから２値データ列を生成する手法については「２−２．標準フィボナッチ表現と２値データ列」で詳しく説明する。
【００４２】
本実施の形態の２次元コードは、整数値と絵柄が１対１に対応しており、一部違っていてもエラーとなるため、切り貼りが困難である。
【００４３】
なお実際に印刷される際には可視不可なインク（例えば赤外線にだけ反応するインク）で印刷され、肉眼では見えないように構成しても良いし、可視インクを用いて印刷しても良い。
【００４４】
ＱＲコード（商標）等の２次元コードは、基本的に２次元平面上に敷き詰められた多数のタイルが白黒２値ないしはカラー数色を持ち、その組み合わせで表現されていると考えることができる。よって、原理的には１次元（線状）に並べ替えることも可能であり、１次元の場合と情報量的には同じである。
【００４５】
一方、本実施の形態の２次元コードは、２次元領域をフルに活用しており、２次元の広がりの中に、結線情報を含む「意味のある情報」を埋め込んでいるため、２次元平面上でしか表現できない。すなわち１次元（線状）に並べ替えることはできず、２次元であることを利用してより多くの情報量を含んでいる。
【００４６】
２．２次元コードの生成
２−１．２次元コードの生成の処理の流れ
図１８は、２次元コードの生成の処理の流れを示すフローチャートである。
【００４７】
まず２次元コード化したい数値を入力する（ステップＳ１０）。以下、実質的な情報量が５５bit（パリティ等を除く）の場合をサンプルに解説する。
【００４８】
次に所与のルールに基づき、ビット単位の並べ替え等を行う（ステップＳ２０）。
【００４９】
次に複数のブロックに分割する（ステップＳ３０）。ここでは、１ブロックを５bitとして、５bit×１１ブロックにする場合を例にとり説明する。
【００５０】
次にブロック毎に暗号化する（ステップＳ４０）。暗号化の方式は任意である。
【００５１】
次に各暗号文ブロックを標準フィボナッチ表現に変換する（ステップＳ５０）。
【００５２】
具体的には、「２−２．標準フィボナッチ表現と２値データ列」の項で説明する。
【００５３】
次にメイン・レイヤーの定められた位置に、標準フィボナッチ表現に変換した後のデータを配置（２次元平面に展開）する（ステップＳ６０）。
【００５４】
具体的には、「２−４．メインレイヤーへのデータの配置」の項で説明する。
【００５５】
次にメイン・レイヤーに配置された「石」（点に相当）群の配置を見て、ルールに従いパリティ・レイヤーにも「石」（点に相当）群を配置する（ステップＳ７０）。
【００５６】
具体的には、「２−５．パリティ情報の設定」の項で説明する。
【００５７】
次にメイン・レイヤーとパリティ・レイヤーに配置された「石」群の配置を見て、ルールに従いサブ・レイヤーにも「石」群を配置する（ステップＳ８０）。
【００５８】
具体的には、「２−６．サブレイヤーへのダミーデータの配置」の項で説明する。
【００５９】
次に３枚のレイヤーに置かれた「石」の間に、所与のルールに従い「橋」を架ける（ステップＳ９０）。
【００６０】
具体的には、「２−７．橋を架ける処理」の項で説明する。
【００６１】
次に最外周に置かれた点から、周囲の「枠」まで「橋」を架ける（ステップＳ１００）。
【００６２】
２−２．標準フィボナッチ表現
所与のデータを標準フィボナッチ表現に変換して所与のデータに一義的に対応付けられた２値データ列を生成するようにしてもよい。
【００６３】
標準フィボナッチ表現とは、フィボナッチ表現のうち標準表現・極小表現を特に指すもので、１の数が一番少ないものを標準フィボナッチ表現という。標準フィボナッチ表現では、ビット列を１が隣り合わないように構成することができる。  なぜならすべての自然数はとなりあわないフィボナッチ数の和で表現できるのでこの性質を利用することにより、与えられた１０進数を連続してビットが立たないフィボナッチ表現に変換できる。
【００６４】
本実施の形態では与えられた１０進数（ＩＤ）を標準フィボナッチ表現に変換したものを２値データ列として用いる。
【００６５】
例えば１ブロック＝５bit（３２通り）を標準フィボナッチ表現（ここでは"1"と"0"の並びを２進数のbitに見立てて、"Fibonacci bit"＝略して"fit"と呼ぶことにする）で表すには、７fit（３４通り）必要であり、全ブロックに対してこの変換作業を行う。なお、５bitよりも７fitの方が２多いので、７fitで表現される組み合わせのうち、"0"（0000000）は使わずに、"33"（1010101）で代用することにした。こうすることで、最終的に生成される２次元コードに変化が出て面白くなる。
【００６６】
図１９は、１０進数・２進数・標準フィボナッチ表現の対応表である。１０進数の１、２、３、５、８、１３、２１、３４はフィボナッチ数である。この数の列は，2=1+1,3=1+2,5=2+3というように，引き続く２つの数の和がその次の数になるという規則にしたがっている。このような数をフィボナッチ数という。
【００６７】
２−３．２次元領域
本実施の形態では、所与のデータに基づき所与のデータに一義的に対応付けられた２値データ列を生成し、２次元領域に点が配置される可能性のある点配置予約位置を設定し、２値データ列に基づき予め設定された２値データ列配置条件に従って２次元領域の点配置予約位置に点を配置し、予め設定された結線条件に従って２次元領域に配置された点を線で繋ぐ結線処理を行い、前記線に基づき２次元コードの画像を生成する。ここで線に基づき２次元コードの画像を生成するとは、例えば、前記点を結ぶ線に幅を与えて２次元コードの画像を生成するような構成をいう。
【００６８】
ここで所与のデータとは、２次元コードに対応付けられた実データでもよいし、実データの暗号化後のデータでもよい。
【００６９】
また点配置予約位置は点やエリアを特定するための位置情報であり、所定の基準点に対する相対位置として設定してもよい。
【００７０】
また本実施の形態では、前記２値データ列に基づき行列を設定し、行列の各要素に前記点配置予約位置を対応付けて、対応付けられた点配置予約位置に行列の各要素の値に基づいて点を配置するようにしてもよい。
【００７１】
また本実施の形態では、２次元領域を格子状に並んだ複数のセルに分割し、格子点又は各セルの代表点を前記点配置予約位置としてもよい。
【００７２】
各セルの代表点とは、例えば各セルの中心点でもよい。
【００７３】
点配置予約位置は、２次元領域に極端な粗密ができないように分散して配置するようにしてもよい。
【００７４】
図２０、図２１は本実施の形態の２次元領域の一例について説明するための図である。
【００７５】
２００は本実施の形態の２次元領域であり、２次元領域に２次元コード画像が生成される。
【００７６】
本実施の形態では２次元領域２００を格子状に並んだ複数のセルＳ（ｘ、ｙ）（ｘ＝０，１，２、・・・１６、ｙ＝０，１，２、・・、２４）の行列に分割し、前記２値データ列（ビット列）の各ビットの値を所定の規則にしたがって各セルに対応付けて、各セルに対応するビットが第１の値（例えば１）である場合には当該セルに点を配置し、２値データ列に対応する点を２次元領域に配置する点配置処理を行う。
【００７７】
２次元領域２００にメインレイヤーＭＬを設定し、メインレイヤーＭＬに属する点配置予約位置（例えばセルやセルの代表点）に２値データ列に基づき点を配置するようにしてもよい。
【００７８】
メインレイヤーに属する点配置予約位置とは、２次元領域を格子状に複数のセルに分割した場合の格子点が前記点配置予約位置である場合には格子点がメインレイヤーに属する場合をいい、各セルの代表点（中心点）が前記点配置予約位置である場合にはセルまたはその代表点がメインレイヤーに属する場合をいう。
【００７９】
また所与の点配置予約位置がメインレイヤーＭＬに属する場合には、当該点配置予約位置の周囲の所定範囲内にある点配置予約位置ＭＬはメインレイヤーとならないようにメインレイヤーを設定するようにしてもよい。
【００８０】
当該点配置予約位置の周囲の所定範囲内とは、例えば当該点配置予約位置の前後左右斜めに隣り合う点配置予約位置等が含まれるように設定してもよい。
【００８１】
例えばメインレイヤーＭＬのセル（２，２）は前後左右斜めに隣り合うセルＳ（１，１）、Ｓ（１，２）、Ｓ（１，３）、Ｓ（２，１）、Ｓ（２，３）、Ｓ（３，１）、Ｓ（３，２）、Ｓ（３，３）についてはメインレイヤーＭＬとならないように設定されている。
【００８２】
２次元領域を碁盤の目のように区切り（格子状に区切り）各マス目をセルとし、奇数行かつ奇数列のセル又は偶数行かつ偶数列のセルをメインレイヤーＭＬとしてもよい。
【００８３】
またメインレイヤーのセルと辺または頂点を介して隣り合うセルはメインレイヤーとならないように設定された所定の規則に従ってメインレイヤーを設定するようにしてもよい。
【００８４】
例えば２値のデータを１１ブロックにわけて各ブロックが７fitであるとすると、ｙ＝２かつｘ＝２，４，６，８、１０、１２，１４のセルが１ブロックの各ｆｉｔに対応する。すなわち例えば１ブロック目の１fit目をセルＳ（２、２）に対応させ、１ブロック目の２fit目をセルＳ（４、２）に対応させ、１ブロック目の３fit目をセルＳ（６、２）に対応させ、１ブロック目の４fit目をセルＳ（８、２）に対応させ、１ブロック目の５fit目をセルＳ（１０，２）に対応させ、１ブロック目の６fit目をセルＳ（１２、２）に対応させ、１ブロック目の７fit目をセルＳ（１４，２）に対応さる。このようにｎブロック目のｍfit目をセルＳ（２ｍ、２ｎ）に対応させるようにしてもよい。
【００８５】
そして例えばｎブロック目のｍfitが第１の値（例えば１）である場合には、対応するセルＳ（２ｍ、２ｎ）に点をおき、第２の値（例えば０）である場合には、対応するセルＳ（２ｍ、２ｎ）に点をおかないようにして、前記２値データ列の各ビットの値を所定の規則にしたがってメインレイヤーのセルを対応付けるようにしてもよい。
【００８６】
また２次元領域２００のメインレイヤーＭＬ以外にパリティレイヤーＰＬを設定し、パリティレイヤーＰＬに属する点配置予約位置に、パリティ情報に基づき点を配置するようにしてもよい。
【００８７】
メインレイヤーＭＬの２次元領域に対して、所定の規則に従って、セルを最小構成単位とするパリティレイヤーを設定し、パリティレイヤーにパリティビットに対応する点を配置するようにしてもよい。例えば図２１に示すようにメインレイヤーＭＬの周囲（最外周部（斜線部）のセルＳｉ、ｊ（ｉ＋ｊ＝偶数となるセル）をパリティレイヤーとして、パリティビットをおくように構成してもよい。
【００８８】
また図２１に示すように２次元領域２００のメインレイヤーＭＬ以外にサブレイヤーＳＬを設定し、サブレイヤーＳＬに属する点配置予約位置に、予め設定されたダミー点配置条件に従ってダミーの点を配置するようにしてもよい。
【００８９】
２−４．メインレイヤーへのデータの配置
図２２はメインレイヤーへの２値データ列（ビット列）の各ビット情報の配置について説明するための図である。
【００９０】
規則に従ってメイン・レイヤーＭＬに標準フィボナッチ表現に変換した後のデータ（２値データ列）を配置（２次元平面に展開）する。ここでは図２０に示すように偶数行かつ偶数列のセルをメインレイヤーＭＬとし、２値のデータを横７fit×縦１１ブロックにして配置する場合を例にとり説明する。
【００９１】
fitで表現される"1"の位置に「石」（実体はデータの有無を表現する「点」だが、以下、説明のためにこのオブジェクトを「石」と呼ぶ）を置き、"0"の位置には「石」を置かない。
【００９２】
たとえば１ブロック目のfit列が’００１０１００’である場合には、１ブロック目の１fit目、２fit目、４fit目、６fit目、７fit目が’０’であるので対応するセルＳ（２、２）、セルＳ（４，２）、セルＳ（８，２）、セルＳ（１２，２）、セルＳ（１４，２）には石を配置しない。また１ブロック目の３fit目、５fit目が’１’であるので対応するセルＳ（６、２）、セルＳ（１０，２）には石を配置する。
【００９３】
本実施の形態では標準フィボナッチ表現に変換後のデータを配置するため、横方向のラインを見た場合、２値データ列において１が連続して現れることはない（図１９参照）。従ってメインレイヤーのセルに「石」を配置する場合連続して「石」が配置されることはない。しかも横方向のラインにはメインレイヤーのセル自体が１つ飛びに並んでいるので、「石」と「石」は少なくとも３つ以上のセルをあけた間隔で配置される事になる。
【００９４】
なお、ここでは、セルが格子状に規則正しく並んでいる場合を例にとり説明したが、本発明の適用はこれに限られるものではない。
【００９５】
２−５．パリティ情報の設定
２次元領域を複数のエリアに分割して、所与のエリア以外のエリアに配置された点に基づきパリティ情報を設定し、所与のエリアのパリティレイヤーに点を配置するようにしてもよい。
【００９６】
所与のエリア以外のエリアに配置された点は、ダミーの点を含む場合でもよいし、含まない場合でもよい。
【００９７】
メイン・レイヤーに配置された「石」群の配置を見て、ルールに従いパリティ・レイヤーにも「石」群を配置する。
【００９８】
２次元領域を複数のエリアに分割して、所与のエリアのパリティレイヤーには当該エリア以外のエリアに配置された点（ダミーの点を含む場合でもよいし、含まない場合でもよい）に基づきパリティ情報を設定し、パリティ情報に基づき所与のエリアのパリティレイヤーに点を配置するようにしてもよい。
【００９９】
図２３、図２４は、パリティビットの設定手法について説明するための図であり、図２５はメインレイヤーの点の配置が図２２の場合にパリティ情報に基づきパリティレイヤーに石を配置した様子を示す図である。
【０１００】
ここでは、図２０に示すようにメインレイヤーＭＬの周囲（最外周部（斜線部）のセルＳ（ｉ、ｊ）（ｉ＋ｊ＝偶数となるセル）をパリティレイヤーＰＬとして、パリティビットをおく場合を例にとり説明する。下記の規則に従ってパリティレイヤーに石を配置する。
【０１０１】
（１）メイン・レイヤーを大きく上下左右で４分割した時、自らが属していない領域に置かれた「石」を計数対象とする（領域の境界線上の「石」は数える）。
【０１０２】
例えば図２３に示すように縦方向の分割線２５０と、横方向の分割線２５２によって２次元領域を４つの領域Ｒ１、Ｒ２、Ｒ３、Ｒ４に分割する。
【０１０３】
（２）縦の列（左右両端）のパリティの「石」は、横方向（自分と同じＹ座標の行と、点対称のＹ座標にある行）の「石」の数の合計が偶数の時に置かれる。
【０１０４】
（３）横の列（上下両端）のパリティの「石」は、縦方向（自分と同じＸ座標の列と、点対称のＸ座標にある列）の「石」の数の合計が偶数の時に置かれる。
【０１０５】
例えば、左下（最左端）の２点２６０，２７０に着目し、パリティの「石」を置くべきか検討してみる。
【０１０６】
例えば図２３の縦の列（左右両端）のセル２６０におくパリティの石については、自分２６０と同じＹ座標の行２６２と、点対称のＹ座標にある行２６４の「石」の数の合計が偶数の時に置かれる。ここで自分と同じＹ座標の行２６２については、自分２６０の属する領域Ｒ４以外の部分を対象とする。行２６２と行２６４におかれている石の合計は４個なので、図２５に示すように２６０には石２６１が置かれている。
【０１０７】
また例えば図２４の縦の列（左右両端）のセル２７０におくパリティの石については、自分２７０と同じＹ座標の行２７２と、点対称のＹ座標にある行２７４の「石」の数の合計が偶数の時に置かれる。ここで自分と同じＹ座標の行２７２については、自分２７０の属する領域Ｒ４以外の部分を対象とする。行２７２と行２７４におかれている石の合計は５個なので図２５にしめすように２７０には石が置かれていない。
【０１０８】
この様にして、全ての最外周について、パリティの「石」を置くか否かを決めていく。
【０１０９】
本実施の形態では切り貼り偽造の対策として、パリティの「石」の周辺だけで（つまり、ローカルな情報だけで）パリティが決まってしまうのを避け、あえて離れたラインの情報の影響を受けるようにしている。ちなみに、もし自分の属する領域も計数対象に含めてしまうと、４領域のパリティが同じ（＝対称）になってしまう（情報的に冗長となる）ので、これもあえて非対称にしている。メイン・レイヤーに置かれた（または、置かれていない）１つの「石」は、計６つのパリティに影響を与え、これらがエラー補正時の有力なヒントにもなっている。
【０１１０】
２−６．サブレイヤーへのダミーデータの配置
メイン・レイヤーとパリティ・レイヤーに配置された「石」群の配置を見て、ルールに従いサブ・レイヤーにも「石」群を配置する。
【０１１１】
なお、サブ・レイヤーも、メイン・レイヤーやパリティ・レイヤーと同様に、「石」を配置しても良い場所が明確に定められている。
【０１１２】
サブ・レイヤーに石を配置するルールとしては、まずセルＳｘｙの「Ｘ座標＋Ｙ座標」が偶数となるセルは（少なくとも、メイン・レイヤーとパリティ・レイヤー用に予約されているセルを含むので）初めから除外しておく。
【０１１３】
メイン・レイヤーとパリティ・レイヤーに「石」が置かれていないセルに注目し、周囲のセル（壁に接している場合は５セル、壁に接していない場合は８セル）にも同様に「石」が置かれていないなら、そのサブ・レイヤーに「石」を置く。
【０１１４】
図２６はサブレイヤーへのダミーデータ（ダミーの石）の配置について説明するための図である。
【０１１５】
図２５においてはＲＡは予約エリアである。ここで予約エリアＲＡ以外をサブレイヤーとする。
【０１１６】
サブレイヤーのセルＳ（１、０）は、壁に接しているセルであるため、当該セルと辺又は頂点を共有しているセル（周囲のセルという）はＳ（０，０）、Ｓ（２，０）、Ｓ（０，１）、Ｓ（１，１）、Ｓ（２，１）の５つのセルがある。この５つのセルのメイン・レイヤーとパリティ・レイヤーに「石」がおかれていない場合には当該セルＳ（１、０）に石が置かれ、５つのセルの少なくとも１つに「石」がおかれている場合には当該セルＳ（１、０）に石が置かれない。図２５では周囲のセルＳ（０，０）、Ｓ（２，０）、Ｓ（０，１）、Ｓ（１，１）、Ｓ（２，１）にはいずれも石がおかれていないので、図２６の３１０に示すように当該セルＳ（１，０）に石が置かれる。
【０１１７】
図２５において、サブレイヤーのセルＳ（２、５）は、壁に接していないセルであるため、当該セルと辺又は頂点を共有しているセル（周囲のセルという）はＳ（１，４）、Ｓ（２，４）、Ｓ（３，４）、Ｓ（１，５）、Ｓ（３，５）、Ｓ（１，６）、Ｓ（２，６）、Ｓ（３，６）の８つのセルがある。この８つのセルのメイン・レイヤーとパリティ・レイヤーに「石」がおかれていない場合には当該セルＳ（２，５）に石が置かれ、８つのセルの少なくとも１つに「石」がおかれている場合には当該セルＳ（２，５）に石が置かれない。図２５では周囲のセルの１つのセルＳ（２，４）に石がおかれているので、図２６の３２０に示すように当該セルＳ（２，５）に石が置かれない。
【０１１８】
２−７．橋を架ける処理（結線処理）
本実施の形態では、２次元領域に配置された点と点の間を予め設定された結線条件に従って線で繋ぐ処理を行う。
【０１１９】
２次元領域に配置された所与の点と他の点を結ぶ直線が点配置予約エリアを横切らないという必要条件を満たす場合に、所与の点と他の点を線で繋ぐ結線処理を行うようにしてもよい。所与の点と他の点を繋ぐ線は直線でもよい。
【０１２０】
このようにすると点配置予約位置の情報を線でつぶさないように点と点を線で結ぶことができる。
【０１２１】
また各点と他の点を結ぶ直線がメインレイヤーを通らないという必要条件を満たす他の点を各点の結線対象点としてもよい。
【０１２２】
前記２値データ列の各ビットの値が対応付けられるセル又はメインレイヤーの点のおかれていないセルを線が横切らないように設定された所定の規則にしたがって点と点を線で結ぶようにしてもよい。
【０１２３】
ダミーの点とダミーの点を線で結ぶ線がメインレイヤー以外を通るように設定された所定の規則に従ってダミーの点とダミーの点を線で結ぶようにしてもよい。
【０１２４】
このように３枚のレイヤーに置かれた「石」の間に、ルールに従い「橋」を架ける。この「橋」こそが、本実施の形態の２次元コードの「目に見える部分（又は赤外線によって認識可能な部分）」＝「画像認識対象」となる。
【０１２５】
予め設定された結線条件として、例えば下記のような橋をかけるルール（結線条件、結線規則）を設定することができる。
【０１２６】
図２７〜図３０は橋をかけるルールについて説明するための図である。
【０１２７】
ルール１：メイン・レイヤーまたはパリティ・レイヤーに置かれた「石」に着目して、その周囲の「桂馬の位置」または「１マス空けて斜め４５度の位置」に「石」（レイヤー問わず）があれば、「橋」を架ける。
【０１２８】
例えば図２７において、３５０Ｐがメイン・レイヤーまたはパリティ・レイヤーに置かれた「石」とすると、その周囲の「桂馬の位置」のセル３６０、３６１，３６２，３６３、３６４、３６５，３６６、３６７または「１マス空けて斜め４５度の位置」のセル３７０、３７１、３７２，３７３に石があれば橋をかける（結線する）。
【０１２９】
図２８に示すように、石（点）３５０Ｐに対して「桂馬の位置」にあるセル３６０に石（点）３６０Ｐがおかれているので、石（点）３５０Ｐと石（点）３６０Ｐを線Ｌ１で繋ぐ（結線する）。
【０１３０】
また石（点）３５０Ｐに対して「１マス空けて斜め４５度の位置」の位置にあるセル３７１に石（点）３７１Ｐがおかれているので、石（点）３５０Ｐと石（点）３７１Ｐを線Ｌ２で繋ぐ（結線する）。
【０１３１】
ルール２：サブ・レイヤーに置かれた「石」に着目して、「１マス空けて上下左右の位置」に「石」（サブ・レイヤー上に限られるはず）があれば、「橋」を架ける。但し、その「橋」が、メイン・レイヤーまたはパリティ・レイヤー上の「石」の有無の情報を隠す可能性がある場合には、「橋」を架けない。
【０１３２】
例えば図２９において、３８０Ｐがサブレイヤーに置かれた「石」とすると、その周囲の「１マス空けて上下左右の位置」のセル（サブ・レイヤー上に限られるはず）３９０、３９１，３９２，３９３に石があれば橋をかける（結線する）。
【０１３３】
サブレイヤーに置かれた石（点）３８０Ｐに対して「１マス空けて上下左右の位置」の位置にあるセル３９０に石（点）３９０Ｐがおかれているので、石（点）３８０Ｐと石（点）３９０Ｐを線Ｌ３で繋ぐ（結線する）（図３０参照）。
【０１３４】
またサブレイヤーに置かれた石（点）３８０Ｐに対して「１マス空けて上下左右の位置」の位置にあるセル３９１に石（点）３９１Ｐがおかれている。しかし石（点）３８０Ｐと石（点）３９１Ｐを線で繋ぐ（結線する）と、メイン・レイヤーの石（点）４１０を覆い隠す可能性があるので橋をかけない（図３０参照）。
【０１３５】
ルール３：パリティ・レイヤーに置かれた「石」に着目して、（パリティ・レイヤーの長方形を構成する４辺の）上下端については「１マス空けて上下の位置」に「石」があれば、「橋」を架ける。同様に、左右端については「１マス空けて左右の位置」に「石」があれば、「橋」を架ける。
【０１３６】
このようにして２次元領域の点と点を線でつないだ様子を表しているのが図３１である。ここで線の太さはセルの幅より小さい幅で任意に設定可能であるが、最終的に本２次元コードを利用する画像認識システムに適応した幅に調整することが望ましい。
【０１３７】
図３１では、「橋」以外の要素である「石」も見えているが、実際には「橋」の線しか見えない。
【０１３８】
そして、最外周に置かれた点から、周囲の「枠」まで「橋」を架けることで図３２にしめすような２次元コードができあがる。
【０１３９】
本実施の形態の２次元コードは、線の極端に「密」や「粗」な部分がないという特徴がある。それでいて、重要な情報を持つ「石」（メインレイヤーの石）の位置は、「黒」であっても「白」であっても周囲に余裕があるので、低画質のカメラで撮像する場合でも（つまり、ボケたり、歪んだりしても）、最低限必要な情報は得られるような「石」「橋」の配置になっている。
【０１４０】
３．２次元コード生成システム
図３３に本実施形態の２次元コード生成システムの機能ブロック図の例を示す。なお本実施形態の２次元コード生成システムは図３３の構成要素（各部）の一部を省略した構成としてもよい。
【０１４１】
印刷部６５０は、生成された２次元コードの画像を可視又は不可視インクで印刷する処理を行う。
【０１４２】
操作部６６０は、操作データを入力するためのものであり、その機能は、レバー、方向指示キー、或いはボタンなどにより実現できる。
【０１４３】
記憶部６７０は、処理部６００や通信部６９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【０１４４】
情報記憶媒体６８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、メモリーカード、ハードディスク、或いはメモリー（ＲＯＭ）などにより実現できる。処理部６００は、情報記憶媒体６８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体６８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【０１４５】
ディスプレイ６９０は、本実施形態により生成された画像を表示出力するためのものである。
【０１４６】
音出力部６９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【０１４７】
携帯型情報記憶装置６９４は、プレイヤーの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置６９４としては、メモリカードや携帯型ゲームシステムなどがある。
【０１４８】
通信部６９６は外部（例えばホスト装置や他のゲームシステム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【０１４９】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部６９６を介して情報記憶媒体６８０（記憶部６７０）に配信してもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【０１５０】
処理部６００（プロセッサ）は、操作部６６０からの操作データやプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などを行う。この処理部６００は記憶部６７０をワーク領域として各種処理を行う。処理部６００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【０１５１】
処理部６００は、２次元コード生成部６１０、画像生成部６３０、音生成部６４０を含む。
【０１５２】
２次元コード生成部６１０は、２値データ列生成処理部６２０、点配置処理部６２２、結線処理部６２４、基準位置設定処理部６２６、向き情報設定処理部６２８を含む。
【０１５３】
２値データ列生成処理部６２０は、所与のデータに基づき所与のデータに一義的に対応付けられた２値データ列を生成し、点配置処理部６２２は、２次元領域に点が配置される可能性のある点配置予約位置を設定し、２値データ列に基づき予め設定された２値データ列配置条件に従って２次元領域の点配置予約位置に点を配置し、結線処理部６２４は、２次元領域に配置された各点について結線対象となる点を抽出し、各点と結線対象となる点を予め設定された結線条件に従って繋ぐ結線処理を行う。
【０１５４】
点配置処理部６２２は、前記２値データ列に基づき行列を設定し、行列の各要素に前記点配置予約位置を対応付けて、対応付けられた点配置予約位置に行列の各要素の値に基づいて点を配置するようにしてもよい。
【０１５５】
また点配置処理部６２２は、２次元領域を格子状に並んだ複数のセルに分割し、格子点又は各セルの代表点を前記点配置予約位置とするようにしてもよい。
【０１５６】
結線処理部６２４は、各点と他の点を結ぶ直線がそれ以外の点の点配置予約位置を含む点配置予約エリアを横切らないという必要条件を満たす他の点を各点の結線対象点とし、所定の条件を満たす結線対象点と各点とを線（直線）で繋ぐ結線処理を行うようにしてもよい。
【０１５７】
点配置処理部６２２は、２次元領域にメインレイヤーを設定し、メインレイヤーに属する点配置予約位置に２値データ列に基づき点を配置するようにしてもよい。
【０１５８】
点配置処理部６２２は、所与の点配置予約位置がメインレイヤーに属する場合には、当該点配置予約位置の周囲の所定範囲内にある点配置予約位置はメインレイヤーとならないようにメインレイヤーを設定するようにしてもよい。
【０１５９】
点配置処理部６２２は、２次元領域のメインレイヤー以外にサブレイヤーを設定し、サブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件に従ってダミーの点を配置するようにしてもよい。
【０１６０】
点配置処理部６２２は、２次元領域のメインレイヤー以外にパリティレイヤーを設定し、パリティレイヤーに属する点配置予約位置に、パリティ情報に基づき点を配置するようにしてもよい。
【０１６１】
点配置処理部６２２は、２次元領域を複数のエリアに分割して、所与のエリア以外のエリアに配置された点に基づきパリティ情報を設定し、所与のエリアのパリティレイヤーに点を配置するようにしてもよい。
【０１６２】
２値データ列生成処理部６２０は、所与のデータを標準フィボナッチ表現へ変換して所与のデータに一義的に対応付けられた２値データ列を生成する。
【０１６３】
基準位置設定処理部６２６は、２次元領域の基準位置を示す情報を設定する処理を行う。
【０１６４】
そして画像生成部６３０は、基準位置を示す情報が含まれた２次元画像を生成する。
【０１６５】
向き情報設定処理部６２８は、２次元領域の向きを示す情報を設定する処理を行う。
【０１６６】
そして画像生成部６３０は、向きを示す情報が含まれた２次元画像を生成する。
【０１６７】
画像生成部６３０は、前記点を結ぶ線に幅を与えて２次元画像を生成する２次元画像生成部として機能する。
【０１６８】
音生成部６４２は、処理部６００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【０１６９】
４．画像認識処理
４−１．画像の認識処理の流れ
図３４は、２次元コード画像（認識対象画像）を含む画像の認識処理の流れを示すフローチャートである。
【０１７０】
まず認識対象のカードを含む画像を撮像して画像データを取得する。（ステップＳ２１０）。
【０１７１】
図２（Ａ）は撮像部による認識対象物の撮像について説明するための図である。撮像部１５０はプレイヤーによってステージ１２に並べられた複数のカード１４（認識対象物）をステージ１２の下方から撮像する。ステージ１２は撮像部１５０がカード１４を撮像できるように透明なガラス板等からなる。
【０１７２】
図２（Ｂ）は本実施形態において認識対象物となるカードについて説明するための図である。カード１４の裏面（ステージ１２に接する面）には各カードを識別するための模様１６が印刷されている。また模様１６の周囲には所定幅の空白部分１８が設けられている。本実施形態では複数のカード１４を撮像した画像データから各カード１４に表された模様１６の外縁の形状（長方形）を判定し、模様１６の領域（空白部分１８で囲まれた領域）に対応する画像データを認識対象画像として抽出する処理を行うことになる。
【０１７３】
本実施の形態の２次元コードが印刷されたカードは、カード自体が隠蔽されない限り、周囲にカード以外の雑多な物体が存在しても、カードの位置と回転角を正確に検出できる。撮影においては背景として用いる「均一な色の紙や布など」は不要であり、何を載せられるか分からない業務用ゲーム機のテーブル面（普通に「手」は載るし、天井の照明による明暗差も悪影響を与える）に対して、可視または不可視インクで印刷されたカードを載せてテーブル下から撮像するアプリケーション等に好適である。
【０１７４】
次に撮像された画像データに対してフィルタリング処理を行う（ステップＳ２２０）。
【０１７５】
一般に外乱の影響や筐体設計上の制約などにより、撮影するテーブル面を均一に照らすことは難しい。従って照明（特に、撮像素子の特性により、実質的な感度が低くなる赤外光照明）の配置により発生するムラや、暗所における撮影もしくは安価なカメラを使用した場合に発生するノイズ等は避けられない。
【０１７６】
そこで、本実施の形態では画像認識処理に入る前に、必要な情報（本実施の形態の次元コードの「枠」と「橋」）のみを抜き出し、不要な情報（照明ムラやノイズ）を抑制するフィルターで前処理を行う。前処理は、具体的には２次微分処理、ぼかし処理、２値化処理の３ステップからなる。
【０１７７】
具体的には、「４−２．フィルタリング処理」の項で説明する。
【０１７８】
次にフィルタリング処理後画像データから認識対象画像を抽出する（ステップＳ２３０）。
【０１７９】
入力画像（前処理の結果、白黒２値になっているはず）の左上の点から右方向にスキャンし、背景色（黒色）と異なる物体（白色）が見つかった時点で、その点を基準に反時計回りにその物体のアウトラインをトレースし、トレース結果がカードの形状（４頂点を持つ長方形）か否かを判定する。
【０１８０】
（１）カードの形状ではない場合  →  今トレースしたアウトラインのみを消去する。→  そしてスキャンを続行する。
【０１８１】
（２）カードの形状である場合  →  カードの中味を読む。その結果、下記の２つに分岐。
【０１８２】
（３）本実施の形態の２次元コードなら、そのデコード結果を返し、中味ごと消去する。→  そしてスキャンを続行する。
【０１８３】
（４）本実施の形態の２次元コードではない場合は、今トレースしたアウトラインのみを消去する。→  そしてスキャンを続行する。
【０１８４】
以上の操作（１）から（４）を、全ての点のトレースが終了するまで（つまり、右下の点に辿り着くまで）繰り返す。
【０１８５】
図３５（Ａ）〜（Ｄ）は本実施の形態の認識対象画像抽出処理（本処理）の概念について説明するための図である（この図では、便宜上、白黒を反転している）。
【０１８６】
図３５（Ａ）に示すように入力画像データに太さ１の線ノイズ５１０がある場合には一瞬で（１回で）消去する。
【０１８７】
また図３５（Ｂ）に示すように入力画像データに太さ２以上の線幅の障害物５２０がある場合にはアウトラインが長方形（カード）か否かを判定し、長方形（カード）なら図３５（Ｄ）の処理を行うが、それ以外は明らかな障害物と判定し、図３５（Ｃ）の処理を行う。
【０１８８】
図３５（Ｃ）では、太さ２以上の線幅の線を皮のように1枚づつ剥がしていく処理を行う。
【０１８９】
図３５（Ｄ）では、認識対象となる画像かどうかの判定を行う。長方形の内部画像が本実施の２次元コードであれば（例えば認識処理をおこなってエラーがでない場合）、長方形の内部を一気に消去する。長方形の内部画像が本実施の２次元コードでなければ（例えば認識処理をおこなってエラーがでた場合）、一枚づつ皮をむいて長方形の内部画像が本実施の２次元コードか否か調べる。
【０１９０】
具体的には、「４−３．認識対象画像抽出処理（本処理）」の項で説明する。
【０１９１】
次に認識対象画像の認識処理及びエラー補正処理を行う（ステップＳ２４０）。
【０１９２】
具体的には、「４−４．認識対象画像の認識処理及びエラー補正処理」の項で説明する。
【０１９３】
次に認識対象画像の向き検出処理を行う（ステップＳ２５０）。
【０１９４】
具体的には、「４−５．認識対象画像の向き検出処理」の項で説明する。
【０１９５】
４−２．フィルタリング処理
図３６が撮影された画像である入力画像であるとして、本実施の形態のフィルタリング処理の一例について説明する。
【０１９６】
まず入力画像の画像データに対して２次微分処理を行い、図３７に示すような２次微分後の画像データを取得する。
【０１９７】
図３は、２次微分処理を行う際に用いられる３×３の２次微分オペレータの具体例を示す図である。本実施形態では、中央の着目画素に重み付け係数「８」が、８個の隣接画素のそれぞれに重み付け係数「−１」が設定されており、これらの各画素に重み付け係数を乗算した値を合計した後に所定の利得（例えば１）を乗算することにより、この着目画素に対応する２次微分データが得られる。なお、周囲に８個の隣接画素が存在しない外周部分の着目画素については、各着目画素と同じ階調データの隣接画素が存在するものとして計算を行うようにしてもよいし、外周部の各画素については２次微分処理を行わないようにしてもよい。
【０１９８】
次に２次微分処理後の画像データにぼかし処理を行い、図３８に示すようなぼかし処理後の画像データを取得する。
【０１９９】
２次微分処理が行われた２次微分データに対して、着目画素とその周囲の画素の２次微分データを用いたぼかし処理を行う。
【０２００】
図４は、ぼかし処理において用いられるぼかしフィルタの具体例を示す図である。本実施形態では、中央の着目画素とその周囲の８個の隣接画素のそれぞれに同じ重み付けがなされている。具体的には、着目画素と８個の隣接画素のそれぞれの２次微分データに係数値「１」を乗算した値を合計した後に所定の利得（例えば１／９）を乗算することにより、この着目画素の新たな２次微分データが得られる。すなわち、着目画素を含む９画素分の階調データを平均化するぼかし処理が行われる。なお、周囲に８個の隣接画素が存在しない外周部分の着目画素については、この着目画素と同じ階調データの隣接画素が存在するものとして計算が行われる。またこのぼかし処理は複数回適用してもよい。
【０２０１】
例えば本実施の形態では３回適用している。適用する回数によって、「橋」として抽出する線幅を調整している。（ここで、例えばぼかし処理をガウスぼかしの半径で調整し、ぼかしフィルターの適用は１回のみにする等の手法を用いても良い）。
【０２０２】
次にぼかし処理後の画像データに２値化処理を行い、図３９に示すような２値化処理後の画像データを取得する。図３９ではコントラストが弱い「人物の背後のブラインドの横線」も力強く抽出できている。
【０２０３】
二値化処理は、ぼかし処理後の２次微分データを所定の閾値ＳTHと比較することにより、二値データに変換する。２次微分データ＞ＳTHの場合には、二値データ＝１に設定される。また、２次微分データ≦ＳTHの場合には、二値データ＝０に設定される。
【０２０４】
尚、ぼかし処理後２次微分データについて、符号なし整数へ型変換（キャスト）を行って上記二値化処理を行ってもよい。符号なし整数への型変換を行うことにより、新たな２次微分データのマイナス値をプラスの最大値付近にすることができ、二値化処理後の画像のコントラストを高めることができる。
【０２０５】
図５は、上述した微分処理部１２１、ぼかし処理部１２２、二値化処理部１２３による処理の内容を説明するための図である。図５（Ａ）に示すように画素の色が白から黒、そして黒から白へと変化する２つの境界部分についての画像データに対して、図３に示す２次微分オペレータを用いて２次微分処理を行うと、図５（Ｂ）に示す形状に対応する２次微分データが得られる。この２次微分データに対して図４に示すぼかしフィルタを３回適用すると、図５（Ｃ）に示す形状に対応する新たな２次微分データが得られる。このぼかし処理された２次微分データを符号なし整数にキャストすると、図５（Ｄ）に示すように境界部分のマイナス値がプラスの最大値付近になった２次微分データが得られる。このキャストされた２次微分データを閾値ＳTH＝０として二値化処理を行うと、図５（Ｅ）に示すような境界部分が強調された二値データを得ることができる。二値化処理後の二値データと図５（Ａ）に示す当初の画像データとを比較すると画素の色が白黒反転しているのがわかる。
【０２０６】
２次微分処理とぼかし処理によって、特にエッジ（明暗の「境界」部分）の近辺では負値が出ているので、キャストで小さなマイナス値をプラスの最大値近辺にしてしまうことで、入力画像のエッジを抽出＆強調した画像が得られる（全体的にコントラストが高まるという効果もある）。あとは単純に閾値で切れば良い。結果として、２次元コード部分に関しては白黒反転したような出力画像が得られる。もちろん実際には、単に白黒反転しただけではなく、照明ムラによる悪影響が消え、２次元コード以外の雑多なものが写っていた領域も、認識対象画像抽出処理におけるゴミ・ノイズ等の排除処理に適した多くの小領域に分割される。
【０２０７】
なお、本フィルタリング処理は、２次元コードの「枠」や「橋」の太さ（撮像された画像における太さ、実際のカードにおける線幅と撮影距離に応じて決定される）に依存することが挙げられる。
【０２０８】
また本実施の形態の２次元コードには「枠」と「橋」の太さの線を強調する、という性質が求められているので、２次元コードの線の太さ（のピクセル数）に応じて、ぼかし処理のフィルターの強さ（例えばぼかし処理を行う回数）や２値化処理の閾値の調整が必要になるということである。一方、線の太さが変わらない場合には、これらの調整は不要である。例えば、ＶＧＡで４×８枚のカードを敷き詰め上手く認識できたなら、ＱＶＧＡで２×４枚のカードの認識も同等の精度で（面積が小さくなった分、より高速に！）行える、ということである。
【０２０９】
なお本実施の形態の２次元コードの周囲には若干の空白部（元のカード上の「枠」や「橋」が黒ならば、白色の縁）を設けることで処理を容易にすることが可能である。
【０２１０】
４−３．認識対象画像抽出処理
図６は二値化処理が行われた画像（二値化画像）の具体例を示す図である。図６において、各正方形領域が各画素に対応している。また、ハッチングが付された領域の画素が二値データ（画素情報）＝０の画素であり、それ以外の領域が二値データ（画素情報）＝１の画素である。なお、図６に示した二値化画像は、二値化処理および後述する輪郭抽出処理の説明を簡略化するために画素数を減らした場合であって、一例として１枚のカード１４がステージ１２上に並べられた場合が示されている。尚この例ではカード１４だけでなくカード以外の画像も混ざっている。以下では、二値データ＝１の画素を「白画素」、二値データ＝０の画素を「黒画素」と称して説明を行うものとする。
【０２１１】
輪郭抽出処理では、二値化画像を構成する各画素を所定の順番でスキャンして最初に到達する白画素を検出し、この白画素に隣接する他の白画素を最初の白画素に戻ってくるまで順番に辿る（トレースする）ことにより、隣接する白画素からなる画素群の輪郭を抽出する処理を行う。
【０２１２】
図７は、輪郭抽出処理の具体例を示す図である。図７に示した例では、スキャン開始点ＳＳが二値化画像の左上に設定されており、右方向に順番に各画素のスキャンが行われ、最終的に右下のスキャン終了点ＳＥで終了する。輪郭抽出部１２５は、このようなスキャン動作において、最初に検出した白画素をトレース開始点ＴＳ１として抽出し、図７の実線の矢印で示した順番に、再びこのトレース開始点ＴＳに到達するまで白画素を辿っていく処理を行う。
【０２１３】
以下、輪郭抽出処理の詳細について説明する。まず、輪郭抽出部１２５は、その時点における白画素の位置を中心にその周囲の８画素を調べ、次に辿るべき白画素の位置を決定する。
【０２１４】
図８は、上述した輪郭抽出処理において次の白画素を決定する手法を説明するための図である。図８において、「Ｃ」は現在の着目画素（白画素）を、「Ｐ」は現在の画素に至る直前の画素（白画素）の位置をそれぞれ示している。また、「１」〜「８」のそれぞれの数字は、次に辿っていく白画素の選択の優先順番を示している。例えば、直前の白画素が現在の着目画素の真上に位置する場合には、左上、左、左下、下、右下、右、右上、上の各画素を順番に見ていって、最初に現れる白画素が、次に辿るべき白画素として決定される。但し、直前の白画素がどの位置にあった場合であっても、「１」に対応する画素が、次に辿る白画素となることはないため、実際には最も多い場合であっても「２」〜「８」の７個の画素を調べればよい。
【０２１５】
このようにして、トレース開始点ＴＳ１から順番に白画素を辿っていく処理が一巡すると、輪郭抽出部１２５は、順番に辿った各白画素の座標値に基づいて輪郭を抽出したことになる。
【０２１６】
さらに後述する画素情報変更処理によって輪郭を構成する各白画素を黒画素に変更する処理が行われた後、または輪郭の内部領域にある各画素を黒画素に変更する処理が行われた後に、トレース開始点ＴＳ１の右隣の画素（次のスキャン対象画素）から輪郭抽出処理を再開させる。
【０２１７】
図９〜図１２は、輪郭抽出処理の流れについて説明するための図である。図９では、図７において抽出された輪郭の軌跡の形状が所定の形状でないと判定されたために、後述する画素情報変更部１２７によってＴＳ１から始まる輪郭を構成していた白画素が黒画素に変更されている。輪郭抽出部１２５は、トレース開始点ＴＳ１の右隣の画素からスキャン動作を再開し、次に検出した白画素をトレース開始点ＴＳ２として抽出し、実線の矢印で示した順番に白画素を辿っていく処理を行い、辿った各白画素の座標値に基づいて輪郭を抽出する処理を行う。
【０２１８】
図１０では、図９において抽出された輪郭の軌跡の形状が所定の形状でないと判定されたために、後述する画素情報変更部１２７によってＴＳ２から始まる輪郭を構成していた白画素が黒画素に変更されている。輪郭抽出部１２５は、トレース開始点ＴＳ２の右隣の画素からスキャン動作を再開し、次に検出した白画素をトレース開始点ＴＳ３として抽出し、実線の矢印で示した順番に白画素を辿っていく処理を行い、辿った各白画素の座標値に基づいて輪郭を抽出する処理を行う。
【０２１９】
図１１では、図１０において抽出された輪郭の軌跡の形状が所定の形状でないと判定されたために、後述する画素情報変更部１２７によってＴＳ３から始まる輪郭を構成していた白画素が黒画素に変更されている。輪郭出部１２５は、トレース開始点ＴＳ３の右隣の画素からスキャン動作を再開し、次に検出した白画素をトレース開始点ＴＳ４として抽出し、実線の矢印で示した順番に白画素を辿っていく処理を行い、辿った各白画素の座標値に基づいて輪郭を抽出する処理を行う。
【０２２０】
図１２では、図１１において抽出された輪郭の軌跡の形状が所定の形状であり、かつ内部が正しい２次元コードであると判定されたために、認識対象画像の抽出後、後述する画素情報変更部１２７によって輪郭の内部領域にある各画素が黒画素に変更されている。輪郭抽出部１２５は、トレース開始点ＴＳ４の右隣の画素からスキャン動作を再開し、スキャン終了点ＳＥまでスキャンして終了する。
【０２２１】
輪郭判定部１２６は、輪郭抽出部１２５によって抽出された輪郭の軌跡の形状が所定の形状であるか否かを判定する処理を行う。本実施形態では、認識対象画像としてカード１２に印刷された模様１６を抽出するために、前記輪郭の軌跡の形状が長方形であるか否かを判定する。ここで長方形であるか否かの判断は、前記輪郭を構成する画素列に含まれる長方形の頂点を検出することにより行う。
【０２２２】
以下、形状を判定する処理の詳細について説明する。輪郭判定処理では、抽出された輪郭に沿って所定の長さＬの部分画素列を移動させながら、この部分画素列の頭部（先頭部分）と尾部（末尾部分）のそれぞれに対応するように設定された２つのベクトルの内積値ＩＰの計算を行う。
【０２２３】
図１３は、輪郭に沿って移動する部分画素列の具体例を示す図である。例えば長さＬ＝１０とすると、輪郭に沿った１０個の画素からなる部分画素列が生成される。また、この部分画素列の頭部と尾部のそれぞれには、所定の長さＭの２つのベクトルＡ、Ｂ（頭部のベクトルＡをＶＡ、尾部のベクトルＢをＶＢとする）が設定されている。例えば長さＭ＝３とすると、ＶＡは、部分画素列の先頭の画素を終点とし、３個目の画素を始点とする向きを有する。また、ＶＢは、部分画素列の最後尾の画素を始点とし、後ろから３個目の画素を終点とする向きを有する。
【０２２４】
ところで、ＶＡとＶＢのそれぞれは以下のように表すことができる。
ＶＡ＝（ＶＡのＸ成分の差，ＶＡのＹ成分の差）
＝（ｖａｘ，ｖａｙ）
ＶＢ＝（ＶＢのＸ成分の差，ＶＢのＹ成分の差）
＝（ｖｂｘ，ｖｂｙ）
したがって、ＶＡとＶＢの内積値ＩＰは、
ＩＰ＝ＶＡ・ＶＢ＝ｖａｘ×ｖｂｘ＋ｖａｙ×ｖｂｙ
となる。輪郭判定処理では、この内積値ＩＰと所定の閾値ＴIPとを比較し、｜ＩＰ｜≦ＴIPの場合には、ＶＡとＶＢとのなす角がほぼ直角であって、長方形の頂点が部分画素列に含まれていると判断し、｜ＩＰ｜＞ＴIPの場合には長方形の頂点が部分画素列に含まれていないと判断する。
【０２２５】
なお、正確には、ＶＡとＶＢとのなす角θはarccos（ＩＰ／（｜ＶＡ｜×｜ＶＢ｜））の式で計算されるため、ベクトルの長さを計算したり、除算等を行う必要があるが、ＶＡ、ＶＢについて考えた場合にはベクトルの長さは２から２√２までの範囲に含まれることがわかっているので、本実施形態ではＴIPの値を２とすることにより、これらの面倒な計算を省略している。
【０２２６】
このようにして、部分画素列を輪郭に沿って移動させることにより長方形の頂点を検出し、部分画素列を輪郭に沿って一周移動する間に４つの長方形の頂点を検出した場合に輪郭の軌跡の形状が長方形であると判定し、それ以外の場合には輪郭の軌跡の形状が長方形でないと判定する。
【０２２７】
認識対象画像抽出処理では、輪郭判定処理によって輪郭の軌跡の形状が長方形であると判定された場合に、当該輪郭の内部領域にある各画素に対応する二値データを認識対象画像として抽出する処理を行う。
【０２２８】
輪郭判定処理によって輪郭の軌跡の形状が長方形でないと判定された場合に、当該輪郭を構成する各白画素を黒画素に変更する画素情報変更処理を行う。ここで黒画素への変更は、輪郭抽出処理が順番に辿った各白画素に対応する二値データを０に設定することにより行う。
【０２２９】
また輪郭の内部領域にある各画素の二値データの抽出が行われた場合に、当該輪郭の内部領域にある各画素を黒画素に変更する画素情報変更処理を行う。例えば、図１４に示すように輪郭を構成する各白座標のＸ座標の最小値Ｘｍｉｎと最大値Ｘｍａｘと、Ｙ座標の最小値Ｙｍｉｎと最大値Ｙｍａｘを抽出し、ＹｍｉｎからＹｍａｘまでの各Ｙ座標について、対応するＸｍｉｎからＸｍａｘまでの各画素に対応する二値データを０に設定する。
【０２３０】
図１５は本実施形態の処理の一例について説明するためのフローチャート図である。ここでは、二値化処理部１２３によって二値化処理が行われた後の処理について説明する。
【０２３１】
二値化処理部１２３によって得られた二値化画像を構成する各画素のスキャンを開始し、全画素をスキャンしたか否かを判定する（ステップＳ１１０）。全画素をスキャンしていなければ次の画素をスキャンする（ステップＳ１２０）。スキャンした画素の画素情報が所定の画素条件を満たすか（白画素であるか）否か判断し（ステップＳ１３０）、満たさなければ（黒画素であれば）ステップＳ１１０に戻る。
【０２３２】
スキャンした画素の画素情報が所定の画素条件を満たせば（白画素であれば）、当該画素をトレース開始点として抽出し、トレース開始点から再びトレース開始点に到達するまで順番に所定の画素条件を満たす画素情報をもつ画素（白画素）をトレースする（ステップＳ１４０）。次にトレースした各画素（各白画素）の座標値に基づき輪郭を抽出する（ステップＳ１５０）。次に抽出した輪郭の頂点を検出し、検出した頂点に基づき輪郭の軌跡の形状が所定の形状（長方形）であるか否か判定する。（ステップＳ１６０）、輪郭の軌跡の形状が所定の形状（長方形）でなければ、輪郭を構成する画素（トレースした白画素）の画素情報を所定の画素条件を満たす画素情報以外の画素情報（二値データ＝０）に変更する処理を行い（ステップＳ１７０）、ステップＳ１１０に戻る。
【０２３３】
抽出した輪郭の軌跡の形状が所定の形状（長方形）であれば、輪郭の内部領域にある各画素に対応する二値データを認識対象画像として抽出する処理を行う（ステップＳ１８０）。
【０２３４】
次に抽出した認識対象画像が、本実施の形態の２次元コードであればステップＳ１９０の処理を行う（ステップＳ１８２）。本実施の形態の２次元コードと判定するための判定条件を予め設定しておき、条件を満たせば本実施の形態の２次元コードであると判定してもよい。
【０２３５】
本実施の形態の２次元コードでなければ（ステップＳ１８２）、エラー補正を試みて（ステップＳ１８４）再び本実施の形態の２次元コードか否か判断し、本実施の形態の２次元コードであればステップＳ１９０の処理を行う（ステップＳ１８６）。本実施の形態の２次元コードでなければステップＳ１７０の処理を行う。
【０２３６】
本実施の形態の２次元コードか否かの判断やエラー補正は、例えば「４−４．認識対象画像の認識処理及びエラー補正処理」で説明するような手法を用いることができる。
【０２３７】
そして認識対象画像が本実施の形態の２次元コードであれば、抽出した認識対象画像からカードの識別番号、位置等を取得する処理を行う（ステップＳ１９０）。次に輪郭の内部領域にある各画素の画素情報を所定の画素条件を満たす画素情報以外の画素情報（二値データ＝０）に変更する処理を行い（ステップＳ２００）、ステップＳ１１０に戻る。そして全ての画素をスキャンした場合に処理を終了する。
【０２３８】
４−４．認識対象画像の認識処理及びエラー補正処理
本実施の形態では、認識対象画像の基準点対応位置を検出し、基準点対応位置に基づき基準点に関連づけて設定されている注目点（例えば点配置予定位置）に対応する認識画像上の注目点対応位置を演算し、演算した注目点位置対応位置に基づき認識対象画像の画素情報を検出し、抽出された画素情報に基づき２次元コードに対応付けられた対応データを演算する。
【０２３９】
図４０〜図４３は注目点画素情報検出処理について説明するための図である。Ｋ１’、Ｋ２’、Ｋ３’、Ｋ４’は認識対象画像４００の基準点対応位置である。基準点は例えば２次元領域の四隅の頂点（図４１のＫ１、Ｋ２、Ｋ３、Ｋ４）に設定するようにしてもよい。なお２次元領域が長方形（正方形も含む）の場合を長方形を構成する３頂点または２頂点（対角線上の頂点）で形状を特定することができるため基準点を３頂点または２頂点としてもよい。
【０２４０】
認識対象画像の基準点対応位置は枠線の外周のエッジ（頂点）Ｅ１、Ｅ２、Ｅ３、Ｅ４と枠の幅により決定するようにしてもよい。また枠線４１０の内周のエッジを検出し、それを基準点対応位置と決定してもよい。
【０２４１】
ここで注目点をメインレイヤーの点配置予定位置（図４１の２５０）とすることにより、ここに点が配置されているかいなかの情報を認識対象画像から取得することができる。
【０２４２】
図４１に示すように２次元領域におけるメインレイヤーの点配置予定位置２５０は、基準位置Ｋ１、Ｋ２、Ｋ３、Ｋ４に対しての相対位置が決まっている。
【０２４３】
ここで図４１のメインレイヤーの点配置予定位置であるセルＳ（２、２）の中心点をＰ、認識対象画像上の対応位置をＰ’とする。２次元画像上での点Ｐの基準点Ｋ１からの相対位置を（ｘ、ｙ）とし（図４１参照）、認識対象画像上での点Ｐ’の基準点対応位置Ｋ１’からの相対位置を（ｘ’、ｙ’）とすると、下記の式が成り立つ。
ｘ：ｘ’＝Ｌ：Ｌ’
ｙ：ｙ’＝Ｌ：Ｌ’
【０２４４】
従って２次元領域における基準位置間の距離Ｌと、認識対象画像における対応する基準点対応位置間の距離Ｌ’が求まれば、認識対象画像のメインレイヤーの点配置予定位置も求めることができる。
【０２４５】
例えば図４０ではメインレイヤーの点配置予定位置であるセルＳ（２、２）の中心点をＰの認識対象画像上の対応位置をＰ’の画素は白画素であるためセルＳ（２、２）には点が配置されていないことを検出することができる。
【０２４６】
同様の処理をメインレイヤーを構成するすべて点配置予定位置にたいして行うことにより、メインレイヤーに配置された２値データ列を求めることができる。
【０２４７】
そして求めた２値データ列を標準フィボナッチ表現とするデータを求めることで、２次元コードに対応付けられた対応データを求めることができる。
【０２４８】
例えば図１９に示すような標準フィボナッチ表現と１０進数の対応テーブルを保持しておき、対応テーブルを参照して標準フィボナッチ表現に対応する１０進数の対応データを求めるようにしてもよい。
【０２４９】
また本実施の形態では、認識対象画像から求めた２値データ列に基づき、予め設定された２値データ列配置条件に従って、２次元領域の点配置予約位置に点を配置し、予め設定された結線条件に従って前記各点と結線対象となる点を繋ぐ結線シミュレーション処理を行い、認識対象画像から検出したサンプリングした点の結線状態と結線シミュレーション処理によって得られたサンプリングした点の結線状態とを比較して、エラーの検出及びエラー補正の少なくとも一方を行うようにしてもよい。
【０２５０】
すなわち、画像認識システムにも２次元コード生成を行う際の点の配置及び結線のアルゴリズムを持たせて、認識対象画像から得られた２値データ列に基づいて２次元領域に点を配置し、結線条件にしたがって結線する結線シミュレーション処理を行う。
【０２５１】
図４２は結線シミュレーション処理によって、認識対象画像から得られた２値データ列に基づいて２次元領域に点を配置した状態を表す図である。図４３は、認識対象画像である。ここでメインレイヤーのセルＳ（６，４）に配置された点とサブレイヤーのセルＳ（８，３）に配置された点に着目すると、この両点は、図２７で説明した結線条件を満たすので線で繋がれる。そこで、線上の２点ＳＰ１、ＳＰ２をサンプリングして、ＳＰ１、ＳＰ２に対応する認識画像上の点ＳＰ１’ＳＰ２’の位置を求める。位置の求め方は図４０、図４１で説明した手法と同様である。そして認識対象画像から求めた位置に対応する画素情報を検出して、検出した画素情報が線の存在を示しているかいなか（例えば黒画素であるかいなか）を判定することにより結線状態の比較を行うようにしてもよい。
【０２５２】
エラーがでる原因としては、偽造カードである場合と、ノイズ等による画像認識ミスによる場合が考えられる。
【０２５３】
比較結果によりエラーが検出された場合には、エラーとして認識を中止してもよいし、エラー補正を行うようにしてもよい。
【０２５４】
例えばエラーの原因が偽造カードである場合には、エラー補正する必要がないので、エラーとして認識を中止することで偽造カードの使用ができないようにすることもできる。
【０２５５】
またエラーの原因がノイズ等による画像認識ミスである場合には、エラーがでなくなるまで石の位置を変更して結線シミュレーション処理を行うことで、エラー補正を行うことができる。
【０２５６】
また本実施の形態では、認識対象画像から求めた２値データ列に対して、標準フィボナッチ表現で表される２値データ列の条件に基づきエラーの検出及びエラー補正の少なくとも一方を行うようにしてもよい。
【０２５７】
例えば標準フィボナッチ表現は、データ列において１が隣り合うことがない。従って、メインレイヤーの点配置予約位置に連続して点が配置されている場合にはエラーであると判定することができる。
【０２５８】
この場合にも、エラーとして認識を中止してもよいし、エラー補正を行うようにしてもよい。
【０２５９】
例えばエラーの原因が偽造カードである場合には、エラー補正する必要がないので、エラーとして認識を中止することで偽造カードの使用ができないようにすることもできる。
【０２６０】
またエラーの原因がノイズ等による画像認識ミスである場合には、標準フィボナッチ表現で表される２値データ列の条件に基づき石の位置を変更して、エラー補正を行うことができる。
【０２６１】
また２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件にダミーの点を配置するシミュレーション処理を行い、認識対象画像から検出したサンプリングしたダミー点の位置とダミー点シミュレーション処理によって得られたダミー点の位置とを比較して、エラーの検出及びエラー補正の少なくとも一方を行うようにしてもよい。
【０２６２】
サブレイヤーへのダミー点の配置は、メインレイヤーやパリティレイヤーの点の配置に関係した配置条件に従って配置される場合でもよいし、メインレイヤーやパリティレイヤーの点の配置とは無関係な規則や条件に従って配置される場合でもよい。
【０２６３】
前者の場合には認識対象画像から求めた２値データ列に基づいて、メインレイヤーやパリティレイヤーへの点の配置のシミュレーションを行ってから、サブレイヤーへのダミーの点の配置シミュレーションを行うようにしてもよい。
【０２６４】
そしてダミー点シミュレーション処理によって得られたダミー点に対応する認識対象画像上の位置を求めて、認識対象画像から求めた位置に対応する画素情報を検出して、検出した画素情報がダミー点の存在を示しているかいなか（例えば黒画素であるかいなか）を判定することによりエラー検出やエラー補正を行うようにしてもよい。
【０２６５】
図４４は、本実施の形態の認識対象画像の認識処理及びエラー補正処理の流れについて説明するためのフローチャートである。
【０２６６】
まず認識対象画像の基準点対応位置を検出する（ステップＳ３１０）。
【０２６７】
次に、基準点対応位置に基づき基準点に関連づけて設定されているメインレイヤーに属する点配置予定位置に対応する認識画像上の点配置予定位置を演算する（ステップＳ３２０）。
【０２６８】
次に、演算した点配置予定位置に基づき認識対象画像の画素情報を検出する（ステップＳ３３０）。
【０２６９】
次に、検出された画素情報に基づき２値データ列を求める（ステップＳ３４０）。
【０２７０】
次に求めた２値データ列について標準フィボナッチ表現で表される２値データ列の条件に基づきエラーの検出及びエラー補正の少なくとも一方を行う（ステップＳ３５０）。
【０２７１】
次に、２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件にダミーの点を配置するシミュレーション処理を行う（ステップＳ３６０）。
【０２７２】
次に認識対象画像から検出したサンプリングしたダミー点の位置とダミー点シミュレーション処理によって得られたダミー点の位置とを比較して、エラーの検出及びエラー補正の少なくとも一方を行う（ステップＳ３７０）。
【０２７３】
次に求めた２値データ列に基づき、予め設定された２値データ列配置条件に従って、２次元領域の点配置予約位置に点を配置し、予め設定された結線条件に従って前記各点と結線対象となる点を繋ぐ結線シミュレーション処理を行う（ステップＳ３８０）。
【０２７４】
次に認識対象画像から検出したサンプリングした点の結線状態と結線シミュレーション処理によって得られたサンプリングした点の結線状態とを比較して、エラーの検出及びエラー補正の少なくとも一方を行う（ステップＳ３９０）。
【０２７５】
なお上記ステップのすべて行う必要はなく、後述認識レベルに応じて適宜省略することができる。
【０２７６】
４−５．２次元コードの認識レベル
本実施の形態の２次元コードは、その認識の深さにおいてスケーラブルである。表面的な部分のみを見ることにより低性能だが高速に実現することができ、深い部分まで見れば高性能だが低速に実現することができる。入力画像の画質も、前者ならば低画質でも動作するが、後者になるほど高画質を要求されるようになる。どのレベルの実装を利用するかは、用途やコストなどを考慮した上で総合的に判断するようにしてもよい。
【０２７７】
なお、以下に述べる「セキュリティレベル」とは「切り貼り偽造」に対する強さを示している。
【０２７８】
レベル１：メイン・レイヤーの「石」の情報のみを用いる。
【０２７９】
認識対象となる画像の条件（つまり、画質）が劣悪な場合でも、何とかＩＤは取得できる。しかし、エラーチェックは最低限のものしか実行されない（具体的には「標準フィボナッチ表現か否か」程度）。また、セキュリティレベルも下がるので、実際には限定した条件下で利用するのが望ましい。
【０２８０】
レベル２：レベル１に加え、パリティ・レイヤーの「石」の情報も用いる。
【０２８１】
メイン・レイヤー上にやや大きなノイズが乗っていた場合でも検出できる可能性が高くなる。ただし、セキュリティレベルは、レベル１と同程度。
【０２８２】
レベル３：レベル２に加え、サブ・レイヤーの「石」の情報も用いる。
【０２８３】
ＩＤ検出については、エラー検出も含め、問題ないレベルになる。セキュリティレベルは、中程度。
【０２８４】
レベル４：レベル３に加え、各「橋」上から数点をサンプリングし、「石」間の結線情報も取得・検証する。
【０２８５】
セキュリティレベル的には、実用上、まず問題になることはない。処理速度とＩＤ検出・セキュリティレベルのバランスが良い。
【０２８６】
レベル５：「橋」の形状全体を見る。
【０２８７】
最高のセキュリティレベル。ただし、２次元画像として細部まで検証（標準パタンと比較）することになるため、処理が重くなる。
【０２８８】
具体的には、「橋のエッジ」を照合する方法（境界部分のみを見る）と、「橋を作るピクセルの有無」を照合する方法（カード全体を見る）に大別できる。いずれも、橋の作る線の連続性も全て調べることになるので、事実上、切り貼り偽造は不可能である。
【０２８９】
図４５は、２次元コードの認識レベルの比較表である。
【０２９０】
４−６．ピクセル単位のエラー訂正（前処理）
もともと「橋」自体に太さがあるので、まずこの時点で「橋」の上に乗っているピクセル単位の小さなノイズは、除去できる（もちろん、「橋」以外の部分のノイズも薄めることができる）。
【０２９１】
具体的には、周囲のピクセルを参照すれば良い（例：「ぼかしフィルター」を掛ける等）。
【０２９２】
なお、低画素数のカメラや低画質のレンズであれば、光学的に「ぼかしフィルター」が掛かった状態になるので、光速でノイズを除去できる。
【０２９３】
４−７．２次元コードにおけるエラー訂正について（本処理）
例えば、標準フィボナッチ表現の性質により、横方向についてはメイン・レイヤーの「石」の間には必ず１以上の（３マス以上の）隙間があるはずなので、もし隙間が無かった場合には、何らかの問題が発生していることを検出できる（許容量以上のパースが掛かっている＝つまりカードの一部が浮いて傾いているか、大きなノイズか、偽造カードか…）。
【０２９４】
この場合、１以上の（３マス以上の）隙間を確保できる位置までメイン・レイヤーの「石」を仮に（内部処理的に）動かしたり、または「石」を排除することで、その際の周囲のサブ・レイヤーの「石」やパリティ・レイヤーの「石」（もちろん、それらとの間に架けられた「橋」の情報も用いる）との合致度（現実の入力画像とシミュレーションとの合致度）を調べ、最も誤差が少ない配置をエラー補正後の認識結果として返すことになる。通常の場合、うまく補正できれば、誤差はゼロまたは限りなくゼロに近付く。逆に、多少の補正では誤差が閾値以下にならない場合は、撮像システムのトラブルか切り貼りによる偽造カードなどの可能性が高い。
【０２９５】
もちろん、この補正方法は、上の例のような標準フィボナッチ表現の性質により検出されたエラーだけではなく、メイン・レイヤー、サブ・レイヤー、パリティ・レイヤーのすべての「石」と「橋」（または、「石」や「橋」が置かれていない部分）の白黒反転（ノイズ等により白黒反転してしまった場合）についても有効である。
【０２９６】
ちなみに、ここでのポイントは「本２次元コードのデコードを行う実装上にも、エンコードのためのルーチンを内蔵しておき、必要に応じてシミュレーションする（そして、誤差最少を目指す）」ということである。言い換えれば、この２次元コードを構成する「橋」の集合体の形状全体を用いた、総力戦によるエラー訂正とも言える。１つの「石」の有無が、周囲およびパリティに大きく影響を与えるため、局部に依存しない（連鎖反応的に周囲に影響を与える）。
【０２９７】
４−８．姉妹ＩＤとカードの向き
本実施の形態では２値データ列の値と認識対象画像の向きの関係に関する向き判定情報を記憶し、求めた２値データ列と前記向き判定情報に基づき認識対象画像の向きを判定する処理を行う。
【０２９８】
向き判定情報として読み取り対象となる姉妹ＩＤ（正方向に認識した場合の正方向ＩＤと逆方向に認識した場合の逆方向ＩＤ）と向きの関係を保持しておき、認識したデータがどちらにあたるかで向きを決定する。例えば求めたデータが逆方向ＩＤであれば、カードの向きが逆方向であると判断してもよい。
【０２９９】
また向き判定情報として、姉妹ＩＤについて正方向ＩＤの取り得る条件（例えば範囲）負方向ＩＤの取り得る条件を記憶させておき、認識したデータがどちらの条件を満たすかで、向きを判定するようにしてもよい。
【０３００】
姉妹ＩＤは特に本実施の形態の２次元コードを印刷したカードをカードゲーム機などに応用する場合に用いることができる。一般に２次元コードは正位置から読んだ場合と逆位置から読んだ場合で２種類のＩＤを持つが、この時、正位置のＩＤから見た逆位置のＩＤ（または、その逆）を「姉妹ＩＤ」と呼ぶ。正位置のＩＤが決まれば逆位置のＩＤも一意に決定する（もちろん、その逆も真）。実用上のメリットとしては、カードの向きを知る上で重要な情報となることや、正位置・逆位置両方でカードの認識を行い認識の精度を高める（冗長性を持たせる）ことなどが挙げられる。純粋に算術論理演算のみで、正位置のＩＤと逆位置のＩＤを相互に高速に変換できる。
【０３０１】
なお、正位置のＩＤのみで逆位置のＩＤを持たないものもあるが、これを「姉妹ＩＤを持たない」という。これは例えば、７fitの場合、"32"（1010100）を使用していないことに起因する。
【０３０２】
ちなみに、認識エンジンが正位置のＩＤを持つカードしか検出しないように実装することも可能である。この場合、「カードが正位置の場合にのみ、筐体のテーブル上に存在する」という扱いにできる。同じカードの上下をひっくり返して逆位置にすると「カードが消える」のである（スイッチの様に使える）。もちろん、姉妹ＩＤを持つカードでも同様の効果は得られるので、全てのカードの位置と回転角を常に把握しておきたいならば、姉妹ＩＤを持つカードのみで構成するようにしてもよい。
【０３０３】
５．画像認識装置
図１に本実施形態の画像認識装置を適用したゲームシステムの機能ブロック図の例を示す。なお本実施形態のゲーム装置は図１の構成要素（各部）の一部を省略した構成としてもよい。
【０３０４】
撮像部１５０は、認識対象物を撮像するためのものであり、その機能は撮像素子としてＣＣＤが用いられたカメラなどにより実現できる。また撮像部１５０は、撮像範囲の各座標の画素に対応するグレースケールの階調データ（画素情報）の集合である画像データを処理部１００に出力する処理を行う。
【０３０５】
操作部１６０は、プレイヤーが操作データを入力するためのものであり、その機能は、レバー、方向指示キー、或いはボタンなどにより実現できる。
【０３０６】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【０３０７】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、メモリーカード、ハードディスク、或いはメモリー（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【０３０８】
ディスプレイ１９０は、本実施形態により生成された画像を表示出力するためのものである。
【０３０９】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【０３１０】
携帯型情報記憶装置１９４は、プレイヤーの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置１９４としては、メモリカードや携帯型ゲームシステムなどがある。
【０３１１】
通信部１９６は外部（例えばホスト装置や他のゲームシステム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【０３１２】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信してもよい。このようなホスト装置（サーバー）の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【０３１３】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などを行う。この処理部１００は記憶部１７０をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【０３１４】
処理部１００は、ゲーム演算部１１０、画像生成部１４０、音生成部１４２を含む。
【０３１５】
ゲーム演算部１１０は、ゲーム画像やゲーム音を生成するためのゲーム演算処理を行う。ここでゲーム演算処理としては、ゲームの内容やゲームモードを決定する処理、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲームプレイにより変化するゲームパラメータを演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【０３１６】
ゲーム演算部１１０は、画像認識部１２０を含む。画像認識部１２０は、撮像部１５０によって出力される画像データからカードの模様部分に対応する画像データを認識対象画像として抽出し、抽出した認識対象画像から撮像されたカードの識別情報や位置等を取得する処理を行う。そしてゲーム演算部１１０は、取得したカードの識別情報や位置情報等に基づきゲーム演算を行う。
【０３１７】
画像認識部１２０は、微分処理部１２１、ぼかし処理部１２２、二値化処理部１２３、輪郭抽出部１２５、輪郭判定部１２６、画素情報変更部１２７、認識対象画像抽出部１２８、注目点画素情報検出部１３０，対応データ演算部１３２、シミュレーション処理部１３４、エラー検出・補正処理部１３６、向き判定部１３８を含む。
【０３１８】
微分処理部１２１は、撮像部１５０から出力される画像データに対して、着目画素とその周囲の画素の階調データ（画素情報）を用いた２次微分処理を行う。
【０３１９】
ぼかし処理部１２２は、微分処理部１２１によって２次微分処理が行われた２次微分データに対して、着目画素とその周囲の画素の２次微分データを用いたぼかし処理を行う。
【０３２０】
二値化処理部１２３は、ぼかし処理部１２２から出力される新たな２次微分データを所定の閾値ＳTHと比較することにより、二値データに変換する。２次微分データ＞ＳTHの場合には、二値データ＝１に設定される。また、２次微分データ≦ＳTHの場合には、二値データ＝０に設定される。
【０３２１】
尚、ぼかし処理部１２２から出力される新たな２次微分データについて、符号なし整数へ型変換（キャスト）を行って上記二値化処理を行ってもよい。符号なし整数への型変換を行うことにより、新たな２次微分データのマイナス値をプラスの最大値付近にすることができ、二値化処理後の画像のコントラストを高めることができる。
【０３２２】
輪郭抽出部１２５は、二値化画像を構成する各画素を所定の順番でスキャンして最初に到達する白画素を検出し、この白画素に隣接する他の白画素を最初の白画素に戻ってくるまで順番に辿る（トレースする）ことにより、隣接する白画素からなる画素群の輪郭を抽出する処理を行う。
【０３２３】
認識対象画像抽出部１２８は、輪郭判定部１２６によって輪郭の軌跡の形状が長方形であると判定された場合に、当該輪郭の内部領域にある各画素に対応する二値データを認識対象画像として抽出する処理を行う。
【０３２４】
画素情報変更部１２７は、輪郭判定部１２６によって輪郭の軌跡の形状が長方形でないと判定された場合に、当該輪郭を構成する各白画素を黒画素に変更する処理を行う。ここで黒画素への変更は、輪郭抽出部１２５が順番に辿った各白画素に対応する二値データを０に設定することにより行う。
【０３２５】
また画素情報変更部１２７は、認識対象画像抽出部１２８によって輪郭の内部領域にある各画素の二値データの抽出が行われた場合に、当該輪郭の内部領域にある各画素を黒画素に変更する処理を行う。例えば、図１４に示すように輪郭を構成する各白座標のＸ座標の最小値Ｘｍｉｎと最大値Ｘｍａｘと、Ｙ座標の最小値Ｙｍｉｎと最大値Ｙｍａｘを抽出し、ＹｍｉｎからＹｍａｘまでの各Ｙ座標について、対応するＸｍｉｎからＸｍａｘまでの各画素に対応する二値データを０に設定する。
【０３２６】
注目点画素情報検出部１３０は、認識対象画像の基準点対応位置を検出し、基準点対応位置に基づき基準点に関連づけて設定されている注目点（例えば点配置予定位置）に対応する認識画像上の注目点対応位置を演算し、演算した注目点位置対応位置に基づき認識対象画像の画素情報を検出する処理を行う。
【０３２７】
対応データ演算部１３２は、注目点画素情報検出部１３０によって検出された画素情報に基づき２次元コードに対応付けられた対応データを演算する処理を行う。
【０３２８】
注目点画素情報検出部１３０は、メインレイヤーに属する点配置予定位置を注目点として、注目点対応位置として認識画像上の点配置予定位置を演算し、演算した点配置予定位置に基づき認識対象画像の画素情報を検出し、対応データ演算部１３２、検出された画素情報に基づき２値データ列を求め、求めた２値データ列に一義的に対応付けられた所与のデータを対応データとして求めるようにしてもよい。
【０３２９】
シミュレーション処理部１３４は、対応データ演算部１３２によって演算された２値データ列に基づき、予め設定された２値データ列配置条件に従って、２次元領域の点配置予約位置に点を配置し、予め設定された結線条件に従って前記各点と結線対象となる点を繋ぐ結線シミュレーション処理を行うようにしてもよい。
【０３３０】
シミュレーション処理部１３４は、２次元領域のメインレイヤー以外に設定されたサブレイヤーに属する点配置予約位置に、予め設定されたダミー点配置条件にダミーの点を配置するダミー点シミュレーション処理を行うようにしてもよい。
【０３３１】
エラー検出・補正処理部１３６は、認識対象画像から検出したサンプリングした点の結線状態と結線シミュレーション処理によって得られたサンプリングした点の結線状態とを比較して、エラーの検出及びエラー補正の少なくとも一方を行うようにしてもよい。
【０３３２】
エラー検出・補正処理部１３６は、対応データ演算部１３２によって演算された２値データ列に対して、標準フィボナッチ表現で表される２値データ列の条件に基づきエラーの検出及びエラー補正の少なくとも一方を行うようにしてもよい。
【０３３３】
エラー検出・補正処理部１３６は、認識対象画像から検出したサンプリングしたダミー点の位置とダミー点シミュレーション処理によって得られたダミー点の位置とを比較して、エラーの検出及びエラー補正の少なくとも一方を行うようにしてもよい。
【０３３４】
向き判定部１３８は、対応データ演算部１３２によって演算された２値データ列と前記向き判定情報に基づき認識対象画像の向きを判定する処理を行う。
【０３３５】
画像生成部１４０は、処理部１００で行われる種々の処理（ゲーム処理、画像認識処理）の結果に基づいて描画処理を行い、ディスプレイ１９０に出力する。この場合、画像生成部１３０が生成する画像は、いわゆる２次元画像であってもよいし、３次元画像であってもよい。
【０３３６】
音生成部１４２は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【０３３７】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【０３３８】
上記実施の形態では、２次元領域に配置された点が線でつながれた構成の２次元コードやその生成方法及び認識方法を例にとり説明したがこれに限られない。
【０３３９】
例えば所与のデータが２次元画像としてコード化された２次元コードであって、所与のデータに一義的に対応付けられた２値データ列に基づき、２次元領域に設定されたメインレイヤーに属する点配置予約位置に配置された点と、２次元領域のメインレイヤー以外に属する点配置予約位置に配置されたダミーの点と、を画像構成要素に含み、前記点に所与のパタンを与えて２次元画像化された２次元コードやその生成方法及び認識方法も本発明の範囲内である。
【図面の簡単な説明】
【０３４０】
【図１】本実施形態の画像認識装置を適用したゲームシステムの機能ブロック図の例。
【図２】撮像部による認識対象物の撮像について説明するための図。
【図３】２次微分処理を行う際に用いられる３×３の２次微分オペレータの具体例。
【図４】ぼかし処理において用いられるぼかしフィルタの具体例。
【図５】微分処理部、ぼかし処理部、二値化処理部による処理の内容を説明するための図。
【図６】二値化処理が行われた画像（二値化画像）の具体例。
【図７】輪郭抽出処理の具体例。
【図８】輪郭抽出処理において次の白画素を決定する手法を説明するための図。
【図９】輪郭抽出処理の流れについて説明するための図。
【図１０】輪郭抽出処理の流れについて説明するための図。
【図１１】輪郭抽出処理の流れについて説明するための図。
【図１２】輪郭抽出処理の流れについて説明するための図。
【図１３】輪郭に沿って移動する部分画素列の具体例。
【図１４】画素情報変更処理の具体例。
【図１５】本実施形態の処理の一例について説明するためのフローチャート図。
【図１６】図１６（Ａ）〜（Ｃ）は、本実施の形態の２次元コードの一例。
【図１７】図１７（Ａ）（Ｂ）は、本実施の形態の簡易版の２次元コードの一例。
【図１８】２次元コードの生成の処理の流れを示すフローチャート。
【図１９】１０進数・２進数・標準フィボナッチ表現の対応表である。
【図２０】本実施の形態の２次元領域の一例について説明するための図。
【図２１】本実施の形態の２次元領域の一例について説明するための図。
【図２２】メインレイヤーへの２値データ列の配置について説明するための図。
【図２３】パリティビットの設定手法について説明するための図。
【図２４】パリティビットの設定手法について説明するための図。
【図２５】メインレイヤーの点の配置に基づきパリティ情報を設定し、パリティレイヤーに石を配置した様子を示す図。
【図２６】サブレーヤへのダミーデータ（ダミーの石）の配置について説明するための図である。
【図２７】橋をかけるルールについて説明するための図である。
【図２８】橋をかけるルールについて説明するための図である。
【図２９】橋をかけるルールについて説明するための図である。
【図３０】橋をかけるルールについて説明するための図である。
【図３１】２次元領域の点と点を線でつないだ様子を表す図。
【図３２】２次元コードの完成図。
【図３３】２次元コード生成システムの機能ブロック図。
【図３４】２次元コード画像（認識対象画像）を含む画像の認識処理の流れを示すフローチャート。
【図３５】図３５（Ａ）〜（Ｄ）は本実施の形態の認識対象画像抽出処理（本処理）の概念について説明するための図。
【図３６】撮影された画像である入力画像。
【図３７】２次微分後の画像データ。
【図３８】ぼかし処理後の画像データ。
【図３９】２値化処理後の画像データ。
【図４０】注目点画素情報検出処理について説明するための図。
【図４１】注目点画素情報検出処理について説明するための図。
【図４２】注目点画素情報検出処理について説明するための図。
【図４３】注目点画素情報検出処理について説明するための図。
【図４４】認識対象画像の認識処理及びエラー補正処理の流れについて説明するためのフローチャート。
【図４５】２次元コードの認識レベルの比較表である。
【図４６】２次元コードを用いた従来のカードについて説明するための図。
【符号の説明】
【０３４１】
１００  処理部
１１０  ゲーム演算部
１２０  画像認識部
１２１  微分処理部
１２２  ぼかし処理部
１２３  二値化処理部
１２５  輪郭抽出部
１２６  輪郭判定部
１２７  画素情報変更部
１２８  認識対象画像抽出部
１３０  注目点画素情報検出部
１３２  対応データ演算部
１３４  シミュレーション処理部
１３６  エラー検出・補正処理部
１３８  向き判断部
１４０  画像生成部
１４２  音生成部
１６０  操作部
１７０  記憶部
１８０  情報記憶媒体
１９０  ディスプレイ
１９２  音出力部
１９４  携帯型情報記憶装置
１９６  通信部
【図１】
2008003791.tif 000003
【図２】
2008003791.tif 000004
【図３】
2008003791.tif 000005
【図４】
2008003791.tif 000006
【図５】
2008003791.tif 000007
【図６】
2008003791.tif 000008
【図７】
2008003791.tif 000009
【図８】
2008003791.tif 000010
【図９】
2008003791.tif 000011
【図１０】
2008003791.tif 000012
【図１１】
2008003791.tif 000013
【図１２】
2008003791.tif 000014
【図１３】
2008003791.tif 000015
【図１４】
2008003791.tif 000016
【図１５】
2008003791.tif 000017
【図１６】
2008003791.tif 000018
【図１７】
2008003791.tif 000019
【図１８】
2008003791.tif 000020
【図１９】
2008003791.tif 000021
【図２０】
2008003791.tif 000022
【図２１】
2008003791.tif 000023
【図２５】
2008003791.tif 000024
【図２７】
2008003791.tif 000025
【図２８】
2008003791.tif 000026
【図２９】
2008003791.tif 000027
【図３０】
2008003791.tif 000028
【図３１】
2008003791.tif 000029
【図３２】
2008003791.tif 000030
【図３３】
2008003791.tif 000031
【図３４】
2008003791.tif 000032
【図３５】
2008003791.tif 000033
【図４０】
2008003791.tif 000034
【図４１】
2008003791.tif 000035
【図４３】
2008003791.tif 000036
【図４４】
2008003791.tif 000037
【図４５】
2008003791.tif 000038
【図２２】
2008003791.tif 000039
【図２３】
2008003791.tif 000040
【図２４】
2008003791.tif 000041
【図２６】
2008003791.tif 000042
【図３６】
2008003791.tif 000043
【図３７】
2008003791.tif 000044
【図３８】
2008003791.tif 000045
【図３９】
2008003791.tif 000046
【図４２】
2008003791.tif 000047
【図４６】
2008003791.tif 000048