(57)【特許請求の範囲】
【請求項１】
類似画像を識別するためのコンピュータ実施方法であって、
画像を受け取ることと、
前記画像のコンテンツに基づいて前記画像の画像シグナチャを生成することと、
前記画像シグナチャに対しハッシュ演算を実行して、値を生成することと、
１つ以上のハッシュ表の中で、前記値に基づいた１つ以上の候補画像を識別することと、
前記画像と前記１つ以上の候補画像のそれぞれとの間の画像類似点を決定することと、
を含み、
前記ハッシュ演算を実行することは、
１つ以上の局所性鋭敏型ハッシュ（ＬＳＨ）関数を使用して前記画像シグナチャに対し１つ以上のハッシュ演算を実行して、１つ以上の第１のハッシュ値を生成することと、
前記１つ以上の第１のハッシュ値のそれぞれに対し別のハッシュ演算を実行して、１つ以上の第２のハッシュ値を生成することと、
を含む方法。
【請求項２】
前記画像シグナチャを生成することが、
前記画像を濃淡画像に変換することと、
前記濃淡画像を１つ以上のサブ画像に分割することと、
前記１つ以上のサブ画像のそれぞれに複数の方向からエッジヒストグラムを計算することと、
前記エッジヒストグラムに基づいて前記画像シグナチャを生成することと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記１つ以上の候補画像の前記識別することが、前記１つ以上の第２のハッシュ値に基づいて識別することを含む、請求項１に記載のコンピュータ実施方法。
【請求項４】
前記１つ以上のハッシュ表が１つ以上のエントリを含んでいた、各エントリがハッシュ値、１つの画像の画像識別、または１つの画像の画像シグナチャの内の少なくとも１つを含み、前記１つ以上の第２のハッシュ値のそれぞれが前記１つ以上のハッシュ表の内の１つに対応する、請求項３に記載のコンピュータ実施方法。
【請求項５】
前記１つ以上のハッシュ演算を実行することが、
前記画像シグナチャを複数の次元を有するバイナリベクトルに変換することと、
１つ以上のＬＳＨ関数のそれぞれが、前記バイナリベクトルの単一次元バイナリベクトル、または前記バイナリベクトルの多次元バイナリベクトルの内の少なくとも１つに基づいて生成されるように、前記バイナリベクトルに基づいて前記１つ以上のＬＳＨ関数を生成することと、
前記１つ以上のＬＳＨ関数を使用することによって、前記バイナリベクトルに対し前記１つ以上のハッシュ演算を実行することと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項６】
前記１つ以上のＬＳＨ関数を生成することが、
前記１つ以上のＬＳＨ関数の各入力パラメータに、前記複数の次元の数よりも低い特定の数を代入することと、
前記バイナリベクトルから前記特定の数の次元を有するバイナリベクトルを選択して、前記１つ以上のＬＳＨ関数のそれぞれに戻り値を生成することと、
を含む、請求項５に記載の方法。
【請求項７】
前記画像類似点を決定することが、
前記画像の前記画像シグナチャと前記１つ以上の候補画像のそれぞれの画像シグナチャとの間の空間距離を計算することと、
前記空間距離に基づいて前記画像類似点を決定することと、
を含む、請求項１に記載の方法。
【請求項８】
前記空間距離に基づいて前記候補画像のそれぞれを出力すること、をさらに含む、請求項７に記載の方法。
【請求項９】
前記１つ以上の候補画像のそれぞれの画像シグナチャに対し前記１つ以上のハッシュ演算を実行して、前記１つ以上のＬＳＨ関数に基づいて１つ以上の第３のハッシュ値を生成することと、
前記１つ以上の第３のハッシュ値のそれぞれに対し他のハッシュ演算を実行して、１つ以上の第４のハッシュ値を生成することと、
対応するハッシュ表に、前記１つ以上の第４のハッシュ値、対応する画像識別、および対応する画像シグナチャのそれぞれを記録することと、
をさらに含む、請求項１に記載の方法。
【請求項１０】
メモリと、
前記メモリに結合される１つ以上のプロセッサと、
画像を受け取り、
前記画像のコンテンツに基づいて前記画像の画像シグナチャを生成する
ように構成された取得部と、
前記画像シグナチャに対しハッシュ演算を実行して値を生成するように構成されたハッシュ演算部と、
１つ以上のハッシュ表中で、前記値に基づいて１つ以上の候補画像を識別するように構成された検索部と、
前記画像と前記１つ以上の候補画像のそれぞれとの間の画像類似点を決定するように構成された認識部と、
を備え、
前記ハッシュ演算部は、
１つ以上のＬＳＨ関数を使用して前記画像シグナチャに対し１つ以上のハッシュ演算を実行して、１つ以上の第１のハッシュ値を生成し、
前記１つ以上の第１のハッシュ値のそれぞれに対し別のハッシュ演算を実行して、１つ以上の第２のハッシュ値を生成する、
ための演算を実行することによって前記ハッシュ演算を実行するようにさらに構成されている、１つ以上のサーバ。
【請求項１１】
前記取得部が、
前記画像を濃淡画像に変換し、
前記濃淡画像を１つ以上のサブ画像に分割し、
前記１つ以上のサブ画像のそれぞれに複数の方向からエッジヒストグラムを計算し、
前記エッジヒストグラムに基づいて前記画像シグナチャを生成する、
ための演算を実行することによって前記画像シグナチャを生成するように構成される、
請求項１０に記載の１つ以上のサーバ。
【請求項１２】
前記検索部が、前記１つ以上の第２のハッシュ値に基づいて、それぞれハッシュ値、１つの画像の画像識別、または１つの画像の画像シグナチャの内の少なくとも１つを含む１つ以上のレコードを含む前記１つ以上のハッシュ表を識別することによって、前記１つ以上の候補画像を識別するように構成される、請求項１０に記載の１つ以上のサーバ。
【請求項１３】
前記ハッシュ演算部が、
Ｒが固定された整数である、Ｒ次元バイナリベクトルに前記画像シグナチャを変換し、
前記Ｒ次元バイナリベクトルに基づいて、前記Ｒ次元バイナリベクトルの単一次元バイナリベクトル、または前記Ｒ次元バイナリベクトルの多次元バイナリベクトルの内の少なくとも１つに基づいて１つ以上のＬＳＨ関数を生成し、
前記１つ以上のＬＳＨ関数を使用することによって、前記１つ以上のハッシュ演算を実行する、
ための演算を実行することによって、前記１つ以上のハッシュ演算を実行するように構成される、請求項１０に記載の１つ以上のサーバ。
【請求項１４】
前記ハッシュ演算部が、
前記１つ以上のＬＳＨ関数の各入力パラメータに、別の固定整数であり、Ｒより小さいＫを代入し、
Ｒ次元バイナリベクトルからＫ次元バイナリベクトルを選択して、前記１つ以上のＬＳＨ関数のそれぞれに戻り値を生成すること、  によって前記１つ以上のＬＳＨ関数を生成するようにさらに構成される、
請求項１３に記載の１つ以上のサーバ。
【請求項１５】
前記認識部が、
前記画像の前記画像シグナチャと前記１つ以上の候補画像のそれぞれの画像シグナチャとの間の空間距離を計算し、
前記空間距離に基づいて前記画像類似点を決定する、
ための演算を実行することによって前記画像類似点を決定するように構成される、
請求項１０に記載の１つ以上のサーバ。
【請求項１６】
前記空間距離に基づいて前記候補画像のそれぞれを出力するように構成された出力部をさらに備える、請求項１５に記載の１つ以上のサーバ。
【請求項１７】
前記１つ以上の候補画像のそれぞれの画像シグナチャに対し１つ以上の第３のハッシュ演算を実行して、前記１つ以上のＬＳＨ関数に基づいて１つ以上の第３のハッシュ値を取得し、
前記１つ以上の第３のハッシュ値のそれぞれに対し第４のハッシュ演算を実行して、１つ以上の第４のハッシュ値を取得し、
対応するハッシュ表に、前記１つ以上の第４のハッシュ値、対応する画像識別、および対応する画像シグナチャのそれぞれを記録する、
ように構成されたハッシュ表作成部をさらに備える、請求項１０に記載の１つ以上のサーバ。
【請求項１８】
サーバのプロセッサによって実行されるときに
画像を受け取ることと、
前記画像に関連付けられたエッジヒストグラムに基づいて前記画像の画像シグナチャを示す多次元ベクトルを生成することと、
前記画像シグナチャに対しハッシュ演算を実行し、前記多次元ベクトルに基づいて定められるＬＳＨ関数を使用して第１のハッシュ値を生成することと、
メッセージ‐ダイジェストアルゴリズムを使用して前記第１のハッシュ値に別のハッシュ演算を実行して、第２のハッシュ値を生成することと、
ハッシュ表から前記第２のハッシュ値に基づいて１つ以上の候補画像を取り出すことと、
ハミング距離またはユークリッド距離の内の少なくとも１つを使用して、前記画像と前記１つ以上の候補画像のそれぞれとの間の類似点を決定することと、
を含む動作を実行する命令で符号化された１つ以上のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、参照によりその全体が本明細書に組み込まれる、「ＭＥＴＨＯＤ  ＡＮＤ  ＤＥＶＩＣＥ  ＯＦ  ＳＩＭＩＬＡＲ  ＩＭＡＧＥ  ＲＥＣＯＧＮＩＴＩＯＮ（類似画像認識の方法および装置）」と題する２０１１年１月２８日に出願された中国特許出願第２０１１１００３１７０１．８号に対する優先権を主張する。
【０００２】
本開示は、マルチメディア画像認識の分野に関する。さらに詳細には、本開示は画像認識の方法および装置に関する。
【背景技術】
【０００３】
マルチメディア認識技術の一種としての類似画像検索は急成長を遂げている。類似画像検索は、特徴抽出、インデックス構築、問い合わせ、および類似点ソーティングを含んでよい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の画像シグナチャには画像のコンテンツ情報が含まれないために、従来の類似画像検索技術はいくつかの問題（たとえば、不十分な互換性およびフォールトトレランスの問題）を起こすことがある。たとえば、同一のコンテンツを有するが、異なるフォーマット（たとえば、ｂｍｐ、ｊｐｅｇ、ｐｎｇ、またはｇｉｆ）で保存される２つの画像は、異なる画像と見なされることがある。
【課題を解決するための手段】
【０００５】
本開示は、類似画像を識別するための方法および装置を提供する。一部の実施形態では、ユーザは、画像を提出し、提出した画像に類似する画像のセットをサーバから要求することがある。サーバは、提出された画像を受け取ると、その画像のコンテンツに基づいて画像シグナチャを生成してよい。また、サーバは画像シグナチャに対しハッシュ演算を実行して、１つ以上のハッシュ値を生成してもよい。１つ以上の値は、画像に類似する候補画像を識別するために使用されてよい。サーバは、次いでこれらの候補画像のそれぞれと画像との間の画像類似点を決定してよい。
【０００６】
一部の実施形態では、画像シグナチャを生成するために、サーバは、画像を濃淡画像に変換し、次いで濃淡画像を複数のサブ画像に分割してよい。サーバは、次いで複数のサブ画像のそれぞれのエッジヒストグラムを計算してよい。エッジヒストグラムに基づいて、サーバは画像シグナチャを生成してよい。一部の実施形態では、１つ以上のハッシュ値を生成するために、サーバは、局所性鋭敏型ハッシュ関数を使用して画像シグナチャに対しハッシュ演算を実行して１つ以上の第１のハッシュ値を生成してよい。サーバは、次いで、１つ以上の第１のハッシュ値のそれぞれにハッシュ演算を実行して１つ以上の第２のハッシュ値を生成してよい。１つ以上の第２のハッシュ値は、候補画像を識別するために使用されてよい。一部の実施形態では、画像類似点を決定するために、サーバは、ハミング距離またはユークリッド距離の内の少なくとも１つを使用して、画像と１つ以上の候補画像のそれぞれとの間の類似点を決定してよい。
【０００７】
添付の図を参照して詳細な説明が説明される。異なる図中での同じ参照番号の使用は、類似する項目または同一の項目を示す。
【図面の簡単な説明】
【０００８】
【図１】類似画像を識別するための例示的な環境を示す概略図である。
【図２】図１の画像サーバ（複数の場合がある）の例示を示す概略ブロック図である。
【図３】図１の画像サーバ（複数の場合がある）の別の例示を示す概略ブロック図である。
【図４】類似画像を識別する例示的なプロセスを示すフローチャートである。
【図５】画像シグナチャを取得する例示的なプロセスを示すフローチャートである。
【図６】画像インデックスを作成する例示的なプロセスを示すフローチャートである。
【図７】類似画像を識別する別の例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【０００９】
通信制御プロトコル（ＴＣＰ）の方法およびサーバの詳細な説明が、添付の図を参照して説明される。
【００１０】
図１は、類似画像を識別するための例示的な環境１００を示す概略図である。環境１００は、ユーザ１０４およびユーザ１０６と対話する画像サーバ１０２を含んでよい。画像サーバ１０２は、アップロードサーバ１０８、画像データベース装置１１０、インデックスサーバ１１２、画像計算サーバ１１４、および画像検索フロントサーバ１１６を含んでよい。
【００１１】
ユーザ１０４は、画像インデックスデータベースを作成するためにアップロードサーバ１０８に画像をアップロードしてよい。アップロードサーバ１０８は、画像の画像シグナチャを計算し、画像データベース装置１１０に画像シグナチャを送ってよい。一部の実施形態では、画像は、クローラシステムを使用してインターネットから取得され、アップロードサーバ１０８に保存されてよい。一部の実施形態では、アップロードサーバ１０８は、画像のコンテンツ情報に基づいて画像の画像シグナチャを計算し、したがってコンフリクトの確率を削減してよい。たとえば、画像のコンテンツ情報は、非バイトストリームの代わりにメタデータ（たとえば、色、グレイン等）を含んでよい。
【００１２】
画像データベース装置１１０は、画像シグナチャ受信後に局所性鋭敏型ハッシュ（ＬＳＨ）を使用することによって画像に対しハッシュ演算を実行してよい。結果として生じる値は、次いでインデックスサーバ１１２にインデックス情報として送られる。
【００１３】
ユーザ１０６は、画像検索フロントサーバ１１６に画像を送り、画像サーバに、提出した画像に類似する画像のセットを返すように要求してよい。画像検索フロントサーバ１１６は、画像計算サーバ１１４に画像を送信し、類似画像または類似画像のリストを要求してよい。一部の実施形態では、画像シグナチャは画像のコンテンツ情報に基づいて生成されてよく、次いでインデックスサーバ１１２が画像シグナチャに基づいて類似画像を検索する。一部の実施形態では、画像計算サーバ１１４は、インデックスサーバ１１２上のこれらの類似画像のハッシュ値に基づいて類似画像（たとえば、ＩＤ）を検索してよい。たとえば、画像計算サーバ１１４は、画像と同じハッシュ値を有する画像と関連付けられたＩＤを識別してよい。類似画像または類似画像のリストは、画像検索フロントサーバ１１６に返され、ユーザ１０６に表示されてよい。
【００１４】
図２は、図１の例示的な画像サーバ１０２の詳細を示す概略ブロック図である。画像サーバ１０２は、どのような適切なサーバとして構成されてもよい。１つの例示的な構成では、画像サーバ１０２は、プロセッサ２０２、入力／出力インタフェース２０４、ネットワークインタフェース２０６、およびメモリ２０８を含む。
【００１５】
メモリ２０８は、ランダムアクセスメモリ（ＲＡＭ）等の揮発性メモリ、および／または読取り専用メモリ（ＲＯＭ）またはフラッシュＲＡＭ等の不揮発性メモリの形をとるコンピュータ可読媒体を含んでよい。メモリ２０８は、コンピュータ可読媒体の例である。
【００１６】
コンピュータ可読媒体は、コンピュータ可読命令、データ構造体、プログラムモジュール、または他のデータ等の情報の記憶のための任意の方法または技術で実装される揮発性および不揮発性、取外し可能および取外し不可能な媒体を含む。コンピュータ記憶媒体の例は、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他の種類のランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、またはコンピューティング装置によるアクセスのための情報を記憶するために使用できる任意の他の非伝送媒体を含むが、これらに限定されない。本明細書に定義されるように、コンピュータ可読媒体は、変調されたデータ信号および搬送波等の一時的な媒体は含まない。
【００１７】
メモリ２０８をより詳しく見ると、メモリ２０８は、出力部２１０、認識部２１２、検索部２１４、取得部２１６、ハッシュ演算部２１８、およびハッシュ表作成部２２０を含む、任意の数のソフトウェアモジュールまたはソフトウェアユニットを記憶してよい。取得部２１６は、ユーザ１０６によって提出される画像の画像シグナチャを取得してよい。ハッシュ演算部２１８は、画像シグナチャに対しハッシュ演算を実行してよい。検索部２１４は、所定のハッシュ表中で候補画像を検索してよい。認識部２１２は、候補画像から画像に類似する画像（複数の場合がある）を識別し、取り出してよい。
【００１８】
一部の実施形態では、画像サーバ１０２は、画像のコンテンツから生成される画像シグナチャに基づいて画像の類似点を決定してよい。たとえば、画像が類似するほど、画像の画像シグナチャも類似する。一部の実施形態では、類似点は、ハミング距離またはユークリッド距離に関連付けられてよい。たとえば、これらの距離が短いほど、画像はより類似している。したがって、同じであるが、異なるフォーマットで保存される画像は、同じ画像シグナチャを有することがある。また、従来の技術でのフォールトトレランスの問題も解決され得る。
【００１９】
一部の実施形態では、出力部２１０は、類似点に基づいて候補画像を出力してよい。一部の実施形態では、ハッシュ表作成部２２０は、画像シグナチャに対しハッシュ演算を実行することによってＬ個のハッシュ表を作成して、ＬＳＨ関数を使用することによってＬ個のハッシュ値を取得してよく、Ｌは整数である。また、ハッシュ表作成部２２０は、Ｌ個の第１のハッシュ値に対しハッシュ演算を実行して、総合ハッシュ関数を使用することによってＬ個の第２のハッシュ値を取得してもよい。ハッシュ表作成部２２０は、ｊth番目の第２のハッシュ値、画像識別および画像シグナチャを、ｊth番目のハッシュ表に記録してよく、ｊ＝１，．．．，Ｌである。
【００２０】
図３は、図１および図２の画像サーバ１０２と同様に、認識部２１２、検索部２１４、取得部２１６、およびハッシュ演算部２１８を含んでよい画像サーバ３００の別の例示を示す概略ブロック図である。
【００２１】
取得部２１６は、変換モジュール３０２、計算モジュール３０４、および生成モジュール３０６を含んでよい。変換モジュール３０２は、ユーザ１０６によって提出される画像を濃淡画像に変換してよい。次いで、計算モジュール３０４は、濃淡画像をＮｘＮ個のサブ画像に分割し、サブ画像のそれぞれにＭ個の方向からエッジヒストグラムを計算し、ＮｘＮｘＭ個の計算結果を取得してよく、ＮおよびＭは整数である。生成モジュール３０６は、画像シグナチャのＮｘＮｘＭ次元ベクトルとしてＮｘＮｘＭ個の計算結果をアセンブルしてよい。一部の実施形態では、人間の目の感度に基づいた非一様定量技術をＮｘＮｘＭ次元ベクトルに適用できる。一部の実施形態では、エッジヒストグラムの統計データが画像シグナチャの基本特徴として使用されてよい。画像分割および人間の目の感度に基づいた非一様定量技術と組み合わされる統計データは、異なる色、スケール、または部分的なファジーおよびひずみによって引き起こされる解決された問題であってよい。一部の実施形態では、濃淡画像はＮｘＰ個のサブ画像に分割されてよい。
【００２２】
一部の実施形態では、計算モジュール３０４は、サブ画像に含まれる画像ブロックごとに、Ｍ個の方向のそれぞれでの勾配値を計算してよい。計算モジュール３０４は、次いで統計のために対応する画像ブロックの方向として最大の勾配値を有する、Ｍ個の方向の内の１つを選択してよい。計算モジュール３０４はさらに、Ｍ個の方向のそれぞれに選択された方向の数を計算し、サブ画像のヒストグラムとして統計値を取得してよい。
【００２３】
サブ画像が１０００個の画像ブロックを有し、ＭがＡ、Ｂ、Ｃ、Ｄ、およびＥを含む５つの方向を有する（つまり、Ｍ＝５）と仮定する。さらに、統計データのための方向Ａが１００個の画像ブロックであり、方向Ｂが２００個の画像ブロックを有し、方向Ｃが３００個の画像ブロックを有し、方向Ｄが４００個の画像ブロックを有し、方向Ｅが画像ブロックを有さないと仮定する。結果として、サブ画像の統計値（つまり、ヒストグラム）は、ベクトル（１００，２００，３００，４００，０）によって表されてよい。
【００２４】
一部の実施形態では、ハッシュ演算部２１８は、第１のハッシュ演算モジュール３０８および第２のハッシュ演算モジュール３１０を含んでよい。第１のハッシュ演算モジュール３０８は、画像シグナチャに対しハッシュ演算を実行し、Ｌ個のＬＳＨ関数を使用することによってＬ個の第１のハッシュ値を取得してよく、Ｌは整数である。第２のハッシュ演算モジュール３１０は、Ｌ個の第１のハッシュ値に対しハッシュ演算を実行して、総合ハッシュ関数を使用することによってＬ個の第２のハッシュ値を取得してよい。一部の実施形態では、ＬＳＨ技術に基づいた質量類似画像インデックスの方法が、検索時間の複雑度を非線形レベルまで削減するために使用されてよい。
【００２５】
一部の実施形態では、検索部２１４は、検索モジュール３１２および追加モジュール３１４を含んでよい。検索モジュール３１２は、ハッシュ表に第２のハッシュ値を記録するエントリを検索してよい。ハッシュ表の各エントリが、画像のハッシュ値および画像識別を記録する。各エントリは、さらに画像シグナチャを含んでよい。追加モジュール３１４は、ハッシュ表の中の第２のハッシュ値を有するエントリを識別すると、候補画像に画像を追加してよい。一部の実施形態では、ｉ番目の第２のハッシュ値がｉth番目のハッシュ表に対応してよく、ｉ＝１，．．．，Ｌである。
【００２６】
一部の実施形態では、第１のハッシュ演算モジュール３０８は、画像シグナチャをＲ次元バイナリベクトルに変換してよく、Ｒは整数である。第１のハッシュ演算モジュール３０８は、次いでＲ次元バイナリベクトルを使用することによってＬ個のＬＳＨ関数を生成してよい。たとえば、ＬＳＨ関数のそれぞれは、Ｒ次元バイナリベクトルの一次元バイナリベクトルまたは多次元バイナリベクトルに基づいて生成される。
【００２７】
一部の実施形態では、第１のハッシュ演算モジュール３０８は、ＬＳＨ関数の入力パラメータをＫとして代入し、Ｒ次元バイナリベクトルからＫ次元バイナリベクトルを無作為に選択し、Ｋ次元バイナリベクトルをＬＳＨ関数の戻り値として結合してよく、Ｋ＜Ｒである。
【００２８】
一部の実施形態では、認識部２１２は、計算モジュール３１６および認識モジュール３１８を含んでよい。計算モジュール３１６は、提出された画像の画像シグナチャと候補画像の画像シグナチャとの間の空間距離（たとえば、ハミング距離またはユークリッド距離）を計算してよい。認識モジュール３１８は、次いで空間距離に基づいて、候補画像と提出された画像との間の類似点を決定してよい。たとえば、空間距離が小さいほど、候補画像は提出された画像に類似している。
【００２９】
図４から図７は、類似画像を識別する例示的なプロセスを示すフローチャートである。プロセスは、ハードウェア、ソフトウェア、または組み合わせで実装できる一連の演算を表す、論理フローチャート中のブロックの集合体として示される。説明のために、プロセスは、図１から図３に示される画像サーバ１０２を参照して説明される。ただし、プロセスは異なる環境および装置を使用して実行されてよい。さらに、本明細書に説明される環境および装置は、異なるプロセスを実行するために使用されてよい。
【００３０】
図４は、類似画像を識別する例示的なプロセス４００を示すフローチャートである。プロセス４００は、１つ以上のマイクロコントローラ（ＭＣＵ）または１つ以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含むことがある画像サーバの１つ以上のプロセッサによって実行されてよい。
【００３１】
４０２で、画像サーバは、たとえばＵＳＢ伝送インタフェース、ブルートゥース伝送インタフェース、またはイーサネット（登録商標）伝送インタフェースを介してユーザ１０６によって提出される画像を受け取ってよい。４０４で、取得部２１６は、提出された画像の画像シグナチャを生成する、またはそれ以外の場合、画像シグナチャを取得してよい。たとえば、取得部２１６は、画像シグナチャを計算するためにＭＣＵまたはＦＰＧＡを関与させてよい。
【００３２】
４０６で、ハッシュ演算部２１８は、画像シグナチャに対しハッシュ演算を実行してよい。一部の実施形態では、ハッシュ演算部２１８は、ハッシュ演算を実行するように構成されたＭＣＵまたはＦＰＧＡを含んでよい。一部の実施形態では、ハッシュ演算部２１８および取得部２１６によって実行される関数は、同じプロセッサ（複数の場合がある）によって実装されてよい。
【００３３】
４０８で、検索部２１４は、候補画像を識別するために、所定のハッシュ表中のハッシュ演算の結果に対応するエントリを検索してよい。４１０で、認識部２１２は、エントリに対応する候補画像から、提出画像に類似する画像を認識してよい。一部の実施形態では、画像計算サーバ１１４が、局所的にまたはサードパーティの装置から、インデックスサーバ１１２によって返される類似画像のＩＤに基づいて候補画像を取得し、エントリに基づいた候補画像から提出画像に類似する画像を認識する。一部の実施形態では、認識部２１２が、局所的にまたはサードパーティの装置から、検索部２１４によって返される類似画像のＩＤに基づいて候補画像を取得してよく、エントリに基づいた候補画像から提出画像に類似する画像を認識する。
【００３４】
一部の実施形態では、出力部２１０は、識別された類似画像を出力し、ユーザ１０６に表示するためにブルートゥース伝送モジュール、赤外線伝送モジュール、および／またはイーサネット伝送モジュールを含んでよい。
【００３５】
図５は、画像シグナチャを取得する例示的なプロセス５００を示すフローチャートである。プロセス５００は、エッジヒストグラムのグレイン特徴に基づいて画像シグナチャを生成してよい。
【００３６】
５０２で、画像サーバは、ユーザ１０６によって提出された画像を濃淡画像に変換して、色および／または光に敏感ではない最終結果を作成する。５０４で、計算モジュール３０４は、濃淡画像をＮｘＮ個のサブ画像に分割してよい。５０６で、計算モジュール３０４は、サブ画像のそれぞれを固定数の画像ブロックにさらに分割してよい。各画像ブロックの領域は、提出画像の領域に依存する。５０８で、計算モジュール３０４は、次いでサブ画像のそれぞれに１つ以上の方向からエッジヒストグラムを計算してよい。たとえば、計算モジュール３０４は、５つの方向に対して画像ブロックの勾配値を計算して、統計のための画像ブロックの方向となるために最大の勾配値を有する方向を選択してよい。計算モジュール３０４は、５つの方向のそれぞれが、１つのサブ画像で統計のための方向として選択される頻度を計算してよい。頻度は、サブ画像のヒストグラムとして使用されてよい。
【００３７】
サブ画像が１０００個の画像ブロックに分割され、１つ以上の方向が、Ａ、Ｂ、Ｃ、Ｄ、およびＥの５つの方向を含むと仮定する。さらに、方向Ａが統計のための１００個の画像ブロックの方向として選択され、方向Ｂが２００個の画像ブロックを有していた、方向Ｃが３００個の画像ブロックを有し、方向Ｄが４００個の画像ブロックを有し、および方向Ｅが０個の画像ブロックを有すると仮定する。結果として、サブ画像の統計値（つまり、対応するヒストグラム）は、ベクトル（１００，２００，３００，４００，０）である。
【００３８】
５１０で、生成モジュール３０６は、各サブ画像のベクトルを、ユーザ１０６によって提出された画像の画像シグナチャとして多次元ベクトルに結合してよい。Ｎ＝４の場合、画像シグナチャは、４ｘ４ｘ５＝８０次元ベクトルとして提示されてよい。一部の実施形態では、５１２で、人間の目の感度の非一様な特性を前提として非一様定量方法が採用されてよい。生成モジュール３０６は、たとえば、８０次元ベクトルに対し定量圧縮を実施してより優れた空間活用を達成してよい。たとえば、画像シグナチャは、量的プロセスのための０と７の間の８デジタルが使用される場合、約２４０ビット（つまり、３０バイト）となるだろう。プロセスは、記憶領域の９０％を節約してよい。
【００３９】
５１４で、画像サーバ１０２は、圧縮プロセス後に画像シグナチャを取得してよい。一部の実施形態では、変換モジュール３０２、計算モジュール３０４および生成モジュール３０６がＭＣＵに実装されてよい。
【００４０】
図６は、画像インデックスを作成する例示的なプロセス６００を示すフローチャートである。６０２で、第１のハッシュ演算モジュール３０８が、プロセス５００で取得されたベクトルを、ハミング空間の高次元バイナリベクトル（つまり、各次元が１または０である）に変換してよい。たとえば、一次元ベクトル値がＸであり、最大値がＣであると仮定する。結果として、ハミング空間で提示されるベクトルは、Ｃ−Ｘ個の連続０の直後のＸ個の連続１を含むＣ次元バイナリベクトルである。
【００４１】
６０４で、第１のハッシュ演算モジュール３０８は、演算６０２で取得されたベクトルからＫ次元バイナリベクトルを無作為に選択することによってハッシュ関数Ｇを定め、結果を結合後、値を返してよい。これらの例では、ベクトル間の類似度が大きいほど、同じハッシュ値を生成する確率も大きくなる。
【００４２】
６０６で、第１のハッシュ演算モジュール３０８は、演算６０２で取得された高次元ベクトルに対しＬ個のハッシュ関数を実施して、類似点検索の誤差を削減してよく、Ｌは整数である。６０８で、第２のハッシュ演算モジュール３１０は、従来のハッシュ関数（たとえば、メッセージ‐ダイジェストアルゴリズム５（ＭＤ５））を用いて演算６０６からの結果に対しハッシュ演算を実行してよい。６１０で、第２のハッシュ演算モジュール３１０は、対応するＬ個のハッシュ表中の画像のキーおよび一意のＩＤとして演算６０８のハッシュ結果を保存してよく、Ｌは整数である。一部の実施形態では、同じ画像シグナチャが付いた画像は同じビンに保存されてよい。一方、異なる画像シグナチャが付いた画像は異なるビンに保存される可能性がより高い。一部の実施形態では、第１のハッシュ演算モジュール３０８および第２のハッシュ演算モジュール３１０は、同じ符号化チップまたは同じＭＣＵによって実装されてよい。
【００４３】
一部の実施形態では、精度および再現率は、異なるＫおよびＬによって著しく影響を受けることがあるため、シミュレーションが予想のために事前に実施されてよい。適切なハードウェアによってサポートされている画像インデックスは、検索での効率を高めるためにメモリに記憶されてよい。一部の実施形態では、画像インデックス文書は、ローカルディスクに記憶されてよいか、または質量サンプルデータベースのための分散の途中で処理されてよい。
【００４４】
図７は、類似画像を識別する例示的なプロセス７００を示すフローチャートである。７０２で、取得部２１６は、ユーザ１０６によって提出される画像の画像シグナチャを計算してよい。７０４で、ハッシュ演算部２１８は、画像シグナチャに基づいてＬＳＨ関数を定めてよい。７０６で、画像シグナチャのハッシュコードが、無作為に選択される複数のＬＳＨ関数を使用して計算されてよい。７０８で、ハッシュ演算（たとえば、ＭＤ５）が、取得された結果に対して実施されてよい。７１０で、検索部２１４は、演算７０８で取得された結果をキーとして使用してＬ個のハッシュ表を検索してよい。
【００４５】
７１２で、検索部２１４は、候補画像アレイに、検索結果に基づく候補画像を追加してよい。７１４で、認識部２１２は、候補画像アレイ内の各画像シグナチャと、ユーザ１０６によって提出された画像の画像シグナチャとの間の空間距離（たとえば、ハミング距離またはユークリッド距離）を計算してよい。一部の実施形態では、距離は、候補画像と提出画像との間の類似度を示してよい。
【００４６】
７１６で、出力部２１０は、距離に基づいて候補画像をソートし、出力してよい。これらの例では、候補アレイ内の画像シグナチャの数は、データベース内の画像シグナチャの数よりもはるかに小さい。したがって、従来の技術に比較すると、計算費用は大幅に削減できる。
【００４７】
一部の実施形態では、ハッシュ演算部２１８は、ＭＣＵまたはＦＰＧＡであってよい。一部の実施形態では、ハッシュ演算部２１８および取得部２１６によって操作される関数は、同じプロセッサ（複数可）によって実装されてよい。一部の実施形態では、検索部２１４は内部バスを通してデータベースと通信してよく、検索部２１４および認識部２１２は同じＭＣＵによって実装されてよい。
【００４８】
本開示では、画像シグナチャは、画像のコンテンツに基づいて決定されてよい。画像シグナチャの類似度は、画像コンテンツの類似度に依存する。たとえば、２つの画像が類似するほど、画像の画像シグナチャも類似する。類似度は、空間距離（たとえば、ハミング距離またはユークリッド距離）によって表されてよい。したがって、２つの同一であるが、異なるフォーマットで保存された画像は同じ画像シグナチャを有し、従来の類似画像認識技術に存在するフォールトトレランスの問題を解決し得る。また、本開示は、ＬＳＨハッシュ技術に基づいて質量類似画像インデックスを作成する方法も紹介する。方法は、検索の複雑度を削減し、非線形レベルまで時間を節約し、類似点に基づいて結果をソートし、出力してよい。また、本開示は、画像シグナチャ、画像分割、および人間の目の感度に基づいた非一様定量技法の基本特徴としてエッジヒストグラム統計も提供する。
【００４９】
本開示の実施形態は単に説明を目的とするものに過ぎず、本開示の範囲を限定することは意図されていない。当業者は、本開示に提示される実施形態に変更および改変を加えることができるだろう。当業者が理解するだろうあらゆる変更および改変が、本開示の範囲内に含まれる。
【図１】
0005926291.tif 000002
【図２】
0005926291.tif 000003
【図３】
0005926291.tif 000004
【図４】
0005926291.tif 000005
【図５】
0005926291.tif 000006
【図６】
0005926291.tif 000007
【図７】
0005926291.tif 000008