"データ及び画像を入力する入力工程と、セルの配置パターンの生成に関連する複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成工程と、前記解候補生成工程において生成された解候補が前記画像と類似しているか否かを評価する解候補評価工程とを有し、前記解候補生成工程においては、前記解候補評価工程において前記画像と類似していないと評価された場合に、前記複数の構成要素に基づいて新たな解候補を生成し、前記解候補評価工程においては、前記解候補生成工程において生成された新たな解候補について評価することを特徴とする2次元コード生成方法。前記解候補評価工程においては、前記画像との類似度を算出して類似しているか否かを評価することを特徴とする請求項1に記載の2次元コード生成方法。前記解候補生成工程においては、前記解候補評価工程において前記画像と類似していないと評価された場合に、前記複数の構成要素と、前記算出した類似度とに基づいて新たな解候補を生成することを特徴とする請求項2に記載の2次元コード生成方法。データ及び画像を入力する入力手段と、セルの配置パターンの生成に関連する複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成手段と、前記解候補生成手段によって生成された解候補が前記画像と類似しているか否かを評価する解候補評価手段とを有し、前記解候補生成手段は、前記解候補評価手段により前記画像と類似していないと評価された場合に、前記複数の構成要素に基づいて新たな解候補を生成し、前記解候補評価手段は、前記解候補生成手段によって生成された新たな解候補について評価することを特徴とする2次元コード生成装置。請求項1~3の何れか1項に記載の2次元コード生成方法の各工程をコンピュータに実行させることを特徴とするプログラム。請求項5に記載のプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。しかしながら、埋め草コード語の領域は、2次元コードに埋め込まれるデータ及び誤り訂正コード語の総数によって大きく異なる。したがって、データ量によっては、埋め草コード語の領域が相対的に小さくなる場合がある。また、前述したように、雑誌や名刺などの印刷媒体に用いる場合には、2次元コードの一部が損傷したり歪んだりすることを想定して誤り訂正レベルを大きくするため、相対的に埋め草コード語の領域が小さくなる。このような場合には型番を大きくするか、もしくは誤り訂正レベルを下げない限り写真やイラストに類似するセルパターンを形成することができないなど、制限が多いという問題点がある。さらに、誤り訂正コード語の領域は変形の対象としていない。本発明は前述の問題点に鑑み、目的とする画像やパターンに類似する2次元コードをより自由に生成できるようにすることを目的としている。本発明の2次元コード生成方法は、データ及び画像を入力する入力工程と、セルの配置パターンの生成に関連する複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成工程と、前記解候補生成工程において生成された解候補が前記画像と類似しているか否かを評価する解候補評価工程とを有し、前記解候補生成工程においては、前記解候補評価工程において前記画像と類似していないと評価された場合に、前記複数の構成要素に基づいて新たな解候補を生成し、前記解候補評価工程においては、前記解候補生成工程において生成された新たな解候補について評価することを特徴とする。本発明の2次元コード生成装置は、データ及び画像を入力する入力手段と、セルの配置パターンの生成に関連する複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成手段と、前記解候補生成手段によって生成された解候補が前記画像と類似しているか否かを評価する解候補評価手段とを有し、前記解候補生成手段は、前記解候補評価手段により前記画像と類似していないと評価された場合に、前記複数の構成要素に基づいて新たな解候補を生成し、前記解候補評価手段は、前記解候補生成手段によって生成された新たな解候補について評価することを特徴とする。本発明のプログラムは、前記2次元コード生成方法の各工程をコンピュータに実行させることを特徴とする。本発明の記憶媒体は、前記プログラムを記憶したことを特徴とする。本発明によれば、入力された画像に類似した2次元コードや指定されたパターンを含む2次元コードを生成することができる。以下、本発明の実施形態について、図面を参照しながら説明する。本実施形態では、2次元コードの1種であるQRコードを参照しながら説明する。図1は、本実施形態に係る2次元コード生成装置100のハードウェア構成例を示すブロック図である。図1において、CPU101は、2次元コード生成装置100全体を制御するものであり、必要な時にROM103に記憶されたプログラムを読み出してRAM102に展開し、本実施形態に係る処理を実行する。入力装置104は、着脱可能なメモリカードなどの記録媒体を装着することができ、2次元コードに埋め込むデータを入力したり、セルパターンとして形成させたい写真やイラストを入力したりする。操作部105は、ユーザの操作に応じてコマンドを入力する操作部材である。記憶装置106は例えばハードディスクであり、データを記憶するためのものである。画像表示装置107は例えば液晶ディスプレイであり、2次元コードを生成できない旨のエラーなどを警告表示したり、2次元コードの条件等を設定するためのメニュー画面を表示したりする。ネットワークインタフェースカードNIC108は、LAN110を介して他の情報機器とデータをやり取りするためのインターフェースである。メインバス109は前述した各構成を接続するためのバスである。図2は、本実施形態に係る2次元コード生成装置100の機能構成例を示すブロック図である。図2において、データ入力部201は、入力装置104、または外部装置からLAN110を介して2次元コードに埋め込むデータ文字列を入力する。解候補生成部202は、入力された文字列からコード語を生成し、型番、誤り訂正レベル、マスクパターン及び埋め草コード語を変数として、2次元コードを複数パターン生成し、解候補記憶部206に記憶する。本実施形態では、詳細な説明は後述するが、このような複数の2次元コードから遺伝的アルゴリズムにより、所望の写真やイラストを最も反映させた2次元コードを生成する。画像入力部203は、入力装置104、または外部装置からLAN110を介して写真やイラストなどの画像データを入力する。解候補評価部204は、解候補記憶部206に記憶された2次元コードと、画像入力部203により入力された画像データとを比較することにより、遺伝的アルゴリズムを用いて2次元コードを評価する。出力部205は、生成された2次元コードを出力する。図3は、解候補生成部202により、初期集団として複数パターンの2次元コードを生成する処理手順の一例を示すフローチャートである。まず、ステップS301において、2次元コードを生成する指示とともに、データ入力部201から文字列のデータを入力するまで待機する。そして、文字列のデータを入力すると、ステップS302において、入力された文字列をもとに、コード語を生成する。次に、ステップS303において、生成したコード語の先頭にモード指示子及び文字数指示子を付与する。そして、ステップS304において、生成したコード語の終端に終端ビットを付与する。次に、ステップS305において、可読性に影響がない誤り訂正レベル、マスクパターン、型番及び埋め草コード語の組合せをランダムに設定する。なお、一度適用した組合せについては再度選択しないようにする。誤り訂正レベルについては、図4に示すように、L、M、Q、Hの4段階に設定することが可能である。また、2次元コードの用途として、印刷物や物品などに用いられるような場合には、誤り訂正機能を大きくするために、初期設定として例えば、Q、Hの2段階のみに設定するようにしてもよい。次に、ステップS306において、ステップS305において設定された埋め草コード語を生成し、ステップS304で付与した終端ビットの後方に追加する。なお、埋め草コード語の長さは、2次元コードの型番及び誤り訂正レベルに基づいて決定される。また、型番によって残余コード語や残余ビットが必要な場合は、残余コード語や残余ビットを付加する。そして、設定された誤り訂正レベルの誤り訂正コード語を追加する。ここで、誤り訂正コード語は、誤り訂正レベル、型番、入力された文字列のコード語、及び埋め草コード語により決定されるものである。したがって、誤り訂正コード語を変更することによって、これらの4つの要素の情報を変更することができる。本実施形態では、このように誤り訂正レベル、型番などを設計変数として取り扱うため、誤り訂正コード語の領域におけるセルの配置パターンも変更することができる。次に、ステップS307において、ステップS306までに生成されたビット列をブロック分割し、各ブロックにおいてRS符号を生成する。次に、ステップS308において、生成されたコード語を、ステップS305で設定された型番のシンボル上に配置する。本実施形態では、2値化を容易にして可読性を確保するためセルの色は白及び黒の2色を用いるものとする。そして、ステップS309において、ステップS305で設定されたマスクパターンに従ってマスク処理を行う。そして、ステップS310において、形式情報及び型番情報を2次元コードのシンボル上の所定の位置に配置し、初期集団としての2次元コードを生成する。次に、ステップS311において、所定数の2次元コードが得られたか否かを判定する。この判定の結果、所定数の2次元コードが得られていない場合は、ステップS305に戻り、異なる組合せにより誤り訂正レベル、マスクパターン、型番及び埋め草コード語を設定する。一方、所定数の2次元コードが得られた場合は、初期集団生成部202による処理を終了する。なお、初期集団として必要な2次元コードの数は、後述する遺伝的アルゴリズムで用いるパラメータによって決定される。次に、解候補評価部204の評価により、遺伝的アルゴリズムを用いて写真またはイラストの形状が反映された2次元コードを生成する方法について説明する。写真やイラストの形状を反映させるようにセルの配置パターンを変更すると、2次元コードの内部のデータが変更されるため、可読性が低下する。そこで、可読性を維持しつつ、セルの配置パターンを変更させるためには、2次元コードの内部の構成データを変更することが必要である。そこで本実施形態では、構成要素として、セルの配置パターンに影響し、可読性に影響がない誤り訂正レベル、マスクパターン、型番及び埋め草コード語を遺伝的アルゴリズムの設計変数とし、遺伝的アルゴリズムにより、入力された写真やイラストが反映された2次元コードを生成する。図5は、解候補評価部204において遺伝的アルゴリズムにより2次元コードの解候補を評価する処理手順の一例を示すフローチャートである。まず、ステップS501において、画像入力部203から写真やイラストなどの画像データを入力する。次に、ステップS502において、解候補評価部204は、解候補記憶部206に記憶されている2次元コードと、ステップS501で入力された画像データとを比較し、以下の式1及び式2により類似度を示す適応度QCを算出する。ここで、Ox,yは、2次元コードにおける実際の階調値であり、Tx,yは、出力する2次元コードとして理想的な階調値である。また、H,Wはそれぞれ、縦及び横のピクセル数を示す。本実施形態では、閾値εは、入力された画像と類似するまで解候補の生成と評価とを繰り返し、類似しているとみなせる程度に小さい値に設定する。また、ωは重み画像における階調値を示し、入力された画像から算出される値である。図6に示すように、入力された画像においては、目標領域601、境界領域602及び背景領域603に分かれる。階調値ωの算出方法は、これらの領域によって異なり、目標領域601での階調値ωtarget、境界領域602での階調値ωborder、及び背景領域603での階調値ωbackは、以下の式3により算出される。ここで、Sallは、2次元コードの面積であり、Stargetは、画像内の主に表現したい目標領域601の面積である。また、Sbackは、その他の背景領域603の面積である。次に、ステップS503において、解候補評価部204は、解候補記憶部206に記憶されている2次元コードの中から、ランダムに2つの2次元コードを読み出す。そして、後述するステップS504での交叉及び突然変異により直前に生成された子の2次元コードを解候補記憶部206から読み出す。そして、子の2次元コード、及び読み出した2つの2次元コードを合わせた4つの中から最も適応度の高い2次元コードを選択し、さらに、ルーレットにより1つの2次元コードを選択する。ここで、ルーレットにより1つの2次元コードを選択する際に、適応度の高い順に比重を高く設定し、適応度の高い2次元コードほど高い確率で選択されるようにする。次に、ステップS504において、解候補生成部202は、ステップS503で選択された2つの2次元コードを親とし、交叉により子個体を生成する。そして、生成した子個体の全ての遺伝子誤り訂正レベル、マスクパターン、型番及び埋め草コード語に3の突然変異を起こす。図7は、Genotype及びPhenotypeを説明する図である。ステップS504における交叉及び突然変異では、図7に示すように、Genotypeで表現して誤り訂正レベル、マスクパターン、型番及び埋め草コード語を操作する。この場合、誤り訂正レベル、マスクパターン及び型番は固定長であり、それぞれ2ビット、3ビット、6ビットである。一方、埋め草コード語は、型番、誤り訂正レベル及び埋め込まれたデータの文字数に依存するため、可変長である。交叉の方法としては、一様交叉を用いて子個体を生成する。また、突然変異では、設計変数となる各ビットにおいて3の確率でビットの反転を行う。そして、ステップS505において、解候補生成部202は、生成した子個体をPhenotypeである2次元コードにエンコードし、解候補記憶部206に記憶する。次に、ステップS506において、解候補評価部204は、遺伝子操作を繰り返した結果、適応度が所定値を上回る2次元コードが得られているか否かを判定する。この判定の結果、適応度が所定値を上回る2次元コードが得られている場合は入力画像と類似しているとみなし、ステップS507において、その2次元コードを出力部205から出力し、処理を終了する。出力方法としては、画像表示装置107に解候補である2次元コードを表示してもよく、LAN110を介して外部装置に送信してもよい。一方、ステップS506の判定の結果、適応度が所定値を上回る2次元コードが得られていない場合は類似していないとみなし、ステップS502に戻り、所望の2次元コードが得られるまで処理を繰り返す。以降、ステップS502では、子の2次元コードなど、適応度が算出されていない2次元コードのみ適応値を算出すればよい。図8aは、文字を貼り付けた2次元コードの一例を示す図であり、図8bは、本実施形態に係る方法により生成した2次元コードの一例を示す図である。図8に示すように、本実施形態に係る方法により、2に類似するパターンにより2次元コードを生成することができる。以上のように本実施形態によれば、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を変数として、遺伝的アルゴリズムにより写真やイラストを最も反映させた2次元コードを生成するようにした。これにより、埋め草コード語の領域のみならず、誤り訂正コード語の領域なども組み替えることができ、より制約が少ない範囲で写真やイラストを反映させた2次元コードを生成することができる。なお、本実施形態では、遺伝的アルゴリズムにより写真やイラストを反映させた2次元コードを生成したが、解候補の生成と評価とを繰り返すアルゴリズムであれば、他のアルゴリズムを用いてもよい。このように試行錯誤的に解候補の生成及び評価を行うことにより最適化するアルゴリズムとしては、他に、ランダム法、シンプレックス法、山登り法、焼き鈍し法、タブー探索などの単点探索アルゴリズム、または、遺伝的アルゴリズム、粒子群最適化、蟻コロニー最適化などの多点探索アルゴリズムなどが挙げられる。また、本実施形態では、初期集団の2次元コードを複数生成したが、アルゴリズムの種類によっては、初期集団の2次元コードの生成が不要である場合もある。このようなアルゴリズムを用いて解候補の生成と評価とを繰り返す場合には、図3に示す処理により初期集団として複数の2次元コードを生成しなくてもよい。さらに、本実施形態では、QRコードを例に説明したが、他の2次元コードについても同様に、シンボルを形成するパターンの生成に関連する構成要素を可変し、解候補の生成と評価とを繰り返すことにより同様の効果が得られる。また、本実施形態では、可読性に影響のない誤り訂正レベル、マスクパターン、型番及び埋め草コード語を設計変数として設定したが、設計変数としてはこれらの4つ以外に、残余コード語、残余ビットなどを含めて設計変数としてもよい。一方、用途によって2次元コードが損傷したり歪んだりしない場合もあり、誤り訂正機能をあまり用いないような状況もある。さらに、写真やイラストによっては、アルゴリズムにより所望の2次元コードがなかなか得られないような場合もある。また、2次元コードの装飾以外の用途として、歪みに強い2次元コードを生成するなどの目的のために、2次元コードの全ての領域に特定パターンを埋め込みたい場合がある。このような条件を満たすような場合には、データの可読性に多少影響が出ても目標とする画像に近い2次元コードを生成することが望ましい。そこで、このような場合には、2次元コードを構成する全ての構成要素を設計変数としてもよい。その他の実施形態前述した本発明の実施形態における2次元コード生成装置を構成する各手段、並びに2次元コード生成方法の各工程は、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記憶したコンピュータ読み取り可能な記憶媒体は本発明に含まれる。また、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム実施形態では図3及び図5に示すフローチャートに対応したプログラムを、システムまたは装置に直接、または遠隔から供給する場合も含む。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、DVDDVD-ROM、DVD-Rなどもある。その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。また、その他の方法として、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。さらに、その他の方法として、記憶媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれ、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。"