[概要]
「背景技術」の節に含まれる説明及び従来の配列に関する説明は、各々の出版物及び/又は使用法を通じて周知の技術を形成する文献又は装置に言及する。しかし、そのような説明は、本発明の発明者又は特許出願人による表現と見なされるべきではなく、そのような文献又は装置は当該技術の一般常識の一部を何らかの形で形成する。
以下における用語「文書」は、カラー画像を示す。テキスト文書等は、以下に説明する方法に従って偽造保護される前にカラー画像に変換されても良い。
用語「保護文書」は、文書の自動認証を可能にする文書に追記される追加の特徴を含む文書(即ち、カラー文書)を示す。
文書が印刷される場合、文書の画素は文書基材上のインクの正方形として表される。一例として、文書基材は用紙であっても良い。各画素又はインクの正方形は、インクが存在しない部分又は異なる色のインクの組み合わせにより形成される。
[ハードウェア実装]
符号化マークの形式のデータを符号化及び復号化する以下に説明する方法は、図1に示すコンピュータシステム100を使用して実現しても良い。ここで、各方法のステップは、コンピュータシステム100内で実行可能な1つ以上のアプリケーションプログラムにより実現しても良い。特に、セキュリティ文書の少なくとも生成又は認証を説明する方法における種々のステップは、コンピュータシステム100内で実行されるソフトウェア命令により行われる。命令は、各々が1つ以上の特定のタスクを実行する1つ以上のコードモジュールとして形成されても良い。ソフトウェアは2つの別個の部分に分割されても良い。第1の部分及び対応するコードモジュールは説明する方法を実行し、第2の部分及び対応するコードモジュールは第1の部分とユーザとの間のユーザインタフェースを管理する。ソフトウェアは、例えば以下に説明する記憶装置を含むコンピュータ読み取り可能な媒体に格納されても良い。ソフトウェアは、コンピュータ読み取り可能な媒体からコンピュータシステム100にロードされ、コンピュータシステム100により実行される。そのようなソフトウェア又はコンピュータプログラムを記録したコンピュータ読み取り可能な媒体は、コンピュータプログラム製品である。コンピュータシステム100においてコンピュータプログラム製品を使用することにより、セキュリティ文書の少なくとも生成又は認証を以下に説明する有利な方法が実行されるのが好ましい。
図1に示すように、コンピュータシステム100は、コンピュータモジュール101と、キーボード102及びマウスポインタデバイス103等の入力装置と、プリンタ115、表示装置114、スピーカ117及びスキャナ119を含む出力装置とにより形成される。外部変復調器(モデム)トランシーバ装置116は、接続121を介して通信ネットワーク120と通信するコンピュータモジュール101により使用されても良い。ネットワーク120は、インターネット又は専用ワイドエリアネットワーク(WAN)等のWANであっても良い。接続121が電話回線である場合、モデム116は従来の「ダイヤルアップ」モデムであっても良い。或いは、接続121が大容量(例えば、ケーブル)接続である場合、モデム116はブロードバンドモデムであっても良い。無線モデムは、ネットワーク120に無線接続するために使用されても良い。
一般に、コンピュータモジュール101は、少なくとも1つのプロセッサユニット105と、例えば半導体ランダムアクセスメモリ(RAM)及び読み出し専用メモリ(ROM)から形成されるメモリユニット106とを含む。モジュール101は、ビデオ表示装置114及びスピーカ117に結合するオーディオビデオインタフェース107と、キーボード102及びマウス103及びオプションとしてジョイスティック(不図示)に対する入出力(I/O)インタフェース113と、外部モデム116及びプリンタ115に対するインタフェース108とを含む多くのI/Oインタフェースを更に含む。いくつかの実現例において、モデム116は、コンピュータモジュール101内、例えばインタフェース108内に内蔵されても良い。コンピュータモジュール101は、接続123を介してコンピュータシステム100をローカルエリアネットワーク(LAN)として周知のローカルコンピュータネットワーク122に結合することを可能にするローカルネットワークインタフェース111を更に有する。図示するように、ローカルネットワーク122は、一般に所謂「ファイアウォール」装置又は同様の機能性を含む接続124を介してワイドネットワーク120に更に結合しても良い。インタフェース111は、Ethernet(登録商標)回路カード、無線Bluetooth(登録商標)又はIEEE802.11無線構成により形成されても良い。
インタフェース108及び113は、直列接続性及び並列接続性の双方を提供でき、一般に直列接続性は、ユニバーサルシリアルバス(USB)規格に従って実現され、対応するUSBコネクタ(不図示)を有する。記憶装置109が提供され、一般にハードディスクドライブ(HDD)110を含む。フロッピー(登録商標)ディスクドライブ及び磁気テープ装置(不図示)等の他の装置が更に使用されても良い。一般に光ディスクドライブ112は、不揮発性データソースとして動作するために提供される。光ディスク(例えば、CD−ROM、DVD)、USB−RAM及びフロッピー(登録商標)ディスク等のポータブルメモリ素子は、例えばシステム100に対する適切なデータソースとして使用されても良い。
一般にコンピュータモジュール101の構成要素105〜113は、当業者には周知のコンピュータシステム100の従来の動作モードを結果として与える方法で、相互接続バス104を介して通信する。上述の構成が実現されるコンピュータの例として、IBMのPC及びそれに互換性のあるもの、Sun SPARCstation、Apple Mac(登録商標)又はそれから進化した同様のコンピュータシステムがある。
通常、セキュリティ文書の少なくとも生成又は認証を説明する方法を実現するアプリケーションプログラムは、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により読み出され且つ制御される。ネットワーク120及び122から取り出されるプログラム及び任意のデータの中間記憶は、ハードディスクドライブ110と共に動作する可能性のある半導体メモリ106を使用して達成されても良い。いくつかの例において、アプリケーションプログラムは、1つ以上のCD−ROM上で符号化されてユーザに供給され、対応するドライブ112を介して読み出されても良い。或いは、アプリケーションプログラムは、ユーザによりネットワーク120又は122から読み出されても良い。更にソフトウェアは、他のコンピュータ読み取り可能な媒体からコンピュータシステム100にロードできる。コンピュータにより読み取り可能な媒体は、少なくとも実行又は処理のために、少なくとも命令又はデータをコンピュータシステム100に提供することに関係する任意の記録媒体を示す。そのような記録媒体の例としては、装置がコンピュータモジュール101の内部装置であるか、又は外部装置であるかに関わらず、フロッピー(登録商標)ディスク、磁気テープ、CD−ROM、ハードディスクドライブ、ROM又は集積回路、光磁気ディスク、或いはPCMCIAカード等のコンピュータ読み取り可能なカード等がある。少なくとも命令又はデータの提供に関係しても良い、コンピュータ読み取り可能な伝送媒体の例としては、別のコンピュータ又はネットワーク化装置に対するネットワーク接続、並びに電子メール送信及びウェブサイト等に記録された情報を含むインターネット又はイントラネットに加え、無線伝送チャネル又は赤外線伝送チャネルがある。
上述のアプリケーションプログラムの第2の部分及び対応するコードモジュールは、表示装置114上にレンダリングされるか又は表現される1つ以上のグラフィカルユーザインタフェース(GUI)を実現するために実行されても良い。キーボード102及びマウス103を操作することにより、コンピュータシステム100のユーザ及びアプリケーションはインタフェースを操作し、GUIと関連するアプリケーションに対して少なくとも制御コマンド又は入力を提供しても良い。
セキュリティ文書の少なくとも生成又は認証を説明する方法ステップは、グラフィックプロセッサ、デジタル信号プロセッサ、1つ以上のマイクロプロセッサ及び連想メモリを含む1つ以上の専用ハードウェアモジュールで実現されても良い。
[第1の実施形態]
[保護文書を構成する要素]
第1の実施形態において、文書基材の領域の画像を符号化するバーコードは文書に埋め込まれ、保護文書を形成する。以下に説明するように、黄色のインクは文書基材領域の濃淡強度画像に殆ど寄与しないため、バーコードは黄色で印刷される。
図2に、保護文書200を示す。バーコードは、文書に埋め込まれる場合、画素の左上の角からの垂直方向のオフセット(Yoffset)、画素の左上の角からの水平方向のオフセット(Xoffset)、画素の領域の幅(Wbp)及び画素の領域の高さ(Hbp)により指定されるバーコード領域201を占有する。202は埋め込みバーコードである。本実施形態において、バーコードに符号化される画像は、バーコード領域と同一の寸法及びオフセットを有する文書基材の領域の画像である。従って、用語「文書基材領域」は「バーコード領域」と同義である。
埋め込みバーコード202は、まずバーコードを作成し、そのバーコードを文書に埋め込むことで生成される。これについては以下に詳細に説明する。バーコードは、幅(Wbb)[コーデル]及び高さ(Hbb)[コーデル]により指定される要素の2次元グリッドである(基本ビットマップバーコード要素を以下コーデルと呼ぶ)。バーコードは、印刷解像度(Rp)のファクターであるコーデル解像度(Rc)で生成される(即ち、Mが整数の場合にRp/Rc=Mである)。例えば、印刷解像度Rp=600ドット/インチと仮定すると、有効なコーデル解像度はRc=150コーデル/インチである。
図3Aに、バーコード300を示す。バーコード300は、粗配置境界301を含む。バーコードは、「B」として示す幅を有する。例えば、Bは32に等しく、これは、バーコード300がバーコード300の全ての4辺上に32コーデルを含む粗配置境界301を有することを意味する。
バーコード300は、内部302を更に含む。バーコード300の内部302は、境界301内に存在しないバーコード300の全てのコーデルを含む。内部302において、図3Bに示すように、一部のコーデルは「配置コーデル」305として参照される。配置コーデル305及び境界コーデルは、バーコード上で精細配置を実行するために使用されても良い。これについては以下に詳細に説明する。
配置コーデル305は、行及び列の座標が3で割り切れるコーデルである。しかし、配置コーデル305は、任意の他の適切な配列で配列されても良い。
上述のように、バーコード300の寸法は、コーデル数で表される幅(Wbb)及び高さ(Hbb)により指定されても良い。バーコードが十分なデータを符号化して文書基材領域の画像を表せることを保証するために、Wbb及びHbbを計算する方法を以下に詳細に説明する。垂直方向のオフセット(Yoffset)及び水平方向のオフセット(Xoffset)は、領域が文書中の空白領域を占有するようにユーザにより指定されても良い。或いは、文書中の空の領域を選択する周知の機械による方法が使用されても良い。
文書又は画像又はバーコードビットマップの特定の画素又はコーデルを参照するために、座標系が導入される。画素又はコーデルは、座標の対(x,y)により表される。ここで、xは画素又はコーデルの列を指定し、yは画素又はコーデルの行を指定する。また、表記α(x,y)は、座標(x,y)における画素又はコーデルの値を参照するのに使用される。
[バーコードの寸法の計算]
文書基材領域の画像を符号化するバーコードの寸法は、必要とされるデータ容量に依存する。必要とされるデータ容量は、以下に詳細に説明する方法において使用されるパラメータの値から求められても良い。
本実施形態の場合、文書基材領域の画像は数値のベクトルにより特徴付けられる。ベクトルを格納するのに必要とされるビット数SizeVは、以下の式を使用してベクトル中の要素数Nv及び各要素を格納するのに使用されるビット数Nbitsから求められる。
SizeV=N v×Nbits
その後、数値のベクトルは直列化され、周知のRSA暗号化方法により暗号化されても良い。RSA暗号化方法は、追加のNrsaビットを必要としても良い。従って、結果として得られるバイナリデータのビット数は以下の式により求められても良い。
DataSizeunrounded=Nrsa+SizeV
その後、誤り訂正符号がバイナリデータに適用される。以下に詳細に示す誤り訂正符号は、バイナリデータを長さKのブロックに分割する。バイナリデータの長さがKの倍数でない場合、最終的なデータサイズDataSizeはDataSizeunroundedを次のKの倍数に丸めることにより求められても良い。
DataSizeビットのデータを格納するのに必要とされるコーデル数NumCodelsは、以下の式から求められる。式中、「ceil」は天井関数である。
NumCodels=ceil(9/8×DataSize)
コーデル数NumCodelsが求められると、バーコード内部302の高さHbiは、まずバーコード内部の幅Wbiを選択することにより求められても良い。保護文書200の走査済画像からバーコード300の寸法を判定することを容易にするために、バーコード内部302の高さ(Hbi)及び幅(Wbi)の可能な値は、粗配置境界301の幅Bの倍数に制限されても良い。バーコード内部の幅WbiがBの倍数として選択されると、バーコード内部の高さは以下の式により求められても良い。
Hbi=round(NumCodels/Wbi)
バーコード300の幅Wbb及びバーコードの高さHbbは、以下の式により計算される:
Hbb=Hbi+2B
Wbb=Wbi+2B
ここで、バーコード領域の画素における幅Wbp及び高さHbpは、以下の式により求められる。
Hbp=(Rp/Rc)×Hbb
Wbp=(Rp/Rc)×Wbb
[2段階配置]
保護文書200を読み出す時にスキャナ119を使用して生成される保護文書200の走査済画像中のコーデルの場所を判定することには問題がある。走査済画像中のコーデルの場所を判定する従来の方法の主な問題は、僅かに低い解像度以外の解像度でコーデルの場所を正確に判定できないことである。しかし、本明細書で説明する方法を使用すると、スキャナ119(例えば、標準的な市販のスキャナ)及びプリンタ115を使用して生成される保護文書200の走査済画像中のコーデルの場所は、最大200dpiの解像度で正確に判定される。この上限の解像度は、印刷及び走査処理の品質によるものであり、本明細書で説明する方法の本質的な制限ではない。プリンタ及びスキャナの品質は向上しているため、説明する方法を変更せずに使用することにより、更に高い解像度が可能となるだろう。
バーコードコーデル解像度(例えば、150コーデル/インチ)が走査解像度(例えば、600dpi)より低い可能性があるため、保護文書200の走査済画像中のコーデルの場所の判定は問題である。これは、走査済画像のコーデルのサイズが4×4走査済画素であることを意味する。走査済画像のコーデルの中心の場所は、正確に判定されることが必要である。しかし、歪み及び反りにより、保護文書の走査済画像中のコーデルの場所は予想される場所からずれる可能性がある。
保護文書200の走査済画像中のコーデルの場所は、「粗配置」及び「精細配置」を使用して判定されても良い。粗配置は、保護文書200の走査済画像中のコーデルとコーデルの中心の座標との近似マッピングを表す。粗配置は、アフィン変換を使用しても良い。通常、走査済画像中のコーデルとコーデルの場所とのマッピングがアフィン変換より複雑であるため、粗配置はコーデルの場所を正確に表さない可能性がある。粗配置アフィン変換が見つけられると、走査済画像は変換され、元のアフィン変換の結果を取り消し、元の埋め込みバーコード202と略同一の画像を生成しても良い。この元の埋め込みバーコード202と略同一の画像は、粗配置画像として参照されても良い。
図4に、粗配置画像402及び走査済画像403を示す。粗配置アフィン変換411の表現を更に示す。粗配置アフィン変換411は、粗配置画像における座標を取得し、粗配置画像の座標を走査済画像の座標にマップする。
精細配置は、変位ベクトルの配列410を使用して、図4に示すようなバーコードコーデル401と粗配置画像402とのマッピングを判定するために使用されても良い。そのような変位ベクトルの配列は、「変位マップ」として参照されても良い。
変位マップ410及び粗配置アフィン変換411は、バーコード401から走査済画像403の座標へのマッピングを共に提供する。バーコード401中のコーデル415の座標を仮定すると、変位マップ410は粗配置画像402中のそのコーデルの中心の座標417を見つけるために使用されても良い。その座標は、粗配置アフィン変換411により変換され、走査済画像403中のコーデルの中心の座標419を結果として与えても良い。従って、変位マップ410及びアフィン変換411の合成の結果、コーデルの座標(例えば、座標415)から走査済画像の座標(例えば、座標419)へのマッピングが得られる。構成されたマッピングはワープマップと呼ばれる。ワープマップ412の表現を図4に更に示す。
[保護文書の作成及び認証]
保護文書を作成及び認証するのに必要な処理の概要を提示する。
まず、保護文書を作成する処理が考慮される。図5に、保護文書を作成する方法を示す。
方法500は、初期ステップ501で開始する。次のステップ502は、螺旋を作成して文書に埋め込み、「中間文書」を形成する。埋め込み螺旋の主な機能は、検出されると文書基材領域の場所を示すことであるため、埋め込み螺旋は場所識別構成として処理される。このため、文書基材領域は螺旋に対して所定の空間配列に存在する。例えば、本明細書で後述されるいくつかの実施形態を参照して説明するように、螺旋は正方形、矩形等の所定の形状の用紙上に領域の輪郭を示すために使用されても良い。この領域は、文書基材領域を取り囲むように構成される。当然、螺旋は単に1つの可能な例であり、少なくとも他の場所識別マーク又は配列が使用できる。
次のステップ503は中間文書を印刷する。次のステップ504は503で印刷された中間文書を走査し、走査済画像を形成する。次のステップ505は、中間文書の走査済画像において螺旋の場所を特定することにより文書基材領域の場所を特定する。基材の1つ以上の固有の特性を示す螺旋により規定される基材領域の画像化からデータが取得される。そのような特性は、用紙の基材面又は本体の色又は構造に関連付けられ、用紙の「署名」として参照されても良い。ステップ505は、1つ以上のそのような特性を示す数値のベクトルを含む文書基材領域を特徴付ける。次のステップ506は、文書基材領域画像を特徴付ける数値のベクトルをバーコードに符号化し、そのバーコードを印刷する空白文書に埋め込む。次のステップ507は、文書基材領域にバーコードを重ね合わせることにより503で印刷された中間文書上に埋め込みバーコードを含む空白文書を印刷し、保護文書200を形成する。方法500は、終了ステップ508で終了する。
ここで、保護文書を認証するための処理を考慮する。図6に、保護文書を認証する方法を示す。
方法600は、初期ステップ601で開始する。次のステップ602は、保護文書を走査することにより走査済画像を生成する。次のステップ603は、黄色フィルタを走査済画像に適用し、黄色チャネル強度画像を生成する。次のステップ604は、黄色チャネル強度画像の螺旋を検出し、粗配置アフィン変換を計算する。次のステップ605は、ソルトデータを抽出する。ソルトデータは、バーコードの粗配置境界に符号化された相対的に小さなデータである。ソルトデータは、バーコードバージョン等のメタデータを格納できる。次のステップ606は、精細配置ワープマップを判定する。次のステップ607は、バーコードからデータを抽出してバイナリデータを生成する。次のステップ608は、ステップ607で生成されたバイナリデータを非直列化して数値のベクトルを形成する。バイナリデータは、バイナリデータの最初のNbitsをベクトルの第1の要素に割り当てることにより非直列化される。バイナリデータの次のNbitsは、ベクトルの次の要素に割り当てられる。これは、ベクトルの全てのNv個の要素が値を割り当てられるまで繰り返される。次のステップ609は、ステップ606において作成された粗配置画像を特徴付けることにより第2の数値のベクトルを形成する。この第2のベクトルに含まれるデータは、第1のベクトルのデータにより示される固有の特性のうち少なくとも1つを示す。例えば、この第2のベクトルは、用紙の表面又は本体の構造的特性を示す。2つのベクトルが用紙の同一領域の同一特性を含むため、次のステップ610で実行される2つのベクトル間の比較により基材の信憑性が示され、従って文書の信憑性が示される。2つのベクトルを比較する処理については、本明細書において更に詳細に説明する。方法600は、終了ステップ611において終了する。
[螺旋の作成及び埋め込み]
ステップ502において実行されるように、バーコードの粗配置境界の中に螺旋を生成し、そのバーコードを文書に埋め込む方法700を詳細に説明する。埋め込み螺旋を含む結果として得られる文書は、中間文書と呼ばれる。螺旋は、高さHbb及び幅Wbbのバーコードを作成し、バーコードの適切な場所において螺旋を生成することにより埋め込まれる。バーコードが読み取られた時に螺旋が容易に検出されることを可能にする特有のプロパティを有するので、それらの螺旋はバーコードの中に生成される。
方法700は、初期ステップ701で開始する。次のステップ702は、バーコードの中に6つの螺旋を作成する。次のステップ703は、螺旋に使用されないバーコード中の全てのコーデルを「オフ」に設定する。次のステップ704は、バーコードを文書に埋め込む。方法700は、終了ステップ705において終了する。
[バーコードにおける螺旋の作成]
バーコードに使用される螺旋は、LRHF(Logarithmic Radial Harmonic Function)のビットマップバージョンである。数学的に、LRHFは平面上に規定される複素数値関数である。LRHFは尺度不変性及び回転不変性のプロパティを有する。これは、LRHFが縮尺又は回転により変換された場合でも依然としてLRHFであることを意味する。図8に、LRHFの実数部を示す。
LRHFは、調整可能な3つのパラメータを有する。第1のパラメータは、LRHFの周波数がπラジアン/画素より大きくなる半径であるナイキスト半径Rである。第2のパラメータは、原点を中心とする円により渦状腕が成す角度であるねじれ角σである。第3のパラメータは、位相オフセットφである。関数に対する式は、極座標(r,θ)で最も容易に表される。
式中、m及びnの値は以下により与えられる。
ステップ702において実行されるように、バーコードにおいて6つの螺旋を生成する方法を説明する。螺旋は、バーコードの粗配置境界に配置される。各螺旋は、ナイキスト半径R、ねじれ角σ及び位相オフセットφを含むLRHFをサンプリングする螺旋ビットマップを生成することにより生成される。螺旋ビットマップは、B画素に等しい高さ及び幅を有する。
図9に、螺旋ビットマップ900を示す。次に螺旋ビットマップ900の極座標について説明する。螺旋ビットマップ900の座標系の原点903は、螺旋ビットマップ900の中心を示す。螺旋ビットマップ900の1つの点の半径r901は、その点から原点903までの距離であり、画素数で測定される。螺旋ビットマップ900の1つの点の角度θ902は、原点903からその点までの射線の角度である。半径r及び角度θのこの定義に従って、座標(r,θ)を含む螺旋ビットマップの1つの画素の値は以下の式(3)に従って判定されても良い。
図9に示す螺旋ビットマップ900において、陰影が付けられた正方形の画素値は1である。陰影が付けられていない正方形の画素値はゼロ(0)である。
螺旋ビットマップ900が生成されると、螺旋ビットマップ900により表される螺旋はバーコード300のコーデルに埋め込まれても良い。ゼロ(0)に等しい螺旋ビットマップ900の画素は、対応するコーデルの状態を「オフ」に設定することによりバーコード300に符号化される。1に等しい螺旋ビットマップ900の画素は、対応するコーデルの状態を「オン」に設定することによりバーコード300に符号化される。
図10に示すように、6つの螺旋1001、1002、1003、1004、1005、1006は、バーコード300の粗配置境界301に配置されても良い。それらの螺旋1001、1002、1003、1004、1005、1006の各々の幅及び高さは、それぞれBコーデルである。上述のように、Bは32に等しく、これは、各螺旋の幅及び高さがそれぞれ32コーデルであることを意味する。バーコード300に配置される螺旋のうち、5つの螺旋(即ち、図10に示すように、螺旋1001、1003、1004、1005、1006)は位相に対して同一の値(即ち、φ=0)を有し、残りの螺旋(即ち、螺旋1002)は逆位相(即ち、φ=π)を有する。次に、バーコード300の粗配置境界301に配置される6つの螺旋1001、1002、1003、1004、1005及び1006の場所について図10を参照して説明する。
図10に示すように、位相φ=0である5つの螺旋(即ち、図10に示すように、螺旋1001、1003、1004、1005、1006)のうち、4つの螺旋1001、1003、1004、1006は、バーコード300の4つの角に位置付けられる。φ=0である他の螺旋1005は、バーコード300の右下の角の螺旋1004のすぐ左側に位置付けられる。逆位相φ=πである螺旋1002は、バーコードの左上の角の螺旋のすぐ右側に位置付けられる。
[文書へのバーコードの埋め込み]
ステップ704において実行されるように、Xoffset及びYoffsetにより指定されるバーコード領域において文書にバーコードを埋め込む方法を詳細に説明する。
埋め込まれるバーコードは、文書の印刷解像度(Rp)より小さくても良いコーデル解像度(Rc)を有する。従って、倍率SFは以下の式から計算されても良い。
SF=Rp/Rc
コーデル解像度がそのように制限されるため、倍率SFは常に整数である。
文書中の各画素(xd,yd)は、以下の式を適用することによりバーコード中の対応するコーデル(xb,yb)に参照されても良い。
xb=floor((xd−Xoffset)/SF)
yb=floor((yd−Yoffset)/SF)
バーコード領域中の各画素(xd,yd)は、その対応するコーデル(xb,yb)が「オン」である場合には「黄色」に設定される。
[文書基材領域画像の発見及び特徴付け]
次に、ステップ505において実行されるように、画像中の螺旋を検出し、領域の画像を特徴付けることにより走査済画像の文書基材領域の場所を特定する方法100について図11を参照して更に詳細に考慮する。
方法1100は、初期ステップ1101で開始する。次のステップ1102は、走査済中間画像に黄色フィルタを適用して黄色チャネル強度画像を作成する。次のステップ1103は、作成された黄色チャネル強度画像において螺旋を検出し、その場所を特定する。次のステップ1104は、逆粗配置アフィン変換を使用して粗配置画像を作成する。次のステップ1105は、粗配置画像を特徴付ける数値のベクトルを形成する。尚、粗配置画像は、走査済画像における文書基材領域の画像でもある。方法1100は、終了ステップ1106において終了する。
[黄色フィルタの適用]
ステップ1102及び603において実行されるように、走査済画像において黄色フィルタを適用することにより黄色チャネル強度画像を作成する方法を詳細に説明する。一般に、走査済画像は赤色、緑色及び青色の3つのカラーチャネルから構成される。しかし、強度画像は、1つのカラーチャネルからのみ構成される。
黄色チャネル強度画像は、まず走査済画像と同一の幅及び高さを持つが、1つのカラーチャネルのみを持つ画像を作成することにより形成される。
黄色の画像は、青色チャネルの反転で最大のコントラストを有する。従って、新しい画像において(x,y)の画素の値α(x,y)は、走査済画像の同一の座標における画素の青色値blue(x,y)を1から減算した値に設定される。ここで、画素値の範囲は0〜1である。
[螺旋の検出]
以下の説明は、黄色の画像又は濃淡画像を参照する。
次に、ステップ1103及び604において実行されるように、強度画像を検査して螺旋の場所を検出し、螺旋の場所を使用して粗配置アフィン変換を計算する方法1200について図12を参照して更に詳細に説明する。螺旋の場所の検出は、螺旋テンプレート画像と強度画像との相関を実行することにより達成される。
方法1200は、初期ステップ1201で開始する。相関を使用して螺旋を検出するために、螺旋テンプレート画像がまず生成される必要がある。次のステップ1202は、この螺旋テンプレート画像を作成する。螺旋テンプレート画像の生成は、螺旋テンプレート画像が複素数値の画像であり、そのサイズが螺旋ビットマップより大きいこと以外はステップ1203における螺旋ビットマップの生成と同様である。螺旋テンプレート画像の各画素値は、倍精度浮動小数点数の対で格納され、画素値の実数部及び虚数部を表す。螺旋テンプレート画像は、Tsに等しい高さ及び幅であるテンプレートサイズを有する。テンプレートサイズTsは変更可能であり、本実施形態においてはTs=256とする。
螺旋テンプレートの極座標(r,θ)は、テンプレートの中心に原点を有するものとして規定される。螺旋テンプレート画像の極座標(r,θ)における画素値は、以下の通りである。
式中、m及びnは(2)により規定され、ナイキスト半径R及びねじれ角σは螺旋の作成時と同一である。
次のステップ1203は相関を実行する。2つの画像I1及びI2の相関は、以下により規定される画像Ixである:
合計は、I1が規定される全てのx’及びy’にわたる範囲であり、画像I2において、画像外の画素値はゼロであると考えられる。I1又はI2が複素数値の画像である場合、Ixも複素数値の画像であっても良い。
ステップ1203は、強度画像と複素螺旋テンプレート画像との相関を実行する。結果として得られる相関画像は、走査済画像の螺旋の場所において、ピーク、即ち隣接画素に対して大きな絶対値を有する画素を含む必要がある。ピークの画素値の位相は、粗配置境界に埋め込まれた螺旋の位相φに関連付けられる。φ=0で生成された5つの螺旋は同様の位相のピークを有し、φ=πで生成された1つの螺旋は他の5つの螺旋のピークに対して逆位相のピークを有する。
尚、走査済画像が印刷解像度Rp又はバーコードコーデル解像度Rcと異なる解像度である場合でも、基礎となるLRHFが尺度不変性であるため、螺旋は依然として検出される。
次のステップ1204は、ステップ1203から結果として得られる相関画像を検査し、バーコードと一致するレイアウトで配列される6つのピークの場所を特定する。これを効率的に行うために、コーデル解像度Rc及び走査解像度Rsを認識する必要がある。それらの解像度の何れかが認識されず、それらの値に対して少数の候補しか存在しない場合、6つのピークの場所は可能な解像度の各々を試行し、選択された解像度と一致するレイアウトを有する6つのピークを検索することにより特定される。
バーコードのレイアウトと一致する6つのピークを検索する方法は多く存在する。1つの配列において、以下の方法が使用される。第1に、相関画像が探索されて、バーコード領域の右下の角の螺旋の対、即ち図10の螺旋1004及び1005を見つける。これらの螺旋は、約B×Rs/Rcだけ離れて(走査済画像において画素数で測定される)位置し、略同一の位相を有するピークの対に対応する必要がある。2つのピークの強度画像の座標をq4及びq5(任意の順序)により示す。第2に、相関画像が探索されて、バーコード領域の左上の角の螺旋の対、即ち螺旋1001及び1002を見つける。これらの螺旋は、約B×Rs/Rbだけ離れて(強度画像において画素数で測定される)位置するピークの対に対応し、一方のピークは事前に見つけられたq4及びq5のピークと略同一の位相を有し、他方のピークは略逆位相を有する。事前に見つけられたq4及びq5のピークと略同一の位相を有するピークの走査済画像における座標をq1により示し、略逆位相を有するピークの強度画像における座標をq2により示す。更に、q4がq5よりq1に近接する場合、q4とq5とを入れ替える。
次に、右上の螺旋(1003)及び左下の螺旋(1006)の場所が推定され、正確な位相を有するピークがそこで見つけられるかを確認するために相関画像は探索される。そのようなピークが見つけられる場合、一致するレイアウトを有するバーコードが見つけられた。右上の螺旋1003の予想される座標をq'3で示す。q'3の値は、q1びq2を結合する線上にq4を投影することにより与えられる。同様に、左下の螺旋1006の予想される座標をq'6で示す。q'6の値は、q4及びq5を結合する線上にq1を投影することにより与えられる。相関画像において、それぞれq'3及びq'6に近接するピーク及びq6を探索する。
ピークが略正当な距離だけ離れているか又は2つのピークが略同一の位相(又は逆位相)を有するかを判定するために、上述の処理において、いくつかの許容パラメータを使用する必要があるだろう。本実施形態において、以下の許容差が使用される。2つのピークは、それらの間の実際の距離が正確な距離の5%以内である場合に略正確な距離だけ離れていると考えられる。ピークq4及びq5は、それらの位相がお互いのπ/3以内である場合に同一の位相であると考えられる。ピークq1及びq2は、一方の位相が他方の位相のπ/3+π以内である場合に逆位相であると考えられる。角度q'3q1q3及びq'6q4q6がそれぞれ5°より小さく、角度q1q3q4及びq4q6q1がそれぞれ90°の5°以内である場合に、ピークq3及びq6はq'3及びq'6に近接すると考えられる。
同一の位相又は逆位相を有するピークを探索した時に2つ以上のピークの対が見つけられる可能性がある。その場合、正確な組合せを見つけるために全ての異なる組合せが試行される。
次のステップ1205は、バーコードの寸法を判定し、粗配置アフィン変換を作成する。
バーコードの寸法は、強度画像においてそれら3つのピークの位置を検査することにより判定される。バーコードの幅は、以下のように計算される。第1に、左上の螺旋(1001)及び右上の螺旋(1003)に対応するピーク間の距離を計算する。この距離は、|q1 - q3|で示される。この距離は、Rc/Rsを乗算することによりスキャナ解像度画素からバーコードコーデル解像度に変換される。保護文書の画素数で測定される距離をWcとすると、以下の式が得られる:
Wcは、元のバーコードの2つの螺旋1001及び1003の中心間の大よその距離であり、これは(バーコードの幅)−(左上の螺旋の幅/2)−(右上の螺旋の幅/2)である。螺旋の幅が境界の幅Bであるため、バーコードの幅Wは約Wc+Bとなる。バーコードの幅及び高さが共にBの倍数であることが事前に分かっているため、Wの厳密な値を判定するために、Wc+Bの値はBの最も近い倍数に丸められる。
同様に、バーコードの高さHは、以下の式の値をBの最も近い倍数に丸めることにより判定される。
粗配置アフィン変換は、行列A及びベクトルaにより指定される。粗配置アフィン変換は、3つの螺旋1001、1003、106の中心を強度画像の3つのピークq1、q3、q6の位置にするアフィン変換を計算することにより判定される。行列Aの要素が以下の式(8)により示される場合、行列Aは式(9)及び(10)を介して計算される。
ベクトルaは、以下の式を介して計算される。
次のステップ1206は、この処理の実行を終了する。
[粗配置画像の作成]
次に、ステップ1104及び1902において実行されるように、走査済画像から粗配置画像を作成する方法を詳細に説明する。粗配置画像は、所定の粗配置アフィン変換(行列A及びベクトルaにより指定される)を使用して走査済画像から作成される。粗配置画像の寸法は、バーコードの寸法と同一である。
粗配置画像は、多くの異なる方法を使用して生成できる。1つの方法において、粗配置画像の各画素は以下のように生成される。粗配置画像における座標(x,y)は、粗配置アフィン変換を使用して変換され、結果として走査済画像における座標A(x,y)T+aが得られる。走査済画像は、双3次補間を使用してその座標において補間され、結果として画素値が得られる。結果として得られる値は、粗配置画像に格納される。この処理は、粗配置画像の各画素に対して繰り返される。
別の方法において、まず、走査済画像は低域フィルタによりぼかされる。これにより、高解像度の走査済画像が変換されて低解像度の粗配置画像を生成する時に与えられる画像のギザギザ(エイリアシング)の影響が低減される。低域フィルタを設計する方法は、当該技術において周知である。フィルタの選択は、走査済画像の解像度とバーコードコーデルの解像度との比率により通知される。
[粗配置画像の特徴付け]
粗配置画像が文書基材領域の画像であることが重要である。従って、粗配置画像を特徴付けることにより、文書基材領域の画像も特徴付けられる。粗配置画像は、完全な画像表現より非常に少ない記憶容量を必要とする表現により特徴付けられるため、その特徴付けは、文書基材領域と同一の空間領域を占有するバーコードに符号化及び配列されても良い。
次に、ステップ1105において実行されるように、数値のベクトルを含む粗配置画像を特徴付ける方法を詳細に説明する。
この方法に入力される粗配置画像は、文書基材領域のカラー画像である。文書基材領域の特徴付けを簡単にするために、粗配置画像は濃淡強度画像に変換される。
主成分分析(PCA)は、濃淡強度画像に対して実行され、Nv個の数値のベクトルVを生成する。PCAは、最上位成分により画像を特徴付ける周知の方法である。
この実施形態では、濃淡強度画像は、Nv個の直交基底ベクトル上に投影される。基底ベクトルの集合は、文書基材領域画像の大きなデータセットの最も重要な成分を見つけることにより事前に選択されても良い。ベクトルVは、濃淡強度画像がNv個の基底ベクトルの各々に投影される時に残差を見つけることにより形成される。
数値のベクトルVの各要素は、サイズがNbitsの浮動小数点数として格納されても良い。
[文書基材領域画像の符号化]
次に、ステップ506において実行されるように、文書基材領域の画像の特性を符号化する方法1300について図13を参照して更に詳細に考慮する。
方法1300は、初期ステップ1301で開始する。次のステップ1302は、新しいバーコード及び空白文書を作成する。作成された新しいバーコードは、幅Wbb及び高さHbbを有する。空白文書は、解像度Rpのカラー画像である。最初、空白文書は空である。次のステップ1303は、バーコードの粗配置境界を作成する。次のステップ1304は、文書基材領域の画像を特徴付ける数値のベクトルVを直列化する。結果として得られるバイナリデータは、ステップ1305においてバーコードに符号化及び配列される。次のステップ1306は、バーコード内部302において配置パターンを作成する。次のステップ1307は、印刷の準備として空白文書にバーコードを埋め込む。方法1300は、終了ステップ1308において終了する。
[粗配置境界の作成]
これらのステップは、バーコードの境界に少量のデータを格納することに関係がある。この少量のデータは、ソルトデータとして周知である。ソルトデータは、バーコードバージョン等のメタデータを格納できる。
ソルトデータを格納し、読み出す目的で、バーコードの境界は、図14に示すように、正方形に分割される。粗配置境界301はBと等しい幅を有し、バーコードはBの倍数である高さ及び幅を有する。従って、バーコードはB/2の幅及び高さの正方形に等分される。これらの正方形はソルト正方形と呼ばれる。
螺旋が配列されても良い粗配置境界の角のコーデルは、更なる考慮の対象から外され、ソルト正方形と考えられない。図14の正方形1402は、そのような正方形の1つである。残りの正方形1401の各々は、1ビットのソルトデータを格納するために使用される。
ソルトデータを格納し、読み出す目的で、2つの擬似ランダム配列a0及びa1が使用される。バーコードコーデル座標の各対(x,y)におけるa0及びa1の双方が0又は1である値ai(x,y)を含む。aiが擬似ランダムであるため、値ai(x,y)は、所定のx及びyであるがランダムであると考えられる。a0及びa1を生成するために使用される擬似乱数生成アルゴリズムは多く存在する。本実施形態において、a0及びa1は、周知のシードで初期化されるRC4アルゴリズムを使用して生成される。
次に、ステップ1303において実行されるように、符号化されるソルトデータに従ってバーコード画像の粗配置境界のコーデルに値を割り当てる方法1500について図15を参照して更に詳細に説明する。バーコードの寸法を仮定すると、符号化されるソルトデータのビット数は、粗配置境界に適合するソルト正方形の数と等しい。従って、異なる寸法のバーコードは異なる量のソルトデータを格納できる。
方法1500は、初期ステップ1501で開始する。次のステップ1502は、所定の順序でソルト正方形にわたり繰り返される。本実施形態においては、走査線の順序で繰り返される。即ち、1502の最初の実行時には、1番上の行のソルト正方形のうち最も左側のソルト正方形が選択される。1502の後続する実行時には、一番上の行の後続するソルト正方形が選択され、その後、後続する行のソルト正方形が行毎に選択される。尚、いくつかの行において、ソルト正方形は全てが隣接するわけではない。
次のステップ1503は、現在選択されているソルト正方形の画素の値を設定する。これがステップ1503により処理されるn番目のソルト正方形であるようにnを規定し、iをソルトデータのn番目のビットの値とする。ステップ1503は、選択されるソルト正方形の画素の値をaiの対応する値に割り当てる。即ち、選択されるソルト正方形における全ての(x,y)に対して以下の式が成立する。
a(x,y)=ai(x,y)
式中、iはソルトデータのn番目のビットである。
次のステップ1504は、更にソルト正方形が存在するかを検査する。存在する場合、1502に進み、ループを継続する。ソルト正方形がそれ以上存在しない場合、次のステップ1505に進む。
次のステップ1506は、方法1500を終了する。
[データの符号化及び配列]
上述のように、方法1300のステップ1305において、プロセッサ105は直列化データにアクセスし、そのデータをバーコードに符号化及び配列する。
データは、データがバーコードに格納される前にランダムに見えることを保証するために前処理されても良い。データは、追加のNrsaビットをデータに追加しても良いRSA暗号化等の公開鍵方法でデータを暗号化することにより前処理されても良い。更にデータは、データの圧縮により又は誤り訂正符号の追加により前処理されても良い。
誤り訂正符号化は前処理されたデータに適用されても良いため、保護文書200の印刷及び走査における不具合により、バーコードに格納されたデータは破損されない。この例において、低密度パリティチェック(LDPC)符号化は、誤り訂正符号化を前処理データに適用するために使用されても良い。或いは、他の誤り訂正符号化方法が前処理データに適用されても良い。例えば、リードソロモン(RS)符号化又はターボ符号が前処理データに適用されても良い。
低密度パリティチェック(LDPC)符号化はブロック符号化方式である。この方式において、前処理データは、まず長さKビットのブロックに分割され、各ブロックは符号化されて長さNビットの符号化ブロックを生成する。尚、N及びKは使用中の特定のLDPC符号のパラメータである。前処理データの長さがKビットの倍数でない場合、前処理データは、長さをKビットの倍数にするために任意のデータを埋め込まれても良い。
次に、ステップ1305において実行されるように、データを符号化し、符号化データをバーコード300に配列する方法1600について図16を参照して説明する。
方法1600は、バーコード300に格納されるデータにアクセスし、コーデルをバーコード300に符号化する。例えばデータは、メモリ106からアクセスされても良い。方法1600はステップ1602で開始し、プロセッサ105はデータのブロックにわたり繰り返す。ステップ1602の最初の実行時には、データの最初のKビットが処理するために選択される。ステップ1602の後続する実行時には、データの次のKビットが選択される。
次のステップ1603において、プロセッサ105は、ステップ1602で選択されたKビットのデータの誤り訂正符号化を実行する。ステップ1603は、Nビットの符号化データを生成する。その後、次のステップ1604において、プロセッサ105は、Nビットの符号化データをバーコード300のコーデル(例えば、301)に格納する。符号化データの各ビットは、バーコード300の1つのデータコーデルに格納される。ステップ1604において、Nビットの符号化データはバーコード300のデータコーデルにマップされる。
マッピング関数ψは、順序付けの概念に基づいて符号化データビットをデータコーデルにマップするように規定されても良い。符号化データビットの順序付けは、「ビット毎の順序」と呼ばれても良い。ビット毎の順序付けにおいて、全てのブロックの全ての第1のビットは全てのブロックの全ての第2のビットより前にあり、全ての第2のビットは全てのブロックの全ての第3のビットより前にある。それらのブロックの同一の位置にある全ての符号化データビット内で、第1のブロックのビットは第2のブロックのビットより前にあり、第2のブロックのビットは第3のブロックのビットより前にある。これにより、符号化データビットを考慮する順序が規定される。
バーコード300のデータコーデルの1つの可能な順序は、「走査線順」と呼ばれる。走査線順序付けにおいて、1番上の行のコーデルは2番目の行のコーデルより前にあり、2番目の行のコーデルは3番目の行のコーデルより前にある。各行内において、データコーデルは左から右に順序付けられる。これにより、データコーデルを考慮する順序が規定される。
符号化データビットとデータコーデルとのマッピングψにおいて、第1のデータビット(即ち、ビット毎の順序付けを使用する)は、第1のデータコーデル(即ち、走査線順序付けを使用する)にマップされる。第2のデータビットは第2のデータコーデルにマップされる。各符号化ビットの値は、符号化ビットがψの下でマップされるコーデルに格納されても良い。
N個の符号化データビットの現在のブロックにおける各ビットに対する符号化データがバーコード300のデータコーデルに格納されると、次のステップ1605において、処理されるデータのブロックが更に存在するとプロセッサ105が判定した場合、方法1605はステップ1602に戻る。存在しない場合、方法1600は終了する。
いくつかのデータコーデルは、符号化データビットによりマップされていない可能性がある。それらのデータコーデルは、値を割り当てられていない。バーコード300中の全てのデータコーデルが値を割り当てられたことを保証するために、値はマップされなかったそれらのデータコーデルに無作為に割り当てられても良い。例えば、ランダム配列a0の値がマップされなかったデータコーデルに割り当てられても良い。
[配置パターンの作成]
次に、ステップ1306において実行されるように、バーコード300の配置コーデル(例えば、305)において配置パターンを生成する方法1700について図17を参照して更に詳細に説明する。
方法1700は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。方法1700は1つのステップ1702を含み、プロセッサ105は配置パターンをバーコード300のデータコーデル(例えば、303)に符号化する。使用される配置パターンは、ビットの擬似ランダム(即ち、ノイズ)配列として表されても良い。例えば、上述のビットの擬似ランダム配列a0はステップ1401において使用されても良い。ステップ1702において、プロセッサ105は、バーコード300の各配置コーデル(x、y)(例えば、305)の値をa0(x、y)に設定する。
[ソルトデータの抽出]
次に、ステップ605において実行されるように、バーコード300の粗配置境界301からソルトデータを抽出する方法1800について図18を参照して説明する。方法1800は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。
方法1800において、プロセッサ105は、ステップ604で判定された粗配置アフィン変換及び保護文書200の走査済画像を使用して、バーコード300の粗配置境界301からソルトデータを抽出する。
方法1800はステップ1802で開始し、プロセッサ105はバーコード300のソルト正方形(例えば、1401)にわたり繰り返す。例えばプロセッサ105は、上述のステップ1502において使用される同一の所定の順序でソルト正方形にわたり繰り返しても良い。方法1800の後続するステップ1803〜1806は、擬似ランダム配列a0及びa1により表される2つのソルトパターンのうち、選択したソルト正方形1401において発生するソルトパターンを判定する。これは、双方のソルトパターンと選択したソルト正方形とを互いに関係付け、より大きな結果を与えるソルトパターンを判定することにより達成されても良い。選択されたソルト正方形と相関関連にあるソルトパターンを認識することにより、選択されたソルト正方形に符号化されるデータビットの値が判定される。
ステップ1803において、現在選択されているソルト正方形の赤色チャネルの粗配置画像がプロセッサ105により生成される。非整数の座標において粗配置画像に対する値を判定するために、粗配置画像は走査済画像を補間することによって生成されても良い。走査済画像は、双3次補間を使用して補間されても良い。走査済画像座標系の座標(x、y)における走査済画像から補間されるRGB値のベクトルは、s(x、y)で示されても良い。
現在選択されているソルト正方形の赤色チャネルの粗配置画像は、Usで示されても良い。画像Usは、境界の幅の1/2(即ち、B/2)と等しい高さ及び幅を有する。一例として、現在選択されているソルト正方形が座標(xs、ys)に左上のコーデルを有する場合、Us中の画素は、xsと(xs+B/2−1)間のx座標及びysと(ys+B/2−1)間のy座標を有するコーデルに対応する。Usのx座標及びy座標の範囲が0〜B/2−1である場合、画像Usは以下の式(12)に従って生成されても良い。
即ち、コーデルの座標は粗配置アフィン変換を使用して変換され、結果として走査済画像の座標を与える。走査済画像はその座標において補間されてもよく、赤色成分は粗配置画像Usに符号化されても良い。
ステップ1803において、2つの画像U0及びU1が更に生成されても良い。画像U0及びU1は、配列a0及びa1により表されるような予想されるソルトパターンを含む。画像U0及びU1は以下のように生成されても良い。
方法1800は次のステップ1804に継続し、プロセッサ105は2つの循環相関を実行する。以下の式(14)に従って、同一の寸法を有する2つの画像I1及びI2の循環相関により、同一の寸法を有する第3の画像Ixが生成される。
式(14)の合計の範囲は、I1が規定される全てのx'及びy'にわたり、画像I2において、画像Ix外の画素の値は、I2が周期的であると考えることにより取得されても良い。
2つの循環相関は、式(14)に従ってステップ1804において実行される。それらの循環相関のうち第1の相関はUsとU0との相関であり、結果として相関画像Ux0が得られる。第2の相関はUsとU1との相関であり、結果として相関画像Ux1が得られる。
次のステップ1805において、プロセッサ105は、相関画像Ux0及びUx1中の最大値を判定する。その後、次のステップ1806において、プロセッサ105はステップ1805で判定された最大値を使用してソルトデータを含むバッファにソルトビットを格納する。画像Ux0の最大値が画像Ux1の最大値より大きい場合、バッファに格納されるソルトビットはゼロ(0)である。それ以外の場合、画像Ux1の最大値が画像Ux0の最大値より大きく、バッファに格納されるソルトビットは1である。ソルトデータを含むバッファは、メモリ106内に構成されても良い。次のステップ1807において、処理されるソルト正方形が更に存在するとプロセッサ105が判定した場合、方法1800はステップ1802に戻る。存在しない場合、方法1800は終了する。
[精細配置]
ステップ606において実行されるように、保護文書の走査済画像に対する精細配置ワープマップを判定する方法1900について図19を参照して説明する。精細配置ワープマップは、方法1700に従って生成された配置パターンを使用して方法1900において判定される。
次に、保護文書200の走査済画像に対する精細配置ワープマップを判定する方法1900について図19を参照して説明する。方法1900は、ハードディスクドライブに常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。
方法1900は、保護文書200の強度画像と式(11)に従って行列A及びベクトルaにより指定された粗配置アフィン変換とを使用して精細配置ワープマップを判定する。方法1900はステップ1902で開始し、プロセッサ105は強度画像の粗配置画像を生成する。
方法1900のステップ1902に続き、次のステップ1903において、プロセッサ105は基準画像を生成する。次に、ステップ1903において実行されるように、基準画像を生成する方法2000について図20を参照して説明する。方法2000は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。
方法2000は、バーコード300と同一のパラメータ(即ち、寸法及びソルト値)を有する仮バーコードを生成する。仮バーコードは、メモリ106内に構成されても良い。仮バーコードは、基準画像を生成するために使用されても良い。方法2000において使用されるバーコードの寸法及びソルト値は、方法600のステップ604及び605において以前に判定されている。
方法2000はステップ2001で開始し、次のステップ2002において、プロセッサ105は仮バーコードの角に対して螺旋を生成する。次のステップ2003において、プロセッサ105は、方法1300のステップ1303においてバーコード300に対する境界パターンを生成するのと同様の方法で、仮バーコードに対する境界パターンを生成し、仮バーコードの境界コーデルにデータを格納する。次のステップ2004において、プロセッサ105は、方法1300のステップ1306においてバーコード300に対する配置パターンを生成するのと同様の方法で、仮バーコードの配置コーデルに配置パターンを生成する。従って、ステップ2004において、仮バーコードのデータコーデル以外の全てのコーデルが値を割り当てられる。
方法2000は次のステップ2005に継続し、プロセッサ105は仮バーコードを使用してメモリ106内に基準画像を生成する。最初、基準画像は空である。仮バーコードのコーデルが「オン」である場合、基準画像の対応する画素は値+1に設定され、コーデルが「オフ」である場合、基準画像の対応する画素は値−1に設定される。以前に値を割り当てられなかったデータコーデルに対して、基準画像の対応する画素は値0を与えられる。方法2000は、次のステップ2005において終了する。
方法1900の次のステップ1904において、プロセッサ105は粗配置画像及び基準画像を使用して変位マップdcを生成する。変位マップdcは変位ベクトルを格納する。格納された各変位ベクトルは基準画像における場所と関連付けられ、その場所における粗配置画像と基準画像とのシフト量を測定する。
ステップ1904において、変位マップdcがタイル相関方法を使用して生成されても良い。変位マップdcの生成は、タイルサイズ2Q及びステップサイズPの選択を含む。タイルサイズ及びステップサイズは変化しても良い。Qの値が大きいほど測定精度は向上するが、より大きな空間領域にわたり向上した精度は平均化され、処理時間は更に長くなる可能性がある。ステップサイズPの値が小さいほど空間的により詳細になる。しかし、使用するステップサイズPの値が小さいほど処理時間は長くなるだろう。一例として、Q=64且つP=32である。これは、高さ128画素及び幅128画素のタイルを表し、基準画像及び粗配置画像に沿って水平方向及び垂直方向の双方に32画素ずつ増分する。
図21Aに、ステップ1304において使用されても良い基準画像2110の相関タイル2103を示す。図21Bに示すように、相関タイル2103は粗配置画像2120中の対応する相関タイル2104を有する。双方の相関タイル2103及び2104は、2101で示される2Qと等しい垂直方向及び水平方向の寸法を有する。相関タイル2103及び2104は、2102で示されるステップサイズPに従って水平方向及び垂直方向に漸進的に増分する。
次に、ステップ1304において実行されるように、変位マップdcを生成する方法2200について図22を参照して説明する。方法2200は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。
方法2200はステップ2202で開始し、プロセッサ105は、図16を参照して説明されたように基準画像2110及び粗配置画像2120をオーバラップするタイルに分割し、双方の画像2110及び2120のタイルにわたり繰り返す。ステップ2202の最初の実行時、基準画像2110及び粗配置画像2120の双方から左上角のタイル2103及び2104がそれぞれ選択される。ステップ2202の後続する実行時には、対応するタイルの後続する対が、タイルの1番上の行(例えば、2115)から開始し、タイルの最低部の行で終了するタイルの各行において左から右に向かって選択される。ステップ2202で基準画像から選択されたタイル2103はT1で示されてもよく、粗配置画像から選択されたタイル2104はT2で示されても良い。更に、タイル2103及び2104の中心の座標は(x,y)で示されても良い。
対応するタイルT1及びT2の対がステップ2202において選択されると、次のステップ2203において、選択されたタイルT1及びT2がウィンドウ化される。タイルT1及びT2は、垂直方向のハニングウィンドウ及び水平方向のハニングウィンドウによりウィンドウ化されても良い。次のステップ2204において、選択されたタイルT1及びT2は循環位相相関され、選択されたタイルに対する相関画像を生成する。選択されたタイルに対する相関画像は、メモリ106内に構成されても良い。循環位相相関は、ステップ2204において周波数領域を介して実行される。次に、ステップ204において実行されるように、選択されたタイルに対する相関画像を生成する方法2800について図28を参照して説明する。
方法2800は第1のステップ2801で開始し、プロセッサ105は高速フーリエ変換(FFT)を使用して選択したタイルT1及びT2を変換し、タイルT1^及びT2^を生成する。次のステップ2803において、プロセッサ105はタイルT2^の複素共役をタイルT1^に乗算し、タイルTx^を生成する。次のステップ2805において、プロセッサ105はタイルTx^の係数を正規化するため、各係数は単位絶対値を有する。方法2800は、次のステップ2807において終了する。ステップ2807において、ステップ2202で選択されたタイルT1及びT2に対して、タイルTx^の逆FFTが判定され、相関画像Txを生成する。相関画像Txは、実数値の2Q×2Q次元の配列であり、メモリ106内に構成されても良い。
方法2200に戻ると、次のステップ2205において、プロセッサ105は、相関画像Txを処理し、サブ画素の精度で相関画像Txの最大ピークの(Δx,Δy)Tで示される場所を表す変位ベクトルを判定する。ステップ2205において実行されるように、サブ画素の精度で相関画像Txの最大ピークの場所を判定する方法2600について図26を参照して以下に説明する。相関画像Txにおいて変位ベクトルにより表されるピークの場所(Δx,Δy)Tは、タイルT1とT2との間のシフト量を測定し、従って、T1及びT2の近傍の粗配置画像と基準画像との間の変位、即ち反りを測定する。
方法2200は次のステップ2206に継続し、プロセッサ105は、選択されたタイルの中心の場所において変位マップdcに最大ピークの場所(Δx,Δy)Tを格納する。ステップ2206において、プロセッサ105は、dc(x,y)=(Δx,Δy)Tを割り当てる。式中、(x,y)はタイルT1及びT2の中心の座標を表す。しかし、相関画像Txにおけるピークがステップ2205において判定されない場合、ピークの場所は変位マップdc(x,y)に格納されない。
次のステップ2207において、処理される粗配置画像及び基準画像に更にタイルが存在するとプロセッサ105が判定した場合、方法2200はステップ2202に戻る。存在しない場合、方法2200は終了する。
方法2200に従って生成される変位マップdcは、いくつかの場所(x,y)において規定される。可能な場所(x,y)は、相関タイルの中心である。タイルがステップサイズPで水平方向及び垂直方向に漸進的に増分したため、変位マップdcは、間隔Pの標準グリッドに存在する点の集合において規定されても良い。
方法2200の相関に使用されるタイル(例えば、2103、2104)がオーバラップするため、先行タイルのFFTを判定する際に実行される計算の一部は後続タイルのFFTを計算する時に再利用されても良い。これにより、精細配置は高速化されるだろう。次に、ステップ2203及び2204において実行されるように、相関タイルの高速フーリエ変換(FFT)を判定する別の方法2400について、図23及び図24を参照して説明する。
図23は、2つのオーバラップするタイル2301及び2302を示す。タイル2301は、北東向きの線により陰影がつけられ、タイル2302は、南東向きの線により陰影がつけられる。図23に示す領域2303は、タイル2301及び2302のオーバラップを表す。領域2303により表されるタイル2301及び2302のオーバラップの量は2Q−P列である。上述のように、2Qはタイルサイズを表し、Pはステップサイズを表す。
方法2400は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。方法2400はステップ2402で開始し、タイルT1及びT2が方法2200のループ(即ち、ステップ2202〜2207により規定されるループ)の先の実行から得られるタイルT1及びT2とオーバラップするとプロセッサ105が判定した場合、方法2400はステップ2404に進む。オーバラップしない場合、方法2400はステップ2403に進む。ステップ2403において、タイルT1及びT2の各列は垂直方向にウィンドウ化され、垂直方向のFFTはタイルT1及びT2に適用され、結果としてT1及びT2に対する処理データが得られる。次のステップ2406において、方法2400は、タイルT1及びT2の双方の処理データの2Q−P列の最も右側の列をメモリ106内に構成される処理列のキャッシュに格納する。ステップ2406において、キャッシュの任意のデータが上書きされても良い。方法2400は、次のステップ2407において終了する。ステップ2407において、プロセッサ105は、タイルT1及びT2に対する処理データの各行をウィンドウ化し、水平方向のFFTを適用する。ステップ2407から結果として得られるデータは、タイルT1及びT2の2次元ウィンドウ化FFTを表す。
ステップ2404において、処理データの最も左側の2Q−P列を判定する必要はない。データのそれらの列は、メモリ106内に構成された処理列のキャッシュからコピーされても良い。次のステップ2405において、プロセッサ105はタイルT1及びT2の残りのP列の各々にウィンドウ化及び垂直方向のFFTを適用する。ステップ2405に後続して、方法2400はステップ2406に進み、方法2400は終了する。
図19の方法1900を再度参照すると、ステップ1904における変位マップdcの生成後、方法1900の後続ステップは変位マップdcを使用してワープマップWcを生成しても良い。ワープマップWcは、バーコード300の各コーデルを保護文書200の走査済画像の座標空間の場所にマップする。スキャナ119がバーコード300全体を走査していない可能性があるため、ワープマップWcの一部は、バーコード300のコーデルを走査済画像外の座標にマップしても良い。
(x,y)が基準画像の画素の座標である場合、変位マップdc(x,y)は粗配置画像の対応する場所に対するシフトを表す。従って、粗配置画像の対応する座標は、(x,y)T+dc(x,y)と判定されても良い。粗配置アフィン変換を基準画像に適用することにより、走査済画像中の座標が提供される。ワープマップWcは、以下の式(15)に従って、バーコード300の各コーデル(x,y)をバーコード300の走査済画像の座標空間の場所にマップする。
しかし、変位マップdc(x,y)は、いくつかの場所、即ちいくつかの相関タイル(例えば、2103及び2104)の中心の場所のみで規定される。バーコード300の全てのコーデルの場所において式(15)に対する値を判定するために、変位マップdcは補間される。
方法1900は次のステップ1905に継続し、プロセッサ105は、行列G及びベクトルgにより規定されるアフィン変換を判定する。ステップ1905で判定されるアフィン変換は、総近似アフィン変換と呼ばれても良い。総近似アフィン変換は、アフィン変換によりワープマップWcを近似する。アフィン変換を判定する際に最小限にされる誤差関数は、以下の式(16)に従って規定されても良いユークリッドノルム測度Eである。
式(16)は、以下の式(17)に従ってアフィン変換を判定するために最小二乗最小化方法を使用して解決されても良い。
式(16)及び(17)の双方に対して、合計は全ての座標の対(x,y)にわたり得られる。変位マップdc(x,y)が規定されるため、ワープマップWc(x,y)が式(15)を介して規定される。
方法1900の次のステップ1906において、プロセッサ105は総近似アフィン変換をワープマップWcから除去し、以下の式(18)に従って変更されたワープマップWc'を生成する。
式中、変更ワープマップWc'は、dc(x,y)が規定される座標(x,y)において規定される。従って、変更ワープマップWc'は、相関タイル(例えば、2103、2104)の中心により形成されるグリッド上に存在するいくつかの点(x,y)において規定される。
方法1900は次のステップ1907に継続し、プロセッサ105は変更ワープマップWc'を補間するため、変更ワープマップWc'はバーコード200の全てのコーデルの座標(x,y,c)において規定される。ステップ1907で実行されるように、マッピングを補間する方法2500について図25を参照して以下に詳細に説明する。
次のステップ1908において、プロセッサ105は、以下の式(19)に従ってワープマップWcを生成するために先に除去した総近似アフィン変換を変更ワープマップWc'に再度適用する。
この時点で、ワープマップはバーコード300の全てのコーデルにおいて規定される。
[マップの補間]
変更ワープマップWc'に対して実行されるように及び変位マップdcに対して実行されるように、マッピングを補間する方法2500について図25を参照して以下に詳細に説明する。方法2500は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。
方法2500は、1つ以上の相関タイル(例えば、2103及び2104)の中心において規定されるマッピングmを使用する。マッピングmは、ステップ1306で判定される変更ワープマップWc'又はステップ1312で判定される変位マップdcである。マッピングmは、バーコード300の全てのコーデル(x,y)に対する座標(x,y)において規定されるように方法2500に従って補間される。
方法2500はステップ2501で開始し、ステップ2502において、プロセッサ105は、メモリ106内に低解像度マッピングmLを生成し、マッピングmLの値を初期化する。ステップ2502において、マッピングは、mが規定される場合に座標(x,y)において規定され、それらの点におけるmと同一の値を割り当てられる。マッピングmLは、相関タイルの中心のいくつかの点において規定される。相関タイルの中心は、タイルステップサイズPと等しい間隔を有するグリッドを形成する。
「グリッド点」と呼ばれる点の集合が規定されても良い。グリッド点は、相関タイルの中心である点を含み、相関タイルの中心でない他の点を更に含む。それらの他の点は、タイルの中心により形成される標準グリッドを拡張することにより取得されても良い。グリッド点は、座標が以下のような範囲にある拡張グリッドにおける点(x,y)として規定されても良い。
グリッド点が上記のように規定されると、グリッド点の座標は以下の式(22)に従って判定されても良い。
式中、X及びYは整数であり、以下の範囲内である。
各グリッド点(x,y)におけるマッピングmLの点の値は、以下に説明するステップ2503〜2507に従って判定されても良い。ステップ2052において、mが規定される場合にマッピングmLは規定された。ステップ2503において、方法2500は、マッピングmLの残りの値を判定するループ(即ち、ステップ2503〜2506により規定されるループ)を開始する。ステップ2503において、マッピングmLが全てのグリッド点(x,y)で規定されたとプロセッサ105が判定した場合、方法2500は次のステップ2507に継続する。規定されていない場合、方法2500はステップ2504に進む。ステップ2504において、プロセッサ105は、規定されたグリッド点の近傍の(即ち、隣接する)全ての未規定のグリッド点の座標を判定する。ステップ2505において、プロセッサ105は、ステップ2504で見つけられたグリッド点の各々に対する値を判定する。近傍のグリッド点の値は、近傍の規定されたグリッド点における低解像度マッピングmLの値の平均値に設定される。次のステップ2506において、ステップ2505で判定された値は、メモリ106内に構成された低解像度マッピングmLに格納される。方法2500はステップ2503に戻る。
上述のように、ステップ2503において、低解像度マッピングmLが全てのグリッド点(x,y)で規定されたとプロセッサ105が判定した場合、方法2500は次のステップ2507に継続する。ステップ2507において、低解像度マッピングmLは全てのグリッド点において判定され、マッピングmを補間するのに使用されても良い。ステップ2507において、マッピングmは、マッピングmL上で双3次補間を使用して全てのコーデルの座標(x,y)において補間される。
[ピークの検出]
次に、ステップ2205において実行されるように、サブ画素の精度で相関画像Txにおける最大ピークの場所(Δx,Δy)を判定する方法2600について図26を参照して説明する。相関画像Txにおける最大ピークの場所(Δx,Δy)は、相関される2つのタイルT1とT2との間のシフトを表す。方法2600は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。
方法2600は、相関画像Txを解析し、サブ画素の精度で相関画像Txにおける最大ピークの場所(Δx,Δy)を判定する。方法2600は、初期ピーク高さ閾値Hi及びピーク高さ比Hrを選択する。初期ピーク高さ閾値Hi及びピーク高さ比Hrパラメータは変化しても良い。初期ピーク高さ閾値Hiが増加すると、許容されると考えられるピーク数は減少する。ピーク高さ比Hrが減少すると、方法2600の実行速度は速くなり、誤ったピークが最大ピークとして選択される機会が増加する。初期ピーク高さ閾値Hi及びピーク高さ比Hrパラメータは、Hi=0.1及びHr=4に設定されても良い。
方法2600はステップ2602で開始し、プロセッサ105は、相関画像Txの全ての「ピーク」を判定する。「ピーク」は、座標(x0,y0)の相関画像Txの画素であり、その画素値Tx(x0,y0)は、画素の8つの隣接画素の値より大きい。これは、相関画像Txが周期的境界条件を使用するため、相関画像Txのエッジの画素が8つの隣接画素を有するものとして考えられても良いことを意味する。左側のエッジの画素は、右側のエッジの対応する画素に隣接するものと考えられても良く、同様に、上側のエッジの画素は、下側のエッジの対応する画素に隣接するものと考えられても良い。相関画像Txのピークは、メモリ106内に構成されるリストに格納されても良い。ピークは、ピーク画素値の降順でリストに格納されても良い。
ピークリスト中の各ピークは整数座標(x0,y0)を有する。その座標は、基準画像と粗配置画像との間のシフトに対する適切な第1の近似値を提供する。しかし、最大ピークの場所に対するサブ画素の正確な座標(Δx,Δy)を取得するために、相関画像Txは各ピークの近傍で補間される。方法2600は、ピークリスト中の各ピークを処理し、対応する画像Txを補間してサブ画素の精度でピークの場所を判定する。
ステップ2602において、変数Htは、初期ピーク高さ閾値Hiの初期値に初期化される。次のステップ2603において、プロセッサ105は、ピークリスト中の全てのピークにわたり繰り返す。ステップ2603の最初の実行時、ピークリスト中の第1のピークが選択される。ステップ2603の後続する実行時には、ピークリスト中の後続するピークが選択される。ステップ2604において、ステップ2603で選択されたピーク画素Tx(x0,y0)の値はプロセッサ105により解析され、ピーク高さ比Hrにより乗算されるピーク画素値Tx(x0,y0)が現在のピーク高さ閾値Htより大きいかを判定する。即ち、プロセッサ105は、以下の式が成立するかを判定する。
ピーク高さ比Hrにより乗算されるピーク画素値Tx(x0,y0)が現在のピーク高さ閾値Htより大きい場合、方法2600はステップ2605に進む。大きくない場合、方法2600は終了する。ステップ2605において、プロセッサ105は、相関画像Txのサブ領域hを選択する。サブ領域hは、Z=8である場合に2Z画素の幅及び高さを有する。サブ領域hは、ステップ2603で選択されたピークの座標(x0,y0)を中心とする。サブ領域hの値は、以下の式(26)に従って判定されても良い。
x及びyは範囲0〜2Z−1にあり、画像外の相関画像Txの値は、周期的境界条件を相関画像Txに再度適用することにより取得される。即ち、画像外の相関画像Txの値は、相関画像を周期的にすることにより取得される。ステップ2605において、選択されたサブ領域hは高速フーリエ変換(FFT)により変換され、変換画像h^を判定する。
変換画像h^は、次のステップ2606において使用される。ステップ2606において、プロセッサ105は、ピーク(x0,y0)の近傍の相関画像Txを補間し、ピークの場所の近似値(x1,y1)を判定する。相関画像Txは、25個の点において補間されてもよく、x座標及びy座標は以下のように判定されても良い。
ステップ2606において実行される補間はフーリエ補間であり、以下の式(27)を使用して実行される。
式中、βは以下のように規定される。
ピークの場所に対する更に適切な近似値は、補間された値Tx(x1,y1)が最大である(x1,y1)の値を使用して見つけられても良い。
次のステップ2607において、プロセッサ105は、選択されたッピークの場所(x2,y2)のサブ画素の正確な推定値を判定する。補間された相関画像Txは、(x1,y1)に近接する領域において双放物線関数fにより近似されても良い。双放物線関数fは、以下の式(29)に従う形式を有する。
選択されたピークの場所のサブ画素の正確な推定値を判定するために、x及びyがx1及びy1にそれぞれ近い場合にf(x−x1,y−y1)を補間画像Tx(x,y)と略等しくする係数(a0,a1,…,a5)が判定されても良い。同様に、x及びyが小さい場合、関数f(x,y)はTx(x+x1,y+y1)に近似されても良い。以下の式(30)に従ってEを最小限にするために、係数(a0,a1,…,a5)は以下の式(31)に従って判定されても良い。
式中、xh=x1−x0+z、yh=y1−y0+zであり、vk,nは不変ベクトルである。不変ベクトルvk,nは、方法3100に従って判定されても良い。次に、方法3100について図31を参照して説明する。
ステップ2607において実行されるように、不変ベクトルvk,nを判定する方法3100は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。
方法3100はステップ3101で開始し、次のステップ3102において、プロセッサ105は、以下の式(32)に従って規定される行列Vを判定する。
行列Vの各要素は、x及びyの多項式の積分であり、解析的に判定されても良い。次のステップ3103において、プロセッサ105は、以下の式(33)に従って不変ベクトルvk,nの値を判定する。
不変ベクトルvk,nの各要素は、x及びyの多項式を乗算されるx及びyの多項式の積分であり、解析的に値を求められても良い。方法3100は、ステップ3103以降で判定を下す。
サブ画素の正確なピークの場所(x2,y2)は、双放物線関数fの最大値の位置に設定されても良い。サブ画素の正確なピークの場所(x2,y2)は、以下の式(34)に従って判定されても良い。
更に、補間された相関画像Txにおける選択されたピークの高さHは、以下の式(35)に従ってステップ2607において判定される。
方法2600は次のステップ2608に継続し、プロセッサ105は、ステップ2607で判定した場所(x2,y2)の選択されたピークの高さHが方法2600の現在の実行において判定される最大ピークであるかを判定する。場所(x2,y2)の選択されたピークの高さHが現在のピーク高さ閾値Htより大きい場合、場所(x2,y2)は、方法2600の現在の実行において見つけられる最大ピークの場所を表す。この例において、現在のピーク高さ閾値Htは、選択されたピークの新しい値Hを割り当てられ、相関画像Txにおける最大ピークの場所を表すサブ画素の正確な座標(Δx,Δy)は、ステップ2607で判定された場所(x2,y2)の値を割り当てられる。或いは、選択されたピークの高さHが現在のピーク高さ閾値Htより大きくない場合、最大ピークの場所は、ステップ2603〜2608により規定されるループの現在の繰返しにおいて見つけられなかったことになる。
方法2600は、次のステップ2609に継続する。ステップ2609において、ピークリスト中にピークが更に存在するとプロセッサ105が判定した場合、方法2600はステップ2603に戻る。存在しない場合、方法2600は終了する。
方法2600の実行中、最大ピークが見つけられない場合がある。例えば、ステップ2608の全ての実行時に場所(x2,y2)の選択されたピークの高さHが現在のピーク高さ閾値Htより大きくない場合、サブ画素の正確な座標(Δx,Δy)はいかなる所定の値にも設定されない。しかし、ステップ2608が最大ピークを見つけた場合、サブ画素の正確な座標(Δx,Δy)の値は最大ピークの場所を表す。
[バーコードからのデータの抽出]
次に、ステップ607において実行されるように、バーコード300からデータを抽出し、抽出したデータを復号化する方法2700について図27を参照して説明する。方法2700は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。方法2700は、埋め込みバーコード202のデータコーデル(例えば、303)からデータを抽出する。
方法2700はステップ2701で開始し、プロセッサ105は符号化データのブロックにわたりステップ2702以降を繰り返す。ステップ2702の最初の実行時、データの第1のブロックが処理するために選択される。ステップ2702の後続する実行時には、後続するブロックが選択される。上述のように、繰り返されるブロック数はバーコード300に対して判定される寸法に従ってバーコード300に格納されるブロックの最大数と等しい。次のステップ2703において、プロセッサ105は現在のブロックに対する符号化データのビット毎に現在のブロックに対するデータが格納されるコーデルの中心においてバーコード300の走査済画像から画素値を判定する。ステップ2703において実行されるように、バーコードの走査済画像から画素値を判定する方法2900について図29を参照して以下に詳細に説明する。
方法2900は、ハードディスクドライブ110に常駐し、実行時にプロセッサ105により制御されるソフトウェアとして実現されても良い。方法2900はステップ2903で開始し、プロセッサ105はマッピングψを使用してビットが格納されるバーコード300のコーデルを判定する。コーデルの座標は、(x,y)で表されても良い。
方法2900は次のステップ2905に継続し、プロセッサ105はステップ2903で判定されたワープマップを解析して、バーコード300の走査済画像のそのコーデルの中心の座標Wc(x,y)を判定する。次のステップ2907において、プロセッサ105は、座標Wc(x,y)において走査済画像を補間し、現在のデータビットに対するRGB画素値s(Wc(x,y))を判定する。
方法2700は次のステップ2704に継続し、プロセッサ105はステップ2703で判定された画素値を使用して、上記式(43)又は(51)に従って符号化ブロック中のNビットに対する見込み値λを判定する。次のステップ2705において、プロセッサ105は、ステップ2704で判定されたN個の見込み値λを使用して誤り訂正復号化を実行し、K個の訂正ビットを判定する。方法2700は次のステップ2706に継続し、プロセッサ105はK個の訂正ビットをメモリ106に格納する。次のステップ2707において、処理されるデータのブロックが更に存在するとプロセッサ105が判定した場合、方法2700はステップ2702に戻る。存在しない場合、方法2700は終了する。
方法1600に従ってバーコードに符号化されたバイナリデータがデータを暗号化することにより前処理される場合、データはステップ607における方法2700の実行後に暗号化されても良い。
[数値のベクトルの比較]
方法600のステップ610において実行されるように、保護文書の信憑性を判定するために2つの数値のベクトルを比較する方法について詳細に説明する。
バーコードから抽出されるデータが非直列化されるステップ608において、1つの数値のベクトルが生成される。このベクトルはrefVで示されても良い。第2の数値のベクトルは、文書基材領域の画像を特徴付けることによりステップ609において生成される。このベクトルはsubVで示されても良い。
2つのベクトルrefV及びsubVを比較するために、2つのベクトルの正規化ドット積が取得される。ベクトル間の正規化ドット積は、1つのベクトルと別のベクトルとがどの程度密接に関連付けられているかを示す。1に近い正規化ドット積は2つのベクトル間の強い関係を示し、ゼロ(0)に近いか又はゼロ(0)未満の正規化ドット積は弱い関係を示す。refV及びsubVの正規化ドット積は、以下の式により規定される。
信憑性を判定するために、正規化ドット積の結果は閾値Tauthと比較される。結果がTauthより大きい場合、保護文書は信頼できるものとして判定され、結果がTauth以下の場合、保護文書は偽造文書であると判定される。
本実施形態において、Tauth=0.5であるが、Tauthの他の値が偽肯定認証結果及び偽否定偽造結果の解析から判定されても良い。機械学習方法及び偽肯定結果と偽否定結果との間の必要な比率を指定することによりTauthを調整する方法を含む適切なTauthを判定する任意の方法が使用されても良いが、それらに限定されない。
[第2の実施形態]
本発明の第2の実施形態において、第1の実施形態のバーコードに類似するバーコードが文書に埋め込まれ、保護文書を形成する。本実施形態において、印刷解像度Rpがバーコードコーデル解像度Rcより高く、バーコードコーデル解像度の整数倍であることが必要条件である。
第1の実施形態において、バーコードは文書の黄色チャネルに埋め込まれる。バーコードが文書基材領域に印刷されるが、黄色のインクは文書基材領域の濃淡強度画像に殆ど影響を与えない。従って、文書基材領域は、黄色のバーコードがあるにも関わらず依然として正確に特徴付けられるだろう。
第2の実施形態において、バーコードデータコーデル及び配置コーデルは、黒色のバーコードがあるにも関わらず文書基材領域の重要な部分が可視となることを可能にし、文書基材領域の特徴付けを可能にする配列で文書に埋め込まれる。
本実施形態において、バーコードを埋め込み、保護文書を認証し、粗配置画像を特徴付ける別の方法が必要とされる。それらの別の方法について以下に詳細に説明する。
[文書へのバーコードの埋め込み]
方法1300のステップ1307において実行されるように、文書にバーコードを埋め込む別の方法について説明する。
埋め込まれるバーコードは、文書の印刷解像度(Rp)より低くても良いコーデル解像度(Rc)を有する。従って、倍率SFは以下の式から計算されても良い。
SF=Rp/Rc
コーデル解像度がそのように制限されるため、倍率SFは常に整数となる。
文書のバーコード領域は、埋め込みコーデルの2次元グリッドに分割される。埋め込みコーデルは、SF×SFの画素の正方形により形成される。文書のバーコード領域の各埋め込みコーデルは、バーコード中のコーデルを参照するために使用される座標系に類似する埋め込みコーデル座標系により参照されても良い。従って、座標の対(x, y)は埋め込みコーデルを指定する。ここで、xは埋め込みコーデルの列を参照し、yは埋め込みコーデルの行を参照する。従って、各埋め込みコーデルは同一の座標(x,y)の対応するバーコードコーデルを有する。
バーコードコーデルが「オン」に設定される場合、対応する埋め込みコーデルの画素の構成は「黒色」に設定される。SF=4である図30に示すように、「黒色」に設定された埋め込みコーデルの画素3001は埋め込みコーデル3000を形成する画素の部分集合である。文書が印刷及び走査される時に文書基材が依然として結像されても良いように、埋め込みバーコードを形成する3002等のいくつかの画素は未設定のままである。図30の例が「黒色」に設定された埋め込み画素の画素の正方形グループを示すが、「黒色」に設定される画素の任意の他の構成が使用されても良い。
[保護文書の認証]
保護文書を認証する別の方法3100について、図31を参照して説明する。
方法3100は、初期ステップ3101で開始する。次のステップ3102は、保護文書を走査することにより走査済画像を生成する。次のステップ3103は、濃淡フィルタを走査済画像に適用し、濃淡チャネル強度画像を生成する。次のステップ3104は、濃淡チャネル強度画像中の螺旋を検出し、粗配置アフィン変換を計算する。ステップ3104において、上述のような方法1200が実行される。次のステップ3105は、バーコードの粗配置境界に符号化されたソルトデータを抽出する。ステップ3105において、上述のような方法1800が実行される。次のステップ3106は、精細配置ワープマップを判定する。ステップ3106において、上述のような方法1900が実行される。次のステップ3107は、バーコードからデータを抽出してバイナリデータを生成する。ステップ3107において、上述のような方法2700が実行される。次のステップ3108は、ステップ3107において生成されるバイナリデータを非直列化して数値のベクトルを形成する。バイナリデータは、バイナリデータの最初のNbitsをベクトルの第1の要素に割り当てることにより非直列化される。バイナリデータの次のNbitsは、ベクトルの次の要素に割り当てられる。これは、ベクトルのNv個の要素全てが値を割り当てられるまで繰り返される。次のステップ3109は、ステップ3106中の粗配置画像を特徴付けることにより第2の数値のベクトルを形成する。ステップ3109において、以下に説明するような方法3200が実行される。次のステップ3110は、3108及び3109において生成された2つのベクトルを比較し、保護文書の信憑性を判定する。ステップ610において実行される方法は、ステップ3110において使用される。方法3100は、終了ステップ3111において終了する。
[粗配置画像の特徴付け]
本実施形態において、バーコード300は黒色のインクで印刷され、文書基材領域を遮蔽する。文書基材領域の画像中の黒色画素値は、遮蔽するバーコードのために欠落する画像データを表す。主成分分析(PCA)が文書基材領域の画像に直接適用される場合、画像の特徴付けは不正確となる。従って、本実施形態において、欠落する画像データを表す画像中の黒色(又は十分に暗い)画素値は、PCA特徴付けの前にまず平均値を埋め込まれる。以下に説明する方法の代わりに、欠落する画像データを埋め込む別の方法が使用されても良い。
ステップ3109において実行されるように、粗配置画像を特徴付ける別の方法3200について説明する。
方法3200は、初期ステップ3201で開始する。次のステップ3202において、ステップ3106で作成された粗配置画像は濃淡強度画像に変換される。次のステップ3203において、濃淡強度画像の閾値が決定され、暗い領域と明るい領域とを区別する2値画像を形成する。2値画像は、暗い領域が1に設定された画素で表され且つ明るい領域がゼロ(0)に設定された画素により表される濃淡強度画像と同一の寸法を有する。濃淡強度画像の明るい領域は文書基材の表現であり、暗い領域は印刷された黒色ドットの表現である。次のステップ3204において、1に設定された画素の領域が拡張されるように、当該技術において周知のバイナリ形態学的演算が2値画像に対して実行される。次のステップ3205において、ゼロ(0)に設定された2値画像の対応する画素を有する濃淡強度画像の画素の平均値が計算される。次のステップ3206において、1に設定された2値画像の対応する画素を有する濃淡強度画像の各画素は、ステップ3205で計算された平均値に設定される。結果として得られる画像は、調整濃淡強度画像と呼ばれても良い。次のステップにおいて、主成分分析(PCA)は、ステップ3206で生成された調整濃淡強度画像に対して実行され、Nv個の数値のベクトルVを生成する。PCAは、画像の最上位成分により画像を特徴付ける周知の方法である。
本実施形態において、調整濃淡強度画像はNv個の直交基底ベクトル上に投影される。基底ベクトルの集合は、文書基材領域画像の大きなデータセットの最も重要な成分を見つけることにより事前に選択されても良い。ベクトルVは、調整濃淡強度画像がNv個の基底ベクトルの各々に投影される時に残差を見つけることにより形成される。数値のベクトルVの各要素は、サイズがNbitsの浮動小数点数として格納されても良い。
従って、用紙基材走査を先の(周知の)画像を含むデータと一致させる1つの方法は、相関を実行する前に周囲の画素の平均値で暗い印刷バーコードを埋め込むことである。基材用紙の特定の領域における用紙の署名を隠す印刷ドットの問題に対処する他の方法は、それらの領域を無視することである。これは、以下により行われる。
・印刷ドットを含む走査済画素を検出する。これは、画素の暗さを単に測定し、それが閾値を超える場合、印刷領域としてその画素に印をつけることにより行われても良い。
・それらの画素をスキップする相関アルゴリズムを構成する。ここで、基材の画像は後続する印刷ドットにより変更されている。
・スキップされたドットの比率により相関の結果を正規化する。
別の実施形態は、相関の代わりに「類似性比較」に対して平均二乗誤差計測値を使用しても良い。
[第3の実施形態]
第3の実施形態において、保護文書を作成及び認証する別の方法が採用される。本実施形態において、第1の実施形態と同様のバーコードが使用される。しかし、第1の実施形態では、文書基材領域が容易に見つけられるように螺旋を文書に埋め込んだが、本実施形態は、事前に判定されるか又はユーザにより指定される文書基材領域を使用する。その後、バーコードは同一の領域に埋め込まれ且つ印刷される。
理想的には、走査済画像の文書基材領域はバーコード領域と同一の領域であるため、文書基材領域はバーコード螺旋を検出することにより見つけられても良い。しかし、印刷及び走査処理のため、文書基材領域は僅かに位置がずれる可能性がある。従って、その位置ずれを補償するために、以下に説明するようなタイル比較ステップが採用される。
[保護文書の作成及び認証]
本実施形態に対する保護文書を作成及び認証する別の方法について、図33A及び図34を参照して以下に説明する。
保護文書を作成する方法3300Aは、初期ステップ3301Aで開始する。次のステップ3302Aは、埋め込み保護特徴を含まない文書を印刷する。次のステップ3303Aは、ステップ3302Aで印刷された文書を走査し、文書の走査済画像を作成する。次のステップ3304Aは、数値のベクトルを含み且つ事前に判定されたXoffset及びYoffsetにより指定される文書基材領域を特徴付ける。本実施形態において、以下に説明するような走査済画像の文書基材領域を特徴付ける方法が採用される。次のステップ3305Aは、文書基材領域画像を特徴付ける数値のベクトルをバーコードに符号化し、印刷するためにそのバーコードを空白文書に埋め込む。ステップ3305Aにおいて実行されるようなバーコードを符号化し、埋め込む方法について以下に説明する。次のステップ3306Aは、埋め込みバーコードを含む空白文書をステップ3302で印刷された文書上に印刷し、保護文書を形成する。方法3300Aは、終了ステップ3307Aにおいて終了する。
保護文書を認証する方法3400は、初期ステップ3401で開始する。次のステップ3402は、保護文書を走査することにより走査済画像を生成する。次のステップ3403は、方法600のステップ603で使用される方法に従って黄色フィルタを走査済画像に適用し、黄色チャネル強度画像を生成する。次のステップ3404は、方法600のステップ604で使用される方法に従って黄色チャネル強度画像の螺旋を検出し、粗配置アフィン変換を計算する。次のステップ3405は、方法600のステップ605で使用される方法に従ってバーコードの粗配置境界に符号化されるソルトデータを抽出する。次のステップ3406は、方法600のステップ606で使用される方法に従って精細配置ワープマップを判定する。次のステップ3407は、方法600のステップ607で使用される方法に従って、バーコードからデータを抽出してバイナリデータを生成する。次のステップ3408は、ステップ3407で生成されたバイナリデータを非直列化し、数値の基準ベクトルを形成する。バイナリデータは、バイナリデータの最初のNbitsをベクトルの第1の要素に割り当てることにより非直列化される。バイナリデータの次のNbitsは、ベクトルの次の要素に割り当てられる。これは、ベクトルのNv個の要素全てに値が割り当てられるまで繰り返される。次のステップ3409はタイル比較を実行し、タイル比較において、画像のタイルは、特徴付けられ且つステップ3408で形成された数値の基準ベクトルと比較される。タイル比較を実行する方法については、以下に詳細に説明する。その後、方法3400は終了ステップ3410において終了する。
[文書基材領域の特徴付け]
第1の実施形態及び第2の実施形態において、文書基材領域の画像は、粗配置アフィン変換により粗配置画像を作成することにより見つけられても良い。しかし、本実施形態において、文書基材領域は事前に判定されるか又はユーザにより指定される。
走査済画像の文書基材領域を特徴付けるために、領域はまず因数Rp/Rcによりダウンサンプルされる。その結果、文書基材領域のバーコードコーデル解像度の画像が得られる。
ダウンサンプルされた画像は、濃淡強度画像に変換される。
主成分分析(PCA)は、濃淡強度画像に対して実行され、Nv個の数値のベクトルVを生成する。PCAは、画像の最上位成分により画像を特徴付ける周知の方法である。
濃淡強度画像は、Nv個の直交基底ベクトル上に投影される。基底ベクトルの集合は、文書基材領域画像の大きなデータセットの最も重要な成分を見つけることにより事前に選択されても良い。ベクトルVは、濃淡強度画像がNv個の基底ベクトルの各々に投影される時に残差を見つけることにより形成される。
数値のベクトルVの各要素は、サイズがNbitsの浮動小数点数として格納されても良い。
[文書基材領域画像の符号化]
先の実施形態において、バーコードの螺旋は、バーコードの残りの部分(例えば、バーコードデータコーデル等)より前の段階で埋め込まれて印刷される。しかし、本実施形態においては、バーコードの全てが生成及び印刷される。
従って、ステップ3305Aにおいて実行されるように、文書基材領域画像をバーコードに符号化する別の方法3300Bについて図33Bを参照して説明する。
方法3300Bは、初期ステップ3301Bで開始する。次のステップ3302Bは、新しいバーコード及び空白文書を作成する。作成された新しいバーコードは、幅Wbb及び高さHbbを有する。空白文書は、解像度Rpのカラー画像である。最初、空白文書は空である。次のステップ3303Bは、方法700のステップ702で使用される方法に従ってバーコードに螺旋を作成する。次のステップ3304Bは、方法1300Bのステップ1303で使用される方法に従ってバーコードに粗配置境界を作成する。次のステップ3305Bは、文書基材領域の画像を特徴付ける数値のベクトルVを直列化する。ステップ3306Bにおいて、結果として得られるバイナリデータは、方法1300のステップ1305で使用される方法に従ってバーコードに符号化及び構成される。次のステップ3307Bは、方法1300のステップ1306で使用される方法に従ってバーコード内部302に配置パターンを作成する。次のステップ3308Bは、印刷の準備として、方法1300のステップ1307で使用される方法に従ってXoffset及びYoffsetにより指定されるバーコード領域の空白文書にバーコードを埋め込む。方法3300Bは、終了ステップ3309Bにおいて終了する。
[タイル比較]
本実施形態において、保護文書の信憑性はタイル比較方法により判定される。
タイル比較において、バーコード領域の近傍の候補文書基材領域が特徴付けられ、結果として得られる数値のベクトルは3407で形成された数値の基準ベクトルと比較される。
タイル比較の方法は、タイル幅Wt、タイル高さHt、ステップサイズS及びステップ数Nsの設定パラメータを含む。タイル幅Wt及びタイル高さHtは、バーコードの幅Wbb及び高さHbbと等しい。ステップサイズS及びステップ数Nsは変化しても良い。ステップサイズSの値が大きいほど、保護文書を偽造文書と誤って分類する危険性が増す。印刷処理の結果大きな位置ずれがある場合、Nsの値はより大きい必要がある。しかし、Nsの値が大きいほど計算時間は長くなる。
ステップ3409において実行されるように、タイル比較を実行する方法3500について図35を参照して詳細に説明する。
方法3500は、初期ステップ3501で開始する。次のステップ3502は、文書基材領域より大きく、文書基材領域を中心に配置される走査済画像から粗配置アフィン変換を使用して探索画像を作成する。探索画像の幅WsearchはWt+(Ns×S)に設定されても良く、同様に、探索画像の高さHsearchはHt+(Ns×S)に設定されても良い。本実施形態において、Ns=40、S=1である。探索画像は、周囲に境界を有するバーコード領域の粗配置画像となる。これを図36に示す。図36において、探索画像3600により表される走査済画像中の領域は、バーコード領域3602及び周囲の境界3601を含む。
粗配置アフィン変換は、探索画像の座標を走査済画像の座標にマップするために使用されても良い。しかし、探索画像3600により表される走査済画像の領域がバーコード領域3602より大きいため、探索画像の座標は、走査済画像の座標にマップするために粗配置アフィン変換を使用する前に事前に変換される必要がある。探索画像の各画素の座標(xsearch,ysearch)は、以下の式により粗配置アフィン変換で使用するのに適切な座標(x,y)に事前に変換される。
x=(xsearch−ceil((Ns×S)/2))
y=(ysearch−ceil((Ns×S)/2))
探索画像は、特徴付け及び比較の前にオーバラップするタイルに分割される。図37は、タイルの選択を示し、タイル幅Wt及び高さHt、並びにステップサイズSを示す図である。タイル3701は、探索画像3700中に示され、幅Wt3702及び高さHt3703を有する。タイル3701は、3704で示されるように水平方向にSずつ増分する。
次のステップ3503は、上述したタイルにわたり繰り返される。3503の最初の実行時、左上角のタイルが選択される。ステップ3503の後続する実行時には、タイルは、タイルの1番上の行から開始し、タイルの最低部の行で終了するタイルの各行において左から右に向かって選択される。
次のステップ3504は、方法1100のステップ1105で使用された方法と同様の方法に従ってタイル画像を特徴付け、そのタイルに対する数値のベクトルsubVを生成する。
次のステップ3505は、ステップ3504で見つけられた数値のベクトルsubVをステップ3408で見つけられた数値の基準ベクトルと比較する。ステップ3408で見つけられた数値の基準ベクトルは、refVで示されても良い。2つのベクトルrefV及びsubVを比較するために、2つのベクトルの正規化ドット積が取得される。ベクトル間の正規化ドット積は、1つのベクトルと別のベクトルとがどの程度密接に関連付けられているかを示す。1に近いドット積は2つのベクトル間の強い関係を示し、ゼロ(0)に近いか又はゼロ(0)未満のドット積は弱い関係を示す。refV及びsubVの正規化ドット積は、以下の式により規定される。
次のステップ3506において、ステップ3505で計算された正規化ドット積の結果が閾値Tauthと比較される。結果がTauthより大きい場合、保護文書は信頼できるものとして判定され、方法3500は終了ステップ3508において終了する。
正規化ドット積の結果がTauthより小さい場合、次のステップ3507は、処理されるタイルが更に存在するかを判定する。タイルが存在しない場合、保護文書は偽造文書であると推定され、方法3500は終了ステップ3508において終了する。タイルが存在する場合、ステップ3503に戻る。
第1の実施形態及び第2の実施形態と同様に、Tauth=0.5であるが、Tauthの他の値が偽肯定認証結果及び偽否定偽造結果の解析から判定されても良い。機械学習方法及び偽肯定結果と偽否定結果との間の必要な比率を指定することによりTauthを調整する方法を含む適切なTauthを判定する任意の方法が使用されても良いが、それらに限定されない。
第4の実施形態
第4の実施形態において、保護文書を作成及び認証する別の方法が採用される。本実施形態において、文書基材領域の赤色チャネル強度画像は、用紙を走査することにより取得される。赤色チャネル強度画像は処理され、黄色のインクで用紙上に再度印刷される。赤色チャネルは、黄色のインクの重ね刷りの影響を受けないため使用される。上記実施形態と異なり、バーコードは必要とされず、螺旋は配置に対して必要とされない。
文書は、走査し、黄色チャネル強度画像(インクパターンにより形成される)及び赤色チャネル強度画像(文書基材により形成され、インクパターンにより影響を受けない)に対して位相相関を実行することにより認証される。所定の閾値を上回る相関結果に正のピークが存在することにより、用紙は認証され、更に黄色で印刷された画像と文書基材領域との空間オフセットが示される。
[保護文書の作成及び認証]
本実施形態に対する保護文書を作成及び認証する別の方法について、図43を参照して以下に説明する。
保護文書を作成する方法4301は、初期ステップ4302で開始する。
次のステップ4303は、埋め込み保護特徴を含まない文書を印刷する。
次のステップ4304は、ステップ4303で印刷した文書を走査し、文書の走査済画像を作成する。
次のステップ4305は、事前に判定されたXoffset、Yoffset、Xsize及びYsizeにより指定されるステップ4304で取得された走査の赤色チャネルから文書基材領域画像を抽出し、文書基材領域画像を処理して文書基材領域上への次の印刷のために濃淡チャネル強度画像を作成する。本実施形態においては、以下に説明するような文書基材領域画像を処理するステップが採用される。
次のステップ4306は、ステップ4305で作成された濃淡チャネル強度画像を含む文書を黄色のインクで用紙の所定の場所に印刷する。所定の場所は、ステップ4305で指定された文書基材領域であるのが好ましいが、用紙の任意の他の場所であっても良い。
方法4301は、終了ステップ4307において終了する。
保護文書を認証する方法4401は、初期ステップ4402で開始する。
次のステップ4403は、保護文書を走査して文書の走査済画像を作成する。
次のステップ4404は、方法4301のステップ4306により印刷された黄色チャネル強度画像を抽出する。走査済画像は、黄色チャネル強度画像が印刷された所定の位置及びサイズにトリミングされる。黄色フィルタは画像に適用され、黄色チャネル強度画像を取得する。これは、走査の青色チャネルを反転させ且つ赤色チャネル及び緑色チャネルを廃棄することにより実行される。
次のステップ4405は、黄色強度画像をカーネルとして使用して、ステップ4403で取得される走査の赤色チャネル(文書基材強度画像)に対して位相相関演算を実行する。
次のステップ4406は、ステップ4405の相関結果に対してピーク検出演算を実行する。双方の画像に文書基材パターンが存在するため、負のピークが結果に存在する。しかし、所定の閾値を上回る正のピークが存在することにより、黄色インク画像が文書基材領域と互いに関連することが示されるため、用紙は信頼できる。正のピークが存在しないことにより、用紙が信頼できないことが示される。
方法4401は、終了ステップ4407において終了する。
[コントラストを増加するための強度画像の処理]
プリンタのフルダイナミックレンジを使用するために、文書基材領域の濃淡強度画像は印刷前に処理される。濃淡強度画像画素値の標準偏差及び平均値が取得される。画素値は平均値の反転によりシフトされ、平均値はゼロになる。以下の値を画像画素値に乗算する。
R/(5S)
式中、Rは印刷可能な画素値の範囲(例えば、8ビットダイナミックレンジに対しては256)であり、Sは画素値の標準偏差である。画素値は、平均値が許容される画素値の中心値となるように(R/2)だけシフトされる。印刷可能な値の範囲外の画素値は、最大値又は最小値にクリッピングされる。
[他の配列]
上述した説明においては、開示される符号化/復号化方法のいくつかの実施形態のみを説明し、方法の趣旨の範囲から逸脱せずにそれら実施形態に対して変形や変更が行われても良い。説明した実施形態は例示であり、限定するものではない。
例えば説明した第1の実施形態及び第3の実施形態において、バーコードは文書の黄色チャネルに埋め込まれ、黄色のインクで印刷されて保護文書を形成する。その後、黄色フィルタが適用され、バーコードを回復及び復号化する。それらの実施形態において、黄色は、画像が濃淡強度画像に変換される時に殆ど影響を与えないため選択される。従って、特徴付けステップにおいて、黄色のバーコードは結果として得られる数値のベクトルに殆ど影響を与えない。
文書基材領域の組織変化がカラーバーコードの下で結像されても良いように、別の色のバーコードが使用されても良い。
先の節で説明したバーコードは、配置特徴を含むコーデルの密グリッドである。しかし、文書基材領域の画像の特性を符号化するために任意のバーコードが代わりに使用されても良い。例えば、図38〜図42に示すようなQRコード、DataGlyphs、DataMatrixコード、線形バーコード及び単純なドットコードが更に使用されても良い。
先の節で説明した実施形態において、主成分分析(PCA)は、文書基材領域の濃淡強度画像を特徴付けるために使用される。文書基材領域の画像の特性がバーコード形式に符号化されても良いように、PCAは高圧縮率を与える。
他の特徴付け又は圧縮方法がPCAの代わりに採用されても良い。例えばJPEG圧縮は、文書基材領域の画像の格納サイズを低減するために使用されても良い。また、十分なデータ記憶容量を有するバーコードが使用される場合、画像は圧縮又は特徴付けをせずにバーコードに符号化されても良い。
更に、先の節で説明した実施形態において、バイナリデータをバーコードに符号化及び配置する前にRSA暗号化が使用されても良い。しかし、別の公開/秘密鍵暗号化技術がRSA暗号化の代わりに使用されても良い。
先の実施形態において保護対策が説明されたが、目的を持った偽造者が依然として保護文書をコピーできる可能性がある。保護対策を回避する方法は、元の文書基材領域の画像を取得し、滑らかな漂白白色の第2の文書基材上にその画像を印刷することである。文書基材領域の印刷画像は、走査される時に顕著になるだろう。従って、認証時、文書基材領域の印刷画像は特徴付けられ、バーコードに符号化された特性と一致する。
しかし、文書基材領域の印刷画像は元の文書基材より暗くなる。従って、上記方法で作成された偽造文書は、元の文書基材領域と基準強度値との間の相対的な強度をバーコードに更に符号化することにより失敗する可能性がある。
例えば、元の文書基材の平均強度値は、元の文書基材領域の画像の強度値を平均することにより取得されても良い。基準強度値は、文書の走査済画像中の印刷された黒色インク領域の強度値を平均することにより見つけられても良い。別の基準強度値は、文書の走査済画像中の空領域の強度値を平均することにより見つけられても良い。文書基材領域の強度値に依存しない任意の強度値は、基準強度値として使用されても良い。元の基材の平均強度値と基準強度値との差分は、バーコードに符号化されても良い。従って、バーコードは、文書基材領域の画像の少なくとも1つの特性と関連付けられるデータを含むこととは別に、元の基材の平均強度値と基準強度値との差分を示す符号化データを更に含む。
保護文書が走査及び認証される場合、文書基材の平均強度値及び基準強度値は、保護文書の走査済画像から回復される。回復された強度値は区別され、バーコードに符号化された値と比較される。回復された差分値が符号化差分値に十分に近い場合、文書は信頼できると考えられても良い。十分に近くない場合、文書は偽造文書と考えられても良い。
あるいは、文書は「不審」であると考えられてもよく、ユーザは文書を更に詳細に検査するように通知される。