(57)【要約】【課題】  あらかじめ登録されている画像の中から，類似する画像を検索する類似画像検索システムを提供することを目的とする。【解決手段】  あらかじめ登録してある画像である登録画像の特徴量をベクトル化した特徴ベクトルをデータテーブルで記憶する登録画像特徴ベクトル記憶部と，クエリ画像の入力を受け付けるクエリ画像入力受付処理部と，入力を受け付けたクエリ画像に基づいて特徴量を抽出するクエリ画像特徴量抽出処理部と，抽出した特徴量をベクトル化した特徴ベクトルを算出するクエリ画像ベクトル化処理部と，算出した特徴ベクトルに基づいて，登録画像特徴ベクトル記憶部の特徴ベクトルを参照して，クエリ画像に類似する登録画像を検索するクエリ画像特徴ベクトル検索処理部と，検索した結果，クエリ画像に類似する登録画像を出力する検索結果出力処理部と，を有する類似画像検索システムである。【選択図】  図１
2017045291.tif 000002
【特許請求の範囲】
【請求項１】
あらかじめ登録してある画像から，クエリ画像に類似する画像を検索するための類似画像検索システムであって，
前記類似画像検索システムは，
あらかじめ登録してある画像である登録画像の特徴量をベクトル化した特徴ベクトルをデータテーブルで記憶する登録画像特徴ベクトル記憶部と，
クエリ画像の入力を受け付けるクエリ画像入力受付処理部と，
前記入力を受け付けたクエリ画像に基づいて特徴量を抽出するクエリ画像特徴量抽出処理部と，
前記抽出した特徴量をベクトル化した特徴ベクトルを算出するクエリ画像ベクトル化処理部と，
前記算出した特徴ベクトルに基づいて，前記登録画像特徴ベクトル記憶部の特徴ベクトルを参照して，前記クエリ画像に類似する登録画像を検索するクエリ画像特徴ベクトル検索処理部と，
前記検索した結果，前記クエリ画像に類似する登録画像を出力する検索結果出力処理部と，
を有することを特徴とする類似画像検索システム。
【請求項２】
前記クエリ画像特徴ベクトル検索処理部は，
前記算出した特徴ベクトルと，前記登録画像特徴ベクトル記憶部に記憶した特徴ベクトルとを用いて，前記クエリ画像と各登録画像との類似度を特定し，
前記検索結果出力処理部は，
前記特定した類似度が所定範囲の登録画像を，前記クエリ画像に類似する登録画像として出力する，
ことを特徴とする請求項１に記載の類似画像検索システム。
【請求項３】
前記類似画像検索システムは，さらに，
前記登録画像の属性データをエンコードして，前記登録画像に対応づけて記憶する登録画像属性データ記憶部と，
前記クエリ画像の属性データの入力を受け付けるクエリ画像属性データ入力受付処理部と，
前記入力を受け付けた属性データをエンコードするクエリ画像属性データエンコード処理部と，
前記エンコードした値に基づいて，前記登録画像属性データ記憶部を参照し，属性データを用いた絞込処理を実行するクエリ画像属性データ検索処理部と，
を有することを特徴とする請求項１または請求項２に記載の類似画像検索システム。
【請求項４】
前記検索結果出力処理部は，さらに，
前記クエリ画像属性データ検索処理部で絞込処理を実行した結果，絞込条件を充足しない属性データに対応する登録画像の類似度を変更し，
前記変更後の類似度に基づいて，類似度が所定範囲の登録画像を，前記クエリ画像に類似する登録画像として出力する，
ことを特徴とする請求項３に記載の類似画像検索システム。
【請求項５】
前記登録画像属性データ記憶部は，
登録画像の属性データのバイナリーデータであるビット列を，データテーブルで記憶しており，
前記クエリ画像属性データ検索処理部は，
前記クエリ画像属性データエンコード処理部でエンコードした，前記クエリ画像の属性データのバイナリーデータであるビット列と，前記登録画像属性データ記憶部に記憶する登録画像の属性データのバイナリーデータであるビット列とを，論理演算することで，属性データを用いた絞込処理を実行する，
ことを特徴とする請求項３または請求項４に記載の類似画像検索システム。
【請求項６】
前記類似画像検索システムは，さらに，
前記属性データの境界を示すバウンダリー情報を備えており，
前記クエリ画像属性データ検索処理部は，
前記クエリ画像の属性データをエンコードしたバイナリーデータのビット列と，前記登録画像属性データ記憶部に記憶する登録画像の属性データをエンコードしたバイナリーデータのビット列の論理演算の際に，前記バウンダリー情報に基づいて，属性データの境界を判定し，その属性データの境界ごとに，それぞれのバイナリーデータの比較処理を実行する，
ことを特徴とする請求項５に記載の類似画像検索システム。
【請求項７】
前記検索結果出力処理部は，
前記類似度を所定範囲ごとに分類したヒストグラムを生成し，
出力すべき検索結果数が前記ヒストグラムのどの範囲に含まれているかを特定し，
前記特定した範囲以上の類似度を有する登録画像をソートの対象として，前記類似度に基づいてソートを行うことで，前記クエリ画像に類似する登録画像を出力する，
ことを特徴とする請求項２から請求項６のいずれかに記載の類似画像検索システム。
【請求項８】
コンピュータを，
クエリ画像の入力を受け付けるクエリ画像入力受付処理部，
前記入力を受け付けたクエリ画像に基づいて特徴量を抽出するクエリ画像特徴量抽出処理部，
前記抽出した特徴量をベクトル化した特徴ベクトルを算出するクエリ画像ベクトル化処理部
前記算出した特徴ベクトルに基づいて，登録画像の特徴量をベクトル化した特徴ベクトルをデータテーブルで記憶する登録画像特徴ベクトル記憶部を参照して，前記クエリ画像に類似する登録画像を検索するクエリ画像特徴ベクトル検索処理部，
前記検索した結果，前記クエリ画像に類似する登録画像を出力する検索結果出力処理部，
として機能させることを特徴とする類似画像検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，あらかじめ登録されている画像の中から，類似する画像を検索する類似画像検索システムに関する。
【背景技術】
【０００２】
画像検索においては，ある画像（クエリ画像）（画像とは，コンピュータで表示可能な，データ化されているイメージ情報をいう）を検索条件として，クエリ画像に類似する画像が，複数の画像（登録画像）を登録しているデータベース（登録画像データベース）に存在するかを検索することが必要な場合がある。この場合，クエリ画像と，登録画像データベースに登録された登録画像とを比較することで類似する画像であるかを判定することが必要であるが，登録している画像の数が多量になるとその判定処理に大幅な処理時間を要することとなる。そのため，高速に判定する類似画像の検索システムが求められている。
【０００３】
そこで，多量の画像に対する高速での画像の類似検索処理を行うため，従来は，局所性鋭敏型ハッシュ技術（ＬＳＨ（locality sensitive hashing））や，セントロイドからの距離でデータを管理するなどの，類似性の高い画像をグルーピングするデータ構造を利用することで，検索候補を絞る方法が一般的に用いられている。この一例として，下記非特許文献１が存在する。また，クエリ画像との類似性に基づいて類似する登録画像を検索するシステムとして特許文献１のシステムが存在している。
【０００４】
また，類似画像検索の際に，画像検索する利用者の所望する属性をもつ画像以外は検索結果から排除したい場合もある。そのときは，非特許文献１などの方法によって十分大きな数の類似画像の候補を得ておき，その後，属性データによって絞り込みを行う方法もある。この属性データとして，その画像に関連するテキストデータを検索キーワードとして用いて絞り込みを行う方法が存在する（特許文献２）。この方法はテキストデータに関連するキーワードをさらに特定し，検索キーワード，関連キーワードに関連づけられた画像を検索することで，類似画像を検索する方法である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１６００６２号公報
【特許文献２】特開２００８−２１７１１７号公報
【非特許文献】
【０００６】
【非特許文献１】重村拓也，清水大輝，寺沢憲吾，”ＬＳＨによる大規模画像データからの高速類似検索”，２０１３年３月６日，一般社団法人情報処理学会，全国大会講演論文集，２０１３（１），ｐ．３９３−３９５
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１のＬＳＨを用いた処理は，画像における特徴量に応じてハッシュ値を定め，その定めたハッシュ値に基づいて，類似画像検索を高速に実行する方法である。これはクエリ画像のハッシュ値と，登録画像のハッシュ値とが同じであれば特徴量が近い値である，すなわち２つの画像は類似していると判定できることを利用したものである。
【０００８】
この場合，登録画像の数が１０倍に増えると，検索の結果として得られる画像の数も１０倍に増え，処理時間が急増するなどの不都合が起きる。そのため，一般に，登録済みの画像をすべて新しいハッシュ値で再ハッシュするなどの処理が必要となる。
【０００９】
さらに，画像の属性データによる絞り込みを行う場合には，求められている検索結果数を担保するために，類似画像の検索の際に，１グループのサイズを大きくとっておく，または数グループに亘って検索するなどの対応が必要となる。その結果，動作効率の悪化や処理時間が大幅に増大するなどの問題が発生する。そのため，せっかく類似画像の検索を高速化したとしても，その効果が失われてしまう問題がある。
【課題を解決するための手段】
【００１０】
そこで本発明者は上記課題に鑑み，以下の発明をした。
【００１１】
第１の発明は，あらかじめ登録してある画像から，クエリ画像に類似する画像を検索するための類似画像検索システムであって，前記類似画像検索システムは，あらかじめ登録してある画像である登録画像の特徴量をベクトル化した特徴ベクトルをデータテーブルで記憶する登録画像特徴ベクトル記憶部と，クエリ画像の入力を受け付けるクエリ画像入力受付処理部と，前記入力を受け付けたクエリ画像に基づいて特徴量を抽出するクエリ画像特徴量抽出処理部と，前記抽出した特徴量をベクトル化した特徴ベクトルを算出するクエリ画像ベクトル化処理部と，前記算出した特徴ベクトルに基づいて，前記登録画像特徴ベクトル記憶部の特徴ベクトルを参照して，前記クエリ画像に類似する登録画像を検索するクエリ画像特徴ベクトル検索処理部と，前記検索した結果，前記クエリ画像に類似する登録画像を出力する検索結果出力処理部と，を有する類似画像検索システムである。
【００１２】
本発明のように，従来と異なり，登録画像の特徴ベクトルをデータテーブルで記憶し，クエリ画像の特徴ベクトルと比較する処理を実行することで，データテーブルの処理のみで類似する画像を特定することができる。そのため，単純な演算のみとなるので，高速に処理を実現することができる。
【００１３】
またデータテーブルで特徴ベクトルを管理しているので，登録画像の追加，削除があったとしても，従来のように，局所特徴量のハッシュ値が変わってしまうことによる再ハッシュが必要ないなど，画像の管理を容易にすることもできる。
【００１４】
上述の発明において，前記クエリ画像特徴ベクトル検索処理部は，前記算出した特徴ベクトルと，前記登録画像特徴ベクトル記憶部に記憶した特徴ベクトルとを用いて，前記クエリ画像と各登録画像との類似度を特定し，前記検索結果出力処理部は，前記特定した類似度が所定範囲の登録画像を，前記クエリ画像に類似する登録画像として出力する，類似画像検索システムのように構成することができる。
【００１５】
本発明のように，類似する画像の検索の際には，特徴ベクトルを用いて類似度を特定し，それに基づいて類似する画像を特定することが好ましい。
【００１６】
上述の発明において，前記類似画像検索システムは，さらに，前記登録画像の属性データをエンコードして，前記登録画像に対応づけて記憶する登録画像属性データ記憶部と，前記クエリ画像の属性データの入力を受け付けるクエリ画像属性データ入力受付処理部と，前記入力を受け付けた属性データをエンコードするクエリ画像属性データエンコード処理部と，前記エンコードした値に基づいて，前記登録画像属性データ記憶部を参照し，属性データを用いた絞込処理を実行するクエリ画像属性データ検索処理部と，を有する類似画像検索システムのように構成することができる。
【００１７】
上述の発明において，前記検索結果出力処理部は，さらに，前記クエリ画像属性データ検索処理部で絞込処理を実行した結果，絞込条件を充足しない属性データに対応する登録画像の類似度を変更し，前記変更後の類似度に基づいて，類似度が所定範囲の登録画像を，前記クエリ画像に類似する登録画像として出力する，類似画像検索システムのように構成することができる。
【００１８】
これらの発明のように，画像の属性データを用いて絞込処理を実行することで，類似する画像の検索処理を実現することもできる。なお，本発明における属性データとは，画像に紐付けられた，その画像の属性を示すテキスト型の情報をいう。
【００１９】
上述の発明において，前記登録画像属性データ記憶部は，登録画像の属性データのバイナリーデータであるビット列を，データテーブルで記憶しており，前記クエリ画像属性データ検索処理部は，前記クエリ画像属性データエンコード処理部でエンコードした，前記クエリ画像の属性データのバイナリーデータであるビット列と，前記登録画像属性データ記憶部に記憶する登録画像の属性データのバイナリーデータであるビット列とを，論理演算することで，属性データを用いた絞込処理を実行する，類似画像検索システムのように構成することができる。
【００２０】
本発明のように属性データをテキストデータとして処理するのではなく，バイナリーデータのビット列としてデータテーブルで管理して，バイナリーデータ同士の論理演算で絞込処理を実行することで，より高速の処理を実現することができる。
【００２１】
上述の発明において，前記類似画像検索システムは，さらに，前記属性データの境界を示すバウンダリー情報を備えており，前記クエリ画像属性データ検索処理部は，前記クエリ画像の属性データをエンコードしたバイナリーデータのビット列と，前記登録画像属性データ記憶部に記憶する登録画像の属性データをエンコードしたバイナリーデータのビット列の論理演算の際に，前記バウンダリー情報に基づいて，属性データの境界を判定し，その属性データの境界ごとに，それぞれのバイナリーデータの比較処理を実行する，類似画像検索システムのように構成することができる。
【００２２】
複数の属性データを絞込の条件として用いる場合，属性データをビット列としてデータテーブルで管理していると，属性データの境界を特定することができず，ビット列同士の論理演算を実行することができない。そのため，本発明のように，属性データの境界を示すバウンダリー情報を用いることで，複数の属性データを絞込の条件として用いることができる。
【００２３】
上述の発明において，前記検索結果出力処理部は，前記類似度を所定範囲ごとに分類したヒストグラムを生成し，出力すべき検索結果数が前記ヒストグラムのどの範囲に含まれているかを特定し，前記特定した範囲以上の類似度を有する登録画像をソートの対象として，前記類似度に基づいてソートを行うことで，前記クエリ画像に類似する登録画像を出力する，類似画像検索システムのように構成することができる。
【００２４】
類似度に応じて登録画像をソートして検索結果を出力する場合，Ｏ（ｎ  ｌｏｇ（ｎ））の実行時間が必要となる。そのため，ソートの対象となる登録画像の数が少なくなるほど，ソートの実行時間を減らすことができる。そこで，本発明のように構成することで，類似度に基づいてソートを行う登録画像の数を減らすことができるので，より高速化した処理を実現することができる。
【００２５】
上述の類似画像検索システムは，本発明のプログラムをコンピュータに読み込ませることで実現することができる。すなわち，コンピュータを，クエリ画像の入力を受け付けるクエリ画像入力受付処理部，前記入力を受け付けたクエリ画像に基づいて特徴量を抽出するクエリ画像特徴量抽出処理部，前記抽出した特徴量をベクトル化した特徴ベクトルを算出するクエリ画像ベクトル化処理部，前記算出した特徴ベクトルに基づいて，登録画像の特徴量をベクトル化した特徴ベクトルをデータテーブルで記憶する登録画像特徴ベクトル記憶部を参照して，前記クエリ画像に類似する登録画像を検索するクエリ画像特徴ベクトル検索処理部，前記検索した結果，前記クエリ画像に類似する登録画像を出力する検索結果出力処理部，として機能させる類似画像検索プログラムである。
【発明の効果】
【００２６】
本発明の類似画像検索システムを用いることで，類似画像の検索の高速化を実現することができる。これは，従来のように類似性の高い画像同士のグルーピング等の前処理は行わず，画像のデータ構造の簡素化と反復処理の簡素化を用いた処理を実現することで，単純な繰り返し演算に対するＣＰＵの高速実行の能力を活用し，類似画像の高速化を実現することができる。
【００２７】
また，絞り込みの条件として用いる属性データについても，類似する画像の検索と同様，データ構造の簡素化と反復処理の簡素化を用いた処理を実現することで，単純な繰り返し演算に対するＣＰＵの高速実行の能力を活用し，類似画像の高速化を実現することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の類似画像検索システムの全体の概念の一例を模式的に示す概念図である。
【図２】コンピュータのハードウェア構成の一例を模式的に示す図である。
【図３】本発明の類似画像検索システムの全体の処理プロセスの一例を示すフローチャートである。
【図４】類似画像の検索処理の処理プロセスの一例を示すフローチャートである。
【図５】属性データでの絞り込み処理の処理プロセスの一例を示すフローチャートの一例である。
【図６】登録画像特徴ベクトル記憶部の一例を模式的に示す図である。
【図７】登録画像属性データ記憶部の一例を模式的に示す図である。
【図８】本発明の類似画像検索システムのデータ構造の概念を模式的に示す模式図である。
【図９】本発明の類似画像検索システムの説明のため，図８を簡易的にした模式図である。
【図１０】絞込条件として用いた属性データの一例を模式的に示す図である。
【図１１】特徴ベクトルＱ［］の一例を模式的に示す図である。
【図１２】初期化した類似度Ｒ［］の一例を模式的に示す図である。
【図１３】特徴ベクトルＶ［］［］の一例を模式的に示す図である。
【図１４】ｊ＝１のときのＳ２６０の処理を模式的に示す図である。
【図１５】ｊ＝３のときのＳ２６０の処理を模式的に示す図である。
【図１６】ｊ＝４のときのＳ２６０の処理を模式的に示す図である。
【図１７】絞込処理を行う際の概念の一例を模式的に示す図である。
【図１８】絞込条件に関する概念の一例を模式的に示す図である。
【図１９】依存関係がある場合の属性データを模式的に示す図である。
【発明を実施するための形態】
【００２９】
本発明の類似画像検索システム１の全体の概念図の一例を図１に示す。本発明の類似画像検索システム１は，登録画像の登録や削除処理などの登録画像の管理を行う登録画像管理システム２と，類似画像の検索を行う検索処理システム３とを有する。
【００３０】
登録画像管理システム２は，登録画像入力受付処理部２０と，登録画像特徴量抽出処理部２１と，登録画像ベクトル化処理部２２と，登録画像特徴ベクトル登録処理部２３と，登録画像特徴ベクトル記憶部２４と，登録画像属性データ入力受付処理部２５と，登録画像属性データエンコード処理部２６と，登録画像属性データ記憶部２７とを有する。
【００３１】
検索処理システム３は，クエリ画像入力受付処理部３０と，クエリ画像特徴量抽出処理部３１と，クエリ画像ベクトル化処理部３２と，クエリ画像特徴ベクトル検索処理部３３と，クエリ画像属性データ入力受付処理部３４と，クエリ画像属性データエンコード処理部３５と，クエリ画像属性データ検索処理部３６と，検索結果出力処理部３７と，を有する。
【００３２】
類似画像検索システム１，登録画像管理システム２，検索処理システム３は，サーバやパーソナルコンピュータ，可搬型通信端末などの各種のコンピュータにより実現される。図２にコンピュータのハードウェア構成の一例を示す。コンピュータには，プログラムの演算処理を実行するＣＰＵなどの演算装置７０と，情報を記憶するＲＡＭやハードディスクなどの記憶装置７１と，ディスプレイなどの表示装置７２と，演算装置７０の処理結果や記憶装置７１に記憶する情報をインターネットやＬＡＮなどのネットワークを介して送受信する通信装置７３と，キーボードやポインティングデバイス（マウスやテンキーなど）などの入力装置７４の一部または全部が備えられている。
【００３３】
図１では類似画像検索システム１，登録画像管理システム２，検索処理システム３がそれぞれ一台のコンピュータで実現される場合を示したが，複数台のコンピュータにその機能が分散配置され，実現されても良い。
【００３４】
本発明における各手段は，その機能が論理的に区別されているのみであって，物理上あるいは事実上は同一の領域を為していても良い。
【００３５】
なお，本明細書では，説明の便宜上，登録画像管理システム２と検索処理システム３とに分けて説明するが，実際には，これらが一つのシステムとして構成されていても良いし，複数の異なるシステムとして構成されていても良い。また各システムの処理機能が共通化していても良い。
【００３６】
登録画像管理システム２における登録画像入力受付処理部２０は，類似画像検索システム１において検索対象となる画像（登録画像）の入力を受け付ける。登録画像入力受付処理部２０ではあらかじめ類似画像検索システム１で処理対象としている画像フォーマットで画像の入力を受け付ける。この際に，その画像を識別するためのＩＤが付与される。
【００３７】
登録画像特徴量抽出処理部２１は，登録画像入力受付処理部２０で入力を受け付けた画像に対して，あらかじめ定められた方法によりその画像の特徴量を抽出する処理を実行する。特徴量としては，類似性を判定するための諸指標であればよい。特徴量としては，たとえば０から２５５まで，あるいは６５５３５までなどと上限を設定しサイズを規格化している。
【００３８】
本明細書および以下の説明では，特徴量として，Histogram intersectionを用いる場合を説明する。本発明の類似画像検索システム１では，特徴量として，局所特徴量，Bag-of Visual-Words，Histogram intersectionを用いると効果があるが，それらに限られず，固定長ベクトル化した特徴量（特徴ベクトル）であれば，色ヒストグラムや色コリログラム，あるいはほかの画像特徴量であっても良い。また，それらとBag-of-Visual Wordsとの組み合わせであっても良い。
【００３９】
登録画像ベクトル化処理部２２は，登録画像特徴量抽出処理部２１で抽出した特徴量をベクトル化（固定長ベクトル化）する処理を実行する。
【００４０】
特徴ベクトルを算出するにあたり，処理に用いる特徴とｂｉｎ（選ばれた特徴の粒度）が選ばれると，各ｂｉｎに合致した特徴が画像内に何個存在するかを数え上げ，ヒストグラムを生成する。さらにそのヒストグラムに対して正規化を行う。正規化を行うことによって，類似性の高い画像同士が類似した値を取れるようにできる。これによって，Histogram intersection等によって，画像同士の類似性を求めることができる。
【００４１】
さらに，特徴ベクトルを各特徴の出現頻度に合わせて特性を歪ませて偏りを矯正すると良い。たとえば，画像のほとんどを一つの色が占める画像を母集団（登録画像の母集団）とする場合には，指数関数を乗じることで中間部分を下に押し下げ，出現頻度を全領域に亘って，平均化する。これによって，互いに独立性の高い特徴量を複合させて特徴ベクトルを構成する場合，いずれかの特徴量が強くなり，ほかの特徴量が埋もれてしまって，その特徴量が類似性判定に寄与しなくなるのを回避し，類似性の判定精度を高めることができる。
【００４２】
このように，特徴ベクトルの各要素のダイナミックレンジをそろえ，偏りを強制することにより，特徴ベクトルが取り得る値の上限，下限を定めて整数化を行うことが可能となる。これによって，特徴ベクトルの要素を２バイト（０〜６５５３５の値）で表現することは十分に可能であり，さらに１バイト（０〜２５５の値）で表現することも可能となる。
【００４３】
登録画像特徴ベクトル登録処理部２３は，登録画像ベクトル化処理部２２でベクトル化した値（特徴ベクトル）と，登録画像入力受付処理部２０で付与されたＩＤとを，後述する登録画像特徴ベクトル記憶部２４に，対応づけて記憶させる。
【００４４】
登録画像特徴ベクトル記憶部２４は，各登録画像のＩＤと特徴ベクトルとを対応づけて記憶している。図６に登録画像特徴ベクトル記憶部２４の一例を模式的に示す。
【００４５】
登録画像属性データ入力受付処理部２５は，登録画像入力受付処理部２０で入力を受け付けた登録画像に対応する属性データがある場合に，その属性データの入力を受け付ける。
【００４６】
属性データとして与えるのは，類似画像の検索の際に絞込の条件として用いる情報である。そして属性データは数え上げ型の組合せである。たとえば，属性データが「都道府県」であり，その属性データの取り得る値が，「北海道」，「青森」などの４７種類からなる組合せであるなど，属性データはその取り得る値があらかじめ定められている必要がある。
【００４７】
各属性データの関係は互いに独立でなくてもよく，依存関係があってもよい。この依存関係としては，上位レベルの属性データの値が択一であり，上位レベルによって下位レベルが取り得る値が変わる場合がある。これを模式的に示すのが図１９である。
【００４８】
たとえば属性Ａの属性データの取り得る値が「テーブル，マット」であり，属性Ａの値が「テーブル」のとき，属性Ｂ（高さ）が「４５ｃｍ，７０ｃｍ」，属性Ａの値が「マット」のとき，属性Ｃ（面積）が「２畳，４畳」などの場合が該当する。この場合，属性Ａ，属性Ｂ，属性Ｃのエンコードの方法を独立に決め，属性Ｂと属性Ｃのビット数の最大長を共通領域として割り当てる。エンコード時には，属性Ａの値によって属性Ｂのエンコードを使うか，属性Ｃのエンコードを使うかが定まるので，依存関係がある場合でも処理可能となる。          
【００４９】
また，連続量（長さ，面積など）や極めて大きなバリエーションがあるもの（時刻データなど）を絞込条件として用いる場合には，それらを適当な区間で区切り，区間に対してビットを割り当てるとともに，絞込処理時には，区間単位で検索対象を絞り込むこととなる。
【００５０】
登録画像属性データエンコード処理部２６は，登録画像属性データ入力受付処理部２５で入力を受け付けた属性データをエンコード（バイナリーデータとしてビット列化）して記憶する。そしてエンコードした属性データと，当該属性データに対応する登録画像が登録画像入力受付処理部２０で付与されたＩＤとを，後述する登録画像属性データ記憶部２７に，対応づけて記憶させる。
【００５１】
登録画像属性データ記憶部２７は，各登録画像のＩＤと，エンコードした属性データとを対応づけて記憶している。図７に登録画像属性データ記憶部２７の一例を模式的に示す。
【００５２】
検索処理システム３におけるクエリ画像入力受付処理部３０は，クエリ画像の入力を受け付ける。クエリ画像入力受付処理部３０ではあらかじめ類似画像検索システム１で処理対象としている画像フォーマットで画像の入力を受け付ける。
【００５３】
クエリ画像特徴量抽出処理部３１は，クエリ画像入力受付処理部３０で入力を受け付けたクエリ画像に対して，あらかじめ定められた方法によりその画像の特徴量を抽出する処理を実行する。なお，画像の特徴量を抽出する処理は，登録画像特徴量抽出処理部２１で登録画像から特徴量を抽出する処理と同じである。そのため，特徴量としては，登録画像の特徴量として抽出されている指標と同一の指標となる。この際の特徴量も，たとえば０から２５５まで，あるいは６５５３５までなどと上限を設定しサイズを規格化している。
【００５４】
クエリ画像ベクトル化処理部３２は，クエリ画像特徴量抽出処理部３１で抽出した特徴量をベクトル化（好ましくは固定長ベクトル化）する処理を実行する。
【００５５】
クエリ画像特徴ベクトル検索処理部３３は，クエリ画像ベクトル化処理部３２でベクトル化した値（特徴ベクトル）に基づいて，登録画像管理システム２における登録画像特徴ベクトル記憶部２４を参照し，各登録画像との類似度を特定する。「類似度」とは，登録画像の特徴ベクトルと，クエリ画像の特徴ベクトルとが一致する程度であり，類似度が高いと２つの画像の類似性が高いと判定できる。
【００５６】
クエリ画像属性データ入力受付処理部３４は，クエリ画像に類似する登録画像の検索のため，絞込条件として用いる属性データがある場合に，その属性データの入力を受け付ける。
【００５７】
クエリ画像属性データエンコード処理部３５は，クエリ画像属性データ入力受付処理部３４で入力を受け付けた属性データをエンコード（バイナリーデータとしてビット列化）する。
【００５８】
クエリ画像属性データ検索処理部３６は，クエリ画像属性データエンコード処理部３５でエンコードされた属性データに基づいて，登録画像管理システム２における登録画像属性データ記憶部２７を参照し，一致する登録画像のＩＤを特定する。
【００５９】
検索結果出力処理部３７は，クエリ画像属性データ検索処理部３６で検索して抽出した登録画像と，クエリ画像特徴ベクトル検索処理部３３で検索して特定した各登録画像の類似度とに基づいて，検索結果として出力する登録画像を特定する。たとえば，クエリ画像特徴ベクトル検索処理部３３における処理の結果，クエリ画像と，各登録画像との類似度が特定されているので，クエリ画像属性データ検索処理部３６で特定した，属性データを充足していない登録画像の類似度を「０」に変更し，類似度をソートする。そして類似度が高い登録画像のＩＤを順に，検索結果として出力する。
【００６０】
管理者用端末４は，本発明における登録画像管理システム２で記憶させる登録画像の管理を行う管理者が利用するコンピュータである。
【００６１】
利用者用端末５は，本発明における類似画像検索システム１で類似する画像の検索を所望する利用者が用いるコンピュータである。また検索のほか，管理者と同様に，登録画像の登録処理を行えても良い。
【００６２】
本発明の類似画像検索システム１におけるデータ構造の概念を模式的に示す模式図を図８に示す。図８における配列Ｉ［］は各登録画像を識別するＩＤを記憶している。配列Ｖ［］［］は，各登録画像の特徴量を固定長ベクトル化した値である特徴ベクトルを記憶する。配列Ａ［］［］は，各登録画像に対応づけられたエンコードした属性データの値（２進数）を記憶する。配列Ｑ［］は，クエリ画像の特徴ベクトルである。配列Ｃ［］は，クエリ画像に対応づけられたエンコードした属性データである。
【００６３】
配列Ｂ［］は，バウンダリー情報であって，各絞込条件としての属性データの境界を示す。たとえば，図８の場合，Ｂ［]には値として「１」，「１」，「２」，「２」，「３」が入っている。この場合，属性の種類は３種類であり，１番目の属性の値を１バイト目と２バイト目に，２番目の属性の値を３バイト目と４バイト目に，３番目の属性の値を５バイト目に記憶させていることを示している。そのため，図８のＢ［］では，３つの種類の属性データが用いられていることを示している。
【００６４】
また，属性データ１には１６ビット（２バイト），属性データ２には１６ビット（２バイト），属性データ３には８ビット（１バイト）が，絞込条件として用いる属性データのバイナリーデータのビット列として用いられていることを示している。
【００６５】
図１８に，絞込条件としての属性データを用いた絞込処理の概念図の一例を模式的に示す。図１８では，絞込条件として３種類の属性データを用いる場合であり，属性データ１が「自治体名」，属性データ２が「植物名」，属性データ３が「生育状態」である場合を示す。自治体数として７００，植物名として２０種類，生育状態として５段階を設定したとする。そうすると，１自治体に１ビットを割り付けると属性データ１「自治体名」には７００ビット必要となることから８８バイト（７０４ビット）が割り当てられる。また，１植物名に１ビットを割り付けると属性データ２「植物名」には２４ビット必要となることから３バイト（２４ビット）が割り当てられる。同様に，それぞれの生育状態に１ビットを割り付けると属性データ３「生育状態」には５ビット必要となることから１バイト（８ビット）が割り当てられる。
【００６６】
したがって，属性データのビット列のうち，バウンダリー情報を示すＢ［］には先頭１バイト目から８８バイト目までは属性データ１を示す「１」が，８９バイト目から９１バイト目までは属性データ２を示す「２」が，９２バイト目は属性データ３を示す「３」が記憶されていることとなる。
【００６７】
さらに，登録画像の属性データを示すＡ［］［ｉ］には，１バイト目から８８バイト目までのビット列には自治体名を示すビット列が，８９バイト目から９１バイト目までのビット列には植物名を示すビット列が，９２バイト目のビット列には生育状態を示すビット列が記憶されている。このように，Ａ［］［ｉ］には９２バイトのビット列が記憶されることとなる。
【００６８】
Ａ［］［ｉ］には単に「０」または「１」のビット列が代入されているだけなので，先頭の１ビットからどこまでのビットが属性データ１か，どこからどこまでのビットが属性データ２や属性データ３か，を特定することができない。そのため，Ｂ［］を参照することで，１バイト目（先頭の１ビット）から８８バイト目（先頭から７０４ビット目）までが属性データ１，８９バイト目（先頭から７０５ビット目）から９１バイト目（先頭から７２８ビット目）までが属性データ２，９２バイト目（先頭から７２９ビット目から７３６ビット目）までが属性データ３を示していることを特定することができる。
【００６９】
後述するクエリ画像属性データ検索処理部３６における，絞込条件としての属性データＣ［］と，登録画像に対応する属性データＡ［］［ｉ］とを用いた絞込処理の際に，属性データ１の絞込条件として，Ｃ［］の先頭の１ビット目から７０４ビット目までのビット列と，Ａ［］［ｉ］の先頭の１ビット目から７０４ビット目までの論理演算を行い，属性データ２の絞込条件としてＣ［］の先頭から７０５ビット目から７２８ビット目までのビット列と，Ａ［］［ｉ］の先頭から７０５ビット目から７２８ビット目までのビット列までの論理演算を行い，属性データ３の絞込条件としてＣ［］の先頭から７２９ビット目から７３６ビット目までのビット列と，Ａ［］［ｉ］の先頭から７２９ビット目から７３６ビット目までのビット列までの論理演算を行うことで，それぞれ絞込処理を実行することができる。ここでは，属性情報Ａ［］［ｉ］と絞込条件Ｃ［］のビットの配置をそろえておき，各属性をバイト単位で割り付けることで，絞込の操作をバイト単位の論理演算命令（あるいはバイトを超える大きな単位でも良い）によって演算できることを利用して，高速演算を実現する。
【００７０】
このように，絞込条件としての属性データは，バイナリーデータとしてのビット列が記憶されているだけであるので，その境界がわからないと，どこまでを一単位の属性データとして処理をしたら良いのか，特定することができない。しかしＢ［］で各属性データの境界を管理することによって，属性データのデータ領域を動的に管理することができる。そのため，管理者が管理したい画像の内容や種類などによって，絞込条件として用いる属性データの種類を変更することが可能となる。
【００７１】
配列Ｒ［］は，クエリ画像の特徴ベクトル（Ｑ［ｊ］）と，登録画像の特徴ベクトル（Ｖ［ｊ］［ｉ］）との類似度を記憶する。本明細書では特徴量として，Histogram intersectionを用いるので，類似度は，後述のＳ２６０のように，
Ｒ［ｉ］＝Ｒ［ｉ］＋ｍｉｎ（Ｑ［ｊ］，Ｖ［ｊ］［ｉ］）
として算出することができるが，それ以外にも，Ｌ１距離，Ｌ２距離などを用いることもできる。
【００７２】
類似度としてＬ１距離を用いる場合には，
Ｒ［ｉ］＝Ｒ［ｉ］＋｜Ｑ［ｊ］−Ｖ［ｊ］［ｉ］｜
のように算出することができる。
また，類似度としてＬ２距離を用いる場合には，
Ｒ［ｉ］＝Ｒ［ｉ］＋（Ｑ［ｊ］−Ｖ［ｊ］［ｉ］）２
のように算出することができる。
【００７３】
配列Ｐ［］は，属性単位の絞込の途中状態と結果を格納する。すなわち，Ｐ［］は，Ｃ［］に記憶された属性データの値とＡ［］［］に記憶された属性データの値とに基づいて，論理演算子ＯＲについて演算したレジスタである。たとえば属性データとして，「自治体名」，「生物名」，「生育状態」が設けられているとき，各属性データは「ＡＮＤ」の論理演算子で結ばれる。一方，属性データ「自治体」について，利用者は複数の自治体名，たとえば「Ａ市」，「Ｂ市」，「Ｃ町」を絞込条件として設定できる。この絞込条件としての属性データの一例を図１０に示す。したがって，絞込条件として用いた属性データが図１０の場合，属性データの単位である「自治体名」に，「Ａ市」，「Ｂ市」，「Ｃ町」が論理演算子ＯＲでつながっているので，Ａ［］［］の属性データ「自治体名」に，「Ａ市」，「Ｂ市」，「Ｃ町」のいずれかが含まれているかを検索し，その検索結果として，含まれている場合には「１」を，含まれていない場合には「０」として記憶される。
【００７４】
配列Ｎ［］は，属性データによる絞込処理の絞込の途中状態と結果を格納する。すなわち，Ｃ［］に記憶された属性データの値（２進数）とＡ［］［］に記憶された属性データの値（２進数）とに基づいて，論理演算子ＡＮＤについて演算したレジスタである。たとえば絞込条件として用いた属性データが図１０の場合，属性データ「自治体名」に「Ａ市」，「Ｂ市」，「Ｃ町」のいずれかが含まれており，属性データ「生物名」として「イネ」が含まれており，属性データ「生育状態」に「Ｄ」，「Ｅ」のいずれかが含まれている場合に，その検索結果として，含まれている場合には「１」を，含まれていない場合には「０」として記憶される。
【実施例１】
【００７５】
つぎに本発明の類似画像検索システム１の代表的な処理プロセスの一例を，図３乃至図５に示す。また図８の類似画像検索システム１の処理の概念を，以下の説明のわかりやすさのため簡易化した概念図を図９に示す。以下の説明では図９を用いる。なお，説明の都合上，あらかじめ登録画像管理システム２の各機能において，登録画像は，画像の特徴量が固定長ベクトル化された値で，登録画像特徴ベクトル記憶部２４に記憶されていることとする。また，登録画像に対応する属性データはエンコードされ，バイナリーデータであるビット列として，登録画像属性データ記憶部２７に記憶されている。これらの操作は管理者用端末４または利用者用端末５からなされている。
【００７６】
図９では登録画像数が５であり，特徴量は４つの固定長ベクトルで表現されている。また，絞込条件となる属性データは２つであり，２つの属性データは，それぞれ１バイト（８ビット）である場合を示している。
【００７７】
具体的には，管理者は，管理者用端末４を操作することで登録画像を登録画像管理システム２に読み込ませる。そして登録画像入力受付処理部２０でその登録画像の入力を受け付ける。この際にその登録画像に対応するＩＤ（図９のＩ［ｉ］）を付す。登録画像入力受付処理部２０で入力を受け付けると，登録画像特徴量抽出処理部２１が，入力を受け付けた登録画像の特徴量を抽出し，登録画像ベクトル化処理部２２がベクトル化した値を算出して，登録画像登録処理部に登録させる。この値は，図９におけるＶ［ｊ］［ｉ］に値が記憶される。
【００７８】
また，その登録画像に絞込条件としての属性データがある場合には，管理者用端末４を操作することで登録画像に対応する属性データを登録画像管理システム２に入力し，その入力を登録画像属性データ入力受付処理部２５で入力を受け付ける。そしてその属性データを，登録画像属性データエンコード処理部２６がエンコードされた値（バイナリーデータのビット列）を算出する。そして算出された値が登録画像属性データ記憶部２７に記憶される。この値は，図９におけるＡ［ｋ］［ｉ］に値が記憶される。なお，図９では見やすさのため，ビット列ではなく１０進数表記がされているが，実際には，バイナリーデータのビット列が記憶されている。
【００７９】
Ｉ［ｉ］，Ｖ［ｊ］［ｉ］，Ａ［ｋ］［ｉ］はそれぞれ対応して記憶されている。
【００８０】
なお，登録画像と属性データの入力操作は同時に行われることが好ましいが，別々のタイミングで行われても良い。その場合，いずれが先に入力されても良い。
【００８１】
なお，図８および図９では，行方向および列方向を通常とは逆に（つまり通常の行方向を列方向に，通常の列方向を行方向にした状態）示している。そのため，たとえばＶ［ｊ］［ｉ］のうち，ｊは横方向に，ｉは縦方向に表現されていることとなる。これは，最後の添字がインクリメントされるとメモリ上では通常，その直後に配置されアクセスが早いこと，そのため後述するＳ２６０などの内側のループでは，最後の添字が１から登録画像数まで変わるようにすると最高速で実行できるためである。一方，図８および図９では，特徴ベクトルを横長に表現し，多量の登録画像の特徴ベクトルを縦方向に配置したほうがわかりやすいことから，Ｖ［ｘ］［ｙ］のｘは特徴ベクトルの次元数，ｙは登録画像数に対応させている。また内側のループの制御変数は後述するようにｉを用いて処理をしたいこと，などからの理由による。これらは一般的な場合であって，実際に各種のコンピュータシステムで実現する際には，利用するコンパイラが配列をどのようにメモリ上に配置するかにしたがって，添字の順を代える必要がある場合もある。
【００８２】
以上の図９のように，配列Ｉ［］，Ｖ［］，Ａ［］，Ｂ［］に値が記憶されている場合に，類似する画像を登録画像から検索することを所望する利用者は，利用者用端末５から所定の操作を行うことで類似画像検索システム１にアクセスし，クエリ画像を検索処理システム３に入力する。そして利用者用端末５から入力されたクエリ画像は，クエリ画像入力受付処理部３０で入力を受け付ける（Ｓ１００）。
【００８３】
また，そのクエリ画像に対応する属性データを，検索処理システム３に入力する。そして利用者用端末５から入力された属性データは，クエリ画像属性データ入力受付処理部３４で入力を受け付ける（Ｓ１００）。なお，属性データがない場合にはその入力処理，後述の絞込処理は不要となる。
【００８４】
クエリ画像入力受付処理部３０でクエリ画像の入力を受け付けると，類似画像の検索処理を実行する（Ｓ２００）。
【００８５】
まずクエリ画像入力受付処理部３０でクエリ画像の入力を受け付けると，クエリ画像特徴量抽出処理部３１は，入力を受け付けたクエリ画像から特徴量を抽出する。そしてクエリ画像ベクトル化処理部３２は，クエリ画像特徴量抽出処理部３１で抽出した特徴量をベクトル化(好ましくは固定長ベクトル化）することで，特徴ベクトルＱ［ｊ］（図９）を算出する（Ｓ２１０）。この結果，特徴ベクトルＱ［］の値が図１１のように，「２」，「０」，「３」，「５」であったとする。
【００８６】
つぎに，クエリ画像特徴ベクトル検索処理部３３は，クエリ画像と各登録画像の類似度を示すＲ［ｉ］（図９）の値を初期化（たとえば「０」を代入する）する（Ｓ２２０）。なお，ｉは登録されている画像の識別情報を示している。図９では，最初の画像は１，２番目に登録された画像が２，最後に登録された画像が５となるように，登録順に識別情報が付されている場合を示している。初期化した類似度Ｒ［］の値を図１２に模式的に示す。
【００８７】
そしてクエリ画像特徴ベクトル検索処理部３３は，クエリ画像ベクトル化処理部３２で算出した特徴ベクトルＱ［ｊ］と，登録画像特徴ベクトル記憶部２４に記憶する各登録画像の特徴ベクトルＶ［ｊ］［ｉ］（図９における特徴ベクトルＶ［ｊ］［ｉ］の一例を図１３に示す）とをマッチングし，類似度をＲ［ｉ］に記憶させる。
【００８８】
具体的には，特徴ベクトルＱ［］のすべてについて，Ｓ２４０〜Ｓ２６０の処理を反復実行する（Ｓ２３０）。なお，Ｑ［］の値が「０」については特徴量がないことを示すのでその処理については次のＱ［］の要素の処理に移る（Ｓ２５０）。そしてＱ［］の値が「０」ではない場合，Ｖ［ｊ］［］の要素（添字ｉ）について，
Ｒ［ｉ］＝Ｒ［ｉ］＋ｍｉｎ（Ｑ［ｊ］，Ｖ［ｊ］［ｉ］）
を実行する（Ｓ２６０）。
【００８９】
以上の処理をすべてのＱ［］について実行することで，クエリ画像と登録画像との類似度を特定することができる。
【００９０】
この処理を図９を用いて説明すると，Ｑ［］には要素として「２」，「０」，「３」，「５」が代入されており，ｉの最大値は５，ｊの最大値は４である（配列の添字の初期値は１とする）。
【００９１】
ｊ＝１のとき，Ｑ［１］＝「２」であるので（Ｓ２５０），ｉ＝１〜５のそれぞれについて，Ｓ２６０の処理を実行する。すなわち，
Ｒ［１］＝Ｒ［１］＋ｍｉｎ（Ｑ［１］，Ｖ［１］［１］）
Ｒ［２］＝Ｒ［２］＋ｍｉｎ（Ｑ［１］，Ｖ［１］［２］）
Ｒ［３］＝Ｒ［３］＋ｍｉｎ（Ｑ［１］，Ｖ［１］［３］）
Ｒ［４］＝Ｒ［４］＋ｍｉｎ（Ｑ［１］，Ｖ［１］［４］）
Ｒ［５］＝Ｒ［５］＋ｍｉｎ（Ｑ［１］，Ｖ［１］［５］）
を実行する。
【００９２】
そうするとＲ［１］〜Ｒ［５］はいずれも初期値「０」，Ｖ［１］［１］〜Ｖ［１］［５］はそれぞれ「２」，「０」，「７」，「１」，「２」であるので，Ｓ２６０の処理の結果，Ｒ［１］〜Ｒ［５］の値は「２」，「０」，「２」，「１」，「２」となる。この処理を模式的に示すのが，図１４である。
【００９３】
すべてのｉについてＳ２６０の処理を実行したので，ｊ＝１について処理を終了し，ｊの値をインクリメントし，ｊ＝２とする（Ｓ２３０）。
【００９４】
ｊ＝２のとき，Ｑ［２］＝「０」なので（Ｓ２５０），Ｓ２６０の処理は実行せずに，ｊの値をインクリメントし，ｊ＝３とする（Ｓ２３０）。
【００９５】
ｊ＝３のとき，Ｑ［３］＝「３」であるので（Ｓ２５０），ｉ＝１〜５のそれぞれについて，Ｓ２６０の処理を実行する。すなわち，
Ｒ［１］＝Ｒ［１］＋ｍｉｎ（Ｑ［３］，Ｖ［３］［１］）
Ｒ［２］＝Ｒ［２］＋ｍｉｎ（Ｑ［３］，Ｖ［３］［２］）
Ｒ［３］＝Ｒ［３］＋ｍｉｎ（Ｑ［３］，Ｖ［３］［３］）
Ｒ［４］＝Ｒ［４］＋ｍｉｎ（Ｑ［３］，Ｖ［３］［４］）
Ｒ［５］＝Ｒ［５］＋ｍｉｎ（Ｑ［３］，Ｖ［３］［５］）
を実行する。
【００９６】
Ｓ２６０の処理前のＲ［１］〜Ｒ［５］は「２」，「０」，「２」，「１」，「２」，Ｖ［３］［１］〜Ｖ［３］［５］はそれぞれ「０」，「６」，「２」，「０」，「２」であるので，Ｓ２６０の処理の結果，Ｒ［１］〜Ｒ［５］の値は「２」，「３」，「４」，「１」，「４」となる。この処理を模式的に示すのが，図１５である。
【００９７】
すべてのｉについてＳ２６０の処理を実行したので，ｊ＝３について処理を終了し，ｊの値をインクリメントし，ｊ＝４とする（Ｓ２３０）。
【００９８】
ｊ＝４のとき，Ｑ［４］＝「５」であるので（Ｓ２５０），ｉ＝１〜５のそれぞれについて，Ｓ２６０の処理を実行する。すなわち，
Ｒ［１］＝Ｒ［１］＋ｍｉｎ（Ｑ［４］，Ｖ［４］［１］）
Ｒ［２］＝Ｒ［２］＋ｍｉｎ（Ｑ［４］，Ｖ［４］［２］）
Ｒ［３］＝Ｒ［３］＋ｍｉｎ（Ｑ［４］，Ｖ［４］［３］）
Ｒ［４］＝Ｒ［４］＋ｍｉｎ（Ｑ［４］，Ｖ［４］［４］）
Ｒ［５］＝Ｒ［５］＋ｍｉｎ（Ｑ［４］，Ｖ［４］［５］）
を実行する。
【００９９】
Ｓ２６０の処理前のＲ［１］〜Ｒ［５］は「２」，「３」，「４」，「１」，「４」Ｖ［４］［１］〜Ｖ［４］［５］はそれぞれ「４」，「１」，「０」，「２」，「１」であるので，Ｓ２６０の処理の結果，Ｒ［１］〜Ｒ［５］の値は「６」，「４」，「４」，「３」，「５」となる。この処理を模式的に示すのが，図１６である。
【０１００】
以上の処理を実行することで，ｊが最大値４の場合についても処理を実行したので，Ｓ２３０〜Ｓ２６０の処理を終了し（Ｓ２４０），Ｓ２７０以降の処理を実行する。そして，クエリ画像属性データ入力受付処理部３４では絞込条件としての属性データの入力を受け付けているので（Ｓ２７０），クエリ画像属性データ検索処理における絞込条件での絞込処理を実行する（Ｓ２８０）。
【０１０１】
絞込処理の概念を図１７を用いて説明する。まずクエリ画像属性データエンコード処理部３５は，クエリ画像属性データ入力受付処理部３４で入力を受け付けた絞込条件としての属性データをエンコード（２進数化）し，絞込条件コードＣ［］にその値（２進数）を記憶させる（Ｓ４００）。図９ではＣ［］にそれぞれ「１」，「３」が値（２進数）として記憶されている場合を示しているので，Ｃ［１］＝「０００００００１」，Ｃ［２］＝「００００００１１」となる。なお，Ａ［］［］も図９に対応するバイナリーデータのビット列（２進数）が記憶されている。なおここで絞込条件１は「属性１のｂｉｔ１＝ＹＥＳ」を示し，絞込条件２は「属性２のｂｉｔ１またはｂｉｔ２＝ＹＥＳ」であることを示している。
【０１０２】
つぎにクエリ画像属性データ検索処理部３６は，配列Ｎ［］，Ｐ［］を初期化し，配列Ｎ［］には「１」を，Ｐ［］には「０」を代入する（Ｓ４１０）。
【０１０３】
そしてクエリ画像属性データ検索処理部３６は，配列Ｃ［］の要素について，Ｓ４３０以降の処理を反復し実行することで，絞込条件に該当する各登録画像の属性データがあるかを検索する（Ｓ４２０）。
【０１０４】
具体的には，図１７の場合，配列Ｃ［］について属性データの種類は２であるので，添字ｋの最大値は２となる。まずｋ＝１では，すべてのｋについて処理を終了していないので（Ｓ４３０），Ｓ４４０の判定処理を実行する。そして，バウンダリー情報の配列であるＢ［１］を参照すると，新しい属性データに対する処理ではないので（属性１の処理であるので），そのままＳ４５０の処理を実行する。
【０１０５】
具体的にはＣ［１］のビット列がすべて１であるか，すなわち，「１１１１１１１１」であるかを判定する（Ｓ４５０）。図１７の場合，Ｃ［１］＝「０００００００１」なので，Ｃ［１］のビット列がすべて０であるか，すなわち「００００００００」であるかを判定する（Ｓ４６０）。図１７の場合，Ｃ［１］＝「０００００００１」なので，Ａ［１］［］の要素である添字ｉについて，ｉ＝１〜５について，
Ｐ［ｉ］＝Ｐ［ｉ］  ＯＲ  （Ｃ［１］  ＡＮＤ  Ａ［１］［ｉ］）
の処理を実行する（Ｓ４７０）。
【０１０６】
そうすると，ｉ＝１，３〜５についてはＡ［１］［ｉ］の値が「１（ビット１が「１（ＹＥＳ）」）」（０００００００１）なので，Ｐ［１］，Ｐ［３］〜Ｐ［５］については「１」が記憶される。一方，ｉ＝２については，Ａ［１］［２］の値が「４（ビット１が「０（ＮＯ）」）」（０００００１００）なので，Ｐ［２］＝０が記憶される。このときのＰ［］が図１７である。
【０１０７】
ｋ＝１について，ｉ＝１〜５の全ての場合についてＳ４７０の処理を実行したので，ｋをインクリメントし，ｋ＝２となる（Ｓ４２０）。
【０１０８】
そしてｋ＝２ではまだ処理が終了しないので（Ｓ４３０），Ｂ［２］が新しい属性かを判定する。すなわちバウンダリー情報の配列であるＢ［２］を参照すると，Ｂ［２］は新しい属性データ（属性２）に対する処理なので（Ｓ４４０），
Ｎ［］＝Ｎ［］  ＡＮＤ  Ｐ［］
の演算を行う。
【０１０９】
すなわち，Ｎ［］については初期値としてｉ＝１〜５のそれぞれに「１」が記憶されており，Ｐ［］についてはｋ＝１のときの演算の結果，Ｐ［１］，Ｐ［３］〜Ｐ［５］については「１」，Ｐ［２］については「０」が記憶されており，ｉ＝１〜５についてそれぞれＮ［］とＰ［］のＡＮＤを演算してＮ［］に代入することになるので，Ｎ［１］，Ｎ［３］〜Ｎ［５］については「１」，Ｎ［２］については「０」が記憶されることとなる（Ｓ４９０）。
【０１１０】
また，Ｐ［］を初期化するため，ｉ＝１〜５についてＰ［］＝０を代入する（Ｓ４９０）。
【０１１１】
つぎに，Ｃ［２］のビット列がすべて１であるか，すなわち，「１１１１１１１１」であるかを判定する（Ｓ４５０）。図１７の場合，Ｃ［２］＝「００００００１１」なので，Ｃ［１］のビット列がすべて０であるか，すなわち「００００００００」であるかを判定する（Ｓ４６０）。図１７の場合，Ｃ［２］＝「００００００１１」なので，Ａ［２］［］の要素である添字ｉについて，ｉ＝１〜５について，
Ｐ［ｉ］＝Ｐ［ｉ］  ＯＲ  （Ｃ［２］  ＡＮＤ  Ａ［２］［ｉ］）
の処理を実行する（Ｓ４７０）。
【０１１２】
そうすると，
ｉ＝１のとき，Ｐ［１］＝Ｐ［１］  ＯＲ  （Ｃ［２］  ＡＮＤ  Ａ［２］［１］）
の演算をすることになるので，Ａ［２］［１］の値が「１（ビット１が「１（ＹＥＳ）」）」（０００００００１）であることから，Ｐ［１］＝１が記憶される。
【０１１３】
ｉ＝２のとき，Ｐ［２］＝Ｐ［２］  ＯＲ  （Ｃ［２］  ＡＮＤ  Ａ［２］［２］）
の演算をすることになるので，Ａ［２］［２］の値が「２（ビット２が「１（ＹＥＳ）」）」（００００００１０）であることから，Ｐ［２］＝１が記憶される。
【０１１４】
ｉ＝３のとき，Ｐ［３］＝Ｐ［３］  ＯＲ  （Ｃ［２］  ＡＮＤ  Ａ［２］［３］）
の演算をすることになるので，Ａ［２］［３］の値が「４（ビット２が「０（ＮＯ）」）」（０００００１００）であることから，Ｐ［３］＝０が記憶される。
【０１１５】
ｉ＝４，５のときもｉ＝２と同様の演算を行い，Ｐ［４］＝１，Ｐ［５］＝１が記憶される。
【０１１６】
以上のようにＳ４７０の処理をｉ＝１〜５について演算を行うと，Ｐ［１］，Ｐ［２］，Ｐ［４］，Ｐ［５］について「１」が，Ｐ［３］について「０」が記憶されることとなる。
【０１１７】
ｋ＝１について，ｉ＝１〜５の全ての場合についてＳ４７０の処理を実行したので，ｋをインクリメントし，ｋ＝３となる（Ｓ４２０）。
【０１１８】
そしてｋ＝３ではすべての処理が終了したので（Ｓ４３０），
Ｎ［］＝Ｎ［］  ＡＮＤ  Ｐ［］
の演算を行う（Ｓ５００）。
【０１１９】
そうすると，Ｎ［１］，Ｎ［３］〜Ｎ［５］については「１」，Ｎ［２］については「０」が記憶されており，Ｐ［１］，Ｐ［２］，Ｐ［４］，Ｐ［５］について「１」が，Ｐ［３］について「０」が記憶されていることから，これらのＡＮＤ演算を行うと，Ｎ［１］，Ｎ［４］，Ｎ［５］には「１」が，Ｎ［２］，Ｎ［３］については「０」が演算結果として代入されることとなり，これを最終的なＮ［］の出力結果とする（Ｓ５００）。
【０１２０】
以上のような処理を実行することで，絞込条件での絞込処理を実行することができる。
【０１２１】
Ｓ４５０において，Ｃ［ｋ］の全ビットが「１」の場合，Ｓ４７０の処理でＯＲの演算をしたとしても，Ｐ［］＝１となることが明らかである。そうすると，Ｓ４７０における，
Ｐ［ｉ］＝Ｐ［ｉ］  ＯＲ  （Ｃ［ｋ］  ＡＮＤ  Ａ［ｋ］［ｉ］）
の演算で，
Ｃ［ｋ］  ＡＮＤ  Ａ［ｋ］［ｉ］
の演算をしても，結果は同じとなる。そのため，
Ｃ［ｋ］  ＡＮＤ  Ａ［ｋ］［ｉ］
の演算を省略し，Ｓ４８０の演算として処理をした方が，一つ演算を選らすことができるので，処理の高速化につなげることができる。その点において，Ｓ４５０の処理の技術的意義があるが，Ｓ４５０の分岐処理は設けなくても良い。
【０１２２】
以上のようにして絞込処理を終了すると，検索結果出力処理部３７は，Ｒ［］の要素であるｉ＝１〜５について，
Ｎ［ｉ］＝０ならばＲ［ｉ］＝０
の反復処理を実行する（Ｓ２９０）。これは，絞込条件を充足していない登録画像の類似度Ｒ［ｉ］を「０」にし，類似度を低くする処理を行う。なお，類似度を低くするとは，類似画像の検索処理で特定した類似度よりも低くすればよく，必ずしも類似度Ｒ［ｉ］を「０」にしなくても良い。
【０１２３】
図１７の場合，ｉ＝１〜５についてＲ［ｉ］には「６」，「４」，「４」，「３」，「５」が記憶されているが，Ｎ［１］，Ｎ［４］，Ｎ［５］には「１」が，Ｎ［２］，Ｎ［３］については「０」が入っているので，ｉ＝２，３について，Ｒ［ｉ］に「０」を代入する。その結果，ｉ＝１〜５について，Ｒ［ｉ］には，「６」，「０」，「０」，「３」，「５」が代入されることとなる。
【０１２４】
以上のようにして絞込条件を加味して類似度を修正すると，Ｒ［］に基づいて類似度の高い順にソートし，それを出力結果とする（Ｓ３００）。この場合，Ｒ［１］＝「６」，Ｒ［５］＝「５」，Ｒ［４］＝「３」の順に出力結果と並び替えられ，ｉ＝１，５，４に対応する登録画像を特定し，類似画像の検索結果として，利用者用端末５に出力させる。なおこの場合，出力結果に対応する登録画像を出力結果として表示させても良いし，表示させなくても良い。
【実施例２】
【０１２５】
実施例１では，登録された画像に基づいて類似画像検索を行う場合を示した。そこで，本実施例では，登録画像が削除された場合でも，単にデータテーブルのデータが削除あるいは処理対象から除外されることで，類似画像の検索処理を実行する場合を示す。本実施例の処理を用いることで，検索の処理プロセスそのものには修正を要さず，検索速度は落とさず，また検索結果は正しい結果を，容易に，得られる。
【０１２６】
すなわち，管理者用端末４または利用者用端末５から，登録画像管理システム２ですでに登録されている登録画像の削除処理の要求を受け付けた場合，登録画像管理システム２は，登録画像特徴ベクトル記憶部２４，登録画像属性データ記憶部２７から，その登録画像の特徴ベクトルＶ［］［ｉ］，属性データＡ［］［ｉ］の値をゼロにし，検索対象から除外するフラグを立てる処理を実行する。
【０１２７】
属性情報Ａ［］［ｉ］の値をゼロにすることにより，削除された画像はどんなクエリ画像に対しても最も似ていない画像となるため，検索処理に特例処理を追加しなくても，実施例１の類似検索および絞込処理による検索結果から除外される。そのため，従来のように，登録画像のハッシュ値の再計算などの処理も不要となる。なお，画像を追加する際には，除外するフラグから消去済みの画像を見つけ，そのメモリ領域を再利用して登録を行うことにより，メモリの利用効率を高めることができる。
【０１２８】
なお，本実施例のように登録画像の削除処理を行う場合であって，フラグを用いて処理対象から除外する場合には，検索処理システム３で類似画像の検索処理を実行する際に，当該フラグをチェックし，処理対象から除外することを示すフラグがある場合には検索処理の対象には含めないようにする。
【実施例３】
【０１２９】
Ｓ３００における検索結果出力処理部３７での出力処理にあたり，単に類似度に基づいてソートするのではなく，類似性のヒストグラムと，検索結果として必要な登録画像のリスト長（数）から足きりを行ってもよい。
【０１３０】
この場合，類似度Ｒ［］のソートを単純に行った場合，そのソートに要する実行時間はＯ（ｎ  ｌｏｇ（ｎ））となる。そのため，ソートの前に，ソートの対象数（ｎ）をあらかじめ減らしておけば，ソートに要する実行時間を大幅に減少させることができる。
【０１３１】
検索結果出力処理部３７は，Ｓ３００における処理の際に，全登録画像に対する類似度Ｒ［］がすでに求められているので，まず，類似度の最小値と最大値とを含む区間を，十分に小さな粒度で区分けしたヒストグラムを作成する。たとえば，類似度の最小値が０，最大値が１０００である場合，類似度が０〜９，１０〜１９，・・・，９９０〜９９９，１０００のように類似度が１０ずつのヒストグラムを作成し，全類似度をカウントアップする。この際の粒度は適宜設定可能である。
【０１３２】
そして，検索結果出力処理部３７で出力すべき検索結果数ｋは，あらかじめ第ｋ位までの類似する画像を求めるとして設定されているので，上記で作成した類似度のヒストグラムでｋ位がどの範囲に入っているかを求め，ソートの対象を限定する。
【０１３３】
たとえば，ｋ位が類似度８００〜８０９の範囲に入っていることがヒストグラムから求められた場合，ソートの対象を類似度８００以上とし，あらためて，登録画像のＩＤであるＩ［］とその類似度Ｒ［］とからなるリスト（長さはｋ＋Δ）を生成し，そのリストを，類似度Ｒ［］をキーとしてソートする。
【０１３４】
以上のような処理を実行することで，ソートの対象数をあらかじめ減らすことができ，ソートに要する実行時間を大幅に減少させることができる。
【産業上の利用可能性】
【０１３５】
本発明の類似画像検索システム１を用いることで，従来のように類似性の高い画像同士のグルーピング等の前処理は行わず，画像のデータ構造の簡素化と反復処理の簡素化を用いた処理を実現することで，単純な繰り返し演算に対するＣＰＵの高速実行の能力を活用し，類似画像の高速化を実現することができる。
【０１３６】
また，絞り込みの条件として用いる属性データについても，類似する画像の検索と同様，データ構造の簡素化と反復処理の簡素化を用いた処理を実現することで，単純な繰り返し演算に対するＣＰＵの高速実行の能力を活用し，類似画像の高速化を実現することができる。
【符号の説明】
【０１３７】
１：類似画像検索システム
２：登録画像管理システム
３：検索処理システム
４：管理者用端末
５：利用者用端末
２０：登録画像入力受付処理部
２１：登録画像特徴量抽出処理部
２２：登録画像ベクトル化処理部
２３：登録画像特徴ベクトル登録処理部
２４：登録画像特徴ベクトル記憶部
２５：登録画像属性データ入力受付処理部
２６：登録画像属性データエンコード処理部
２７：登録画像属性データ記憶部
３０：クエリ画像入力受付処理部
３１：クエリ画像特徴量抽出処理部
３２：クエリ画像ベクトル化処理部
３３：クエリ画像特徴ベクトル検索処理部
３４：クエリ画像属性データ入力受付処理部
３５：クエリ画像属性データエンコード処理部
３６：クエリ画像属性データ検索処理部
３７：検索結果出力処理部
７０：演算装置
７１：記憶装置
７２：表示装置
７３：通信装置
７４：入力装置
【図１】
2017045291.tif 000003
【図２】
2017045291.tif 000004
【図３】
2017045291.tif 000005
【図４】
2017045291.tif 000006
【図５】
2017045291.tif 000007
【図６】
2017045291.tif 000008
【図７】
2017045291.tif 000009
【図８】
2017045291.tif 000010
【図９】
2017045291.tif 000011
【図１０】
2017045291.tif 000012
【図１１】
2017045291.tif 000013
【図１２】
2017045291.tif 000014
【図１３】
2017045291.tif 000015
【図１４】
2017045291.tif 000016
【図１５】
2017045291.tif 000017
【図１６】
2017045291.tif 000018
【図１７】
2017045291.tif 000019
【図１８】
2017045291.tif 000020
【図１９】
2017045291.tif 000021