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

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

▶ 富士ゼロックス株式会社の特許一覧

<>
  • 特許6127899-画像処理装置及び画像処理プログラム 図000002
  • 特許6127899-画像処理装置及び画像処理プログラム 図000003
  • 特許6127899-画像処理装置及び画像処理プログラム 図000004
  • 特許6127899-画像処理装置及び画像処理プログラム 図000005
  • 特許6127899-画像処理装置及び画像処理プログラム 図000006
  • 特許6127899-画像処理装置及び画像処理プログラム 図000007
  • 特許6127899-画像処理装置及び画像処理プログラム 図000008
  • 特許6127899-画像処理装置及び画像処理プログラム 図000009
  • 特許6127899-画像処理装置及び画像処理プログラム 図000010
  • 特許6127899-画像処理装置及び画像処理プログラム 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6127899
(24)【登録日】2017年4月21日
(45)【発行日】2017年5月17日
(54)【発明の名称】画像処理装置及び画像処理プログラム
(51)【国際特許分類】
   H04N 1/387 20060101AFI20170508BHJP
   G06K 19/06 20060101ALI20170508BHJP
   G06K 1/12 20060101ALI20170508BHJP
【FI】
   H04N1/387
   G06K19/06 037
   G06K19/06 056
   G06K1/12 A
