(57)【要約】【課題】文書等の画像に埋め込むべきコード情報の容量を簡易に増大させることができる画像処理装置及び画像処理プログラムを提供する。【解決手段】画像処理装置のＣＰＵ１０は、コード情報分割モジュール１０ａと、基本パターン数設定モジュール１０ｂと、コード合成モジュール１０ｃと、判定モジュール１０ｄを備える。二次元コード情報を複数の要素に分割し、それぞれの要素毎に繰り返し回数を順次増大させて元画像に埋め込み、正しく読み取れるか否か検証する。各要素について検証した後、最終的に元画像に二次元コード情報を埋め込んで印刷出力する。【選択図】図２
2015080032.tif 000002
【特許請求の範囲】
【請求項１】
二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、
複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、
複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
二次元コード情報要素が印刷されていない部分を検出する検出手段
をさらに備え、前記二次元コード情報要素が印刷されていない部分がなくなるまで前記複数の二次元コード情報要素のそれぞれに対して前記合成、印刷、及び照合を繰り返すことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記元画像が用紙の表面のみに存在する場合に、前記用紙の裏面にも前記表面と同一又は異なる二次元コード情報要素を印刷することを特徴とする請求項１，２のいずれかに記載の画像処理装置。
【請求項４】
前記二次元コード情報要素付加手段は、複数の二次元コード情報要素のそれぞれに対して、元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の行単位の繰り返し回数を１ずつ増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行うことを特徴とする請求項１〜３のいずれかに記載の画像処理装置。
【請求項５】
コンピュータを、
二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、
複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、
複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段、
として機能させることを特徴とする画像処理プログラム。
【請求項６】
二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、
複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して保存し、前記合成して保存された二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、抽出、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、抽出、及び照合を行う二次元コード情報要素付加手段と、
複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段と、
を備えることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び画像処理プログラムに関する。
【背景技術】
【０００２】
従来から、画像等に情報を二次元コードとして埋め込む技術が知られている。二次元コードを埋め込む際には、埋め込まれた情報が確実に読み取れることが前提となる。
【０００３】
特許文献１には、情報画像の合成された画像が回転していたとしても、その情報画像内に埋め込まれている情報の検出が可能な情報画像について記載されている。
【０００４】
特許文献２には、画像データの配置位置及び配置サイズを調整した結果得られた二次元コードを仮で配置し、配置された二次元コードの誤り率を算出して閾値以下となるまで繰り返すことが記載されている。
【０００５】
特許文献３には、用紙にバーコードを印字し、印字したバーコードを読み取ってその良否を検証することが記載されている。
【０００６】
特許文献４には、多色のバーコードシンボルを同じ箇所に印刷し、多量のコード情報を小さなスペースに収納することが記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−２３７９８８号公報
【特許文献２】特開２０１３−０２５７８２号公報
【特許文献３】特開２０１２−１４３９８６号公報
【特許文献４】特開昭６１−２１７８８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
埋め込まれた情報の読み取り率を向上させるためには、同じ情報を繰り返し埋め込むことが好適であり、また、画像の背景に目立たないように情報を埋め込むことで、既存の文書をそのまま維持することができるが、他方、埋め込む情報の容量が少なくなってしまう問題がある。
【０００９】
埋め込む情報の容量不足を補うためには、例えばデータベースサーバを構築し、データベースサーバ内のデータとコード情報とを対応付けることも一つの方法であるが、データベースサーバを構築する必要が有り、またその運用にもコストがかかってしまう。
【００１０】
本発明の目的は、文書等の画像に埋め込むべきコード情報の容量を簡易に増大させることができる画像処理装置及び画像処理プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
請求項１記載の発明は、二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段とを備えることを特徴とする画像処理装置である。
【００１２】
請求項２記載の発明は、二次元コード情報要素が印刷されていない部分を検出する検出手段をさらに備え、前記二次元コード情報要素が印刷されていない部分がなくなるまで前記複数の二次元コード情報要素のそれぞれに対して前記合成、印刷、及び照合を繰り返すことを特徴とする請求項１記載の画像処理装置である。
【００１３】
請求項３記載の発明は、前記元画像が用紙の表面のみに存在する場合に、前記用紙の裏面にも前記表面と同一又は異なる二次元コード情報要素を印刷することを特徴とする請求項１，２のいずれかに記載の画像処理装置である。
【００１４】
請求項４記載の発明は、前記二次元コード情報要素付加手段は、複数の二次元コード情報要素のそれぞれに対して、元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の行単位の繰り返し回数を１ずつ増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行うことを特徴とする請求項１〜３のいずれかに記載の画像処理装置である。
【００１５】
請求項５記載の発明は、コンピュータを、二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、複数の二次元コード情報要素のそれぞれに対して、元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、複数の二次元コード情報のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段として機能させることを特徴とする画像処理プログラムである。
【００１６】
請求項６記載の発明は、二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して保存し、前記合成して保存された二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、抽出、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、抽出、及び照合を行う二次元コード情報要素付加手段と、複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段と、を備えることを特徴とする画像処理装置である。
【発明の効果】
【００１７】
請求項１、請求項５及び請求項６記載の発明によれば、二次元コード情報を確実に元画像に合成して埋め込むことができるとともに、二次元コード情報の容量を増大することができる。
【００１８】
請求項２記載の発明によれば、さらに、用紙全体に二次元コード情報を埋め込むことができる。
【００１９】
請求項３記載の発明によれば、さらに、用紙の裏面も利用して二次元コード情報を埋め込むことができる。
【００２０】
請求項４記載の発明によれば、さらに、簡易に二次元コード情報を繰り返し埋め込むことができる。
【図面の簡単な説明】
【００２１】
【図１】実施形態の構成ブロック図である。
【図２】実施形態のＣＰＵの機能ブロック図である。
【図３】実施形態の元画像の説明図である。
【図４】実施形態の二次元コード情報要素Ａの合成、印刷、照合説明図である。
【図５】実施形態の二次元コード情報要素Ｂの合成、印刷、照合説明図である。
【図６】実施形態の二次元コード情報要素Ｂの合成、印刷、照合説明図である。
【図７】実施形態の二次元コード情報要素Ｃの合成、印刷、照合処理説明図である。
【図８】実施形態の最終的な印刷後の文書説明図である。
【図９】他の実施形態の二次元コード情報要素の埋め込み説明図である。
【図１０】実施形態の処理フローチャートである。
【発明を実施するための形態】
【００２２】
以下、図面に基づき本発明の実施形態について説明する。
【００２３】
図１に、本実施形態における画像処理装置の構成ブロック図を示す。画像処理装置１は、ＣＰＵ１０、ＲＯＭ１２、ＲＡＭ１４、通信部１６、操作部１８、表示部２０、スキャナ２２、及びプリンタ２４を備え、これらはバス２６を介して接続される。
【００２４】
ＣＰＵ１０は、画像処理装置１の処理全体を制御する。ＣＰＵ１０は、ＲＯＭ１２に記憶された処理プログラムを読み出し、処理プログラムに従って各種処理を実行する。ＣＰＵ１０の主な処理は、二次元コード情報を複数の要素（二次元コード情報要素）に分割する処理、元画像に二次元コード情報要素を合成する処理、合成画像をプリンタ２４に供給する機能、プリンタ２４から出力された文書をスキャナ２２でスキャンして得られるデジタルデータから二次元コード情報要素を抽出する機能、及び抽出した二次元コード情報と元の二次元コード情報要素とを照合する機能である。ＣＰＵ１０は、ＲＡＭ１４をワーキングメモリとして用いて各種のデータを記憶する。ＲＡＭ１４には、元画像の他、二次元コード情報要素の繰り返し数に関するデータが記憶される。また、ＣＰＵ１０は、通信部１６を介して必要に応じ外部機器とデータを送受する。本実施形態におけるＣＰＵ１０の基本的な機能は、印刷すべき元画像に、二次元コード情報を繰り返し埋め込むことで、原稿変動耐性及び削除耐性を強化するものである。また、印刷された文書の背景に目立たないように二次元コード情報を埋め込むことで、既存の文書又は帳票フォームをそのまま維持するものである。
【００２５】
操作部１８は、ユーザからの各種操作を受け付ける。各種操作には、印刷指示や二次元コード情報の埋め込み操作等が含まれる。操作部１８は、キーボード等でもよく、あるいはタッチパネルでもよい。
【００２６】
表示部２０は、ユーザが操作するための各種情報や、画像処理装置１の処理状況等を表示する。表示部２０は液晶パネルや有機ＥＬパネルで構成され、タッチパネルとして操作部１８と表示部２０が一体化してもよい。
【００２７】
スキャナ２２は、ＣＣＤ等の画像センサを備え、画像（文字や図形を含む）を読み取ってデジタルデータに変換し、ＣＰＵ１０に供給する。本実施形態では、スキャナ２２は、プリンタ２４から出力された、二次元コード情報が埋め込まれた文書を読み取ってデジタルデータに変換し、ＣＰＵ１０に供給する。
【００２８】
プリンタ２４は、ＣＰＵ１０からの指示に応じ、元画像に二次元コード情報を埋め込んで画像を印刷する。プリンタ２４は、試し印刷及び最終的印刷を行う。試し印刷では、二次元コード情報が正しく読み取れるか否かを検証するために用いられ、最終的印刷では、読み取れることが検証された態様で元画像に二次元コード情報を埋め込んで印刷する。
【００２９】
図２に、ＣＰＵ１０の機能ブロック図を示す。ＣＰＵ１０は、機能モジュールとして、コード情報分割モジュール１０ａ、基本パターン数設定モジュール１０ｂ、コード合成モジュール１０ｃ、及び判定モジュール１０ｄを備える。
【００３０】
コード情報分割モジュール１０ａは、二次元コード情報を、コード情報容量に基づいて分割するモジュールである。例えば、あるコード情報の情報量が、予め定められた情報容量を超えているような場合に、そのコード情報を、３つの二次元コード情報要素Ａ、Ｂ，Ｃに３分割する等である。なお、コード情報容量とは、情報画像内に埋め込まれるコード情報の容量である。
【００３１】
基本パターン数設定モジュール１０ｂは、二次元コード情報要素の基本パターン数を設定する。上記のように、埋め込まれた二次元コード情報要素の読み取り率を向上させるためには、同じ二次元コード情報要素を繰り返し埋め込むことが好適であり、繰り返す際の基本単位が基本パターンであり、繰り返す回数が基本パターン数である。基本パターン数設定モジュール１０ｂは、基本パターン数を０に初期化し、基本パターン数を順次１ずつインクリメントしていく。
【００３２】
コード合成モジュール１０ｃは、印刷すべき元画像と、二次元コード情報要素とを合成してプリンタ２４に出力する。二次元コード情報要素は、基本パターン数設定モジュール１０ｂで設定された基本パターン数だけ繰り返して元画像の背景に合成する。プリンタ２４は、コード合成モジュール１０ｃから供給された合成画像を印刷して出力する。プリンタ２４から出力された印刷画像は、自動的に、あるいはユーザによりスキャナ２２に取り込まれる。スキャナ２２は、印刷画像をスキャンしてデジタルデータに変換し、判定モジュール１０ｄに出力する。
【００３３】
判定モジュール１０ｄは、プリンタ２４で印刷された二次元コード情報要素の成否を判定する。すなわち、判定モジュール１０ｄは、印刷画像をスキャナ２２でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合して両者が一致するか否かを判定する。両者が一致する場合、判定モジュール１０ｄは、プリンタ２４により正しく二次元コード情報要素が埋め込まれて印刷されたものと判定する。両者が一致しない場合、判定モジュール１０ｄは、プリンタ２４により正しく二次元コード情報要素が埋め込まれて印刷されていないと判定する。判定モジュール１０ｄは、判定結果をコード情報分割モジュール１０ａ及び基本パターン数設定モジュール１０ｂに出力する。
【００３４】
プリンタ２４により正しく二次元コード情報要素が埋め込まれて印刷されたとの判定結果の場合、コード情報分割モジュール１０ａは、分割された二次元コード情報要素のうちの次の二次元コード情報要素（例えば、分割された二次元コード情報要素が二次元コード情報要素Ａ，Ｂ，Ｃであり、最初に処理したものが二次元コード情報要素Ａの場合、次の二次元コード情報要素Ｂ）を処理対象とする。また、基本パターン数設定モジュール１０ｂは、基本パターン数を再び０に初期化して１ずつインクリメントしていく。コード合成モジュール１０ｃは、新たな二次元コード情報要素を基本パターン数だけ繰り返して元の画像と合成し、プリンタ２４に出力する。判定モジュール１０ｃは、再び、スキャナ２２でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合する。
【００３５】
他方、プリンタ２４により正しく二次元コード情報要素が埋め込まれて印刷されていないとの判定結果の場合、コード情報分割モジュール１０ａは、処理対象をそのまま維持し（例えば、分割された二次元コード情報要素が二次元コード情報要素Ａ，Ｂ，Ｃであり、最初に処理したものが二次元コード情報要素Ａの場合、その二次元コード情報要素Ａ）、基本パターン数設定モジュール１０ｂは基本パターン数を１だけインクリメントする。コード合成モジュール１０ｃは、二次元コード情報要素を１だけインクリメントされた基本パターン数だけ繰り返して元の画像と合成し、プリンタ２４に出力する。判定モジュール１０ｃは、再び、スキャナ２２でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合する。
【００３６】
このように、基本パターン数設定モジュール１０ｂは、判定モジュール１０ｄで二次元コード情報要素が正しく印刷されたと判定されるまで１ずつ基本パターン数、つまり繰り返し数を増大させていく。これにより、分割された二次元コード情報要素が二次元コード情報要素Ａ，Ｂ，Ｃであり、例えば、二次元コード情報要素Ａについては繰り返し数が２で正しく印刷されたと判定され、二次元コード情報要素Ｂについては繰り返し数が３で正しく印刷されたと判定され、二次元コード情報要素Ｃについては繰り返し数が２で正しく印刷されたと判定される。従って、二次元コード情報要素は、読み取り率の向上を考慮して繰り返し数を固定値、例えば４等と設定する場合に比べて、最小の繰り返し数で元画像に埋め込まれる。
【００３７】
なお、図２におけるモジュールは、一般的には論理的に分離可能なハードウェアやソフトウェアの部品を意味する。従って、図２における各モジュールは、コンピュータプログラムにおけるモジュールだけでなく、ハードウェアにおけるモジュールも含まれる。図２の各モジュールは、それぞれ別個のハードウェアで構成されていてもよく、あるいは複数のモジュール（全てのモジュールも含む）が１つのハードウェアで構成されていてもよい。
【００３８】
次に、本実施形態の処理について、具体的に説明する。
【００３９】
図３に、二次元コード情報が埋め込まれる前の元画像を示す。文書５０の所定位置、図では略中央位置に元画像５２が存在するものとする。プリンタ２４は、二次元コード情報が存在しない場合には、図３に示す態様で元画像５２を印刷して文書５０を出力する。元画像５２は文字や図形、写真、グラフ等である。
【００４０】
図４に、二次元コード情報を分割し、３つの部分、すなわち二次元コード情報要素Ａ，Ｂ，Ｃに分割し、最初の二次元コード情報要素Ａを元画像５２に合成してプリンタ２４で印刷した文書５０を示す。二次元コード情報要素Ａは、基本パターン５４ａで表現され、これを繰り返して元画像５２に合成される。図では、説明の都合上、基本繰り返し単位を１つの行としている。従って、基本パターン数＝１とは、１行にわたって基本パターン５４ａを繰り返すことを意味する。また、基本パターン数＝２とは、２行にわたって基本パターン５４ａを繰り返すことを意味する。
【００４１】
なお、二次元コード情報要素は、複数の画素からなる矩形（例えば図に示すような正方形）のブロックにおいて、各画素が描画されない／描画される、の２つの状態により０／１の２値を表すものである。図では、３画素×３画素のブロックを基本単位とし、このうち隣接する４つの画素を描画し、残りの５つの画素を描画しないことで二次元コード情報要素Ａの基本パターンを表している。
【００４２】
ＣＰＵ１０のコード情報分割モジュール１０ａは、二次元コード情報を二次元コード情報要素Ａ，Ｂ，Ｃに３分割し、まず、二次元コード情報要素Ａを処理対象とする。ＣＰＵ１０の基本パターン数設定モジュール１０ｂは、基本パターン数を０に初期化した後、１だけインクリメントして基本パターン数＝１に設定する。ＣＰＵ１０のコード合成モジュール１０ｃは、元画像５２をＲＡＭ１４から読み出し、元画像５２に二次元コード情報要素Ａを１行だけ繰り返して合成し、プリンタ２４に出力する。以上のようにして、図４に示す文書５０がプリンタ２４で印刷されて出力される。
【００４３】
プリンタ２４で印刷されて出力された文書５０は、スキャナ２２で取り込まれてデジタルデータに変換され、ＣＰＵ１０の判定モジュール１０ｃに出力される。判定モジュール１０ｃは、デジタルデータを解析して二次元コード情報要素Ａの候補を抽出し、元の二次元コード情報要素Ａと抽出した二次元コード情報要素Ａの候補を照合する。そして、両者が一致していれば、判定モジュール１０ｃは、読取り成功、つまり二次元コード情報要素Ａは正しく元画像５２に埋め込まれたと判定する。基本パターン数設定モジュール１０ｂは、二次元コード情報要素Ａに関連付けて、このときの基本パターン数（この例では基本パターン数＝１）をＲＡＭ１４に記憶する。
【００４４】
ここで、二次元コード情報要素Ａは、１行にわたって繰り返し基本パターン５４ａが印刷されているため、スキャナ２２でスキャンして得られるデジタルデータから二次元コード情報要素Ａの候補を抽出する際には、最も出現頻度の高いものを候補として選択する。例えば、図４の場合において、１行にわたって基本パターン５４が３個繰り返し印刷されているが、これらをスキャナ２２でスキャンして得られるデジタルデータが、それぞれ×（読取り不能）、×、情報ａを表している場合、判定モジュール１０ｃは、読取り可能な情報ａを二次元コード情報要素Ａの候補として抽出し、元の二次元コード情報要素Ａと照合する。二次元コード情報要素Ａが正しく元画像５２に埋め込まれた場合、次に、二次元コード情報要素Ｂの処理に移行する。
【００４５】
図５に、二次元コード情報要素Ａに続き、次の二次元コード情報要素Ｂを元画像５２に合成してプリンタ２４で印刷した文書５０を示す。二次元コード情報要素Ｂは、基本パターン５４ｂで表現され、これを繰り返して元画像５２に合成される。基本パターン数設定モジュール１０ｂでは、基本パターン数を０に初期化した後、１だけインクリメントしているので、基本パターン５４ｂは基本パターン数＝１、つまり１行にわたって繰り返し元画像５２に合成されて文書５０として印刷される。
【００４６】
プリンタ２４で印刷されて出力された文書５０は、スキャナ２２で取り込まれてデジタルデータに変換され、ＣＰＵ１０の判定モジュール１０ｃに出力される。判定モジュール１０ｃは、デジタルデータを解析して二次元コード情報要素Ｂの候補を抽出し、元の二次元コード情報要素Ｂと抽出した二次元コード情報要素Ｂの候補を照合する。二次元コード情報要素Ｂが、図５に示すように元画像５２と重畳して印刷された場合、二次元コード情報要素Ｂと元画像５２とが干渉し、二次元コード情報要素Ｂを読み取ることが一般に困難となる。この場合、判定モジュール１０ｃで元の二次元コード情報要素Ｂと二次元コード情報要素Ｂの候補を照合すると、両者が一致せず、読取り失敗と判定される。読み取り失敗と判定された場合、ＣＰＵ１０のコード情報分割モジュール１０ａは、処理対象として二次元コード情報要素Ｂをそのまま維持し、基本パターン数設定モジュール１０ｂは、基本パターン数を１だけインクリメントして基本パターン数＝２とする。これは、二次元コード情報要素Ｂを２行にわたって繰り返し元画像５２に合成することである。
【００４７】
図６に、二次元コード情報要素Ｂを２行にわたって繰り返し元画像５２に合成してプリンタ２４で印刷した文書５０を示す。２行にわたって繰り返し合成するため、最初の１行は元画像５２と重畳するものの、次の１行は元画像５２と重畳することなく合成される。
【００４８】
プリンタ２４で印刷されて出力された文書５０は、スキャナ２２で取り込まれてデジタルデータに変換され、ＣＰＵ１０の判定モジュール１０ｃに出力される。判定モジュール１０ｃは、デジタルデータを解析して二次元コード情報要素Ｂの候補を抽出し、元の二次元コード情報要素Ｂと抽出した二次元コード情報要素Ｂの候補を照合する。そして、両者が一致していれば、判定モジュール１０ｃは、読取り成功、つまり二次元コード情報要素Ｂは正しく元画像５２に埋め込まれたと判定する。基本パターン数設定モジュール１０ｂは、二次元コード情報要素Ｂに関連付けて、このときの基本パターン数（この例では基本パターン数＝２）をＲＡＭ１４に記憶する。二次元コード情報要素Ｂが正しく元画像５２に埋め込まれた場合、次に、二次元コード情報要素Ｃの処理に移行する。
【００４９】
図７に、二次元コード情報要素Ｂに続き、次の二次元コード情報要素Ｃを元画像５２に合成してプリンタ２４で印刷した文書５０を示す。二次元コード情報要素Ｃは、基本パターン５４ｃで表現され、これを繰り返して元画像５２に合成される。基本パターン数設定モジュール１０ｂでは、基本パターン数を０に初期化した後、１だけインクリメントしているので、基本パターン５４ｃは基本パターン数＝１、つまり１行にわたって繰り返し元画像５２に合成されて文書５０として印刷される。
【００５０】
プリンタ２４で印刷されて出力された文書５０は、スキャナ２２で取り込まれてデジタルデータに変換され、ＣＰＵ１０の判定モジュール１０ｃに出力される。判定モジュール１０ｃは、デジタルデータを解析して二次元コード情報要素Ｃの候補を抽出し、元の二次元コード情報要素Ｃと抽出した二次元コード情報要素Ｃの候補を照合する。そして、両者が一致していれば、判定モジュール１０ｃは、読取り成功、つまり二次元コード情報要素Ｃは正しく元画像５２に埋め込まれたと判定する。基本パターン数設定モジュール１０ｂは、二次元コード情報要素Ｃに関連付けて、このときの基本パターン数（この例では基本パターン数＝１）をＲＡＭ１４に記憶する。
【００５１】
以上のようにして、分割された全ての二次元コード情報要素Ａ，Ｂ，Ｃが埋め込まれ、これらを正しく読み取れることを確認すると、試し印刷が終了し、ＣＰＵ１０は、本印刷に移行する。すなわち、ＣＰＵ１０は、改めて各二次元コード情報要素Ａ，Ｂ，Ｃ毎に読取りが成功した時の基本パターン数をＲＡＭ１４から読み出し、これらのコード情報を読み出した基本パターン数、つまり繰り返し数で元画像５２に埋め込んでプリンタ２４に印刷を指示する。
【００５２】
図８に、最終的にプリンタ２４で印刷され出力される文書５０を示す。二次元コード情報要素Ａは１行にわたって繰り返し印刷され、二次元コード情報要素Ｂは２行にわたって繰り返し印刷され、二次元コード情報要素Ｃは１行にわたって繰り返し印刷される。元画像５２の背景に目立たないように情報を埋め込むことで、レイアウトはそのまま維持される。また、図８の文書５０をスキャナ２２で読み取ったとしても、二次元コード情報要素Ａ，Ｂ，Ｃのいずれも正しく読み取ることが保証され、二次元コード情報要素Ａ，Ｂ，Ｃを組み合わせて元の二次元コード情報（３分割される前の二次元コード情報）を得ることができる。
【００５３】
なお、二次元コード情報要素Ａ、Ｂ，Ｃがそれぞれ元の二次元コード情報を３分割したものである旨を示す情報は、基本パターン５４ａ、５４ｂ，５４ｃに埋め込んでおけばよい。
【００５４】
また、分割された全ての二次元コード情報要素Ａ，Ｂ，Ｃが埋め込まれ、これらが正しく読み取れることを確認した時点で、未だ文書５０に余白が存在する場合には、それまでの処理を余白がなくなるまで繰り返して二次元コード情報要素Ａ，Ｂ，Ｃをさらに埋め込んでもよい。なお、ここでの「余白」とは、元画像の有無にかかわらず、二次元コード情報が埋め込まれていない部分を意味し、単なる白イメージを意味するものではない。
【００５５】
図９に、余白がなくなるまで処理を繰り返した場合にプリンタ２４で印刷され出力される文書５０を示す。二次元コード情報要素Ａ，Ｂ，Ｃを全て埋め込んでも余白があるため、二次元コード情報要素Ａ，Ｂ，Ｃを繰り返し埋め込み、それでも余白が残っているため、さらに二次元コード情報要素Ａ、Ｂ，Ｃを埋め込んだものであり、結局、二次元コード情報要素Ａ，Ｂ，Ｃの組を合計３組埋め込まれる。繰り返し回数が増大するほど冗長度が増大し、二次元コード情報要素の読み取り率が向上する。二次元コード情報は、文書５０の全面にわたって印刷しても良いが、もちろんこれに限定されるものではなく、二次元コード情報が印刷されない余白が存在していてもよい。
【００５６】
図１０に、本実施形態の処理フローチャートを示す。
【００５７】
ＣＰＵ１０のコード情報分割モジュール１０ａは、ユーザから二次元コード情報の埋め込み指示操作を受け付けると、埋め込むべき二次元コード情報を分割してリストに格納する（Ｓ１０１）。コード情報容量は予め規定値としてもよく、これにより二次元コード情報をＭ分割（Ｍは２以上の自然数）してＲＡＭ１４に記憶する。なお、「リストに格納する」とは、分割された二次元コード情報要素のそれぞれをリスト形式にしてＲＡＭ１４に記憶することを意味する。例えば、二次元コード情報を二次元コード情報要素Ａ，Ｂ，Ｃの３つに分割した場合、
第１：二次元コード情報要素Ａ
第２：二次元コード情報要素Ｂ
第３：二次元コード情報要素Ｃ
とリスト形式にしてＲＡＭ１４に記憶する。なお、元の二次元コード情報の容量が大きいほど分割数も増大するが、特に分割数の上限を設ける必要はない。但し、合成すべき元画像５２に応じ、あるいは文書５０の用紙の大きさに応じて上限を設けてもよい。
【００５８】
次に、ＣＰＵ１０のコード情報分割モジュール１０ａは、処理対象とすべき二次元コード情報要素（分割後の二次元コード情報の構成要素）をＲＡＭ１４から読み出してコード合成モジュール１０ｃに供給する（Ｓ１０２）。このとき、処理対象とすべき二次元コード情報要素が存在するか否かを判定し（Ｓ１０３）、全て処理済である場合には処理を終了する（Ｓ１０３にてＮＯ）。
【００５９】
処理対象の二次元コード情報要素が存在する場合（Ｓ１０３にてＹＥＳ）、ＣＰＵ１０の基本パターン数設定モジュール１０ｂは、基本パターン数Ｎを０に初期化（Ｓ１０４）した後に、基本パターン数Ｎを１だけインクリメントする（Ｓ１０５）。基本パターン数設定モジュール１０ｂは、基本パターン数を１だけインクリメントした後、基本パターン数Ｎをコード合成モジュール１０ｃに供給する。
【００６０】
次に、ＣＰＵ１０のコード合成モジュール１０ｃは、二次元コード情報要素と基本パターン数Ｎから二次元コード情報要素を生成する（Ｓ１０６）。すなわち、処理対象の二次元コード情報要素Ａを基本パターン数Ｎだけ繰り返すような二次元コード情報要素Ａの群を生成する。基本パターン数Ｎは、基本的には図４に示すように、二次元コード情報要素Ａを表す基本パターン５４ａの繰り返し数であるが、文書５０の１行にわたって埋め込むことを前提として、繰り返しの行数としてもよい。本実施形態では、このように基本パターン数Ｎを繰り返し行数Ｎの意味で用いるが、これに限定されるわけではない。基本パターン数Ｎは初期値０から１だけインクリメントされてＮ＝１に設定されているので、二次元コード情報要素Ａは１行にわたって繰り返される（図４参照）。その後、コード合成モジュール１０ｃは、ＲＡＭ１４から印刷すべき元画像５２を読み出し、この元画像５２と二次元コード情報要素Ａ群を合成してプリンタ２４に出力する（Ｓ１０７）。
【００６１】
プリンタ２４は、合成画像を受け取って印刷し、合成画像の文書５０を出力する（Ｓ１０８）。出力された文書５０は、自動的に、あるいはユーザによりスキャナ２２に取り込まれる。
【００６２】
スキャナ２２は、文書５０をスキャンしてデジタルデータに変換し、デジタルデータをデコードして二次元コード情報要素Ａを読み取る（Ｓ１０９）。二次元コード情報要素Ａは、基本パターン数Ｎだけ繰り返されているため、読み取った情報は二次元コード情報要素Ａの群である。スキャナ２２は、読み取った二次元コード情報要素Ａの群をＣＰＵ１０の判定モジュール１０ｄに供給する。
【００６３】
ＣＰＵ１０の判定モジュール１０ｄは、スキャナ２２で読み取った二次元コード情報要素Ａの群を元の二次元コード情報要素Ａと照合して両者が一致するか否かを判定する（Ｓ１１０）。元の二次元コード情報要素Ａは、コード合成モジュール１０ｃから取得する。
【００６４】
両者が一致するため読み取った二次元コード情報要素Ａが正しいと判定した場合（Ｓ１１０にてＹＥＳ）、Ｓ１０２の処理に移行して次の処理対象の二次元コード情報要素ＢをＲＡＭ１４から読み出し、Ｓ１０３以降の処理を繰り返す。このとき、基本パターン数設定モジュール１０ｂは、二次元コード情報要素Ａの基本パターン数Ｎ（この場合はＮ＝１）をＲＡＭ１４に記憶する。
【００６５】
他方、両者が一致せず読み取った二次元コード情報要素Ａが正しくないと判定した場合（Ｓ１１０にてＮＯ）、Ｓ１０５の処理に移行して基本パターン数Ｎをさらに１だけインクリメントして、Ｓ１０６以降の処理を繰り返す。このとき、処理対象の二次元コード情報要素Ａはそのまま維持されるから、Ｓ１０６では二次元コード情報要素Ａは基本パターン数Ｎ＝２、すなわち２行にわたって繰り返され、元画像５２と合成されて印刷される。そして、再びスキャナ２２で読み取られ、２行にわたって繰り返された二次元コード情報要素Ａの群を元の二次元コード情報要素Ａと照合する。照合した結果、両者が一致する場合には、Ｓ１０２の処理に移行して次の処理対象の二次元コード情報要素ＢをＲＡＭ１４から読み出し、Ｓ１０３以降の処理を繰り返す。このとき、基本パターン数設定モジュール１０ｂは、二次元コード情報要素Ａの基本パターン数Ｎ（この場合はＮ＝２）をＲＡＭ１４に記憶する。
【００６６】
以上のようにして、全ての処理対象について元画像５２と合成して印刷し、これをスキャナ２２で読み取って正しいと判定できた場合（Ｓ１０３にてＮＯと判定）、文書５０に未だ余白が存在するか否かを判定する（Ｓ１１１）。この判定は、例えば最後に印刷した文書５０のスキャン結果から判定モジュール１０ｄで行ってもよい。もちろん、ＣＰＵ１０は、用紙における元画像の位置、及び二次元コード情報要素の埋め込み位置のデータを有しているので、これらを用いて余白が存在するか否かを判定してもよい。そして、余白が未だ残っている場合には、Ｓ１０２以降の処理を再び繰り返して、二次元コード情報要素Ａ，Ｂ，Ｃを再び元画像に合成して文書５０内に埋め込む。他方、余白が存在していない場合には、それまでの処理でＲＡＭ１４に記憶されている二次元コード情報要素Ａ，Ｂ，Ｃ毎の基本パターン数Ｎを用いて最終的に二次元コード情報要素Ａ，Ｂ，Ｃを元画像５２に合成して印刷する（Ｓ１１２）。
【００６７】
具体的には、例えば
二次元コード情報要素Ａ：基本パターン数２
二次元コード情報要素Ｂ：基本パターン数３
二次元コード情報要素Ｃ：基本パターン数３
としてＲＡＭ１４に記憶されている場合、最終的印刷では、ＣＰＵ１０のコード合成モジュール１０ｃは、二次元コード情報要素Ａについては２行繰り返し、二次元コード情報要素Ｂについては３行繰り返し、二次元コード情報要素Ｃについては３行繰り返して元画像５２と合成して印刷する。
【００６８】
また、余白が存在したため必要な回数だけ二次元コード情報要素Ａ，Ｂ，Ｃの合成を繰り返した場合、その都度、それぞれの二次元コード情報要素毎に基本パターン数ＮがＲＡＭ１４に記憶されるので、最終的印刷ではこれらの基本パターン数Ｎを用いて最終的印刷を行う。例えば、図９に示すように、余白が存在したため３回繰り返し処理を行い、二次元コード情報群１、２、３が存在する場合、例えば
二次元コード情報要素Ａ：基本パターン数２（１回目）、３（２回目）、２（３回目）
二次元コード情報要素Ｂ：基本パターン数３（１回目）、４（２回目）、３（３回目）
二次元コード情報要素Ｃ：基本パターン数３（１回目）、３（２回目）、３（３回目）
としてＲＡＭ１４に記憶されている場合、最終的印刷では、ＣＰＵ１０のコード合成モジュール１０ｃは、二次元コード情報要素Ａについては２行繰り返し、二次元コード情報要素Ｂについては３行繰り返し、二次元コード情報要素Ｃについては３行繰り返し、次いで、二次元コード情報要素Ａについては３行繰り返し、二次元コード情報要素Ｂについては４行繰り返し、二次元コード情報要素Ｃについては３行繰り返し、さらに、二次元コード情報要素Ａについては２行繰り返し、二次元コード情報要素Ｂについては３行繰り返し、二次元コード情報要素Ｃについては３行繰り返して元画像５２と合成して印刷する。
【００６９】
このように、本実施形態では、二次元コード情報を分割して元画像５２と合成して埋め込むので、二次元コード情報の容量を増大させることができる。また、二次元コード情報要素を埋め込む際にその都度正しく読み取れるまで繰り返す、つまり二次元コード情報要素の埋め込みが正しいことを検証しながら埋め込んでいくので、最終的に印刷された文書からも確実に二次元コード情報を読み取ることができる。さらに、本実施形態では、データベースサーバを新たに構築し、データベースサーバ内のデータとコード情報とを対応付ける必要もない。
【００７０】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく、種々の変形が可能である。
【００７１】
例えば、本実施形態における二次元コード情報は、矩形ブロックを構成する複数の画素の描画する／描画しない、のパターン、つまりドットパターンで表されているが、ブロック形状は任意でよい。二次元コード情報の代表例はＱＲコード（登録商標）であるが、通常のＱＲコードはユーザが視認可能である。個々のドットサイズを小さく、かつ、ドットピッチ（隣接するドット同士の間隔）を大きくすることで、元画像５２の背景に目立たないように二次元コード情報を埋め込むことができる。
【００７２】
また、本実施形態では、文書５０の片面に二次元コード情報を埋め込んでいるが、文書５０の両面を用いて二次元コード情報を埋め込んでもよい。例えば、元画像５２が片面（表面）のみに存在する場合に、ＣＰＵ１０は、表面用の二次元コード情報を生成するとともに、裏面用の二次元コード情報を生成して埋め込む。この際、裏面については表面の二次元コード情報と同一のものを埋め込む。印刷時には本来であれば元画像５２は表面しか存在しないから、裏面の二次元コード情報の印刷は、ページイメージ挿入として処理する。もちろん、表面と裏面で異なる二次元コード情報を埋め込んでもよい。例えば、二次元コード情報を分割して二次元コード情報要素Ａ，Ｂ，Ｃ，Ｄが存在する場合、二次元コード情報要素Ａ，Ｂを表面に埋め込み、二次元コード情報要素Ｃ，Ｄを裏面に埋め込む等である。元画像５２が両面（表面と裏面）に存在する場合、ＣＰＵ１０は、表面と同様の処理を裏面に施して二次元コード情報を埋め込む。
【００７３】
また、二次元コード情報は、公知の方法で生成され得るが、例えば以下のように生成してもよい。すなわち、埋め込むべき情報を１６バイトとし、この情報からＣＲＣパリティを計算して元の情報に付加した上で、複数に分割し、それぞれに３ビットのＩＤを付加する。ＩＤは、二次元コード情報要素Ａ、二次元コード情報要素Ｂ，二次元コード情報要素Ｃの３つに分割する場合、０，１，２を示すものである。このＩＤにより、それぞれが一つの二次元コード情報の分割要素であることが分かる。その後、これらを例えばＢＣＨで符号化し、矩形ブロックの各画素に順に埋め込んでいく。なお、符号化されたデータで埋め込んで矩形ブロックに余りが生じた場合には、例えば０を埋め込めばよい。
【００７４】
また、本実施形態では、試し印刷を行って二次元コード情報要素が正しく読み取れるか否かを判定しているが、試し印刷を行う毎に新たな用紙に元画像５２及び二次元コード情報要素を印刷する他、同一の用紙を援用して試し印刷を行ってもよい。
【００７５】
また、試し印刷を行って二次元コード情報要素が正しく読み取れなかった場合、その部分は最終的な印刷でも同様に二次元コード情報要素が読み取れない可能性が高いので、最終的印刷ではその部分を除外せずに二次元コード情報要素を埋め込む他、その部分を除外して二次元コード情報要素を埋め込んでもよい。図８は、二次元コード情報要素が正しく読み取れなかった場合でも、最終的印刷ではその部分を除外せずに二次元バーコード情報を埋め込んだ場合である。
【００７６】
また、既述したように、本実施形態では基本パターンを行方向に繰り返して二次元コード情報要素を埋め込んでいるが、これに代えて、基本パターンを列方向に繰り返して二次元コード情報要素を埋め込んでもよい。具体的には、二次元コード情報要素Ａをまず第１列に埋め込み、試し印刷を行って正しく読み取れた場合には、次の第２列に二次元コード情報要素Ｂを埋め込んで試し印刷を行う。このとき、正しく読み取れない場合には、第２列及び第３列に繰り返し二次元コード情報要素Ｂを埋め込んで試し印刷を行う。以下、これを余白がなくなるまで繰り返して二次元コード情報要素を埋め込めばよい。
【００７７】
本実施形態では、図２に示すようにＣＰＵ１０が各モジュール１０ａ、１０ｂ、１０ｃ及び１０ｄとして機能しているが、これらのいずれか一つまたは複数が外部のシステムにあり、通信回線で接続されていてもよい。例えば、判定モジュール１０ｄが外部のコンピュータのＣＰＵで実現されている等である。
【００７８】
本実施形態における画像処理装置１は、図１に示すような構成であるが、具体的には複合機（スキャナ、プリンタ、複写機、ファックス等の複数の機能を有している画像処理装置）で構成し得る。
【００７９】
本実施形態における「二次元コード情報要素」は、元の二次元コード情報を複数に分割して得られるそれぞれの断片を意味するが、分割の方法は任意であり、必ずしもそれぞれの要素の容量が均一でなくてもよい。また、二次元コード情報の容量自体が相対的に小さい場合には、分割する必要はない。従って、例えば埋め込むべき二次元コード情報の容量を所定閾値と大小比較し、閾値以下であればそのまま埋め込み、閾値以上であれば本実施形態のように複数の二次元コード情報要素に分割して埋め込んでもよい。
【００８０】
さらに、本実施形態では、判定モジュール１０ｄが、印刷画像をスキャナ２２でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合して両者が一致するか否かを判定しているが、印刷してスキャンするのは一例であり、印刷してスキャンすることなく判定してもよい。例えば、二次元コード情報と元画像を合成した結果をメモリに記憶し、メモリから二次元コード情報を抽出して、合成前の二次元コード情報と照合してもよい。判定モジュール１０ｄは、このようにして得られた判定結果をコード情報分割モジュール１０ａ及び基本パターン数設定モジュール１０ｂに出力する。要するに、本発明では、複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して保存し、合成して保存された二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合して一致するか否かを判定すればよい。
【符号の説明】
【００８１】
１  画像処理装置、１０  ＣＰＵ、１２  ＲＯＭ、１４  ＲＡＭ、１６  通信部、１８  操作部、２０  表示部、２２  スキャナ、２４  プリンタ。
【図１】
2015080032.tif 000003
【図２】
2015080032.tif 000004
【図３】
2015080032.tif 000005
【図４】
2015080032.tif 000006
【図５】
2015080032.tif 000007
【図６】
2015080032.tif 000008
【図７】
2015080032.tif 000009
【図８】
2015080032.tif 000010
【図９】
2015080032.tif 000011
【図１０】
2015080032.tif 000012