説明

二次元コードを出力する計算機及び当該計算機に実行されるプログラム

【課題】二次元コードに埋め込む画像の配置位置及び配置サイズを指定して、二次元コードを作成する。
【解決手段】計算機であって、二次元コードに格納される情報及び当該二次元コードに埋め込まれる画像データを取得する第1の処理と、前記取得した情報を符号化して、二次元コードを作成する第2の処理と、前記取得した画像データの配置位置、配置サイズのうちの少なくとも一つを調整する第3の処理と、前記調整した配置位置、配置サイズに従って、前記取得した画像データを、前記作成した二次元コードに仮で配置する第4の処理と、前記画像データが仮で配置された二次元コードの誤り率を算出する第5の処理と、第3から第5の処理を繰り返す第6の処理と、前記算出した誤り率を参照して、前記画像データの配置位置、配置サイズを決定する第7の処理と、を行う。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、二次元コードを出力する計算機に関するものである。
【背景技術】
【0002】
二次元コードは、様々な種類のものが規格化されている。また、それぞれの二次元コードの出力方法は確立されている。そのため、一般に利用されている二次元コードは、それぞれの規格に関する仕様書及び規格書にもとづいて出力される(二次元コードの一種であるQRコードの規格については、非特許文献1を参照)。また、二次元コードに含まれる画素を書き換えることによって、任意のモノクロ画像を二次元コードの一部として、埋め込む技術が知られている(詳細については、特許文献1を参照)。
【先行技術文献】
【0003】
【特許文献1】 特許公開2007−34998号公報
【非特許文献1】 JIS X 0510(日本工業規格)
【発明の概要】
【発明が解決しようとする課題】
【0004】
出力された二次元コードは、目視ではランダムなモザイク模様にしか見えない。そのため、二次元コードは、読取処理(二次元コードの復号化)を行わない限り、格納されている情報を認識できなかった。そこで、特許文献1では、読取品質を確保しつつ、二次元コード内に任意のモノクロ画像を埋め込む技術が開示されている。しかしながら、特許文献1の技術では、二次元コード内にカラー画像を埋め込むことができなかった。本発明の代表的な形態は、二次元コードに任意の画像を埋め込む過程における、デザイン性の向上及び二次元コードの読取品質(復号化の成功率)の向上を目的とする。
【課題を解決するための手段】
【0005】
本発明の代表的な形態は、プロセッサ、メモリ及び入出力インターフェースを備える計算機であって、二次元コードに格納される情報及び当該二次元コードに埋め込まれる画像データを取得する第1の処理と、前記取得した情報を符号化して、二次元コードを作成する第2の処理と、前記取得した画像データの配置位置、配置サイズ及び配置状況のうちの少なくとも一つを調整する第3の処理と、前記調整した配置位置、配置サイズ及び配置状況に従って、前記取得した画像データを、前記作成した二次元コードに仮で配置する第4の処理と、前記画像データが仮で配置された二次元コードの誤り率を算出する第5の処理と、第3から第5の処理を繰り返す第6の処理と、前記算出した誤り値を参照して、前記画像データの配置位置、配置サイズ及び配置状況を決定する第7の処理と、を行う。
【発明の効果】
【0006】
本発明によれば、画像を埋め込んだ二次元コードのデザイン性及び二次元コードの読取品質(復号化の成功率)を向上できる。
【図面の簡単な説明】
【0007】
【図1】本発明の第1の実施の形態の計算機システムの構成図である。
【図2】本発明の第1の実施の形態の二次元コードの出力方法の概念図である。
【図3】本発明の第1の実施の形態の計算機システムの処理のフローチャートである。
【図4】本発明の第1の実施の形態の透過処理の説明図である。
【図5A】本発明の第1の実施の形態の調整処理のフローチャートである。
【図5B】本発明の第1の実施の形態の調整処理のフローチャートである。
【図5C】本発明の第1の実施の形態の調整処理のフローチャートである。
【図6】本発明の第1の実施の形態のドットアイコン化処理の説明図である。
【図7】本発明の第1の実施の形態の二値化処理のフローチャートである。
【図8】本発明の第1の実施の形態の二値化された画像データの概念図である。
【図9】本発明の第1の実施の形態の配置調整処理のフローチャートである。
【図10】本発明の第1の実施の形態の誤り率算出処理のフローチャートである。
【図11】本発明の第1の実施の形態の輪郭部の誤り判定の説明図である。
【図12】本発明の第3の実施の形態の配置調整処理のフローチャートである。
【発明を実施するための形態】
【0008】
(第1の実施の形態)
図1は、本発明の第1の実施の形態の計算機システムの構成図である。計算機システムは、計算機1、入力装置6及び出力装置7を含む。計算機1は、CPU4、メモリ5及び記憶装置2を備える。記憶装置2は、各種情報を記憶する。メモリ5は、CPU4に実行されるプログラム及びCPU4によって必要とされる情報を記憶する。CPU4は、メモリ5に記憶されたプログラムを実行することによって、各種処理を実行する。また、計算機1には、入力装置6及び出力装置7が接続される。入力装置6には、各種情報が入力される。入力装置6は、例えば、キーボード又はマウスである。出力装置7は、各種情報を出力する。出力装置7は、例えば、ディスプレイ又はプリンタである。なお、入力装置6及び出力装置7は、計算機1に含まれていてもよい。また、計算機1は、通信網8と接続されていてもよい。通信網8は、他の計算機が接続されているネットワークであればいかなるものであってもよい。例えば、通信網8は、インターネット又はイントラネットである。
【0009】
メモリ5は、二次元コード出力プログラム3を記憶する。二次元コード出力プログラム3は、CPU4によって実行されることによって、本実施の形態の各種処理を行う。具体的には、二次元コード出力プログラム3は、記憶装置2に格納されているデータを読み出す。また、二次元コード出力プログラム3は、入力装置6に入力された情報を受信する。また、二次元コード出力プログラム3は、出力装置7にデータを出力させる。更に、二次元コード出力プログラム3は、通信網8に存在する他の計算機とデータを送受信する。なお、二次元コードは、水平方向及び垂直方向に情報を持つコードであれば、いかなるものであってもよい。例えば、二次元コードは、QR Code、PDF417、Maxi Code、Data Matrixなどである。
【0010】
図2は、本発明の第1の実施の形態の二次元コードの出力方法の概念図である。計算機1は、文字列情報I21及び埋込データG21などを受け取る。すると、計算機1は、文字列情報I21を符号化し、二次元コードを作成する。次に、計算機1は、作成した二次元コードに、埋込データG21を埋め込んだ画像付二次元コードC21を作成する。そして、計算機1は、作成した画像付二次元コードC21を出力する。なお、文字列情報I21は、符号化されて、二次元コードに格納される情報である。つまり、読取装置は、画像付二次元コードC21を読み取って復号化すると、文字列情報I21を取得できる。埋込データG21は、二次元コードC21に埋め込もうとする画像データであり、画像付二次元コードC21に埋め込まれる画像データである。なお、埋込データG21は、ファイル形式、サイズ及び容量を問わず、カラー画像データであってもよいし、白黒画像データであってもよい。
【0011】
図2では、文字列情報I21が「patent application」という文字列である場合を示すが、いかなる文字列であってもよい。また、埋込データG21は、ロゴ画像データであるが、いかなる画像データであってもよい。また、作成される画像付二次元コードC21は、QRコードであるが、いかなる二次元コードであってもよい。なお、QRコードは、JIS X 0510(日本工業規格)で規定されている二次元コードである。
【0012】
図3は、本発明の第1の実施の形態の計算機システムの処理のフローチャートである。計算機1は、文字列情報I21を取得する(S001)。なお、計算機1は、いかなる方法で、文字列情報I21を取得してもよい。例えば、計算機1は、文字列情報I21を、記憶装置2、メモリ5、入力装置6又は通信網8から取得する。すると、計算機1は、取得した文字列情報I21を符号化して、二次元コードを作成する。なお、文字列情報I21がURLなどの場合、以下の処理を行ってもよい。計算機1は、文字列情報I21に含まれる文字の数が制限文字数以下であるか否かを判定する。制限文字数は、作成される二次元コードに含まれる表示構成要素(二次元コードを構成する最小単位。例えば、二次元コードがQRコードの場合、表示構成要素はセルとなる)の数が増加しない文字数の上限である。例えば、二次元コードがQRコードの場合、制限文字数は、QRコードのバージョンが変化しない文字数の上限である。つまり、文字列情報I21に含まれる文字数が制限文字数を超える場合、作成される二次元コードは、QRコードのバージョン数が上がるためセル数が増加してしまい、セルサイズが小さくなる。そのため、当該QRコードは、読取環境によっては読取装置による読取が難しくなる。そこで、文字列情報I21に含まれる文字の数が制限文字数より多い場合、計算機1は、文字列情報I21を、短い文字列に変換する。短い文字列への変換方法は、制限文字数以下の文字列に変換できればいかなる方法であってもよい。そして、計算機1は、変換した文字列を符号化して、二次元コードを作成する。例えば、計算機1は、公知の短縮URLサービスと同等の機能及びHTTPリダイレクトを利用して、文字列情報I21を、短い文字列に変換し、格納する情報量を縮小する。具体的には、計算機1は、文字列情報I21を短縮URL用計算機に送信する。短縮URL用計算機は、文字列情報I21を受け取ると、新たなURLを作成する。なお、作成される新たなURLは、制限文字数以下である。次に、短縮URL用計算機は、作成した新たなURLと受信した文字列情報I21との対応を記憶する。次に、短縮URL用計算機は、作成した新たなURLを計算機1に送信する。計算機1は、URLを受信すると、受信したURLを符号化して、二次元コードを作成する。この場合、読取装置は、二次元コードを復号化すると、復号化したURLにアクセスする。これによって、読取装置は、短縮URL用計算機にアクセスする。すると、短縮URL用計算機は、記憶した対応に基づいて、アクセスされたURLに対応する文字列情報I21を検索する。次に、短縮URL用計算機は、検索した文字列情報I21(URL)で、読取装置に対してHTTPリダイレクト処理を行う。これによって、読取装置は、文字列情報I21を取得できる。一方、文字列情報I21に含まれる文字数が制限文字数以下の場合、計算機1は、取得した文字列情報I21をそのまま符号化して、二次元コードを作成する。なお、計算機1は、文字列情報I21に含まれる文字の数が制限文字数以下であるか否かにかかわらず、任意で、文字列情報I21を短い文字列に変換してもよい。
【0013】
次に、計算機1は、埋込データG21を取得する(S002)。なお、計算機1は、いかなる方法で、埋込データG21を取得してもよい。例えば、計算機1は、埋込データG21を、記憶装置2、メモリ5、入力装置6又は通信網8から取得する。
【0014】
次に、計算機1は、透過部分情報I26を取得する(S003)。透過部分情報I26は、埋込データG21のうち、透過して表示されてもよい部分(透過可能部分)に関する情報である。なお、透過部分情報I26は、埋込データG21に含まれていてもよいし、埋込データG21と独立した情報であってもよい。例えば、透過部分情報I26は、埋込データG21内の特定の色の領域を透過可能部分として示したものであってもよい。また、計算機1は、いかなる方法で、透過部分情報I26を取得してもよい。例えば、計算機1は、透過部分情報I26を、記憶装置2、メモリ5、入力装置6又は通信網8から取得する。ただし、透過部分情報I26の取得は任意で、計算機1は、透過部分情報I26を取得しなくてもよい。
【0015】
計算機1は、透過部分情報I26を取得すると、透過処理を行いながら、一連の処理を行う。図4は、本発明の第1の実施の形態の透過処理の説明図である。計算機1は、取得した透過部分情報に基づいて、透過可能部分を特定する。そして、計算機1は、特定した透過可能部分が所定の条件を満たすかどうかを判定する。所定の条件を満たす場合には、計算機1は、以下の一連の処理において、透過可能部分を、埋込データG21から削除してもよい。例えば、二次元コード内の所定の領域のすべてが透過可能部分に含まれる場合、計算機1は、当該所定の領域に対しては、透過可能部分を、埋込データG21から削除する。そのため、当該所定の領域には埋込データG21が埋め込まれない。
【0016】
ここで図3に戻って説明を続ける。次に、計算機1は、配置位置情報I22を取得する(S004)。配置位置情報I22は、作成される画像付二次元コードC21内における、埋込データG21の配置可能な位置である。なお、配置位置情報I22は、埋込データG21が配置可能な位置を示していれば、いかなる方法で示されていてもよい。例えば、配置位置情報I22は、二次元コードに含まれる表示構成要素の個数を用いて、位置を示してもよい。また、配置位置情報I22は、埋込データG21に含まれる画素の数を用いて、位置を示してもよい。また、配置位置情報I22は、物理的な長さの単位を用いて、位置を示してもよい。なお、計算機1は、いかなる方法で、配置位置情報I22を取得してもよい。例えば、計算機1は、配置位置情報I22を、記憶装置2、メモリ5、入力装置6又は通信網8から取得する。ただし、配置位置情報I22の取得は任意で、計算機1は、配置位置情報I22を取得しなくてもよい。
【0017】
次に、計算機1は、配置サイズ情報I23を取得する(S005)。配置サイズ情報I23は、作成される画像付二次元コードC21内における、埋込データG21の相対的な大きさである。なお、配置サイズ情報I23は、埋込データG21の大きさを示していれば、いかなる方法で示されていてもよい。例えば、配置サイズ情報I23は、二次元コードに含まれる表示構成要素の個数を用いて、大きさを示してもよい。また、配置サイズ情報は、埋込データG21に含まれる画素の数を用いて、大きさを示してもよい。また、配置サイズ情報は、物理的な長さの単位を用いて、大きさを示してもよい。なお、計算機1は、いかなる方法で、配置サイズ情報I23を取得してもよい。例えば、計算機1は、配置サイズ情報I23を、記憶装置2、メモリ5、入力装置6又は通信網8から取得する。ただし、配置サイズ情報I23の取得は任意で、計算機1は、配置サイズ情報I23を取得しなくてもよい。
【0018】
次に、計算機1は、配置優先情報I24を取得する(S006)。配置優先情報I24は、配置位置情報I22又は配置サイズ情報I23のいずれを優先すべきかを示す。なお、計算機1は、いかなる方法で、配置優先情報I24を取得してもよい。例えば、計算機1は、配置優先情報I24を、記憶装置2、メモリ5、入力装置6又は通信網8から取得する。ただし、配置優先情報I24の取得は任意で、計算機1は、配置優先情報I24を取得しなくてもよい。
【0019】
次に、計算機1は、重要配置情報I25を取得する(S007)。重要配置情報I25は、二次元コードの復号に重要な情報が含まれる表示構成要素(以下 重要表示構成要素という)に、埋込データG21が配置されてもよいか否かを示す。なお、二次元コードの復号に重要な情報が含まれる表示構成要素とは、欠損すると復号に大きな影響を与える情報である。例えば、二次元コードがQRコードの場合、画像付二次元コードC21の復号に重要な情報は、切出シンボル、マージン、タイミングパターン、セパレータ、フォーマット情報及びアライメントパターンを含む。また、重要配置情報I25は、透過処理を示していてもよい。この場合、計算機1は、埋込データG21内の、重要セル上に配置されるすべての画素を透過処理する。なお、計算機1は、いかなる方法で、重要配置情報I25を取得してもよい。例えば、計算機1は、重要配置情報I25を、記憶装置2、メモリ5、入力装置6又は通信網8から取得する。ただし、重要配置情報I25の取得は任意で、計算機1は、重要配置情報I25を取得しなくてもよい。
【0020】
次に、計算機1は、調整処理を実行する(S008)。調整処理は、読取装置による画像付二次元コードC21の読取品質を向上させるための処理である。なお、調整処理については、図5A、図5B及び図5Cで詳細を説明する。
【0021】
図5A、図5B及び図5Cは、本発明の実施の形態の調整処理のフローチャートである。なお、図5Aは、埋込データG21のみを調整する場合である。また、図5Bは、二次元コードのみを調整する場合である。また、図5Cは、埋込データG21及び二次元コードの双方を調整する場合である。計算機1は、埋込データG21のみの調整、二次元コードのみの調整、又は、埋込データG21及び二次元コードの双方の調整のいずれかを任意の方法で決定する。埋込データG21のみの調整に決定した場合、計算機1は、明度・コントラスト・色素調整情報を受け取る。なお、明度・コントラスト・色素調整情報は、明度、コントラスト及び色素のうち少なくとも一つを調整するための情報である。次に、計算機1は、受け取った明度・コントラスト・色素調整情報並びに作成した二次元コードの明度及びコントラストのうちの少なくとも一つを参照して、取得した埋込データG21の明度、コントラスト及び色素のうちの少なくとも一つを調整する(S101)。例えば、二次元コードがQRコードの場合、計算機1は、埋込データG21のコントラストの調整を以下のように行う。まず、計算機1は、作成したQRコードに含まれる白色のセル及び黒色のセルの輝度値を計測する。なお、本実施の形態では、QRコードに含まれるセルを、白色のセル又は黒色のセルのいずれかとしたが、明るい色のセルと暗い色のセルであってもよい(二次元コードの表示構成要素は、白色及び黒色以外の色で表現されることもある)。この場合、以降のすべての処理では、白色のセルが明るい色のセルとなり、黒色のセルが暗い色のセルとなる。次に、計算機1は、取得した埋込データG21に含まれるすべての画素の輝度値を計測する。次に、計算機1は、埋込データG21に含まれるすべての画素のうち、計測した画素の輝度値が白色のセルの輝度値を超える画素をすべて選択する。次に、計算機1は、選択した画素の輝度値を、白色のセルの輝度値に近付ける。次に、計算機1は、埋込データG21に含まれるすべての画素のうち、計測した画素の輝度値が黒色のセルの輝度値より小さい画素をすべて選択する。次に、計算機1は、選択した画素の輝度値を、黒色のセルの輝度値に近付ける。または、計算機1は、取得した埋込データG21に含まれるすべての画素の輝度値に適当な値を乗じることによって、すべての画素の輝度値が、白色のセルの輝度値に近い範囲又は黒色のセルの輝度値に近い範囲のいずれかに含まれるようにしてもよい(明暗どちらともとれる輝度をとらないようにする)。なお、計算機1は、画素の輝度値を変更するこのような処理を行わなくてもよい。次に、計算機1は、計測した白色のセルの輝度値と黒色のセルの輝度値との中間値を算出する。次に、計算機1は、算出した中間値を閾値として、埋込データG21のコントラストを高める。具体的には、計算機1は、埋込データG21に含まれるすべての画素のうち、計測した画素の輝度値が中間値以上の画素を選択する。次に、計算機1は、選択した画素の輝度値を大きくする。次に、計算機1は、埋込データG21に含まれるすべての画素のうち、計測した画素の輝度値が中間値より小さい画素を選択する。次に、計算機1は、選択した画素の輝度値を小さくする。これによって、計算機1は、埋込データG21のコントラストを高めることができる。なお、コントラストを高めた埋込データG21を含む画像付二次元コードC21は、読取装置による読取品質が高まる。なお、計算機1は、埋込データG21をドットアイコン化してもよい(図6を参照。図6は、本発明の第1の実施の形態のドットアイコン化処理の説明図である)。具体的には、計算機1は、埋込データG21の画素が、二次元コードの表示構成要素と同じ大きさとなるように画像を加工することによって、埋込データG21をドットアイコン化する。このとき、計算機1は、埋込データG21のそれぞれの画素を主要な色(その領域を占める割合が最も多い色素)にしながら、ドットアイコン化する。更に、計算機1は、ユーザからの入力に応じて、ドットアイコン化した埋込データG21を修正してもよい。計算機1は、埋込データG21をドットアイコン化することによって、作成する画像付二次元コードC21の誤り率を低減できる。一方、二次元コードのみの調整に決定した場合、取得した埋込データG21の明度及びコントラストのうちの少なくとも一方を参照して、作成した二次元コードの明度、コントラスト及び色素のうちの少なくとも一つを調整する(S102)。例えば、二次元コードがQRコードの場合、計算機1は、作成したQRコードのコントラストの調整を以下のように行う。まず、計算機1は、取得した埋込データG21に含まれる画素の輝度値の最大値及び最小値を計測する。次に、計算機1は、作成したQRコードの白色のセルの輝度値を、計測した最大値以下とする。更に、計算機1は、作成したQRコードの黒色のセルの輝度値を、計測した最小値以上とする。一方、埋込データG21及び二次元コードの双方の調整に決定した場合、計算機1は、作成した二次元コード及び取得した埋込データG21の明度の平均値を算出する。次に、計算機1は、作成した二次元コード及び取得した埋込データG21のコントラストの平均値を算出する(S103)。次に、計算機1は、算出した明度の平均値及びコントラストの平均値を参照して、取得した埋込データG21の明度、コントラスト及び色素のうちの少なくとも一つを調整する(S104)。次に、計算機1は、算出した明度の平均値及びコントラストの平均値を参照して、作成した二次元コードの明度、コントラスト及び色素のうちの少なくとも一つを調整する(S105)。
以上のように、計算機1は、調整処理を行う。
【0022】
ここで図3に戻って説明を続ける。次に、計算機1は、埋込データG21の二値化(白黒階調化)処理を行う(S009)。なお、二値化処理については、図7で詳細を説明する。
【0023】
図7は、本発明の第1の実施の形態の二値化処理のフローチャートである。また、図8は、本発明の第1の実施の形態の二値化された画像データの概念図である。計算機1は、取得した埋込データG21内の明るい部分と暗い部分とに分けるための閾値を決定する(S201)。例えば、計算機1は、取得した埋込データG21の明度の平均値を算出し、算出した平均値を閾値としてもよい。また、計算機1は、閾値を以下のように決定してもよい。計算機1は、埋込データG21から、明部の明度が高いところから順に、所定の数の明度を抽出する。次に、計算機1は、抽出した明度の平均値を算出し、明部の明度平均値とする。次に、埋込データG21から、暗部の明度が低いところから順に、所定の数の明度を抽出する。次に、計算機1は、抽出した明度の平均値を算出し、暗部の明度の平均値とする。次に、計算機1は、算出した明部の明度の平均値及び暗部の明度の平均値に基づいて、閾値を決定してもよい。これによって、当該閾値は、明度が突出した部分の影響を排除できる。
【0024】
次に、計算機1は、埋込データG21に含まれる画素(ピクセル)を順番に選択し、選択した画素ごとに以下の処理を行う(S202)。計算機1は、選択した画素の明度を算出する(S203)。次に、計算機1は、算出した明度が閾値以下であるか否かを判断する(S204)。明度が閾値以下の場合、計算機1は、選択した画素を「暗」と判定する(S206)。一方、明度が閾値より大きい場合、計算機1は、選択した画素を「明」と判定する(S205)。次に、計算機1は、ステップS202において、埋込データG21に含まれる画素をすべて選択したか否かを判定する。すべての画素を選択してない場合、計算機1は、ステップS202に戻る。そして、計算機1は、選択していない画素を選択して、同様の処理を繰り返す。一方、すべての画素を選択した場合、計算機1は、当該二値化処理を終了する。そして、計算機1は、判定結果を記憶する。具体的には、計算機1は、「明」と判定した画素を所定の明るい色として、明画素とする。一方、計算機1は、「暗」と判定した画素を所定の暗い色として、暗画素とする。そして、計算機1は、明画素及び暗画素を含む画像を、二値化された埋込データであるG81として記憶する。なお、計算機1は、二値化されていない元の埋込データG21も記憶しておく。次に、計算機1は、二値化処理した埋込データG81を、作成した二次元コードに仮配置する。そして、計算機1は、仮配置された二次元コードを、誤り率の算出のために用いる。計算機1は、最終的な二次元コードの出力時には、二値化された埋込データG81を二次元コードに配置するのではなく、元の埋込データG21を二次元コードに配置することによって、画像付二次元コードC21を作成する。なお、計算機1は、二値化された埋込データG81ではなく、元の埋込データG21を仮配置し、誤り率を算出してもよい。
【0025】
ここで図3に戻って説明を続ける。次に、計算機1は、二次元コードの誤り率が許容値以下となるまで、配置調整処理を繰り返す(S010)。配置調整処理については、図9で詳細を説明する。
【0026】
図9は、本発明の第1の実施の形態の配置調整処理のフローチャートである。まず、計算機1は、取得した配置サイズ情報I23に従って、二値化された埋込データG81のサイズを変更する(S301)。次に、計算機1は、二値化した画像データG81を、作成した二次元コードに、取得した配置位置情報I22に従って仮で配置する(S303)。次に、計算機1は、取得した重要配置情報I25を調べる。重要配置情報I25が、重要表示構成要素に埋込データG21を配置できないことを示す場合、計算機1は、重要表示構成要素のいずれにも、二値化した画像データG81が配置されていないかどうかを判定する(S304)。重要表示構成要素のいずれか一つにでも二値化した画像データG81が配置されている場合、当該配置位置に埋込データG21を配置できない。そこで、計算機1は、許容される範囲内のすべての位置に、二値化した画像データG81を仮配置したか否かを判定する(S308)。すべての位置に仮配置されていない場合、計算機1は、許容される範囲内のうち、仮配置されていない位置を選択する(S309)。なお、許容される範囲は、予め定まっていてもよいし、配置位置情報I22に含まれていてもよい。また、取得された配置優先情報I24が、配置位置情報I22よりも配置サイズ情報I23を優先することを示す場合には、許容される範囲は、二次元コードのすべての位置となる。一方、取得された配置優先情報I24が、配置サイズ情報I23よりも配置位置情報I22を優先することを示す場合には、許容される範囲を、配置位置情報I22で示す位置だけ又は指定された配置位置の狭い周辺だけとする。計算機1は、新たな位置を選択すると、ステップS302に戻り、選択した新たな位置に、二値化した画像データG81を仮配置する(S303)。そして、計算機1は、当該処理を繰り返す。一方、すべての位置に仮配置した場合、計算機1は、ステップS310に進む。一方、重要配置情報I25が透過処理を示す場合(S305)、計算機1は、埋込データG21内の、重要セル上に配置される画素を透過処理する(S306)。透過処理とは、埋込データG21から、当該画素を排除する処理である。これによって、作成される画像付二次元コードC21は、復号化が可能となる。次に、計算機1は、セルの調整情報に基づいて、輪郭強調処理を行ってもよい。輪郭強調処理とは、二値化した画像データG81の輪郭の画素に仮配置されたセルが、黒色(暗)であるか否かを判定する。当該セルが黒色の場合、計算機1は、当該セルを白色(明)に変換する。これによって、作成される画像付二次元コードC21に含まれる埋込データG21の輪郭が明瞭になる。なお、計算機1は、二値化した画像データG81の輪郭の画素がセルの所定の領域上に配置されていて、且つ、当該セルが黒色(暗)であるか否かを判断してもよい。二値化した画像データG81の輪郭の画素がセルの所定の領域上に配置されていて、且つ、当該セルが黒色(暗)である場合、計算機1は、当該セルを白色(明)に変換する。次に、計算機1は、誤り率算出処理を行う(S310)。誤り率算出処理については、図10及び図11で詳細を説明する。一方、重要配置情報I25が、重要セルに埋込データG21が配置されてもよいことを示す場合、計算機1は、そのままステップS307に進み、誤り率算出処理を行う。
【0027】
図10は、本発明の第1の実施の形態の誤り率算出処理のフローチャートである。まず、計算機1は、作成した二次元コードに含まれるすべてのセル(ただし、重要セルは除外)を順番に選択する(S401)。次に、計算機1は、選択したセルと、二値化した画像データG81内の、当該セル上に仮配置された一つ以上の画素とを比較する。この比較に基づいて、計算機1は、選択したセルが、正部、誤部又は汚損部のいずれであるかを判定する(S402)。例えば、計算機1は、選択したセルが白色(明)で、且つ、画素のすべてが明画素の場合、選択したセルを正部と判定する。同様に、計算機1は、選択したセルが黒色(暗)で、且つ、画素のすべてが暗画素の場合にも、選択したセルを、正部と判定する。一方、計算機1は、選択したセルが白色(明)で、且つ、画素のすべてが暗画素の場合、選択したセルを誤部と判定する。同様に、計算機1は、選択したセルが黒色(暗)で、且つ、画素のすべてが明画素の場合にも、選択したセルを、誤部と判定する。また、計算機1は、セル上に仮配置された画素の一部が明部で、残りの一分が暗部の場合、汚損部と判定する。なお、計算機1は、選択したセルが白色(明)で、且つ、画素の一定個数以上が明画素の場合、選択したセルを正部と判定してもよい。同様に、計算機1は、選択したセルが黒色(暗)で、且つ、画素の一定個数以上が暗画素の場合、選択したセルを正部と判定してもよい。また、計算機1は、選択したセルが白色(明)で、選択したセルの中央部分の所定の領域に仮配置されたすべての画素が明画素の場合、選択したセルを正部と判定する(図11参照)。同様に、計算機1は、選択したセルが黒色(暗)で、選択したセルの中央部分の所定の領域に仮配置されたすべての画素が暗画素の場合、選択したセルを正部と判定する。また、計算機1は、選択したセルに、二値化した画像データG81が仮配置されていない場合、当該選択したセルを正部と判定する。また、計算機1は、選択したセルに、透過処理された画素が仮配置されている場合、当該セルを正部と判定する。なぜなら、透過処理された画素は、埋込データG21から削除されているからである。また、計算機1は、輪郭強調処理で黒色(暗)から白色(明)に変換したセルを誤部と判定する。次に、計算機1は、ステップS401ですべてのセルを選択したか否かを判定する。すべてのセルを選択していない場合、計算機1は、ステップS401に戻り、当該処理を繰り返す。一方、すべてのセルを選択した場合、計算機1は、ステップS402の判定結果を用いて、誤り率を算出する(S403)。例えば、計算機1は、誤部の数をセルの数で割ることによって、誤り率を算出する。また、計算機1は、誤部の数を、誤部(汚損部を含む)の数と正部の数の合計で割ることによって、誤り率を算出してもよい。
【0028】
ここで図9に戻って説明を続ける。次に、計算機1は、許容される範囲内のすべての位置に、二値化した画像データG81を仮配置したか否かを判定する(S308)。すべての位置に仮配置されていない場合、計算機1は、許容される範囲内のうち、仮配置されていない位置を選択する(S309)。なお、許容される範囲は、予め定まっていてもよいし、配置位置情報I22に含まれていてもよい。また、取得された配置優先情報I24が、配置位置情報I22よりも配置サイズ情報I23を優先することを示す場合には、許容される範囲は、二次元コードのすべての位置となる。一方、取得された配置優先情報I24が、配置サイズ情報I23よりも配置位置情報I22を優先することを示す場合には、許容される範囲を、配置位置情報I22で示す位置だけ又は指定された配置位置の狭い周辺だけとする。計算機1は、新たな位置を選択すると、ステップS302に戻り、選択した新たな位置に、二値化した画像データG81を仮配置する(S303)。そして、計算機1は、当該処理を繰り返す。一方、すべての位置に仮配置した場合、計算機1は、算出したすべての誤り率のうち、最も小さい誤り率を選択する。次に、計算機1は、選択した誤り率と閾値とを比較する(S310)。そして、計算機1は、誤り率が閾値以下であるか否かを判定する。誤り率が閾値より大きい場合、計算機1は、埋込データG21をこのままの大きさでは配置できない。そこで、計算機1は、二値化した画像データG81を所定のサイズだけ小さくする(S311)。所定のサイズは、一つの画素分のサイズであってもよいし、予め決まったサイズであってもよい。そして、計算機1は、ステップS301に戻り、当該処理を繰り返す。一方、誤り率が閾値以下の場合、計算機1は、選択した最も小さい誤り率となった配置位置及び配置サイズを記憶する(S312)。なお、計算機1は、誤り率、配置位置及び配置サイズを参照して、最適な配置位置及び配置サイズを選択し、メモリ5などに記憶してもよい。次に、計算機1は、選択した配置位置及び配置サイズに従って、元の埋込データG21又は調整処理(図5A、図5B又は図5C)を施した埋込データG21を、二次元コードに配置する。なお、計算機1は、仮配置の時に透過処理した場合、元の埋込データG21又は調整処理(図5A、図5B又は図5C)を施した埋込データG21についても透過処理を行う。そして、計算機1は、透過処理した埋込データG21を、二次元コードに配置する。これによって、計算機1は、画像付二次元コードC21を出力する(S011)。そして、計算機1は、作成した画像付二次元コードC21を記憶する。なお、計算機1は、作成した画像付二次元コードC21を、出力装置7に出力を指示してもよいし、通信網8を介して、他の計算機に送信してもよい。
【0029】
本発明の第1の実施の形態によれば、計算機1は、文字列情報I21及び埋込データG21を取得すると、誤り率の基準を満たした画像付二次元コードC21を出力できる。画像付二次元コードC21は、復号化の処理をすることなく、人間が文字列情報I21の内容を目視だけで認識又は推測可能な二次元コードである。
【0030】
(第2の実施の形態)
本発明の第1の実施の形態では、計算機1は、文字列情報I21を符号化した画像付二次元コードC21を出力する。一方、本発明の第2の実施の形態では、計算機1は、最適な文字列を決定して、その文字列を符号化した画像付二次元コードC21を出力する。なお、第2の実施の形態の計算機システムの構成は、第1の実施の形態の計算機システム(図1)と同一である。同一の構成には同一の番号を付すことによって、説明を省略する。
【0031】
以下、本発明の第2の実施の形態の計算機システムの処理を図3を参照して説明する。第2の実施の形態では、計算機1は、文字列情報I21の代わりに、固定文字列、可変文字列の文字数及び試行回数を取得する(S001)。なお、固定文字列は、符号化されて、二次元コードに格納される情報の一部であり、必ず格納される情報である。例えば、固定文字列は、インターネットのアドレス情報であるURLの先頭部分である。可変文字列は、固定文字列に付加される文字列であり、いかなる文字、数字又は記号もしくは、それら組み合わせであってもよい。例えば、可変文字列は、URLの後方部分である。また、試行回数は、最適な可変文字列を見つけるために、可変文字列を変更する回数である。計算機1は、これらの情報を取得すると、取得した文字数に応じた可変文字列を作成する。なお、計算機1は、いかなる方法で、可変文字列を作成してもよい。例えば、計算機1は、ランダムで可変文字列を作成してもよいし、文字をインクリメント又はデクリメントすることによって、規則的な可変文字列を作成してもよい。次に、計算機1は、固定文字列に可変文字列を付加することによって、文字列情報を新たに作成する。そして、計算機1は、作成した当該文字列情報を符号化することによって、二次元コードを作成する。次に、計算機1は、ステップS002〜S010(図3)の処理を行う。これによって、計算機1は、作成した当該文字列情報を符号化した二次元コードに関する、最も小さい誤り率となった配置位置、配置サイズ及び誤り率を記憶できる。
【0032】
次に、計算機1は、ステップS001における可変文字列の作成回数が、取得した試行回数より小さいか否かを判定する。作成回数が試行回数より小さい場合、計算機1は、ステップS001に戻る。そして、計算機1は、新たな可変文字列を作成して、前述した処理を繰り返す。これによって、計算機1は、新たな可変文字列を含む文字列情報を符号化した二次元コードに関する、最も小さい誤り率となった配置位置、配置サイズ及び誤り率を記憶できる。一方、作成回数が試行回数以上の場合、計算機1は、記憶した誤り率のうち、最も小さい誤り率となった配置位置及び配置サイズを決定する。なお、計算機1は、記憶した誤り率、配置位置及び配置サイズを参照して、最適な配置位置及び配置サイズを決定してもよい。次に、計算機1は、特定した配置位置及び配置サイズに従って、元の埋込データG21又は調整処理(図5A、図5B又は図5C)を施した埋込データG21を、二次元コードに配置する。なお、計算機1は、仮配置の時に透過処理した場合、元の埋込データG21又は調整処理(図5A、図5B又は図5C)を施した埋込データG21についても透過処理を行う。そして、計算機1は、透過処理した元の埋込データG21を、二次元コードに配置する。これによって、計算機1は、画像付二次元コードC21を出力する(S011)。そして、計算機1は、作成した画像付二次元コードC21を記憶する。なお、計算機1は、作成した画像付二次元コードC21を、出力装置7に出力を指示してもよいし、通信網8を介して、他の計算機に送信してもよい。
【0033】
本発明の第2の実施の形態によれば、計算機1は、最適な可変文字列を特定できるため、画像付二次元コードC21の誤り率を更に低減できる。
【0034】
(第3の実施の形態)
本発明の第3の実施の形態では、計算機1は、回転情報I27を受け取って、埋込データG21を回転させて、二次元コードに配置する。なお、回転情報I27は、埋込データG21を回転させる回数及び角度などを示す。また、第3の実施の形態の計算機システムの構成は、第1の実施の形態の計算機システム(図1)と同一である。同一の構成には同一の番号を付すことによって、説明を省略する。また、本発明の第3の実施の形態の計算機システムの処理は、配置調整処理(図3のステップS010)を除き、第1の計算機システムの処理と同一である。なお、同一の処理については、説明を省略する。
【0035】
図12は、本発明の第3の実施の形態の配置調整処理のフローチャートである。まず、計算機1は、ステップS301〜S307の処理を実行する。次に、計算機1は、二値化された埋込データG81を所定の回数だけ回転させたか否かを判定する(S322)。所定の回数だけ回転させていない場合、計算機1は、二値化された埋込データG81を回転する(S323)。なお、二値化された埋込データG81の回転は、いかなる方法で行ってもよい。例えば、計算機1は、前述のステップS323で決定した二値化された埋込データG81の配置状態から、所定の角度だけ回転させる。また、計算機1は、二値化された埋込データG81を回転するのではなく、反転又は変形させてもよいし、もしくはそれらを組み合わせてもよい。なお、変形は、埋込データG21を縦方向、横方向、又はそれ以外のいずれかの方向に伸縮させることである。この場合、計算機1は、回転情報、反転情報、変形情報又はいずれか、もしくはそれらの組み合わせた情報を受け取る。例えば、反転情報は、埋込データG21を反転させるか否かを示す。また、変形情報は、埋込データG21を変形させるかどうか、埋込データG21の変形方法などを示す。また、配置状態は、埋込データG21を回転させた角度、反転させたか否か、変形させたか否かなどを含む。計算機1は、二値化した埋込データG81を回転すると、ステップS321に戻り、当該処理を繰り返す。これによって、計算機1は、配置調整処理のすべてのステップS301〜S312の処理を実行する。なお、計算機1は、選択した最も小さい誤り率となった配置位置及び配置サイズに加えて、配置状態をメモリ5などに記憶する(S312)。なお、計算機1は、誤り率、配置位置、配置サイズ及び配置状態を参照して、最適な配置位置、配置サイズ及び配置状態を選択し、記憶してもよい。次に、計算機1は、記憶された配置位置、配置サイズ及び配置状態に従って、元の埋込データG21を、二次元コードに配置する。なお、計算機1は、仮配置の時に透過処理した場合、元の埋込データG21についても透過処理を行う。そして、計算機1は、透過処理した元の埋込データG21を、二次元コードに配置する。これによって、計算機1は、画像付二次元コードC21を出力する(S011)。
【0036】
本発明の第3の実施の形態によれば、計算機1は、埋込データG21を回転、反転又は変形、もしくはそれらを組み合わせることによって、画像付二次元コードC21の誤り率を更に低くできる。
【0037】
(第4の実施の形態)
本発明の第4の実施の形態では、計算機1は、同一の埋込データG21を含む複数の画像付二次元コードC21を生成する。なお、第4の実施の形態の計算機システムの構成は、第1の実施の形態の計算機システム(図1)と同一である。同一の構成には同一の番号を付すことによって、説明を省略する。以下、本発明の第4の実施の形態の計算機システムの処理を図3を参照して説明する。第4の実施の形態では、計算機1は、複数の文字列情報I21を取得する(S001)。すると、計算機1は、取得したそれぞれの文字列情報I21を符号化して、二次元コードを作成する。これによって、計算機1は、取得した複数の文字列情報I21と同数の二次元コードを作成する。次に、計算機1は、一つの埋込データG21を取得する(S002)。次に、計算機1は、ステップS003〜S009の処理を実行する、これによって、計算機1は、埋込データG21を最適に調整する。次に、計算機1は、それぞれの文字列情報を符号化して作成した二次元コードごとに、配置調整処理を行う(S010)。これによって、それら二次元コードごとに、埋込データG21の配置位置及び配置サイズなどを決定できる。そして、計算機1は、決定した配置位置及び配置サイズなどに従って、埋込データG21を、二次元コードに配置する。これによって、計算機1は、取得した文字列情報I21と同数の画像付二次元コードC21を出力する(S011)。そして、計算機1は、作成した画像付二次元コードC21をメモリ5などに記憶する。なお、計算機1は、作成した画像付二次元コードC21を、出力装置7に出力を指示してもよいし、通信網8を介して、他の計算機に送信してもよい。以上のように、本発明の第4の実施の形態によれば、計算機1は、処理結果を共通化した中間データを生成することでステップS002〜S009を繰り返すことなく、同一の埋込データG21を含む複数の画像付二次元コードC21を出力できる。
【符号の説明】
【0038】
1 計算機
2 記憶装置
3 プログラム
4 CPU
5 メモリ
6 入力装置
7 出力装置
8 通信網

