(57)【要約】【課題】大きいイメージコレクション内の類似するイメージを発見する。【解決手段】本発明の一態様の方法は、イメージコレクション内のイメージごとに安定したキーポイントを識別するステップと、前記キーポイントの局所グループから指紋情報を計算するステップと、前記計算の結果の指紋情報をコンパクトな指紋データベースに格納するステップと、前記コンパクトな指紋データベース内の入力指紋ごとに、候補指紋の組合せの列を生成するステップと、リアルタイムイメージクエリを実行し、前記コレクション内の一致するターゲットイメージまたはターゲットイメージのセットを判定するステップと、前記判定ステップに基づいて少なくとも１つのターゲットイメージを取り出すステップと、前記取り出された少なくとも１つのターゲットイメージを出力するステップと、を含む。【選択図】図１４
2010009606.tif 000002
【特許請求の範囲】
【請求項１】
イメージコレクションの内容を前処理して、前記イメージコレクション内のイメージごとに安定した再現可能キーポイントを識別するステップと、
前記キーポイントの局所グループから指紋情報を計算するステップと、
前記計算の結果の指紋情報をコンパクトな指紋データベースに格納するステップと、
前記コンパクトな指紋データベース内の入力指紋ごとに、候補指紋の組合せの列を生成するステップと、
指紋データベースに入力された指紋ごとの候補指紋の組合せの前記列を、ファンツリーおよびハッシュテーブルの少なくとも一方と、対応する指紋データ構造と、に格納するステップと、
キーポイントを識別することと、クエリイメージから指紋を計算することと、クエリ指紋を既存のファンツリー指紋データと照合することとによってリアルタイムイメージクエリを実行し、前記コレクション内の一致するターゲットイメージまたはターゲットイメージのセットを判定するステップと、
前記判定ステップに基づいて少なくとも１つのターゲットイメージを取り出すステップと、
前記取り出された少なくとも１つのターゲットイメージの表示、印刷、格納、または送信のうちの少なくとも１つを行うステップと、
を含み、
前記指紋情報の前記計算は、アンカキーポイントと呼ばれるイメージ内の最も強いキーポイントのサブグループと、加えて複数の局所的な非アンカキーポイントと、の組合せに基づく、
ことを特徴とする、イメージデータを格納し、インデクシングし、検索し、および／または取り出すイメージ管理方法。
【請求項２】
請求項１に記載の方法であって、
前記クエリ指紋の前記既存のファンツリー指紋データとの前記照合は、
クエリ指紋ごとに、オリジナルの指紋のイメージコレクションのサブセットを含む特定のファンツリー葉ノードリストにつながるファンツリーアドレスを計算することと、
その後、前記サブセットリストからの各オリジナル指紋を順に現在のクエリ指紋と比較することと、
前記クエリ指紋が前記取り出された指紋レコードのうちの１つと一致するたびに、そのイメージの一致する指紋の個数のカウントを増分することと、
指紋スコア分析モジュールによって、各イメージの一致する指紋の結果の累算されたカウントを調べることと、
最高スコア分析に基づいて、前記コレクション内の最もよく一致するイメージまたはイメージのセットを判定することと、
を含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、
前記アンカキーポイントは、前記クエリイメージおよびターゲットイメージ内で見つかる確率が前記非アンカキーポイントより高いことを特徴とする方法。
【請求項４】
クエリ文書のクエリイメージ内のキーポイントおよび潜在的ターゲット文書のコレクションの潜在的ターゲット文書イメージ内のキーポイントを含む、イメージ内のキーポイントを識別するように構成された識別モジュールと、
前記キーポイントから指紋情報を生成するように構成された指紋生成モジュールであって、前記指紋情報が、少なくとも１つのアンカキーポイントおよび所定の個数の非アンカキーポイントを含む、指紋生成モジュールと、
前記クエリイメージの前記指紋情報を、潜在的ターゲット文書の前記コレクション内の前記潜在的ターゲット文書イメージの指紋情報と比較するように構成された比較モジュールと、
前記クエリイメージの前記指紋情報と前記潜在的ターゲット文書イメージの前記指紋情報との間の最良一致を判定するように構成された照合モジュールと、
前記照合モジュールにおける判定に基づいて少なくとも１つのターゲット文書イメージを取り出すように構成された取出しモジュールと、
前記取り出された少なくとも１つのターゲット文書イメージの表示、印刷、格納または送信を行う、電子ディスプレイ、プリンタ、メモリストレージ、またはコンピュータネットワークのうちの少なくとも１つと、
を含むことを特徴とする、イメージデータの格納、インデクシング、検索、および／または取出しを行う、コンピュータ動作可能システム内のイメージ管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ターゲットピクチャイメージの不完全なコピーであるクエリ（query）ピクチャイメージのイメージ（画像）に基づいて大きいイメージコレクション内のターゲットピクチャまたはターゲットピクチャセットのイメージを見つけるソフトウェアプログラムおよびアルゴリズムを組み込んだコンピュータ動作可能なシステムおよび方法を対象とする。
【背景技術】
【０００２】
クエリイメージは、ディジタルカメラ、携帯情報端末、文書スキャナ、テキストリーダー、ビデオカメラ、動画カメラ、コンピュータ、セル電話機カメラ、またはターゲットイメージのイメージ表現を生成することのできる他のデバイスのうちの少なくとも１つ（これらに限定はされない）によって取り込むことができる。
【０００３】
ターゲットイメージを、モニタまたはコンピュータスクリーンに表示することができ、そのピクチャを、上のデバイスのうちの１つによって直接に撮影することができ、あるいは、ターゲットイメージを、まずプリンタまたは類似する出力デバイス上で印刷することができ、ピクチャを、ターゲットイメージの複写のために上のデバイスのうちの１つによって撮影することができる。代替案では、クエリイメージを、クエリイメージの格納された電子版から複写することができる。
【０００４】
クエリイメージを取り込むのに使用される形およびデバイスに起因して、しばしば、取り込まれたクエリイメージは、ターゲットイメージと比較して、低解像度を有し、ぼけており、回転および透視ビューイング条件によってひずみ、不均一な明るさを有する。
【０００５】
イメージの対応を照合する通常の方法は、次のステップからなる。
【０００６】
（１）第１ステップでは、キーポイントが、角、接続、および／または明るいもしくは暗い斑点などのイメージ内の特有の位置について識別される。目標は、異なるビューイング条件、ノイズ、およびさまざまなイメージ劣化の下で、同一のキーポイントを信頼できる形で見つけることである。多数の既存の方法の中の１つの方法は、非特許文献１に記載のＳｃａｌａｂｌｅ  Ｉｎｖａｒｉａｎｔ  Ｆｅａｔｕｒｅ  Ｔｒａｎｓｆｏｒｍ（ＳＩＦＴ）法である。もう１つの方法は、非特許文献２に記載のＰＣＡ−ＳＩＦＴ法である。両方の方法が、かなりの量の計算を必要とし、これが、大きいイメージコレクションに関する性能を制限する。
【０００７】
（２）第２ステップでは、「記述子」と呼ばれる特徴ベクトルを、すべてのキーポイントの局所近傍から計算する。記述子は、それに対応するキーポイントをイメージ内の他のすべてのキーポイントに対して高い確率で識別するために、非常に特徴的でなければならない。さらに、記述子は、ノイズ、キーポイント識別エラー（たとえば、欠けているキーポイントまたは余分なキーポイント）、カメラ対ターゲットイメージの配置、および一般的イメージ劣化に対して頑健（robust）でなければならない。記述子をスケール不変および回転不変にするために、スケール正規化されたイメージ近傍を選択し、その主方位を判定し、適用して、イメージをキーポイントの周りで回転して、イメージを位置合せされた状態にする。類似する尤度の複数の可能な主方位がある場合には、複数の記述子を単一のキーポイントから生成してもよい。
【０００８】
（３）最後に、クエリ時に、クエリイメージの記述子ベクトルを、コレクション内のすべてのさまざまなイメージの記述子ベクトルと比較して、可能な一致を判定する。照合は、通常、Ｌ１距離またはＬ２（ユークリッド）距離など、２つの特徴ベクトルの間の距離尺度に基づく。多くの場合、２つのイメージについて正確に同一のキーポイント順序を入手することは、不可能である（たとえば、２つのイメージがお互いに関して任意に回転される場合）。したがって、記述子の追加のソートおよびインデクシングが適用されない限り、すべての可能な記述子の対の組合せを比較する必要がある。所望の感度に依存して、通常のイメージが、数千個のキーポイント（および記述子）を生じる場合がある。したがって、記述子次元数（特徴の個数）を最小にすることが望ましい。というのは、記述子次元数が、性能（距離を計算するのに要する時間）に直接に影響するからである。
【０００９】
上述のように、キーポイント識別の技術の幅広い選択肢が、文献に既に存在する。とりわけ、ガウス微分、モーメント、複雑特徴（ｃｏｍｐｌｅｘ  ｆｅａｔｕｒｅ）、スティーラブル特徴（ｓｔｅｅｒａｂｌｅ  ｆｉｌｔｅｒ）、およびフェーズ特徴（ｐｈａｓｅ  ｆｅａｔｕｒｅ）を含む、さまざまな手法に基づくさらに幅広くさまざまな記述子が提案されてきた。非特許文献１で導入された特徴記述子の一つの特定のクラスは、正確さおよび速度に関してほとんどの他の記述子より性能が優れていることを実証された。このクラスの記述子（すなわち、ＳＩＦＴ記述子）は、キーポイント近傍内の局所的な小スケールの特徴の分布に基づく。ＳＩＦＴ記述子は、キーポイントの周囲の４×４グリッド内の８つの異なる方位で局所空間密度勾配のヒストグラムを計算し、その結果を１２８次元ベクトルに格納する。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】ロウエ（D. G. Lowe），「Distinctive Image Features from Scale-Invariant Keypoints」，International Journal of Computer Vision，２００４年，第６０巻（Vol. 60），第２号（No. 2），ｐ．９１−１１０
【非特許文献２】ケ（Ke）およびスクトハンカー（Sukthankar），「PCA-SIFT: A More Distinctive Representation For Local Image Descriptors」，Conference on Computer Vision and Pattern Recognition，２０００年，ｐ．１１１−１１９
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、テキストおよび線描などの追加のタイプのイメージ内容を利用することもできるが、大きいイメージコレクション内の類似するイメージの発見または照合を対象とする。自然なピクチャの発見は、潜在的に、コレクションのテキストイメージまたはラインアートイメージの発見または照合より難しい問題である。というのは、そのようなピクチャの内容が、輝度／グレイスケール領域で連続的であり、したがって、頑健で信頼できるキーポイントを識別することがはるかにむずかしいからである。
【００１２】
すべての使用可能な方法の中で、ＳＩＦＴ記述子は、最も広く使用されていると思われる。ＳＩＦＴ記述子は、適度な個数のイメージの照合のために比較的高速に計算される別個の記述子を提供する。しかし、ＳＩＦＴ記述子の高い次元数は、大きいイメージコレクションを用いるリアルタイムの応用例での使用についてＳＩＦＴ記述子を非実用的にする。
【課題を解決するための手段】
【００１３】
本発明の一態様は、イメージコレクションの内容を前処理して、前記イメージコレクション内のイメージごとに安定した再現可能キーポイントを識別するステップと、前記キーポイントの局所グループから指紋情報を計算するステップと、前記計算の結果の指紋情報をコンパクトな指紋データベースに格納するステップと、前記コンパクトな指紋データベース内の入力指紋ごとに、候補指紋の組合せの列を生成するステップと、指紋データベースに入力された指紋ごとの候補指紋の組合せの前記列を、ファンツリーおよびハッシュテーブルの少なくとも一方と、対応する指紋データ構造と、に格納するステップと、キーポイントを識別することと、クエリイメージから指紋を計算することと、クエリ指紋を既存のファンツリー指紋データと照合することとによってリアルタイムイメージクエリを実行し、前記コレクション内の一致するターゲットイメージまたはターゲットイメージのセットを判定するステップと、前記判定ステップに基づいて少なくとも１つのターゲットイメージを取り出すステップと、前記取り出された少なくとも１つのターゲットイメージの表示、印刷、格納、または送信のうちの少なくとも１つを行うステップと、を含み、前記指紋情報の前記計算が、アンカキーポイントと呼ばれるイメージ内の最も強いキーポイントのサブグループと、加えて複数の局所的な非アンカキーポイントと、の組合せに基づく、ことを特徴とする、イメージデータを格納し、インデクシングし、検索し、および／または取り出すイメージ管理方法である。
【００１４】
前記クエリ指紋の前記既存のファンツリー指紋データとの前記照合は、クエリ指紋ごとに、オリジナルの指紋のイメージコレクションのサブセットを含む特定のファンツリー葉ノードリストにつながるファンツリーアドレスを計算することと、その後、前記サブセットリストからの各オリジナル指紋を順に現在のクエリ指紋と比較することと、前記クエリ指紋が前記取り出された指紋レコードのうちの１つと一致するたびに、そのイメージの一致する指紋の個数のカウントを増分することと、指紋スコア分析モジュールによって、各イメージの一致する指紋の結果の累算されたカウントを調べることと、最高スコア分析に基づいて、前記コレクション内の最もよく一致するイメージまたはイメージのセットを判定することと、を含んでいてよい。
【００１５】
また、前記アンカキーポイントは、前記クエリイメージおよびターゲットイメージ内で見つかる確率が前記非アンカキーポイントより高い。
【００１６】
本発明の他の一態様は、クエリ文書のクエリイメージ内のキーポイントおよび潜在的ターゲット文書のコレクションの潜在的ターゲット文書イメージ内のキーポイントを含む、イメージ内のキーポイントを識別するように構成された識別モジュールと、前記キーポイントから指紋情報を生成するように構成された指紋生成モジュールであって、前記指紋情報が、少なくとも１つのアンカキーポイントおよび所定の個数の非アンカキーポイントを含む、指紋生成モジュールと、前記クエリイメージの前記指紋情報を、潜在的ターゲット文書の前記コレクション内の前記潜在的ターゲット文書イメージの指紋情報と比較するように構成された比較モジュールと、前記クエリイメージの前記指紋情報と前記潜在的ターゲット文書イメージの前記指紋情報との間の最良一致を判定するように構成された照合モジュールと、前記照合モジュールにおける判定に基づいて少なくとも１つのターゲット文書イメージを取り出すように構成された取出しモジュールと、前記取り出された少なくとも１つのターゲット文書イメージの表示、印刷、格納または送信を行う、電子ディスプレイ、プリンタ、メモリストレージ、またはコンピュータネットワークのうちの少なくとも１つと、を含むことを特徴とする、イメージデータの格納、インデクシング、検索、および／または取出しを行う、コンピュータ動作可能システム内のイメージ管理システムである。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態の概念を実施できる環境を示す図である。
【図２Ａ】本発明の実施形態によるシステムおよび方法を使用する安定したキーポイント識別動作の応用を表し、スクリーンに表示されたクエリカメライメージを示す図である。
【図２Ｂ】本発明の実施形態によるシステムおよび方法を使用する安定したキーポイント識別動作の応用を表し、スクリーンに表示されたクエリカメライメージのキーポイントの識別された位置を示す図である。
【図２Ｃ】本発明の実施形態によるシステムおよび方法を使用する安定したキーポイント識別動作の応用を表し、対応するターゲットイメージのキーポイントの識別された位置を示す図である。
【図２Ｄ】ターゲットイメージを表す図である。
【図３Ａ】２Ｄ（２次元）視覚的指紋を用いた文書発見のための文書コレクションを準備する方法の概要を示す図である。
【図３Ｂ】２Ｄ視覚的指紋を用いた文書発見のための文書コレクションを準備する方法の概要を示す図である。
【図４】２Ｄ視覚的指紋を用いた文書発見の継続されるクエリ動作を示す図である。
【図５】文書コレクションの指紋データベースを生成する方法を示す図である。
【図６】ターゲット文書内の候補キーポイントを識別する方法を示す図である。
【図７】ターゲットイメージ内の候補アンカキーポイントを識別する方法を示す図である。
【図８Ａ】指紋の構成のために三角形比を入手する方法を示す図である。
【図８Ｂ】図８Ａの三角形比の量子化ステップを示す図である。
【図９】解凍された指紋データ内容を示す図である。
【図１０】アンカキーポイントおよび非アンカキーポイントの組合せから圧縮された指紋データベースを生成する方法を示す図である。
【図１１】指紋データベースからファンツリーを作成する方法を示す図である。
【図１２】ファンツリー構造および対応する指紋データ内容を示す図である。
【図１３】文書コレクション指紋データベースからファンツリー構造を作成するステップを示す流れ図である。
【図１４】リアルタイムでクエリイメージを照合するステップを示す流れ図である。
【図１５】クエリ候補キーポイントの識別を示す流れ図である。
【図１６】クエリ指紋化のステップを示す流れ図である。
【図１７】クエリ指紋の照合および文書ヒットのカウントのステップを示す流れ図である。
【発明を実施するための形態】
【００１８】
本明細書で説明されるシステムおよび方法は、図１に示されたコンピュータネットワークのパラメータ内で働くことができる。コンピュータネットワーク１００は、一連のワイヤ１０２からなるものとすることができ、ワイヤ１０２の多くは、分岐するかワイヤジャンクション１０４で第３のワイヤ１０６と接続されてもよく、独立型周辺デバイスに接続されるか、コンピュータ１０８，１０９などの他のデバイスに接続するために周辺機器を通過してもよく、ここで、コンピュータは、周辺デバイスと考えることができる。ネットワークは、カラープリンタ１１０またはカラー以外のプリンタ１１２、ならびに少なくともカラーレーザプリンタ１２０，１２２または１台のカラー以外のレーザプリンタ１２４を組み込んでもよい。ネットワークは、スキャナ１３０、またはファクシミリ機１４０、写真複写機１５０、カラー写真複写機１５２、あるいは組合せカラープリンタ／スキャナ／ファクシミリ機１５４を組み込むこともできる。ネットワークは、パーソナルコンピュータおよび／または独立型コンピュータ端末１６０、あるいは独立型ハードドライブデータストレージ媒体１６４を含むこともできる。ネットワークは、無線ネットワーク送受信器１７０を含み、少なくとも１つのラップトップコンピュータ１７２または複数のラップトップコンピュータ１７４とインターフェースすることもできる。ネットワークは、インターネット、イントラネット、または他の通信ネットワークを含むがこれらに限定されない任意の形のネットワーク１８０に相互接続されてもよい。別の形のネットワークとのインターフェースの使用を介して、本システムおよび方法は、ディジタルスチルカメラ１９１、ディジタルビデオカメラ１９２、セル電話機１９３、スキャナ１９４、携帯情報端末１９５、または文書インデクシングシステム１９６を含むがこれらに限定はされない複数の周辺データ取り込みデバイス１９０とインターフェースすることができる。本概念を、単一のデバイスを有するネットワークから数千個以上の接続されたデバイスを含むネットワークにいたる、上記のコンポーネントのさまざまな組合せを有するネットワーク内で実施できることを理解されたい。さらに、上記のコンポーネントのうちのさまざまなコンポーネントは、説明される概念を実施するのに有用である可能性がある複数の既知の構成のいずれかに配置されたメモリストレージエリアを有することができる。このストレージエリアは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、または本願の概念を組み込んだソフトウェアを保持できる他のメモリタイプとすることができる。他のメモリストレージエリアを、複数のデータベースフォーマットのいずれかにさまざまなディジタルイメージを保持するように構成してもよい。
【００１９】
コンピュータなどであるがこれに限定はされない図１のコンポーネントのうちのさらなるさまざまなコンポーネントは、そのコンポーネントにロードされるか他の形でそのコンポーネントによってアクセス可能なソフトウェアからの命令を処理するプロセッサを含む。プロセッサを有するコンポーネントのうちのさまざまなコンポーネントが、複数のプロセッサを有してもよく、これによって、命令の処理を複数のプロセッサの間で分割できることを理解されたい。代替案では、単一のプロセッサが、命令を分割するように動作でき、これによって、処理をマルチスレッド環境で行うことができる。
【００２０】
本発明の実施形態では、既存の方法およびシステムで使用される記述子の必要を完全になくす代替の方法およびシステムが展開される。その代わりに、本発明の実施形態の方法およびシステムは、キーポイント位置から直接に計算される局所化された２次元指紋を使用する。指紋は、記述子よりはるかにコンパクトであり、対応するキーポイントの識別において同様に有効である。記述子とは異なって、指紋は、非常に大きいイメージコレクションサイズまでたやすくスケーリングされる。さらに、指紋は、回転およびアフィン変換（ａｆｆｉｎｅ  ｔｒａｎｓｆｏｒｍａｔｉｏｎ）に対して不変になるように設計され、したがって、ＳＩＦＴのように特殊な方位処理を必要としない。
【００２１】
ピクチャコレクション内の類似するピクチャまたはピクチャセットを発見するための指紋の使用は、次の２つのステップからなる。
【００２２】
１．前処理ステージで、ターゲットピクチャのコーパスを分析して、各イメージから数百個の最も特徴的な指紋を抽出する。イメージの非常に大きいコーパスについて、低い確率で、所定の指紋が複数のターゲットピクチャ内で見つかる可能性がある。指紋は、高い次元（約３５）を有する。指紋は、ハッシュテーブルにハッシュ化され、このハッシュテーブルのエントリは、リンクされた指紋レコードのリストを含む。代替案では、ファンツリーを構成し、指紋をそれにインデクス付けすることができる。各指紋レコードは、特定の指紋のアイデンティティ、その値（指紋ストリング）、およびその指紋を含むターゲットピクチャのアイデンティティを含む。指紋の値は、ハッシュテーブル衝突が許容される時に、同一のハッシュテーブルエントリにハッシュ化され得る異なる指紋の間で区別するために、ハッシュテーブル衝突の場合にのみ必要である。衝突は、メモリ内のハッシュテーブルサイズを制限した結果として発生する可能性がある。
【００２３】
２．クエリ時に、指紋がクエリイメージから抽出される。順次、各指紋が、ファンツリーまたはハッシュテーブルの内容を検索するためのキーとして使用されて、ターゲットピクチャの関連する候補の指紋レコードが取り出される。そのような指紋レコードのそれぞれについて、潜在的なファンツリーまたはハッシュテーブルの衝突のゆえに、クエリの指紋ストリングが、ターゲットピクチャの指紋ストリングと比較される。特定のターゲットピクチャの指紋ストリングとの正確な一致がある場合には、そのターゲットイメージの投票カウントを増分する。多数の投票が、クエリピクチャと候補ターゲットピクチャとの間の正しい一致について生じ、少数の投票が、少数の指紋の偶然の一致から生じる不正な一致について生じると期待される。
【００２４】
図２Ａ〜図２Ｄに、本発明の実施形態の方法およびシステムを用いて成功したイメージクエリの検索を示す。図２Ａでは、クエリイメージが、カメラ、スキャナ、または他のそのようなデバイスによって取り込まれ、あるいは、図２Ｄのイメージなどのターゲットイメージの格納された電子版から複写される。図２Ａにおける手による部分的な妨害は、クエリイメージの一部が他の物体によって部分的にさえぎられる状況を含めて、クエリイメージがある形で劣化する状況であっても本願の概念を達成できることを強調することを意図されたものである。結果のクエリキーポイント位置を、図２Ｂに示す。クエリ指紋のセットが、クエリイメージのキーポイント位置から計算され、イメージコレクションからの指紋のデータベースと照合される。図２Ｃに、ピクチャコレクション内のターゲットイメージについて見つかったキーポイントを示す。
【００２５】
より具体的には、図２Ａのイメージに対する本発明の実施形態のシステムおよび方法の動作によって得られるキーポイント位置を、図２Ｂに示す。３つのスケールで入手されたキーポイント位置が示され、最小スケールの位置は、「ｘ」を用いてマークされ、中間スケールの位置は、「□」を用いてマークされ、最大スケールの位置は、「ｏ」を用いてマークされている。最小スケールの位置は、最小サイズのフィルタの使用によって識別され、中間スケールの位置は、最小サイズのフィルタのスケールアップ版（スケールをより大きくしたバージョン）の使用によって識別され、最大スケールの位置は、最大サイズのフィルタの使用によって識別される。同様に、図２Ｄのターゲットイメージに対する本発明の実施形態のシステムおよび方法の動作によって得られるキーポイント位置を、図２Ｃに示す。したがって、図２Ｂおよび２Ｃは、本発明の実施形態のシステムおよび方法の動作の結果を示す。
【００２６】
本発明の実施形態の方法は、図３Ａ〜図３Ｂおよび図４に概要を示された３つの処理ステップからなる。図３Ａ〜図３Ｂおよび図４が、本システムおよび方法の概要を提示し、これらの図で導入される概念が、後のセクションでより詳細に説明されることを了解されたい。
【００２７】
（ａ）図３Ａの流れ図３００では、ピクチャコレクションの内容が、安定した再現可能なキーポイントを識別するために前処理される。ターゲットピクチャのコレクション３１０内のピクチャごとに、キーポイントを識別し３２０、キーポイントごとに、指紋化動作３３０を実行することによって指紋を計算する。結果の指紋データ情報３４０は、コンパクトな指紋データベース３５０に格納される。
【００２８】
一般に、テキストまたはラインアートの文書内よりも、連続トーンの画像内で安定したキーポイントを見つけることの方がむずかしいので、本発明の実施形態では、イメージ内の少数の最も強いキーポイント（アンカキーポイントと呼ばれる）と、加えて複数の他の（非アンカ）局所キーポイントとの組合せに基づく指紋化方法を詳細に述べる。その強さに起因して、アンカキーポイントは、クエリイメージとターゲットイメージとの両方で高い確率で見つかる可能性が高い。アンカポイントの使用は、近傍内の少数のより強いアンカキーポイントと共に、より弱い局所キーポイントを一緒に「グループ化する」ことによって、指紋組合せの総数をかなり減らすのを助ける。
【００２９】
（ｂ）次に、図３Ｂに、指紋データベース３５０を編成するのに使用される流れ図３５５を示す。このプロセスでは、さまざまな指紋組合せ３６０を有する情報が、ファンツリーアドレッシング方法３７０に従ってファンツリーに編成される。指紋データベース３５０内の入力指紋ごとに、高速で効率的な指紋照合を容易にするために、候補指紋組合せ３６０の列が生成され、ファンツリー３７０および対応する指紋データ構造３８０に格納される。指紋組合せの列の目的は、クエリイメージのアフィン変換または透視変換などの可能な変換に起因して複数の（非アンカ）キーポイントが欠けることを可能にし、なおかつ、高い正確さで指紋を正しく検出できるようにすることである。
【００３０】
（ｃ）図４に、特定のクエリイメージ４１０に関するリアルタイムイメージクエリの実行４００を示す。これは、特定のクエリイメージ４１０内のキーポイント位置を識別し（４２０）、クエリキーポイントの局所グループからのクエリキーポイントごとに指紋情報を計算し（４３０）、クエリ指紋４４０と既存のファンツリー指紋データ４８０を照合し、コレクション内で最もよく一致するイメージまたはイメージのセットを判定することで行われる。各クエリ指紋は、ファンツリーアドレスを計算すること（４５０）に用いられる。ファンツリーアドレスは、オリジナルのイメージコレクション指紋レコード４８５のサブセット（下位集合）を含む特定のファンツリーの葉のノードリストにつながる。サブセットリストからの各オリジナル指紋は、順次、指紋照合４６０のために現在のクエリと比較される。クエリ指紋が取り出された指紋レコードのうちの１つと一致するたびに、そのイメージの一致する指紋の数のカウントを増分する。さらに、指紋の強さおよびそれがターゲット指紋にどれほど一意に相関するかに基づいて、指紋の一致のそれぞれに対してスコアを割り当てる。最後に、指紋スコア分析モジュール４９０が、イメージごとに、一致する指紋４７０の結果の累算されたスコアおよびカウントを調べて、クエリイメージ４１０に最もよく一致する、コレクション内の最良一致イメージまたは最良一致イメージのセット４９５を判定する。総合スコアを、指紋一致の個数とその相対スコアとを組み合わせることによって、一致する文書ごとに計算する。応用例に応じて、指紋スコア分析モジュール４９０は、最高の総合スコアを有する単一の文書を選択してもよく、あるいは、その代わりに、所定の値より大きい総合スコアを有するすべての文書を選択してもよい。次に、図１のコンポーネントのうちの１つによって、一致する文書セットを取り出し、プリントアウトし、電子的に送信し、表示し、および／または格納することができる。
【００３１】
Ｉ．ａ．イメージコレクション前処理
イメージコレクション前処理の流れ図５００を、図５に示す。ターゲットイメージ５１０を、一時に１つずつ順次処理して、キーポイント識別に基づいてその視覚的指紋情報を抽出する。
【００３２】
キーポイント識別処理モジュール／ステップ５２０では、各ターゲットイメージ５１０を処理して、入力イメージ内容に基づいてキーポイントのセットを識別する。この方法の成功は、きれいなターゲットイメージ内と、ある一般的なひずみおよび変化する照明条件の下でのそのイメージの劣化した版とでほぼ同一のキーポイントを見つける能力に依存する。キーポイント識別モジュール５２０の出力は、キーポイントと、スケール、ページ上の位置、および相対強さなどのそれに関連する属性とのリストである。
【００３３】
次に、指紋構成処理ステップ５３０で、局所近傍内のキーポイントの小さいグループから指紋を計算する。局所化された指紋の使用は、特にカメライメージの配置の要件および全体的な照明の要件の緩和に関して、この方法の柔軟性および頑健性（robustness）に大いに寄与する。結果の指紋は、指紋データベース５５０に格納され、指紋データベース５５０では、各イメージが、ターゲットイメージ５１０に対応する一意イメージＩＤ５４０を有する。
【００３４】
Ｉ．ａ．１  イメージキーポイントの検出
キーポイント識別モジュール（たとえば、図５の５２０）の目標は、ノイズと、シーン照明変動と、スキュー、ワープ、回転、並進、スケール、解像度の変化などの一般的ひずみと、を受ける劣化したイメージにおいてさえ繰り返して信頼できる形で見つけられる可能性が高い、連続トーンピクチャイメージ内の安定したキーポイントを識別することである。
【００３５】
この方法は、複数のスケールでの入力イメージのスケール空間ピラミッド表現を構成する。各スケールで、特定のフィルタのセットが入力イメージに適用され、ここで、各連続するフィルタは、前のフィルタのスケールアップ版である。フィルタ出力は、スケールおよび空間の単一の関数Ｄ（ｘ，ｙ，ｓ）を形成するために一緒に組み合わされる。安定したキーポイント位置は、関数Ｄ（ｘ，ｙ，ｓ）がスケール空間近傍内で局所ピーク値（最大値または最小値のいずれか）を達成するピクセル位置として、各スケール内で識別される。
【００３６】
本願の一実施形態では、入力イメージ内で識別されるすべての使用可能なキーポイントが使用される。もう１つの実施形態では、使用可能なキーポイントが、相対強さと、キーポイントスケールおよび／または他のキーポイントへの近接などの他の考慮事項とによって、また、出力すべき最良のキーポイントのうちの固定された個数だけを選択することによって、ソートされる。さらに、第３の実施形態では、入力イメージ区域５１０を（オーバーラップするまたはオーバーラップしない）領域のセットに下位分割することができ、複数の好ましいキーポイントが、ある領域が他のすべての領域に優位を占めるのを防ぐために、各領域から選択される。
【００３７】
最後に、キーポイント識別モジュール５２０の最後の処理ステップは、２つのキーポイントが所定の公差レベル内で正確に同一の位置を有することがないことを保証するために、妥当性検査ステップを含む。この妥当性検査ステップは、すべての重複する位置のキーポイントを、この位置での最も強く最も望ましいキーポイント（その強さ、スケール、および／または他のキーポイントへの近接に依存する）だけを保持し、他のすべての同一位置のキーポイントを除去することによって、除去する。キーポイント識別モジュール５２０の出力での残りのキーポイントのリストが、最終候補キーポイントリストになる。
【００３８】
あるイメージ内で識別できるキーポイントの全体的な個数は、もちろん、入力イメージ内容と、キーポイントの強さのしきい値などのキーポイント識別パラメータの選択と、に依存する。通常の自然シーンイメージには、概して数百個から数千個までのキーポイントがあり得る。
【００３９】
ここで図６に移ると、ターゲットイメージ６１０の文書キーポイント位置を検出するプロセス６００が示されている。適応しきい値の設定、ブラーリング（ｂｌｕｒｒｉｎｇ）、および連結成分コレクションのイメージ処理は、文献で周知である。最良の結果のためには、人間の視覚系の特性に従う知覚イメージ空間内でのキーポイント識別プロセスを実行することが望ましい。
【００４０】
第１の適応しきい値モジュール６２０のバイナリ（二値）出力イメージ６２５は、ＣＣサイズ推定モジュール６３０に送られる。ここで、用語「ＣＣ」は、連結成分（Ｃｏｎｎｅｃｔｅｄ  Ｃｏｍｐｏｎｅｎｔ）を表し、これは、同一極性を有するバイナリピクセルの最大限に接続されたサブグループである。２つのピクセルは、それらの間に同一極性のピクセルの経路が存在する場合に限って、同一の連結成分に含まれる。ＣＣサイズ推定モジュール６３０の目的は、ターゲットイメージ６１０について、イメージごとに、後続のラジアルブラーモジュール６４０で適用されるブラーフィルタサイズなどのブラーパラメータ６３５を動的に推定することである。ブラーリングプロセスの目的は、頑健で信頼でき再現可能なキーポイント識別を提供することである。ブラーリングは、ごま塩ノイズなどのノイズを除去し、ページ上の小さい分離された特徴を除去するのも助ける。たとえば近似ガウシアン形状（ａｐｐｒｏｘｉｍａｔｅｄ  Ｇａｕｓｓｉａｎ  ｓｈａｐｅ）であるがこれに限定はされないブラーリングフィルタの形状は、望ましくないアーティファクトを導入するのを防ぐのに十分に滑らかでなければならない。
【００４１】
正しい量のブラーリングを判定する際の１つの問題は、入力ページ上の通常のテキスト文字のサイズが事前にはわからないことである。本願の一実施形態は、１０ポイントから１４ポイントまでのＲｏｍａｎフォントなど、ある範囲の標準タイプフォーマットにまたがるよい妥協を提供する、固定され前もって事前に決定されたラジアルブラーパラメータ６３５を開示する。本願の第２の実施形態では、ラジアルブラーパラメータ６３５は、ユーザが文書ごとに適用すべき最適セッティングを指定できるように、選択可能にされる。これらの実施形態のどちらでも、ＣＣ推定モジュール６３０は使用されず、その出力は、選択された事前定義のラジアルブラーパラメータ６３５によって置換される。
【００４２】
本願の第３の実施形態では、ＣＣ推定モジュール６３０は、入力ターゲットイメージ６１０内容を調べることによって最適ラジアルブラーパラメータを自動的に推定するのに使用される。この場合に、ＣＣ推定モジュール６３０は、適応しきい値６２０モジュールからのバイナリ出力６２５を使用する。ＣＣ推定モジュール６３０は、バイナリイメージ６２５を処理して、連結成分の要素を集め、連結成分の高さのヒストグラム化に進む。というのは、文字の高さは文字の幅より変化が少なく、ほとんどのロマンス語で文字の幅と比較して文字の高さの方がフォントサイズをよりよく示すからである。高さのヒストグラムは、発生の頻度に基づいて、適当なラジアルブラーパラメータを判定するのに使用される。このプロセス中に、ＣＣ推定モジュール６３０は、寸法が小さ過ぎる（たとえば、少数の分離されたピクセルからなる）または寸法が大きすぎる（たとえば、長い線またはフレームにページの中で出会う時）時など、ノイズによって誘導される連結成分を除去するよう取り計らい、その結果、提供される推定値が、少数の異常に大きいまたは異常に小さい連結成分要素によって偏ることがないようにする。さらに、ページは、フォントサイズの混合された寄せ集めを含む場合があるので、ＣＣ推定アルゴリズムは、混合されたフォントセットの場合であってもよい妥協を有する保守的な推定値を提供するように設計されている。
【００４３】
本願の第４の実施形態では、ＣＣサイズ推定モジュール６３０は、局所化されたサブイメージの領域内の入力イメージの内容を分析することと、領域ごとに（たとえば、主に小さいポイントのテキストを含む１つのイメージ区域からより大きいフォントを含む別の近くの区域に動的に移動する時）ブラーリングパラメータを適応的に変更することとに基づいて、適応ブラーリングパラメータを動的に提供することができる。
【００４４】
ラジアルブラーモジュール６４０の出力は、グレイスケールイメージ６４５である。適応しきい値モジュール６５０は、ラジアルブラー６４０からのグレイスケールのイメージ出力６４５を、適応しきい値設定６５０によってバイナリ白黒出力６５５に変換する。
【００４５】
第２適応しきい値モジュール６５０のバイナリ出力は、バイナリイメージ６５５であり、連結成分モジュール６６０に転送される。連結成分法は、当技術分野で周知であり、グラフの最大限に接続された成分のセットと考えることができる。
【００４６】
本願の第１の実施形態では、使用可能な連結成分のすべてが使用される。第２の実施形態では、使用可能な連結成分が、たとえば、連結成分寸法の最適量、ピクセルカウント、アスペクト比、および／または他の連結成分への近接に重みを与えることによって、相対強さによってソートされ、連結成分のより小さいサブセットだけが出力される。第３の実施形態では、入力ターゲットイメージ６１０を、オーバーラップするまたはオーバーラップしない領域のセットに下位分割することができ、複数の連結成分を、ある領域が他のすべての領域に優位を占めるのを防ぐために、各領域から選択することができる。
【００４７】
重心計算モジュール６７０は、連結成分モジュール６６０の出力での各連結成分の視覚的中心を判定する。連結成分ごとに、水平重心位置は、連結成分の各メンバピクセルの水平座標を一緒に合計し、その結果をメンバピクセルの総数で割ることによって計算される。垂直重心位置は、各メンバピクセルの垂直座標を一緒に合計し、メンバピクセルの個数で割ることによって、同様に計算される。合計は、効果的に、連結成分分析中にオンザフライで行うことができる。所定の連結成分のピクセルメンバだけが、すべての他の非メンバのピクセルの「穴」を無視して、その重心位置に寄与することに留意されたい。各連結成分の視覚的重心は、サブピクセル精度で計算される。というのは、多くの言語で、連結成分が、テキスト行内に配置される傾向があるからである。
【００４８】
キーポイント識別フェーズの最後の処理ステップでは、重心計算モジュール６７０からの連結成分重心位置のリスト６７５が、重複除去モジュール６８０によって妥当性検査され、重複除去モジュール６８０は、キーポイントのリスト６８５を作る。この妥当性検査の目的は、２つの連結成分が所定の公差レベル内で同一の重心位置を有しないことを保証することである。ほぼ同一の重心位置を有する重複した連結成分が、除去される。
【００４９】
重複除去モジュール６８０の出力での残りの連結成分重心のリストが、最終候補クエリキーポイントリスト６９５になる。候補キーポイント６９０の総数は、入力イメージ内容と、連結成分処理のタイプとに依存する。通常の機械印刷されたページについて、数百個のキーポイントがあり得る。
【００５０】
Ｉ．ａ．２．指紋の構成
このセクションでは、キーポイントの局所グループから指紋を計算し、指紋データベース（たとえば、図５の５５０）での効率的な格納のために指紋を圧縮するプロセスを説明する。指紋は、指紋データベースサイズ要件および格納要件を減らすためにパックされる。
【００５１】
広範囲のノイズ、ビューイング条件、およびイメージひずみにまたがって安定な、頑健な２Ｄ視覚的指紋の識別が、入力イメージ内で探される。さらに、システムが非常に大きいイメージコレクションサイズ（たとえば、数百万個のイメージを含む）を効率的に処理するようにスケールアップすることを可能にするために、指紋サイズを最小にすることが有用である。というのは、指紋データベースが、コレクション内の有効な指紋のすべてからなるからである。それと同時に、指紋は、それが表す個々のイメージシグネチャを高い正確さおよび信頼度で識別するように設計される。
【００５２】
指紋は、パーシスタント・レシオ（ｐｅｒｓｉｓｔｅｎｔ  ｒａｔｉｏ）と呼ばれる、量子化された変換不変の２Ｄの比の列として構成され、パーシスタント・レシオは、所定のキーポイントとその（Ｎ−１）個の最近近傍キーポイントとの相対的な２Ｄ位置から導出される。したがって、各指紋は、処理対象のキーポイントの周囲の小さいイメージ近傍に局所化される。指紋の列は、処理対象のキーポイントとその（Ｎ−１）個の最も近いキーポイント近傍との間の相対的な２Ｄ配置だけに依存する。近傍の個数Ｎは、指紋の強さに影響する設計パラメータである。
【００５３】
指紋化法は、連続トーンイメージの場合に拡張される。ある種の単語重心特徴がバイナリイメージ内の頑健なキーポイントを識別するのに利用される機械印刷された文書の場合とは異なって、連続トーン画像内で安定したキーポイントを見つけることは、かなりよりむずかしい。したがって、機械印刷された文書に見られるキーポイントと比較して、より高い可変性が連続トーンイメージに見られるキーポイントに関して期待される。
【００５４】
連続トーンイメージに関する通常の問題は、２つのイメージの間のキーポイントの対での照合である。機械印刷された文書では、単語重心は、ノイズおよびイメージひずみに対して非常に頑健であり、両方のイメージ内に高い確率で現れる可能性が高い。対照的に、連続トーンイメージ内の顕著なスケール空間キーポイントの一部、特により弱いキーポイントは、それほど特徴的ではない場合がある。
【００５５】
連続トーンイメージに関する通常の状況は、キーポイントのほとんどを、クエリイメージとターゲットイメージとの両方で高い確率で共通して見つけることができるが、時々、ターゲットイメージ内の対応する一致するキーポイントを有しない、クエリイメージ内の少数の欠けているまたは余分なキーポイントがある場合があることである。欠けているキーポイントとは、ターゲットイメージには見られるがクエリイメージには見られないキーポイントである。余分なキーポイントとは、クエリイメージには見られるがターゲットイメージには見られないキーポイントである。
【００５６】
クエリイメージとターゲットイメージとの間の、個数が可変の欠けているキーポイントまたは余分なキーポイントの存在は、指紋の照合結果をすばやく劣化させる可能性がある。複数の要因に起因して、余分なキーポイントまたは欠けているキーポイントは、複数の指紋に影響する可能性が高い。というのは、所定のキーポイントが、通常は複数の局所的な指紋組合せに用いられるからである。
【００５７】
提示されるのは、イメージ内の少数の最も強いキーポイント（アンカキーポイントと呼ばれる）と、加えて他の（非アンカ）局所キーポイントとの特定の組合せに基づく新しい指紋化法である。その強さに起因して、アンカキーポイントは、クエリイメージとターゲットイメージとの両方で高い確率で見つかる可能性が高い。アンカポイントの使用は、近傍内の少数のより強いアンカキーポイントと共により弱い局所キーポイントを一緒に「グループ化する」ことによって、指紋の組合せの総数をかなり減らすのを助ける。アンカキーポイントは、その相対的な強さおよび他のアンカキーポイントへの距離に基づいて、候補キーポイントのリストから選択される。このアルゴリズムは、距離に基づいて同一のまたはより小さい強さのキーポイントを一緒にグループ化し、グループ代表として最も強いグループキーポイントだけを保持するために、クラスタ化技法を使用する。このアルゴリズムは、グループにマージすべきさらなるキーポイントがなくなり、および／または前の反復からのグループ内距離の変化が所定のしきい値未満になるまで、反復される。さらに、最小距離クラスタ化パラメータが、イメージについて良いアンカキーポイントの範囲を得るのに使用される。次に、結果のグループ代表（すなわち、各グループ内の最も強いキーポイント）が、アンカキーポイントのセットとして選択される。
【００５８】
指紋は、パーシスタント・レシオ（パーシスタント比，ｐｅｒｓｉｓｔｅｎｔ  ｒａｔｉｏ）と呼ばれる、量子化された変換不変の２Ｄの比の列として構成され、パーシスタント・レシオは、キーポイントのグループの相対的な２Ｄ位置から導出される。この実施形態では、欠けているキーポイントまたは余分なキーポイントに対して指紋を頑健にするために、指紋を構成するのに使用されるキーポイントの局所グループは、事前に決定される少ない個数のアンカキーポイントに加えて、局所キーポイントを含むように構成される。
【００５９】
したがって、本発明の実施形態による指紋を形成するキーポイントのグループは、所定のキーポイント、少数のアンカキーポイント、および他の（非アンカ）局所最近近傍キーポイントのセットからなる。指紋内のキーポイントの全体の個数およびアンカ対他のキーポイントの個数の比率は、指紋の強さおよび頑健性（ｒｏｂｕｓｔｎｅｓｓ）に影響する２つのシステム設計パラメータである。
【００６０】
アンカキーポイントおよび他の局所キーポイントの組合せから指紋を計算する特定の方法を、図７に示す。指紋は、キーポイント識別モジュールの出力での候補キーポイントごとに計算される。指紋がそれについて計算される現在のキーポイント位置（１）が、図７の中央に正方形パターンを用いて示されている。指紋は、（ａ）現在のキーポイント位置（１）、（ｂ）現在のキーポイント位置に最も近い事前に決定された個数のアンカキーポイント（図７で星パターンによって示された２、３）、および（ｃ）複数の最近近傍非アンカキーポイント（図７で円パターンを用いて示された４から１０まで）の２Ｄ位置から計算される。追加の非アンカキーポイント位置（図７の破線パターンの１１から１３までなど）は、現在のキーポイント位置（１）から事前に決定された距離より遠いので、指紋には含まれない。
【００６１】
各指紋が、所定のキーポイント位置（１）に対して相対的に最も近いアンカキーポイントならびに非アンカキーポイントを選択することによって、処理対象のキーポイントの周囲の小さいイメージ近傍に局所化されることに留意されたい。本実施形態の特定の態様は、ディジタルカメラ、セル電話機カメラ、または他のイメージ取り込みデバイスを用いるイメージのピクチャのスキャンまたは撮影のプロセス中に一般的に発生するある種のイメージひずみ（スキュー、ワープ、回転、並進、スケール、解像度の変化など）に対して指紋を頑健にすることにある。
【００６２】
本発明の実施形態において、Ｎ個のキーポイントのグループの２Ｄ位置から指紋を計算する方法では、キーポイントの一部が、通常のキーポイントではなくアンカポイントになるようにさらに制約される。任意のアンカキーポイントおよび／または非アンカキーポイントの非同一線上の組合せからなるＰ＝４個のキーポイント｛Ａ，Ｂ，Ｃ，Ｄ｝のグループごとに、三角形面積の比（ＡＢＣ／ＡＣＤ）が、計算され、Ｑ個のレベルに量子化される。Ｑの値は、２の２進べきになるように便利に選択することができる。量子化プロセスを、Ｑ＝８の場合について図８Ａ〜図８Ｂに示す。
【００６３】
図８Ａに示されているように、三角形ＡＢＣ８５０および第２の三角形ＡＣＤ８６０を含む、物体表面上の４つの非同一線上の点｛Ａ，Ｂ，Ｃ，Ｄ｝（すなわち、８１０、８２０、８３０、８４０）からなる任意の所定の多角形８００について、三角形面積の比（ＡＢＣ／ＡＣＤ）８７０は、任意のアフィン変換の下で一定のままになることが、当技術分野で周知である。したがって、Ｐ＝４個の点だけが、三角形比８７０として示されている、１つの三角形面積比を計算するのに必要である。このアフィン変換は、多くの実用的状況で、カメラ対平面物体ジオメトリを記述する受け入れられるモデルを提供することが示されている。
【００６４】
本願のもう１つの実施形態では、アフィンより高い変換次数がイメージモデルを記述するのに必要な状況について、その変換を、２つの三角形比の積である単一のパーシスタント・レシオを計算するためにＰ＝５個の点（４個ではなく）を使用する透視変換を処理するように拡張することができる。
【００６５】
したがって、単一の指紋は、時計回りの順番でソートされたＮ個の最近近傍キーポイントのグループに関する量子化されたパーシスタント変換レシオの列からなる。指紋のサイズを小さく保つために、変換比８７０は、Ｑ個のレベルに量子化される。一実施形態で、Ｑの値は、２のべき乗になるように便利に選択することができる。図８Ｂでは、量子化プロセスが、Ｑ＝８の場合について図８Ａの三角形比８７０の量子化として図示されている。量子化の前の三角形比の有効範囲（０，∞）は、図８Ｂに示されているように‘０’から‘７’までのラベルを付けられたＱ＝８個のインターバル（区間）に分割される（８９０）。インターバルの境界は、代表的な文書の大きいセットにわたって量子化ラベルがほぼ一様に分布するように経験的に決定される。入力される三角形比値８８０は、順次、増加するインターバル境界と比較されて、最初のより大きいまたは等しいインターバル境界が判定され、その時に、このプロセスは終了され、対応するラベルインターバルが、量子化された結果として割り当てられる。たとえば、１．０より小さく前のインターバル境界より大きい０．８２５３６９４の三角形比の入力は、量子化された値‘３’を割り当てられる。
【００６６】
三角形面積比を使用することの利益は、その値がアフィン変換の下で一定（したがって、パーシスタント（永続的））のままになることである。アフィン変換は、多くの実用的状況で、カメラ対平面物体ジオメトリを記述する受け入れられるモデルを提供することが示されている。
【００６７】
指紋照合中に発生し得る１つの問題は、クエリイメージが、照合されるターゲットイメージに対して相対的に異なる方位である場合があることである。クエリイメージがターゲットイメージに対して相対的に回転される時に、結果として得られる指紋の列は、２つの指紋が数字の同一のセットを共有する場合であっても、列内の数字の異なる順序に起因してターゲットの列と一致しない可能性が高い。２つの指紋は、指紋の列全体ですべての対応する量子化された比の数字それぞれの間に１対１の一致がある場合に限って一致する。
【００６８】
所定の指紋の量子化された比の特定の列は、そのキーポイントの特定の順序付けに依存する。たとえば、クエリイメージが、基準オリジナルに対して相対的に回転される場合に、開始キーポイントが異なる可能性があり、これは、量子化された比の完全に異なる列につながる。可能な指紋一致を判定するために、２つの指紋を、まず、対応するキーポイントの同一の列の順にしなければならない。
【００６９】
上の問題を克服する１つの手法は、イメージ回転の結果として潜在的に発生する可能性があるすべての可能な指紋の列を生成し、これらを、照合すべき可能な候補指紋としてファンツリーに登録することである。しかし、この手法は、複数の一致についてチェックする必要において非効率的であると同時に、メモリ内に各候補指紋の複数の版を格納する必要において浪費的である。
【００７０】
ＳＬＣＤ（Ｓｍａｌｌｅｓｔ  Ｌｅａｓｔ  Ｃｏｍｍｏｎ  Ｑｕａｎｔｉｚａｔｉｏｎ  Ｄｉｇｉｔ）法は、クエリ指紋ごとに照合すべき候補指紋の全体的な個数を実質的に減らすことによって、大幅な性能向上をもたらす。
【００７１】
第１ステップでは、指紋の数字の列のヒストグラムを実行して、最小の最も数少ない量子化数字を判定する。例として、次の単一の指紋の列を検討されたい。
【００７２】
指紋＝「１４６０３６１６３７６７５６３２６３２２４７７６６２６５２２０６６６７」
【００７３】
指紋の列の数字をカウントして、各値のタイプがいくつあるかを判定する。たとえば、上の指紋は、２つの‘０’の数字、２つの‘１’の数字、６つの‘２’の数字、４つの‘３’の数字、２つの‘４’の数字などを有する。最小の最も数少ない数字は、指紋の列に少なくとも１回現れる最小の最も頻繁でない数字、すなわち、ゼロでないカウントを有する最小の数字である。上の指紋の例では、最小の最も頻繁でない数字は、数字‘０’である。というのは、１のカウントを有する数字がなく、この指紋の列内に２のカウントを有する少なくとも３つの数字（‘０’、‘１’、および‘４’）があり、‘０’が、他の数字‘１’または‘４’より小さいからである。優先順位は、順列の全体の数を最小にするために、必ずより小さいカウントに与えられる。
【００７４】
指紋の列内の最小の最も数少ない数字の値を判定した後に、列をスキャンして、最小の最も数少ない数字の指紋の列内の位置を判定する。位置ごとに、最小の最も数少ない数字の位置までの列の開始部分を、開始部分および終了部分の内部の列を変更しないままに保ちながら、指紋の列の終りに並べ替える。したがって、順列の数は、指紋ごとに異なる。指紋の列ごとに、順列の数は、指紋の最小の最も数少ない数のカウントと等しい。ＳＬＣＤ法の利益は、すべての可能な指紋の列の数字の順列空間全体における網羅的検索を必要とせずに、よいバランスのとれた計算負荷で指紋あたりの順列の数を最小にしようとすることである。
【００７５】
上のサンプル指紋のケースについて、ＳＬＣＤの実施形態の方法による結果の順列は、次の２つの列の候補を含む。
【数１】
2010009606.tif 000003
【００７６】
したがって、クエリの指紋が、ソートされ、この例では２つの指紋の順列の候補と照合される。各順列は、オリジナルの指紋の列の先頭から最小の最も数少ない数字（このケースでは‘０’）の位置までが並び替えられた指紋の列の終りにシフトすることによって形成される。順列の下の‘＾’マーカは、説明のために、オリジナルの指紋の列の終りの位置を示す。
【００７７】
本願の実施形態では、並び替えられた指紋の列が、オリジナルの指紋の列の代わりに使用される。順列を使用することの利益は、照合する必要がある指紋の列の候補の数がかなり減ることである。オリジナルの指紋の列のすべての可能な循環する組合せを調べるのではなく、最小の最も数少ない数字の少数の順列だけが調査される。順列は、指紋データベースの準備の間に前もって生成され、格納される。クエリの時には、クエリの指紋の列の最初の順列だけが、照合に使用され、追加のクエリの順列をチェックする必要はない。というのは、すべての順列が前もって格納され、正しい順列が自動的に見つけられるからである。
【００７８】
本願の実施形態による順列の使用は、順列の数が、平均してオリジナルの指紋の列の長さよりはるかに小さいので、わずかなストレージ増加について大きい性能向上をもたらす。
【００７９】
本願のもう１つの態様は、欠けているキーポイントまたは余分なキーポイントの場合の指紋の頑健性を高めるために、複数（通常は２つ以上）の非アンカ近傍キーポイントが、欠けていることを許容されることである。しかし、より強いアンカキーポイントは、指紋一致を得るために、クエリイメージとターゲットイメージとの両方に存在することを要求される。
【００８０】
本願の一実施形態の下では、小さい局所化された近傍内の限られたアフィンひずみの下で、３つまでのキーポイントを除外することが許容される。もちろん、システムでの考慮事項に依存して、３つを超えるキーポイントを除外することができる。したがって、各所定のキーポイントは、一回に３つの非アンカキーポイントを除外することによって、複数の指紋を生じる。各指紋は、方位の半径方向順で残りのアンカキーポイントおよび非アンカキーポイントを系統的にウォークすることと、Ｐ個の点（アフィン変換ではＰ＝４、透視変換ではＰ＝５）のすべての可能な組合せについて量子化されたパーシスタント・レシオの列を記録することとによって作成される。図９に、Ｎａ＝２個のアンカキーポイント、Ｎ＝８、Ｐ＝４、およびＱ＝８の場合の単一のイメージの指紋の出力の例を示す。各キーポイントは、この場合では長さ３５の複数の指紋の列を生じる。
【００８１】
指紋化プロセス１０００を、図１０に詳細に示す。指紋化プロセス１０００への入力は、入力イメージ１００５の候補キーポイントのリスト１０１０である。
【００８２】
図１０での第１ステップは、アンカキーポイント識別モジュール１０１５が、上で述べたように、キーポイント強さ、スケール、位置、および／または他のキーポイントへの近接などのさまざまな判断基準に基づいて入力イメージ１００５内で見つかる候補キーポイントの中でアンカキーポイントの適切なサブセットを選択することである。
【００８３】
指紋のセットを、候補キーポイントリスト１０１０内のキーポイントごとに計算する。各現在の候補キーポイントＫｐを、次キーポイント取得モジュール１０２０によって入力リストから順番に選択する。候補キーポイントごとに、最近アンカキーポイント発見モジュール１０３０が、所定のキーポイントＫｐまでの最も近い距離を有するＮａ個の最も近いアンカキーポイントを識別する。次に、最近近傍発見モジュール１０４０が、所定のキーポイントＫｐまでの最も近い距離を有する（Ｎ−Ｎａ−１）個の最近非アンカキーポイントを識別する。返されたキーポイントを、Ｋｐからの増加する距離によってソートする。キーポイントの総数Ｎは、指紋の「強さ」（特徴性）と、全体的なシステム性能（指紋あたりの計算の回数）と、結果のデータベースサイズ（指紋サイズ）との間のよいトレードオフをもたらすように選択される。一実施形態では、値Ｎ＝８、１２、および１６が使用される。
【００８４】
時計回り順でのソートモジュール１０５０は、ターゲットイメージとクエリイメージとの間の量子化された面積比の一貫した列を提供するために、増加する時計回りの方位で所定のキーポイントのＮ−１個の最も近いアンカおよび非アンカのキーポイントのリストをソートする。指紋ごとに、時計回り順でのソートモジュールは、現在のキーポイントおよびＮａ個の最近アンカキーポイントを使用して、サブグループの原点中心を計算する。非アンカキーポイントは、いくつかの余分な非アンカキーポイントまたは欠けている非アンカキーポイントの場合であっても原点が安定したままになることを保証するために、サブグループの原点中心の計算では使用されない。
【００８５】
現在の近傍キーポイントクラスタの原点中心を判定した後に、時計回り順でのソートモジュール１０５０は、増加する時計回り方位順でのキーポイントのソートに進む。ソートは、方位と距離との両方で行われる。主順序は、増加する時計回り方位順による。しかし、複数の点が、おおむね同一（事前定義の公差レベル以内）の方位を有する場合には、点を、ほぼ同一方位のすべての点について増加する距離によって下位順序付けする。原点中心の位置は、現在のキーポイント位置からの矢印によって指摘される（たとえば、図７の位置１）。
【００８６】
Ｎ個の最も近いアンカキーポイントおよび非アンカキーポイントの順序付けを所定のキーポイントについて確立したならば、指紋を生成することができる。指紋は、近傍内のサイズＰ＝４のキーポイントの連続するサブセットから形成される。Ｎ個のキーポイントのＰ個のサブセットが、次サブグループ組合せモジュール１０６０によって、系統的な一貫した形で考慮される。それぞれについて、Ｐ個のサブセットのパーシスタント面積比を計算し、その面積比を整数にマッピングすることによって、整数を判定する。所定のキーポイントの指紋の長さは、そのようなＰ個のサブセットの総数である。これは、Ｎ個のキーポイントから一意のＰ個のキーポイントを選択するための組合せの個数によって決定される。たとえば、Ｎ＝８かつＰ＝４の場合に、可能なサブグループの組合せの個数は、７０個のパーシスタント・レシオである。
【００８７】
Ｎ個のキーポイントの一意のサブセットのそれぞれについて、圧縮量子化比モジュール１０７０は、単一のパーシスタント・レシオを計算し、これを事前定義のしきい値のセットを使用して量子化する。量子化レベルの個数Ｑは、設計パラメータであり、たとえば、Ｑ＝８またはＱ＝１６が使用される。量子化しきい値は、特定のカテゴリのピクチャの大きいコレクション内のパーシスタント・レシオの分布を調査することによって経験的に決定される。
【００８８】
指紋データベース１０８５のサイズをさらに減らすために、圧縮量子化比モジュール１０７０は、複数の結果の量子化されたパーシスタント・レシオを１つの機械語に圧縮（ｐａｃｋ）する。たとえば、Ｎ＝８、Ｐ＝４、およびＱ＝８を用いると、指紋全体（７０個の組合せの列）を、４つ未満の６４ビット語に密に圧縮することができる。本願の一実施形態では、圧縮された指紋のサイズは、合計３つの６４ビット語および３つの８ビットバイトを占める（複数の語および／またはバイトにまたがって部分的情報を分割する必要なしに）。
【００８９】
指紋を計算し圧縮するプロセスは、最後の組合せが最終組合せモジュール１０８０によって検出されるまで、一時に１パーシスタント・レシオずつ順番に継続する。現在のＰ個のサブグループの組合せが、まだ最後の組合せではない場合には（１０８１）、最終組合せモジュール１０８０は、フローを次サブグループ組合せモジュール１０６０に戻ってルーティングして、次のＰ個のサブグループを入手し、その量子化されたパーシスタント・レシオの計算に進み、これを圧縮する。このプロセスは、最後のＰ個のサブグループ組合せが処理される１０８２まで継続される。その時に、結果として得られる圧縮された指紋データ１０８３が、指紋データベース１０８５に書き込まれる。圧縮された指紋インスタンスのそれぞれが使用可能になる時に、一回に１つの指紋ずつ、指紋データを指紋データベース１０８５に順次書き込むことができることに留意されたい。
【００９０】
最後に、指紋を書き込むプロセスは、最後のキーポイントが最終キーポイントモジュール１０９０によって検出されるまで、残りのキーポイントのすべてについて順次継続される。現在のキーポイント組合せが、まだ最後のキーポイントではない場合（１０９１のＮＯ）には、最終キーポイントモジュール１０９０は、フローを次キーポイント取得モジュール１０２０に戻って、次のキーポイントを入手し、その圧縮された指紋を計算するステップおよびそれを指紋データベース１０８５に追加するステップの繰り返しに進む。指紋化プロセスは、最後のキーポイントの組合せ（最後の対応する指紋）が処理され、指紋データベース１０８５に追加されるまで、この形で継続される。最後のキーポイントに対処したならば、このプロセスは終了する（１０９５）。
【００９１】
Ｉ．ｂ．高速照合のための指紋情報の準備
図１１に移ると、指紋データベース１１１０からファンツリーを作成するプロセス１１００が示されている。指紋データベース１１１０内の指紋は、メモリサイズおよびローディング時間を減らすために、圧縮フォーマットで格納される。これらを使用できる前に、指紋は、まず、解凍され、効率的な指紋照合を容易にするためにファンツリーデータ構造に従って一意の形で編成される。最初のイメージクエリの際に、指紋データベースを１回だけ準備することが必要であることに留意されたい。ファンツリーデータ構造（解凍された指紋の列を含む）は、メモリ内に保持し、その後、任意の個数のイメージクエリについて再利用することができる。
【００９２】
最初に、キーポイント列除外モジュール１１２０が、複数の指紋非アンカキーポイント１１３０を除外することによって、複数の指紋キーポイントの組合せの候補を選択する。これは、局所近傍キーポイントの中の１つまたは複数の欠けているまたは余分な非アンカキーポイントを可能にする。この実施態様では、キーポイント除外モジュール１１２０は、固定された個数Ｎｅ個の非アンカキーポイントを除外する。Ｎ−Ｎａ個の非アンカキーポイントの局所近傍を用いると、これは、データベースエントリ（またはキーポイント）ごとに複数の指紋を生じる。
【００９３】
指紋列モジュール１１５０は、キーポイントごとに指紋の候補の列を生成する。たとえば、Ｎ＝８について、キーポイント除外モジュール１１２０は、最初のＮｅ個の非アンカキーポイントを除外することと、残りの非アンカキーポイントを選択することとによって、最初の指紋を生成させる。その後に、キーポイント除外モジュールは、第２の指紋を作成するために、第１、第２、および第４の非アンカキーポイントを除外した、キーポイントの次の組合せを生成する。このプロセスは、すべての除外されるキーポイント組合せに出会うまで継続される。
【００９４】
指紋列モジュール１１５０から出力される指紋データ１１６０は、データベースから取り出される現在のイメージの一意イメージＩＤ１１４０と一緒に、指紋レコード１１８０を形成する。指紋レコード１１８０は、ファンツリーモジュール１１７０によってアドレス付けされた対応するファンツリー葉ノードの位置に格納される。ファンツリー葉ノード情報は、対応する指紋データ構造１１９０内の指紋レコード１１８０のリンクリストとして格納される。実際のファンツリー葉ノード（実際の指紋に対応する）だけが、投入される。特定の葉ノードに最初に到着する指紋が、最初にその葉ノードに投入される。複数の指紋が、同一の葉ノードにもう一度（すなわち、同一のファンツリー経路に従って）たまたま到着する場合には、第２の指紋情報は、第２指紋情報をその葉ノード上の第１指紋情報にリンクすることによって、同一の葉ノードで追加される。
【００９５】
本願の実施形態で、指紋の列は、クエリイメージがターゲットイメージに対して相対的に回転される時であっても対応する指紋の照合を容易にし、取り込みプロセス中の透視ひずみおよび他のイメージ品質劣化に起因して非アンカキーポイントが欠けることを許容するために、前に説明したＳＬＣＤ法に従って並び替えられる。
【００９６】
本願の文脈では、並び替えられた指紋の列が、オリジナルの指紋列の代わりに使用される。順列を使用することの利益は、照合する必要がある候補指紋列の数がかなり減ることである。オリジナルの指紋の列のすべての可能な循環する組合せを調べるのではなく、最小の最も数少ない数字の少数の順列だけが調査される。順列は、指紋データベース準備中に前もって生成され、格納される。クエリ時には、クエリ指紋の列の最初の順列だけが、照合に使用される（すべての順列が前もって格納され、正しい順列が自動的に見つけられるので）。
【００９７】
本願の実施形態による順列の使用は、順列の数が、平均してオリジナルの指紋の列の長さよりはるかに小さいので、わずかなストレージ増加で大きい性能向上をもたらす。
【００９８】
本願の一実施形態では、ターゲットイメージ位置に対する相対的なクエリイメージの最初の観察されるキーポイントの回転方位を確立するために、テストが実行される。このテストは、可能な最初の観察されるクエリキーポイントの組合せのそれぞれを評価することと、最良の列の一致を選択することとによって実行される。
【００９９】
本願の第２の好ましい実施形態では、Ｎ個の可能な最初に観察されるクエリキーポイントの組合せは、前もって事前計算され、照合すべき追加の指紋の候補の列として格納される。クエリ時に、Ｎ個の事前計算された組合せのうちの１つと一致するすべてのクエリ指紋が、一致と考えられる。誤ったクエリ指紋が余分な組合せのうちの１つと実際に一致する尤度は低い。この第２の実施形態の主な利益は、追加の候補の最初のキーポイントの指紋の組合せを含むために多少より大きいストレージを犠牲にして、第１の実施形態に対して相対的により高い照合性能を可能にし、クエリ計算負荷を下げることにある。
【０１００】
第３の好ましい実施形態では、Ｓｍａｌｌｅｓｔ  Ｌｅａｓｔ  Ｃｏｍｍｏｎ  Ｑｕａｎｔｉｚａｔｉｏｎ  Ｄｉｇｉｔ（ＳＬＣＤ）法が使用される。ＳＬＣＤ法は、最小の最も数少ない量子化数字を判定するために指紋の数字の列のヒストグラムを実行することと、最小の最も数少ない数字の位置ごとに指紋の列を並び替えることとに基づく。ＳＬＣＤ法の利益は、すべての可能な指紋の列の数字の順列の空間全体における網羅的検索を必要とせずに、よいバランスのとれた計算負荷で指紋あたりの順列の数を最小にしようとすることである。
【０１０１】
並び替えられた指紋は、高速で効率的な指紋照合を容易にするために、独自の形で編成される。本願の一実施形態では、並び替えられた指紋の情報は、クエリイメージとピクチャコレクションン内の指紋の候補との間の高速指紋照合のために、ハッシング方式を使用して編成される。本願の第２の実施形態では、並び替えられた指紋情報は、ファンツリー法に従って編成される。一般的なハッシング技法とは異なって、ファンツリーは、高次元空間での効率的な近近傍指紋検索（たとえば、１つまたは少数の数字の変化を除く同一の列を有する目標に近いが不十分な指紋）を可能にし、少なくとも、ハッシュテーブル手法と同様に高速である。図１２に、高速に指紋をインデクス付けする方法として、ファンツリー構造および指紋内容の対応する編成１２００を示す。
【０１０２】
ファンツリー構造および指紋内容の対応する編成１２００は、格納されたデータを編成するのに使用される。ファンツリーは、３つのタイプのノードすなわち、（ａ）ルートノード１２１０、（ｂ）中間レベルツリーノード（たとえば、１２２０，１２２１，１２３０，１２３１，および１２３２）、および（ｃ）枝の終りの終端葉ノード（たとえば、１２４０，１２４１，１２４２，１２４３，および１２４４）からなる。ファンツリーは、ルートノード１２１０から始まる。ルートおよび中間レベルノードのそれぞれは、パーシスタント面積比の量子化レベルごとに１つの、Ｎ個（この場合にはＮ＝８）までの子を有する。したがって、指紋は、ルートからファンツリーの葉ノードまでの、たどられる枝によってトレースされる経路である。
【０１０３】
たとえば、図１２の経路（１２１０−１２２０−１２３０−１２４０）は、ルートノード１２１０から特定の葉ノード１２４０につながる、１つの指紋に対応する。指紋のこの特定の表現は（この単純な例で）、目指す葉ノード１２４０に達するのに３つの分岐コード（すなわち、「各ノードの左経路をとる」すなわち、（０）ラベルを付けられた分岐を３回）を使用する。
【０１０４】
ファンツリーの潜在的サイズは大きく、この場合には８×８＾３５であるが、実際のファンツリーは、分岐がデータベース内に実際に現れる指紋についてのみ任意の所定のノードで構成されるので、疎に構成される。ルートの近くでは、多くのノードが、８個すべての分岐を含むが、２〜３レベル下では少数の分岐だけが展開される可能性がある。
【０１０５】
葉ノードは、外に出る分岐を有しないという点で、他のツリーノードタイプと異なる。その代わりに、各有効な葉ノードは、クエリ時にクエリ指紋と照合される、図１２の要素（１２５０，１２５１，１２５２，１２５３，１２５４，１２５５，１２６０，１２６１，１２６２，および１２６５）を含むがこれらに限定はされない指紋レコードのリスト１２７０を含むリンクリストデータ構造を指し示している。これらは、指紋データ内容１２８０をも構成する。
【０１０６】
指紋データは、データベース内の関連する指紋レコードへのすばやいアクセスを容易にし、それと同時に、現在の処理対象のクエリ指紋に関して関連しない指紋レコードを調査する必要を除去するように効率的に編成される。
【０１０７】
ファンツリー手法は、ニアミス（ｎｅａｒ−ｍｉｓｓ）指紋を取り扱う２つの方法を使用可能にする。ニアミス指紋とは、少数の数字の変化を除いてほぼ同一の整数の列を有する指紋である。上述の２つの方法とは、次の２つである。（１）ニアミス指紋の組合せを前もって計算し、ファンツリーに事前に格納することができる。（２）ニアミス指紋の組合せは、クエリ時の間にクエリ指紋の列から計算され得、検索時にファンツリー経路をバックトラックすることができる。第１の方法は、ニアミス指紋の組合せを格納するためのより大きいメモリを犠牲にして、計算のほとんどをオフラインで実行するという利益を有する。その一方で、第２の方法は、実際のクエリ時に追加計算を必要とするが、ストレージ用の余分のメモリを必要としない。
【０１０８】
ファンツリーは、効率的なシステム性能およびイメージの非常に大きいコレクション（たとえば、数百万個のピクチャを含む）までスケールアップする能力を可能にする。ファンツリーは、大きいイメージコレクションのサイズに特に適切である。実際に、よい指紋設計を用いると、ファンツリーを使用する検索の時間は、イメージコレクションサイズに伴ってゆっくり増加するのみである。それでも、小さいものから適度なものまでのイメージコレクションサイズに関して、より単純なハッシング方式を使用することができる。
【０１０９】
Ｉ．ｂ．１．ピクチャコーパスに関するファンツリーの作成
指紋データベース（たとえば、図１１の１１９０）内の指紋は、メモリサイズおよびローディング時間を減らすために圧縮されたコンパクトなフォーマットで格納される。このセクションでは、ピクチャコレクションから抽出されたコンパクトな指紋データベースからファンツリーをどのように作成するかを説明する。ファンツリーは、所定のピクチャコーパスについて１回だけ作成する必要がある。ファンツリーが作成された後に、ファンツリーデータ構造（指紋を含む）を、メモリ内に保存し、その後、任意の個数のイメージクエリについて再利用することができる。
【０１１０】
所定の指紋データベース１３０５からファンツリーを作成するプロセス１３００を、図１３に示す。このプロセスは、次ページモジュール１３１０を使用して一回に１ページのイメージずつ指紋データベース内容を読み取ることによって開始される。ページごとに、次の情報がデータベースから取り出される：（ａ）一意イメージＩＤ（指紋データベース作成時に一意イメージＩＤモジュール（たとえば、図１１の１１４０）によって割り当てられる）、（ｂ）現在のページ上の識別される指紋の個数、および（ｃ）現在のページの指紋レコードの内容。
【０１１１】
一意イメージＩＤは、特定のページのイメージならびにそれが属する文書を一意に識別する整数内部表現である。イメージＩＤ表現は、内部のインデクス付けに便利に使用される（文書の従来のＵｎｉｖｅｒｓａｌ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ（ＵＲＬ）ストリングを使用するよりコンパクトであり、より少ないスペースを占めるので）。実際のピクチャ内容は、指紋データベースには絶対に格納されず、指紋情報だけが格納される。
【０１１２】
次指紋モジュール１３２０は、データベースから、現在のページに関する現在の圧縮された指紋エントリを取り出す。指紋解凍モジュール１３３０は、指紋内容を解凍し、進行して、キーポイント除外モジュール１３４０を使用して複数の非アンカキーポイントを除外することによって指紋の列を生成する。結果の指紋は、使用される方法に応じて、ハッシング構造またはファンツリー構造に格納される。
【０１１３】
ファンツリーの場合に、新しい指紋は、一回に１つの指紋ずつ、順次追加される。キーポイント除外モジュール１３４０の出力の候補指紋ごとに、順列ソートモジュール１３５０が、候補指紋の組合せを処理して、ｓｍａｌｌｅｓｔ  ｌｅａｓｔ  ｃｏｍｍｏｎ  ｑｕａｎｔｉｚａｔｉｏｎ  ｄｉｇｉｔ（ＳＬＣＤ）アルゴリズムまたは他の方法に従って指紋の列の順列を生成する。
【０１１４】
順列ソートモジュール１３５０の出力は、現在の処理対象の指紋の並び替えられた指紋量子化比の列のリストである。このリストは、ｓｍａｌｌｅｓｔ  ｌｅａｓｔ  ｃｏｍｍｏｎ  ｄｉｇｉｔアルゴリズムの特性に従って、少なくとも１つの順列エントリを含むことが保証される。時々、並び替えられた指紋の列のリスト内に複数の順列がある場合がある。並べ替えられた指紋の列の数は、ＳＬＣＤ法の下では変化する可能性がある。順列を使用しない本願の実施形態では、順列ソートモジュール１３５０がバイパスされ、キーポイント除外モジュール１３４０からの並び替えられない指紋の列が、次置換モジュール１３６０の入力に直接に渡されることに留意されたい。
【０１１５】
次順列モジュール１３６０は、順列ソートモジュール１３５０の出力から現在の指紋の順列の列を取り出す。並び替えられた指紋のそれぞれが、順次登録される。ファンツリー順列登録モジュール１３７０が、現在の順列をファンツリーに登録し、対応するデータレコードを既存の指紋データ内容に追加する。登録処理は、最初からファンツリーを作成する処理と同等であり、新しい指紋の列を記述するのに必要なノードおよび分岐のみを追加することにより行われる。指紋の経路全体がファンツリー内に既に存在する場合には、ツリー構造は変更されず、現在の指紋レコードだけが、最後の以前のエントリにそれをリンクすることによって既存の指紋データ内容に追加される。
【０１１６】
その一方で、新しい指紋の経路が、まだ全体としてファンツリー内に存在しない場合には、欠けているツリーノードおよび分岐が、その経路を完成するために必要に応じてファンツリーに追加される。さらに、現在の指紋レコードが、既存の指紋データ内容に追加され、新たに形成される葉ノードにリンクされる。最終結果は、ファンツリーが現在の指紋を含むように拡張され、その内容レコードが、一回に１つの指紋の経路ずつ、指紋データ内容に追加されることである。
【０１１７】
ファンツリーの代わりにハッシング方式が使用されるときには、指紋レコードは、当技術分野で周知の形で大きいハッシュテーブルにハッシュ化される。
【０１１８】
ファンツリーまたはハッシング方式のいずれかに次の指紋の順列を追加するプロセスは、最後の順列が最終順列モジュール１３７５によって検出されるまで、一回に１つの順列ずつ順次継続される。現在の順列が、まだ最後ではない間（１３７６）は、最終順列モジュール１３７５は、フローを次順列モジュール１３６０に戻ってルーティングして、次の順列を入手し、その内容のファンツリー／ハッシュテーブルへの登録に進む。このプロセスは、最後の順列が処理されるまで（１３７７）、継続される。
【０１１９】
現在の処理対象の指紋のすべての順列を登録した後に、この手順は、最終除外キーポイントモジュール１３８０に移る。これが最後の候補指紋の組合せではない場合（１３８１）には、このプロセスは、キーポイント除外モジュール１３４０に戻って、次のキーポイントを除外された次の候補指紋の組合せを処理する。これは、除外されるキーポイントのすべての可能な組合せがファンツリーに登録され１３８２、その内容が指紋データ１３０５に追加されるまで継続される。
【０１２０】
解凍、キーポイントの除外、順列のソート、結果として得られるすべての順列のファンツリーまたはハッシング方式への登録のプロセスは、最後の指紋が最終指紋モジュール１３８５によって検出されるまで、一回に１つの指紋の組合せずつ順次継続される。現在の指紋が、まだ最後の指紋ではない間（１３８６）、最終指紋モジュール１３８５は、フローを次指紋モジュール１３２０に戻して、次の指紋を入手し、進行して、解凍し、置換をソートし、それらのすべてをファンツリーまたはハッシュテーブルに登録する。このプロセスは、現在の処理対象のページの最後の指紋が処理される（１３８７）まで継続される。
【０１２１】
現在の処理対象のページのすべての指紋が、上で説明した形で処理され、そのすべての順列がファンツリーに成功して登録され、指紋データ内容に追加されたならば、ページＵＲＬ追加モジュール１３９０が、現在のページのＵＲＬ（Ｕｎｉｖｅｒｓａｌ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）を取り出し、内部の一意イメージＩＤから真の文書ＵＲＬへの逆マッピングを別々のデータ構造テーブルに追加する。一意イメージＩＤ番号は、完全なＵＲＬの文字列よりコンパクトなので、内部的に使用される。
【０１２２】
最後に、指紋データベース１３０５から指紋を取り出し、解凍し、ソートし、すべての順列をファンツリーおよび指紋データレコードに登録するためのページの処理は、最後のページが最終ページモジュール１３９５によって検出されるまで、一回に１ページずつ順次継続される。現在のページが、まだ最後のページではない場合には、最終ページモジュール１３９５は、フローを次ページモジュール１３１０に戻して、次のページを入手し、進行して、その指紋の順列の内容をファンツリーおよび関連する指紋データ内容に登録（１３７０）する。このプロセスは、最後のページが初期クエリの使用のために準備される（１３９７）まで継続され、その後、このプロセスは終了する（１３９８）。
【０１２３】
ファンツリーの作成のプロセス全体を、最初のイメージクエリの前にオフラインで行うことができる。指紋データベースが、本願の実施形態に従って準備されたならば、それを、後続のイメージクエリについて再利用することができる。いくつかのターゲットイメージの追加または除去の後など、基準イメージデータが変更された場合にのみ、ファンツリーを再作成する必要がある。
【０１２４】
Ｉ．ｃ．ランタイムクエリ
クエリ指紋を照合するプロセス１４００を、図１４に示す。照合されるクエリイメージ１４１０が、入力で提示され、処理されて、キーポイント識別ステップ／モジュール１４２０によって候補キーポイント位置を識別される。１４２０でのキーポイント識別プロセスは、クエリイメージについて期待されるより低い品質に関連する顕著な相違を伴って、前に説明したピクチャコーパスに関するキーポイントを見つけるのに使用されるプロセスに類似する。
【０１２５】
クエリイメージ１４１０の候補キーポイントのリスト１４２５を処理して、相対的なキーポイントの強さ、スケール、位置、および他のキーポイントへの近接に基づいて適切なアンカキーポイントの小さいサブセットを選択する。その強さに起因して、アンカキーポイントは、クエリイメージとターゲットイメージとの両方で高い確率で見つけられる可能性が高い。
【０１２６】
キーポイントは、指紋化モジュール１４３０によって小さい局所近傍グループ内で処理されて、照合のための候補クエリ指紋が生成される。クエリ指紋は、キーポイント識別モジュールの出力での候補キーポイントごとに計算される。各クエリ指紋は、（ａ）現在のキーポイント位置、（ｂ）現在のキーポイント位置に最も近い、事前に決定された個数のアンカキーポイント、および（ｃ）複数の最近近傍非アンカキーポイントの２Ｄ位置、から計算される。クエリイメージに関する指紋化法は、ピクチャコーパスに関する指紋化方法に類似する。ただし、クエリイメージについて期待されるより低い品質（後述のノイズガード法を導入する）および異なるクエリ指紋順列方式に起因する顕著な例外を伴う。
【０１２７】
本願の一実施形態では、入力イメージ内で識別される使用可能なキーポイントのすべてが使用される。もう１つの実施形態では、使用可能なキーポイントは、相対的な強さと、キーポイントのスケール、位置、および／または他のキーポイントへの近接などの他の考慮事項とによって、ならびに固定された個数の出力すべき最良のキーポイントだけを選択することによってソートされる。第３の実施形態では、入力イメージ区域１４１０を（オーバーラップするまたはオーバーラップしない）領域のセットに下位分割することができ、複数の好ましいキーポイントを、１つの領域が他のすべての領域に優位を占めるのを防ぐために、各領域から選択することができる。さらに本願の第４の実施形態では、指紋化モジュール１４３０は、指紋の列内の数字または数字パターン出現の頻度に分析に基づいて、最もよい指標となる候補のクエリ指紋だけを選択することができる（まれで異常な数字パターンが、よりよい指標となるものなので）。
【０１２８】
指紋化モジュール１４３０の出力は、局所キーポイントのグループごとの候補クエリ指紋のリスト１４３５である。
【０１２９】
候補クエリ指紋１４３５のリストは、特定の応用例および所望の性能レベル（処理時間および正確さに関する）に応じて、すべての識別可能な指紋のすべてまたはサブセットのみを含むことができる。たとえば、最もよい指標となる指紋の小さいサブセットだけを、相対的な指紋の強さに基づいて選択することができる。代替案では、処理時間が主な関心事ではないときに、すべての使用可能な候補クエリ指紋を、よりよい正確さのために使用することができる。したがって、指紋化モジュール１４３０の出力での候補指紋の個数を、正確さと速度との間のトレードオフとして調整することができる。
【０１３０】
指紋化モジュール１４３０のクエリ指紋を、その後、ファンツリーアドレッシングモジュール１４４０によってファンツリー経路に変換し、ファンツリーアドレッシングモジュール１４４０は、各クエリ指紋の対応する葉ノードを判定する。葉ノード内容を、指紋データ構造１４９０内で検索して、特定の葉ノードの一致する指紋レコード１４７０のリストを取り出す。
【０１３１】
ファンツリーではなくハッシング方式が使用されるときには、クエリ指紋をアドレッシングモジュール１４４０によってハッシュアドレスに変換する。ハッシュアドレスは、ハッシュテーブルの内容から候補指紋レコード１４７０の類似するリストを検索し、取り出すのに使用される。
【０１３２】
指紋照合モジュール１４５０は、候補クエリ指紋１４３５の情報を、指紋レコードの葉ノードリストに含まれる各指紋エントリ１４７０と照合する。候補クエリ指紋１４３５と特定の指紋エントリとの間に正確な一致がある時に限って、このシステムは、一致する指紋レコード１４７０から対応するイメージＩＤおよび指紋ＩＤ組合せを取り出し、進行して、カウンタ配列における一意の＜イメージＩＤ／指紋ＩＤ＞の組合せについて、モジュール１４５０の指定された指紋のカウンタを初期化し（初回のみ）、増分する。このシステムは、（別々のデータ構造内で）指紋照合フェーズ中に少なくとも１つの一致する指紋に出会ったイメージＩＤのリストをも維持する。指紋照合１４５０は、すべての候補クエリ指紋１４３５をこの形で処理し終えるまで継続される。結果として得られる一致カウンタ結果１４５５の配列の内容は、次に、最終スコア分析およびコレクション内の最もよく一致するピクチャまたはピクチャのセットの判定のために、指紋分析フェーズ１４６０に転送される。
【０１３３】
指紋分析フェーズ１４６０は、一致カウンタ配列の内容を分析して、最終的な一致結果を判定する。特定の分析１４６０は、応用例の特定の照合目的に依存する。複数の可能な照合目的があり得る。本願の一実施形態では、目的は、ピクチャコレクション内の最良イメージ一致を見つけることである。この場合、最も多い指紋一致（最高スコア）を集めたイメージＩＤすなわち指紋一致ＩＤ１４６５が、よい候補である。さらに、個々のカウントを、事前に指定された最小個数未満の指紋一致を有するページ一致を除外するために、信頼数として使用することができる。カウントを、より均一の相対的尺度を提供するために１ページ上の指紋の総数によって正規化することもできる（イメージ内容に応じて、いくつかのページが他のページより多数の指紋を有する場合があるので）。
【０１３４】
本願のもう１つの実施形態では、目的は、事前に指定された指紋カウントの最小値（または上記と同様の信頼レベルの最小値）を満足するコレクション（またはそのサブセット）内のすべての一致するイメージのリストを返すこととすることができる。
【０１３５】
さらに本願のもう１つの実施形態では、オリジナルイメージ区域をサブイメージのグリッドに下位分割する（オーバーラップを伴ってまたは伴わずに）ことができ、指紋照合分析を、よい指紋照合が得られる区域の荒い密度プロファイルを提供するために各サブイメージ内で別々に実行することができる。後者の分析は、オリジナルイメージの一部が欠けているか、シーン内の別の物体によって部分的にさえぎられる状況に特に適切である。この場合に、共通のイメージ区域（欠けておらず、またはさえぎられていない）は、それでも、高い度合の一致する指紋カウントを有する。さらに本願のもう１つの実施形態では、イメージの区分け（上記で概要を示したサブイメージへの分割による）を使用して、他のイメージ区域に対するあるイメージ区域の重みを強調することができる。たとえば、イメージの中央（焦点を合わされた物体がある場合がある）付近の指紋一致により大きい重みを与え、外側周辺の指紋一致により少ない重みを与えることである。この手法は、フレーム境界アーティファクト（イメージ外側境界に沿った）を除去するのに特に有用である。たとえば、電子オリジナルおよびその印刷された版の取り込まれたイメージ（たとえば、スキャナまたはセル電話機カメラからの）など、異なるソースからのイメージを照合する時である。後者の技法は、イメージ境界の外側の人工的背景の導入（たとえば、紙の白またはブルースクリーンカラーに対するイメージの角など）に起因する候補キーポイントの形成を避けるのに効果的に使用することができる。
【０１３６】
指紋分析モジュール１４６０の出力は、所望の照合目的に応じて、単一のまたは複数の一致するイメージＩＤ１４６５の最終リストである。文書ＵＲＬルックアップモジュール１４８０では、このリストが、指紋分析モジュール１４６０の一意イメージＩＤの内部整数表現から真の文書ＵＲＬ（Ｕｎｉｖｅｒｓａｌ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）に変換され、この文書ＵＲＬは、１つまたは複数の一致するイメージの位置を識別する。この変換は、文書ＵＲＬ検索モジュール１４８０内で達成され、一致結果１４８５が作られる。一実施形態で、指紋データベース１４９０の生成時に一意イメージＩＤモジュールによって作成される逆マッピングテーブルが、一意イメージＩＤをインデックスとして使用してＵＲＬを検索するのに使用される。最後に、照合された結果１４８５が出力１４９５に渡される。出力１４９５は、電子ディスプレイなどのディスプレイ、ハードコピー出力を提供するプリンタ、メモリストレージとすることができる。あるいは、結果１４８５を他の互換デバイスに送ることができる。
【０１３７】
Ｉ．ｃ．１  候補クエリキーポイントの識別
クエリピクチャイメージ内で安定したキーポイントを識別する方法は、図６に関する議論を含む前述の議論で述べたピクチャコーパスに関する安定したキーポイントの識別に使用されるプロセスに類似する。この方法は、クエリイメージにフィルタの特定のセットを適用することと、スケールおよび空間の単一の関数Ｄ（ｘ，ｙ，ｓ）を形成するためにフィルタ出力を一緒に組み合わせることとによって、複数のスケールでクエリイメージのスケール空間ピラミッド表現を構成することに基づく。安定したキーポイント位置は、関数Ｄ（ｘ，ｙ，ｓ）が局所スケール空間近傍内でピーク値（最大値または最小値のいずれか）を達成するピクセル位置として各スケール内で識別される。
【０１３８】
図１５のクエリ候補キーポイント識別流れ図１５００に示された、図６を用いる説明からの１つの相違は、イメージエンハンスメントモジュール１５１０が、クエリイメージの潜在的により低い品質に対処するために、適応しきい値モジュール６２０の前に導入されることである。ある種の応用例で、クエリイメージは、低品質なセル電話機カメラを用いて、ターゲットイメージの印刷されたハードコピーまたはスクリーン版から取り込まれる場合がある。この状況で、クエリイメージは、低解像度、ブラー、ノイズ、変化する照明、反射、透視ビューイングひずみなどの複数の要因に起因して、かなりのイメージ劣化を示す場合がある。したがって、クエリキーポイント識別の前に入力イメージ品質を改善するために必要なイメージエンハンスメント（image enhancement）を適用するために、第１のイメージエンハンスメントモジュールを追加することが望ましい場合がある。特定のエンハンスメントおよびイメージエンハンスメントモジュールに対する変更は、応用例、クエリイメージの期待される品質、予想されるイメージひずみ、ならびに所望の正確さおよび性能目標に依存する。イメージエンハンスメントモジュール１５１０を、リアルタイムでクエリイメージを照合するシステムおよび方法を表す図１４のキーポイント識別モジュール１４２０の前に導入することもできることをも理解されたい。
【０１３９】
本願の一実施形態では、イメージエンハンスモジュールは、クエリイメージのシーンにまたがる変化するカメラの照明を推定するために背景推定モジュールを含む。背景推定は、あるピクセル区域で最も明るいピクセルレベルの推定と、クエリのシーンにまたがってゆっくり変化する照明をモデル化するための低次２次元多項式曲線のあてはめと、を含むことができる。多項式モデルを反転することによって、イメージにまたがる変化する背景照明の影響を、中和し、キーポイント識別プロセスへの干渉および潜在的に明るいまたは暗いキーポイント特徴の適度な識別の失敗を防ぐことができる。
【０１４０】
本願の他の実施形態では、イメージエンハンスモジュールは、キーポイント抽出の前にクエリイメージの品質をさらに改善するために、コントラスト強調、シャープニング（ｓｈａｒｐｅｎｉｎｇ，鮮鋭化）、およびノイズ除去などの他の既知のイメージ処理技法を含むがこれらに限定はされない。
【０１４１】
Ｉ．ｃ．２  クエリ指紋の計算
このセクションでは、クエリ指紋を識別し、ファンツリー構造内の関連するピクチャコレクションの指紋との照合のためにそれらのクエリ指紋を準備するプロセスを説明する。
【０１４２】
クエリ指紋化プロセスを、図１６に示す。クエリイメージの指紋化方法は、図１０に関して詳細に述べた、ピクチャコーパスの指紋化方法に類似する。したがって、説明の便宜のために、図１０に対応するモジュールには、前と同一の符号を付す。しかし、クエリイメージについて期待されるより低い品質（たとえば、ノイズガードモジュール１６３０の導入）および異なるクエリ指紋化順列方式（たとえば、第１順列モジュール１６４０）に関連する複数の顕著な相違がある。
【０１４３】
第１の相違は、指紋データベース内にクエリ指紋を保存する必要がないので、クエリ指紋が圧縮されない（したがって、図１０の圧縮量子化比モジュール１０７０は使用されない）ことである。その代わりに、クエリ指紋は、単に、一回に１つのクエリ指紋ずつ、処理され（たとえば、量子化比追加モジュール１６２０、ノイズガードモジュール１６３０、第１順列モジュール１６４０）、照合される（たとえば、指紋照合モジュール１６５０）。各クエリ指紋は、照合すべき関連する候補指紋のリストを取り出すために、ファンツリーまたはハッシュテーブル内で検索される。所定のクエリ指紋の照合プロセスが完了したならば、そのクエリ指紋は、破棄され、照合結果（一致カウンタ配列に関する）だけが、あるクエリ指紋から次のクエリ指紋へ累算され続ける。
【０１４４】
第２の相違は、クエリ指紋化が、順列のソートを必要としないことである。というのは、すべての順列が、ピクチャコレクションの準備フェーズ中に前もって生成され、クエリ時には１つの順列すなわち最初に現れる順列（第１順列モジュール１６４０）だけが使用されるからである。すべての可能な順列が、前もって準備され、ファンツリーまたはハッシュテーブル内に登録されているので、すべての有効な順列が、対応する一致を有しなければならない。
【０１４５】
第３の相違は、以下で説明するノイズガードの概念（たとえば、１６３０）を、ファンツリー準備フェーズ中に、またはその代わりにクエリ時に適用できることである。ノイズガード法のクエリ時の適用は、余分なストレージメモリを必要としないという点でより経済的であり、ファンツリーは、計算のわずかな増加で、ニアミス指紋を扱う便利な形を提供する。
【０１４６】
もう１つの重要な相違は、クエリ照合の時間を最小化する必要に関係する。多くの応用例で、クエリ照合は、リアルタイムで行われるが、システムは、ある厳しい性能要件を満足するかそれを超えることを期待される。そのような状況では、一般に、実際のクエリ照合時間を最小にするために、潜在的な指紋組合せのソートおよび可能なすべてのものを前もって準備することにより多くの時間を割り当てる、アンバランスな前倒し（ｆｒｏｎｔ−ｌｏａｄｅｄ）システムを有することが望ましい。たとえば、ファンツリーまたはハッシュテーブルの作成のオフラインステージ中に、本願の実施形態の方法は、欠けているキーポイントの組合せを含むすべての可能な指紋の順列を前もって登録する。これらの組合せのうちのいずれか１つでも、指紋の一致を得るのに十分である。最初の一致（たとえば、１６５５）が観察されたならば、特定の指紋について追加の一致を探し続ける必要はない。
【０１４７】
むしろ、このプロセスは、すべての一致するターゲット指紋のターゲット文書の一致カウンタ配列更新１６６０を増分し、このプロセスは、最後のキーポイントに出会ったかどうかを判定する（１０９０）ために進行する（１６６５）。その代わりに、指紋照合モジュール１６５０が、一致を見つけない（１６５６）ときには、このプロセスは、最終除外モジュール１６７０に進み、ここで、このプロセスが、最後のキーポイントを除外しなかったと判定された（１６７５のＮＯ）ならば、このプロセスは、キーポイント除外モジュール１６１０に移動し、新しいキーポイントを除外し、そして、このプロセスはさらに進む。キーポイントが最後に除外されたキーポイントではないと判定される（１６７６のＹＥＳ）ときには、このプロセスは、最終キーポイントモジュール１０９０に継続して、すべてのクエリキーポイントに出会ったかどうかを判定する。追加のまだ未処理のクエリキーポイントがある（１０９１のＮＯ）場合には、フローは、次キーポイント１０２０に戻って、次のキーポイントを処理し、そうではない（１０９２のＹＥＳ）場合には、このプロセスは、最後のクエリキーポイントで終了する。全体的なクエリ時間は、よりありそうな一致をソートし、ファンツリーまたはハッシュテーブル内に最初に配置することによって最小化される。
【０１４８】
もう１つの相違は、照合すべき第１クエリ順列１６４０が、この実施形態による全体的照合時間を最小にするために、特定の指紋および他の欠けているキーポイントの組合せについてさらなる順列の検索を停止させることである。
【０１４９】
Ｉ．ｃ．３．ノイズガード法
図１６で使用されて示されている、ノイズガードモジュール／方法１６３０は、既存の方法に共通する問題を克服するために指紋の計算中に任意選択で適用することができ、優れた指紋照合性能につながることができる。
【０１５０】
ノイズガード１６３０は、パーシスタント・レシオ値が量子化の境界の近くに該当する時に、キーポイントの位置の小さい変化（たとえば、ノイズおよび／または有限の丸め誤差に起因する）が異なる量子化整数値につながるのを防ぐように設計される。ノイズガード法は、パーシスタント・レシオ値から最も近い量子化しきい値までの距離を監視する。この距離が、事前に指定された公差レベル未満である時に、ノイズガードモジュールは、いずれかの場合に指紋の一致が得られるように、可能な候補として両方の量子化列を生成する。
【０１５１】
指紋
「１４６０３６１６３７６７５６３２６３２２４７７６６２６５２２０６６６７」
を検討されたい。
【０１５２】
第５パーシスタント・レシオの値が、１．０のインターバル境界のすぐ下の０．９９９９であり、したがって、図８Ｂに示されているように‘３’の整数値に量子化されると仮定する。これは、コレクション内のターゲットイメージに関する。
【０１５３】
劣化したクエリイメージ内で、このパーシスタント・レシオの計算におけるノイズまたはある小さい丸め誤差の存在が、その値をインターバル境界のすぐ上、たとえば１．０００１（０．９９９９からの０．０００２という非常に小さい変化）に押し上げることが十分にあり得る。この値は、今は１．０より大きいので、‘３’ではなく‘４’に量子化され、結果のクエリ指紋は、もはや「１４６０４６１６３７６７５６３２６３２２４７７６６２６５２２０６６６７」に一致しなくなる。第５の数字での分岐が、ここで、完全に異なるファンツリー経路につながる。
【０１５４】
ノイズガード法は、量子化前の入ってくるパーシスタント・レシオを監視して、それらが整数境界の近くであるかどうかを調べる。十分に近いものに限って、両方の指紋の列が、ファンツリーに入力される。すなわち、単一の指紋の列ではなく、２つの指紋すなわち、ターゲットイメージの第５番目の数字に‘３’を有する指紋および‘４’を有する指紋が入力される。
【０１５５】
クエリイメージの時に、クエリ指紋が計算され、‘３’または‘４’のどちらであるかは問題ではない。というのは、いずれもファンツリー内に存在し、正しい一致が必ず見つかるからである。
【０１５６】
ノイズガード法の威力は、整数境界に近いときに限って組合せを追加することである。そうではなく、すべての数字について盲目的に追加を試みる場合には、極端に大きい数２＾３５の組合せが、指紋ごとに生成されるはずである。
【０１５７】
従来のハッシング方式が、そのような数字の変化に敏感であることをも指摘しなければならない。これは、従来のハッシング方式において、入力列をランダムに「ハッシュ化」し、２つのほぼ同一の数字の列が通常はお互いからはるかに離れ、他方の位置を知ることによって一方の位置を判定する効果的な形がないからである。それが、ハッシュテーブルではなくファンツリー法を使用することの１つの利益である。
【０１５８】
ノイズガードモジュールを使用することの１つの利益は、ノイズガードモジュールが、量子化のノイズ感度を下げることによって指紋化の頑健性を改善することである。しかし、これは、量子化がしきい値の近くになるたびに候補指紋の列の数が２倍になるので、追加計算という犠牲を払って達成される。幸運なことに、三角形比がしきい値の近くになる事象は、非常にまれであり（クエリイメージのノイズレベルに依存する）、したがって、影響は、平均して非常に大きくはない。さらに、全体的な性能レベルを維持するために、ノイズガードが各指紋で適用される回数に対して最大限度をセットする（量子化しきい値に近い多数の三角形比を有する指紋が、非常に特徴的ではないので）。この実施態様では、ノイズガードモジュールは、５回の限度を有して使用される。
【０１５９】
ノイズガード法は、ピクチャコレクションの前処理時にオフラインで、またはクエリ時にオンラインでのいずれかで適用することができる。ストレージの展望からは、コレクション全体について前もって行うよりも、クエリ時に追加のノイズの組合せを生成する方が経済的である。しかし、クエリ時のノイズガードの適用は、追加計算に起因してリアルタイム性能をわずかに低下させる可能性がある。ストレージとリアルタイム性能との間のトレードオフは、期待されるノイズレベルおよび量子化誤差の尤度に依存して最適化することができる。
【０１６０】
Ｉ．ｃ．４．クエリ指紋一致のカウント
このセクションでは、指紋照合を高速で効率的にするように設計された、図１６の指紋照合モジュール１６５０のさらなる詳細を説明する。
【０１６１】
クエリ指紋照合モジュール１６５０は、照合結果を記憶するために、次の３つのタイプのデータ配列構造をメモリ内に含み、利用する。
【０１６２】
（ａ）ＳｅｅｎＤｏｃｓ配列は、現在のクエリ指紋の照合の間にこれまでに出会った文書ＩＤのリストを含む。ＳｅｅｎＤｏｃｓリストは、新しいクエリ指紋の組合せのそれぞれの開始に伴ってクリアされる。
【０１６３】
（ｂ）ＳｅｅｎＦｉｎｇｅｒ配列は、現在のクエリ指紋の照合の間にこれまでに出会った指紋ＩＤのリスト（文書ＩＤごとの）を含む。ＳｅｅｎＦｉｎｇｅｒ配列は、新しいクエリイメージごとにクリアされる。
【０１６４】
（ｃ）ＭａｔｃｈＣｏｕｎｔ配列は、現在のクエリ指紋の照合の間にこれまでに出会った文書ＩＤごとの一致する指紋のカウントのリストを含む。ＭａｔｃｈＣｏｕｎｔ配列は、新しいクエリイメージごとにクリアされる。
【０１６５】
本願の実施形態で、連続するイメージインデックス番号が、便利に上記のアレイ（ｂ）および（ｃ）のピクチャイメージに割り当てられることに留意されたい。イメージインデックスから一意イメージＩＤ番号への変換は、別々のデータ構造内で維持される。
【０１６６】
図１６の指紋照合モジュール１６５０の詳細なブロック図を、図１７に図１７００として示す。指紋照合は、図１６の第１順列モジュール１６４０の出力からのクエリ指紋の組合せの列から始まる。クエリ指紋の組合せは、上で説明したｓｍａｌｌｅｓｔ  ｌｅａｓｔ  ｃｏｍｍｏｎ  ｑｕａｎｔｉｚａｔｉｏｎ  ｄｉｇｉｔ（ＳＬＣＤ）に従って並べ替えられる。クエリ列取得モジュール１７１０は、使用可能なセットから、照合される現在のクエリ指紋の組合せの列を入手する。
【０１６７】
ファンツリーアドレスモジュール１７１５は、現在のクエリ指紋の列を使用して、ファンツリー構造内の指紋経路をたどる。ファンツリー経路に沿ったいずれかの点で、現在のツリーノードが行き止まり（すなわち、投入されていないツリーノード）につながる場合には、現在の指紋の照合は、打ち切られ、このプロセスは、最終クエリモジュール１７８５に進み（１７１６）、照合すべき次のクエリ指紋の列に移る。空のツリーノードの場合は、現在のクエリ指紋の列が、量子化されたクエリ指紋の列をもはや一致しなくさせる可能性があるひずみおよびノイズによって激しく劣化される時に発生し得る。少数の指紋の組合せ（所定のページについて数千個のうちの）が照合に失敗する時には、空ノードの場合を単純に無視することができる。しかし、多数のクエリ指紋が、空のツリーノードにつながる挙動を示し始める場合には、それが、クエリイメージがコレクション内に一致するイメージを有しないことのよい表示である可能性がある。
【０１６８】
通常の状況で、ファンツリーアドレスモジュール１７１５は、ルートノードから始まり、以前に説明した葉ノードで終わる、ファンツリーを通る現在のクエリ指紋の経路をたどる。葉ノードリスト取得モジュール１７２０が、対応する葉ノードリストのアドレスを取り出し、この葉ノードリストは、照合すべき関連する指紋レコードのリストを含む。
【０１６９】
代替案で、ファンツリーではなくハッシュテーブルが使用される場合には、ハッシュアドレスが、クエリ指紋から計算され、ハッシュテーブル内容の検索と、照合すべき関連する指紋レコードのリストの取出しとに使用される。
【０１７０】
リストレコード取得モジュール１７２５は、関連する指紋レコードのリストから現在の指紋レコードを取り出す。列比較モジュール１７３０は、クエリ指紋の列１７２６を、関連する指紋リストからのターゲット指紋の列（すなわち、コレクション指紋）１７２７と比較する。正確一致モジュール１７３５は、この２つの指紋の列の間の正確な一致を探す。正確な一致とは、すなわち、対応する量子化比の対のそれぞれが同一の値を有することである。単一の不一致は、１つの量子化比の位置であっても、不一致（１７３６）を宣言するのに十分である。クエリ指紋の列と現在のターゲットエントリとの間の正確な一致が見つからない場合には、フローは、最終リストエントリモジュール１７８０に進んで、次の葉ノードリストエントリに移る。
【０１７１】
しかし、クエリ指紋の列とターゲット指紋の列との間に正確な一致が見つかる場合（１７３７）には、ページＩＤ／指紋ＩＤ取得モジュール１７４０が、現在の一意イメージＩＤおよび指紋ＩＤを現在の葉ノードリストレコードから取り出す。既出ページＩＤモジュール１７４５は、一意イメージＩＤをＳｅｅｎＤｏｃｓ配列内で検索して、現在のピクチャに現在のクエリ指紋の照合の間に既に出会ったかどうかを判定する。既に出会っている場合には、ページインデックス取得モジュール１７５０が、現在のピクチャの対応するページインデックスを、一意イメージＩＤ番号を使用してマッピングテーブルから取り出す。そうでない場合には、現在のページは、まだ出会ったことがない新しいピクチャである。新規ページインデックスモジュール１７５５が、新しいページインデックス番号を現在のピクチャに割り当て、今これに出会っていることを示すために一意イメージＩＤ番号を使用してＳｅｅｎＤｏｃ配列に新しいエントリを追加する。それと同時に、新規ページインデックスモジュール１７５５は、Ｍａｔｃｈ  Ｃｏｕｎｔ配列の現在のページインデックスアドレスに新しいエントリを追加し、その値を０（このページの一致する指紋なし）に初期化もする。
【０１７２】
次に、既出指紋ＩＤモジュール１７６０が、現在の葉ノードリストレコードから得られた現在の指紋ＩＤに現在のクエリ指紋の照合の間に既に出会っているかどうかを調べるためにチェックする。指紋ＩＤをチェックする理由は、上述のように、各指紋が、それぞれが除外されるキーポイントの異なる組合せを用いてファンツリーまたはハッシュテーブルに複数回入力されるからである。しかし、組合せのうちのいくつかは、ノイズおよびイメージひずみの存在に起因して、正確な一致で終わらない場合がある。したがって、いくつかのイメージが他のイメージより高いカウントを複数の指紋の組合せから得る状況を防ぐために、各指紋の指紋ＩＤを記憶する必要がある。本願の実施形態では、この問題に対する解決策は、指紋ＩＤをチェックすることと、一意の指紋ＩＤごとに１回だけＭａｔｃｈ  Ｃｏｕｎｔ配列を増分することとによる。
【０１７３】
既出指紋ＩＤモジュール１７６０によって、現在の指紋ＩＤに既に出会っている場合には、Ｍａｔｃｈ  Ｃｏｕｎｔ配列を増分する必要はない。指紋エントリ更新モジュール１７６５は、単に、必要に応じてページインデックスおよび指紋ＩＤを用いてＳｅｅｎＦｉｎｇｅｒ配列を更新する。その一方で、見られた指紋ＩＤモジュール１７６０によって、現在の指紋ＩＤにまだ出会ったことがない場合には、新規指紋エントリモジュール１７７０が、新しいＳｅｅｎＦｉｎｇｅｒエントリを割り振り、その内容が現在のページインデックスの現在の指紋ＩＤ値（すなわち、ページＩＤ／指紋ＩＤ取得モジュール１７４０での）になるようにセットアップする。さらに、ページカウント＋１モジュール１７７５が、現在のページインデックスのＭａｔｃｈ  Ｃｏｕｎｔ配列の内容を１つだけ増分して、この特定の指紋ＩＤに現在のクエリ照合の間に出会った初めての時を示す。
【０１７４】
現在の指紋レコードの照合が完了した後に、最終リストエントリモジュール１７８０は、まだ照合されていないエントリが取り出された指紋レコードリストにまだあるかどうかを調べるためにチェックする。現在の指紋レコードが、まだ最後の葉ノードエントリではない場合には、リストエントリモジュール１７８０は、フローをレコード取得モジュール１７２５に戻して、葉ノードリストから次の指紋レコードを入手し、進行して、それをクエリ指紋の列と照合する。対ごとの照合プロセスは、最後の指紋レコードが処理されるまで継続される。
【０１７５】
現在の葉ノードリスト内のすべての指紋レコードが、すべて取り出され、指紋が、クエリ指紋の列と照合された後に、この手順は、最終クエリモジュール１７８５に移る。これが、最後の候補クエリ指紋の列ではない場合には、このプロセスは、クエリ列取得モジュール１７１０に戻ってルーティングされて、次の候補指紋の組合せを処理し、進行して、これを関連する指紋の列それ自体のリストと照合する。これは、クエリ指紋の列のすべての可能な組合せが、すべて、関連するファンツリーまたはハッシュテーブル内容と照合されるまで継続され、その後、このプロセスは終了する（１７９０）。
【０１７６】
指紋照合プロセスの最終結果は、Ｍａｔｃｈ  Ｃｏｕｎｔ配列の内容であり、これは、クエリイメージと一致する少なくとも１つの指紋を有するコレクション内の関連するピクチャごとの一致する指紋のカウントを含む。Ｍａｔｃｈ  Ｃｏｕｎｔ配列内のエントリの個数は、クエリ照合プロセスの間に出会った新しいピクチャの個数と同一であり、通常、コレクション内のピクチャの総数の小さい部分にすぎない。ピクチャコレクションの大多数を含むすべての他のピクチャは、特定のイメージクエリ中に一度も見られない（それらが、クエリイメージと共通する指紋を有しないので）。Ｍａｔｃｈ  Ｃｏｕｎｔ配列内のイメージエントリが、そのランニングページインデックスによってアドレス付けされることに留意されたい。しかし、ページインデックスは、クエリ照合プロセス中に作成されるマッピングテーブルを検索することによって、簡単に一意イメージＩＤ番号に変換することができる。
【０１７７】
最後に、Ｍａｔｃｈ  Ｃｏｕｎｔ配列内の照合結果が、最終スコアリング分析およびコレクション内の最良の一致するイメージまたはイメージのセットの判定のために、指紋分析モジュール（たとえば、図１４の１４６０）に転送される。
【０１７８】
Ｉ．ｃ．５．最終判断
クエリ指紋照合プロセス中に、Ｍａｔｃｈ  Ｃｏｕｎｔ配列は、クエリイメージと一致する少なくとも１つの指紋を有する関連ピクチャのそれぞれの一致する指紋の個数を累算する。通常、コレクション内の一つの特定のイメージすなわち一致するピクチャは、多数の一致する指紋（大きいカウント）を有し、多数の他のイメージは、特にコレクションサイズが大きい時に、少数の偶然の一致する指紋を有する可能性がある。
【０１７９】
上述のように、Ｍａｔｃｈ  Ｃｏｕｎｔ配列の結果の内容は、最終スコア分析およびコレクション内の最もよく一致するピクチャまたはピクチャのセットの判定のために、指紋分析モジュールに転送される。複数の可能な照合目的があり得る。目的が、ピクチャコレクション内で最良のイメージ一致を見つけることである場合には、最も多い指紋一致（最高スコア）を集めたイメージＩＤが返される。さらに、一致カウントを、事前に指定された最小個数未満の指紋一致を有するページ一致を除外するために、信頼数として使用することができる（ひずみおよび／またはノイズに起因する偶然の少数の迷いカウントを除外するために）。カウントを、より均一の尺度を提供するために１ページ上の指紋の総数によって正規化することもできる（イメージ内容に応じて、いくつかのページが他のページより多数の指紋を有する場合があるので）。
【０１８０】
代替案では、目的は、事前に指定された一致する指紋カウントの最小値（または上記と同様の信頼レベルの最小値）を満足するコレクション（またはそのサブセット）内のすべての一致するイメージのリストを返すこととすることができる。
【０１８１】
本願の一実施形態では、オリジナルイメージの区域をサブイメージのグリッドに下位分割する（オーバーラップを伴ってまたは伴わずに）ことができ、指紋照合の分析を、よい指紋照合が得られる区域の荒い密度プロファイルを提供するために各サブイメージ内で別々に実行することができる。後者の分析は、オリジナルイメージの一部が欠けているか、シーン内の他の物体によって部分的にさえぎられる状況に特に適切である。この場合に、クエリとオリジナルとの間の共通のイメージ区域（欠けておらず、またはさえぎられていない）は、それでも、高い度合の一致する指紋カウントを有する。
【０１８２】
さらに本願のもう１つの実施形態では、イメージの区分け（上で概要を示したサブイメージへの分割による）を使用して、他のイメージ区域に対するあるイメージ区域の重みを強調することができる。たとえば、イメージの中央（焦点を合わされた物体がある場合がある）付近の指紋一致により大きい重みを与え、外側周辺の指紋一致により少ない重みを与えることである。この手法は、フレーム境界アーティファクト（イメージ外側境界に沿った）を除去するのに特に有用である。たとえば、電子オリジナルおよびピクチャの取り込まれたイメージ（たとえば、スキャナまたはセル電話機カメラからの）または印刷された版など、異なるソースからのイメージを照合する時であり、ここで、取り込まれたイメージは、オリジナルイメージの一部ではないいくつかの境界または白い紙のフレームを含む場合がある。後者の技法は、上のイメージ区分け技法を利用することによって、人工的背景の導入（たとえば、紙の白またはブルースクリーンに対する回転されたイメージの角など）に起因するイメージ境界に沿った候補キーポイントの形成を効果的に避けるのに使用することもできる。
【０１８３】
図１４の指紋分析モジュール１４６０の出力は、１つまたは複数の一致するイメージＩＤの最終リストである。次に、文書ＵＲＬ検索モジュール１４８０は、このリストを、内部一意イメージＩＤ整数表現から真のピクチャＵＲＬ（Ｕｎｉｖｅｒｓａｌ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）に変換し、このピクチャＵＲＬは、一致するピクチャまたはピクチャセットの位置および対応するページ番号を識別する。最後に、一致するピクチャまたはピクチャセットが出力され（１４９０）、これは、一致するピクチャまたはピクチャセットが、ディスプレイに表示され、プリンタによって印刷され、メモリに格納され、あるいはある他の互換デバイスに送られることを意味する。
【０１８４】
ＳＩＦＴおよびそれから派生する手法とは異なって、本方法およびシステムは、並列実施に特に適する。というのは、本方法およびシステムが、本質的に、（ａ）クエリイメージ内のキーポイントの識別および指紋の列の計算と、その後の（ｂ）効率的なファンツリー検索およびクエリイメージの（多数の）独立な指紋の照合（指紋照合中の）という２つの連続するステップからなるからである。新規のキーポイント抽出方法を使用すると、キーポイント識別フェーズ（ａ）は、各ピラミッドレベルの計算が、他のピラミッドレベルと完全に独立であり、フィルタにかかわりなく正確に同一の時間を要するので、並列実施に適する。対照的に、一連のガウシアンフィルタリングおよびダウンサンプリングを利用する従来のキーポイント検出技法の反復的性質は、簡単に並列実施には向かない。フェーズ（ｂ）に関して、各ファンツリー検索を、完全に並列で行うことができる。たとえば、大きいファンツリーを、複数のプロセッサまたは独立の機械の間で分割することができる。クエリ指紋を一回に１つずつ順次処理するのではなく、すべてのクエリ指紋が、まず、そのファンツリーまたはハッシュテーブルアドレスを判定する（たとえば図１７のモジュール１７１５による、アドレス検索だけを使用して）ために処理される。次に、ソートフェーズが続いて、ファンツリー／ハッシュテーブルアドレスによってクエリ指紋のセット全体を並べ変え、所定のアドレス範囲の指紋の各グループを、ファンツリー／ハッシュテーブルのその特定の部分を含む対応するプロセッサまたは機械に送り出す。したがって、複数のファンツリー／ハッシュテーブルルックアップを、それぞれ異なる機械またはプロセッサ内で、完全に並列に行うことができ、照合結果を記録し、１つの指定された機械に転送し、最後に１つの指定された機械で組み合わせることができる。したがって、本方法は、その全体において十分に並列なマルチスケールピクチャ照合方式を提供するという利益を有する。
【符号の説明】
【０１８５】
１００  コンピュータネットワーク、１０２，１０６  ワイヤ、１０４  ワイヤジャンクション、１０８，１０９  コンピュータ、１１０  カラープリンタ、１１２  カラー以外のプリンタ、１２０，１２２  カラーレーザプリンタ、１２４  カラー以外のレーザプリンタ、１３０  スキャナ、１４０  ファクシミリ機、１５０  写真複写機、１５２  カラー写真複写機、１５４  組合せカラープリンタ／スキャナ／ファクシミリ機、１６０  独立型コンピュータ端末、１６４  独立型ハードドライブデータストレージ媒体、１７０  無線ネットワーク送受信器、１７２，１７４  ラップトップコンピュータ、１８０  ネットワーク、１９０  周辺データ取り込みデバイス、１９１  ディジタルスチルカメラ、１９２  ディジタルビデオカメラ、１９３  セル電話機、１９４  スキャナ、１９５  携帯情報端末、１９６  文書インデクシングシステム。
【図１】
2010009606.tif 000004
【図２Ｂ】
2010009606.tif 000005
【図２Ｃ】
2010009606.tif 000006
【図３Ａ】
2010009606.tif 000007
【図３Ｂ】
2010009606.tif 000008
【図４】
2010009606.tif 000009
【図５】
2010009606.tif 000010
【図６】
2010009606.tif 000011
【図７】
2010009606.tif 000012
【図８Ａ】
2010009606.tif 000013
【図８Ｂ】
2010009606.tif 000014
【図９】
2010009606.tif 000015
【図１０】
2010009606.tif 000016
【図１１】
2010009606.tif 000017
【図１２】
2010009606.tif 000018
【図１３】
2010009606.tif 000019
【図１４】
2010009606.tif 000020
【図１５】
2010009606.tif 000021
【図１６】
2010009606.tif 000022
【図１７】
2010009606.tif 000023
【図２Ａ】
2010009606.tif 000024
【図２Ｄ】
2010009606.tif 000025