(57)【要約】【課題】公開情報のデータ量を制限せずに、的多くの秘匿情報を記憶可能な二次元コードを提供する。【解決手段】少なくとも一部のセルを、該セルより微細なサブセル１０によってマトリクス状に細分される拡張セル２ｂとし、該拡張セル２ｂを、少なくとも所定割合のサブセル１０が、明色と暗色から選ばれるセル色で配色し、セル単位で色を識別した時に、拡張セル２ｂの色が前記セル色であると識別され得るよう構成するとともに、前記セル色に配色されるサブセル１０が前記所定割合を下回らない範囲内で、サブセル１０を明色と暗色のいずれかに選択的に配色し、セル単位の配色パターンによって記録されるセルレベルデータと、サブセル単位の配色パターンによって記録されるサブセルレベルデータの少なくとも二種類の情報を記録する。【選択図】図２
2014085777.tif 000002
【特許請求の範囲】
【請求項１】
明色と識別されるセルと暗色と識別されるセルとをマトリクス状に配置してなる二次元コードであって、
少なくとも一部のセルが、該セルより微細なサブセルによってマトリクス状に細分された拡張セルであり、
該拡張セルは、少なくとも所定割合のサブセルが、明色と暗色から選ばれるセル色で配色されることにより、セル単位で色を識別した時に、拡張セルの色が前記セル色であると識別され得るよう構成されており、また、前記セル色に配色されるサブセルが前記所定割合を下回らない範囲内で、サブセルが明色と暗色のいずれかに選択的に配色されており、
セル単位の配色パターンによって記録されるセルレベルデータと、サブセル単位の配色パターンによって記録されるサブセルレベルデータの少なくとも二種類の情報を含むことを特徴とする二次元コード。
【請求項２】
各拡張セルは、サブセルが前記セル色で統一して配色される固定部と、サブセルの配色パターンによってサブセルレベルデータを記録する可変部とを備えることを特徴とする請求項１に記載の二次元コード。
【請求項３】
前記固定部は、拡張セルの少なくとも中央部に設けられることを特徴とする請求項２に記載の二次元コード。
【請求項４】
各拡張セルの可変部の配色パターンが、誤り検出訂正符号のデータ部及び訂正符号部の１又は０に対応していることを特徴とする請求項２又は請求項３に記載の二次元コード。
【請求項５】
拡張セルの可変部は８個のサブセルによって構成されており、当該８個のサブセルは、８ビット長の拡張ハミング符号の符号配列の中で、全て０となる符号配列と全て１となる符号配列とを除く１４通りの符号配列のいずれかに相当する配色パターンを示すことを特徴とする請求項４に記載の二次元コード。
【請求項６】
拡張セルは、サブセルによって縦横４列又は縦横５列のマトリクス状に分割されていることを特徴とする請求項１乃至請求項５のいずれか１項に記載の二次元コード。
【請求項７】
セルレベルデータを記録する符号化領域と、光学的読取りを補助するパターンを構成する固定領域とを備えるものであり、
拡張セルは、固定領域に設けられず、符号化領域に設けられていることを特徴とする請求項１乃至請求項６のいずれか１項に記載の二次元コード。
【請求項８】
符号化領域にあって、セルレベルデータを記録しない残余領域に、拡張セルを含むことを示す識別コードが、セル単位の配色パターンによって記録されていることを特徴とする請求項７に記載の二次元コード。
【請求項９】
請求項２乃至請求項５のいずれか１項に記載の二次元コードの生成方法であって、
セルレベルデータを符号化する第一の符号化ステップと、
サブセルレベルデータを符号化する第二の符号化ステップと、
符号化したサブセルレベルデータを、拡張セルごとに記録する記録単位に分割し、該記録単位のサブセルレベルデータの内容と、拡張セルの可変部の配色パターンとを対応付けした符号化テーブルに基づいて、記録単位のサブセルレベルデータを可変部の配色パターンに変換する第三の符号化ステップと
を実行することを特徴とする二次元コードの生成方法。
【請求項１０】
符号化テーブルは、該記録単位のサブセルレベルデータの内容と、拡張セルの可変部の配色パターンとを一対多に対応付けしたものであり、
第三の符号化ステップでは、符号化テーブルに基づいて、記録単位のサブセルレベルデータの内容に対応する可変部の配色パターンを変換候補として複数抽出し、抽出した複数の変換候補の中から可変部の配色パターンを決定することを特徴とする請求項９に記載の二次元コードの生成方法。
【請求項１１】
第三の符号化ステップでは、変換候補として抽出した複数の可変部の配色パターンから、変換する配色パターンを決定する際に、乱数を用いて、各変換候補の選択確率が略等しくなるようにすることを特徴とする請求項１０に記載の二次元コードの生成方法。
【請求項１２】
第一の符号化ステップと第二の符号化ステップでは、セルレベルデータとサブセルレベルデータを同じ方式で符号化することを特徴とする請求項９乃至請求項１１のいずれか１項に記載の二次元コードの生成方法。
【請求項１３】
請求項４又は請求項５に記載の二次元コードの読取方法であって、
二次元コードを撮像する撮像ステップと、
撮像した二次元コードから各拡張セルのセル単位の配色パターン及びサブセル単位の配色パターンを識別する色識別ステップと、
各拡張セルのサブセル単位の配色パターンから、当該配色パターンによって記録されたサブセルレベルデータを復号するサブセル復号ステップと、
セル単位の配色パターンから、該配色パターンによって記録されたセルレベルデータを復号するセル復号ステップとを備え、
サブセル復号ステップでは、読取りエラーを検出した拡張セルを記憶する読取りエラー記録処理を行い、
セル復号ステップでは、サブセル復号ステップで読み取りエラーが検出された拡張セルについては、当該拡張セルの色を明色又は暗色と推定するセル色推定処理を行い、該セル色推定処理で推定した色を用いてセルレベルデータの復号を行うことを特徴とする二次元コードの読取方法。
【請求項１４】
セル色推定処理では、サブセル復号ステップで読み取りエラーが検出された拡張セルについて、当該拡張セルの色が明色と暗色のいずれであるかを、乱数を用いて推定し、
セル復号ステップでは、セルレベルデータの復号に成功するか、又は所定の上限回数に達するまでセル色推定処理を繰り返すことを特徴とする請求項１３に記載の二次元コードの読取方法。
【請求項１５】
請求項１乃至請求項８のいずれか１項に記載の二次元コードの読取方法であって、
二次元コードを第一の投光手段で照らして撮像する第一撮像ステップと、
該第一撮像ステップで撮像された二次元コードの画像を解析し、二次元コードに拡張セルが存在するか否かを判定する拡張セル判別ステップとを実行し、
さらに、拡張セル判別ステップで二次元コードに拡張セルが存在しないと判定した場合は、第一撮像ステップで撮像した二次元コードの画像に基づいて、二次元コードを復号する第一復号ステップを実行し、
拡張セル判別ステップで二次元コードに拡張セルが存在すると判定した場合は、第一の投光手段よりも強い光を放つ第二の投光手段で照らし、第一撮像ステップよりも短い露光時間で二次元コードを撮像する第二撮像ステップと、
第二撮像ステップで撮像された二次元コードの画像に基づいて、二次元コードを復号する第二復号ステップと
を実行することを特徴とする二次元コードの読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、限られた者のみ読取可能な秘匿情報を含む二次元コードに関する。
【背景技術】
【０００２】
一般的な二次元コードは規格が統一されており、携帯電話等でデータを読み取って、誰でも記録された内容を知り得るように構成されている。一方で、特別な権限を有する者のみが読める秘匿情報を含む二次元コードも提案されている（例えば、特許文献１）。特許文献１に記載の二次元コードは、公開情報を符号化したデータコードを配置し、データコードの終端を示す終端パターンを配置した後の残余領域に、秘匿情報を符号化したデータコードを配置することにより、通常の二次元コードリーダーでは秘匿情報を読み取れないようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−９５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に記載の二次元コードでは、通常、公開情報を符号化したデータコードを配置する領域に、秘匿情報のデータコードも配置することとなるため、公開情報のデータ量を制限しなければならず、また、秘匿情報に関しても記録可能なデータ量が少ないという問題がある。
【０００５】
本発明はかかる現状に鑑みて為されたものであり、公開情報のデータ量を制限せずに、比較的多くの秘匿情報を記憶可能な二次元コードの提供を目的とする。
【課題を解決するための手段】
【０００６】
本発明は、明色と識別されるセルと暗色と識別されるセルとをマトリクス状に配置してなる二次元コードであって、少なくとも一部のセルが、該セルより微細なサブセルによってマトリクス状に細分された拡張セルであり、該拡張セルは、少なくとも所定割合のサブセルが、明色と暗色から選ばれるセル色で配色されることにより、セル単位で色を識別した時に、拡張セルの色が前記セル色であると識別され得るよう構成されており、また、前記セル色に配色されるサブセルが前記所定割合を下回らない範囲内で、サブセルが明色と暗色のいずれかに選択的に配色されており、セル単位の配色パターンによって記録されるセルレベルデータと、サブセル単位の配色パターンによって記録されるサブセルレベルデータの少なくとも二種類の情報を含むことを特徴とする二次元コードである。
【０００７】
かかる構成にあっては、拡張セルは、サブセルの所定割合以上がセル色で配色されているため、既存の二次元コードリーダーで拡張セル単位の色を測定した時に、当該拡張セルがセル色であると識別される。すなわち、既存の二次元コードリーダーに対しては、拡張セルは、セル単位の明暗によって１ビットのデータを表す通常のセルと同様に機能する。このように、本発明の二次元コードでは、通常のセルと拡張セルのセル単位の明暗は、既存の二次元コードリーダーで識別可能であるため、セル単位の配色パターンによって記録されるセルレベルデータは、既存の二次元コードリーダーで読取可能な公開情報にすることができる。
【０００８】
一方、拡張セルは、セル単位の色で１ビットのデータを表すだけでなく、サブセル単位の配色パターンによって、セル単位の色とは異なるデータを表すことができる。既存の二次元コードリーダーはセルのサイズでしか明暗を識別しないため、このサブセル単位の配色パターンは、既存の二次元コードリーダーでは識別不能である。このため、本発明にあっては、サブセル単位の配色パターンによって記録されるサブセルレベルデータは、既存の二次元コードリーダーでは読取不能な秘匿情報にすることができる。このように、本発明の二次元コードは、公開情報をセル単位の配色パターンによって記録し、秘匿情報をサブセル単位の配色パターンによって記録することができるから、公開情報の情報量を制限することなく、多量の秘匿情報を記録できるという利点がある。
【０００９】
発明者の研究によれば、拡張セルを構成するサブセルは、少なくとも半数を超えるサブセルをセル色とする必要があり、好ましくは７５％以上が望ましい。７５％以上のサブセルがセル色であれば、残りの２５％未満のサブセル全てがセル色の反対色で配色されている場合でも、二次元コードリーダーで拡張セルの色をセル単位で識別した時に、当該拡張セルがセル色であると確実に識別できる。
【００１０】
本発明にあって、各拡張セルは、サブセルが前記セル色で統一して配色される固定部と、サブセルの配色パターンによってサブセルレベルデータを記録する可変部とを備える構成が提案される。
【００１１】
かかる構成によれば、拡張セルのセル単位の色を確実に識別可能としつつ、サブセル単位の配色パターンによってデータを適切に記録可能となる。
【００１２】
また、本発明にあって、前記固定部は、拡張セルの少なくとも中央部に設けられることが提案される。
【００１３】
多くの二次元コードリーダーでは、撮像した二次元コードの画像からセルの領域を切り出した後に、セルの中央部付近の色を重視して当該セルが明色と暗色のいずれであるかを識別するため、かかる構成のように、拡張セルの中央部を固定部とし、拡張セルの中央部が常にセル色となるようにすれば、既存の二次元コードリーダーで拡張セルの色をより確実に識別可能となる。
【００１４】
また、本発明にあって、各拡張セルの可変部の配色パターンが、誤り検出訂正符号のデータ部及び訂正符号部の１又は０に対応していることが提案される。
【００１５】
すなわち、かかる構成にあっては、色の読み取りエラーを拡張セル単位で検出・訂正することが可能であるため、セルレベルデータ及びサブセルレベルデータを一層確実に読み取ることが可能となる。
【００１６】
また、本発明にあって、拡張セルの可変部は８個のサブセルによって構成されており、当該８個のサブセルは、８ビット長の拡張ハミング符号の符号配列の中で、全て０となる符号配列と全て１となる符号配列とを除く１４通りの符号配列のいずれかに相当する配色パターンを示すことが提案される。
【００１７】
かかる構成にあっては、拡張セルのサブセルに記録されるデータは、１ビット誤り訂正と２ビット誤り検出の能力を有することとなる。ここで、８ビット長の拡張ハミング符号は、４ビットのデータビットと、３ビットの訂正ビットと、１ビットのパリティビットで構成され、１６通りの配列を備えるが、全て０及び全て１となる符号配列を除くと、残る１４通りの配列は、８ビット中の４ビットが「１」で、残りの４ビットが「０」となる配置である。一般的なデータ通信とは異なり、サブセルの色を読み誤る場合は、汚れ等でセルを構成するサブセルが全て暗色（又は明色）と識別される場合など、サブセルの明暗の比率が変化する場合が殆どである。このため、かかる構成では、３個以上のサブセルで読取りエラーが生じた場合でも、殆ど全ての読取りエラーを検出できる。
【００１８】
また、本発明にあって、拡張セルは、サブセルによって縦横４列又は縦横５列のマトリクス状に分割されていることが提案される。
【００１９】
発明者の研究によれば、拡張セルを縦横２列や縦横３列のサブセルに分割した場合は、セル単位の色の識別が比較的困難となり、また、小さな二次元コードの場合には、拡張セルの一辺を６個以上のサブセルに分割すると、カメラ解像度の低い二次元コードリーダーでは読取困難となり、また、解像度の低いプリンタで印刷困難となる。このため、かかる構成とすれば、セル単位の配色パターンと、サブセル単位の配色パターンとを適切に読み取り得る二次元コードを実現できる。
【００２０】
また、本発明にあって、セルレベルデータを記録する符号化領域と、光学的読取りを補助するパターンを構成する固定領域とを備えるものであり、拡張セルは、固定領域に設けられず、符号化領域に設けられていることが提案される。
【００２１】
かかる構成にあっては、固定領域については、セルの色を識別容易な通常のセルによって構成されるから、二次元コードを読み取る際に、画像の中の二次元コードを速やかに識別し、符号化領域に記録されるデータを読み取ることが可能となる。
【００２２】
また、本発明にあって、符号化領域にあって、セルレベルデータを記録しない残余領域に、拡張セルを含むことを示す識別コードがセル単位の配色パターンによって記録されていることが提案される。
【００２３】
かかる構成にあっては、通常のセルのみからなる二次元コードであるのか、拡張セルを含む二次元コードであるのかを、サブセルの存在を光学的に識別することなく、セル単位の配色パターンにより判別可能となる。このため、かかる構成によれば、二次元コードの読取時に、拡張セルを含む二次元コードであるか否かを容易に判別可能となる。
【００２４】
また、上記二次元コードの生成方法として、セルレベルデータを符号化する第一の符号化ステップと、サブセルレベルデータを符号化する第二の符号化ステップと、符号化したサブセルレベルデータを、拡張セルごとに記録する記録単位に分割し、該記録単位のサブセルレベルデータの内容と、拡張セルの可変部の配色パターンとを対応付けした符号化テーブルに基づいて、記録単位のサブセルレベルデータを可変部の配色パターンに変換する第三の符号化ステップとを実行することが提案される。
【００２５】
かかる方法にあっては、二次元コードの色をサブセル単位で識別可能な装置を用いたとしても、符号化テーブルの内容を知らなければ、可変部の配色パターンをサブセルレベルデータに復号することができないため、二次元コードに記録するサブセルレベルデータの秘匿性を高めることができる。
【００２６】
また、上記二次元コードの生成方法にあって、符号化テーブルは、該記録単位のサブセルレベルデータの内容と、拡張セルの可変部の配色パターンとを一対多に対応付けしたものであり、第三の符号化ステップでは、符号化テーブルに基づいて、記録単位のサブセルレベルデータの内容に対応する、可変部の配色パターンを変換候補として複数抽出し、複数の変換候補のいずれかの配色パターンに変換することが提案される。
【００２７】
かかる構成にあっては、サブセルの配色パターンから符号化テーブルの内容を推測し難くなるため、サブセルレベルデータの秘匿性をさらに向上させることができる。
【００２８】
また、上記生成方法にあって、第三の符号化ステップでは、変換候補として抽出した複数の可変部の配色パターンから、変換する配色パターンを決定する際に、乱数を用いて、各変換候補の選択確率が略等しくなるようにすることが提案される。
【００２９】
かかる構成にあっては、可変部の配色パターンが変換候補の中から不規則に選択されることとなるから、符号化テーブルの内容が一層推測され難くなって、セルレベルデータの解読可能性を低減させることができる。
【００３０】
また、上記生成方法にあって、第一の符号化ステップと第二の符号化ステップでは、セルレベルデータとサブセルレベルデータを同じ方式で符号化することが提案される。
【００３１】
かかる構成にあっては、第一の符号化ステップと第二の符号化ステップで、共通するアルゴリズムを用いてデータを符号化できるから、二次元コードの生成プログラムを単純化できるという利点がある。また、セルレベルデータとサブセルレベルデータを復号する時も、共通のアルゴリズムを使用できるから、二次元コードの読取プログラムも単純化できるという利点がある。
【００３２】
また、拡張セル単位で誤り検出可能な二次元コードの読取方法としては、二次元コードを撮像する撮像ステップと、撮像した二次元コードから各拡張セルのセル単位の配色パターン及びサブセル単位の配色パターンを識別する色識別ステップと、各拡張セルのサブセル単位の配色パターンから、当該配色パターンによって記録されたサブセルレベルデータを復号するとともに、読取りエラーを検出した拡張セルを記憶するサブセル復号ステップと、セル単位の配色パターンから、該配色パターンによって記録されたセルレベルデータを復号するセル復号ステップとを備え、セル復号ステップでは、サブセル復号ステップで読み取りエラーが検出された拡張セルについては、当該拡張セルの色を明色又は暗色と推定するセル色推定処理を行い、該セル色推定処理で推定した色を用いてセルレベルデータの復号を行う方法が提案される。
【００３３】
一般的に、二次元コードに記録されるデータコード列は誤り訂正コードを含み、所定割合までであれば、セルの色を読み誤ってもデータコード列の情報を読み取ることができるが、従来の二次元コードでは、どのセルの色を読み誤ったかまでは判別不能であるため、セルの色の読み誤りが所定割合を超えると、情報を読み取ることができない。これに対して、本発明の二次元コードにあって、拡張セル単位でサブセルに誤り検出訂正符号を記録したものであれば、どの拡張セルで誤りが発生したかを判別できるため、読取りエラーが所定範囲を超えた場合でも、読み取り可能となる場合がある。
【００３４】
セル色推定処理では、サブセル復号ステップで読み取りエラーが検出された拡張セルについて、当該拡張セルの色が明色と暗色のいずれであるかを、乱数を用いて推定し、セル復号ステップでは、セルレベルデータの復号に成功するか、又は所定の上限回数に達するまでセル色推定処理を繰り返すことが提案される。
【００３５】
かかる方法によれば、セル色推定処理を繰り返すことによって、読取りエラーが検出された拡張セルの色をより高確率で正答可能となるから、セルレベルデータの誤り訂正機能を向上させることができる。例えば、二次元コードのセルの色は、明色と暗色が概ね半数ずつ分布しているため、乱数に基づいて白色か黒色かを１回推定するだけでは、読取りエラーが検出された拡張セルの約５０％の色しか正答することができないが、セル色仮決定処理を１００回を上限として繰り返せば、読取りエラーが検出された拡張セルの約５６％の色を正答可能となる。
【００３６】
また、本発明の二次元コードの読取方法としては、二次元コードを第一の投光手段で照らして撮像する第一撮像ステップと、該第一撮像ステップで撮像された二次元コードの画像を解析し、二次元コードに拡張セルが存在するか否かを判定する拡張セル判別ステップとを実行し、さらに、拡張セル判別ステップで二次元コードに拡張セルが存在しないと判定した場合は、第一撮像ステップで撮像した二次元コードの画像に基づいて、二次元コードを復号する第一復号ステップを実行し、拡張セル判別ステップで二次元コードに拡張セルが存在すると判定した場合は、第一の投光手段よりも強い光を放つ第二の投光手段で照らし、第一撮像ステップよりも短い露光時間で二次元コードを撮像する第二撮像ステップと、第二撮像ステップで撮像された二次元コードの画像に基づいて、二次元コードを復号する第二復号ステップとを実行することを特徴とする二次元コードの読取方法も提案される。
【００３７】
かかる方法にあって、第二撮像ステップでは、明るい条件で露光時間を短くすることにより手振れ等の影響を軽減でき、第一撮像ステップより鮮明な画像を得ることができる。一方で、第二撮像ステップは、二次元コードを明るく照らす分だけ消費電力が大きくなる。そして、かかる方法では、まず、第一撮像ステップを行い、より鮮明な画像が必要な、拡張セルを含む二次元コードであるか否かを判定し、拡張セルを含む二次元コードである場合のみ、第二の撮像ステップを行うため、不必要な二次元コードに対して第二撮像ステップを行うのを防止し、消費電力を低減できるという利点がある。
【発明の効果】
【００３８】
以上に述べたように、本発明の二次元コードによれば、公開情報のデータ量を制限せずに、多くの秘匿情報を記録可能となる。
【図面の簡単な説明】
【００３９】
【図１】（ａ）は、実施例１の二次元コード１であり、（ｂ）は、実施例１の二次元コード１の構造を示す説明図である。
【図２】二次元コード１の部分拡大図である。
【図３】（ａ）は、拡張セル２ｂの構造を示す説明図であり、（ｂ）は、拡張セル２ｂの配色パターンの例を示す説明図である。
【図４】二次元コード１の生成方法を示すフローチャートである。
【図５】符号化処理の手順を示すフローチャートである。
【図６】実施例１に係る符号化テーブルを示す図表である。
【図７】実施例１に係る復号テーブルを示す図表である。
【図８】拡張ハミングコードを示す図表である。
【図９】実施例２に係る符号化テーブルを示す図表である。
【図１０】正答率の発生分布を示す図表である。
【図１１】実施例２に係る二次元コードの読取方法を示すフローチャートである。
【図１２】セル復号処理の処理内容を示すフローチャートである。
【図１３】セルレベルデータ復号処理の処理内容を示すフローチャートである。
【図１４】変形例の拡張セル２ｃ〜２ｅを示す説明図である。
【発明を実施するための形態】
【００４０】
本発明の実施形態を、以下の実施例に従って説明する。
【実施例１】
【００４１】
本実施例の二次元コード１は、ＱＲコード（登録商標）に本発明を適用したものである。具体的には、図１（ａ）に示すように、本実施例の二次元コード１は、ＱＲコードリーダーによって明色又は暗色と識別されるセル２ａ，２ｂをマトリクス状に配置してなるものである。この二次元コード１にあって、セル単位の配色パターンによって形成される構成は、ＱＲコードと略共通している。すなわち、図１（ｂ）に示すように、二次元コード１は、ＱＲコードと同様に、機能パターン（固定領域）３と符号化領域４とによって構成される。機能パターン３は、二次元コード１の光学的読取りを補助する、配色パターンが予め定められた領域であり、位置検出パターン５、分離パターン６、タイミングパターン７などによって構成される。また、符号化領域４は、セルの配色パターンによってデータを記録する領域であり、データコード及び誤り訂正コードが配置されるデータコード領域８と、形式情報を示すコードが配置される形式情報コード領域９とによって構成される。こうした構成は、基本的にＪＩＳ規格（ＪＩＳ  Ｘ  ０５１０：２００４）に準拠しているため詳細な説明は省略する。
【００４２】
本実施例にあって、二次元コード１を構成するセル２ａ，２ｂは、通常セル２ａと拡張セル２ｂの二種類からなる。通常セル２ａは、機能パターン３に配設され、通常のＱＲコードのセルと同じように、全域が白色（明色）又は黒色（暗色）で配色される。一方、拡張セル２ｂは、符号化領域４に配設され、図２に示すように、拡張セル２ｂよりも小さいサブセル１０に細分されて、サブセル単位で白色又は黒色に配色される。
【００４３】
拡張セル２ｂは、図３（ａ）に示すように、縦４列、横４列の計１６個のサブセル１０に、マトリックス状に分割される。各拡張セル２ｂは、１２個（７５％）のサブセル１０が、白色と黒色から選ばれるセル色で配色されており、これにより、ＱＲコードリーダーによってセル単位で拡張セル２ｂの色を識別した時に、当該セル色が拡張セルの色として識別しされるよう構成されている。具体的には、拡張セル２ｂは、図３（ａ）に示すように、固定部１１と可変部１２とからなる。固定部１１は、拡張セル２ｂを構成する１６個のサブセル１０のうち、中央部と四隅の８個のサブセル１０によって構成される。この固定部１１を構成するサブセル１０は、セル色で統一して配色される。すなわち、明色と識別されるべき拡張セル２ｂでは、固定部１１の８個のサブセル１０は白色で統一され、暗色と識別されるべき拡張セル２ｂでは固定部１１のサブセル１０は黒色で統一される。一方、可変部１２は、固定部１１に含まれない外周部の８個のサブセル１０によって構成される。可変部１２のサブセル１０は、８個のうち４個がセル色で選択的に配色され、残り４個がセル色の反対色で配色されるよう構成される。
【００４４】
図３（ｂ）は、二次元コード１に含まれる拡張セル２ｂを例示したものであり、図中上半分の６個はセル色が白色の拡張セル２ｂであり、図中下半分の６個はセル色が黒色の拡張セル２ｂである。このように、拡張セル２ｂの可変部１２は、８個のサブセル１０のどれが白色で、どれが黒色となるかによって、７０通りの配色パターンが存在しており、かかる拡張セル２ｂでは、可変部１２におけるサブセル単位の配色パターンによってデータを記録可能となっている。また、拡張セル２ｂでは、可変部１２の配色パターンに関わらず、固定部１１と可変部１２の１２個（７５％）のサブセル１０がセル色で配色されることによって、ＱＲコードリーダーで拡張セル２ｂの色をセル単位で識別した時に、拡張セル２ｂが当該セル色であると識別されるよう構成される。なお、ＱＲコードリーダーの多くは、セル２ａ，２ｂの中央部の色を重視して当該セルが明色であるか暗色であるかを識別するため、本実施例では、拡張セル２ｂの中央部を固定部１１とすることにより、ＱＲコードリーダーで拡張セルの色を確実に識別し得るようにしている。
【００４５】
このように、拡張セル２ｂは、セル単位の色（セル色）が白色（明色）と黒色（暗色）のいずれであるかによって１ビットの情報を記録でき、さらに、可変部１２の配色パターンによって１ビット以上の情報を記録できる。ここで、既存のＱＲコードリーダーは、セル単位の色（セル色）は識別できるものの、サブセル単位で配色パターンを解析するプログラムがないため、可変部１２の配色パターンによって記録される情報は読取不能である。この特徴を利用して、本実施例の二次元コード１では、セル単位の配色パターンによって独立したセルレベルデータが記録されるとともに、拡張セル２ｂの可変部１２の配色パターンによってセルレベルデータとは異なるサブセルレベルデータが記録される。
【００４６】
具体的には、セルレベルデータは、ＱＲコードの規格にしたがって、二次元コード１の符号化領域４に、拡張セル２ｂのセル単位の配色パターンとして記録される。そして、サブセルレベルデータは、同じ符号化領域４にあって、拡張セル２ｂの可変部１２の配色パターンとして記録される。かかる二次元コード１を既存のＱＲコードリーダーに読み取らせた場合、符号化領域４では、拡張セル２ｂ単位の配色パターンのみが識別されて、通常のＱＲコード同様にセルレベルデータが読み取られることとなる。なお、既存のＱＲコードリーダーは、サブセル単位の配色パターンを解析しないため、サブセル１０の存在は無視される。このように、本実施例の二次元コード１は、既存のＱＲコードリーダーによって、セルレベルデータを読み取ることができるものであり、通常のＱＲコードと互換性を有している。一方で、二次元コード１に記録されるサブセルレベルデータは、既存のＱＲコードリーダーで読取不能であり、サブセルレベルデータに関しては一定の秘匿性を有している。このため、本実施例の二次元コード１では、公開情報をセルレベルデータとして記録し、秘匿情報をサブセルレベルデータとして記録することで、公開情報と秘匿情報を適切に記録できる。特に、本実施例では、秘匿情報（サブセルレベルデータ）は、セル単位の配色パターンとは独立した、サブセル単位の配色パターンとして記録されるため、秘匿情報の情報量によって、公開情報の情報量が制限されることがない。また、サブセル単位の配色パターンによれば、セル単位の配色パターンよりも多量の情報を記録できるから、本実施例の二次元コード１には、多量の秘匿情報を記録できるという利点がある。
【００４７】
また、本実施例では、符号化領域４に拡張セル２ｂを配設し、二次元コード１の光学的読取りを補助する機能パターン（固定領域）３については、セル単位の色を識別容易な通常セル２ａで構成しているため、二次元コード１を読み取る際に、撮像した画像の中から二次元コード１を速やかに識別して抽出できるという利点がある。
【００４８】
また、本実施例では、図１に示すように、拡張セル２ｂを含む二次元コード１であることを示す識別コード８ａが、セル単位の配色パターンによって記録される。具体的には、識別コード８ａは、データコード領域８の中の埋草領域の所定箇所に設けられる。埋草領域は、データコード領域８にセルレベルデータを記録した後の残余領域であり、通常のＱＲコードでは、有効なデータが記録されない領域である。かかる識別コード８ａによれば、セル単位の配色パターンを識別するだけで、拡張セル２ｂの有無を判別できるから、微細なサブセル１０の有無を光学的に確認することなく、通常のＱＲコードであるのか、拡張セル２ｂを含む二次元コードであるのかを容易に判別可能となる。
【００４９】
なお、本実施例の二次元コード１には、可変部１２の配色パターンによって３セットのサブセルレベルデータを記録し得るよう構成されている。３セットのサブセルレベルデータは、符号化領域４の異なる領域に記録されるのではなく、符号化領域４の拡張セル２ｂに重複するように記録される。具体的には、符号化領域４を構成する各拡張セル２ｂは、各サブセルレベルデータを１ビットずつ記録し得るよう構成される。すなわち、二次元コード１にサブセルレベルデータを１セット記録する場合は、符号化されたサブセルレベルデータが各拡張セル２ｂに１ビット単位で記録される。また、３セットのサブセルレベルデータを二次元コード１に記録する場合は、各拡張セル２ｂに、１ビットのサブセルレベルデータが３セット（３ビット）記録されることとなる。かかるサブセルレベルデータの記録態様の詳細は、二次元コード１の生成方法によって説明する。
【００５０】
以下に、上記二次元コード１の生成方法について説明する。
図４は、上記二次元コード１を生成するフローチャートである。まず、ステップＳ１００では、二次元コード１に記録すべきデータセットの準備を行う。データセットとは、セル（拡張セル）単位の配色パターンによって記録する１セットのセルレベルデータＤＳ０と、サブセル単位の配色パターンによって記録される１〜３セットのサブセルレベルデータＤＳ１、ＤＳ２，ＤＳ３である。
【００５１】
次のステップＳ１１０では、セルレベルデータＤＳ０について、通常のＱＲコードの生成手続きに則って二次元コード化し、ＱＲコードの配色パターンに相当するコードＡ０を生成する。すなわち、このコードＡ０は、セルレベルデータＤＳ０を記録するＱＲコードのデータそのものであり、このコードＡ０には、機能パターン３及び符号化領域４を構成するセル２ａ，２ｂの配色パターンが含まれる。この手続きは、規格化されたＱＲコードの手続きであるので、詳細な説明は省略する。
【００５２】
次のステップＳ１２０，Ｓ１３０では、サブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３について、通常のＱＲコードの生成手続きに則って二次元コード化し、ＱＲの配色パターンに相当するコードＡ１，Ａ２，Ａ３を夫々生成する。すなわち、このコードＡ１，Ａ２，Ａ３は、サブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３を記録するＱＲコードのデータそのものである。なお、ここで生成するコードＡ１，Ａ２，Ａ３は、上記コードＡ０と合成し得るように、コードＡ０と同じ型式のＱＲコードとなるようにする。サブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３のコード化は、規格化されたＱＲコードの手続きと同じであるので、詳細な説明は省く。
【００５３】
ステップＳ１３０までの手続きによって、１セットのセルレベルデータＤＳ０と、１〜３セットのサブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３を夫々記録するデータ上のＱＲコードＡ０，Ａ１，Ａ２，Ａ３が得られる。上述のように、これらのＱＲコードＡ０〜Ａ３は、夫々の機能パターンと符号化領域が重なり合うように同一型式で生成される。これらのＱＲコードＡ０〜Ａ３を重なり合うセルごとに分割し、重なり合うセルごとにＱＲコードＡ０〜Ａ３の色を合成し、上記二次元コード１のセル２ａ，２ｂの配色パターンに変換するのがステップＳ２００の符号化処理である。なお、図４のフローチャートに示す二次元コードの生成方法にあって、本発明に係る第一の符号化ステップは、ステップＳ１１０によって主に実現される。また、本発明に係る第二の符号化ステップは、ステップＳ１２０によって主に実現される。また、本発明に係る第三の符号化ステップは、ステップＳ２００によって主に実現される。
【００５４】
符号化処理Ｓ２００では、ＱＲコードＡ０，Ａ１，Ａ２，Ａ３を合成することにより、二次元コード１の各セル２ａ，２ｂの配色パターンをサブセル単位まで決定する。具体的には、生成する二次元コード１の一辺のセル数をＮとすると、二次元コード１全体では、Ｎ２個のセル２ａ，２ｂが存在し、ＱＲコードＡ０，Ａ１，Ａ２，Ａ３にも、Ｎ２個のセルの配色パターンが存在する。このＮ２個のセル全てについて、サブセル単位まで配色を決定する。より具体的には、ＱＲコードの、縦のセルのインデックスをＩ，横のセルのインデックスをＪとすると、Ｉ＝１からＮ、Ｊ＝１からＮまでの組合せで全てのセルを表現できる。Ｉ，Ｊで示されるセルの色をＣ（Ｉ，Ｊ）で表現する。また、コードをＡ０，Ａ１，Ａ２，Ａ３をＫで示すとすると、Ｃ（Ｉ，Ｊ，Ｋ）で示すことが可能となる。ここで、Ｋは０から３である。
【００５５】
図５は、符号化処理の処理内容を示したフローチャートである。ステップＳ２１０では、ＩとＪで指定されるセル２ａ，２ｂについて、それが機能パターン３を構成する通常セル２ａであるか否かを判定する。そして、機能パターン３を構成する通常セル２ａであると判定した場合はサブセル単位の配色パターンを決定する処理はスキップする。一方、符号化領域４を構成する拡張セル２ｂであると判定した場合は、次のステップＳ２２０でＱＲコードＡ０〜Ａ３の配色パターンを読み込む。具体的には、Ｃ（Ｉ，Ｊ，Ｋ）（Ｋは０から３）の配色データを読み込み、各セルが０か１（白か黒）かを識別する。次に、ステップＳ２３０では、ＱＲコードＡ１，Ａ２，Ａ３の当該セルの配色パターンを結合する。具体的には、３セットのＱＲコードＡ１，Ａ２，Ａ３の場合は、例えば白黒白（０１０）のように、三つの色の組合せを作る。この三つの色の組合せが、拡張セル２ｂごとに、可変部１２の配色パターンとして記録するサブセルレベルデータの記録単位となる。
【００５６】
次に、ステップＳ２４０では、拡張セル２ｂごとの記録単位となる色の組合せから、可変部１２の配色パターンの変換候補を抽出する。具体的には、図６に示すように、記録単位となるセルの色の組合せ（復号データ）と、可変部１２の配色パターン（符号化データ）とを対応付けした符号化テーブルを予め用意しておき、当該符号化テーブルに基づいて、可変部１２の配色パターンの候補を抽出する。例えば、拡張セル２ｂに記録するサブセルレベルデータが３セット（３ビット符号化）で、復号データが「白黒白」の場合は、「白黒白」の復号データに対応する符号化データが符号化テーブルから変換候補として抽出される。ここで、上述のように、可変部１２は、８個のサブセルのいずれか４個が白色で、残り４個が黒色となるものであり、８Ｃ４すなわち７０通りの配色パターン（符号化データ）が存在する。これに対して、可変部１２の配色パターンによって記録する、セルの色の組合せ（復号データ）は最大８種類であるので、セルの色の一つの組合せ（復号データ）に対して、変換候補として抽出される可変部１２の配色パターンは複数種類存在する。このため、続くステップＳ２５０、２６０では可変部１２の配色パターンの変換候補が二つ以上ある場合は、乱数を発生させて、夫々の変換候補を選択する確率が略等しくなるようにして、可変部１２の配色パターンを決定する。また、変換候補が一つしか割り当てられていない場合には、乱数を発生させることなく、それ変換候補を選択する。次に、ステップＳ２７０では、拡張セル２ｂのセル単位の色（セル色）、具体的にはＣ（Ｉ，Ｊ，０）が白色であるか否かを判定する。セル色が白色の場合には、決定した可変部１２の配色パターンをそのまま埋め込む。一方、セル色が黒色の場合は、ステップＳ２８０で、可変部１２の配色パターンを逆転させる。ステップＳ２９０では、すべてのセル２ａ，２ｂについて、上記の処理が完了したかを判定し、すべてのセル２ａ，２ｂの処理が完了した場合は符号化処理を終了する。
【００５７】
このように、本実施例の二次元コード１の生成方法では、セルレベルデータＤＳ０及びサブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３を夫々ＱＲコード化し、データ上のＱＲコードＡ０，Ａ１，Ａ２，Ａ３を合成することによって、二次元コード１の配色をサブセル単位まで決定する。このように、かかる生成方法では、セルレベルデータとサブセルレベルデータの双方を、ＱＲコードの符号化方式に則って符号化するため、セルレベルデータとサブセルレベルデータの符号化に共通のアルゴリズムを用いることにより、二次元コード１の生成プログラムを簡素化できるという利点がある。また、かかる生成方法によって生成された二次元コード１は、セルレベルデータとサブセルレベルデータの復号時にも共通のアルゴリズムを用いることができるから、二次元コード１の読取プログラムも簡素化できる。
【００５８】
また、かかる生成方法では、符号化テーブルを用いてサブセルレベルデータを可変部１２の配色パターンに変換して記録している。符号化テーブルの内容は予め任意に定められるものであり、適用するシステム毎に内容が異なるため、この符号化テーブルを秘匿することにより、サブセルレベルデータを第三者から保護することができる。特に、上記符号化テーブルでは、一の復号データ（セルの色の組合せ）に対して、複数の符号化データ（可変部１２の配色パターン）を対応させているから、二次元コード１から符号化テーブルの内容を推測され難いという利点がある。さらには、可変部１２の配色パターンを複数の変換候補から決定する際に、乱数によって、各変換候補の選択確率が略等しくなるようにして、変換候補選択時の規則性を排しているため、符号化テーブルの推測が一層困難となっている。
【００５９】
次に、上記実施例１の二次元コード１を、サブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３まで読み取り得る読取方法について説明する。
本実施例の読取方法は、二次元コード１を撮像する撮像ステップと、撮像した二次元コードから各拡張セル２ｂのセル単位の配色パターン及びサブセル単位の配色パターンを識別する色識別ステップと、各拡張セル２ｂのサブセル単位の配色パターンから、当該配色パターンによって記録されたサブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３を復号するサブセル復号ステップと、セル単位の配色パターンから、該配色パターンによって記録されたセルレベルデータを復号するセル復号ステップとを備えてなる。
【００６０】
また、本実施例の読取方法は、通常のＱＲコードと実施例１の二次元コード１の双方のデータを読取り可能なものであり、撮像ステップで撮像した二次元コードの画像を解析し、拡張セル２ｂを含む二次元コードであるか否かを判定する拡張セル判別ステップを実行する。ここで、実施例１の二次元コード１に記録された秘匿情報を読み取るためには、セルより微細なサブセル単位で配色パターンを識別する必要があり、通常のＱＲコードよりも精細な撮像が要求される。このため、本実施例の読取方法では、二段階の撮像ステップを実行する。すなわち、第一の撮像ステップでは、通常のＱＲコードを撮像する条件、すなわち、セル単位の明暗を識別し得る程度の条件で撮像を行う。そして、第一の撮像ステップで撮像した画像を解析して、撮像対象の二次元コードが、通常のＱＲコードか、拡張セルを含む二次元コードであるかを判別する。実施例１の二次元コード１には、拡張セル２ｂを含むことを示す識別コード８ａがセル単位の配色パターンで記録されているため（図１（ａ）参照）、かかるステップでは、サブセル１０の有無を光学的に確認することなく、拡張セル２ｂの有無を判別できる。そして、拡張セル２ｂを含まない通常のＱＲコードであると判定した場合は、第一の撮像ステップで撮像した画像を用いて二次元コード（ＱＲコード）の解読を行う。一方、拡張セル２ｂを含む二次元コードであると判定した場合は、サブセル単位の配色パターンまで識別し得るような条件で第二の撮像ステップを実行する。具体的には、二次元コードリーダーに、光量の異なる二種類の投光装置（投光手段）を配設して、第一の撮像ステップでは、比較的暗めの投光装置を用いて撮像し、第二の撮像ステップでは、比較的明るめの投光装置を用いて、第一の撮像ステップより短い露出時間で撮像し、手ブレの影響を軽減することが挙げられる。なお、二種類の投光装置（投光手段）は、光量を複数段階に調節可能な投光装置によって構成することも可能である。
【００６１】
第二の撮像ステップで撮像した二次元コード１の画像は、セル単位で明色又は暗色のいずれであるか識別し、また、サブセル単位でも明色と暗色のいずれであるか識別する。そして、セル単位及びサブセル単位の配色パターンを全て識別したら、セルレベルデータＤＳ０及びサブセルレベルデータＤＳ１、ＤＳ２，ＤＳ３を復号する。セルレベルデータＤＳ０は、セル単位で識別した配色パターンを、通常のＱＲコードと同様の手順で復号することによって得ることができる。サブセルレベルデータＤＳ１、ＤＳ２，ＤＳ３については、可変部１２の配色パターンによって記録されたサブセルレベルデータを、拡張セル２ｂごとに復号する。図７（ａ）は、可変部１２の配色パターンの復号に用いられる復号テーブルである。この復号テーブルは、符号化データ（可変部１２の配色パターン）と、復号データ（サブセルレベルデータ）とを対応付けたものであり、二次元コード１の生成時に使用する符号化テーブル（図６参照）と略同じ内容である。例えば、可変部１２の配色パターンが「白白白白黒黒黒黒」である場合には、「黒白黒」の復号データに変換される。この復号データは、各サブセルレベルデータＤＳ１、ＤＳ２，ＤＳ３を二次元コード化したＱＲコードＡ１，Ａ２，Ａ３のセルの色の組合せを表すものであり、これらを結合することによって、サブセルレベルデータＤＳ１、ＤＳ２，ＤＳ３を夫々記録したＱＲコードＡ１，Ａ２，Ａ３が得られる。そして、これらのＱＲコードＡ１，Ａ２，Ａ３を、通常のＱＲコードと同様の手順で復号すれば、サブセルレベルデータＤＳ１，ＤＳ２，ＤＳ３を得ることができる。
【００６２】
なお、図７（ａ）の復号テーブルは、符号化テーブル（図６参照）と略同内容であり、かかる復号テーブルを二次元コードリーダーに記憶しておけば、二次元コード１に記録される全てのセットのサブセルレベルデータＡ１，Ａ２，Ａ３を復号できる。一方で、本実施例にあっては、二次元コードリーダーに記憶する復号テーブルの内容を制限することによって、読取り可能なサブセルレベルデータを制限することができる。例えば、図７（ｂ）に示す復号テーブルでは、符号化データ（可変部１２の配色パターン）に対して、２セット目のサブセルレベルデータについての復号データしか対応付けされていない。このため、かかる復号テーブルを記憶した二次元コードリーダーでは、２セット目のサブセルレベルデータしか復号することができなくなる。このように、本実施例の二次元コード１では、二次元コードリーダーに記憶させる復号テーブルを選別することによって、読取可能なサブレベルデータを制限し、秘匿情報のアクセスレベルを設定することが可能となる。
【００６３】
以上の二次元コード１の生成方法及び読取り方法からわかるように、本実施例の二次元コード１は、１個の拡張セル２ｂに、１セットのセルレベルデータ１ビットと３セットのサブセルレベルデータを１ビットずつ記録する。セルレベルデータは、ＱＲコードの規格に準じて二次元コード化されて、拡張セル単位の色によって記録されているため、既存のＱＲコードリーダーで読取ることができるが、サブセルレベルデータは、サブセル単位の配色パターンを識別でき、なおかつ、符号化テーブルに対応する復号テーブルを記憶した専用の読取装置でなければ読み取ることができない。
【実施例２】
【００６４】
本実施例は、上記実施例１からデータの符号化方法を変更し、可変部１２の配色パターンが、誤り検出訂正符号のデータ部及び訂正符号部の１又は０に対応するようにしたものである。なお、データの符号化方法以外の構成は、上記実施例１と同じであるため、共通する構成については、共通符号を用いて詳細な説明を省略する。
【００６５】
具体的には、本実施例では、誤り検出訂正符号として、８ビット長の拡張ハミング符号を採用する。図８に示すように、拡張ハミング符号は４ビット長のデータ部（データビット）と、４ビット長の訂正符号部（訂正ビット及びパリティビット）の８ビットで構成され、１ビットの誤り訂正能力を有し、２ビットの誤り検出能力を有している。本実施例では、上記実施例１の符号化テーブル（図６参照）を、図９に示す符号化テーブルに変更することで、可変部１２の８個のサブセル１０の配色を、この８ビット長の拡張ハミング符号の０と１とに対応させる。このように、本実施例では、可変部１２の配色パターンを誤り検出訂正符号に対応させることにより、サブセル１０の色の識別を誤った時に、拡張セル単位での誤り訂正や誤り検出を可能とし、拡張セル２ｂのセル単位の配色やサブセル単位の配色をより確実に識別し得るようになっている。
【００６６】
ここで、８ビット長の拡張ハミング符号は、図８に示すように１６通りの配列が存在するが、本実施例では、この中で、全てが０、または全てが１となる配列を使用せず、１４通りの配列を使用するようにしている。この１４通りの配列は、図８に示すように、８ビット中の４ビットが「１」で、残りの４ビットが「０」となる配列であるから、この１４通りの配列に対応した可変部１２の配色パターンでは、常に白色のサブセルが４個、黒色のサブセルが４個となる。このため、かかる構成にあっては、３個以上のサブセル１０で色の読取りエラーが発生した場合でも、白色と黒色のサブセル１０が４個ずつにならない限りは、拡張セル単位で読取りエラーを検出できるという利点がある。色の読取りエラーは、汚れ等によって黒色又は白色の数が増える方向に生じるため、本構成によれば、殆ど全ての読取りエラーを検出可能となる。また、本実施例では、可変部１２を構成するサブセル１０が全て白色、又は全て黒色となるとなる配列を除くことで、実施例１の拡張セル２ｂと同様に、拡張セル２ｂを構成するサブセル１０の７５％（１２個）が常にセル色となるよう構成している。
【００６７】
ここで、実施例２の二次元コードのように、可変部１２の配色パターンが拡張セル２ｂ単位で誤り訂正検出符号に対応する場合は、読み取りエラーが検出された拡張セル２ｂについて、乱数に基づいてセル単位の色（セル色）を推定し、セルレベルデータの読取りを行う。通常のＱＲコードにも、汚れがあっても読み取れるようにするために、データに誤り検出訂正機能が付加されている。しかしながら、かかる誤り検出訂正機能は、データセット単位で読み取りエラーを検出・訂正するものであるため、どのセルで読取りエラーが生じたのかは、二次元コードを復号する段階では判別できない。これに対して、本実施例の二次元コードでは、どの拡張セル２ｂで読取りエラーが発生したかを判別できる。このため、本実施例では、読み取りエラーが検出された拡張セル２ｂについては、確度に基づいて乱数により推測したセル色を埋めてやることにより、誤り訂正レベルを向上できるという利点がある。具体的には、ＱＲコードは、白と黒のセル数が略等しくなるように調整されているから、ある拡張セル２ｂで読取りエラーが検出された場合は、当該拡張セル２ｂのセル色を、乱数によって５０％の確率で白色又は黒色と推定する。このようにすれば、例えば、拡張セルの６０％で読取りエラーが検出された場合でも、エラーが検出された拡張セルの半分を白色、残り半分を黒色と推測してセル色として埋めてやれば、エラーが検出された拡張セル２ｂが全体の６０％でも、その半分の３０％の拡張セル２ｂでは正しいセル色が推定され、エラーが検出されなかった４０％の拡張セル２ｂと合わせて７０％の拡張セル２ｂで正しいセル色となる。このため、実施例２の二次元コードにあっては、データの誤り検出訂正機能の誤り訂正率が３０％の仕様であれば、拡張セル２ｂの６０％で読取りエラーが生じても、セルレベルデータを正しく読み取ることができる。
【００６８】
また、上記のように、読取りエラーの生じた拡張セル２ｂについてセル色を推定する場合は、誤り訂正率を高めるため、乱数によるセル色の推定を所定回数を上限として繰り返す。上述のように、一回の試行だと、エラーが検出された拡張セル２ｂのうち、正しいセル色を推定できる割合（正答率）の期待値は５０％程度であるが、この正答率は確率分布に従うため、試行を繰り返すと正答率の高いものを得ることができる。図１０は、誤り検出した拡張セルの数を４００個、各拡張セル２ｂについてセル色を正しく推定できる確率が５０％の場合に、セル色を正しく推定できるセルの割合（正答率）と、１回の試行でその正答率が得られる確率と、その正答率が得られる試行回数期待値を示したものである。図１０に示されるように、かかる場合であれば、１回の試行で５６％以上の正当率が得られる確率は１％未満であるが、約１００回程度の試行を繰り返せば、１００％に近い確率で５６％以上の正当率を得ることができる。
【００６９】
次に、実施例２の二次元コードを読み取る際の読取方法を、図１１を用いて説明する。
まず、最初のステップＳ３００では、二次元コードを照らす第一の投光装置を点灯する。第一の投光装置は通常のＱＲコードの読取時に用いられる程度の照度である。次に、ステップＳ３１０では、第一の投光装置による照明下で、撮像装置によって二次元コードを撮像する。次に、ステップＳ３２０では、撮像した画像データを解析して、拡張セル２ｂが存在するか否かを判定する。この判定では、セルの色が一様であるか否かによって拡張セル２ｂの存在を判定してもよいが、実施例２の二次元コードでは、前記識別コード８ａの有無によって拡張セル２ｂの存在を容易に判定できる。そして、判定の結果、拡張セル２ｂが存在しない二次元コード、すなわち通常のＱＲコードであると判断した時には、ステップＳ３３０に進み、通常のＱＲコードの読取処理を行い、ＱＲコードに記録されたデータの読み取って二次元コードの読取りを終了する。このＱＲコードの読取処理は公知であるため、詳細な説明は省略する。一方、ステップＳ３２０において、拡張セル２ｂが存在すると判断した場合には、ステップＳ３４０に進み、第二の投光装置を点灯する。第二の投光装置は第一の投光装置より大きな照度を実現する。そして、ステップＳ３５０において、第二の投光装置の照明下で二次元コードを再度撮像する。このとき、ステップＳ３１０に比べて、照度を大きくした分だけ露光時間を短縮して撮像時の手振れの影響を低減させる。次に、ステップＳ３６０では、撮像した画像から通常の画像識別方法によって二次元コードを識別し、セルの切り出しを行う。具体的には、符号化領域４の各セル２ａ，２ｂについて、画像から該当するピクセルデータを抽出する。
【００７０】
次に、ステップＳ５００では、抽出したセル２ａ，２ｂごとのピクセルデータを解析するセル復号処理を行う。図１２は、セル復号処理の詳細な手順を示すフローチャートである。セル復号処理では、まず、ステップＳ５１０で、抽出したセル２ａ，２ｂの画像データからサブセル１０を切り出す。具体的には、セル２ａ，２ｂの画像を縦横４列のマトリクス状に分割し、それぞれのサブセル１０の配色を識別する。この場合、サブセル１０の境界線を引いて上記分割を補正してもよい。次に、ステップＳ５２０では、可変部１２に相当する部分のサブセル１０を切り出す。次に、ステップＳ５３０では、セル２ａ，２ｂのセル色が明色と暗色のいずれであるかを識別する。この時、セル色を正しく識別し得るように、セル２ａ，２ｂの中央部の色を重視する。次のステップＳ５４０では、ステップＳ５３０で判定したセル色が白色（明色）か黒色（暗色）かを判定し、黒色の場合にはステップＳ５５０に進み、ステップＳ５２０で切り出した可変部１２のサブセル１０の配色を反転させる。次にステップＳ５６０では、セル２ａ，２ｂが機能パターンを構成する通常セル２ａであるか否かを判定し、機能パターン３を構成するセル２ａであると判定した場合は、当該セル２ａは、サブセル１０を含まない通常セルであるため、そのままセル復号処理を終了する。ステップＳ５６０で機能パターン３を構成するセル２ａでないと判定した場合は、ステップＳ５７０で、可変部１２の配色パターンについて、誤り検出訂正処理を行う。この処理は、可変部１２を構成するサブセル１０の白色と黒色を０と１に読み替え、拡張ハミング符号による誤りの検出と訂正を行う。かかる処理では、１ビットの誤りの場合には正しい配色パターンに訂正する。また、２ビットの誤りの場合には誤りが存在することを検出し、識別する。また、可変部１２が、白色のサブセルが４個、黒色のサブセルが４個の配色パターンであるので、３ビット以上の誤りが発生した場合でも、０と１が各４ビットずつの符号にならない場合も、誤りとして検出する。次に、ステップＳ５８０では、Ｓ５７０で誤りを検出したか否かを判別する。ここで、１ビット誤りであって誤り訂正がなされた場合には、誤りを検出していないと判断する。ここで、誤りを検出したと判断した場合には、ステップＳ５９５に進み、当該セル（Ｉ，Ｊ）について、誤りが発生している旨のフラッグを立てて、配色推定値を設定して、セル復号処理を終了する。ここで、配色推定値は、確実な判定ができないが、識別したサブセルの色の状況から、セル色が白色または黒色の可能性が高いと判断できる場合に設定する。例えば、セルの色が全く推定できない場合は、例えば０．５とし、白の可能性が高い場合は０．３、黒の可能性が高い場合には０．８など、状況に応じた推定値を設定する。一方、ステップＳ５８０において、誤り検出せずと判断した場合には、ステップＳ５９０に進み、予め記憶された復号テーブルに基づいて、可変部１２に記録された３ビットのデータを復号する。具体的には、符号化テーブル（図９参照）と略同じ内容の復号テーブルを参照して、例えば黒白黒などの復号データを得る。つまり、Ｃ（Ｉ，Ｊ，Ｋ）（Ｋは１，２，３）を得る。これによって、着目するセルについて復号が終了したので、当該セルについての復号処理を終了する。
【００７１】
図１１に示すように、セル復号処理（Ｓ５００）が終わると、ステップＳ３７０に進み、すべてのセル２ａ，２ｂについて、復号処理が終了したか否かを判別し、終了していない場合には、ステップＳ３６０に戻り、残りのセル２ａ，２ｂの切り出しと復号を行う。一方、ステップＳ３７０で、全てのセル２ａ，２ｂについてセル復号処理が終了したと判定した場合は、ステップＳ３８０に進み、各拡張セル２ｂについて、可変部１２の配色パターンを復号したデータをつなぎあわせて、サブセルデータＤＳ１，ＤＳ２，ＤＳ３を記録するＱＲコードＡ１，Ａ２，Ａ３のデータを得る。そして、ステップＳ３９０では、これらのＱＲコードＡ１，Ａ２，Ａ３を、通常のＱＲコードの復号手順にしたがって、サブセルレベルデータＤＳ１、ＤＳ２，ＤＳ３に復号する。なお、ＱＲコードＡ１，Ａ２，Ａ３には、誤り検出訂正機能が含まれているため、セル復号処理でエラーが検出されたセルの数が許容範囲であれば、かかるステップＳ３９０において誤り訂正を行うことができる。そして、次のステップＳ４００では、各セル２ａ，２ｂについて、セル単位で識別した配色パターンを繋ぎ合わせて、セルレベルデータＤＳ０を記録するＱＲコードＡ０のデータを得る。そして、次のステップＳ６００では、かかるＱＲコードＡ０を復号してセルレベルデータＤＳ０を得るセルレベルデータ復号処理を行い、二次元コードの読取りを終了する。
【００７２】
図１３は、セルレベルデータ復号処理の詳細な手順を示すフローチャートである。セルレベルデータ復号処理では、まず、ステップＳ６１０で、復号の試行回数を初期値に設定する。ステップＳ６２０では、乱数を発生させる。ここで、乱数は例えば、０から１までの値を発生させる。ステップＳ６３０では、セル復号処理（図１１、Ｓ５００）で誤りが検出された拡張セル２ｂについて、配色推定値と乱数値とを比較してセル色を確率的に推定する。すなわち、配色推定値より乱数値が小さければ白色、大きければ黒色と推定し、推定した色をセル色として設定する。例えば、配色推定値が０．３の時に、乱数値が０．６であれば黒色と設定し、乱数値が０．２であれば白色と設定する。これにより、当該セルのセル色は配色推定値に比例した出現確率で設定される。次に、ステップＳ６４０では、全ての誤り検出セルについてセル色を設定したか否かを判定し、配色未設定の誤り検出セルがあると判定した場合は、ステップＳ６２０，Ｓ６３０を繰り返す。一方、全ての誤り検出セルについてセル色設定済みと判定した場合は、ここまでの処理で、セル色を誤りなく識別できた拡張セル２ｂと誤りを検出したセル２ｂの双方について配色を設定したので、ステップＳ６５０で、これらの配色から得られたコードＡ０の復号を行い、セルレベルデータＤＳ０を得る。ステップＳ６５０での復号は通常のＱＲコードの復号処理と同じであり、ＱＲコードＡ０の誤り検出訂正機能に基づいてデータ単位での誤り訂正と誤り検出が行われ、セルレベルデータＤＳ０を正常に復号できたか否かが判定される。そして、ステップＳ６６０では、ＱＲコードＡ０を誤り検出なく、又は、誤りを訂正して、セルレベルデータＤＳ０の復号に成功したか否かを判定する。そして、セルレベルデータＤＳ０の復号に成功したと判定した場合は、セルレベルデータ復号処理を終了する。一方、セルレベルデータＤＳ０の復号に失敗したと判定した場合は、ステップＳ６１０で設定した試行回数に達したか否かを判定し、設定試行回数に達したと判定した場合は、復号不可能であるとして、セルレベルデータ復号処理を終了する。一方、設定試行回数に達していないと判定した場合は、ステップＳ６２０に移行して、セルレベルデータＤＳ０の復号に成功するか、設定試行回数に達するまでステップＳ６２０〜６５０の処理を繰り返す。
【００７３】
なお、図１１〜１３のフローチャートに示す二次元コードの生成方法にあって、
本発明に係る撮像ステップは、ステップＳ３００，３１０，３４０，３５０によって主に実現される。特に、第一の撮像ステップは、ステップＳ３００，３１０によって主に実現され、第二の撮像ステップは、ステップＳ３４０，３５０によって主に実現される。また、本発明に係る拡張セル判別ステップは、ステップＳ３２０によって主に実現される。また、本発明に係る第一復号ステップは、ステップＳ３３０によって主に実現される。また、本発明に係る第二復号ステップは、ステップＳ３６０〜４００，５００，６００によって主に実現される。特に、本発明に係る色識別ステップは、ステップＳ３６０〜３７０によって主に実現される。また、本発明に係るサブセル復号ステップは、ステップＳ５００，３８０，３９０によって主に実現される。また、本発明に係るセル復号ステップは、ステップＳ４００，６００によって主に実現される。また、本発明に係る読取りエラー記録処理は、ステップＳ５７０，５８０，５９５によって主に実現される。また、本発明に係るセル色推定処理は、ステップＳ６２０，６３０によって主に実現される。
【００７４】
以上のように、本発明の実施形態を実施例によって説明したが、本発明は、上記実施例の形態に限らず本発明の要旨を逸脱しない範囲内において種々変更を加えることができる。
【００７５】
例えば、図１４は、拡張セルの変形例を示したものである。図１４（ａ）の拡張セル２ｃでは、可変部１２ａのサブセル１０が、隣接するサブセル同士で４対のペアを形成し、一対のサブセル１０を一単位として白色又は黒色に配色される。そして、可変部１２ａは、隣接する拡張セル２ｃの可変部１２ａとペアを形成し、二つの可変部１２ａの８対（１６個）のサブセル１０の配色パターンによって、１ビットのサブセルレベルデータを記録するよう構成される。また、図１４（ｂ）の拡張セル２ｄは、図１４（ａ）の拡張セル２ｃをさらに変更したものである。具体的には、本変形例の拡張セル２ｄでは、可変部１２ｂのサブセル１０が、隣接するサブセル同士で２対のペアを形成し、一対のサブセル１０を一単位として白色又は黒色に配色される。そして、可変部１２ｂは、連続する４個の拡張セル２ｃの可変部１２ｂとグループを形成し、４つ可変部１２ａの８対（１６個）のサブセル１０の配色パターンによって、１ビットのサブセルレベルデータを記録するよう構成される。このように、本発明の二次元コードは、拡張セル一個単位でなく、複数の拡張セル単位で、１ビットのサブセルレベルデータを記録することもできる。また、本発明に係るサブセルレベルデータは、サブセル一個単位の配色パターンに限らず、サブセル複数個単位の配色パターンで記録することもできる。
【００７６】
また、図１４（ｃ）の拡張セル２ｅは、８個のサブセル１０によって構成される第一可変部１２ｃと、４個のサブセル１０によって構成される第二可変部１２ｄとを備えている。第一可変部１２ｃは、上記実施例の可変部１２に相当するものであり、８個のサブセル１０の配色パターンによって、サブセルレベルデータを１ビット単位で記録する。一方、第二可変部１２ｄは、隣接する拡張セル２ｅの第二可変部１２ｄとペアを形成し、二つの可変部１２ｄの計８個のサブセル１０の配色パターンによって、１ビットのサブセルレベルデータを記録するよう構成される。このため、かかる変形例では、上記実施例に比べて、１．５倍のサブセルレベルデータを拡張セルに記録することができる。このように、本発明に係る拡張セルには、サブセルレベルデータを複数ビット記録することもできる。
【００７７】
また、上記実施例の二次元コードは、１〜３セットのサブセルレベルデータを記録可能なものであるが、本発明の二次元コードに記録可能なサブセルレベルデータは、１セットだけであってもよいし、４セット以上であってもよい。また、上記実施例は、ＱＲコードと互換性を有するものであるが、本発明は、ＱＲコード以外の規格の二次元コードと互換性を持たせることも可能である。また、上記実施例では、拡張セル２ｂが縦横４列のサブセル１０で構成されていたが、本発明に係る拡張セルは、拡張セルを分割するマトリクスのサイズは、５×５、６×６など適宜変更可能である。また、拡張セル２ｂの固定部１１と可変部１２の位置も上記実施例から適宜変更可能である。また、上記実施例では、可変部１２を構成する８個のサブセル１０のうち４個のサブセル１０を拡張セル単位の色（セル色）と反対色に配色しているが、反対色にするサブセル１０の割合は、セル単位やサブセル単位の色の識別に支障がでない範囲内で適宜変更できる。また、本発明の二次元コードを生成方法では、適宜マスク処理を行うことができる。
【符号の説明】
【００７８】
１  二次元コード
２ａ  通常セル（セル）
２ｂ，２ｃ，２ｄ，２ｅ  拡張セル（セル）
３  機能パターン（固定領域）
４  符号化領域
５  位置検出パターン
６  分離パターン
７  タイミングパターン
８  データコード領域
８ａ  識別コード
９  形式情報コード領域
１０  サブセル
１１  固定部
１２，１２ａ，１２ｂ，１２ｃ，１２ｄ  可変部
【図１】
2014085777.tif 000003
【図２】
2014085777.tif 000004
【図３】
2014085777.tif 000005
【図４】
2014085777.tif 000006
【図５】
2014085777.tif 000007
【図６】
2014085777.tif 000008
【図７】
2014085777.tif 000009
【図８】
2014085777.tif 000010
【図９】
2014085777.tif 000011
【図１０】
2014085777.tif 000012
【図１１】
2014085777.tif 000013
【図１２】
2014085777.tif 000014
【図１３】
2014085777.tif 000015
【図１４】
2014085777.tif 000016