【特許請求の範囲】
【請求項1】
プロセッサ、メモリ及び入出力インターフェースを備える計算機であって、
二次元コードに格納される情報及び当該二次元コードに埋め込もうとする画像データを取得する第1の処理と、
前記取得した情報を符号化して、二次元コードを作成する第2の処理と、
前記取得した画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態のうちの少なくとも一つを調整する第3の処理と、
前記調整した配置位置、配置サイズ、回転状態、反転状態及び変形状態に従って、前記取得した画像データを、前記作成した二次元コードに仮で配置する第4の処理と、
前記画像データが仮で配置された二次元コードの誤り率を算出する第5の処理と、
第3から第5の処理を繰り返す第6の処理と、
前記算出した誤り率を参照して、前記画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態を決定する第7の処理と、
を行うことを特徴とする計算機。
【請求項2】
前記第2の処理では、前記取得した情報を任意で縮小し、
前記取得した情報又は前記縮小した情報を符号化して、二次元コードを作成することを特徴とする請求項1に記載の計算機。
【請求項3】
更に、前記取得した画像データの明度、コントラスト及び色素のうちの少なくとも一つを調整する第8の処理を行うことを特徴とする請求項1に記載の計算機。
【請求項4】
更に、前記取得した画像データを、ドットアイコン化する第9の処理を行うことを特徴とする請求項1に記載の計算機。
【請求項5】
更に、前記作成した画像が埋め込まれた二次元コードに含まれる表示構成要素のうち、前記画像データの輪郭部分に配置された表示構成要素を、暗色から明色または明色から暗色に変更する第10の処理を行うことを特徴とする請求項1に記載の計算機。
【請求項6】
更に、前記取得した画像データに含まれる画素を明部と暗部とに分ける二値化処理を行う第11の処理を行い、
前記第4の処理では、前記取得した画像データの代わりに、前記二値化処理を行った画像データを、前記作成した二次元コードに仮で配置することを特徴とする請求項1に記載の計算機。
【請求項7】
前記第5の処理では、
前記二次元コードに仮配置された二値化処理した画像データを用いて、前記二次元コードに含まれる表示構成要素ごとに正又は誤を判定し、
前記表示構成要素ごとの正誤の判定結果を参照して、誤り率を算出することを特徴とする請求項6に記載の計算機。
【請求項8】
プロセッサ、メモリ及び入出力インターフェースを備える計算機であって、
二次元コードに格納される情報の一部及び当該二次元コードに埋め込もうとする画像データを取得する第1の処理と、
前記取得した情報の一部にランダムまたは規則的な文字列を付加してから符号化し、二次元コードを作成する第2の処理と、
前記取得した画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態のうちの少なくとも一つを調整する第3の処理と、
前記調整した前記画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態に従って、前記取得した画像データを、前記作成した二次元コードに仮で配置する第4の処理と、
前記画像データが仮で配置された二次元コードの誤り率を算出する第5の処理と、
第2から第5の処理を繰り返す第6の処理と、
前記算出した誤り率を参照して、前記情報の一部に付加するランダム又は規則的な文字列、前記画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態を決定する第7の処理と、
を行うことを特徴とする計算機。
【請求項9】
二次元コードに格納される情報及び当該二次元コードに埋め込まれる画像データを取得する第1の処理と、
前記取得した情報を符号化して、二次元コードを作成する第2の処理と、
前記取得した画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態のうちの少なくとも一つを調整する第3の処理と、
前記調整した配置位置、配置サイズ、回転状態、反転状態及び変形状態に従って、前記取得した画像データを、前記作成した二次元コードに仮で配置する第4の処理と、
前記画像データが仮で配置された二次元コードの誤り率を算出する第5の処理と、
第3から第5の処理を繰り返す第6の処理と、
前記算出した誤り率を参照して、前記画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態を決定する第7の処理と、
を計算機に実行させるプログラム。
【請求項10】
前記第2の処理では、前記取得した情報を任意で縮小し、
前記取得した情報又は前記縮小した情報を符号化して、二次元コードを作成することを特徴とする請求項9に記載のプログラム。
【請求項11】
更に、前記取得した画像データの明度、コントラスト及び色素のうちの少なくとも一つを調整する第8の処理を前記計算機に実行させることを特徴とする請求項9に記載のプログラム。
【請求項12】
更に、前記取得した画像データを、ドットアイコン化する第9の処理を前記計算機に実行させることを特徴とする請求項9に記載のプログラム。
【請求項13】
更に、前記作成した二次元コードに含まれる表示構成要素のうち、前記画像データの輪郭部分に配置されたセルを、暗色から明色又は明色から暗色に変更する第10の処理を前記計算機に実行させることを特徴とする請求項9に記載のプログラム。
【請求項14】
更に、前記取得した画像データに含まれる画素を明部と暗部とに分ける二値化処理を行う第11の処理を前記計算機に実行させ、
前記第4の処理では、前記取得した画像データの代わりに、前記二値化処理を行った画像データを、前記作成した二次元コードに仮で配置することを特徴とする請求項9に記載のプログラム。
【請求項15】
前記第5の処理では、
前記二次元コードに仮配置された二値化処理した画像データを用いて、前記二次元コードに含まれる表示構成要素ごとに正又は誤を判定し、
前記表示構成要素ごとの正誤の判定結果を参照して、誤り率を算出することを特徴とする請求項14に記載のプログラム。
【請求項16】
二次元コードに格納される情報の一部及び当該二次元コードに埋め込まれる画像データを取得する第1の処理と、
前記取得した情報の一部にランダムまたは規則的な文字列を付加してから符号化し、二次元コードを作成する第2の処理と、
前記取得した画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態のうちの少なくとも一つを調整する第3の処理と、
前記調整した配置位置、配置サイズ、回転状態、反転状態及び変形状態に従って、前記取得した画像データを、前記作成した二次元コードに仮で配置する第4の処理と、
前記画像データが仮で配置された二次元コードの誤り率を算出する第5の処理と、
第2から第5の処理を繰り返す第6の処理と、
前記算出した誤り率を参照して、前記情報の一部に付加するランダム又は規則的な文字列、前記画像データの配置位置、配置サイズ、回転状態、反転状態及び変形状態を決定する第7の処理と、
を計算機に実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2013−80448(P2013−80448A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2011−232242(P2011−232242)
【出願日】平成23年10月4日(2011.10.4)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.QRコード
【出願人】(511195161)
【Fターム(参考)】