【請求項の数】6
【全頁数】16
(21)【出願番号】特願2013-214804(P2013-214804)
(22)【出願日】2013年10月15日
(65)【公開番号】特開2015-80032(P2015-80032A)
(43)【公開日】2015年4月23日
【審査請求日】2016年6月23日
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士ゼロックス株式会社
(74)【代理人】
【識別番号】110001210
【氏名又は名称】特許業務法人YKI国際特許事務所
(72)【発明者】
【氏名】阿出川 智通
【審査官】 石田 信行
(56)【参考文献】
【文献】 特開2012−160976(JP,A)
【文献】 特開2008−059358(JP,A)
【文献】 特開2007−216570(JP,A)
【文献】 特開2002−036763(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/387
G06K 1/12
G06K 19/06
(57)【特許請求の範囲】
【請求項1】
二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、
複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、
複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
二次元コード情報要素が印刷されていない部分を検出する検出手段
をさらに備え、前記二次元コード情報要素が印刷されていない部分がなくなるまで前記複数の二次元コード情報要素のそれぞれに対して前記合成、印刷、及び照合を繰り返すことを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記元画像が用紙の表面のみに存在する場合に、前記用紙の裏面にも前記表面と同一又は異なる二次元コード情報要素を印刷することを特徴とする請求項1,2のいずれかに記載の画像処理装置。
【請求項4】
前記二次元コード情報要素付加手段は、複数の二次元コード情報要素のそれぞれに対して、元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の行単位の繰り返し回数を1ずつ増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行うことを特徴とする請求項1〜3のいずれかに記載の画像処理装置。
【請求項5】
コンピュータを、
二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、
複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、
複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段、
として機能させることを特徴とする画像処理プログラム。
【請求項6】
二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、
複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して保存し、前記合成して保存された二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、抽出、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、抽出、及び照合を行う二次元コード情報要素付加手段と、
複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段と、
を備えることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及び画像処理プログラムに関する。
【背景技術】
【0002】
従来から、画像等に情報を二次元コードとして埋め込む技術が知られている。二次元コードを埋め込む際には、埋め込まれた情報が確実に読み取れることが前提となる。
【0003】
特許文献1には、情報画像の合成された画像が回転していたとしても、その情報画像内に埋め込まれている情報の検出が可能な情報画像について記載されている。
【0004】
特許文献2には、画像データの配置位置及び配置サイズを調整した結果得られた二次元コードを仮で配置し、配置された二次元コードの誤り率を算出して閾値以下となるまで繰り返すことが記載されている。
【0005】
特許文献3には、用紙にバーコードを印字し、印字したバーコードを読み取ってその良否を検証することが記載されている。
【0006】
特許文献4には、多色のバーコードシンボルを同じ箇所に印刷し、多量のコード情報を小さなスペースに収納することが記載されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2011−237988号公報
【特許文献2】特開2013−025782号公報
【特許文献3】特開2012−143986号公報
【特許文献4】特開昭61−217887号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
埋め込まれた情報の読み取り率を向上させるためには、同じ情報を繰り返し埋め込むことが好適であり、また、画像の背景に目立たないように情報を埋め込むことで、既存の文書をそのまま維持することができるが、他方、埋め込む情報の容量が少なくなってしまう問題がある。
【0009】
埋め込む情報の容量不足を補うためには、例えばデータベースサーバを構築し、データベースサーバ内のデータとコード情報とを対応付けることも一つの方法であるが、データベースサーバを構築する必要が有り、またその運用にもコストがかかってしまう。
【0010】
本発明の目的は、文書等の画像に埋め込むべきコード情報の容量を簡易に増大させることができる画像処理装置及び画像処理プログラムを提供することにある。
【課題を解決するための手段】
【0011】
請求項1記載の発明は、二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段とを備えることを特徴とする画像処理装置である。
【0012】
請求項2記載の発明は、二次元コード情報要素が印刷されていない部分を検出する検出手段をさらに備え、前記二次元コード情報要素が印刷されていない部分がなくなるまで前記複数の二次元コード情報要素のそれぞれに対して前記合成、印刷、及び照合を繰り返すことを特徴とする請求項1記載の画像処理装置である。
【0013】
請求項3記載の発明は、前記元画像が用紙の表面のみに存在する場合に、前記用紙の裏面にも前記表面と同一又は異なる二次元コード情報要素を印刷することを特徴とする請求項1,2のいずれかに記載の画像処理装置である。
【0014】
請求項4記載の発明は、前記二次元コード情報要素付加手段は、複数の二次元コード情報要素のそれぞれに対して、元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の行単位の繰り返し回数を1ずつ増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行うことを特徴とする請求項1〜3のいずれかに記載の画像処理装置である。
【0015】
請求項5記載の発明は、コンピュータを、二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、複数の二次元コード情報要素のそれぞれに対して、元画像と合成して印刷し、印刷された文書をスキャンして文書に含まれる二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、印刷、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、印刷、及び照合を行う二次元コード情報要素付加手段と、複数の二次元コード情報のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段として機能させることを特徴とする画像処理プログラムである。
【0016】
請求項6記載の発明は、二次元コード情報を複数の二次元コード情報要素に分割する二次元コード情報分割手段と、複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して保存し、前記合成して保存された二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合し、両者が一致しない場合には一致するまで前記二次元コード情報要素の繰り返し回数を順次増大させて前記合成、抽出、及び照合を繰り返し、両者が一致した場合には次の二次元コード情報要素に対して前記合成、抽出、及び照合を行う二次元コード情報要素付加手段と、複数の二次元コード情報要素のそれぞれに対して照合が一致した場合の繰り返し回数だけ繰り返して前記元画像と合成して印刷する印刷手段と、を備えることを特徴とする画像処理装置である。
【発明の効果】
【0017】
請求項1、請求項5及び請求項6記載の発明によれば、二次元コード情報を確実に元画像に合成して埋め込むことができるとともに、二次元コード情報の容量を増大することができる。
【0018】
請求項2記載の発明によれば、さらに、用紙全体に二次元コード情報を埋め込むことができる。
【0019】
請求項3記載の発明によれば、さらに、用紙の裏面も利用して二次元コード情報を埋め込むことができる。
【0020】
請求項4記載の発明によれば、さらに、簡易に二次元コード情報を繰り返し埋め込むことができる。
【図面の簡単な説明】
【0021】
図1】実施形態の構成ブロック図である。
図2】実施形態のCPUの機能ブロック図である。
図3】実施形態の元画像の説明図である。
図4】実施形態の二次元コード情報要素Aの合成、印刷、照合説明図である。
図5】実施形態の二次元コード情報要素Bの合成、印刷、照合説明図である。
図6】実施形態の二次元コード情報要素Bの合成、印刷、照合説明図である。
図7】実施形態の二次元コード情報要素Cの合成、印刷、照合処理説明図である。
図8】実施形態の最終的な印刷後の文書説明図である。
図9】他の実施形態の二次元コード情報要素の埋め込み説明図である。
図10】実施形態の処理フローチャートである。
【発明を実施するための形態】
【0022】
以下、図面に基づき本発明の実施形態について説明する。
【0023】
図1に、本実施形態における画像処理装置の構成ブロック図を示す。画像処理装置1は、CPU10、ROM12、RAM14、通信部16、操作部18、表示部20、スキャナ22、及びプリンタ24を備え、これらはバス26を介して接続される。
【0024】
CPU10は、画像処理装置1の処理全体を制御する。CPU10は、ROM12に記憶された処理プログラムを読み出し、処理プログラムに従って各種処理を実行する。CPU10の主な処理は、二次元コード情報を複数の要素(二次元コード情報要素)に分割する処理、元画像に二次元コード情報要素を合成する処理、合成画像をプリンタ24に供給する機能、プリンタ24から出力された文書をスキャナ22でスキャンして得られるデジタルデータから二次元コード情報要素を抽出する機能、及び抽出した二次元コード情報と元の二次元コード情報要素とを照合する機能である。CPU10は、RAM14をワーキングメモリとして用いて各種のデータを記憶する。RAM14には、元画像の他、二次元コード情報要素の繰り返し数に関するデータが記憶される。また、CPU10は、通信部16を介して必要に応じ外部機器とデータを送受する。本実施形態におけるCPU10の基本的な機能は、印刷すべき元画像に、二次元コード情報を繰り返し埋め込むことで、原稿変動耐性及び削除耐性を強化するものである。また、印刷された文書の背景に目立たないように二次元コード情報を埋め込むことで、既存の文書又は帳票フォームをそのまま維持するものである。
【0025】
操作部18は、ユーザからの各種操作を受け付ける。各種操作には、印刷指示や二次元コード情報の埋め込み操作等が含まれる。操作部18は、キーボード等でもよく、あるいはタッチパネルでもよい。
【0026】
表示部20は、ユーザが操作するための各種情報や、画像処理装置1の処理状況等を表示する。表示部20は液晶パネルや有機ELパネルで構成され、タッチパネルとして操作部18と表示部20が一体化してもよい。
【0027】
スキャナ22は、CCD等の画像センサを備え、画像(文字や図形を含む)を読み取ってデジタルデータに変換し、CPU10に供給する。本実施形態では、スキャナ22は、プリンタ24から出力された、二次元コード情報が埋め込まれた文書を読み取ってデジタルデータに変換し、CPU10に供給する。
【0028】
プリンタ24は、CPU10からの指示に応じ、元画像に二次元コード情報を埋め込んで画像を印刷する。プリンタ24は、試し印刷及び最終的印刷を行う。試し印刷では、二次元コード情報が正しく読み取れるか否かを検証するために用いられ、最終的印刷では、読み取れることが検証された態様で元画像に二次元コード情報を埋め込んで印刷する。
【0029】
図2に、CPU10の機能ブロック図を示す。CPU10は、機能モジュールとして、コード情報分割モジュール10a、基本パターン数設定モジュール10b、コード合成モジュール10c、及び判定モジュール10dを備える。
【0030】
コード情報分割モジュール10aは、二次元コード情報を、コード情報容量に基づいて分割するモジュールである。例えば、あるコード情報の情報量が、予め定められた情報容量を超えているような場合に、そのコード情報を、3つの二次元コード情報要素A、B,Cに3分割する等である。なお、コード情報容量とは、情報画像内に埋め込まれるコード情報の容量である。
【0031】
基本パターン数設定モジュール10bは、二次元コード情報要素の基本パターン数を設定する。上記のように、埋め込まれた二次元コード情報要素の読み取り率を向上させるためには、同じ二次元コード情報要素を繰り返し埋め込むことが好適であり、繰り返す際の基本単位が基本パターンであり、繰り返す回数が基本パターン数である。基本パターン数設定モジュール10bは、基本パターン数を0に初期化し、基本パターン数を順次1ずつインクリメントしていく。
【0032】
コード合成モジュール10cは、印刷すべき元画像と、二次元コード情報要素とを合成してプリンタ24に出力する。二次元コード情報要素は、基本パターン数設定モジュール10bで設定された基本パターン数だけ繰り返して元画像の背景に合成する。プリンタ24は、コード合成モジュール10cから供給された合成画像を印刷して出力する。プリンタ24から出力された印刷画像は、自動的に、あるいはユーザによりスキャナ22に取り込まれる。スキャナ22は、印刷画像をスキャンしてデジタルデータに変換し、判定モジュール10dに出力する。
【0033】
判定モジュール10dは、プリンタ24で印刷された二次元コード情報要素の成否を判定する。すなわち、判定モジュール10dは、印刷画像をスキャナ22でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合して両者が一致するか否かを判定する。両者が一致する場合、判定モジュール10dは、プリンタ24により正しく二次元コード情報要素が埋め込まれて印刷されたものと判定する。両者が一致しない場合、判定モジュール10dは、プリンタ24により正しく二次元コード情報要素が埋め込まれて印刷されていないと判定する。判定モジュール10dは、判定結果をコード情報分割モジュール10a及び基本パターン数設定モジュール10bに出力する。
【0034】
プリンタ24により正しく二次元コード情報要素が埋め込まれて印刷されたとの判定結果の場合、コード情報分割モジュール10aは、分割された二次元コード情報要素のうちの次の二次元コード情報要素(例えば、分割された二次元コード情報要素が二次元コード情報要素A,B,Cであり、最初に処理したものが二次元コード情報要素Aの場合、次の二次元コード情報要素B)を処理対象とする。また、基本パターン数設定モジュール10bは、基本パターン数を再び0に初期化して1ずつインクリメントしていく。コード合成モジュール10cは、新たな二次元コード情報要素を基本パターン数だけ繰り返して元の画像と合成し、プリンタ24に出力する。判定モジュール10cは、再び、スキャナ22でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合する。
【0035】
他方、プリンタ24により正しく二次元コード情報要素が埋め込まれて印刷されていないとの判定結果の場合、コード情報分割モジュール10aは、処理対象をそのまま維持し(例えば、分割された二次元コード情報要素が二次元コード情報要素A,B,Cであり、最初に処理したものが二次元コード情報要素Aの場合、その二次元コード情報要素A)、基本パターン数設定モジュール10bは基本パターン数を1だけインクリメントする。コード合成モジュール10cは、二次元コード情報要素を1だけインクリメントされた基本パターン数だけ繰り返して元の画像と合成し、プリンタ24に出力する。判定モジュール10cは、再び、スキャナ22でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合する。
【0036】
このように、基本パターン数設定モジュール10bは、判定モジュール10dで二次元コード情報要素が正しく印刷されたと判定されるまで1ずつ基本パターン数、つまり繰り返し数を増大させていく。これにより、分割された二次元コード情報要素が二次元コード情報要素A,B,Cであり、例えば、二次元コード情報要素Aについては繰り返し数が2で正しく印刷されたと判定され、二次元コード情報要素Bについては繰り返し数が3で正しく印刷されたと判定され、二次元コード情報要素Cについては繰り返し数が2で正しく印刷されたと判定される。従って、二次元コード情報要素は、読み取り率の向上を考慮して繰り返し数を固定値、例えば4等と設定する場合に比べて、最小の繰り返し数で元画像に埋め込まれる。
【0037】
なお、図2におけるモジュールは、一般的には論理的に分離可能なハードウェアやソフトウェアの部品を意味する。従って、図2における各モジュールは、コンピュータプログラムにおけるモジュールだけでなく、ハードウェアにおけるモジュールも含まれる。図2の各モジュールは、それぞれ別個のハードウェアで構成されていてもよく、あるいは複数のモジュール(全てのモジュールも含む)が1つのハードウェアで構成されていてもよい。
【0038】
次に、本実施形態の処理について、具体的に説明する。
【0039】
図3に、二次元コード情報が埋め込まれる前の元画像を示す。文書50の所定位置、図では略中央位置に元画像52が存在するものとする。プリンタ24は、二次元コード情報が存在しない場合には、図3に示す態様で元画像52を印刷して文書50を出力する。元画像52は文字や図形、写真、グラフ等である。
【0040】
図4に、二次元コード情報を分割し、3つの部分、すなわち二次元コード情報要素A,B,Cに分割し、最初の二次元コード情報要素Aを元画像52に合成してプリンタ24で印刷した文書50を示す。二次元コード情報要素Aは、基本パターン54aで表現され、これを繰り返して元画像52に合成される。図では、説明の都合上、基本繰り返し単位を1つの行としている。従って、基本パターン数=1とは、1行にわたって基本パターン54aを繰り返すことを意味する。また、基本パターン数=2とは、2行にわたって基本パターン54aを繰り返すことを意味する。
【0041】
なお、二次元コード情報要素は、複数の画素からなる矩形(例えば図に示すような正方形)のブロックにおいて、各画素が描画されない/描画される、の2つの状態により0/1の2値を表すものである。図では、3画素×3画素のブロックを基本単位とし、このうち隣接する4つの画素を描画し、残りの5つの画素を描画しないことで二次元コード情報要素Aの基本パターンを表している。
【0042】
CPU10のコード情報分割モジュール10aは、二次元コード情報を二次元コード情報要素A,B,Cに3分割し、まず、二次元コード情報要素Aを処理対象とする。CPU10の基本パターン数設定モジュール10bは、基本パターン数を0に初期化した後、1だけインクリメントして基本パターン数=1に設定する。CPU10のコード合成モジュール10cは、元画像52をRAM14から読み出し、元画像52に二次元コード情報要素Aを1行だけ繰り返して合成し、プリンタ24に出力する。以上のようにして、図4に示す文書50がプリンタ24で印刷されて出力される。
【0043】
プリンタ24で印刷されて出力された文書50は、スキャナ22で取り込まれてデジタルデータに変換され、CPU10の判定モジュール10cに出力される。判定モジュール10cは、デジタルデータを解析して二次元コード情報要素Aの候補を抽出し、元の二次元コード情報要素Aと抽出した二次元コード情報要素Aの候補を照合する。そして、両者が一致していれば、判定モジュール10cは、読取り成功、つまり二次元コード情報要素Aは正しく元画像52に埋め込まれたと判定する。基本パターン数設定モジュール10bは、二次元コード情報要素Aに関連付けて、このときの基本パターン数(この例では基本パターン数=1)をRAM14に記憶する。
【0044】
ここで、二次元コード情報要素Aは、1行にわたって繰り返し基本パターン54aが印刷されているため、スキャナ22でスキャンして得られるデジタルデータから二次元コード情報要素Aの候補を抽出する際には、最も出現頻度の高いものを候補として選択する。例えば、図4の場合において、1行にわたって基本パターン54が3個繰り返し印刷されているが、これらをスキャナ22でスキャンして得られるデジタルデータが、それぞれ×(読取り不能)、×、情報aを表している場合、判定モジュール10cは、読取り可能な情報aを二次元コード情報要素Aの候補として抽出し、元の二次元コード情報要素Aと照合する。二次元コード情報要素Aが正しく元画像52に埋め込まれた場合、次に、二次元コード情報要素Bの処理に移行する。
【0045】
図5に、二次元コード情報要素Aに続き、次の二次元コード情報要素Bを元画像52に合成してプリンタ24で印刷した文書50を示す。二次元コード情報要素Bは、基本パターン54bで表現され、これを繰り返して元画像52に合成される。基本パターン数設定モジュール10bでは、基本パターン数を0に初期化した後、1だけインクリメントしているので、基本パターン54bは基本パターン数=1、つまり1行にわたって繰り返し元画像52に合成されて文書50として印刷される。
【0046】
プリンタ24で印刷されて出力された文書50は、スキャナ22で取り込まれてデジタルデータに変換され、CPU10の判定モジュール10cに出力される。判定モジュール10cは、デジタルデータを解析して二次元コード情報要素Bの候補を抽出し、元の二次元コード情報要素Bと抽出した二次元コード情報要素Bの候補を照合する。二次元コード情報要素Bが、図5に示すように元画像52と重畳して印刷された場合、二次元コード情報要素Bと元画像52とが干渉し、二次元コード情報要素Bを読み取ることが一般に困難となる。この場合、判定モジュール10cで元の二次元コード情報要素Bと二次元コード情報要素Bの候補を照合すると、両者が一致せず、読取り失敗と判定される。読み取り失敗と判定された場合、CPU10のコード情報分割モジュール10aは、処理対象として二次元コード情報要素Bをそのまま維持し、基本パターン数設定モジュール10bは、基本パターン数を1だけインクリメントして基本パターン数=2とする。これは、二次元コード情報要素Bを2行にわたって繰り返し元画像52に合成することである。
【0047】
図6に、二次元コード情報要素Bを2行にわたって繰り返し元画像52に合成してプリンタ24で印刷した文書50を示す。2行にわたって繰り返し合成するため、最初の1行は元画像52と重畳するものの、次の1行は元画像52と重畳することなく合成される。
【0048】
プリンタ24で印刷されて出力された文書50は、スキャナ22で取り込まれてデジタルデータに変換され、CPU10の判定モジュール10cに出力される。判定モジュール10cは、デジタルデータを解析して二次元コード情報要素Bの候補を抽出し、元の二次元コード情報要素Bと抽出した二次元コード情報要素Bの候補を照合する。そして、両者が一致していれば、判定モジュール10cは、読取り成功、つまり二次元コード情報要素Bは正しく元画像52に埋め込まれたと判定する。基本パターン数設定モジュール10bは、二次元コード情報要素Bに関連付けて、このときの基本パターン数(この例では基本パターン数=2)をRAM14に記憶する。二次元コード情報要素Bが正しく元画像52に埋め込まれた場合、次に、二次元コード情報要素Cの処理に移行する。
【0049】
図7に、二次元コード情報要素Bに続き、次の二次元コード情報要素Cを元画像52に合成してプリンタ24で印刷した文書50を示す。二次元コード情報要素Cは、基本パターン54cで表現され、これを繰り返して元画像52に合成される。基本パターン数設定モジュール10bでは、基本パターン数を0に初期化した後、1だけインクリメントしているので、基本パターン54cは基本パターン数=1、つまり1行にわたって繰り返し元画像52に合成されて文書50として印刷される。
【0050】
プリンタ24で印刷されて出力された文書50は、スキャナ22で取り込まれてデジタルデータに変換され、CPU10の判定モジュール10cに出力される。判定モジュール10cは、デジタルデータを解析して二次元コード情報要素Cの候補を抽出し、元の二次元コード情報要素Cと抽出した二次元コード情報要素Cの候補を照合する。そして、両者が一致していれば、判定モジュール10cは、読取り成功、つまり二次元コード情報要素Cは正しく元画像52に埋め込まれたと判定する。基本パターン数設定モジュール10bは、二次元コード情報要素Cに関連付けて、このときの基本パターン数(この例では基本パターン数=1)をRAM14に記憶する。
【0051】
以上のようにして、分割された全ての二次元コード情報要素A,B,Cが埋め込まれ、これらを正しく読み取れることを確認すると、試し印刷が終了し、CPU10は、本印刷に移行する。すなわち、CPU10は、改めて各二次元コード情報要素A,B,C毎に読取りが成功した時の基本パターン数をRAM14から読み出し、これらのコード情報を読み出した基本パターン数、つまり繰り返し数で元画像52に埋め込んでプリンタ24に印刷を指示する。
【0052】
図8に、最終的にプリンタ24で印刷され出力される文書50を示す。二次元コード情報要素Aは1行にわたって繰り返し印刷され、二次元コード情報要素Bは2行にわたって繰り返し印刷され、二次元コード情報要素Cは1行にわたって繰り返し印刷される。元画像52の背景に目立たないように情報を埋め込むことで、レイアウトはそのまま維持される。また、図8の文書50をスキャナ22で読み取ったとしても、二次元コード情報要素A,B,Cのいずれも正しく読み取ることが保証され、二次元コード情報要素A,B,Cを組み合わせて元の二次元コード情報(3分割される前の二次元コード情報)を得ることができる。
【0053】
なお、二次元コード情報要素A、B,Cがそれぞれ元の二次元コード情報を3分割したものである旨を示す情報は、基本パターン54a、54b,54cに埋め込んでおけばよい。
【0054】
また、分割された全ての二次元コード情報要素A,B,Cが埋め込まれ、これらが正しく読み取れることを確認した時点で、未だ文書50に余白が存在する場合には、それまでの処理を余白がなくなるまで繰り返して二次元コード情報要素A,B,Cをさらに埋め込んでもよい。なお、ここでの「余白」とは、元画像の有無にかかわらず、二次元コード情報が埋め込まれていない部分を意味し、単なる白イメージを意味するものではない。
【0055】
図9に、余白がなくなるまで処理を繰り返した場合にプリンタ24で印刷され出力される文書50を示す。二次元コード情報要素A,B,Cを全て埋め込んでも余白があるため、二次元コード情報要素A,B,Cを繰り返し埋め込み、それでも余白が残っているため、さらに二次元コード情報要素A、B,Cを埋め込んだものであり、結局、二次元コード情報要素A,B,Cの組を合計3組埋め込まれる。繰り返し回数が増大するほど冗長度が増大し、二次元コード情報要素の読み取り率が向上する。二次元コード情報は、文書50の全面にわたって印刷しても良いが、もちろんこれに限定されるものではなく、二次元コード情報が印刷されない余白が存在していてもよい。
【0056】
図10に、本実施形態の処理フローチャートを示す。
【0057】
CPU10のコード情報分割モジュール10aは、ユーザから二次元コード情報の埋め込み指示操作を受け付けると、埋め込むべき二次元コード情報を分割してリストに格納する(S101)。コード情報容量は予め規定値としてもよく、これにより二次元コード情報をM分割(Mは2以上の自然数)してRAM14に記憶する。なお、「リストに格納する」とは、分割された二次元コード情報要素のそれぞれをリスト形式にしてRAM14に記憶することを意味する。例えば、二次元コード情報を二次元コード情報要素A,B,Cの3つに分割した場合、
第1:二次元コード情報要素A
第2:二次元コード情報要素B
第3:二次元コード情報要素C
とリスト形式にしてRAM14に記憶する。なお、元の二次元コード情報の容量が大きいほど分割数も増大するが、特に分割数の上限を設ける必要はない。但し、合成すべき元画像52に応じ、あるいは文書50の用紙の大きさに応じて上限を設けてもよい。
【0058】
次に、CPU10のコード情報分割モジュール10aは、処理対象とすべき二次元コード情報要素(分割後の二次元コード情報の構成要素)をRAM14から読み出してコード合成モジュール10cに供給する(S102)。このとき、処理対象とすべき二次元コード情報要素が存在するか否かを判定し(S103)、全て処理済である場合には処理を終了する(S103にてNO)。
【0059】
処理対象の二次元コード情報要素が存在する場合(S103にてYES)、CPU10の基本パターン数設定モジュール10bは、基本パターン数Nを0に初期化(S104)した後に、基本パターン数Nを1だけインクリメントする(S105)。基本パターン数設定モジュール10bは、基本パターン数を1だけインクリメントした後、基本パターン数Nをコード合成モジュール10cに供給する。
【0060】
次に、CPU10のコード合成モジュール10cは、二次元コード情報要素と基本パターン数Nから二次元コード情報要素を生成する(S106)。すなわち、処理対象の二次元コード情報要素Aを基本パターン数Nだけ繰り返すような二次元コード情報要素Aの群を生成する。基本パターン数Nは、基本的には図4に示すように、二次元コード情報要素Aを表す基本パターン54aの繰り返し数であるが、文書50の1行にわたって埋め込むことを前提として、繰り返しの行数としてもよい。本実施形態では、このように基本パターン数Nを繰り返し行数Nの意味で用いるが、これに限定されるわけではない。基本パターン数Nは初期値0から1だけインクリメントされてN=1に設定されているので、二次元コード情報要素Aは1行にわたって繰り返される(図4参照)。その後、コード合成モジュール10cは、RAM14から印刷すべき元画像52を読み出し、この元画像52と二次元コード情報要素A群を合成してプリンタ24に出力する(S107)。
【0061】
プリンタ24は、合成画像を受け取って印刷し、合成画像の文書50を出力する(S108)。出力された文書50は、自動的に、あるいはユーザによりスキャナ22に取り込まれる。
【0062】
スキャナ22は、文書50をスキャンしてデジタルデータに変換し、デジタルデータをデコードして二次元コード情報要素Aを読み取る(S109)。二次元コード情報要素Aは、基本パターン数Nだけ繰り返されているため、読み取った情報は二次元コード情報要素Aの群である。スキャナ22は、読み取った二次元コード情報要素Aの群をCPU10の判定モジュール10dに供給する。
【0063】
CPU10の判定モジュール10dは、スキャナ22で読み取った二次元コード情報要素Aの群を元の二次元コード情報要素Aと照合して両者が一致するか否かを判定する(S110)。元の二次元コード情報要素Aは、コード合成モジュール10cから取得する。
【0064】
両者が一致するため読み取った二次元コード情報要素Aが正しいと判定した場合(S110にてYES)、S102の処理に移行して次の処理対象の二次元コード情報要素BをRAM14から読み出し、S103以降の処理を繰り返す。このとき、基本パターン数設定モジュール10bは、二次元コード情報要素Aの基本パターン数N(この場合はN=1)をRAM14に記憶する。
【0065】
他方、両者が一致せず読み取った二次元コード情報要素Aが正しくないと判定した場合(S110にてNO)、S105の処理に移行して基本パターン数Nをさらに1だけインクリメントして、S106以降の処理を繰り返す。このとき、処理対象の二次元コード情報要素Aはそのまま維持されるから、S106では二次元コード情報要素Aは基本パターン数N=2、すなわち2行にわたって繰り返され、元画像52と合成されて印刷される。そして、再びスキャナ22で読み取られ、2行にわたって繰り返された二次元コード情報要素Aの群を元の二次元コード情報要素Aと照合する。照合した結果、両者が一致する場合には、S102の処理に移行して次の処理対象の二次元コード情報要素BをRAM14から読み出し、S103以降の処理を繰り返す。このとき、基本パターン数設定モジュール10bは、二次元コード情報要素Aの基本パターン数N(この場合はN=2)をRAM14に記憶する。
【0066】
以上のようにして、全ての処理対象について元画像52と合成して印刷し、これをスキャナ22で読み取って正しいと判定できた場合(S103にてNOと判定)、文書50に未だ余白が存在するか否かを判定する(S111)。この判定は、例えば最後に印刷した文書50のスキャン結果から判定モジュール10dで行ってもよい。もちろん、CPU10は、用紙における元画像の位置、及び二次元コード情報要素の埋め込み位置のデータを有しているので、これらを用いて余白が存在するか否かを判定してもよい。そして、余白が未だ残っている場合には、S102以降の処理を再び繰り返して、二次元コード情報要素A,B,Cを再び元画像に合成して文書50内に埋め込む。他方、余白が存在していない場合には、それまでの処理でRAM14に記憶されている二次元コード情報要素A,B,C毎の基本パターン数Nを用いて最終的に二次元コード情報要素A,B,Cを元画像52に合成して印刷する(S112)。
【0067】
具体的には、例えば
二次元コード情報要素A:基本パターン数2
二次元コード情報要素B:基本パターン数3
二次元コード情報要素C:基本パターン数3
としてRAM14に記憶されている場合、最終的印刷では、CPU10のコード合成モジュール10cは、二次元コード情報要素Aについては2行繰り返し、二次元コード情報要素Bについては3行繰り返し、二次元コード情報要素Cについては3行繰り返して元画像52と合成して印刷する。
【0068】
また、余白が存在したため必要な回数だけ二次元コード情報要素A,B,Cの合成を繰り返した場合、その都度、それぞれの二次元コード情報要素毎に基本パターン数NがRAM14に記憶されるので、最終的印刷ではこれらの基本パターン数Nを用いて最終的印刷を行う。例えば、図9に示すように、余白が存在したため3回繰り返し処理を行い、二次元コード情報群1、2、3が存在する場合、例えば
二次元コード情報要素A:基本パターン数2(1回目)、3(2回目)、2(3回目)
二次元コード情報要素B:基本パターン数3(1回目)、4(2回目)、3(3回目)
二次元コード情報要素C:基本パターン数3(1回目)、3(2回目)、3(3回目)
としてRAM14に記憶されている場合、最終的印刷では、CPU10のコード合成モジュール10cは、二次元コード情報要素Aについては2行繰り返し、二次元コード情報要素Bについては3行繰り返し、二次元コード情報要素Cについては3行繰り返し、次いで、二次元コード情報要素Aについては3行繰り返し、二次元コード情報要素Bについては4行繰り返し、二次元コード情報要素Cについては3行繰り返し、さらに、二次元コード情報要素Aについては2行繰り返し、二次元コード情報要素Bについては3行繰り返し、二次元コード情報要素Cについては3行繰り返して元画像52と合成して印刷する。
【0069】
このように、本実施形態では、二次元コード情報を分割して元画像52と合成して埋め込むので、二次元コード情報の容量を増大させることができる。また、二次元コード情報要素を埋め込む際にその都度正しく読み取れるまで繰り返す、つまり二次元コード情報要素の埋め込みが正しいことを検証しながら埋め込んでいくので、最終的に印刷された文書からも確実に二次元コード情報を読み取ることができる。さらに、本実施形態では、データベースサーバを新たに構築し、データベースサーバ内のデータとコード情報とを対応付ける必要もない。
【0070】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく、種々の変形が可能である。
【0071】
例えば、本実施形態における二次元コード情報は、矩形ブロックを構成する複数の画素の描画する/描画しない、のパターン、つまりドットパターンで表されているが、ブロック形状は任意でよい。二次元コード情報の代表例はQRコード(登録商標)であるが、通常のQRコードはユーザが視認可能である。個々のドットサイズを小さく、かつ、ドットピッチ(隣接するドット同士の間隔)を大きくすることで、元画像52の背景に目立たないように二次元コード情報を埋め込むことができる。
【0072】
また、本実施形態では、文書50の片面に二次元コード情報を埋め込んでいるが、文書50の両面を用いて二次元コード情報を埋め込んでもよい。例えば、元画像52が片面(表面)のみに存在する場合に、CPU10は、表面用の二次元コード情報を生成するとともに、裏面用の二次元コード情報を生成して埋め込む。この際、裏面については表面の二次元コード情報と同一のものを埋め込む。印刷時には本来であれば元画像52は表面しか存在しないから、裏面の二次元コード情報の印刷は、ページイメージ挿入として処理する。もちろん、表面と裏面で異なる二次元コード情報を埋め込んでもよい。例えば、二次元コード情報を分割して二次元コード情報要素A,B,C,Dが存在する場合、二次元コード情報要素A,Bを表面に埋め込み、二次元コード情報要素C,Dを裏面に埋め込む等である。元画像52が両面(表面と裏面)に存在する場合、CPU10は、表面と同様の処理を裏面に施して二次元コード情報を埋め込む。
【0073】
また、二次元コード情報は、公知の方法で生成され得るが、例えば以下のように生成してもよい。すなわち、埋め込むべき情報を16バイトとし、この情報からCRCパリティを計算して元の情報に付加した上で、複数に分割し、それぞれに3ビットのIDを付加する。IDは、二次元コード情報要素A、二次元コード情報要素B,二次元コード情報要素Cの3つに分割する場合、0,1,2を示すものである。このIDにより、それぞれが一つの二次元コード情報の分割要素であることが分かる。その後、これらを例えばBCHで符号化し、矩形ブロックの各画素に順に埋め込んでいく。なお、符号化されたデータで埋め込んで矩形ブロックに余りが生じた場合には、例えば0を埋め込めばよい。
【0074】
また、本実施形態では、試し印刷を行って二次元コード情報要素が正しく読み取れるか否かを判定しているが、試し印刷を行う毎に新たな用紙に元画像52及び二次元コード情報要素を印刷する他、同一の用紙を援用して試し印刷を行ってもよい。
【0075】
また、試し印刷を行って二次元コード情報要素が正しく読み取れなかった場合、その部分は最終的な印刷でも同様に二次元コード情報要素が読み取れない可能性が高いので、最終的印刷ではその部分を除外せずに二次元コード情報要素を埋め込む他、その部分を除外して二次元コード情報要素を埋め込んでもよい。図8は、二次元コード情報要素が正しく読み取れなかった場合でも、最終的印刷ではその部分を除外せずに二次元バーコード情報を埋め込んだ場合である。
【0076】
また、既述したように、本実施形態では基本パターンを行方向に繰り返して二次元コード情報要素を埋め込んでいるが、これに代えて、基本パターンを列方向に繰り返して二次元コード情報要素を埋め込んでもよい。具体的には、二次元コード情報要素Aをまず第1列に埋め込み、試し印刷を行って正しく読み取れた場合には、次の第2列に二次元コード情報要素Bを埋め込んで試し印刷を行う。このとき、正しく読み取れない場合には、第2列及び第3列に繰り返し二次元コード情報要素Bを埋め込んで試し印刷を行う。以下、これを余白がなくなるまで繰り返して二次元コード情報要素を埋め込めばよい。
【0077】
本実施形態では、図2に示すようにCPU10が各モジュール10a、10b、10c及び10dとして機能しているが、これらのいずれか一つまたは複数が外部のシステムにあり、通信回線で接続されていてもよい。例えば、判定モジュール10dが外部のコンピュータのCPUで実現されている等である。
【0078】
本実施形態における画像処理装置1は、図1に示すような構成であるが、具体的には複合機(スキャナ、プリンタ、複写機、ファックス等の複数の機能を有している画像処理装置)で構成し得る。
【0079】
本実施形態における「二次元コード情報要素」は、元の二次元コード情報を複数に分割して得られるそれぞれの断片を意味するが、分割の方法は任意であり、必ずしもそれぞれの要素の容量が均一でなくてもよい。また、二次元コード情報の容量自体が相対的に小さい場合には、分割する必要はない。従って、例えば埋め込むべき二次元コード情報の容量を所定閾値と大小比較し、閾値以下であればそのまま埋め込み、閾値以上であれば本実施形態のように複数の二次元コード情報要素に分割して埋め込んでもよい。
【0080】
さらに、本実施形態では、判定モジュール10dが、印刷画像をスキャナ22でスキャンして得られたデジタルデータから二次元コード情報要素を抽出し、抽出した二次元コード情報要素と元の分割された二次元コード情報要素とを照合して両者が一致するか否かを判定しているが、印刷してスキャンするのは一例であり、印刷してスキャンすることなく判定してもよい。例えば、二次元コード情報と元画像を合成した結果をメモリに記憶し、メモリから二次元コード情報を抽出して、合成前の二次元コード情報と照合してもよい。判定モジュール10dは、このようにして得られた判定結果をコード情報分割モジュール10a及び基本パターン数設定モジュール10bに出力する。要するに、本発明では、複数の二次元コード情報要素のそれぞれに対して、文書に含まれる元画像と合成して保存し、合成して保存された二次元コード情報要素を抽出して合成前の二次元コード情報要素と照合して一致するか否かを判定すればよい。
【符号の説明】
【0081】
1 画像処理装置、10 CPU、12 ROM、14 RAM、16 通信部、18 操作部、20 表示部、22 スキャナ、24 プリンタ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10