(57)【要約】【課題】２次元コードに配置されるサブモジュールの色により、任意のデザインが高解像度で構成されるように２次元コードを生成すること。【解決手段】カラーデザインデータに対応する２値化デザインデータを逆変換した逆変換ビット列を更に変換した変換後ビット列の値を基準として、カラーデザインデータのサブモジュールごとの色値を補正する。【選択図】図１４
2008052588.tif 000002
【特許請求の範囲】
【請求項１】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記求められた逆変換ビット列と前記原データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
少なくとも前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求める多階調デザインデータ補正部と、
前記補正後の階調値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
前記多階調デザインデータ補正部が、
前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求め、
前記２次元コード生成部が、
前記デザインデータ領域については前記補正後の階調値に基づいて２次元コードを生成し、２次元コードのその他の領域については前記変換後ビット列に基づいて２次元コードを生成することを特徴とするプログラム。
【請求項３】
請求項１において、
前記逆変換ビット列に基づいて、生成される２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部を更に含み、
前記２次元コードデータ生成部が、
前記求められた逆変換ビット列と、前記原データのビット列と、前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求め、
前記多階調デザインデータ補正部が、
前記デザインデータ領域と、前記原データのデータ量に応じた原データ領域と、前記サイズデータに応じた誤り訂正データ領域とに対応する多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求めることを特徴とするプログラム。
【請求項４】
請求項１〜３のいずれかにおいて、
２次元コードの読み取りに用いられる機能パターンを設定する機能パターン設定部を更に含み、
前記多階調デザインデータ補正部が、
前記機能パターンが配置される領域に対応する多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記機能パターンの値として読み取られるように前記階調値を補正した補正後の階調値を求めることを特徴とするプログラム。
【請求項５】
請求項１〜４のいずれかにおいて、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値を、前記階調値に応じた変換式に基づいて補正することを特徴とするプログラム。
【請求項６】
請求項５において、
前記多階調デザインデータ補正部が、
前記階調値が階調値のとり得る範囲の中間付近の第１の範囲の値である場合に、前記階調値をその階調値に応じた変換式に基づいて補正し、
前記２次元コード生成部が、
前記階調値が前記第１の範囲の値であるサブモジュールについては前記補正後の階調値に基づいて２次元コードを生成し、前記階調値が前記第１の範囲の値以外の第２の範囲の値であるサブモジュールについては前記多階調デザインデータのサブモジュールごとの階調値に基づいて２次元コードを生成することを特徴とするプログラム。
【請求項７】
請求項１〜４のいずれかにおいて、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値を、各モジュールに対応する前記変換後ビット列の値に応じた変換式に基づいて補正することを特徴とするプログラム。
【請求項８】
請求項７において、
前記多階調デザインデータ補正部が、
前記階調値が階調値のとり得る範囲の中間付近の第１の範囲の値である場合に、前記階調値を各モジュールに対応する前記変換後ビット列の値に応じた変換式に基づいて補正し、
前記２次元コード生成部が、
前記階調値が前記第１の範囲の値であるサブモジュールについては前記補正後の階調値に基づいて２次元コードを生成し、前記階調値が前記第１の範囲の値以外の第２の範囲の値であるサブモジュールについては前記多階調デザインデータのサブモジュールごとの階調値に基づいて２次元コードを生成することを特徴とするプログラム。
【請求項９】
請求項１〜８のいずれかにおいて、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値が、階調値のとり得る範囲の中間付近の第１の範囲の値である場合に、各モジュールに所定のパターンで割り当てられる値に応じた変換式に基づいて前記階調値を補正することを特徴とするプログラム。
【請求項１０】
請求項１〜９のいずれかにおいて、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの各色成分の階調値を、色成分ごとの階調値に応じた変換式に基づいて補正することを特徴とするプログラム。
【請求項１１】
請求項１〜１０のいずれかにおいて、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する前記変換後ビット列の値が第１の値であって、対応する多階調デザインデータのサブモジュールの各色成分の階調値の最小値が第１のしきい値よりも小さい場合に、そのサブモジュールの各色成分の階調値を増加させる変換式に基づいて各色成分の階調値を補正し、
少なくとも前記デザインデータ領域に対応する前記変換後ビット列の値が第２の値であって、対応する多階調デザインデータのサブモジュールの各色成分の階調値の最大値が第２のしきい値よりも大きい場合に、そのサブモジュールの各色成分の階調値を減少させる変換式に基づいて各色成分の階調値を補正することを特徴とするプログラム。
【請求項１２】
２次元コードを生成するためのデータを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記求められた逆変換ビット列と前記原データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
少なくとも前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求める多階調デザインデータ補正部としてコンピュータを機能させることを特徴とするプログラム。
【請求項１３】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値が、第１の値として読み取られる範囲の階調値と第２の値として読み取られる範囲の階調値とから構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記求められた逆変換ビット列と前記原データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
少なくとも前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールごとの階調値に基づいて、２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項１４】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１〜１３のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１５】
請求項１〜１３のいずれかのプログラムに基づいて生成したことを特徴とする２次元コード。
【請求項１６】
２次元コード生成システムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記求められた逆変換ビット列と前記原データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
少なくとも前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求める多階調デザインデータ補正部と、
前記補正後の階調値に基づいて２次元コードを生成する２次元コード生成部とを含むことを特徴とする２次元コード生成システム。
【請求項１７】
所与の２値化データを表すモジュールが２次元に配置された２次元コードであって、
前記２次元コードから読み取られるべき原データを表すモジュールと、
少なくとも、前記原データを表すモジュールが配置された原データ領域以外の領域において、前記モジュールを分割したサブモジュールごとの階調値により多階調のデザインを構成するモジュールとが配置され、
前記サブモジュールごとの階調値は、
前記サブモジュールが構成するモジュールが前記２値化データのいずれを表すか読み取り可能な範囲の値とされていることを特徴とする２次元コード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、２次元コード生成システム、２次元コードに関する。
【背景技術】
【０００２】
従来より、所定のフォーマット情報に基づいて、データを示すモジュールを２次元に配置した２次元コードが知られている。この２次元コードでは、１次元コードに比して狭い領域で多くのデータを読み取らせることができる。このような従来の技術として、例えば特許第２９３８３３８号公報に開示されるものがある。
【０００３】
かかる２次元コードでは２次元コードのサイズに対してデータ量が少ないと、データを示さない領域が発生する。この場合、従来の２次元コードでは、データを示さない領域に所定のフォーマット情報に従ってモジュールを配置する。
【特許文献１】特許第２９３８３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、データを示さない領域にモジュールを配置するフォーマット情報は、各種モジュールがデータを示さない領域にバランスよく配置されるように構成されている。従って、生成される２次元コードのモジュールパターンの構成に特徴を持たせて、他の２次元コードと差別化をはかることができなかった。
【０００５】
そこで本発明は、２次元コードのデータを示さない領域など、所定の領域に配置されるモジュールが、任意のデザインを構成して配置されるように２次元コードを生成することができるプログラム、情報記憶媒体を提供することにある。
【０００６】
また本発明は、２次元コードに配置されるモジュールを分割したサブモジュールごとのの色により、任意のデザインが構成されるように２次元コードを生成することができるプログラム、情報記憶媒体を提供することにある。
【課題を解決するための手段】
【０００７】
（１）  本発明は、２次元コードを生成するためのシステムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記求められた逆変換ビット列と前記原データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
少なくとも前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求める多階調デザインデータ補正部と、
前記補正後の階調値に基づいて２次元コードを生成する２次元コード生成部とを含む２次元コード生成システムに関係する。
【０００８】
また本発明は、上記各部としてコンピュータを機能させるプログラムに関係する。また本発明は、上記プログラムに基づいて生成した２次元コードに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。また本発明は、上記２次元コード生成システム、プログラム、情報記憶媒体を用いて生成された２次元コードが印刷された印刷物に関係する。また本発明は、上記２次元コード生成システム、プログラム、情報記憶媒体を用いて生成された２次元コードとして読み取られる２次元コード画像を生成するシステム、プログラム及び情報記憶媒体に関係する。
【０００９】
本発明において「階調値（色値）」とは、色を設定するためのパラメータであって、Ｒ・Ｇ・ＢやＹ・Ｃｒ・Ｃｂ、Ｙ・Ｍ・Ｃ・Ｋなどの色成分ごとの明るさを示すパラメータや、色合いを示す色相、鮮やかさを示す彩度、明るさを示す明度などのパラメータ、輝度などのパラメータ等、種々のパラメータとすることができる。即ち２次元コードの読み取りに影響を与える種々のパラメータとすることができる。
【００１０】
２次元コードでは、例えば２次元コードを構成するモジュールが２値化データのいずれを示すものであるか（例えば白か黒か）を読み出すことにより、２次元コードに化体されたビット列を読み出す。従って２次元コードの各モジュールは、例えば白か黒のように明らかに異なるものとして読み取られる色とすることが好ましい。しかしモジュールの色が白か黒でなくとも、階調値が黒に近い範囲の暗い色であれば一方の値を示すものとして読み取らせ、階調値が白に近い範囲の明るい色であれば他方の値を示すものとして読み取らせることができる。即ち２次元コードの各モジュールの色が、２値化データのいずれを示すものであるか読み取り可能な範囲の色であれば、２次元コードとして機能させることができる。しかし２次元コードのモジュールの色が、明るさが中間的な階調値であるなど２値化データのいずれを示すものであるか読み取ることができないおそれがある色である場合には、２次元コードの読み取り誤りが発生したり、２次元コードとして読み取れない事態が発生する場合がある。
【００１１】
そこで本発明では、サブモジュールごとの階調値から構成される多階調デザインデータに対応するモジュールごとの２値化デザインデータを取得し、かかる２値化デザインデータを逆変換した逆変換ビット列を更に変換した変換後ビット列の値を基準として、多階調デザインデータのサブモジュールごとの階調値を補正する。即ち本発明では、変換後ビット列を求めることにより、２次元コードとして読み取り可能であって、かつ多階調デザインデータに対応する２値化デザインが構成された２次元コードを生成するためのデータを生成する。そして多階調デザインデータのサブモジュールごとの階調値が、変換後ビット列の値として読み取られるようにサブモジュールごとの階調値を補正することにより、変換後ビット列の値が示すとおりに読み取り可能であって、かつサブモジュールごとの階調値から構成される多階調デザインが構成された２次元コードを生成する。
【００１２】
従って本発明によれば、多階調デザインデータのサブモジュールに、明度が中間的な階調値であるなど２値化データのいずれを示すものであるか読み取ることができないおそれがある階調値のサブモジュールが存在する場合であっても、かかるサブモジュールの階調値を変換後ビット列の値として読み取られるように補正することができる。そして変換後ビット列には原データの情報が含まれているので、２次元コードの読取装置により、本システム利用者が２次元コードを介して伝達しようとする情報である原データを読み取らせることができる。
【００１３】
このように本発明によれば、２値化デザインデータは、多階調デザインデータがモジュール単位で階調値に応じて２値化されたものを用いており、多階調デザインデータ補正部が、モジュール単位でサブモジュールごとの階調値を補正するので、階調値がサブモジュールごとに異なっていても、モジュールごとに１の値を読み出させることができる。従って本発明によれば、２次元コードのモジュールよりも多階調デザインを高解像度のものとしても、確実に読み取り誤りを防止することができる。
【００１４】
こうして本発明によれば、２次元コードのモジュールを分割したサブモジュールごとの階調値により、細かく複雑なデザインが構成された２次元コードを生成することができる。そして、人目を引き付けることができるサブモジュールごとの多階調のデザインパターンが構成された２次元コードを、通常の２次元コードの生成手順に準じて簡易に生成することができる。しかも、サブモジュールごとの多階調デザインが構成されていても、モジュールごとの２値化データを基準として通常の２次元コードの生成手順に準じて生成されているので、２次元コードを読取装置により正確に読み取らせることができる。
【００１５】
（２）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求め、
前記２次元コード生成部が、
前記デザインデータ領域については前記補正後の階調値に基づいて２次元コードを生成し、２次元コードのその他の領域については前記変換後ビット列に基づいて２次元コードを生成するようにしてもよい。
【００１６】
本発明によれば、デザインデータ領域においてサブモジュールごとの多階調デザインが構成され、原データ領域などその他の領域において変換後ビット列に基づくモジュールパターンが構成された２次元コードを生成することができる。従って本発明によれば、デザインデータ領域以外の領域のモジュールを２値化パターンにより構成し、より確実に読み取り可能な２次元コードを生成することができる。
【００１７】
（３）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記逆変換ビット列に基づいて、生成される２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部を更に含み、
前記２次元コードデータ生成部が、
前記求められた逆変換ビット列と、前記原データのビット列と、前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求め、
前記多階調デザインデータ補正部が、
前記デザインデータ領域と、前記原データのデータ量に応じた原データ領域と、前記サイズデータに応じた誤り訂正データ領域とに対応する多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求めるようにしてもよい。
【００１８】
本発明によれば、デザインデータ領域と、原データ領域と、誤り訂正データ領域において多階調デザインデータのサブモジュールごとの階調値を補正する。従って本発明によれば、より広い領域において多階調デザインデータの階調値が反映された２次元コードを生成することができる。
【００１９】
（４）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
２次元コードの読み取りに用いられる機能パターンを設定する機能パターン設定部を更に含み、
前記多階調デザインデータ補正部が、
前記機能パターンが配置される領域に対応する多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記機能パターンの値として読み取られるように前記階調値を補正した補正後の階調値を求めるようにしてもよい。
【００２０】
本発明によれば、位置合せパターンが配置される領域等の機能パターン領域において多階調デザインデータのサブモジュールごとの階調値を補正する。従って本発明によれば、より広い領域において多階調デザインデータのサブモジュールごとの階調値が反映された２次元コードを生成することができる。
【００２１】
（５）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値を、前記階調値に応じた変換式に基づいて補正するようにしてもよい。
【００２２】
本発明において、２値化デザインデータは多階調デザインデータに対応するデータとなっているため、階調値を補正するための基準となる変換後ビット列もデザインデータ領域に対応する多階調デザインデータのサブモジュールの階調値に対応した値となっている。従って本発明によれば、階調値に応じた補正用の変換式の種類を削減し、階調値に応じた割り振り処理を軽減しつつも、可及的に元の階調値を補正後の階調値に反映することができる。
【００２３】
（６）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
前記階調値が階調値のとり得る範囲の中間付近の第１の範囲の値である場合に、前記階調値をその階調値に応じた変換式に基づいて補正し、
前記２次元コード生成部が、
前記階調値が前記第１の範囲の値であるサブモジュールについては前記補正後の階調値に基づいて２次元コードを生成し、前記階調値が前記第１の範囲の値以外の第２の範囲の値であるサブモジュールについては前記多階調デザインデータのサブモジュールごとの階調値に基づいて２次元コードを生成するようにしてもよい。
【００２４】
本発明において、「第１の範囲」とは、２値化データのいずれを示すものであるか読み取ることができないおそれがある階調値の範囲とすることができる。例えば各色成分の階調値が０〜２５５までの値をとる場合には、６４以上１９２未満など階調値の取り得る範囲の中間値を含む範囲を第１の範囲とし、それ以外の０以上６４未満及び１９２以上２５５以下を第２の範囲とすることができる。なお第１の範囲と第２の範囲は、２次元コードの読取装置の性能や、読み取りの正確性との関係などで任意に定めることができる。例えば誤り訂正アルゴリズムなどによりデータを訂正することができる場合など、生成された２次元コードのモジュールに２値化データのいずれを示すものであるか読み取ることができないモジュールがいくつか存在しても構わない場合には、第１の範囲からいくつかの値を間引いた値の集合を第１の範囲の値として扱うようにしてもよい。例えば６４以上１９２未満の値のうち、中間値である１２８を除外した値の集合なども「第１の範囲」の概念に含まれる。即ち本発明により生成された２次元コードが、２次元コードとして機能するように、中間的な階調値が補正されればよい。
【００２５】
本発明によれば、多階調デザインデータのサブモジュールごとの階調値が、例えば明度が中間的な階調値であるなど２値化データのいずれを示すものであるか読み取ることができないおそれがある階調値（第１の範囲の値）である場合に階調値を補正し、第２の範囲の値である場合には階調値を補正しない。従って本発明によれば、階調値が第２の範囲の値である場合には元の階調値をそのまま反映することができる。
【００２６】
（７）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値を、各モジュールに対応する前記変換後ビット列の値に応じた変換式に基づいて補正するようにしてもよい。
【００２７】
本発明において、２値化デザインデータは多階調デザインデータに対応するデータとなっているため、階調値を補正するための基準となる変換後ビット列もデザインデータ領域に対応する多階調デザインデータのサブモジュールの階調値に対応した値となっている。従って本発明によれば、変換後ビット列の値に応じた補正用の変換式の種類を削減し、階調値に応じた割り振り処理を軽減しつつも、可及的に元の階調値を補正後の階調値に反映することができる。
【００２８】
（８）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
前記階調値が階調値のとり得る範囲の中間付近の第１の範囲の値である場合に、前記階調値を各モジュールに対応する前記変換後ビット列の値に応じた変換式に基づいて補正し、
前記２次元コード生成部が、
前記階調値が前記第１の範囲の値であるサブモジュールについては前記補正後の階調値に基づいて２次元コードを生成し、前記階調値が前記第１の範囲の値以外の第２の範囲の値であるサブモジュールについては前記多階調デザインデータのサブモジュールごとの階調値に基づいて２次元コードを生成するようにしてもよい。
【００２９】
本発明によれば、多階調デザインデータのサブモジュールごとの階調値が第１の範囲の値である場合に階調値を補正し、第２の範囲の値である場合には階調値を補正しない。従って本発明によれば、階調値が第２の範囲の値である場合には元の階調値をそのまま反映することができる。
【００３０】
（９）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの階調値が、階調値のとり得る範囲の中間付近の第１の範囲の値である場合に、各モジュールに所定のパターンで割り当てられる値に応じた変換式に基づいて前記階調値を補正するようにしてもよい。
【００３１】
本発明によれば、階調値が第１の範囲の値であるサブモジュールに対して、一括した補正処理を行うのではなく、例えば誤差拡散法などを用いて所定のパターンで値を割り当て、値に応じた補正処理を行う。従って本発明によれば、階調値が第１の範囲の値であるサブモジュールについて、所定のパターンで異なる階調値を出現させて元の中間的な階調値を表現することにより、可及的に元の階調値を補正後の階調値に反映することができる。
【００３２】
ここで本発明では、階調値が第１の範囲の値であるか否かを区別する単位と、値を割り当てる単位はモジュールごととし、階調値を補正する単位はサブモジュールごととする。即ち１のモジュールに含まれるサブモジュールは、同様の変換式により各階調値が補正される。従って本発明によれば、２次元コードのモジュールよりも多階調デザインを高解像度のものとしたものに誤差拡散法などを用いた補正処理を行っても、確実に読み取り誤りを防止するとともに、高解像度の多階調デザインを維持したまま補正後の階調値により元の中間的な階調値を表現することができる。
【００３３】
（１０）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する多階調デザインデータのサブモジュールごとの各色成分の階調値を、色成分ごとの階調値に応じた変換式に基づいて補正するようにしてもよい。
【００３４】
本発明によれば、Ｒ・Ｇ・ＢやＹ・Ｃｒ・Ｃｂ、Ｙ・Ｍ・Ｃ・Ｋなどの色成分ごとの階調値に応じて色成分ごとに階調値を補正するので、よりきめ細かく可及的に元の階調値を補正後の階調値に反映することができる。また例えばＲ・Ｇ・ＢのうちのＧ成分（緑成分）は、データ上の値以上に人間の目に与える影響が大きいことから、２次元コードの読み取り装置であるカメラ等による読み取り数値に補正が行われることがある。すると本発明における補正後の階調値が、意図しない数値に補正されて読み誤りが発生するおそれがある。そこで本発明によれば、色成分ごとに階調値の補正を行うことによりかかる不具合を解消することができる。
【００３５】
（１１）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
前記多階調デザインデータ補正部が、
少なくとも前記デザインデータ領域に対応する前記変換後ビット列の値が第１の値であって、対応する多階調デザインデータのサブモジュールの各色成分の階調値の最小値が第１のしきい値よりも小さい場合に、そのサブモジュールの各色成分の階調値を増加させる変換式に基づいて各色成分の階調値を補正し、
少なくとも前記デザインデータ領域に対応する前記変換後ビット列の値が第２の値であって、対応する多階調デザインデータのサブモジュールの各色成分の階調値の最大値が第２のしきい値よりも大きい場合に、そのサブモジュールの各色成分の階調値を減少させる変換式に基づいて各色成分の階調値を補正するようにしてもよい。
【００３６】
本発明によれば、あるサブモジュールの色成分ごとの階調値に、読み取られるべき値に反して小さい又は大きい値がある場合には、当該サブモジュールの階調値全体を補正する。即ち本発明では、変換後ビット列の値が第１の値であるモジュール（例えば色成分の値が大きくあるべきモジュール、明（白）であることを示す値であるモジュール）を構成するサブモジュールの色成分ごとの階調値のうち最小の値を示す色成分の階調値が、例えば明るいモジュールであると読み取られる最小の値である第１のしきい値よりも小さい場合には、最小値の色成分のみならずそのサブモジュールの各色成分の階調値を増加させる。そして第２の値であるモジュールを構成するサブモジュールについては、第２のしきい値よりも大きい場合に各色成分の階調値を減少させる。従って本発明によれば、より確実に読み取り誤りを防止するとともに、可及的に元の階調値を補正後の階調値に反映することができる。
【００３７】
ここで本発明では、色成分ごとの階調値に、読み取られるべき値（第１の値又は第２の値）に反して小さい又は大きい値がある場合に階調値を補正する際に、第１の値又は第２の値であるか否かを区別する単位はモジュールごととし、色成分ごとの階調値の最小値又は最大値をしきい値と比較する単位と、階調値を補正する単位はサブモジュールごととする。即ち１のモジュールに含まれるサブモジュールは、同様の変換式により各色成分の階調値が補正される。従って本発明によれば、２次元コードのモジュールよりも多階調デザインを高解像度のものとしたものに各色成分の最小値、最大値を考慮した補正処理を行っても、確実に読み取り誤りを防止するとともに、高解像度の多階調デザインを維持したまま可及的に元の階調値を補正後の階調値に反映することができる。
【００３８】
（１２）また本発明に係る２次元コードを生成するためのデータを生成するシステム、プログラム及び情報記憶媒体では、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記求められた逆変換ビット列と前記原データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
少なくとも前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールごとの階調値が、各モジュールに対応する前記変換後ビット列の値として読み取られるように前記階調値を補正した補正後の階調値を求める多階調デザインデータ補正部とを含むようにしてもよい。
【００３９】
本発明によれば、サブモジュールごとの階調値のデザインパターンが構成された２次元コードを生成することができるデータを生成することができる。そして、生成された２次元コードを生成するためのデータには、原データの情報が含まれている。従って、本発明により生成したデータに基づいて２次元コードを生成すれば、２次元コードにサブモジュールごとの階調値のデザインパターンを構成しつつ、本システム利用者が２次元コードシンボルを介して伝達しようとする情報である原データを２次元コードの読取装置に読み取らせることができる。
【００４０】
このように本発明によれば、２次元コードのモジュールを分割したサブモジュールごとの階調値により、細かく複雑なデザインが構成された２次元コードを生成するためのデータを生成することができる。そして、人目を引き付けることができるサブモジュールごとの多階調のデザインパターンが構成された２次元コードを、通常の２次元コードの生成手順に準じて簡易に生成することができる。しかも、サブモジュールごとの多階調デザインが構成されていても、モジュールごとの２値化データを基準として通常の２次元コードの生成手順に準じて生成されているので、２次元コードを読取装置により正確に読み取らせることができる。
【００４１】
（１３）また本発明に係る２次元コード生成システム、プログラム及び情報記憶媒体では、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値が、第１の値として読み取られる範囲の階調値と第２の値として読み取られる範囲の階調値とから構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記求められた逆変換ビット列と前記原データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
少なくとも前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールごとの階調値に基づいて、２次元コードを生成する２次元コード生成部とを含むようにしてもよい。
【００４２】
本発明によれば、明度が中間的な階調値であるなど２値化データのいずれを示すものであるか読み取ることができないおそれがある階調値がサブモジュール単位の階調値として存在しない多階調デザインデータを用いることにより、階調値の補正処理を行うことなく多階調のデザインパターンが構成された２次元コードを生成することができる。
【００４３】
（１４）本発明は、
所与の２値化データを表すモジュールが２次元に配置された２次元コードであって、
前記２次元コードから読み取られるべき原データを表すモジュールと、
少なくとも、前記原データを表すモジュールが配置された原データ領域以外の領域において、前記モジュールを分割したサブモジュールごとの階調値により多階調のデザインを構成するモジュールとが配置され、
前記サブモジュールごとの階調値は、
前記サブモジュールが構成するモジュールが前記２値化データのいずれを表すか読み取り可能な範囲の値とされていることを特徴とする２次元コードに関係する。
【００４４】
また本発明は、上記２次元コードを生成する２次元コード生成部、又は、上記２次元コードを生成するためのデータを生成する２次元コードデータ生成部を含む２次元コード生成システムに関係する。また本発明は、上記２次元コードを生成する２次元コード生成部、又は、上記２次元コードを生成するためのデータを生成する２次元コードデータ生成部としてコンピュータを機能させるプログラムに関係する。また本発明は、コンピュータ読み取り可能な情報記憶媒体であって、上記２次元コード生成部、又は、２次元コードデータ生成部としてコンピュータを機能させるプログラムを記憶（記録）した情報記憶媒体に関係する。
【００４５】
また本発明は、上記２次元コードが印刷された印刷物に関係する。また本発明は、上記２次元コードとして読み取られる２次元コード画像を生成するシステム、プログラム及び情報記憶媒体に関係する。
【００４６】
本発明によれば、本システム利用者が２次元コードを介して伝達しようとする情報を読み取り装置に読み取らせつつ、サブモジュールごとの階調値により所与のデザインを構成するモジュールが配置された２次元コードを提供することができる。
【発明を実施するための最良の形態】
【００４７】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００４８】
１．２次元コードの構造
図１に、本実施の形態の２次元コード生成システムで生成される２次元コードシンボルの構造の例を示す。本実施の形態では、２次元コードとしてＱＲコード（株式会社デンソーウェーブの登録商標）を用いた例を示すが、本実施の形態により生成できる２次元コードはＱＲコードに限らない。
【００４９】
図１に示すように、本実施の形態の２次元コードシンボル１０は、正方形のモジュールを縦に４５個、横に４５個、計２０２５個正方形状に配列して構成されている。このシンボル１０には、シンボル１０からデータを読み取る際に用いられる位置検出パターン１２と位置合せパターン１３とタイミングパターン１４とが配置されている。そして、位置検出パターン１２と位置合せパターン１３とタイミングパターン１４とが配置されている領域以外の領域として、シンボル１０から読み取られるべきデータのモジュールパターン（符号化パターン）が配置される符号化領域１６が設けられている。
【００５０】
この符号化領域１６には、シンボル１０の型番情報（サイズ情報）の符号化パターンが配置される型番領域１８と、シンボル１０の形式情報（誤り訂正レベル情報、マスク処理パターンに関する情報）の符号化パターンが配置される形式領域２０と、本実施の形態のシステムの利用者が任意に入力可能なデータの符号化パターンが配置されるデータ領域２２とが含まれる。
【００５１】
２．２次元コードの生成処理
図２に、本実施の形態の２次元コード生成システムの処理の流れの一例を示す。まず、ステップＳ１において、２次元コードを生成するための各種データを取得する。
【００５２】
図３に、このデータ取得処理の詳細を示す。まず、ステップＳ２において、入力部への入力情報に基づき、システムの利用者が所望するシンボルの型番情報と形式情報とを取得する。ここで、型番情報には、シンボル１０の大きさを特定するサイズ情報（１〜４０）が含まれている。本実施の形態では、サイズ情報によりシンボル１０を構成するモジュールの数とその配置を特定することができる。また、形式情報には、生成されるシンボルの読み取り誤りを訂正するための誤り訂正アルゴリズムの種類を特定する誤り訂正レベル情報が含まれる。本実施の形態では、誤り訂正レベルがＬ、Ｍ、Ｑ、Ｈの４段階用意されており、誤り訂正レベルに応じて誤り訂正の精度が異なる。
【００５３】
そして、ステップＳ４において、本システム利用者が２次元コードシンボルを介して伝達しようとする情報である原データの文字列を取得する。この原データとしては、例えばＵＲＬやメールアドレス等のネットワークアドレス情報や、種々の管理情報、識別情報、暗号化情報等が入力される。すると、ステップＳ６において、取得した原データの文字列を２次元コードのフォーマット情報に基づいて変換し、原データのビット列を生成する。そして、原データのビット列の最後に原データの終端を示すエンドパターンのビット列を挿入する。このエンドパターンは、２次元コードを読み取った場合に、エンドパターン以降の符号化パターンについては情報として出力する必要がないことを示すものである。
【００５４】
そして、図２のステップＳ１０において、エンドパターンを含む原データのビット列を２次元コードのフォーマット情報に基づいて８ビットコード語（データコード語）に分割する。すると、ステップＳ１２において、取得したサイズ情報、誤り訂正レベル情報に基づき、当該サイズ、誤り訂正レベルが要求するデータコード語数を満たすか否かを判断する。
【００５５】
ここで、要求するデータコード語数を満たさないと判断すると（ステップＳ１２のＮ）、即ち２次元コードのサイズに対して原データのデータ量が少ないと、ステップＳ１４において、データコード語列の後に埋め草コード語を付加する。この埋め草コード語とは、２次元コードのサイズに対して原データのデータ量が少ない場合に、原データを示す符号化パターン以降の符号化領域１６が例えば空白（明モジュールのみ）となると、２次元コードの読み取りに支障があることを考慮して付加されるものである。本実施の形態では、２次元コードのフォーマットに基づいて、データが空であることを示す所定の符号化パターンが繰返し付加される。
【００５６】
一方、要求するデータコード語数を満たすと判断すると（ステップＳ１２のＹ）、埋め草コード語は付加せずに、ステップＳ１６において、データコード語列を誤り訂正用のブロック数に分割し、ステップＳ１８において、各ブロックに対して誤り訂正コード語を生成する。この誤り訂正コード語とは、２次元コードの読み取り誤りを訂正するための誤り訂正アルゴリズムに用いられる情報の符号化パターンを生成するための所定のビット列単位である。そして、ステップＳ２０において、データコード語列の後に誤り訂正コード語を付加する。
【００５７】
そして、ステップＳ２２において、２次元コードのフォーマット情報に従って各ブロックのデータコード語・誤り訂正コード語をインターリーブにし、必要に応じて残余ビットを付加し、ステップＳ２４において、２次元コードのフォーマット情報に基づいてマトリックスに、位置検出パターン１２、位置合せパターン１３、タイミングパターン１４、コード語列に対応させた暗（黒）モジュールと明（白）モジュールとを配置する。
【００５８】
そして、ステップＳ２６において、シンボルの符号化領域１６にマスク処理パターンを適用する。このマスク処理は、ステップＳ２４において符号化領域１６に配置された暗（黒）モジュールと明（白）モジュールとが、バランスよく配置されるようにするための処理である。そして、ステップＳ２８において、ステップＳ２で取得した型番情報の符号化パターンを型番領域１８に配置し、形式情報の符号化パターンを形式領域２０に配置し、シンボルを完成する。
【００５９】
図４に、このようにして生成された２次元コードシンボルの一例を示す。本実施の形態では、各コード語列に対応させた暗（黒）モジュールと明（白）モジュールの配置は、図４に示すシンボル１０の右下隅から開始し、上方向、下方向を交互に走査し、右から左へ配置する。ここで、各コード語列は、原データとそのエンドパターンを示すデータコード語、埋め草コード語、誤り訂正コード語の順に配列されている。従って、シンボル１０の符号化領域１６には、図４に示すように、原データの符号化パターンが配置された原データ領域３０と、埋め草データの符号化パターンが配置された不使用データ領域３２と、誤り訂正コードの符号化パターンが配置された誤り訂正コード領域３４とが形成される。
【００６０】
３．デザインデータ処理
ここで本実施の形態では、不使用データ領域３２の符号化パターンは、データが空であることを示しているに過ぎない。従って、不使用データ領域３２においては自由にモジュールを配置することができる。そこで本実施形態では、不使用データ領域３２となるべき領域をデザインデータ領域３３として利用して、デザインデータ領域３３のモジュールの配置（パターン）が、所与のデザインを構成するように２次元コードシンボル１０を生成するためのデータ（ビット列）を生成する。
【００６１】
また本実施形態の２次元コードでは、２次元コードを構成するモジュールが２値化データのいずれを示すものであるか、即ち、各モジュールが明（白）モジュールであるか暗（黒）モジュールであるかを読み出すことにより、２次元コードに化体されたビット列を読み出す。従って２次元コードの各モジュールは、例えば白か黒のように明らかに異なるものとして読み取られる色とすることが好ましい。しかしモジュールの色が白か黒でなくとも、色値（階調値）が黒に近い範囲の暗い色であれば一方の値を示すものとして読み取らせ、色値が白に近い範囲の明るい色であれば他方の値を示すものとして読み取らせることができる。即ち２次元コードの各モジュールの色が、２値化データのいずれを示すものであるか読み取り可能な範囲の色であれば、２次元コードとして機能させることができる。更に本実施形態の２次元コードでは、モジュールごとの色が、２値化データのいずれか一方を示す範囲の色であれば、１のモジュール内で色が変化していてもこれを読み取らせることができる。
【００６２】
そこで本実施形態では、デザインデータ領域３３に配置されるモジュールを分割したサブモジュールごとの色が所与のデザインを構成しつつ、モジュールごとに２値化データのいずれを示すものであるか読み取り可能な範囲の色から構成された２次元コードシンボル１０を生成する。従って本実施形態では、２次元コードのモジュールごとの色によりデザインを構成するよりも解像度が高いデザインを２次元コード上に構成することができる。そのため本実施形態では、図２のステップＳ１のデータ取得処理において、本実施の形態に特徴的なデザインデータ処理を行う。
【００６３】
図５に、デザインデータ処理の流れの一例を示す。まず、図３のステップＳ６までにおいて、サイズ情報・誤り訂正レベル情報・原データを取得して（ステップＳ２、ステップＳ４）、２次元コードのフォーマット情報に基づいて原データのビット列を生成すると（ステップＳ６）、図５のステップＳ３９において、システムの利用者が２次元コードに構成させるデザインとして選んだ所与のカラー画像データ（多階調画像データ）に基づいて、サイズ情報に応じた２次元コードのモジュールを分割したサブモジュールごとの色値から構成されたカラーデザインデータ（多階調デザインデータ）を生成する。
【００６４】
３−１．カラーデザインデータ生成処理
本実施形態ではカラー画像データＰ０は、Ｒ・Ｇ・Ｂの各色成分の色値が０〜２５５までとり得るいわゆるフルカラーの画像データとすることができる。そしてこのカラー画像データＰ０は、システム利用者がスキャナ等のハードウェアで取り込んだものや情報記憶媒体に記憶されたもの、画像作成ソフトで作成したものなどとすることができる。
【００６５】
ここで本実施形態では、図６（Ａ）に示すようにデザインデータ領域３３の範囲を示す画像を生成して表示部に表示させて、カラー画像データＰ０をデザイン領域３３の範囲に合わせて調整するようにしてもよい。本実施の形態では、図４に示すように原データ領域３０がサイズ情報と原データのデータ量に応じて定まり、誤り訂正データ領域３４がサイズ情報に応じて定まる。よって、サイズ情報と原データのビット列に基づいて原データ領域３０を特定し、サイズ情報に基づいて誤り訂正データ領域３４を特定し、サイズ情報と原データ領域３０と誤り訂正データ領域３４とに基づいて、デザイン領域３３を特定することができる。従って、図６（Ａ）に示すように、２次元コードシンボル１０を、デザイン領域３３が空白となるように表示することができる。
【００６６】
そしてシステム利用者は、かかる２次元コードシンボル１０と所与のカラー画像データＰ０を対比して、デザイン領域３３の範囲内に所望のデザインが収まるように、カラー画像データＰ０の大きさを調整する、或いは２次元コードのサイズ情報を変更する。そして本実施形態では、かかるカラー画像データＰ０を、図６（Ｂ）に示すような、取得したサイズ情報に応じた２次元コードのモジュールを縦横均等に分割したサブモジュールごとの色値から構成されたカラーデザインデータＰｍに変換する。即ち任意の解像度のカラー画像データＰ０を、２次元コードのサブモジュールを１画素とするカラーデザインデータＰｍに変換する。
【００６７】
図６（Ｂ）の例では、１のサブモジュールは１のモジュールを縦横それぞれ２分の１に分割したものであるので、１のモジュールは４つのサブモジュールから構成されており、縦横９０個の計８１００個の正方形のサブモジュールごとの色値に変換されている。このとき、サブモジュールの位置（領域）に対応するカラー画像データＰ０の位置（領域）の代表画素を抽出することにより１のサブモジュールの色値を決定してもよいし、サブモジュールの位置（領域）に対応するカラー画像データＰ０の位置（領域）の画素を平均することにより１のサブモジュールの色値を決定してもよく、本実施形態では種々の手法を採用することができる。
【００６８】
３−２．縮小画像生成処理
すると図５のステップＳ４０において、図６（Ｂ）のカラーデザインデータＰｍを２次元コードのモジュールごとの色値に変換し、図６（Ｃ）に示すような縮小データＰｓを生成する。即ちサブモジュールを１画素とするカラーデザインデータＰｍの画素数を縦横それぞれＮ分の１に補間縮小して、２次元コードのモジュールを１画素とする縮小画像データＰｓを生成する。図６（Ｃ）の例では、画素数を縦横それぞれ２分の１に縮小して、縦横４５個の計２０２５個の正方形のモジュールごとの色値に変換している。この縮小画像データＰｓは、カラーデザインデータＰｍの色の分布を２次元コードの読取装置が読み取った場合に、読取装置が認識する単位の色分布を示すものである。
【００６９】
図７は、図５のステップＳ４０の縮小データ生成処理の詳細の一例を示すフローチャートである。図７に示すようにまずステップＳ５０、ステップＳ５１において、縮小データＰｓの座標値のＹとＸに０を代入し、ステップＳ５２において、各色成分の種類を示すＣ（Ｒ＝０、Ｇ＝１、Ｂ＝２）に０（Ｒ）を代入し、ステップＳ５３において、各色成分の色値が格納されるａに０を代入する。そしてステップＳ５４、ステップＳ５５において、１のモジュールにおけるサブモジュールの座標値ＶとＵに０を代入し、ステップＳ５６において、カラーデザインデータＰｍの（Ｘ＊Ｎ＋Ｕ，Ｙ＊Ｎ＋Ｖ）の位置の色Ｃを読み出しａに加える。即ち縮小データＰｓの（Ｘ，Ｙ）＝（０，０）の位置（モジュール）に対応する、カラーデザインデータＰｍの（Ｕ，Ｖ）＝（０，０）の位置のサブモジュールの各成分の色値を読み出す。
【００７０】
そしてステップＳ５５〜ステップＳ６０までの処理を繰返し、そのモジュールを構成する全てのサブモジュールについて色Ｃを加算すると（ステップＳ６０のＮ）、ステップＳ６１において、色値の総計ａをサブモジュールの数で割り、モジュールごとのサブモジュールの色値の平均値を求める。そしてステップＳ６２において、縮小データＰｓの（Ｘ，Ｙ）＝（０，０）の位置の色Ｃ（Ｒ）に平均値ａを書き込む。
【００７１】
するとステップＳ６３において、各色成分の種類を示すＣに１加算し、ステップＳ６４においてＣが３未満即ち各色成分の色値を全て読み出していない場合には（ステップＳ６４のＹ）、ステップＳ５３に戻り、他の色成分の色値について同様の処理を行う。こうして縮小データＰｓの（Ｘ，Ｙ）＝（０，０）の位置の色成分ごとの平均値をそれぞれ書込むと（ステップＳ６４のＮ）、ステップＳ６５において座標値Ｘに１加算し、ステップＳ６６においてＸ座標が４５となるまでステップＳ５２からステップＳ６６までの処理を繰返し、Ｙ座標が０の位置全てについて色成分ごとの平均値を書込む（ステップＳ６６のＮ）。
【００７２】
するとステップＳ６７において座標値Ｙに１加算し、ステップＳ６８においてＹ座標が４５となるまでステップＳ５１からステップＳ６８までの処理を繰返し、縮小データＰｓの全ての（Ｘ，Ｙ）の位置について、カラーデザインデータＰｍのモジュールごとのサブモジュールの色値の平均値ａを書込む。こうして本実施形態では、図６（Ｂ）に示すようなカラーデザインデータＰｍを、図６（Ｃ）に示すようなサイズ情報に応じた２次元コードのモジュールごとの色値から構成された縮小データＰｓに変換する。
【００７３】
３−３．２値化デザインデータ生成処理
こうして図５のステップＳ４０において縮小データＰｓを取得すると、図５のステップＳ４１において、縮小データＰｓのモジュールごとの色値を各モジュールの色値に応じて２値化することにより、図８に示すような２値化デザインデータＰｂｗを生成し、これを取得する。即ち縮小データＰｓのモジュールのうち、相対的に暗い色のモジュールは黒のモジュールとし、相対的に明るい色のモジュールは白のモジュールとする変換を行う。この２値化デザインデータＰｂｗは、縮小データＰｓの色の分布を２次元コードの読取装置が読み取った場合に、読取装置に認識させるべき値を示すものである。
【００７４】
図９は、かかる２値化デザインデータ生成処理の詳細の一例を示すフローチャートである。図９に示すようにまずステップＳ８０、ステップＳ８１において、縮小データＰｓの座標値のＹとＸに０を代入し、ステップＳ８４において、各座標についての値が格納されるａに０を代入する。そしてステップＳ８６において、カラーデザインデータＰｍの（０，０）の位置のＲＧＢ各色成分の色値の合計値Ｔを求める。そしてステップＳ９４において、各色成分の色値の合計Ｔを色成分の数３で割った値をａに代入する。即ち（０，０）の位置のＲＧＢの色成分の色値の平均値をａに格納する。
【００７５】
するとステップＳ９６において平均値ａが１２８よりも大きい、即ち色値がとり得る値０〜２５５の中間の値よりも大きい値である場合には、ステップＳ９８においてａに当該位置のモジュールが白であることを示す０を代入する。一方平均値ａが１２８以下である場合には、ステップＳ１００においてａに当該位置のモジュールが黒であることを示す１を代入する。そしてステップＳ１０２において、２値化デザインデータＰｂｗの（０，０）の位置にａ（０、１のいずれか）を格納する。そしてステップＳ１０４において座標値Ｘに１加算し、ステップＳ１０６においてＸ座標が４５となるまでステップＳ８４からステップＳ１０６までの処理を繰返し、Ｙ座標が０の位置全てについてａ（０、１のいずれか）を格納する。
【００７６】
するとステップＳ１０８において座標値Ｙに１加算し、ステップＳ１１０においてＹ座標が４５となるまでステップＳ８２からステップＳ１１０までの処理を繰返し、２値化デザインデータＰｂｗの全てに位置についてａ（０、１のいずれか）を格納する。こうして本実施形態では、図６（Ｃ）に示すような縮小データＰｓを、図８に示すような縮小データＰｓのモジュールごとの色値が各モジュールの色値に応じて２値化された２値化デザインデータＰｂｗに変換する。
【００７７】
なお図６（Ｃ）の例の縮小データＰｓは、ハート形状の左半分ＨＬは色値の平均値が３０の暗い赤の色値となっており、ハート形状の右半分ＨＲは色値の平均値が２３０の明るい赤の色値となっている。また背景の左半分ＢＬは色値の平均値が１６０であって、中間よりは明るい青の色値となっており、背景の右半分ＢＲは色値の平均値が９６であって、中間よりは暗い青の色値となっている。従ってかかる縮小データＰｓから生成される２値化デザインデータＰｂｗは、ハート形状の左半分ＨＬと背景の右半分ＢＲが黒のモジュールとされ、ハート形状の右半分ＨＲと背景の左半分ＢＬが白のモジュールとされている。
【００７８】
３−４．２値化デザインデータ逆変換処理
本実施の形態では、図２のステップＳ２６のように、２次元コードを生成する際にマスクパターンとコード語モジュールパターンとでＸＯＲ演算による変換を行う。従って、２次元コードのデザインデータ領域３３で縮小データＰｓの色値に対応する２値化デザインデータ（２値化デザインパターンのビット列）を生成しても、そのままではマスクパターンとのＸＯＲ演算により、２値化デザインパターンのビット列がカラーデザインデータＰｍの色値に対応しないビット列に変換されてしまう。
【００７９】
そこで、本実施の形態では、２次元コードを生成する際にマスクパターンとのＸＯＲ演算を行うと２値化デザインパターンのビット列に戻るように、生成した２値化デザインパターンのビット列を予め逆変換しておく。即ち、本実施の形態では、図２のステップＳ２６でマスクパターンが適用される前に、予め２値化デザインパターンとマスクパターンとでＸＯＲ演算による変換を行う。
【００８０】
より詳細には、図５のステップＳ４２において、サイズ情報、誤り訂正レベル情報、原データのビット列に基づき、デザインデータ領域３３を特定し、ステップＳ４４において、デザインデータ領域３３に該当する２値化デザインパターンのビット列を抽出する。そして、ステップＳ４６において、抽出した２値化デザインパターンのビット列とマスクパターンのビット列とでＸＯＲ演算による変換を行う。
【００８１】
図１０は、図８の２値化デザインデータＰｂｗから抽出した２値化デザインパターン４０と、マスクパターン４２とでＸＯＲ演算による変換を行って得られる逆変換モジュールパターン４４の例である。図１０に示すように、本実施の形態では、２値化デザインパターン４０とマスクパターン４２とで対応するモジュールが、同種のモジュールである場合には当該モジュールを暗（黒）モジュールとし（０＋０＝１、１＋１＝１）、異種のモジュールである場合には当該モジュールを明（白）モジュールとする（０＋１＝０、１＋０＝０）。
【００８２】
従って、ＸＯＲ演算による変換を行って得られる逆変換モジュールパターン４４は２値化デザインデータＰｂｗの色値に対応しないものとなるが、２次元コードを生成する際に再びマスクパターンとのＸＯＲ演算を行うと２値化デザインパターンに戻るものである。こうして、デザインデータ領域３３に対応する２値化デザインパターンのビット列をマスクパターンで逆変換した逆変換ビット列を生成する。なお、マスクパターン４２の４隅などのグレーの部分、即ち生成される２次元コードの位置検出パターン１２と位置合せパターン１３とタイミングパターン１４とに対応する機能パターン領域４６には、マスク処理を適用しないようになっている。
【００８３】
すると、図２のステップＳ１０以降において、図３のステップＳ６で生成された原データのビット列（終端パターンや分割パターンを含めてもよい）と、生成された２値化デザインパターンの逆変換ビット列とをデータコード語に分割し、ステップＳ１２において、得られたデータコード語列がデータコード語数を満たすか否かを判断する。
【００８４】
ここで、２値化デザインパターンの逆変換ビット列は、デザインデータ領域３３のモジュール全てを含んでいる。よって、原データのビット列と逆変換ビット列とからなるデータコード語列は、ステップＳ１２において、データコード語数を満たすと判断される（ステップＳ１２のＹ）。従って、ステップＳ１４で埋め草コード語は付加されず、そのままステップＳ１６〜ステップＳ２４までの２次元コードのフォーマットに基づく処理が行われる。すると、図１１の左側のモジュールパターンのように、位置検出パターン１２等が配置され、原データのモジュールパターン４８と逆変換モジュールパターン４４と、それらに対応する誤り訂正コードパターン５０とを含むマスク前パターン５２が生成される。
【００８５】
そして、ステップＳ２６において、マスク前パターン５２にマスク処理パターンを適用すると、２値化デザインパターンの逆変換ビット列が変換されて、元の２値化デザインパターンのビット列に戻る。即ち、図１１に示すように、マスク前パターン５２と、マスクパターン４２とでＸＯＲ演算による変換を行うことにより、デザインデータ領域３３にカラーデザインデータＰｍの色値に対応する２値化デザインパターン４０が構成されたデザイン２次元コードシンボル５４を生成するための変換後ビット列を生成することができる。
【００８６】
こうして、本実施の形態によれば、逆変換モジュールパターン４４を生成しておくことにより、その後は通常の２次元コードの生成手順に従って、変換後ビット列を生成することができる。そして、２値化デザインパターン４０が構成されたデザイン２次元コードシンボル５４（変換後ビット列）のうち、原データ領域３０には原データのモジュールパターン４８が変換された変換後の原データのモジュールパターン５６が配置されているので、２次元コードの読取装置がこの２次元コード５４を読み取ると、本システム利用者が２次元コードシンボルを介して伝達しようとする情報である原データを読み取らせることができる。
【００８７】
また、誤り訂正データ領域３４には誤り訂正コードパターン５０が変換された変換後の誤り訂正コードパターン５８が配置されているので、原データのモジュールパターン５６及び２値化デザインパターン４０の読み取り誤りを訂正することができる。なお、本実施の形態では、２値化デザインパターン４０は原データのモジュールパターンの終端パターンの後に付加されているので、デザインデータ領域３３の２値化デザインパターン４０は読取装置に読み取られてもデータは示さない。
【００８８】
なお、原データのモジュールパターンの後には、終端パターンのみならず、原データのビット列とデザインデータのビット列を識別するための識別子を挿入するようにしてもよい。例えば、原データのビット列の最後に分割パターンを挿入するようにしてもよい。この分割パターンは、例えば、ビット列を文字列とした場合に改行を示すビット列としてもよいし、スペースを示すビット列としてもよい。これによりデザインデータ領域３３のビット列と原データのビット列とを区別することができる。また、原データのビット列とデザインデータ領域３３のビット列との間に終端パターン等を挿入せず、原データのビット列とデザインデータ領域３３のビット列とにより、例えばネットワークアドレスデータ等の所与の情報を示すようにしてもよい。
【００８９】
また、図５のステップＳ４４において、原データ領域３０に該当する原データのビット列も合わせて抽出し、原データのビット列及び２値化デザインパターンのビット列と、マスクパターンとでＸＯＲ演算による変換を行ってもよい。即ち、少なくともデザインデータ領域３３に該当する２値化デザインパターンのビット列について、逆変換がなされていればよい。
【００９０】
また、本実施の形態では、２次元コードを生成する際のマスクパターンによる変換処理を考慮して逆変換を行う例を挙げて説明したが、２値化デザインパターンのビット列に対して２次元コードを生成する際に他の変換処理が行われる場合には、その変換処理を行うと２値化デザインパターンのビット列に戻るように、生成した２値化デザインパターンのビット列を予め逆変換しておく。ここで、逆変換とは、２次元コードを生成する際の変換処理により２値化デザインパターンのビット列に戻るようなビット列に、２値化デザインパターンのビット列を変換する処理をいう。例えば本実施の形態では、逆変換処理と、２次元コードを生成する際の変換処理とが、ともにＸＯＲ演算であって同一の変換処理となるものであるが、かかる場合も逆変換の概念に含まれる。
【００９１】
なお、図２のステップＳ２６のマスク処理において、複数種類のマスクパターンが適用され、所定の評価関数に基づいて最もバランスよくモジュールが配置されるマスクパターンが選択される場合には、図３のステップＳ２において、マスク処理で適用させるマスクパターンを指定するマスクパターン情報を取得し、当該マスクパターンで図５のステップＳ４６の逆変換処理と、図２のステップＳ２６の変換処理とを行うようにしてもよい。
【００９２】
３−５．カラーデザインデータ補正処理
こうして本実施形態では、デザイン領域３３にカラーデザインデータＰｍに対応する２値化デザインパターン４０が構成された２次元コード５４が生成される。従って、カラーデザインデータＰｍを構成するサブモジュールごとの色が、モジュール単位で黒と読み取られるような暗い色、白と読み取られるような明るい色から構成されていれば、２次元コード５４のデザイン領域３３のモジュールの色を、カラーデザインデータＰｍのサブモジュールごとの色に配色しても２次元コードとして読み取ることができる。
【００９３】
しかしカラーデザインデータＰｍはフルカラーのカラー画像データＰ０から生成されているため、カラーデザインデータＰｍのサブモジュールには、明るさが中間的な色値であるなど２値化データのいずれを示すものであるか読み取ることができないおそれがある色のサブモジュールが存在する場合がある。従って、カラーデザインデータＰｍのサブモジュールごとの色値を、上述のようにして生成したデザイン２次元コードシンボル５４（変換後ビット列）のサブモジュールの色としてそのまま適用したのでは、２次元コードの読み取り誤りが発生したり、２次元コードとして読み取れない事態が発生する場合がある。
【００９４】
そこで本実施形態では、かかるカラーデザインデータＰｍの色値に対応する２値化デザインパターン４０を構成するための変換後ビット列（２値化デザインパターンＰｂｗ）を基準として、カラーデザインデータＰｍのサブモジュールごとの色値を補正して、補正後の色値に基づいた２次元コードを生成する。即ち本実施形態では、まず２次元コードとして読み取り可能であって、かつカラーデザインデータに対応する２値化デザインが構成された２次元コードを生成するための変換後ビット列（図１１に示す２値化デザインパターン４０が構成された２次元コードシンボル５４）を生成する。そしてカラーデザインデータのサブモジュールごとの色値が、変換後ビット列の値として読み取られるように各色値を補正することにより、変換後ビット列の値が示すとおりに読み取り可能であって、かつサブモジュールごとの色値によりカラーデザインが構成された２次元コードを生成する。
【００９５】
図１２は、サブモジュールごとの色値のカラーデザインが構成されたカラー２次元コードを生成するための処理の一例の詳細を示すフローチャートである。図１２に示すようにまずステップＳ３００、ステップＳ３０２において、２次元コードのモジュールの座標値のＹとＸに０を代入し、ステップＳ３０４、ステップＳ３０６において、（Ｘ，Ｙ）＝（０，０）のモジュールのサブモジュールの座標値のＶとＵに０を代入する。そしてステップＳ３０８において、（Ｕ，Ｖ）＝（０，０）の位置のサブモジュールについて色値の補正処理を行う。
【００９６】
そしてＶ座標が０の位置の全てのサブモジュールについて色値の補正処理を行うまで（ステップＳ３１２のＮ）、ステップＳ３０８〜ステップＳ３１２までの処理を繰返す。更にそのモジュールを構成する全てのサブモジュールについて色値の補正処理を行うまで（ステップＳ３１６のＮ）、ステップＳ３０６〜ステップＳ３１６までの処理を繰返す。
【００９７】
するとＹ座標が０の位置の全てのモジュールについて、上記サブモジュールごとの色値の補正処理を行うまで（ステップＳ３２０のＮ）、ステップＳ３０４〜ステップＳ３２０までの処理を繰返し、２次元コードを構成する全てのモジュールについて、上記サブモジュールごとの色値の補正処理を行うまで（ステップＳ３２４のＮ）、ステップＳ３０２〜ステップＳ３２４までの処理を繰返す。
【００９８】
従って本実施形態によれば、例えば図１３（Ａ）に示すカラーデザインデータＰｍの４つのモジュールのうち、左上のモジュールＰｍＭ１を構成するサブモジュールごとの色値の平均値が、中間値よりもやや暗い色値である場合には、図１３（Ｂ）に示す対応する２値化デザインデータＰｂｗの左上のモジュールＰｂｗＭ１は黒（変換後ビット列の値が１）となるので、図１３（Ｃ）に示す生成されるカラー２次元コードＰｃの左上のモジュールＰｃＭ１を構成するサブモジュールごとの色値は、黒と読み取られるように暗い色値に補正される。また、図１３（Ａ）に示すカラーデザインデータＰｍの右上のモジュールＰｍＭ２を構成するサブモジュールごとの色値の平均値が、中間値よりもやや明るい色値である場合には、図１３（Ｂ）に示す対応する２値化デザインデータＰｂｗの右上のモジュールＰｂｗＭ２は白（変換後ビット列の値が０）となるので、図１３（Ｃ）に示す生成されるカラー２次元コードＰｃの右上のモジュールＰｃＭ２を構成するサブモジュールごとの色値は、白と読み取られるように明るい色値に補正される。
【００９９】
図１４は、このようにして補正した色値に基づいて生成したカラー２次元コードシンボルＰｃの一例である。なお図１４の例では、図６等にあげた２次元コードシンボル１０を反時計回りに９０度回転させた状態となっている。本実施形態の２次元コードでは、位置検出パターン１２や位置合せパターン１３などの機能パターンにより読取装置に２次元コードの向きを検出させることができるので、２次元コードシンボル１０を読み取る向きに拘わらずデータを読み取ることができる。
【０１００】
本実施形態によれば図１４に示すように、２次元コードのモジュールごとの色によりデザインを構成するよりも解像度が高いデザインをカラー２次元コードＰｃに構成することができる。そして本実施形態では、モジュール単位でサブモジュールごとの色値を補正するので、色値がサブモジュールごとに異なっていても、モジュールごとに１の値を読み取らせることができる。従って本発明によれば、２次元コードのモジュールを分割したサブモジュールごとの色値により、細かく複雑なデザインが構成され、かつ確実に読み取ることができる２次元コードを生成することができる。
【０１０１】
なお本実施形態では、図１４に示すカラー２次元コードシンボルＰｃのうち、原データ領域３０と、誤り訂正データ領域３４と、位置検出パターン１２と位置合せパターン１３とタイミングパターン１４とに対応する機能パターン領域４６とを除く、デザインデータ領域３３に対応するモジュールについて、補正後の色値に応じた色が配色されればよい。
【０１０２】
３−５−１．第１の色値の補正処理
図１５は、図１２のステップＳ３０８の色値の補正処理の一例である、第１の色値補正処理の詳細を示すフローチャートである。第１の色値補正処理では、図１５に示すようにまずステップＳ１２０において、各色成分の種類を示すＣ（Ｒ＝０、Ｇ＝１、Ｂ＝２）に０（Ｒ）を代入し、ステップＳ１２２において、カラーデザインデータＰｍのサブモジュールごとの座標値（Ｘ＊Ｎ＋Ｕ，Ｙ＊Ｎ＋Ｖ）の位置の色Ｃを読み出しＡに代入する。そして、ステップＳ１２４において、変換後ビット列の（Ｘ，Ｙ）の位置の値が０か否か、即ち生成されるカラー２次元コードＰｃの（Ｘ，Ｙ）の位置のモジュールが白（明）モジュールか黒（暗）モジュールであるべきか判定する。
【０１０３】
ここで対応する変換後ビット列の値が０の場合、即ち白モジュールであるべき場合には（ステップＳ１２４のＹ）、ステップＳ１２６において、カラーデザインデータＰｍの（Ｘ＊Ｎ＋Ｕ，Ｙ＊Ｎ＋Ｖ）の位置のＲＧＢ各色成分の色値を色成分ごとに、Ａ´＝Ａ／４＋１９２のＡに代入し、ステップＳ１３０において、変換後の値Ａ´を、生成されるカラー２次元コードＰｃの（Ｘ＊Ｎ＋Ｕ，Ｙ＊Ｎ＋Ｖ）の位置の補正後の色成分ごとの色値とする。従って各色成分の色値が例えば１３０であるなど中間値とほとんど変わらないような色値が存在する場合でも、１３０／４＋１９２＝２２４．５と補正され、確実に白（変換後ビット列が示す値）として読み取られる値となる。また、この変換式によれば変換後ビット列が示す値が０（白）であるが、対応するサブモジュールの各色成分の色値が例えば３０であるなど黒に近い暗い色値が存在する場合でも３０／４＋１９２＝１９９．５と補正され、確実に白（変換後ビット列が示す値）として読み取られる値となる。
【０１０４】
一方対応する変換後ビット列の値が１の場合、即ち黒モジュールであるべき場合には（ステップＳ１２４のＮ）、ステップＳ１２８において、カラーデザインデータＰｍの（Ｘ＊Ｎ＋Ｕ，Ｙ＊Ｎ＋Ｖ）の位置のＲＧＢ各色成分の色値を色成分ごとに、Ａ´＝Ａ／４のＡに代入し、変換後の値Ａ´を、生成されるカラー２次元コードＰｃの（Ｘ＊Ｎ＋Ｕ，Ｙ＊Ｎ＋Ｖ）の位置の補正後の色成分ごとの色値とする。従って各色成分の色値が例えば１２６であるなど中間値とほとんど変わらないような色値が存在する場合でも、１２６／４＝３１．５と補正され、確実に黒（変換後ビット列が示す値）として読み取られる値となる。また、変換後ビット列が示す値が１（黒）であるが、対応するサブモジュールの各色成分の色値が例えば２３０であるなど白に近い明るい色値が存在する場合でも２３０／４＝５７．５と補正され、確実に黒（変換後ビット列が示す値）として読み取られる値となる。
【０１０５】
するとステップＳ１３２において各色成分の種類を示すＣに１加算し、ステップＳ１３４においてＣが３未満即ち各色成分の色値を全て補正していない場合には（ステップＳ１３４のＹ）、ステップＳ１２２に戻り、他の色成分の色値について同様の処理を行う。そして図１２のフローチャートのようにして、カラー２次元コードＰｃの全てのサブモジュールについて補正後の色成分ごとの色値を求める。こうして本実施形態では、カラーデザインデータＰｍのサブモジュールごとの色値を、確実に各モジュールに対応する変換後ビット列の値として読み取られるように補正する。
【０１０６】
３−５−２．第２の色値の補正処理
上記第１の色値の補正処理の例では、全てのサブモジュールについて一律に上記変換式に基づいて補正処理を行う。従って、例えば図１３（Ａ）に示すカラーデザインデータＰｍの４つのモジュールのうち、左下のモジュールＰｍＭ３のように、そのサブモジュールごとの色値がそのままでも白モジュールとして読み誤りなく読み取られるモジュールであっても、図１３（Ｃ）に示す生成されるカラー２次元コードＰｃの左下のモジュールＰｃＭ３のように、更に白くなるように補正され、元のモジュールＰｍＭ３のサブモジュールごとの色分布が失われてしまう。
【０１０７】
そこで第２の例では、サブモジュールごとの色値が色値のとり得る範囲の中間付近の第１の範囲の値である場合、即ち色値が中間的な値である場合に、サブモジュールごとの色値を各モジュールに対応する変換後ビット列の値に応じた変換式に基づいて、中間値よりも暗い色は確実に黒として読み取られるように、中間値よりも明るい色は確実に白として読み取られるように補正する。そして色値が第１の範囲の値（中間的な値）であるモジュールについては補正後の色値に基づいて２次元コードを生成し、色値が第１の範囲の値以外の第２の範囲の値（中間的でない値）であるモジュールについては補正を行わずに、カラーデザインデータＰｍのモジュールごとの色値に基づいて２次元コードを生成する。
【０１０８】
また、少なくともデザインデータ領域３３に対応する変換後ビット列の値が第１の値（白、０）であって、対応するカラーデザインデータのサブモジュールの各色成分の色値の最小値が第１のしきい値よりも小さい場合に、そのサブモジュールの各色成分の色値を増加させる変換式に基づいて各色成分の色値を補正し、少なくともデザインデータ領域３３に対応する変換後ビット列の値が第２の値（黒、１）であって、対応するカラーデザインデータのサブモジュールの各色成分の色値の最大値が第２のしきい値よりも大きい場合に、そのサブモジュールの各色成分の色値を減少させる変換式に基づいて各色成分の色値を補正するようにしてもよい。
【０１０９】
図１６は、第２の例の色値補正処理の詳細を示すフローチャートである。図１６において、Ｆｇｅｔｃｏｌ（Ｘ,Ｙ,ｃ）は、カラーデザインデータＰｍの（Ｘ,Ｙ）の位置の色値を取り出す関数であって、ｃは０〜２までとり、それぞれがＲＧＢの各色成分に対応する。またＦｓｅｔｇｅｎ（Ｘ,Ｙ,ｃ,ａ）は、（Ｘ,Ｙ）の位置の補正後の色値を設定する関数であって、ｃは０〜２までとり、それぞれがＲＧＢの各色成分に対応し、指定された色成分ｃにａの値が設定される。またＦｇｅｔｇｅｎ（Ｘ,Ｙ,ｃ）は、（Ｘ,Ｙ）の位置の補正後の色値を取り出す関数であって、ｃは０〜２までとり、それぞれがＲＧＢの各色成分に対応する。
【０１１０】
図１６に示すように第２の例では、まずステップＳ１５０において、カラーデザインデータＰｍのサブモジュールの座標値としてＸｂ＝Ｘ＊Ｎ＋Ｕ、Ｙｂ＝Ｙ＊Ｎ＋Ｖを代入する。そしてステップＳ１５２において、カラーデザインデータＰｍの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値の合計値Ｔを求め、ステップＳ１５４において、変換後ビット列Ｐｃｏｄｅの（Ｘ，Ｙ）の位置の値が０か否か、即ち生成されるカラー２次元コードＰｃの（Ｘ，Ｙ）の位置のモジュールが白（明）モジュールか黒（暗）モジュールであるべきか判定する。
【０１１１】
３−５−２−１．色成分ごとの色値に応じた補正処理
すると、ステップＳ１５６〜ステップＳ１７８までの処理により、モジュールの色成分ごとの色値に、読み取られるべき値に反して小さい又は大きい値がある場合には、当該モジュールの色値全体を補正しておく処理を行う。具体的には図１６のステップＳ１５４において、変換後ビット列Ｐｃｏｄｅの値が１（黒）の場合には（ステップＳ１５４のＮ）、ステップＳ１５６において、ＲＧＢ各色成分の色値のうち最も値が大きいものＥｍａｘを求め、ステップＳ１５８において、黒であると認識されるモジュールの各色成分がとり得る最大値ＬｏｗｍａｘとＥｍａｘとを比較する。即ち当該モジュールは黒モジュールであるべきだが、色成分ごとの色値にしきい値（Ｌｏｗｍａｘ）を超えて色値が大きいもの（白に近づくもの）があるか否か判定する。
【０１１２】
ここで大きい色値がある場合には（ステップＳ１５８のＹ）、ステップＳ１６０〜ステップＳ１６６において、当該位置のサブモジュールの各色成分について、ステップＳ１６２の変換を行う。図１６の例では、カラーデザインデータＰｍのサブモジュールの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値を読出し（ａ=Ｆｇｅｔｃｏｌ（Ｘｂ,Ｙｂ,ｃ））、ａ＝ａ−（Ｅｍａｘ−ＬｏｗＭａｘ）＊ａ／Ｅｍａｘのようにして、読み出した値からＥｍａｘとＬｏｗＭａｘに応じた値を差し引く。即ち、色成分ごとの色値でＬｏｗＭａｘ（第２のしきい値）よりも大きい色値がある場合には、当該サブモジュールの各色成分の色値を同様に減少させる。一方、大きい色値がない場合には（ステップＳ１５８のＮ）、そのまま次の処理へと進む。
【０１１３】
また、ステップＳ１５４において、変換後ビット列Ｐｃｏｄｅの値が０（白）の場合には（ステップＳ１５４のＹ）、ステップＳ１６８において、ＲＧＢ各色成分の色値のうち最も値が小さいものＥｍｉｎを求め、ステップＳ１７０において、白であると認識されるモジュールの各色成分がとり得る最小値ＨｉｇｈｍｉｎとＥｍｉｎとを比較する。即ち当該モジュールは白モジュールであるべきだが、色成分ごとの色値にしきい値（Ｌｏｗｍｉｎ）を超えて色値が小さいもの（黒に近づくもの）があるか否か判定する。
【０１１４】
ここで小さい色値がある場合には（ステップＳ１７０のＹ）、カラーデザインデータＰｍのサブモジュールの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値を読出し（ａ=Ｆｇｅｔｃｏｌ（Ｘｂ,Ｙｂ,ｃ））、ａ＝ａ＋（ＨｉｇｈＭｉｎ−Ｅｍｉｎ）＊（２５５−ａ）／（２５５−Ｅｍｉｎ）のようにして、読み出した値にＥｍａｘとＬｏｗＭａｘに応じた値を加える。即ち、色成分ごとの色値でＨｉｇｈＭｉｎ（第１のしきい値）よりも小さい色値がある場合には、当該サブモジュールの各色成分の色値を同様に増加させる。一方、小さい色値がない場合には（ステップＳ１７０のＮ）、そのまま次の処理に進む。
【０１１５】
こうして第２の例では、色成分ごとの色値に応じた変換処理を行うことにより、より確実に読み取り誤りを防止するとともに、可及的に元の色値を補正後の色値に反映することができる。
【０１１６】
３−５−２−２．色値が属する範囲に応じた補正処理
するとステップＳ１８０において、上述のようにして補正した補正後のカラーデザインデータＰｍの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値の合計値Ｔを求め、ステップＳ１８２において、変換後ビット列Ｐｃｏｄｅの（Ｘ，Ｙ）の位置の値が０かつＴ≧１９２＊３か、即ち生成されるカラー２次元コードＰｃの（Ｘ，Ｙ）の位置のモジュールが白（明）モジュールであるべきで、かつ当該サブモジュールの色値の合計値が確実に白モジュールと読み取れる値（１９２＊３）であるか判定する。ここで条件を満たす場合には（ステップＳ１８２のＹ）、ステップＳ１８４〜ステップＳ１９０において、カラーデザインデータＰｍの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値を、補正せずにそのまま２次元コードを生成するための色値として設定する。また、ステップＳ１８２の条件を満たさない場合（ステップＳ１８２のＮ）であっても、ステップＳ１９２において、変換後ビット列Ｐｃｏｄｅの（Ｘ，Ｙ）の位置の値が１かつＴ＜６４＊３か、即ち生成されるカラー２次元コードＰｃの（Ｘ，Ｙ）の位置のモジュールが黒（暗）モジュールであるべきで、かつ当該サブモジュールの色値の合計値が確実に黒モジュールと読み取れる値（６４＊３）である場合には（ステップＳ１９２のＹ）、やはりステップＳ１８４〜ステップＳ１９０において、カラーデザインデータＰｍの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値を、補正せずにそのまま２次元コードを生成するための色値として設定する。
【０１１７】
一方、ステップＳ１８２及びステップＳ１９２の条件をいずれも満たさない場合（ステップＳ１９２のＮ）、即ち当該サブモジュールの色値の合計値が中間的な値である場合には、ステップＳ１９４において、変換後ビット列Ｐｃｏｄｅの（Ｘ，Ｙ）の位置の値が０か、即ち生成されるカラー２次元コードＰｃの（Ｘ，Ｙ）の位置のモジュールが白（明）モジュールであるべきか判定する。ここで変換後ビット列Ｐｃｏｄｅの（Ｘ，Ｙ）の位置の値が１（黒）である場合には（ステップＳ１９４のＮ）、ステップＳ１９６において各色成分の種類を示すＣ（Ｒ＝０、Ｇ＝１、Ｂ＝２）に０（Ｒ）を代入し、ステップＳ１９８において、カラーデザインデータＰｍのサブモジュールの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値を色成分ごとに、ａ＝ａ＊(６４＊３)／Ｔのように変換し、変換後の値ａを（Ｘｂ，Ｙｂ）の位置の補正後の色成分ごとの色値とする。従って各色成分の色値が例えばいずれも１２６であるなど中間値とほとんど変わらないような色値である場合でも、１２６＊(６４＊３)／３７８＝６４と補正され、確実に黒として読み取られる値となる。
【０１１８】
一方、変換後ビット列Ｐｃｏｄｅの（Ｘ，Ｙ）の位置の値が０（白）である場合には（ステップＳ１９４のＹ）、ステップＳ２０４〜ステップＳ２２８において、所定の変換式に基づいて各色成分の色値を変換した場合に、色値がとり得る最大値２５５をオーバーフローしたか否かに応じて変換式を変える手法により、各色成分ごとの色値を補正する。本実施形態ではまず、ステップＳ２０４において最大値２５５に対するオーバーフローの積算値ＯＶと、余裕分の積算値ＳＰに０を代入し、ステップＳ２０６においてＣに０を代入する。そしてステップＳ２０８において、カラーデザインデータＰｍの（Ｘｂ，Ｙｂ）の位置のＲＧＢ各色成分の色値を色成分ごとに、ａ＝ａ＊(１９２＊３)／Ｔのように変換する。
【０１１９】
そしてステップＳ２１０において、変換後の値が最大値の２５５をオーバーフローした場合には（ステップＳ２１０のＹ）、ステップＳ２１２においてＯＶ＝ＯＶ＋ａ−２５５のようにしてオーバーフロー積算値を加え、補正値を２５５に設定する。一方、変換後の値が最大値の２５５をオーバーフローしない場合には（ステップＳ２１０のＮ）、ステップＳ２１４においてＳＰ＝ＳＰ＋２５５−ａのようにして余裕分の積算値を加え、補正値をステップＳ２０８で求めたａをＰｃの（Ｘｂ，Ｙｂ）の位置のＣにに設定する。そしてこれを各色成分について行う（ステップＳ２１６、ステップＳ２１８）。
【０１２０】
そしてステップＳ２２０においてオーバーフローがなかったと判定されると（ステップＳ２２０のＹ）、即ちステップＳ２１２の処理が行われず、各色成分についてステップＳ２１４の処理が行われた場合には、補正値をａとしてそのまま設定する。一方、ステップＳ２２０においてオーバーフローがあったと判定されると（ステップＳ２２０のＮ）、即ちステップＳ２１２の処理が行われた場合には、ステップＳ２２２〜ステップＳ２２８までにおいて、各色成分の補正後の色値（ステップＳ２０８〜ステップＳ２１８において設定された色成分ごとの補正値）を更に変換する。即ちステップＳ２２４において、ａ＝２２５−Ｆｇｅｔｇｅｎ（Ｘｂ,Ｙｂ,ｃ）のようにして、最大値２５５と補正値との差をａとし、ｂ＝ＯＶ＊ａ／ＳＰ＋Ｆｇｅｔｇｅｎ（Ｘｂ,Ｙｂ,ｃ）のようにして、オーバーフロー積算値ＯＶと余裕分の積算値ＳＰを反映させた補正値ｂを算出し、これを最終的な補正値ｂをＰｃの（Ｘｂ，Ｙｂ）の位置の色Ｃに設定する。
【０１２１】
そして図１２のフローチャートのようにして、カラー２次元コードＰｃの全てのサブモジュールについて補正後の色成分ごとの色値を求める。こうして第２の色値補正処理では、そのままの色値でも読み誤りなく読み取られるモジュールについては補正を行わず、読み誤りのおそれがおる色値のモジュールについてのみ補正を行う。特に中間的な値であって相対的に色値が明るいモジュールについては、オーバーフロー積算値ＯＶと余裕分の積算値ＳＰを考慮することにより、各色成分の色値にばらつきがあるモジュールについても適切な補正を行う。
【０１２２】
従って第２の例では、例えば図１３（Ａ）に示すカラーデザインデータＰｍの左下のモジュールＰｍＭ３のように、そのサブモジュールごとの色値がそのままでも白モジュールとして読み誤りなく読み取られるモジュールである場合には、図１３（Ｄ）に示す生成されるカラー２次元コードＰｃの左下のモジュールＰｃＭ３のように、補正せずにそのままの色値に基づいて、カラー２次元コードＰｃが生成される。従って図１３（Ａ）の左下のモジュールＰｍＭ３を構成するサブモジュールに他のサブモジュールとは異なる色値のものがある場合では、第１の例によると更に白くなるように補正された結果、図１３（Ｃ）の左下のモジュールＰｃＭ３のように元の色分布が失われる場合があるが、第２の例によると、図１３（Ｄ）の左下のモジュールＰｃＭ３のように元の色分布をそのまま反映させることができる。
【０１２３】
そして図１３（Ａ）に示すカラーデザインデータＰｍの左上のモジュールＰｍＭ１については、サブモジュールごとの色値の平均値が、中間値よりもやや暗い色値であるので、図１３（Ｄ）の左上のモジュールＰｃＭ１においても、変換後ビット列Ｐｃｏｄｅに基づいて、サブモジュールごとの色値が黒と読み取られるように暗い色値に補正される。
【０１２４】
３−５−３．第３の色値補正処理
また、少なくともデザインデータ領域３３に対応するカラーデザインデータＰｍのモジュールごとの色値が、色値のとり得る範囲の中間付近の第１の範囲の値である場合、即ち色値が中間的な値である場合に、各モジュールに所定のパターンで割り当てられる値に応じた変換式に基づいて色値を補正するようにしてもよい。
【０１２５】
例えば、（Ｘ，Ｙ）の位置のモジュールの色値が中間的な色値であると判定した場合に、(Ｙ＆１)＊２＋（Ｘ＆１）？のようにして、座標値Ｘ、Ｙに応じて異なる値０〜３を算出し、算出された値に対応するしきい値Ｌを当該位置のモジュールに割り当てる。そして割り当てられたしきい値に応じて用いる変換式が異なるようにして、色値の補正処理を行う。
【０１２６】
こうして第３の例によれば、色値が第１の範囲の値であるモジュールに対して、一括した補正処理を行うのではなく、例えば誤差拡散法などを用いて所定のパターンで値を割り当て、値に応じた補正処理を行う。従って第３の例によれば、色値が第１の範囲の値であるモジュールについて、所定のパターンで異なる色値を出現させて元の中間的な色値を表現することにより、可及的に元の色値を補正後の色値に反映することができる。
【０１２７】
３−５−４．デザイン領域以外への適用
また本実施形態では、図１４に示すように、デザインデータ領域３３に対応するモジュールのみならず、原データ領域３０と、誤り訂正データ領域３４と、位置検出パターン１２と位置合せパターン１３とタイミングパターン１４とに対応する機能パターン領域４６に対応するサブモジュールについても、補正後の色値に応じた色が配色されるように２次元コードを生成することができる。
【０１２８】
上述のようにデザインデータ領域３３に対応するサブモジュールは、変換後ビット列がカラーデザインデータＰｍに対応するものであるため、各モジュールの色値に応じた変換式、又は各モジュールに対応する前記変換後ビット列の値に応じた変換式に基づいて、色値を補正することにより、適切な補正後の色値を求めることができる。しかし、原データ領域３０と、誤り訂正データ領域３４と、機能パターン領域４６に対応するモジュールについては、変換後ビット列がカラーデザインデータＰｍとは無関係なものであるため、同様の変換式によって補正後の色値を求めたのでは、変換後ビット列や機能的なパターンが示す値として読み取られない色値に補正されてしまう場合がある。
【０１２９】
そこで本実施形態では、デザインデータ領域３３以外の上記各領域に対応するモジュールについては、変換後ビット列や機能的なパターンが示す値（０か１）を参照し、当該領域用の変換式を用いて、変換後ビット列や機能的なパターンが示す値として読み取られるように各色値を補正した補正後の色値を求める。具体的には、変換後ビット列や機能的なパターンが示す値が０即ちモジュールが白である場合であって、対応するカラーデザインデータＰｍのモジュールの色値が中間値よりも暗い場合には、補正後の各色成分の色値の平均値が１９２〜２５５の間の数値となるような変換式を用いる。また、変換後ビット列や機能的なパターンが示す値が１即ちモジュールが黒である場合であって、対応するカラーデザインデータＰｍのモジュールの色値が中間値よりも明るい場合には、補正後の各色成分の色値の平均値が０〜６４の間の数値となるような変換式を用いる。
【０１３０】
例えば、デザイン領域３３のサブモジュールについては、変換後ビット列の値等に応じて、Ａ’＝Ａ／２＋１２８、又はＡ’＝Ａ／２の変換式を用い、その他の領域のサブモジュールについては、Ａ´＝Ａ／４＋１９２、又はＡ´＝Ａ／４の変換式を用いるようにしてもよい。即ちデザイン領域３３では、サブモジュールごとの色値と変換後ビット列等の値が対応しているので補正率が相対的に小さい変換式を用い、その他の領域では、サブモジュールごとの色値と変換後ビット列等の値が必ずしも対応していないので補正率が相対的に大きい変換式を用いるようにしてもよい。
【０１３１】
また、変換後ビット列や機能的なパターンが示す値が０即ちモジュールが白である場合であって、対応するカラーデザインデータＰｍのモジュールの各色成分の色値の平均値が１９２〜２５５の間の明るい色の数値である場合や、変換後ビット列や機能的なパターンが示す値が１即ちモジュールが黒である場合であって、対応するカラーデザインデータＰｍのモジュールの各色成分の色値の平均値が０〜６４の間の暗い色の数値である場合には、補正せずにカラーデザインデータＰｍのモジュールの色値をそのまま２次元コードの色値としてもよい。
【０１３２】
４．構成
図１９に本実施形態の２次元コード生成システムの機能ブロック図の例を示す。なお本実施形態の２次元コード生成システムは図１９の構成要素（各部）の一部を省略した構成としてもよい。
【０１３３】
入力部１６０は、生成する２次元コードの基本データ、生成した２次元コードから読み取られるべき原データ、生成した２次元コードに構成されるデザインデータなどを入力するためのものである。その機能は、例えばボタンやレバーの他、入力部と表示部の両方の機能を有するタッチパネル型表示部（パネルに画像が表示されると共に、指やペンで画面を触れたり押すことで情報を入力できる装置）により実現できる。また、スキャナやカメラ等の光学読み取り装置によりデザインデータを入力するようにしてもよい。
【０１３４】
記憶部１７０は、処理部１００などのワーク領域となるもので、その機能はＲＡＭなどのハードウェアにより実現できる。
【０１３５】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部１００は、この情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部をコンピュータに実現させるためのプログラム）が記憶（記録、格納）される。
【０１３６】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能はＣＲＴ、液晶ディスプレイ、プラズマディスプレイ、入力部と表示部の両方の機能を有するタッチパネル型表示部により実現できる。
【０１３７】
通信部１９６は、外部（例えばホストや他の端末）との間で通信を行うための各種の制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【０１３８】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、ホスト（サーバー）が有する情報記憶媒体からネットワーク（広域ネットワーク、インターネット）及び通信部１９６を介して情報記憶媒体１８０（記憶部１７０）に配信するようにしてもよい。このようなホスト（サーバー）の情報記憶媒体の使用も本発明の範囲内に含まれる。
【０１３９】
処理部１００（プロセッサ）は、入力部１６０からの入力データやプログラムなどに基づいて、データ表示処理、データ加工処理、データ変換処理、２次元コード生成処理などの各種の処理を行う。この場合、処理部１００は、記憶部１７０内の主記憶部１７２をワーク領域として使用して、各種の処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）又はＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【０１４０】
処理部１００は、データ取得部１１０、コードサイズ決定部１１２、デザイン領域特定部１１４、２値化デザインデータ変換部１１８、２次元コードデータ生成部１２０、２次元コード変更部１２６を含む。なお、処理部１００は、これらの各部（機能ブロック）を全て含む必要はなく、その一部を省略してもよい。
【０１４１】
データ取得部１１０は、入力部１６０への入力情報に基づき、シンボルの型番情報（サイズ情報）と形式情報（誤り訂正レベル情報）とを取得する。また、本システム利用者が２次元コードシンボルを介して伝達しようとする情報である原データ（ネットワークアドレス情報等）を、２次元コードのフォーマットに基づいてビットコード（ビット列）に変換する。
【０１４２】
また、データ取得部１１０は、サイズ情報に応じた２次元コードのモジュールを分割したサブモジュールごとの色値から構成されたカラーデザインデータと、カラーデザインデータのモジュールごとの色値が各モジュールの色値に応じて２値化された２値化デザインデータとを取得する。ここでデータ取得部１１０は、所与のカラー画像データを取得してカラーデザインデータを生成するカラーデザインデータ生成部と、所与のカラー画像データに基づいて、又はカラーデザインデータに基づいて２値化デザインデータを生成する２値化デザインデータ生成部とを含むようにしてもよい。また、データ取得部１１０は、２次元コードに対応付けられた所与の２値化デザインデータを、２次元コードのフォーマットに基づいてビットコード（ビット列）に変換する。
【０１４３】
また、コードサイズ決定部１１２を採用し、取得したカラー画像データ、カラーデザインデータ、２値化デザインデータのサイズ（領域、ビット数）に応じて２次元コードのサイズを決定するようにしてもよい。例えば、取得した２値化デザインパターンに対応するモジュールがデザインデータ領域３３内に納まるように２次元コードのサイズ情報を決定し、データ取得部１１０が当該サイズ情報を取得するようにしてもよい。この場合、原データのビットコード、２値化デザインデータのビットコードに基づいて、当該２値化デザインパターンを配置可能なデザインデータ領域３３を確保できる２次元コードのサイズ情報を特定するようにしてもよい。
【０１４４】
デザインデータ領域特定部１１４は、２次元コードのサイズ情報と、原データを変換したビットコードとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域３３を特定する。より詳細には、デザインデータ領域特定部１１４は、サイズ情報に応じて誤り訂正データ領域３４を特定し、原データに基づいて原データ領域３０を特定し、サイズ情報と誤り訂正データ領域３４と原データ領域３０とに基づいてデザインデータ領域３３を特定する。
【０１４５】
２値化デザインデータ変換部１１８は、デザインデータ領域３３に対応する２値化デザインデータを、２次元コードのフォーマット情報に基づいて逆変換したビットコードを求める。具体的には、図５及び図５の説明に示す各処理を行って、２値化デザインパターンのビットコードを逆変換したビットコードを求める。
【０１４６】
補正処理部１１９は、逆変換後のビットコードが２次元コードのフォーマット及びネットワークアドレスのフォーマットに適合するか否かを判定し、不適合ビットコードについては補正処理を行ってデザインデータ領域のビットコードを求める。例えば、逆変換後のビットコードに対する判定処理と補正処理とを、２次元コードのフォーマットに基づいた分割単位ごとに行ってもよいし、全体として行ってもよい。また、ビット（モジュール）ごとに行うようにしてもよい。
【０１４７】
また、２値化デザインデータ変換部１１８の処理と補正処理部１１９の処理の順序を入れ替えて行ってもよい。例えば、補正処理部１１９が、任意アドレスデータ領域３１に対応する２値化デザインデータのビットコードが２次元コードのフォーマット及びネットワークアドレスのフォーマットに適合するか否かを判定し、不適合ビットコードについては補正処理を行って任意アドレスデータのビットコードを求め、２値化デザインデータ変換部１１８が、補正処理後の任意アドレスデータのビットコードを２次元コードのフォーマット情報に基づいて逆変換したビットコードを求めるようにしてもよい。
【０１４８】
２次元コードデータ生成部１２０は、２値化デザインデータを逆変換したビットコードと原データを示すビットコードとを２次元コードのフォーマット情報に基づいて変換して、２次元コードを生成するための変換後ビット列を生成する。具体的には、図２及び図２の説明に示す各処理を行って２次元コードを生成する。
【０１４９】
特に２次元コードデータ生成部１２０は、誤り訂正データ生成部１２２と位置合せパターン設定部１２４とを含む。この誤り訂正データ生成部１２２は、２値化デザインデータを逆変換したビットコードと原データを示すビットコードとに基づいて、生成される２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する。また、位置合せパターン設定部１２４は、２次元コードの読み取りに用いられる位置合せパターン１３を配置する。
【０１５０】
また、位置合せパターン設定部１２４は、位置合せパターン１３の省略処理を受け付けるようにしてもよい。例えば、２次元コードを生成する前に設定された情報に基づいて、位置合せパターン１３を配置しないようにしてもよい。また、所定のアルゴリズムにより、２値化デザインパターンに対応する所定のカバー領域に含まれる位置合せパターン１３を配置しないようにしてもよい。また、位置合せパターン１３を配置して２次元コードシンボル１０を完成させてから、入力情報に基づいて位置合せパターン１３を削除するようにしてもよい。
【０１５１】
２次元コード変更部１２６は、誤り訂正レベルデータに応じて、生成された２次元コードの変更処理を受け付ける。本実施の形態では、誤り訂正レベルが４段階用意されており、それぞれの復元能力が決められている。従って、２次元コードのサイズ情報と誤り訂正レベル情報とから、変更しても復元可能なモジュール数（ビット数、パターン数）の範囲内で、配置されたモジュール（ビット）の変更を受け付ける。
【０１５２】
カラーデザインデータ補正部１２８は、少なくともデザインデータ領域３３に対応するカラーデザインデータのサブモジュールごとの色値が、各モジュールに対応する変換後ビット列の値として読み取られるように各色値を補正した補正後の色値を求める。
【０１５３】
２次元コード生成部１３０は、補正後の色値及び変換後ビット列に基づいて２次元コードを生成する。即ち２次元コード生成部１３０は、補正後の色値によるカラーデザインパターンが構成された２次元コードを生成する。
【０１５４】
６．２次元コードの利用
本実施の形態で生成されたカラーデザインパターンが配置された２次元コードは、種々の印刷物に印刷してこれを利用することができる。また、テレビ放送やビデオ放映、ゲーム機等、種々のメディアを介してモニタ等の表示部に画像表示させることができる。この場合には、本実施の形態で生成されたカラーデザインパターンが配置された２次元コードの画像データを生成して、表示部に表示させればよい。
【０１５５】
特に、本実施の形態で生成された２次元コードを画像表示させる場合には、デザインデータ領域３３に配置されるカラーデザインパターンを複数種類用意しておく。この複数種類のカラーデザインパターンとして、例えば、丸、三角、四角等、形状が異なるカラーデザインパターンを用意してもよいし、連続して切り替え表示すると人が走っているように見えるように、所与のモーションをコマ割りしてそれぞれをデザインした複数のカラーデザインパターンを用意してもよい。また、各モジュールの色を、変換後ビット列が示す値として読み取られる範囲で変化させるようにしてもよい。
【０１５６】
また、本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【０１５７】
また本発明は、ＱＲコードなどのマトリックス式の２次元コードのみならず、スタック式の２次元コードなど、種々の２次元コードに関して適用することができる。その場合には、各２次元コードのフォーマットに応じて各処理を行う。
【０１５８】
また本発明は、デザインパターンが配置された２次元コードを生成するためのプログラムのみならず、デザインパターンが配置された２次元コードを生成するためのデータを生成するためのプログラム、デザインパターンが配置された２次元コード画像を生成するためのプログラム、及びそれらのプログラムを記憶した情報記憶媒体、システムにも適用することができる。
【図面の簡単な説明】
【０１５９】
【図１】本実施の形態の２次元コードの構造の一例を示す図である。
【図２】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図３】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図４】本実施の形態で生成される２次元コードの一例を示す図である。
【図５】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図６】図６（Ａ）、（Ｂ）、（Ｃ）は、本実施の形態で表示部に表示される画面の一例を示す図である。
【図７】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図８】本実施の形態の２次元コード生成処理の一例を説明するための図である。
【図９】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図１０】本実施の形態の２次元コード生成処理の一例を説明するための図である。
【図１１】本実施の形態の２次元コード生成処理の一例を説明するための図である。
【図１２】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図１３】本実施の形態の２次元コード生成処理の一例を説明するための図である。
【図１４】本実施の形態の２次元コード生成処理の一例を説明するための図である。
【図１５】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図１６】本実施の形態の処理の流れの一例を示すフローチャート図である。
【図１７】本実施の形態の機能ブロックの一例を示す図である。
【符号の説明】
【０１６０】
１０  ２次元コードシンボル、１３  位置合せパターン、１６  符号化領域、３０  原データ領域、３３  デザインデータ領域、３４  誤り訂正コード領域、４０  ２値化デザインパターン、４２  マスクパターン、４４  逆変換モジュールパターン、５２  マスク前パターン、５４  デザイン２次元コードシンボル、１００  処理部、１１０  データ取得部、１１２  コードサイズ決定部、１１４  デザインデータ領域特定部、１１８  ２値化デザインデータ変換部、１２０  ２次元コードデータ生成部、１２６  ２次元コード変更部、１２８  カラーデザインデータ補正部、１３０  ２次元コード生成部、１６０  入力部、１７０  記憶部、１８０  情報記憶媒体、１９０  表示部
【図２】
2008052588.tif 000003
【図３】
2008052588.tif 000004
【図４】
2008052588.tif 000005
【図５】
2008052588.tif 000006
【図７】
2008052588.tif 000007
【図８】
2008052588.tif 000008
【図９】
2008052588.tif 000009
【図１２】
2008052588.tif 000010
【図１６】
2008052588.tif 000011
【図１７】
2008052588.tif 000012
【図１】
2008052588.tif 000013
【図６】
2008052588.tif 000014
【図１０】
2008052588.tif 000015
【図１１】
2008052588.tif 000016
【図１３】
2008052588.tif 000017
【図１４】
2008052588.tif 000018
【図１５】
2008052588.tif 000019
【手続補正書】
【提出日】平成19年2月26日(2007.2.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記逆変換ビット列と前記原データのビット列とに基づいて、２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部と、
前記逆変換ビット列と前記原データのビット列と前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
前記デザインデータ領域に対応する前記変換後ビット列の値が、第１の値である場合には対応する前記多階調デザインデータのサブモジュールの階調値を増加させる補正を行い、第２の値である場合には対応する前記多階調デザインデータのサブモジュールの階調値を減少させる補正を行う多階調デザインデータ補正部と、
前記デザインデータ領域については前記補正後の階調値に基づいて２次元コードを生成し、前記デザインデータ領域以外の領域については前記変換後ビット列の値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項２】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記逆変換ビット列と前記原データのビット列とに基づいて、２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部と、
前記逆変換ビット列と前記原データのビット列と前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
前記デザインデータ領域に対応する前記多階調デザインデータのサブモジュールの階調値が、階調値のとり得る範囲の中間付近の第１の範囲の値であって、かつ、対応する前記変換後ビット列の値が第１の値である場合にはそのサブモジュールの階調値を増加させる補正を行い、第２の値である場合にはそのサブモジュールの階調値を減少させる補正を行う多階調デザインデータ補正部と、
前記デザインデータ領域に対応するサブモジュールのうち、前記補正が行われたサブモジュールについては前記補正後の階調値に基づいて２次元コードを生成し、前記補正が行われなかったサブモジュールについてはそのサブモジュールの階調値に基づいて２次元コードを生成し、前記デザインデータ領域以外の領域については前記変換後ビット列の値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項３】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記逆変換ビット列と前記原データのビット列とに基づいて、２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部と、
前記逆変換ビット列と前記原データのビット列と前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
前記変換後ビット列の値が、第１の値である場合には対応する前記多階調デザインデータのサブモジュールの階調値を増加させる補正を行い、第２の値である場合には対応する前記多階調デザインデータのサブモジュールの階調値を減少させる補正を行う多階調デザインデータ補正部と、
前記補正後の階調値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項４】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値から構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記逆変換ビット列と前記原データのビット列とに基づいて、２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部と、
前記逆変換ビット列と前記原データのビット列と前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
前記デザインデータ領域については、対応する前記多階調デザインデータのサブモジュールの階調値が、階調値のとり得る範囲の中間付近の第１の範囲の値であって、かつ、対応する前記変換後ビット列の値が第１の値である場合にはそのサブモジュールの階調値を増加させる補正を行い、第２の値である場合にはそのサブモジュールの階調値を減少させる補正を行い、前記デザインデータ領域以外の領域については、対応する前記変換後ビット列の値が第１の値であって、対応する前記多階調デザインデータのサブモジュールの階調値が前記第１の範囲の最大値よりも小さい場合には、そのサブモジュールの階調値を前記第１の範囲の最大値よりも大きい値に増加させる補正を行い、対応する前記変換後ビット列の値が第２の値であって、対応する前記多階調デザインデータのサブモジュールの階調値が前記第１の範囲の最小値よりも大きい場合には、そのサブモジュールの階調値を前記第１の範囲の最小値よりも小さい値に減少させる補正を行う多階調デザインデータ補正部と、
前記補正が行われたサブモジュールについては前記補正後の階調値に基づいて２次元コードを生成し、前記補正が行われなかったサブモジュールについてはそのサブモジュールの階調値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項５】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値が、第１の値として読み取られる範囲の階調値と第２の値として読み取られる範囲の階調値とから構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記逆変換ビット列と前記原データのビット列とに基づいて、２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部と、
前記逆変換ビット列と前記原データのビット列と前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
前記デザインデータ領域については前記多階調デザインデータのサブモジュールごとの階調値に基づいて２次元コードを生成し、前記デザインデータ領域以外の領域については前記変換後ビット列の値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項６】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値が、第１の値として読み取られる範囲の階調値と第２の値として読み取られる範囲の階調値とから構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記逆変換ビット列と前記原データのビット列とに基づいて、２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部と、
前記逆変換ビット列と前記原データのビット列と前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
前記デザインデータ領域以外の領域について、対応する前記変換後ビット列の値が、第１の値である場合には対応する前記多階調デザインデータのサブモジュールの階調値を増加させる補正を行い、第２の値である場合には対応する前記多階調デザインデータのサブモジュールの階調値を減少させる補正を行う多階調デザインデータ補正部と、
前記デザインデータ領域については前記多階調デザインデータのサブモジュールごとの階調値に基づいて２次元コードを生成し、前記デザインデータ領域以外の領域については前記補正後の階調値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項７】
２次元コードを生成するためのプログラムであって、
２次元コードのサイズデータと、２次元コードから読み取られるべき原データと、前記サイズデータに応じた２次元コードのモジュールを分割したサブモジュールごとの階調値が、第１の値として読み取られる範囲の階調値と第２の値として読み取られる範囲の階調値とから構成された多階調デザインデータと、前記多階調デザインデータのモジュールごとの階調値が各モジュールの階調値に応じて２値化された２値化デザインデータとを取得するデータ取得部と、
前記サイズデータと原データとに基づいて、原データのデータ量に応じた２次元コードのデザインデータ領域を特定するデザインデータ領域特定部と、
前記デザインデータ領域に対応する２値化デザインデータを２次元コードのフォーマット情報に基づいて逆変換した逆変換ビット列を求める２値化デザインデータ変換部と、
前記逆変換ビット列と前記原データのビット列とに基づいて、２次元コードの読み取り誤りを訂正するための誤り訂正データを生成する誤り訂正データ生成部と、
前記逆変換ビット列と前記原データのビット列と前記誤り訂正データのビット列とを、前記２次元コードのフォーマット情報に基づいて変換した変換後ビット列を求める２次元コードデータ生成部と、
前記デザインデータ領域以外の領域について、対応する前記変換後ビット列の値が第１の値であって、対応する前記多階調デザインデータのサブモジュールの階調値が前記第１の範囲の最大値よりも小さい場合には、そのサブモジュールの階調値を前記第１の範囲の最大値よりも大きい値に増加させる補正を行い、対応する前記変換後ビット列の値が第２の値であって、対応する前記多階調デザインデータのサブモジュールの階調値が前記第１の範囲の最小値よりも大きい場合には、そのサブモジュールの階調値を前記第１の範囲の最小値よりも小さい値に減少させる補正を行う多階調デザインデータ補正部と、
前記デザインデータ領域については前記多階調デザインデータのサブモジュールごとの階調値に基づいて２次元コードを生成し、前記デザインデータ領域以外の領域に対応するサブモジュールのうち、前記補正が行われたサブモジュールについては前記補正後の階調値に基づいて２次元コードを生成し、前記補正が行われなかったサブモジュールについてはそのサブモジュールの階調値に基づいて２次元コードを生成する２次元コード生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項８】
請求項１〜７のいずれかにおいて、
前記デザインデータ領域以外の領域は、前記原データのデータ量に応じた原データ領域及び前記サイズデータに応じた誤り訂正データ領域及び２次元コードの読み取りに用いられる機能パターンが配置される領域の少なくとも１つであることを特徴とするプログラム。
【請求項９】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１〜８のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１０】
請求項１〜８のいずれかのプログラムに基づいて機能することを特徴とする２次元コード生成システム。
【請求項１１】
請求項１〜８のいずれかのプログラムに基づいて生成したことを特徴とする２次元コード。
【請求項１２】
請求項１１の２次元コードが印刷されたことを特徴とする印刷物。
【請求項１３】
請求項１１の２次元コードを画像として表示することを特徴とする画像表示方法。
【請求項１４】
請求項１１の２次元コードであって、異なる前記多階調デザインデータに基づいて生成した複数の前記２次元コードを連続的に切り替えて画像表示することを特徴とする画像表示方法。