特許第6270178号(P6270178)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人 鹿児島大学の特許一覧

特許62701782次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体
<>
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000005
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000006
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000007
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000008
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000009
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000010
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000011
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000012
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000013
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000014
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000015
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000016
  • 特許6270178-2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6270178
(24)【登録日】2018年1月12日
(45)【発行日】2018年1月31日
(54)【発明の名称】2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体
(51)【国際特許分類】
   G06K 19/06 20060101AFI20180122BHJP
   G06K 1/12 20060101ALI20180122BHJP
【FI】
   G06K19/06 037
   G06K19/06 046
   G06K19/06 103
   G06K1/12 A
【請求項の数】6
【全頁数】15
(21)【出願番号】特願2016-249272(P2016-249272)
(22)【出願日】2016年12月22日
(62)【分割の表示】特願2013-81180(P2013-81180)の分割
【原出願日】2013年4月9日
(65)【公開番号】特開2017-54560(P2017-54560A)
(43)【公開日】2017年3月16日
【審査請求日】2017年1月12日
(73)【特許権者】
【識別番号】504258527
【氏名又は名称】国立大学法人 鹿児島大学
(74)【代理人】
【識別番号】100090273
【弁理士】
【氏名又は名称】國分 孝悦
(72)【発明者】
【氏名】小野 智司
(72)【発明者】
【氏名】渕田 孝康
(72)【発明者】
【氏名】谷山 大介
(72)【発明者】
【氏名】田尻 昌之
【審査官】 梅沢 俊
(56)【参考文献】
【文献】 特開平08−249408(JP,A)
【文献】 特開2013−025475(JP,A)
【文献】 特開2009−151700(JP,A)
【文献】 特開2007−034998(JP,A)
【文献】 特開2007−043456(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 19/06
G06K 1/12
(57)【特許請求の範囲】
【請求項1】
公開情報としてのデータ、秘匿情報及び画像を入力する入力工程と、
セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成工程と、
前記解候補生成工程において生成された解候補が前記画像と類似しているか否かを、少なくとも1つの目的関数に基づいて評価する解候補評価工程とを有し、
前記解候補生成工程においては、前記解候補評価工程における評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、
前記解候補評価工程においては、前記解候補生成工程において生成された新たな解候補について評価することを特徴とする2次元コード生成方法。
【請求項2】
前記解候補評価工程においては、前記画像との類似度を算出して類似しているか否か、を評価することを特徴とする請求項に記載の2次元コード生成方法。
【請求項3】
前記解候補生成工程においては、前記解候補評価工程における評価に応じて、前記複数の構成要素と、前記算出した類似度とに基づいた新たな解候補を生成することを特徴とする請求項2に記載の2次元コード生成方法。
【請求項4】
公開情報としてのデータ、秘匿情報及び画像を入力する入力手段と、
セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成手段と、
前記解候補生成手段によって生成された解候補が前記画像と類似しているか否かを、少なくとも1つの目的関数に基づいて評価する解候補評価手段とを有し、
前記解候補生成手段は、前記解候補評価手段による評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、
前記解候補評価手段は、前記解候補生成手段によって生成された新たな解候補について評価することを特徴とする2次元コード生成装置。
【請求項5】
請求項1〜3の何れか1項に記載の2次元コード生成方法の各工程をコンピュータに実行させることを特徴とするプログラム。
【請求項6】
請求項に記載のプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特に、秘匿情報を格納するために用いて好適な2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体に関する。
【背景技術】
【0002】
近年、QRコード(登録商標)に代表される2次元コードは、電子チケットに用いられるなど、用途が多角化し、金銭的な価値を持つ認証に使われ始めている。これに対し、悪意のあるURLを含んだ2次元コードを偽造し、他の2次元コード上に貼りつけるなどして、フィッシングサイトに誘導するなど、2次元コードを利用した事件が起きている。
【0003】
しかしながら、一般の2次元コードは偽造や複製への対策が取られておらず、偽造や複製を防止する手法の開発が要求されている。2次元コードの偽造を防止する手段として、格納データを暗号化する方法がある。しかし、それらの2次元コードを一般のデコーダで読み取った場合、提示される情報は意味不明な文字の羅列となる。そのため、ユーザに不信感を与えるという問題がある。
【0004】
また、2次元コードの埋め草コードに秘匿情報を埋め込む手法も提案されている(例えば、特許文献1参照)。2次元コードは型番によってデータ長が定められており、埋め込むデータのサイズがデータ長よりも小さい場合、足りない部分には埋め草コードが埋められる。この埋め草コードを秘匿したいデータと置き換えることにより、一般のデコーダでは読み取ることのできない秘匿情報を2次元コードに埋め込むことを可能としている。しかしながらこの手法では、埋め草コードが秘匿情報となっているため、そのことを知っている場合には秘匿情報を容易に抽出することができてしまう。
【0005】
一方、2次元コードの普及は急速に進み、広告媒体として視覚的誘因生が低下している傾向にある。このため、近年、視覚的誘因性を向上させるために、2次元コードの内部に写真やイラストを組み込んだ装飾性の高い2次元コードが提案されている。このように2次元コードの装飾性を高めることにより、読み取る前から2次元コードに格納された情報を識別しやすくしたり、視認性を向上させてオリジナリティを演出したりすることができる。
【0006】
ところが、写真やイラストを組み込むと、組み込んだ箇所の情報が隠蔽されるため、2次元コードを読み取る際に誤り訂正機能を用いて復号を行う必要がある。このように写真やイラストの大きさや配置位置に制限があるため、2次元コード上での写真やイラストを配置する位置を最適化して、装飾性と可読性とを両立させる必要がある。そのため、埋め草コード語の領域を制御したり、誤り訂正語の領域を変形対象としたりするなど、モジュールパターンを変更する方法が制限されており、データが埋め込まれた領域のモジュールパターンを変更することが難しかった。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2012−89177号公報
【特許文献2】特開2013−25475号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は前述の問題点に鑑み、データが埋め込まれる領域において冗長な構造の2次元コードを生成するための2次元コード生成方法、2次元コード生成装置、プログラム及び記憶媒体を提供することを目的としている。
【課題を解決するための手段】
【0010】
本発明の2次元コード生成方法は、公開情報としてのデータ、秘匿情報及び画像を入力する入力工程と、セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成工程と、前記解候補生成工程において生成された解候補が前記画像と類似しているか否かを、少なくとも1つの目的関数に基づいて評価する解候補評価工程とを有し、前記解候補生成工程においては、前記解候補評価工程における評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、前記解候補評価工程においては、前記解候補生成工程において生成された新たな解候補について評価することを特徴とする。
【0011】
本発明の2次元コード生成装置は、公開情報としてのデータ、秘匿情報及び画像を入力する入力手段と、セルの配置パターンの生成に関連し、前記データを格納する前記秘匿情報に応じたセグメントの構成要素を含む複数の構成要素を変数として、解候補として前記データを符号化した2次元コードを生成する解候補生成手段と、前記解候補生成手段によって生成された解候補が前記画像と類似しているか否かを、少なくとも1つの目的関数に基づいて評価する解候補評価手段とを有し、前記解候補生成手段は、前記解候補評価手段による評価に応じて、前記複数の構成要素に基づいた新たな解候補を生成し、前記解候補評価手段は、前記解候補生成手段によって生成された新たな解候補について評価することを特徴とする。
【0012】
本発明のプログラムは、前記2次元コード生成方法の各工程をコンピュータに実行させることを特徴とする。
【0013】
本発明の記憶媒体は、前記プログラムを記憶したことを特徴とする。
【発明の効果】
【0014】
本発明によれば、データが埋め込まれる領域において冗長な構造を有することにより、秘匿情報を簡単に読み取れないようにしたり、装飾性を向上させたりすることができる。
【図面の簡単な説明】
【0015】
図1】本発明の実施形態に係る2次元コード生成装置のハードウェア構成例を示すブロック図である。
図2】本発明の実施形態に係る2次元コード生成装置の機能構成例を示すブロック図である。
図3】一般的な2次元コードのデータ構造例を示す図である。
図4】一般的なセグメントの構造例を示す図である。
図5】本発明の実施形態における冗長性を持たせたセグメントの構造例を示す図である。
図6】本発明の実施形態において、秘匿情報をセグメントに埋め込んだ場合のセグメントの構造例を示す図である。
図7】本発明の実施形態において、秘匿情報をセグメントに埋め込んだ場合のセグメントの他の構造例を示す図である。
図8】本発明の実施形態において、初期集団として複数パターンの2次元コードを生成する処理手順の一例を示すフローチャートである。
図9】誤り訂正レベルの一覧を示す図である。
図10】本発明の実施形態において、遺伝的アルゴリズムにより出力する2次元コードを生成する処理手順の一例を示すフローチャートである。
図11】入力される画像の目標領域、境界領域及び背景領域を説明する図である。
図12】Genotype及びPhenotypeを説明する図である。
図13】イラストを貼り付けた2次元コード及びイラストに類似したパターンの2次元コードの一例を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態について、図面を参照しながら説明する。本実施形態では、2次元コードの1種であるQRコードを参照しながら説明する。
【0017】
図1は、本実施形態に係る2次元コード生成装置100のハードウェア構成例を示すブロック図である。
図1において、CPU101は、2次元コード生成装置100全体を制御するものであり、必要な時にROM103に記憶されたプログラムを読み出してRAM102に展開し、本実施形態に係る処理を実行する。入力装置104は、着脱可能なメモリカードなどの記録媒体を装着することができ、2次元コードに埋め込むデータ及び秘匿情報を入力したり、セルパターンとして形成させたい写真やイラストを入力したりする。
【0018】
操作部105は、ユーザの操作に応じてコマンドを入力する操作部材である。記憶装置106は例えばハードディスクであり、データを記憶するためのものである。画像表示装置107は例えば液晶ディスプレイであり、2次元コードを生成できない旨のエラーなどを警告表示したり、2次元コードの条件等を設定するためのメニュー画面を表示したりする。ネットワークインタフェースカード(NIC)108は、LAN110を介して他の情報機器とデータをやり取りするためのインターフェースである。メインバス109は前述した各構成を接続するためのバスである。
【0019】
図2は、本実施形態に係る2次元コード生成装置100の機能構成例を示すブロック図である。
図2において、データ入力部201は、入力装置104、または外部装置からLAN110を介して2次元コードに埋め込むデータ(文字列)を入力する。2次元コードに秘匿情報を埋め込む場合には、秘匿情報も入力する。
【0020】
解候補生成部202は、入力された文字列及び秘匿情報からコード語及びメタデータを生成し、データコード語、型番、誤り訂正レベル、マスクパターン、埋め草コード語などを変数として、2次元コードを複数パターン生成し、解候補記憶部206に記憶する。本実施形態では、データコード語において、冗長なセグメント構造とすることにより、秘匿情報をメタデータとして埋め込むことができるようにしている。なお、この冗長なセグメント構造については後述する。また、本実施形態では、詳細な説明は後述するが、このような複数の2次元コードから遺伝的アルゴリズムにより、秘匿情報を格納するとともに所望の写真やイラストを反映させた2次元コードを生成するようにする。
【0021】
画像入力部203は、入力装置104、または外部装置からLAN110を介して写真やイラストなどの画像データを入力する。解候補評価部204は、解候補記憶部206に記憶された2次元コードと、画像入力部203により入力された画像データとを比較することにより、遺伝的アルゴリズムを用いて2次元コードを評価する。出力部205は、生成された2次元コードを出力する。
【0022】
図3は、一般的な2次元コードのデータ構造例を示す図である。
図3に示すように、2次元コードのデータは、型番、マスクパターン、誤り訂正レベル、埋め込むデータ(データコード語)、埋め草コード語(さらには誤り訂正語を含む)で構成されている。埋め込むデータはさらに複数のセグメントから構成されており、数字モード、漢字モードなどモードによって分割されている。
【0023】
例えば図4に示すように、「エンコードテストdummyURL-kadai.jp」という情報を2次元コードに埋め込む場合には、セグメント1には、カタカナ表記の8文字の「エンコードテスト」の情報が埋め込まれ、セグメント2には、アルファベット表記の17文字の「dummyURL-kadai.jp」の情報が埋め込まれる。これらのセグメントに秘匿情報を埋め込むと、一般のデコーダでも各セグメントの情報を読み取ることができるため、秘匿情報が簡単に入手されてしまう。
【0024】
図5は、本実施形態において、冗長性を持たせたセグメントの構造例を示す図である。
本実施形態では、セグメントのメタデータ(モード指示子やECIモード指示子、ECI割当て番号など)として秘匿情報を埋め込む。この場合、一般のデコーダでは、セグメントのメタデータは復号の犀利に利用されるだけであり、最終的な復号結果には表れない。基本的に、公開情報を一般的な手順で符号化するだけでは、セグメントのメタデータで所望の秘匿情報を表現することはできない。本実施形態では、所望の秘匿情報とメタデータとが一致するように、本来は不要な冗長なセグメントの構造を生成する。そのために、例えば、通常は1つのセグメントで表現すべき文字列を故意に2つのセグメントに分けたり、図5に示すように、実際には何も情報を含まない文字数が0の空のセグメントを含ませたりすることにより実現する。
【0025】
図6は、秘匿情報をセグメントに埋め込んだ場合のセグメントの構造例を示す図である。
図6に示す構造において、上段はセグメントの要素を示し、中段はビットを示し、さらに下段は秘匿情報を示している。図6に示す文字数0のセグメント1には、「8ビットバイト」のモードと「漢字」のモードとが存在し、これらのモードを示すモード指示子が秘匿情報を表している。一方、公開情報として埋め込まれているデータ部には、秘匿情報が埋め込まれていない。
【0026】
図7は、秘匿情報をセグメントに埋め込んだ場合のセグメントの他の構造例を示す図である。
図7に示す例では、文字数指示子が秘匿情報を表しており、セグメント1の文字数指示子「101」、セグメント2の文字数指示子「010」、それ以降の文字数指示子を接続することにより、秘匿情報「1010100...」を表している。なお、文字数指示子のビット数は、文字数指示子の下位2〜3ビット程度を用いる。
【0027】
以上のように本実施形態では、本来は不要なセグメントの切り替えや文字数0のセグメントを設けることにより、冗長性を持たせたデータ構造としている。一方、セグメントに冗長性を持たせることによって埋め込むデータ(データコード語)を変数として、所望の写真やイラストに類似したモジュールパターンを含む2次元コードを生成することもできる。
【0028】
写真やイラストを組み込むと、組み込んだ箇所の情報が隠蔽されるため、2次元コードを読み取る際に誤り訂正機能を用いて復号を行う必要がある。このように写真やイラストの大きさや配置位置に制限があるため、2次元コード上での写真やイラストを配置する位置を最適化して、装飾性及び可読性を両立させる必要がある。そこで本実施形態では、特許文献2で設計変数とされている2次元コードの埋め草コード語、誤り訂正語などのモジュールパターンに加えて、データコード語のセグメントの構造を設計変数として加える。これらの値の組み合わせを調整し、写真やイラスト等に類似するモジュールパターンを形成することにより装飾性及び可読性を確保する。
【0029】
図8は、解候補生成部202により、初期集団として複数パターンの2次元コードを生成する処理手順の一例を示すフローチャートである。
まず、ステップS801において、2次元コードを生成する指示とともに、データ入力部201から公開情報である文字列のデータを入力するまで待機する。そして、文字列のデータを入力すると、ステップS802において、入力された文字列をもとに、コード語を生成する。このとき、データコード語については、秘匿情報が入力された場合に以下のような手順により生成する。
【0030】
本実施形態では、図6に示したようなモード指示子が秘匿情報を表すパターンと、図7に示したような文字数指示子が秘匿情報を表すパターンとの2通りのデータコード語を生成することができる。また、これ以外に、文字数が0のセグメントを利用し、例えば、空でないセグメントを1とし、空のセグメントを0として、セグメントの順列により秘匿情報を表すことも可能である。そして、後述するステップS805において組み合わせを決定する際に、これらの数パターンの中から1つを選択する。
【0031】
まず、モード指示子が秘匿情報を表すパターンの生成方法について説明する。モード指示子には、「8ビットバイト」のモード、「漢字」のモードの、「数字」のモード、及び「英数字」のモードが存在し、これらのモードの出現順序によって秘匿情報と対応付ける。このとき、データ部に埋め込む公開情報の字種の並びによっては、所望の秘匿情報を埋め込むことができない場合があるが、その際は文字数が0であるセグメント(空セグメント)を挿入する。
【0032】
まず、長さがnの秘匿情報のビット列を2ビットごとに区切り、2ビット組の順列B1、B2、・・・、B[n/2]を得る。そして、公開情報を一般的な方法により符号化し、セグメント列S1、S2、・・・、SNを得る。次に、i=1から順にBiとSiとを比較し、モード指示子が一致しているか否かを判定して、一致していない場合にのみ、Siに空のセグメントを追加し、そのSiのモード指示子をBiのモード指示子に対応させる。以上のような手順によりi=[n/2]まで達した場合には、秘匿情報の終端を表すビット列を埋め込む。
【0033】
次に、文字数指示子が秘匿情報を表すパターンの生成方法について説明する。以下の説明では、文字数指示子の下位2ビットを用いる例について説明する。まず、同一の文字モードでエンコードする最大文字数2pを決定し、埋め込む秘匿情報のビット列をpビットごとに区切り、pビット組の順列B1、B2、・・・、B[n/p]に変換する。そして、注目する秘匿情報のビット組を示すi、及び注目するセグメントを示すlを1に初期化する。
【0034】
次に、セグメントlの公開情報の注目する文字xからモード指示子を決定する。そして、Biを10進数に変換した値にlを加算した値dを計算する。次に、公開情報がx文字からx+d文字まで、同一のモードで符号化できる場合は、d文字からなるセグメントlを生成する。そして、iおよびlに1を加算し、xにdを加算する。そして、i が[n/p]に達した場合は、秘匿情報の終端を表すビット列を埋め込む。一方、i<[n/p]の場合は、上記手順を繰り返す。
【0035】
一方、公開情報がx文字からx+d文字まで、同一のモードで符号化できない場合は、連続してエンコード可能な文字(d′文字とする)を用いてセグメントlを生成する。この場合、秘匿情報は埋め込まず、xにd′を加算して前述した手順に戻る。また、全ての公開情報を既に符号化済みの場合は、残りの秘匿情報について、モード指示子が秘匿情報を表すパターンの生成方法を用いて符号化する。
【0036】
次に、ステップS803において、生成したコード語の先頭にモード指示子及び文字数指示子を付与する。そして、ステップS804において、生成したコード語の終端に終端ビットを付与する。
【0037】
次に、ステップS805において、データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語の組合せをランダムに設定する。このとき、一度適用した組合せについては再度選択しないようにする。また、誤り訂正レベルについては、図9に示すように、L、M、Q、Hの4段階に設定することが可能である。また、2次元コードの用途として、印刷物や物品などに用いられるような場合には、誤り訂正機能を大きくするために、初期設定として例えば、Q、Hの2段階のみに設定するようにしてもよい。
【0038】
次に、ステップS806において、ステップS805において設定された埋め草コード語を生成し、ステップS804で付与した終端ビットの後方に追加する。なお、埋め草コード語の長さは、2次元コードの型番及び誤り訂正レベルに基づいて決定される。また、型番によって残余コード語や残余ビットが必要な場合は、残余コード語や残余ビットを付加する。そして、設定された誤り訂正レベルの誤り訂正コード語を追加する。ここで、誤り訂正コード語は、データコード語、誤り訂正レベル、型番、入力された文字列のコード語、及び埋め草コード語により決定されるものである。したがって、誤り訂正コード語を変更することによって、これらの5つの要素の情報を変更することができる。本実施形態では、このように誤り訂正レベル、型番などを設計変数として取り扱うため、誤り訂正コード語の領域におけるセルの配置パターンも変更することができる。次に、ステップS807において、ステップS806までに生成されたビット列をブロック分割し、各ブロックにおいてRS符号を生成する。
【0039】
次に、ステップS808において、生成されたコード語を、ステップS805で設定された型番のシンボル上に配置する。本実施形態では、2値化を容易にして可読性を確保するためセルの色は白及び黒の2色を用いるものとする。そして、ステップS809において、ステップS805で設定されたマスクパターンに従ってマスク処理を行う。そして、ステップS810において、形式情報及び型番情報を2次元コードのシンボル上の所定の位置に配置し、初期集団としての2次元コードを生成する。
【0040】
次に、ステップS811において、所定数の2次元コードが得られたか否かを判定する。この判定の結果、所定数の2次元コードが得られていない場合は、ステップS805に戻り、異なる組合せによりデータコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を設定する。一方、所定数の2次元コードが得られた場合は、初期集団生成部202による処理を終了する。なお、初期集団として必要な2次元コードの数は、後述する遺伝的アルゴリズムで用いるパラメータによって決定される。
【0041】
次に、解候補評価部204の評価により、遺伝的アルゴリズムを用いて写真またはイラストの形状が反映された2次元コードを生成する方法について説明する。写真やイラストの形状を反映させるようにセルの配置パターンを変更すると、2次元コードの内部のデータが変更されるため、可読性が低下する。そこで、可読性を維持しつつ、セルの配置パターンを変更させるためには、2次元コードの内部の構成データを変更することが必要である。
【0042】
そこで本実施形態では、構成要素として、セルの配置パターンに影響する誤り訂正レベル、マスクパターン、型番、埋め草コード語、及びデータコード語における空セグメントの位置や個数、空でないセグメントの分割の有無等を遺伝的アルゴリズムの設計変数とし、遺伝的アルゴリズムにより、入力された写真やイラストが反映された2次元コードを生成する。
【0043】
図10は、解候補評価部204において遺伝的アルゴリズムにより2次元コードの解候補を評価する処理手順の一例を示すフローチャートである。
まず、ステップS1001において、画像入力部203から写真やイラストなどの画像データを入力する。
【0044】
次に、ステップS1002において、解候補評価部204は、解候補記憶部206に記憶されている2次元コードと、ステップS1001で入力された画像データとを比較し、以下の式(1)及び式(2)により類似度を示す適応度Q(C)を算出する。
【0045】
【数1】
【0046】
【数2】
【0047】
ここで、O(x,y)は、2次元コードにおける実際の階調値であり、T(x,y)は、出力する2次元コードとして理想的な階調値である。また、H,Wはそれぞれ、縦及び横のピクセル数を示す。本実施形態では、閾値εは、入力された画像と類似するまで解候補の生成と評価とを繰り返し、類似しているとみなせる程度に小さい値に設定する。
【0048】
また、ωは重み画像における階調値を示し、入力された画像から算出される値である。図11に示すように、入力された画像においては、目標領域1101、境界領域1102及び背景領域1103に分かれる。階調値ωの算出方法は、これらの領域によって異なり、目標領域1101での階調値ωtarget、境界領域1102での階調値ωborder、及び背景領域1103での階調値ωbackは、以下の式(3)により算出される。
【0049】
【数3】
【0050】
ここで、Sallは、2次元コードの面積であり、Stargetは、画像内の主に表現したい目標領域601の面積である。また、Sbackは、その他の背景領域1103の面積である。
【0051】
次に、ステップS1003において、解候補評価部204は、解候補記憶部206に記憶されている2次元コードの中から、ランダムに2つの2次元コードを読み出す。そして、後述するステップS1004での交叉及び突然変異により直前に生成された子の2次元コードを解候補記憶部206から読み出す。そして、子の2次元コード、及び読み出した2つの2次元コードを合わせた4つの中から最も適応度の高い2次元コードを選択し、さらに、ルーレットにより1つの2次元コードを選択する。ここで、ルーレットにより1つの2次元コードを選択する際に、適応度の高い順に比重を高く設定し、適応度の高い2次元コードほど高い確率で選択されるようにする。
【0052】
次に、ステップS1004において、解候補生成部202は、ステップS1003で選択された2つの2次元コードを親とし、交叉により子個体を生成する。そして、生成した子個体の全ての遺伝子(データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語)に3%の突然変異を起こす。
【0053】
図12は、Genotype及びPhenotypeを説明する図である。
ステップS1004における交叉及び突然変異では、図12に示すように、Genotypeで表現してデータコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を操作する。この場合、誤り訂正レベル、マスクパターン及び型番は固定長であり、それぞれ2ビット、3ビット、6ビットである。一方、埋め草コード語は、型番、誤り訂正レベル及び埋め込まれたデータの文字数に依存するため、可変長である。交叉の方法としては、一様交叉を用いて子個体を生成する。また、突然変異では、設計変数となる各ビットにおいて3%の確率でビットの反転を行う。そして、ステップS1005において、解候補生成部202は、生成した子個体をPhenotypeである2次元コードにエンコードし、解候補記憶部206に記憶する。
【0054】
次に、ステップS1006において、解候補評価部204は、遺伝子操作を繰り返した結果、適応度が所定値を上回る2次元コードが得られているか否かを判定する。この判定の結果、適応度が所定値を上回る2次元コードが得られている場合は入力画像と類似しているとみなし、ステップS1007において、その2次元コードを出力部205から出力し、処理を終了する。出力方法としては、画像表示装置107に解候補である2次元コードを表示してもよく、LAN110を介して外部装置に送信してもよい。
【0055】
一方、ステップS1006の判定の結果、適応度が所定値を上回る2次元コードが得られていない場合は類似していないとみなし、ステップS1002に戻り、所望の2次元コードが得られるまで処理を繰り返す。以降、ステップS1002では、子の2次元コードなど、適応度が算出されていない2次元コードのみ適応値を算出すればよい。
【0056】
図13(a)は、文字を貼り付けた2次元コードの一例を示す図であり、図13(b)は、本実施形態に係る方法により生成した2次元コードの一例を示す図である。図13に示すように、本実施形態に係る方法により、「2」に類似するパターンにより2次元コードを生成することができる。
【0057】
以上のように本実施形態によれば、データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を変数として、遺伝的アルゴリズムにより写真やイラストを最も反映させた2次元コードを生成することもできる。
【0058】
なお、本実施形態では、遺伝的アルゴリズムにより写真やイラストを反映させた2次元コードを生成したが、解候補の生成と評価とを繰り返すアルゴリズムであれば、他のアルゴリズムを用いてもよい。このように試行錯誤的に解候補の生成及び評価を行うことにより最適化するアルゴリズムとしては、他に、ランダム法、シンプレックス法、山登り法、焼き鈍し法、タブー探索などの単点探索アルゴリズム、または、遺伝的アルゴリズム、粒子群最適化、蟻コロニー最適化などの多点探索アルゴリズムなどが挙げられる。
【0059】
また、本実施形態では、初期集団の2次元コードを複数生成したが、アルゴリズムの種類によっては、初期集団の2次元コードの生成が不要である場合もある。このようなアルゴリズムを用いて解候補の生成と評価とを繰り返す場合には、図8に示す処理により初期集団として複数の2次元コードを生成しなくてもよい。
【0060】
また、本実施形態では、目的となるイラスト等との類似性を目的関数としたが、目的となるイラスト等との類似性を第1目的関数、モジュールパターンの評価(同色の行・列の隣接モジュール、同色のモジュールブロック、行・列における1:1:3:1:1の比率の明暗パターン、全体に対する暗モジュールの占める割合)を第2目的関数とするなどして、多目的最適化を行っても良い(JIS X 0510:2004 P.45)。
【0061】
さらに、本実施形態では、QRコードの構造を例に説明したが、他の2次元コードについても同様に、シンボルを形成するパターンの生成に関連する構成要素を可変し、解候補の生成と評価とを繰り返すことにより同様の効果が得られる。
【0062】
また、本実施形態では、データコード語、誤り訂正レベル、マスクパターン、型番及び埋め草コード語を設計変数として設定したが、設計変数としてはこれらの5つ以外に、残余コード語、残余ビットなどを含めて設計変数としてもよい。
【0063】
さらに本実施形態では、空セグメントの位置や個数、空でないセグメントの分割の有無等によりデータコード語を設計変数として設定したが、秘匿情報を含まないような場合であっても前述した手順で最終的な2次元コードを決定することができる。
【0064】
(その他の実施形態)
前述した本発明の実施形態における2次元コード生成装置を構成する各手段、並びに2次元コード生成方法の各工程は、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記憶したコンピュータ読み取り可能な記憶媒体は本発明に含まれる。
【0065】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0066】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図8及び図10に示すフローチャートに対応したプログラム)を、システムまたは装置に直接、または遠隔から供給する場合も含む。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【0067】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0068】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0069】
プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)などもある。
【0070】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。
【0071】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0072】
また、その他の方法として、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0073】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0074】
さらに、その他の方法として、記憶媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれ、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【符号の説明】
【0075】
201 データ入力部
202 解候補生成部
203 画像入力部
204 解候補評価部
205 出力部
206 解候補記憶部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13