(57)【要約】【課題】データが埋め込まれる領域において冗長な構造の２次元コード、その２次元コードを生成するための２次元コード生成方法、２次元コード生成装置、プログラム及び記憶媒体を提供する。【解決手段】型番、マスクパターン、誤り訂正レベル、埋め込むデータ（データコード語）、埋め草コード語（さらには誤り訂正語を含む）で構成されている２次元コードにおいて、データコード語を構成する複数のセグメントに秘匿情報をメタデータとして埋め込んだり、このセグメントの構成する位置によってモジュールパターンを数パターン生成したりすることができるようにする。【選択図】図５
2014203380.tif 000002
【特許請求の範囲】
【請求項１】
複数のセグメントに分割してデータが埋め込まれたコード語を有する２次元コードであって、
前記コード語には、前記複数のセグメントのメタデータに秘匿情報が埋め込まれていることを特徴とする２次元コード。
【請求項２】
前記複数のセグメントの構造は、前記秘匿情報を表現した構造であることを特徴とする請求項１に記載の２次元コード。
【請求項３】
前記秘匿情報は、前記セグメントのモードに表される情報であることを特徴とする請求項２に記載の２次元コード。
【請求項４】
前記秘匿情報は、前記セグメントの文字数に表される情報であることを特徴とする請求項２に記載の２次元コード。
【請求項５】
前記２次元コードは、特定の形状を表現したモジュールパターンを含むことを特徴とする請求項１〜４の何れか１項に記載の２次元コード。
【請求項６】
複数のセグメントに分割してデータが埋め込まれたコード語を有する２次元コードであって、
特定の形状を表現したモジュールパターンを構成するためのセグメントの構造を含むことを特徴とする２次元コード。
【請求項７】
公開情報としてのデータ、秘匿情報及び画像を入力する入力工程と、
セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した２次元コードを生成する解候補生成工程と、
前記解候補生成工程において生成された解候補が前記画像と類似しているか否かを、少なくとも１つの目的関数に基づいて評価する解候補評価工程とを有し、
前記解候補生成工程においては、前記解候補評価工程における評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、
前記解候補評価工程においては、前記解候補生成工程において生成された新たな解候補について評価することを特徴とする２次元コード生成方法。
【請求項８】
前記解候補評価工程においては、前記画像との類似度を算出して類似しているか否か、を評価することを特徴とする請求項７に記載の２次元コード生成方法。
【請求項９】
前記解候補生成工程においては、前記解候補評価工程における評価に応じて、前記複数の構成要素と、前記算出した類似度とに基づいた新たな解候補を生成することを特徴とする請求項７に記載の２次元コード生成方法。
【請求項１０】
公開情報としてのデータ、秘匿情報及び画像を入力する入力手段と、
セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した２次元コードを生成する解候補生成手段と、
前記解候補生成手段によって生成された解候補が前記画像と類似しているか否かを、少なくとも１つの目的関数に基づいて評価する解候補評価手段とを有し、
前記解候補生成手段は、前記解候補評価手段による評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、
前記解候補評価手段は、前記解候補生成手段によって生成された新たな解候補について評価することを特徴とする２次元コード生成装置。
【請求項１１】
請求項７〜９の何れか１項に記載の２次元コード生成方法の各工程をコンピュータに実行させることを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、秘匿情報を格納するために用いて好適な２次元コード、２次元コード生成方法、２次元コード生成装置、プログラム及び記憶媒体に関する。
【背景技術】
【０００２】
近年、ＱＲコード（登録商標）に代表される２次元コードは、電子チケットに用いられるなど、用途が多角化し、金銭的な価値を持つ認証に使われ始めている。これに対し、悪意のあるＵＲＬを含んだ２次元コードを偽造し、他の２次元コード上に貼りつけるなどして、フィッシングサイトに誘導するなど、２次元コードを利用した事件が起きている。
【０００３】
しかしながら、一般の２次元コードは偽造や複製への対策が取られておらず、偽造や複製を防止する手法の開発が要求されている。２次元コードの偽造を防止する手段として、格納データを暗号化する方法がある。しかし、それらの２次元コードを一般のデコーダで読み取った場合、提示される情報は意味不明な文字の羅列となる。そのため、ユーザに不信感を与えるという問題がある。
【０００４】
また、２次元コードの埋め草コードに秘匿情報を埋め込む手法も提案されている（例えば、特許文献１参照）。２次元コードは型番によってデータ長が定められており、埋め込むデータのサイズがデータ長よりも小さい場合、足りない部分には埋め草コードが埋められる。この埋め草コードを秘匿したいデータと置き換えることにより、一般のデコーダでは読み取ることのできない秘匿情報を２次元コードに埋め込むことを可能としている。しかしながらこの手法では、埋め草コードが秘匿情報となっているため、そのことを知っている場合には秘匿情報を容易に抽出することができてしまう。
【０００５】
一方、２次元コードの普及は急速に進み、広告媒体として視覚的誘因生が低下している傾向にある。このため、近年、視覚的誘因性を向上させるために、２次元コードの内部に写真やイラストを組み込んだ装飾性の高い２次元コードが提案されている。このように２次元コードの装飾性を高めることにより、読み取る前から２次元コードに格納された情報を識別しやすくしたり、視認性を向上させてオリジナリティを演出したりすることができる。
【０００６】
ところが、写真やイラストを組み込むと、組み込んだ箇所の情報が隠蔽されるため、２次元コードを読み取る際に誤り訂正機能を用いて復号を行う必要がある。このように写真やイラストの大きさや配置位置に制限があるため、２次元コード上での写真やイラストを配置する位置を最適化して、装飾性と可読性とを両立させる必要がある。そのため、埋め草コード語の領域を制御したり、誤り訂正語の領域を変形対象としたりするなど、モジュールパターンを変更する方法が制限されており、データが埋め込まれた領域のモジュールパターンを変更することが難しかった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−８９１７７号公報
【特許文献２】特開２０１３−２５４７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は前述の問題点に鑑み、データが埋め込まれる領域において冗長な構造の２次元コード、その２次元コードを生成するための２次元コード生成方法、２次元コード生成装置、プログラム及び記憶媒体を提供することを目的としている。
【課題を解決するための手段】
【０００９】
本発明の２次元コードは、複数のセグメントに分割してデータが埋め込まれたコード語を有する２次元コードであって、前記コード語には、前記複数のセグメントのメタデータに秘匿情報が埋め込まれていることを特徴とする。
【００１０】
本発明の２次元コード生成方法は、公開情報としてのデータ、秘匿情報及び画像を入力する入力工程と、セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した２次元コードを生成する解候補生成工程と、前記解候補生成工程において生成された解候補が前記画像と類似しているか否かを、少なくとも１つの目的関数に基づいて評価する解候補評価工程とを有し、前記解候補生成工程においては、前記解候補評価工程における評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、前記解候補評価工程においては、前記解候補生成工程において生成された新たな解候補について評価することを特徴とする。
【００１１】
本発明の２次元コード生成装置は、公開情報としてのデータ、秘匿情報及び画像を入力する入力手段と、セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した２次元コードを生成する解候補生成手段と、前記解候補生成手段によって生成された解候補が前記画像と類似しているか否かを、少なくとも１つの目的関数に基づいて評価する解候補評価手段とを有し、前記解候補生成手段は、前記解候補評価手段による評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、前記解候補評価手段は、前記解候補生成手段によって生成された新たな解候補について評価することを特徴とする。
【００１２】
本発明のプログラムは、前記２次元コード生成方法の各工程をコンピュータに実行させることを特徴とする。
【００１３】
本発明の記憶媒体は、前記プログラムを記憶したことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、データが埋め込まれる領域において冗長な構造を有することにより、秘匿情報を簡単に読み取れないようにしたり、装飾性を向上させたりすることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る２次元コード生成装置のハードウェア構成例を示すブロック図である。
【図２】本発明の実施形態に係る２次元コード生成装置の機能構成例を示すブロック図である。
【図３】一般的な２次元コードのデータ構造例を示す図である。
【図４】一般的なセグメントの構造例を示す図である。
【図５】本発明の実施形態における冗長性を持たせたセグメントの構造例を示す図である。
【図６】本発明の実施形態において、秘匿情報をセグメントに埋め込んだ場合のセグメントの構造例を示す図である。
【図７】本発明の実施形態において、秘匿情報をセグメントに埋め込んだ場合のセグメントの他の構造例を示す図である。
【図８】本発明の実施形態において、初期集団として複数パターンの２次元コードを生成する処理手順の一例を示すフローチャートである。
【図９】誤り訂正レベルの一覧を示す図である。
【図１０】本発明の実施形態において、遺伝的アルゴリズムにより出力する２次元コードを生成する処理手順の一例を示すフローチャートである。
【図１１】入力される画像の目標領域、境界領域及び背景領域を説明する図である。
【図１２】Genotype及びPhenotypeを説明する図である。
【図１３】イラストを貼り付けた２次元コード及びイラストに類似したパターンの２次元コードの一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照しながら説明する。本実施形態では、２次元コードの１種であるＱＲコードを参照しながら説明する。
【００１７】
図１は、本実施形態に係る２次元コード生成装置１００のハードウェア構成例を示すブロック図である。
図１において、ＣＰＵ１０１は、２次元コード生成装置１００全体を制御するものであり、必要な時にＲＯＭ１０３に記憶されたプログラムを読み出してＲＡＭ１０２に展開し、本実施形態に係る処理を実行する。入力装置１０４は、着脱可能なメモリカードなどの記録媒体を装着することができ、２次元コードに埋め込むデータ及び秘匿情報を入力したり、セルパターンとして形成させたい写真やイラストを入力したりする。
【００１８】
操作部１０５は、ユーザの操作に応じてコマンドを入力する操作部材である。記憶装置１０６は例えばハードディスクであり、データを記憶するためのものである。画像表示装置１０７は例えば液晶ディスプレイであり、２次元コードを生成できない旨のエラーなどを警告表示したり、２次元コードの条件等を設定するためのメニュー画面を表示したりする。ネットワークインタフェースカード（ＮＩＣ）１０８は、ＬＡＮ１１０を介して他の情報機器とデータをやり取りするためのインターフェースである。メインバス１０９は前述した各構成を接続するためのバスである。
【００１９】
図２は、本実施形態に係る２次元コード生成装置１００の機能構成例を示すブロック図である。
図２において、データ入力部２０１は、入力装置１０４、または外部装置からＬＡＮ１１０を介して２次元コードに埋め込むデータ（文字列）を入力する。２次元コードに秘匿情報を埋め込む場合には、秘匿情報も入力する。
【００２０】
解候補生成部２０２は、入力された文字列及び秘匿情報からコード語及びメタデータを生成し、データコード語、型番、誤り訂正レベル、マスクパターン、埋め草コード語などを変数として、２次元コードを複数パターン生成し、解候補記憶部２０６に記憶する。本実施形態では、データコード語において、冗長なセグメント構造とすることにより、秘匿情報をメタデータとして埋め込むことができるようにしている。なお、この冗長なセグメント構造については後述する。また、本実施形態では、詳細な説明は後述するが、このような複数の２次元コードから遺伝的アルゴリズムにより、秘匿情報を格納するとともに所望の写真やイラストを反映させた２次元コードを生成するようにする。
【００２１】
画像入力部２０３は、入力装置１０４、または外部装置からＬＡＮ１１０を介して写真やイラストなどの画像データを入力する。解候補評価部２０４は、解候補記憶部２０６に記憶された２次元コードと、画像入力部２０３により入力された画像データとを比較することにより、遺伝的アルゴリズムを用いて２次元コードを評価する。出力部２０５は、生成された２次元コードを出力する。
【００２２】
図３は、一般的な２次元コードのデータ構造例を示す図である。
図３に示すように、２次元コードのデータは、型番、マスクパターン、誤り訂正レベル、埋め込むデータ（データコード語）、埋め草コード語（さらには誤り訂正語を含む）で構成されている。埋め込むデータはさらに複数のセグメントから構成されており、数字モード、漢字モードなどモードによって分割されている。
【００２３】
例えば図４に示すように、「エンコードテストdummyURL-kadai.jp」という情報を２次元コードに埋め込む場合には、セグメント１には、カタカナ表記の８文字の「エンコードテスト」の情報が埋め込まれ、セグメント２には、アルファベット表記の１７文字の「dummyURL-kadai.jp」の情報が埋め込まれる。これらのセグメントに秘匿情報を埋め込むと、一般のデコーダでも各セグメントの情報を読み取ることができるため、秘匿情報が簡単に入手されてしまう。
【００２４】
図５は、本実施形態において、冗長性を持たせたセグメントの構造例を示す図である。
本実施形態では、セグメントのメタデータ（モード指示子やＥＣＩモード指示子、ＥＣＩ割当て番号など）として秘匿情報を埋め込む。この場合、一般のデコーダでは、セグメントのメタデータは復号の犀利に利用されるだけであり、最終的な復号結果には表れない。基本的に、公開情報を一般的な手順で符号化するだけでは、セグメントのメタデータで所望の秘匿情報を表現することはできない。本実施形態では、所望の秘匿情報とメタデータとが一致するように、本来は不要な冗長なセグメントの構造を生成する。そのために、例えば、通常は１つのセグメントで表現すべき文字列を故意に２つのセグメントに分けたり、図５に示すように、実際には何も情報を含まない文字数が０の空のセグメントを含ませたりすることにより実現する。
【００２５】
図６は、秘匿情報をセグメントに埋め込んだ場合のセグメントの構造例を示す図である。
図６に示す構造において、上段はセグメントの要素を示し、中段はビットを示し、さらに下段は秘匿情報を示している。図６に示す文字数０のセグメント１には、「８ビットバイト」のモードと「漢字」のモードとが存在し、これらのモードを示すモード指示子が秘匿情報を表している。一方、公開情報として埋め込まれているデータ部には、秘匿情報が埋め込まれていない。
【００２６】
図７は、秘匿情報をセグメントに埋め込んだ場合のセグメントの他の構造例を示す図である。
図７に示す例では、文字数指示子が秘匿情報を表しており、セグメント１の文字数指示子「１０１」、セグメント２の文字数指示子「０１０」、それ以降の文字数指示子を接続することにより、秘匿情報「１０１０１００．．．」を表している。なお、文字数指示子のビット数は、文字数指示子の下位２〜３ビット程度を用いる。
【００２７】
以上のように本実施形態では、本来は不要なセグメントの切り替えや文字数０のセグメントを設けることにより、冗長性を持たせたデータ構造としている。一方、セグメントに冗長性を持たせることによって埋め込むデータ（データコード語）を変数として、所望の写真やイラストに類似したモジュールパターンを含む２次元コードを生成することもできる。
【００２８】
写真やイラストを組み込むと、組み込んだ箇所の情報が隠蔽されるため、２次元コードを読み取る際に誤り訂正機能を用いて復号を行う必要がある。このように写真やイラストの大きさや配置位置に制限があるため、２次元コード上での写真やイラストを配置する位置を最適化して、装飾性及び可読性を両立させる必要がある。そこで本実施形態では、特許文献２で設計変数とされている２次元コードの埋め草コード語、誤り訂正語などのモジュールパターンに加えて、データコード語のセグメントの構造を設計変数として加える。これらの値の組み合わせを調整し、写真やイラスト等に類似するモジュールパターンを形成することにより装飾性及び可読性を確保する。
【００２９】
図８は、解候補生成部２０２により、初期集団として複数パターンの２次元コードを生成する処理手順の一例を示すフローチャートである。
まず、ステップＳ８０１において、２次元コードを生成する指示とともに、データ入力部２０１から公開情報である文字列のデータを入力するまで待機する。そして、文字列のデータを入力すると、ステップＳ８０２において、入力された文字列をもとに、コード語を生成する。このとき、データコード語については、秘匿情報が入力された場合に以下のような手順により生成する。
【００３０】
本実施形態では、図６に示したようなモード指示子が秘匿情報を表すパターンと、図７に示したような文字数指示子が秘匿情報を表すパターンとの２通りのデータコード語を生成することができる。また、これ以外に、文字数が０のセグメントを利用し、例えば、空でないセグメントを１とし、空のセグメントを０として、セグメントの順列により秘匿情報を表すことも可能である。そして、後述するステップＳ８０５において組み合わせを決定する際に、これらの数パターンの中から１つを選択する。
【００３１】
まず、モード指示子が秘匿情報を表すパターンの生成方法について説明する。モード指示子には、「８ビットバイト」のモード、「漢字」のモードの、「数字」のモード、及び「英数字」のモードが存在し、これらのモードの出現順序によって秘匿情報と対応付ける。このとき、データ部に埋め込む公開情報の字種の並びによっては、所望の秘匿情報を埋め込むことができない場合があるが、その際は文字数が０であるセグメント（空セグメント）を挿入する。
【００３２】
まず、長さがｎの秘匿情報のビット列を２ビットごとに区切り、２ビット組の順列Ｂ1、Ｂ2、・・・、Ｂ[n/2]を得る。そして、公開情報を一般的な方法により符号化し、セグメント列Ｓ1、Ｓ2、・・・、ＳNを得る。次に、ｉ＝１から順にＢiとＳiとを比較し、モード指示子が一致しているか否かを判定して、一致していない場合にのみ、Ｓiに空のセグメントを追加し、そのＳiのモード指示子をＢiのモード指示子に対応させる。以上のような手順によりｉ＝［ｎ／２］まで達した場合には、秘匿情報の終端を表すビット列を埋め込む。
【００３３】
次に、文字数指示子が秘匿情報を表すパターンの生成方法について説明する。以下の説明では、文字数指示子の下位２ビットを用いる例について説明する。まず、同一の文字モードでエンコードする最大文字数２pを決定し、埋め込む秘匿情報のビット列をｐビットごとに区切り、ｐビット組の順列Ｂ１、Ｂ２、・・・、Ｂ［ｎ／ｐ］に変換する。そして、注目する秘匿情報のビット組を示すｉ、及び注目するセグメントを示すｌを１に初期化する。
【００３４】
次に、セグメントｌの公開情報の注目する文字ｘからモード指示子を決定する。そして、Ｂiを１０進数に変換した値にｌを加算した値ｄを計算する。次に、公開情報がｘ文字からｘ＋ｄ文字まで、同一のモードで符号化できる場合は、ｄ文字からなるセグメントｌを生成する。そして、ｉおよびｌに１を加算し、ｘにｄを加算する。そして、ｉ が［ｎ／ｐ］に達した場合は、秘匿情報の終端を表すビット列を埋め込む。一方、ｉ＜［ｎ／ｐ］の場合は、上記手順を繰り返す。
【００３５】
一方、公開情報がｘ文字からｘ＋ｄ文字まで、同一のモードで符号化できない場合は、連続してエンコード可能な文字（ｄ′文字とする）を用いてセグメントｌを生成する。この場合、秘匿情報は埋め込まず、ｘにｄ′を加算して前述した手順に戻る。また、全ての公開情報を既に符号化済みの場合は、残りの秘匿情報について、モード指示子が秘匿情報を表すパターンの生成方法を用いて符号化する。
【００３６】
次に、ステップＳ８０３において、生成したコード語の先頭にモード指示子及び文字数指示子を付与する。そして、ステップＳ８０４において、生成したコード語の終端に終端ビットを付与する。
【００３７】
次に、ステップＳ８０５において、データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語の組合せをランダムに設定する。このとき、一度適用した組合せについては再度選択しないようにする。また、誤り訂正レベルについては、図９に示すように、Ｌ、Ｍ、Ｑ、Ｈの４段階に設定することが可能である。また、２次元コードの用途として、印刷物や物品などに用いられるような場合には、誤り訂正機能を大きくするために、初期設定として例えば、Ｑ、Ｈの２段階のみに設定するようにしてもよい。
【００３８】
次に、ステップＳ８０６において、ステップＳ８０５において設定された埋め草コード語を生成し、ステップＳ８０４で付与した終端ビットの後方に追加する。なお、埋め草コード語の長さは、２次元コードの型番及び誤り訂正レベルに基づいて決定される。また、型番によって残余コード語や残余ビットが必要な場合は、残余コード語や残余ビットを付加する。そして、設定された誤り訂正レベルの誤り訂正コード語を追加する。ここで、誤り訂正コード語は、データコード語、誤り訂正レベル、型番、入力された文字列のコード語、及び埋め草コード語により決定されるものである。したがって、誤り訂正コード語を変更することによって、これらの５つの要素の情報を変更することができる。本実施形態では、このように誤り訂正レベル、型番などを設計変数として取り扱うため、誤り訂正コード語の領域におけるセルの配置パターンも変更することができる。次に、ステップＳ８０７において、ステップＳ８０６までに生成されたビット列をブロック分割し、各ブロックにおいてＲＳ符号を生成する。
【００３９】
次に、ステップＳ８０８において、生成されたコード語を、ステップＳ８０５で設定された型番のシンボル上に配置する。本実施形態では、２値化を容易にして可読性を確保するためセルの色は白及び黒の２色を用いるものとする。そして、ステップＳ８０９において、ステップＳ８０５で設定されたマスクパターンに従ってマスク処理を行う。そして、ステップＳ８１０において、形式情報及び型番情報を２次元コードのシンボル上の所定の位置に配置し、初期集団としての２次元コードを生成する。
【００４０】
次に、ステップＳ８１１において、所定数の２次元コードが得られたか否かを判定する。この判定の結果、所定数の２次元コードが得られていない場合は、ステップＳ８０５に戻り、異なる組合せによりデータコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を設定する。一方、所定数の２次元コードが得られた場合は、初期集団生成部２０２による処理を終了する。なお、初期集団として必要な２次元コードの数は、後述する遺伝的アルゴリズムで用いるパラメータによって決定される。
【００４１】
次に、解候補評価部２０４の評価により、遺伝的アルゴリズムを用いて写真またはイラストの形状が反映された２次元コードを生成する方法について説明する。写真やイラストの形状を反映させるようにセルの配置パターンを変更すると、２次元コードの内部のデータが変更されるため、可読性が低下する。そこで、可読性を維持しつつ、セルの配置パターンを変更させるためには、２次元コードの内部の構成データを変更することが必要である。
【００４２】
そこで本実施形態では、構成要素として、セルの配置パターンに影響する誤り訂正レベル、マスクパターン、型番、埋め草コード語、及びデータコード語における空セグメントの位置や個数、空でないセグメントの分割の有無等を遺伝的アルゴリズムの設計変数とし、遺伝的アルゴリズムにより、入力された写真やイラストが反映された２次元コードを生成する。
【００４３】
図１０は、解候補評価部２０４において遺伝的アルゴリズムにより２次元コードの解候補を評価する処理手順の一例を示すフローチャートである。
まず、ステップＳ１００１において、画像入力部２０３から写真やイラストなどの画像データを入力する。
【００４４】
次に、ステップＳ１００２において、解候補評価部２０４は、解候補記憶部２０６に記憶されている２次元コードと、ステップＳ１００１で入力された画像データとを比較し、以下の式（１）及び式（２）により類似度を示す適応度Ｑ（Ｃ）を算出する。
【００４５】
【数１】
2014203380.tif 000003
【００４６】
【数２】
2014203380.tif 000004
【００４７】
ここで、Ｏ（ｘ，ｙ）は、２次元コードにおける実際の階調値であり、Ｔ（ｘ，ｙ）は、出力する２次元コードとして理想的な階調値である。また、Ｈ，Ｗはそれぞれ、縦及び横のピクセル数を示す。本実施形態では、閾値εは、入力された画像と類似するまで解候補の生成と評価とを繰り返し、類似しているとみなせる程度に小さい値に設定する。
【００４８】
また、ωは重み画像における階調値を示し、入力された画像から算出される値である。図１１に示すように、入力された画像においては、目標領域１１０１、境界領域１１０２及び背景領域１１０３に分かれる。階調値ωの算出方法は、これらの領域によって異なり、目標領域１１０１での階調値ωtarget、境界領域１１０２での階調値ωborder、及び背景領域１１０３での階調値ωbackは、以下の式（３）により算出される。
【００４９】
【数３】
2014203380.tif 000005
【００５０】
ここで、Ｓallは、２次元コードの面積であり、Ｓtargetは、画像内の主に表現したい目標領域６０１の面積である。また、Ｓbackは、その他の背景領域１１０３の面積である。
【００５１】
次に、ステップＳ１００３において、解候補評価部２０４は、解候補記憶部２０６に記憶されている２次元コードの中から、ランダムに２つの２次元コードを読み出す。そして、後述するステップＳ１００４での交叉及び突然変異により直前に生成された子の２次元コードを解候補記憶部２０６から読み出す。そして、子の２次元コード、及び読み出した２つの２次元コードを合わせた４つの中から最も適応度の高い２次元コードを選択し、さらに、ルーレットにより１つの２次元コードを選択する。ここで、ルーレットにより１つの２次元コードを選択する際に、適応度の高い順に比重を高く設定し、適応度の高い２次元コードほど高い確率で選択されるようにする。
【００５２】
次に、ステップＳ１００４において、解候補生成部２０２は、ステップＳ１００３で選択された２つの２次元コードを親とし、交叉により子個体を生成する。そして、生成した子個体の全ての遺伝子（データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語）に３％の突然変異を起こす。
【００５３】
図１２は、Genotype及びPhenotypeを説明する図である。
ステップＳ１００４における交叉及び突然変異では、図１２に示すように、Genotypeで表現してデータコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を操作する。この場合、誤り訂正レベル、マスクパターン及び型番は固定長であり、それぞれ２ビット、３ビット、６ビットである。一方、埋め草コード語は、型番、誤り訂正レベル及び埋め込まれたデータの文字数に依存するため、可変長である。交叉の方法としては、一様交叉を用いて子個体を生成する。また、突然変異では、設計変数となる各ビットにおいて３％の確率でビットの反転を行う。そして、ステップＳ１００５において、解候補生成部２０２は、生成した子個体をPhenotypeである２次元コードにエンコードし、解候補記憶部２０６に記憶する。
【００５４】
次に、ステップＳ１００６において、解候補評価部２０４は、遺伝子操作を繰り返した結果、適応度が所定値を上回る２次元コードが得られているか否かを判定する。この判定の結果、適応度が所定値を上回る２次元コードが得られている場合は入力画像と類似しているとみなし、ステップＳ１００７において、その２次元コードを出力部２０５から出力し、処理を終了する。出力方法としては、画像表示装置１０７に解候補である２次元コードを表示してもよく、ＬＡＮ１１０を介して外部装置に送信してもよい。
【００５５】
一方、ステップＳ１００６の判定の結果、適応度が所定値を上回る２次元コードが得られていない場合は類似していないとみなし、ステップＳ１００２に戻り、所望の２次元コードが得られるまで処理を繰り返す。以降、ステップＳ１００２では、子の２次元コードなど、適応度が算出されていない２次元コードのみ適応値を算出すればよい。
【００５６】
図１３（ａ）は、文字を貼り付けた２次元コードの一例を示す図であり、図１３（ｂ）は、本実施形態に係る方法により生成した２次元コードの一例を示す図である。図１３に示すように、本実施形態に係る方法により、「２」に類似するパターンにより２次元コードを生成することができる。
【００５７】
以上のように本実施形態によれば、データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を変数として、遺伝的アルゴリズムにより写真やイラストを最も反映させた２次元コードを生成することもできる。
【００５８】
なお、本実施形態では、遺伝的アルゴリズムにより写真やイラストを反映させた２次元コードを生成したが、解候補の生成と評価とを繰り返すアルゴリズムであれば、他のアルゴリズムを用いてもよい。このように試行錯誤的に解候補の生成及び評価を行うことにより最適化するアルゴリズムとしては、他に、ランダム法、シンプレックス法、山登り法、焼き鈍し法、タブー探索などの単点探索アルゴリズム、または、遺伝的アルゴリズム、粒子群最適化、蟻コロニー最適化などの多点探索アルゴリズムなどが挙げられる。
【００５９】
また、本実施形態では、初期集団の２次元コードを複数生成したが、アルゴリズムの種類によっては、初期集団の２次元コードの生成が不要である場合もある。このようなアルゴリズムを用いて解候補の生成と評価とを繰り返す場合には、図８に示す処理により初期集団として複数の２次元コードを生成しなくてもよい。
【００６０】
また、本実施形態では、目的となるイラスト等との類似性を目的関数としたが、目的となるイラスト等との類似性を第１目的関数、モジュールパターンの評価（同色の行・列の隣接モジュール、同色のモジュールブロック、行・列における１:１:３:１:１の比率の明暗パターン、全体に対する暗モジュールの占める割合）を第２目的関数とするなどして、多目的最適化を行っても良い（JIS X 0510:2004 P.45）。
【００６１】
さらに、本実施形態では、ＱＲコードの構造を例に説明したが、他の２次元コードについても同様に、シンボルを形成するパターンの生成に関連する構成要素を可変し、解候補の生成と評価とを繰り返すことにより同様の効果が得られる。
【００６２】
また、本実施形態では、データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を設計変数として設定したが、設計変数としてはこれらの５つ以外に、残余コード語、残余ビットなどを含めて設計変数としてもよい。
【００６３】
さらに本実施形態では、空セグメントの位置や個数、空でないセグメントの分割の有無等によりデータコード語を設計変数として設定したが、秘匿情報を含まないような場合であっても前述した手順で最終的な２次元コードを決定することができる。
【００６４】
（その他の実施形態）
前述した本発明の実施形態における２次元コード生成装置を構成する各手段、並びに２次元コード生成方法の各工程は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記憶したコンピュータ読み取り可能な記憶媒体は本発明に含まれる。
【００６５】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００６６】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図８及び図１０に示すフローチャートに対応したプログラム）を、システムまたは装置に直接、または遠隔から供給する場合も含む。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００６７】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００６８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００６９】
プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などもある。
【００７０】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。
【００７１】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００７２】
また、その他の方法として、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００７３】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００７４】
さらに、その他の方法として、記憶媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれ、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【符号の説明】
【００７５】
２０１  データ入力部
２０２  解候補生成部
２０３  画像入力部
２０４  解候補評価部
２０５  出力部
２０６  解候補記憶部
【図１】
2014203380.tif 000006
【図２】
2014203380.tif 000007
【図３】
2014203380.tif 000008
【図４】
2014203380.tif 000009
【図５】
2014203380.tif 000010
【図６】
2014203380.tif 000011
【図７】
2014203380.tif 000012
【図８】
2014203380.tif 000013
【図９】
2014203380.tif 000014
【図１０】
2014203380.tif 000015
【図１１】
2014203380.tif 000016
【図１２】
2014203380.tif 000017
【図１３】
2014203380.tif 000018