本実施形態では、2次元コードとしてLVBC(Low Visibility Barcodes:低可視バーコード)を用いる。そこで、最初に、LVBCを用いた情報埋込/抽出技術について詳細に説明する。
〈LVBCについて〉
本実施形態においては、印刷装置は、原稿画像と共に所望の付加情報(以下、埋込情報という。)を用紙やOHPシート等のシートに印刷する。
情報埋込の要件は、一般的に、次の通りである。
・シートに十分な情報量の埋込情報を埋め込むことができる。
・シートに色材(トナーやインクなど)を使って埋め込まれた埋込情報を、後で、デジタル情報として確実に抽出できる。
・原稿画像をシートに複写する際に、埋込情報の抽出を妨げる要因(原稿の回転、拡大、縮小、部分的削除、複写による信号の鈍り、汚れ等)に対して耐性がある。
・複写禁止を示す埋込情報が埋め込まれている原稿の複写を防止するために、複写時にリアルタイム又はそれに準ずるスピードで埋込情報を抽出できる。
図18は、LVBCが埋め込まれた原稿の一例を示す図である。
1801はシート全体を示し、1802は1801の拡大図を示す。1802を参照すると、シートには、原稿に本来描画される画像の他に、多数のドット(1803)が印刷されている。LVBCを用いた情報埋込技術では、これらのドットを介して埋込情報をシートに埋め込む。
(埋込情報が埋め込まれる2つの領域)
次に、埋込情報が埋め込まれる領域について説明する。当該領域は、第1の領域と第2の領域に分けられる。
図19は、第1の領域と第2の領域に埋め込まれる埋込情報の特性を示す図である。
埋込情報は、特性の異なる2種類の埋込情報に分類される。各埋込情報は、個々に抽出可能なように第1の領域と第2の領域に別々に埋め込まれる。
第1の領域には、印刷する電子ドキュメントの所在情報や、印刷パラメータの情報(N−up/解像度/拡縮等)、セキュリティ情報など、通常のスキャンによる複写操作時にリアルタイムで抽出しなければならない情報が埋め込まれる。第1の領域に埋め込まれた埋込情報の抽出処理は必ず実施されるために、埋込情報の抽出時の遅延は複写速度全体に影響を及ぼす。よって、埋込情報を解析する速度には、例えば、スキャン速度と同程度の速度が要求される。一方、これらの情報の情報量は少なくてよいため、そのデータサイズは小さくてすむ。
第2の領域には、検索情報が埋め込まれる。検索情報は、例えば、ページ内のオブジェクトの座標情報やキーワードであり、オブジェクトの検索時に使用される。検索情報は、通常の複写時には使用されないため、検索情報の抽出は複写速度に影響を及ぼさない。検索情報の抽出は、必ずしもリアルタイムで行う必要がないため、検索情報の解析速度は、比較的低速でよい。したがって、検索情報には多量の情報を含ませることができる。
本実施形態のLVBCではこれらの特性が異なる埋込情報に対応するために、第1の領域と第2の領域とが混在した領域に埋込情報を埋め込む。そして、本実施形態では、埋込情報を、第1の領域のみから抽出、第2の領域のみから抽出又は両方の領域から抽出することを用途に応じて選択する。埋込情報を第1の領域のみから抽出する場合には、解析速度を向上させ、複写操作の生産性に影響を及ぼさない速度で抽出処理を行う。
図20は、第1の領域と第2の領域の配置を説明するための図である。
2001の四角の領域は第1の領域を示す。同じ四角の領域が周期的に複数並んでいるが、いずれの領域にも同じ埋込情報が格納される。このように、複数の第1の領域に同じ埋込情報を埋め込むことにより、埋込情報の冗長性が増し、その結果、ノイズや誤差に対する埋込情報の耐性が強化される。2003は第1の領域のサイズ、2004は第1の領域の繰り返し周期を示す。
2002の四角は第2の領域を示す。第2の領域も第1の領域と同様に、同じ四角の領域が周期的に複数並んでいる。特定の異なる上記2種類の埋込情報は、第1の領域2001と第2の領域とに排他的に埋め込まれる。2005は第2の領域のサイズを示す。
(LVBCの埋込方法)
次にLVBCの埋込方法について説明する。
LVBCを用いた情報埋込方法においては、仮想的なグリッド(格子)が用いられる。
埋込情報は、一定サイズ以内のバイナリデータである。埋込情報は、ドットをグリッドの交点(仮想点)から上下左右8方向のいずれかの方向に変位(交点からずらして配置)させることで、情報としてシートに埋め込まれる。すなわち、各仮想点と各ドットを一対一に対応づけ、当該各ドットを、当該各ドットに関連付けられた各仮想点からずれた位置に配置する。
図21は、グリッドと、ドットを配置する場所の位置関係を示す図である。
図21において、縦横の線2101は、グリッドを示す。2102は、グリッドの交点(仮想点)を示す。交点(仮想点)2102にはドットを配置しない。例えば、ドットは、交点(仮想点)2102から右下方向の離れた位置に配置される。
図22は、埋込情報としてバイナリデータの010111110011を埋め込んだ例を示す図である。
バイナリデータの010111110011を埋め込むに際し、当該バイナリデータを010,111,110,011のように3ビット単位に分割する。次いで、各3ビット2進10進変換して、2,7,6,3の数値を得る。
埋込情報を表す数値に応じて、各ドットをグリッドの交点(仮想点)から上下左右の8方向のいずれかに変位させることによって、埋込情報を埋め込む。例えば、埋込情報として2,7,6,3を埋め込む場合、各ドットを右上、右下、下、左に変位させる。図22において、黒丸は、ドットを示す。LVBCを用いた情報埋込方法においては、上記の埋込を繰り返し行うことによって、2000バイト程度の情報量をもつ埋込情報をシートに埋め込むことができる。さらに、埋込情報を表現するこれらのドットをシートの全体にわたって埋め込むことによって、埋込情報の冗長性が増し、シートの汚れ、しわ、部分的破損に対する耐性が強化される。
LVBCを解析するためには、まずグリッドの位置を正確に検出する必要がある。したがって、埋込情報を表すドットはグリッドの交点から8方向に等確率に出現することが望ましい。しかし、埋込情報として0等の特定の数値を多く埋め込む場合、埋込情報を表すドットは8方向の位置に等確率には出現しない可能性がある。そこで、LVBCを用いた情報埋込方法においては、埋込情報に対して可逆性を有したスクランブル処理(例えば共通鍵暗号処理)を施し、ドットの変位がランダムになるようにする。
LVBCを用いた情報埋込方法は、デジタルデータとしての埋込情報をアナログデータとしてシートに記録するDA変換ともいえるため、比較的単純な構成で実現可能である。
(LVBCの解析方法)
次にLVBCの解析方法について説明する。
図23は、LVBCの解析を行う埋込情報解析部2301の構成を示すブロック図である。
ドット検知部2302は、埋込情報が埋め込まれた画像(元画像と埋込情報とが混在した画像)から任意のドットを検知して、ドットの座標位置に変換する。
ドット解析部2303は、ドット検知部2302が検知したドットからハーフトーンを構成するドット等の不要なドットを排除する。
絶対座標リスト記憶部2304は、ドットの絶対座標位置のリストを格納する。
ドット変換部2305は、絶対座標リスト記憶部2304が記憶する絶対座標位置のリストから回転角、グリッド間隔を検出し、絶対座標位置を、グリッドの位置からの相対座標位置に変換する。
相対座標リスト記憶部2306は、相対座標位置を記憶する。
第1領域復号部2307は、第1の領域に埋め込まれた埋込情報を抽出し、後段のモジュールに出力する。
第2領域復号部2308は、第2の領域に埋め込まれた埋込情報を抽出し、後段のモジュールに出力する。
後段のモジュールとは、埋込情報を利用する機能モジュールであり、例えば、埋込情報を再度、背景画像に変化させて合成画像を出力し、又は、ドキュメント情報を取得し、再印刷処理を行うモジュールである。
(ドットの検知)
ドット検知部2302による処理を詳細に説明する。
ドット検知部2302は、光学スキャナが読み込んだ画像を多値モノクロイメージの形式で受信する。一方、LVBCを用いた情報埋込方法においては、埋込情報はモノクロ2値のドットで埋め込まれる。このため、情報埋込時のトナーの乗り具合、シートの取り扱い、スキャン時の光学系などの影響により、ドット検知部2302は、微細に信号が鈍った状態で信号を受信する。よって、ドット検知部2302は、これらの影響を排除するために、受信したドットの重心位置を座標位置と認識することにより検知精度を高めている。
図24は、ドット検知部2302によるドット検知を説明するための概念図である。
ドット検知部2302は、画像上の孤立点を検査するために、画像に対して4方向からギャップの検査を実施する。2401〜2404は、孤立点の有無の検査を行なう方向を示す。例えば、縦方向2401のラインでの検査結果が、「白」、「白」、「黒」、「黒」、「白」、「白」である場合、黒の部分が孤立点である可能性がある。しかし、この検査だけでは、孤立点が横方向のライン上にある可能性もある。同様に、横方向2402のラインでの検査結果により、孤立点が横方向のライン上にある可能性があると判定した場合でも、実際には、孤立点が縦方向のライン上にある可能性もある。そこで、ドット検知部2302は、4つの方向2401〜2404において孤立点の検査を行なうことで検知精度を向上させる。ある領域において4つの方向2401〜2404のすべてにおいて上記の検査結果が得られたときに、黒の部分が孤立点であると識別する。
(ドットの解析)
ドット解析部2303による処理を詳細に説明する。
ドット検知部2302が検知したドットがLVBCを構成するドット以外のドットである場合もある。例えば、原稿画像に含まれているハーフトーンを表現するためのドットパターンや、もともと原稿に含まれる孤立点(例えば平仮名の濁点など)等がそのようなドットに該当する。したがって、LVBCを構成するドットでは無い孤立点を削除するためにはハーフトーン除去を行う必要がある。
図25は、ハーフトーン除去を説明するためのグラフを示す図である。
グラフの縦軸はドットの粒形を示し、横軸は濃度を示す。また、グラフ内に、ドットの濃度として、ドットの頻度を表すヒストグラムを示す。ドットの濃度が濃い(より黒い)ほど、ドットの出現頻度が高いことを示す。LVBCの場合、ドットの粒形や濃度をそろえてドットを埋め込むため、ドットの出現頻度は、グラフ内の狭い位置でピークとなる(2501)。一方、ハーフトーンの場合、ドットの粒形や濃度が規格化されていないため、ドットは、グラフ内の広い位置にまばらに出現し、出現頻度も比較的低い。したがって、ドット解析部2303は、この特性を使用して、グラフ内の狭い位置で出現頻度がピークとなるドットをLVBCと判定して、それ以外のドットを排除する。したがって、絶対座標リスト記憶部2304は、LVBCのみを記憶することになる。
(ドットの変換)
ドット変換部2305による処理を詳細に説明する。
スキャナにシートを配置した向きの違いやアナログレベルでの微細なシートの角度のズレにより、スキャン時の画像の角度は、印刷時にLVBCドットを埋め込んだ画像の角度と異なる。したがって、画像の回転角の検知と、角度の補正を行う必要がある。また、LVBCの場合、グリッドを構成するドットを上下左右8方向に変位させることによって情報を埋め込むため、元のグリッドを再現する必要がある。したがって、元のグリッドの間隔を正確に特定する必要がある。
図26は、グリッドの間隔を測定する手法を説明した模式図である。
ドット2601に注目した場合、ドット2601からドット2601に最も近いドット2602までの距離Xがグリッドの間隔に近い。
ドット2601に近いドットは上下左右に4箇所あるが、計算量を減らすため、ドット2601の右側の90度の範囲に存在するドットだけを、ドット2601に最も近いドットの候補とする。具体的には、注目するドット(x,y)と、それ以外の任意のドット(a,b)の関係が、
である場合、ドット(a,b)を上記候補から外す。そして(x,y)と(a,b)間の距離が最小となる(a,b)を近隣ドットとし、2つのドット間の距離Xをグリッドの間隔の候補とする。
ここで、注目するドット2601も近隣ドット2602も変位している。また、LVBCとして認識されたドットは、実際は、ドット解析部2303が除去しそこねたハーフトーンパターンのドットかもしれない。そこですべての注目ドット(x,y)に対して上記のようにグリッド間の距離を計測して、すべての注目ドットに関してグリッド間の距離別の頻度を示したヒストグラムを作成する。
図27は、グリッド間の距離の頻度を示したヒストグラムの一例を示す図である。
図27において、横軸はグリッド間距離の候補である距離の値、縦軸は注目ドット(x,y)において距離が計測された頻度を示す。図によれば、頻度が最も高い距離Xがグリッド間隔と識別される。すなわち、注目ドット2601と近隣ドット2602の出現確率が縦横ともに同じだとすると、多量の注目ドットのヒストグラムから、頻度が最も高い距離Xがグリッド間隔とすることができる。
図28は、グリッドの回転角度の補正を説明する図である。
2801において、すべてのドットについて、それらのドットから近隣ドットの角度を測定する。
本来、注目ドットからその近隣ドットの角度は0度、90度、180度、270度のいずれかであるため、測定した角度のズレを補正することにより回転角度を決定することが可能である。個々の注目ドットから近隣ドットの角度θは、注目ドットとその近隣ドットからなるベクトルを(dx,dy)とすると、下記の式であらわされる。
2802は、A、B、C、Dのそれぞれの近隣点までのベクトルを示す。しかし実際には注目ドットも隣点ドットもグリッド位置からわずかに変位しているため、すべての注目ドットにおいてθを計測する。注目ドット2801と近隣ドットのそれぞれのグリッドからの変位位置の出現確率が縦横ともに同じだとすると、すべての注目ドットの角度のズレを加算することにより、平均的にグリッドの回転角度を計測することができる。2803はいくつかのドットのベクトルを表示したものであり、この角度を重ね合わせるとグリッドの回転角度に近似できることがわかる。
具体的には個々の注目ドットのθに対して再度、基準ベクトルを算出し、すべての基準ベクトルの合計結果から、トータルの角度φを求める。基準ベクトルの合計結果を(A,B)とすると、
となり、グリッドの回転角度φは、
によって近似することが可能である。
絶対座標リスト記憶部2304に格納されている絶対座標リストに対して、グリッドの回転角度の逆回転を実施して、グリッドの角度を補正する。
回転角度の補正は90度単位には絞り込まれているが、実際には0度(正しい)、90度、180度、270度の4つまでは絞り込まれていない。この絞込みに関しては後述する。
図29は、回転の補正結果およびグリッド位置を説明する図である。
図29において、2901は回転の補正が完了したLVBCドットの絶対座標リストを示す。さらに、2902で示すように、ドット変換部2305で求めたグリッド間隔毎に仮想的な直線をX方向、Y方向それぞれに引き、これら直線の交点をグリッドとする。このグリッドの位置からドットの座標の変位を計測する。
(第1領域の特定)
図20で示した第1の領域のサイズ2003、繰り返し周期2004及び第1の領域の位置を特定する処理について説明する。
最初に第1の領域2001の繰り返し周期2004の決定を行う。第1の領域2001には同じデータが周期的に入っており、縦方向に対して所定のオフセットで自己相関を取ると、オフセット値が繰り返し周期2004と一致したときに自己相関性が高まり、繰り返し周期2004を決定することができる。
図30はオフセット値に対応した自己相関値を計算した例を示すグラフである。
自己相関とは、特定の埋込データが周期的に出現する頻度を評価する手法であり、自己相関値とは特定のオフセット値における、埋込データの類似性を評価する数値である。
自己相関値を算出する自己相関関数COR(A,B)は下記の演算式で与えられる。
COR(A,B) = bitcount(not (A xor B))
ここでxorは2項の排他的論理和を示しており、notは否定を示す。
bitcountはビット列で1となるものの個数をカウントする関数である。
例えば、Aが010b,Bが011bの場合はnot(A xor B)=not(001b)=110bとなり、bitcountは2となる。
ここで第1の領域があらかじめ決められた幅と高さを持つ行列とし、第1の領域を評価するためのビット列をCELL(x,y)とする。ここでx,yは縦、横の座標を示す。例えば第1の領域のサイズが幅=8、高さ=8だとすると、x,yを左上とした第1の領域は3bit x 8 x 8= 192bitがCELL(x,y)のビット列の長さとなる。
ここで、あるオフセットにおける、すべての座標の自己相関値は下記関数で表される。
例えば第1の領域のサイズ2003を8,繰り返し周期2004を8x3=24としたときに自己相関を取るとオフセット=24で自己相関値はピーク3001となるため、オフセット=24を繰り返し周期2004と決定することが可能である。
次に第1の領域2001の位置とサイズの決定を行う。自己相関を取ったことにより、第1の領域の繰り返し周期は決定したが、その中のどの位置に第1の領域があるかと第1の領域のサイズの決定が必要である。
図31は第1の領域の位置の決定方法を説明するための図である。
あらかじめ第1の領域の繰り返し周期が決定しているので、相対座標リスト記憶部2306から任意の繰り返し周期分の領域を切り出す。ついで、その領域の隣の領域で相関を取り、さらに隣の領域で相関を取る、ということを繰り返す。この中で第1の領域3102の部分は繰り返し周期で同じデータが出現するので相関性が高い。それ以外の第2の領域3103は繰り返し周期では同じデータが出現しないので相関性が低い。この特性を利用して、相関性の高い部分の開始位置を第1の領域の開始位置と特定し、相関の高い部分の終わりまでのサイズを第1の領域のサイズと決定する。
(第1の領域の復号)
上記の処理で特定された第1の領域の位置とサイズから第1の領域のデータを復号する。
単一の領域のデータだけを復号したのでは計測誤差やノイズが原因で誤判定する可能性があるため、すべての第1の領域に埋め込まれたドットの位置を集計し、最頻値を採用し、その値の生起確率を計算する。
図32は第1の領域に埋め込まれたドットの位置の集計を説明するための模式図である。
図32において、3201〜3203はシート上の異なる位置に存在する第1の領域である。これらを重ね合わせた結果が3204である。ノイズや誤差によるズレがあるが、すべての領域の集計結果によって最頻値が決まるため、この値を採用することができる。
次に実際の復号を実施する。この段階においてノイズや計測誤差による影響が拭えないため、復号した結果にエラー訂正処理を施して復号を行う。
まずは、図22に示したドットパターンから、ドットの位置を検出して、その位置に対応するデータに変換して、第1の領域に埋め込まれたデータ列を抽出する。このデータ列には実際に使用する複写禁止データの他に、データの破壊を検知、可能なら修復するエラー訂正符号が埋込時に記録されている。
エラー訂正符号には既知の技術として数多くされているが、ここではLDPC(Low Density Parity Check)方式を使用する。LDPCは誤り訂正能力が非常に高く、シャノン限界に近い特性を示すことで知られている。LDPCの詳細な説明に関しては省略する。また、LDPC以外であっても、エラー訂正符号の特性を持つ方式であればどのような方式であっても構わない。
エラー訂正符号を用いることで、抽出したグリッドにある程度の誤差やノイズが含まれていても埋込データを抽出することが可能である。
さらに、回転角度の補正で説明したとおり、回転角度の補正処理は90度単位で行うため、ここで抽出されたデータは正しいデータか、正しいデータを90度回転したものか、180度回転したものか、270度回転したものかの4通りが存在する。そこで、抽出データに対して、回転なし、90度回転、180度回転、270度回転した結果に対してそれぞれ見込みでLDPCによるエラー訂正を行った復号を実施する。正しい回転角度の場合にのみ、エラー訂正符号が機能し、正常にデータを抽出することが可能である。
図33は、回転を考慮し、エラー訂正を行った復号の処理を説明するための図である。
図33において、この例では正しいデータに対して270度回転した結果が抽出されたとする。3301において最初に抽出データに対してそのままエラー訂正処理を実施する。正しいデータはエラー訂正符号を含んでいるが、回転することによって意味のないデータになってしまうため、エラー訂正することができない。次に3302において、3301に対して90度回転を施したデータに対してエラー訂正処理を実施する。同様にエラー訂正に失敗するため、データを抽出することができない。次に3303において、3302に対して90度回転を施したデータに対してエラー訂正処理を実施する。同様にエラー訂正に失敗するため、データを抽出することができない。最後に3304において、3303に対して90度回転を施したデータに対してエラー訂正処理を実施する。これは正しいデータであるため、エラー訂正処理に成功するため、抽出データとして採用することが可能である。
3304でもエラー訂正処理に失敗した場合、誤差やノイズが多くてデータの抽出に失敗したことが考えられる。
以上の処理によって第1の領域に格納された埋込データを抽出できる。
(第2の領域の特定)
第2の領域は追跡情報などの登録に使う領域であり、複写操作実施時には必ずしも必要な情報ではない。よって不要な場合は第2の領域の復号を省くことにより、全体の処理の速度低下を抑えることが可能である。
以下に第2領域の特定方法について説明する。
最初に第1の領域と同様、第2の領域の自己相関を取る。第2の領域は第1の領域の繰返し同期の倍数で埋め込まれるため、第1の領域の繰り返し回数の倍数(例の場合、24,48,72,….)単位のいずれかで自己相関をとればよいので計算を省くことが可能である。さらに第2の領域は繰り返し同期=第2の領域のサイズとなる。
図34は、第2の領域におけるオフセット値に対応した自己相関値を計算した例を示すグラフである。
最後に第2の領域の開始位置の特定を行う。埋込むときに第1の領域の開始位置と第2の領域の開始位置を同期させるため、位置は第1の領域の開始位置のいずれかに絞り込むことが可能である。
第2の領域の位置決定にはエラー訂正符号を利用する。第1の領域と同様に第2の領域に関しても埋込データの他にエラー訂正符号が付加される。第2の領域のサイズはわかっているため、第1の領域の先頭位置から順番に見込みでエラー訂正処理を実施していく。
図35は第2の領域の位置を決定する方法を説明するための図である。
図35において、自己相関によって第2の領域のサイズが第1の領域の繰り返し同期の4倍であることを示している。ここで4x4=16のいずれかが第2領域の開始位置となるため、1、2、3、4、5、と位置をずらしながら、エラー訂正処理を適用する。エラー訂正処理に成功した場合、その位置を第2領域として採用することが可能である。
以上によって第2の領域に格納された埋込データの抽出が実施可能である。
〈ドット面積/グリッド間隔と、視認性/復号容易性との関係〉
本実施形態では、LVBCのドット面積(1ドット当たりの面積)やグリッド間隔(隣接する仮想点の間隔)を段階的に変更することによってドットの視認性やLVBCの復号容易性を調整する。ドットの視認性とは、ドットの目立ちやすさのことであり、視認性が高いとドットは目立つようになり、視認性が低いとドットは目立たなくなる。
図13は、LVBCのドット面積とグリッド間隔の各々を段階的に変更することにより生成されるLVBCのパターンを示す図である。
図13(a)は、ドット面積を最小にし、かつ、グリッド間隔を最大にした場合のLVBCを示す。図13(c)は、ドット面積を最小にし、かつ、グリッド間隔を最小にした場合のLVBCを示す。図13(g)は、ドット面積を最大にし、かつ、グリッド間隔を最大にした場合のLVBCを示す。図13(i)は、ドット面積を最大にし、かつ、グリッド間隔を最小にした場合のLVBCを示す。ドット面積をm通りの大きさに設定可能で、かつ、グリッド間隔をn通りの大きさに設定可能であるとすると、m×nパターンの異なるLVBCを生成できる。図13からわかるように、小さなグリッド間隔で大きさドット面積をもつLVBCや、大きなグリッド間隔で小さなドット面積をもつLVBC等、グリッド間隔とドット面積とが比例関係にない様々なLVBCが生成される。後述するように、本実施例では、これらのLVBCの中から解読可能でかつ所定の条件を満たしたLVBCが選択され原稿に埋め込まれる。したがって、LVBCのドットのサイズを、グリッド間隔に比例したサイズ以外のサイズに決定することができる。
図14は、ドット面積/グリッド間隔と、視認性/復号容易性との関係を説明するための図である。
1401は、ドット群からなるLVBCブロックを示す。
1402は、LVBCブロック1401のドット面積を小さくし、かつ、グリッド間隔を大きくしたときのLVBCブロックを示す。1403は、LVBCブロック1402が繰り返して埋め込まれた原稿を示す。LVBCブロック1402を原稿に埋め込むと、ドット群の視認性は低下するため、LVBCが画質へ及ぼす影響を小さく抑えることができる。しかし、LVBCブロックが大きいため原稿に埋め込めるLVBCのブロックの数は少なくなる。このことは、ドット群の位置を認識し、第1の領域と第2の領域に含まれる付加情報を復号するために必要なサンプル数が少なくなることを意味する。そのため、ドット位置を正確に求めづらくなり、付加情報を正確に復号するのが難しくなる。
1404は、LVBCブロック1401のドット面積を大きくし、かつ、グリッド間隔を小さくしたときのLVBCブロックを示す。1405は、LVBCブロック1404が繰り返して埋め込まれた原稿を示す。LVBCブロック1404を原稿に埋め込むと、ドット群の視認性が高まるため、LVBCが画質へ及ぼす影響は大きくなる。しかし、LVBCブロックが小さいため原稿に埋め込めるLVBCのブロックの数は多くなる。このことは、ドット群の位置を認識し、第1の領域と第2の領域に含まれる付加情報を復号するために必要なサンプル数が多くなることを意味する。そのため、ドット群の位置を正確に求めやすくなり、付加情報を正確に復号するのが容易になる。
〈画像形成装置〉
まず、本発明の実施例の前提となる。LVBCを用いた情報埋め込み/抽出技術を利用可能な画像形成装置の構成例を、図面を用いて説明する。
図15は、LVBCを用いた情報埋め込み/抽出技術を利用可能な画像形成装置の構成例を示すブロック図である。
画像形成装置1500は、スキャナ部1501、画像処理部1502、付加情報解読部1503、CPU1504、操作部1505、付加画像生成部1506、画像合成部1507、プリンタ部1508を備える。
スキャナ部1501は、LVBCが埋め込まれた原稿を光学的に読み取り、RGB信号を出力する。
画像処理部1502は、スキャナ部1501からRGB信号を受け取り、フィルタリングや色変換等の各種画像処理を行い、プリンタ部1508の種別に応じた信号を出力する。例えば、プリンタ部1508がカラー2値プリンタの場合には、CMYKの2値画像信号を出力する。
付加情報解読部1503は、スキャナ部1501が読み取った原稿に埋め込まれている付加情報を解読する。
CPU1504は、ユーザが操作部1505を介して設定した付加情報や、付加情報解読部1503が解読した付加情報に基づいて、画像形成装置1500全体を制御する。また、CPU1504は、上記付加情報に基づいて、印刷時に原稿に埋め込む付加情報を生成する。
操作部1505は、ユーザインタフェース画面を介して、ユーザからの指示を受け付けるともに、装置の内部情報をユーザに提示する。ユーザインタフェース画面には、画像処理内容や付加情報を設定するための設定画面や、付加情報を表示する画面が含まれる。
付加画像生成部1506は、CPU1504が生成した付加情報に基づいてLVBCを生成する。
画像合成部1507は、付加画像生成部1506からLVBCを受け取り、当該LVBCと、画像処理部1502から受け取った印刷出力用の画像データとを合成し、印刷出力用の合成画像データを出力する。
プリンタ部1508は、CMYK4色のインクを使用するカラー2値プリンタ、カラーの多値出力可能なカラープリンタ又はモノクロのプリンタである。プリンタ部1508は、画像合成部1507から受け取った合成画像データを印刷出力する。
外部I/F1509は、画像形成装置1500をLAN等の通信ネットワークに接続する通信インタフェースである。画像形成装置1500は、外部I/F1509を介して、ネットワークに接続された他の装置と各種画像データや制御用のコマンドの送受信を行う。
図16は、LVBCが埋め込まれていない原稿にLVBCを埋め込む際の画像形成装置1500の動作例を説明するための図である。
スキャナ部1501は、付加情報の埋め込みが行われていない原稿1601を読み取り、読み取った画像データを画像処理部1502に出力する。
画像処理部1502は、スキャナ部1501から受け取った画像データに対して、ユーザが操作部1505を介して設定した画像処理を行い、画像処理後の画像データ1602を出力する。
CPU1504は、ユーザが操作部1505を介して設定した付加情報を付加画像生成部1506に出力する。
付加画像生成部1506は、CPU1504から受け取った付加情報に基づいてLVBCを生成する。
画像合成部1507は、画像処理部1502から受け取った画像データ1602と、付加画像生成部1506から受け取ったLVBCとを合成し、印刷出力用の合成画像データ1604をプリンタ部1508に出力する。
プリンタ部1508は、受け取った合成画像データを原稿に印刷して印刷出力結果1605を出力する。
尚、スキャナ部1501から受け取った画像データを印刷するのではなく、外部I/F1509から受け取った画像データを印刷する場合にも、上記処理を行えばよい。
図17は、原稿に埋め込まれているLVBCに基づいて、画像形成装置1500の設定内容や動作内容を切り替える処理を説明するための図である。
本例で用いるLVBCが示す付加情報には、特定のユーザにのみ複写を許可するための複写制限情報が含まれているものとする。複写制限情報を用いることにより、複写を行おうとする者にパスワードを入力させ、そのパスワードが正しければその者に複写を許可し、誤っていれば複写を禁止するという動作を画像形成装置4100に行わせることができる。
スキャナ部1501は、LVBCが埋め込まれている原稿1701を読み取り、画像データを付加情報解読部1503と画像処理部1502に出力する。
画像処理部1502は、スキャナ部1501から受け取った画像データに対して、ユーザが操作部1505を介して設定した画像処理を行い、画像処理後の画像データ1702を出力する。
付加情報解読部1503は、スキャナ部1501から受け取った画像データからLVBCを抽出/解読し、付加情報を求め、CPU1504に出力する。
CPU1504は、付加情報解読部1503から受け取った付加情報に基づき、ユーザにパスワードの入力を促す認証画面を操作部1505に表示させると共に入力されたパスワードが正しいか否かを判定する。すなわち、CPU1504は、複写を行おうとするユーザが正当なユーザ(複写を許可されたユーザ)か否かを判定する。次いで、CPU1504は、判定結果に応じて、画像処理部1502、画像合成部1507及びプリンタ部1508を制御する。
入力されたパスワードが正しい場合、画像処理部1502は、画像処理後の画像データ1702を画像合成部1507に出力する。画像合成部1507は、受け取った画像データに対して何も処理をせずにそのままプリンタ部1508に出力する。
プリンタ部1508は、受け取った画像データを原稿に印刷して印刷出力結果1703を出力する。
一方、入力されたパスワードが誤っている場合、画像処理部1502は、画像処理後の画像データを出力しないため、印刷は行われない。
以下、本発明の実施例を、図面を用いて詳細に説明する。
実施例1の画像形成装置は、原稿にLVBCを埋め込み印刷する前に、グリッド間隔とドット面積の調整を行う。具体的には、画像形成装置は、グリッド間隔とドット面積の各々を、それらの最小値と最大値の間(最小値と最大値を含む)で段階的に変更することによって複数パターンのLVBCを生成し、各LVBCが解読可能か否かを判定する。そして、解読可能なLVBCの中で最もドット群の打ち込み量の少ないLVBCを原稿に埋め込む。ドット群の打ち込み量とは、1つのドットのドット面積と、単位面積当たりに埋め込むドット数との積である。したがって、解読可能と判定したドット群の中で、単位面積当たりの面積比が最も小さいドット群が原稿に埋め込まれる。
図1は、実施例1の画像形成装置の構成例を示すブロック図である。
画像形成装置100は、原稿にLVBCの埋め込むことと、原稿に埋め込まれているLVBCを解読して付加情報を求めることを実行する。
画像形成装置100は、スキャナ部101、第1の画像処理部102、付加情報解読部103、CPU104、操作部105、付加画像生成部106、画像合成部107、プリンタ部108、外部I/F部109、第2の画像処理部110を備える。
スキャナ部101は、原稿を光学的に読み取り、RGB信号を出力する。
第1の画像処理部102は、スキャナ部101からRGB信号を受け取り、フィルタリングや色変換等の各種画像処理を行い、プリンタ部108の種別に応じた信号を出力する。例えば、プリンタ部108がカラー2値プリンタの場合には、CMYKの2値画像信号を出力する。
付加情報解読部103は、スキャナ部101が読み取った原稿にLVBCが埋め込まれている場合には、そのLVBCを解読して、付加情報を求める。特に、付加情報解読部103は、当該画像データを受け取り、付加情報の解読が可能か否か、すなわち、付加情報が認識可能な否かを判定する。その詳細については後述する。
CPU104は、ユーザが操作部105を介して設定した付加情報や、付加情報解読部103が解読した付加情報に基づいて、画像形成装置全体を制御する。特に、CPU104は、上記付加情報に基づいて、LVBCの生成用の付加データを生成する。
操作部105は、ユーザインタフェース画面を介して、ユーザからの指示を受け付けるともに、画像形成装置100の内部情報をユーザに提示する。ユーザインタフェース画面には、画像処理内容や付加情報を設定するための設定画面や、付加情報を表示する画面が含まれる。
付加画像生成部106は、CPU104が生成した付加データに基づいてLVBCを生成する。
画像合成部107は、付加画像生成部106からLVBCを受け取り、当該LVBCと、画像処理部102から受け取った画像処理済みの画像データとを合成し、合成画像データを出力する。
プリンタ部108は、CMYK4色のインクを使用するカラー2値プリンタ、カラーの多値出力可能なカラープリンタ又はモノクロのプリンタである。プリンタ部108は、画像合成部107から受け取った合成画像データを印刷出力する。
外部I/F109は、画像形成装置をLAN等の通信ネットワークに接続する通信インタフェースである。画像形成装置は、外部I/F109を介して、ネットワークに接続された他の装置と各種画像データや制御用のコマンドの送受信を行う
第2の画像処理部110は、合成画像データ(LVBCが埋め込まれた画像データ)を画像合成部107から受け取り、その合成画像データに対して、印刷出力時やスキャナ読み取り時の画像劣化を再現する画像処理を行う。例えば、第2の画像処理部110は、印刷出力用のCMYKの画像データからRGBの画像データへの色空間変換処理、スムージングフィルタを使用したスムージング処理、ルックアップテーブルを使用した濃度変換処理を行う。
次に、画像形成装置100による処理の流れを、図面を参照して説明する。
図2は、実施例1における、画像形成装置による処理の流れを示すフローチャートである。
図3は、実施例1における、画像形成装置100の各部の間のデータの流れを説明するための図である。
以下、LVBCが埋め込まれていない原稿をコピーする際に、所定の付加情報を示すLVBCを埋め込む場合の処理を図2と図3を用いて説明する。
S201において、操作部105は、ユーザからの指示にしたがい、第1の画像処理部102が行う画像処理の内容や、付加情報を設定し、設定内容をCPU104に出力する(図3におけるパス1)
S202において、スキャナ部101は、LVBCが埋め込まれていない原稿を読み取り、読み取った画像データを第1の画像処理部102に出力する(図3におけるパス2)
S203において、画像処理部102は、スキャナ部101から画像データを受け取り、当該画像データに対して、操作部105で設定された画像処理を行う。
S204において、画像処理部102は、画像処理済みの画像データをメモリ等の記憶媒体(図示せず)に格納する。
S202〜S204の処理と並行してS205〜S207の処理が行われる。
S205において、CPU104は、操作部105で設定された付加情報に基づいて、付加データを生成し、当該付加データを付加画像生成部106に出力する(図3におけるパス3)。
S206において、CPU104は、付加画像生成部106に対して、グリッド間隔を最大に設定しかつドット面積を最小に設定する。
S207において、付加画像生成部106は、設定されたグリッド間隔とドット面積に基づいてLVBCを生成し、当該LVBCをメモリ等の記憶媒体(図示せず)に格納する。
S208において、画像合成部107は、S204においてメモリ等に格納された画像処理済みの画像データと、同様にメモリ等に格納されているLVBCを合成し、合成画像データを第2の画像処理部110に出力する(図3におけるパス4、5、6)。
S209において、第2の画像処理部110は、合成画像データ(LVBCが埋め込まれた画像データ)を画像合成部107から受け取り、その合成画像データに対して、印刷出力時やスキャナ読み取り時の画像劣化を再現する画像処理を行う。次いで、第2の画像処理部110は、画像処理後の合成画像データを付加情報解読部103に出力する(図3におけるパス6、7)。
S210において、付加情報解読部103は、第2の画像処理部110から受け取った合成画像データに埋め込まれているLVBCの解読が可能か否かの判定を行い、判定結果をCPU104に出力する(図3におけるパス8)。
S211において、CPU104は、付加情報解読部103から受け取った判定結果を、設定されているグリッド間隔とドット面積と共にメモリ等の記憶媒体(図示せず)に格納する。
S212において、CPU104は、設定されているグリッド間隔が最小か否かを判定し、当該グリッド間隔が最小でない場合には、S213の処理に進み、最小である場合には、S214の処理に進む。
S213において、CPU104は、付加画像生成部106に対して、グリッド間隔を1段階小さくする設定を行い、次いで、S207〜S212の処理を行う。すなわち、CPU104は、グリッド間隔が最小になるまで、S207〜S213の処理を繰り返す。尚、グリッド間隔を1回で複数段階小さくする設定であってもよい。
S214において、CPU104は、設定されているドット面積が最大である否かを判定し、当該ドット面積が最大でない場合には、S215の処理に進み、最大である場合には、S217の処理に進む。
S215において、CPU104は、付加画像生成部106に対して、ドット面積を1段階大きくする設定を行う。尚、ドット面積を1回で複数段階大きくする設定であってもよい。
S216において、CPU104は、付加画像生成部106に対して、グリッド間隔を最大にする設定を再び行い、S207〜S213の処理を行う。すなわち、CPU104は、ドット面積が最大になるまで、S207〜S216の処理を繰り返す。
図4は、上記の繰り返し処理によって生成される複数パターンのLVBCを示す図である。
図4において、401〜409は、各々、LVBCを示す。図4に示すように、図2に示すS207〜S216の処理を行うことにより、401〜409の順番で9パターンのLVBCが生成され、各LVBCに対して解読可能性が判定される。401は、グリッド間隔を最大に設定し、かつ、ドット面積を最小に設定したときに生成されるLVBCであり、視覚的に最も目立たないLVBCである。これに対して、409は、グリッド間隔を最小に設定し、かつ、ドット面積を最大に設定したときに生成されるLVBCであり、視覚的に最も目立つLVBCである。
S217において、付加情報解読部103は、S211においてメモリ等に格納されたグリッド間隔、ドット面積、判定結果(解読の可否)の組合せから、解読可能でありかつドット群の打ち込み量が最小であるLVBCを求める。その求め方については後述する。
S218において、付加情報解読部103は、グリッド間隔が最小でドット面積が最大のLVBC(図4の409)の解読が不可能である場合には、S219の処理に進む。
S219において、CPU104は、印刷出力を中止すると決定し、例えば「解読可能な付加情報の埋め込みができない」とのメッセージを操作部105に表示する。
S220において、付加情報解読部103は、解読可能でありかつドット群の打ち込み量が最小であるLVBCを画像合成部107に出力する。画像合成部107は、第1の画像処理部102から受け取った画像データと当該LVBCとを合成し、合成画像データをプリンタ部108に出力する(図3におけるパス4、5、9)。
S221において、プリンタ部108は、受け取った合成画像データを印刷出力する。
図5は、グリッド間隔、ドット面積、LVBCの解読可否及びドット群の打ち込み量の関係を示す図である。
付加情報解読部103は、S217において、LVBCの解読可否及びドット群の打ち込み量の関係を用いて、解読可能でありかつドット群の打ち込み量が最小であるLVBCを求める
グリッド間隔については最大4mmから最小0.5mmの4段階、ドット面積については最小1μm2から最大6μm2の4段階の設定が可能であるとする。したがって、この場合、16パターンのLVBCが生成される。図5から、8パターンのLVBCが解読可能であることがわかる。すなわち、グリッド間隔が2mmでドット面積が4μm2と6μm2の場合、グリッド間隔が1mmでドット面積が2μm2、4μm2、6μm2の場合、グリッド間隔が0.5mmでドット面積が2μm2、4μm2、6μm2の場合に解読可能である。一方、本例では、ドット群の打ち込み量は、単位面積(本例では、1600mm2)に打ち込まれるドット数とドット面積の積とする。したがって、例えば、グリッド間隔が4mmの場合、ドット打ち込み数は100dotであるため、ドット面積が1μm2、2μm2、4μm2、6μm2の場合のドット打ち込み量は、各々、100、200、400、600になる。解読可能な上記パターンのドット打ち込み量の中で最も少ないドット打ち込み量は1600であり、そのときのグリッド間隔は2mmでドット面積は4μm2である。
実施例1は、設定可能な全てのグリッド間隔と設定可能な全てのドット面積を組合せから得られる全てのパターンのLVBCに対して解読可能か否かの判定を行う方式である。しかしこの方式では、設定可能なグリッド間隔と設定可能なドット面積の組合せが多くなるにつれて、生成するLVBCのパターンが多くなり、LVBCの生成に要する処理時間や、LVBCの解読に要する処理時間が長くなる。また、生成したLVBCや解読結果を格納するメモリの容量も大きくなるという課題がある。
これに対して、実施例2は、設定可能な全てのグリッド間隔と設定可能な全てのドット面積の組合せから得られる全てのパターンのLVBCに対して解読可能かどうかの判定をするものではない。実施例2では、まず、グリッド間隔を段階的に小さくしていきながらLVBCの解読判定を行い、解読可能なLVBCを検出した段階で直ちにそのLVBCを原稿に埋め込む。グリッド間隔を最小にしても解読が不可能である場合には、次いで、グリッド間隔を最小にした状態でドット面積を段階的に大きくしていきながらLVBCの解読判定を行い、解読可能なLVBCを検出した場合にはそれを原稿に埋め込む。
図6は、実施例2における、画像形成装置による処理の流れを示すフローチャートである。
図7は、実施例2における、画像形成装置の各部の間のデータの流れを説明するための図である。
以下、LVBCが埋め込まれていない原稿をコピーする際に、所定の付加情報を示すLVBCを埋め込む場合の処理を図6と図7を用いて説明する。
S601において、操作部105は、ユーザからの指示にしたがい、第1の画像処理部102が行う画像処理の内容や、付加情報を設定し、設定内容をCPU104に出力する(図7におけるパス1)。
S602において、スキャナ部101は、LVBCが埋め込まれていない原稿を読み取り、読み取った画像データを第1の画像処理部102に出力する(図7におけるパス2)。
S603において、第1の画像処理部102は、スキャナ部101から画像データを受け取り、当該画像データに対して、操作部105で設定された画像処理を行う。
S604において、第1の画像処理部102は、画像処理済みの画像データをメモリ等の記憶媒体(図示せず)に格納する。
S602〜S604の処理と並行してS605〜S607の処理が行われる。
S605において、CPU104は、操作部105で設定された付加情報に基づいて、付加データを生成し、当該付加データを付加画像生成部106に出力する(図7におけるパス3)。
S606において、CPU104は、付加画像生成部106に対して、グリッド間隔を最大にかつドット面積を最小に設定する。
S607において、付加画像生成部106は、設定されたグリッド間隔とドット面積に基づいてLVBCを生成する。
S608において、画像合成部107は、S604においてメモリ等に格納された画像処理済みの画像データと、S607において生成したLVBCを合成する。次いで、画像合成部107は、合成画像データをメモリ等の記憶媒体(図示せず)に格納すると共に、第2の画像処理部110に出力する(図7におけるパス4、5、6)。
S609において、第2の画像処理部110は、合成画像データ(LVBCが埋め込まれた画像データ)を画像合成部107から受け取り、その合成画像データに対して、印刷出力時やスキャナ読み取り時の画像劣化を再現する画像処理を行う。次いで、第2の画像処理部110は、画像処理後の合成画像データを付加情報解読部103に出力する(図7におけるパス6、7)。
S610、S611において、付加情報解読部103は、第2の画像処理部110から受け取った合成画像データに埋め込まれているLVBCの解読が可能か否かの判定を行い、解読可能の場合には、S612の処理に進み、解読不能の場合には、S613の処理に進む。また、付加情報解読部103は、判定結果をCPU104に出力する(図7におけるパス8)。
S611において、画像合成部107は、S608においてメモリ等に格納した合成画像データをプリンタ部108に出力し、プリンタ部108は、当該合成画像データを印刷出力する(図7におけるパス9)。
S613において、CPU104は、設定されているグリッド間隔が最小か否かを判定し、当該グリッド間隔が最小でない場合には、S614の処理に進み、最小である場合には、S615の処理に進む。
S614において、CPU104は、付加画像生成部106に対して、グリッド間隔を1段階小さくする設定を行い、次いで、S607〜S611の処理を行う。すなわち、CPU104は、S611においてLVBCが解読可能と判定できるまで、グリッド間隔を1段階ずつ小さくしていく。そして、グリッド間隔を最小にしても解読可能なLVBCが得られない場合には、CPU104は、S615の処理に進む。尚、グリッド間隔を1回で複数段階小さくする設定であってもよい。
S615において、CPU104は、設定されているドット面積が最大である否かを判定し、当該ドット面積が最大でない場合には、S616の処理に進み、最大である場合には、S617の処理に進む。
S616において、CPU104は、付加画像生成部106に対して、ドット面積を1段階大きくする設定を行う。すなわち、CPU104は、S611においてLVBCが解読可能と判定できるまで、ドット面積を1段階ずつ大きくしていく。そして、ドット面積を最大にしても解読可能なLVBCが得られない場合は、S617の処理に進む。つまり、グリッド間隔を最小にかつドット面積を最大にしても解読可能なLVBCが得られない場合は、CPU104は、印刷出力を中止すると決定し、例えば「解読可能な付加情報の埋め込みができない」とのメッセージを操作部105に表示する。尚、S616は、ドット面積を1回で複数段階大きくする設定であってもよい。
図8は、上記の繰り返し処理によって生成される複数パターンのLVBCを示す図である。
図8において、801〜805は、各々、LVBCを示す。図8に示すように、図6に示すS607〜S616の処理を行うことにより、LVBCが解読可能と判定されるまで、801〜805の順番で5パターンのLVBCが生成される。801は、グリッド間隔を最大に設定し、かつ、ドット面積を最小に設定したときに生成されるLVBCであり、LVBC801は、視覚的に最も目立たないLVBCである。これに対して、805は、グリッド間隔を最小に設定し、かつ、ドット面積を最大に設定したときに生成されるLVBCであり、視覚的に最も目立つLVBCである。
以上述べた通り、実施例2は、先ず、グリッド間隔を段階的に小さくしながらLVBCが解読可能か否かを判定し、グリッド間隔を最も小さくしてもLVBCの解読ができなかった場合には、次いで、ドット面積を段階的に大きくする。このように、グリッド間隔とドット面積の調整を行いながらLVBCが解読可能か否かを判定し、解読可能と判定した時点で、解読可能なLVBCを埋め込んだ画像データを印刷出力する。
以上説明したように、実施例2では、グリッド間隔の調整を優先的に行う。その理由は、グリッド間隔を小さくしても、その視認性が低いため、解読可能でかつ目立ちにくいLVBCを早く取得できるからである。
実施例1、2は、印刷出力時やスキャナ読み取り時の画像劣化を再現する画像処理が行われた合成画像データ(LVBCが埋め込まれた画像データ)から、LVBCの解読が可能か否か判定し、解読可能なLVBCを原稿に埋め込むものである。
しかし、上記のLVBC技術の説明部分でも述べているように、印刷出力時に画像データにLVBCを埋め込む場合、また、そのLVBCを解読する場合、エラー訂正処理を行うのが好ましい。
よって、LVBCの解読が可能であった場合でも、エラー訂正処理により訂正する部分が全く無い場合と、訂正する部分が多い場合とでは、実際に印刷出力されるものが異なる。例えば、エラー訂正処理により訂正する部分が全く無かった場合には、印刷出力後の原稿の扱いが多少悪くても、スキャナで画像読み取りを行えば、LVBCを解読できるが、訂正する部分が多かった場合には、解読ができなくなる場合が起こる。
そこで、実施例3では、LVBCが埋め込まれた画像データを印刷出力する前に、LVBCの解読が可能か否かの判定を行い、解読可能と判定された場合でも、そのときのエラー訂正量の大きさに応じて更に解読の容易性を上げる調整を行う。
図9は、実施例3における、画像形成装置による処理の流れを示すフローチャートである。
以下、LVBCが埋め込まれていない原稿をコピーする際に、所定の付加情報を示すLVBCを埋め込む場合の処理を、図9を用いて説明する。
S901において、操作部105は、ユーザからの指示にしたがい、第1の画像処理部102が行う画像処理の内容や、付加情報を設定し、設定内容をCPU104に出力する。
S902において、スキャナ部101は、LVBCが埋め込まれていない原稿を読み取り、読み取った画像データを第1の画像処理部102に出力する。
S903において、第1の画像処理部102は、スキャナ101から画像データを受け取り、当該画像データに対して、操作部105で設定された画像処理を行う。
S904において、第1の画像処理部102は、画像処理済みの画像データをメモリ等の記憶媒体(図示せず)に格納する。
S902〜S904の処理と並行してS905〜S907の処理が行われる。
S905において、CPU104は、操作部105で設定された付加情報に基づいて、付加データを生成し、当該付加データを付加画像生成部106に出力する。
S906において、CPU104は、付加画像生成部106に対して、グリッド間隔を最大にかつドット面積を最小に設定する。
S907において、付加画像生成部106は、設定されたグリッド間隔とドット面積に基づいてLVBCを生成する。
S908において、画像合成部107は、S904においてメモリ等に格納された画像処理済みの画像データと、S907において生成したLVBCを合成する。次いで、画像合成部107は、合成画像データをメモリ等の記憶媒体(図示せず)に格納すると共に、第2の画像処理部110に出力する。
S909において、第2の画像処理部110は、合成画像データ(LVBCが埋め込まれた画像データ)を画像合成部107から受け取り、その合成画像データに対して、印刷出力時やスキャナ読み取り時の画像劣化を再現する画像処理を行う。次いで、第2の画像処理部110は、画像処理後の合成画像データを付加情報解読部103に出力する。
S910、S911において、付加情報解読部103は、第2の画像処理部110から受け取った合成画像データに埋め込まれているLVBCの解読が可能か否かの判定を行う。付加情報解読部103は、解読可能の場合にはS916の処理に進み、解読不能の場合にはS912の処理に進む。また、付加情報解読部103は、判定結果をCPU104に出力する。
S912において、CPU104は、設定されているグリッド間隔が最小か否かを判定し、当該グリッド間隔が最小でない場合には、S913の処理に進み、最小である場合には、S914の処理に進む。
S913において、CPU104は、付加画像生成部106に対して、グリッド間隔を1段階小さくする設定を行い、次いで、S907〜S911の処理を行う。すなわち、CPU104は、S911においてLVBCが解読可能と判定できるまで、グリッド間隔を1段階ずつ小さくしていく。そして、グリッド間隔を最小にしても解読可能なLVBCが得られない場合には、CPU104は、S914の処理に進む。尚、グリッド間隔を1回で複数段階小さくする設定であってもよい。
S914において、CPU104は、設定されているドット面積が最大である否かを判定し、当該ドット面積が最大でない場合には、S915の処理に進み、最大である場合には、S922の処理に進む。
S915において、CPU104は、付加画像生成部106に対して、ドット面積を1段階大きくする設定を行う。すなわち、CPU104は、S911においてLVBCが解読可能と判定できるまで、ドット面積を1段階ずつ大きくしていく。そして、ドット面積を最大にしても解読可能なLVBCが得られない場合は、S914の処理に進む。つまり、グリッド間隔を最小にかつドット面積を最大にしても解読可能なLVBCが得られない場合は、CPU104は、印刷出力を中止すると決定し、例えば「解読可能な付加情報の埋め込みができない」とのメッセージを操作部105に表示する。尚、S915は、ドット面積を1回で複数段階大きくする設定であってもよい。
図8は、上記の繰り返し処理によって生成されるLVBCの一例を示す図であるが、その内容は既に説明したので省略する。
実施例3の特徴は、S911において解読可能と判定された後のS916以降の処理にある。
S916において、付加情報解読部103は、解読時のエラー訂正処理において、付加情報のデータのうち何ビットのデータが訂正されたか(エラー訂正符号量)を求め、それをメモリ等の記憶媒体に格納する。
S917において、CPU104は、エラー訂正符号量に応じた調整レベルを決定する。
図10は、エラー訂正符号量に応じて調整レベルを決定する方法を説明するための図である。
本例では、グリッド間隔が2mmでドット面積が2μm2で付加情報のビット数を1024ビットとし、調整レベルを5段階に分ける。調整レベル0は、1024ビットのうちエラー訂正処理によって訂正されたビット数(エラー訂正符号量)が0ビットの場合である。調整レベル1は、エラー訂正符号量が1ビットから10ビットの場合である。調整レベル2は、エラー訂正符号量が11ビットから20ビットの場合である。調整レベル3は、エラー訂正量が21ビットから30ビットの場合である。調整レベル4は、エラー訂正量が30ビット以上の場合である。
実施例3では、この調整レベルに応じて、グリッド間隔とドット面積の大きさを調整する。
S918において、調整レベルに基づいて、グリッド間隔とドット面積を以下のように調整する。例えば、調整レベルが0である場合には、ドット面積とグリッド間隔を変更しない。調整レベルが1である場合には、ドット面積はそのままでグリッド間隔を1段階小さくする。調整レベルが2である場合には、ドット面積はそのままでグリッド間隔を2段階小さくする。調整レベルが3である場合には、ドット面積を1段階大きくし、グリッド間隔を1段階小さくする。調整レベルが4である場合には、ドット面積を2段階大きくし、グリッド間隔を2段階小さくする。
図11は、調整レベルに基づいた、グリッド間隔とドット面積の調整例を説明するための図である。
図10に示した例では、グリッド間隔が2mmでドット面積が2μm2のLVBCが解読可能であるとした。グリッド間隔が2mmでドット面積が2μm2のときの調整レベルが0の場合には、グリッド間隔とドット面積を変更しない。また、調整レベルが1の場合には、ドット面積はそのままでグリッド間隔を1段階小さくする。すなわち、グリッド間隔を1mmに変更する。また、調整レベルが2の場合には、ドット面積はそのままでグリッド間隔を2段階小さくする。すなわち、グリッド間隔を0.5mmに変更する。また、調整レベルが3の場合には、ドット面積を1段階大きくし、グリッド間隔を1段階小さくする。すなわち、グリッド間隔を1mmに、ドット面積を4μm2に変更する。また、調整レベルが4の場合には、ドット面積を2段階大きくし、グリッド間隔を2段階小さくする。すなわち、グリッド間隔を0.5mmに、ドット面積を4μm2に変更する。
図12は、調整レベルに基づいた、グリッド間隔とドット面積の別の調整例を説明するための図である。
本例では、グリッド間隔が1mmでドット面積が2μm2のLVBCが解読可能であるとする。本例によると、グリッド間隔が1mmでドット面積が2μm2のときの調整レベルが0の場合には、グリッド間隔とドット面積を変更しない。調整レベルが1の場合には、ドット面積はそのままでグリッド間隔を1段階小さくする。すなわち、グリッド間隔を0.5mmに変更する。調整レベルが2の場合には、本来ならばドット面積はそのままでグリッド間隔を2段階小さくすることになるが、グリッド間隔の設定限界が0.5mmであるため、グリッド間隔を2段階小さくできない。そこで、グリッド間隔は0.5mmとし、ドット面積を1段階大きくし4μm2にすることで解読容易性を上げる。
調整レベルが3の場合には、本来ならばドット面積を1段階大きくし、グリッド間隔を1段階小さくして、グリッド間隔を0.5mmとし、ドット面積4μm2にすることになるが、上述したとおり、調整レベルが2の場合にその設定が行われる。したがって、グリッド間隔を0.5mmとし、ドット面積を2段階大きくし6μm2にすることで解読容易性を上げる。
調整レベルが4の場合には、本来ならばドット面積を2段階大きくし、グリッド間隔を2段階小さくすることになる。しかしながら、グリッド間隔に関しては、その設定限界が0.5mmであるため、2段階小さくできない。そこで、グリッド間隔は0.5mmとする。解読容易性をあげるためにはドット面積を6μm2より大きくする必要があるが、ドット面積の設定限界が6μm2であるため、ドット面積をそれより大きくできない。したがって、調整レベルが4の場合には、調整レベル3と同じく、グリッド間隔を0.5mmに、ドット面積を6μm2に変更する。
このように、グリッド間隔、ドット面積ともに設定限界を超える調整が必要となる場合には、操作部1505に「出力用紙の取り扱いによっては、付加情報の解読ができなくなる可能性があります」等の注意を促すメッセージを表示する。
(その他の実施例)
また本発明の目的は、上述した実施例で示したフローチャートの手順を実現するプログラムコードを記録した記録媒体から、システムあるいは装置のコンピュータ(またはCPUやMPU)が、そのプログラムコードを読出し実行することによっても達成される。記録媒体とは、コンピュータ読み取り可能な記録媒体である。この場合、コンピュータ読み取り可能な記録媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになる。そのため、このプログラムコード及びプログラムコードを記録した記録媒体も本発明の一つを構成することになる。
プログラムコードを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、そのプログラムコードの指示に基づきコンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込みまれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される。