(57)【特許請求の範囲】
【請求項１】
色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データを登録し、登録された前記空間データについて予め木構造をなすｖｐ−ｔｒｅｅ形式の空間インデックスを生成しておき、ユーザが指定した前記空間データに類似する前記空間データを前記空間インデックスを利用して画像を検索するシステムで実行される空間インデックス方法であって、
前記システムは、制御部と記憶部を備え、
前記制御部が、異なる種別の前記空間データに対して各種別単位でそれぞれ前記空間インデックスを生成し、個々の前記空間インデックスから所定の検索数を検索してバッファリングした後にこれらの結果をマージして検索結果を求めるという処理を指定された検索結果数まで繰り返し、前記空間データの各種別に重み付けをして検索を行なうステップを含む、
ことを特徴とする空間インデックス方法。
【請求項２】
前記制御部が、バッファリングされた検索数のうちスコアの増加量が多い前記空間インデックスを優先的に処理するようにした、
ことを特徴とする請求項１記載の空間インデックス方法。
【請求項３】
色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データを登録し、登録された前記空間データについて予め木構造をなすｖｐ−ｔｒｅｅ形式の空間インデックスを生成しておき、ユーザが指定した前記空間データに類似する前記空間データを前記空間インデックスを利用して画像を検索するシステムで実行される空間インデックス方法であって、
前記システムは、制御部と記憶部を備え、
前記制御部が、異なる種別の前記空間データに対して各種別単位でそれぞれ前記空間インデックスを生成し、個々の前記空間インデックスの検索結果において未処理の最上位及び次に位置するオブジェクト間の距離に関するスコアの増加量が多いものから順にスコアを算出し、次の順位の最大スコアをそれぞれ合計した値を最大確定スコアとし、その最大確定スコアより小さい最終スコアのオブジェクトの順位を順位確定することで、前記空間データの各種別に重み付けをして検索を行なうステップを含む、
ことを特徴とする空間インデックス方法。
【請求項４】
色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データを登録し、登録された前記空間データについて予め木構造をなすｖｐ−ｔｒｅｅ形式の空間インデックスを生成しておき、ユーザが指定した前記空間データに類似する前記空間データを前記空間インデックスを利用して画像を検索するシステムで実行される空間インデックス方法であって、
前記システムは、制御部と記憶部を備え、
前記制御部が、異なる種別の前記空間データに対して各種別単位でそれぞれ前記空間インデックスを生成し、前記空間データの各種別に付けられた重み付けを等分に設定し、複数の前記空間データを統合して単一の空間インデックスを生成し、指定された重み付けに従い生ずる不確定部分を包含する範囲をインデックスで検索し、重み付けによる最終スコアを算出して順位付けを行なうことにより前記空間データの各種別に重み付けをして検索を行なうステップを含む、
ことを特徴とする空間インデックス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大量の画像特徴データからユーザが指定する画像特徴データに類似する特徴を検索するような空間データの検索を高速化する空間インデックス方法に関する。
【背景技術】
【０００２】
近年、ＣＰＵの高速化及び一次／二次記憶装置の大容量化により、画像を手軽に扱えるようになっただけでなく、ワールドワイドウェブ（ＷＷＷ）やデジタルカメラの普及により画像データを容易にパーソナルコンピュータ等に取り込むことが可能となっている。このため、我々の身の回りに大量の画像データが氾濫しつつある。このため、近年、このような大量の画像データからユーザが所望する画像を検索するための技術が要望され、脚光を浴び始めている。
【０００３】
従来の画像検索では予め人手により画像に属性情報を付与し、この属性情報をもとに検索する方法が一般的であった。しかし、これでは画像データの急増には対応することができない。そこで、近年、画像データから自動的に特徴を抽出し、抽出された画像特徴をもとに指定された画像に類似する画像を検索する類似画像検索の研究が進められ、成果を収めている。
【０００４】
画像から抽出される特徴として代表的なものには、色（ヒストグラム）、テクスチャ、形状などがある。類似画像検索では、これらの画像特徴を予め画像から抽出し保管しておく。そして、検索時には、指定された問い合わせ画像から同様に画像特徴を抽出し、すでに抽出されている画像特徴と逐次比較（距離計算）を行なうことで類似する画像を検索する。この方法では、画像特徴の数が少ない場合には処理速度に問題がないが、画像特徴が大量になると必然的に処理速度が遅くなってしまう。そこで、画像特徴のインデックスを生成し検索の高速化を図るというようなことが一般的に行なわれている。
【０００５】
画像特徴として代表的であるヒストグラム特徴では、類似度を計算する場合に、類似する色のビンも考慮して類似度を求めなければならない。つまり、ヒストグラムは、ビンで構成される多次元データで表現され、類似度の計算には多次元データの要素間の相関を考慮した距離が利用される。多次元データということから多次元空間インデックスを利用する方法が考えられるが、多次元空間インデックスは一般にユークリッド空間を前提としているため、相関を考慮した距離に応用することは困難である。
【０００６】
そこで、距離空間インデックスの研究が進められている。多次元インデックスでは多次元空間上でのオブジェクトの座標値をもとにしてインデックスを生成するのに対し、距離空間インデックスでは距離のみに基づいてインデックスを生成する。つまり、距離空間インデックスは、オブジェクトの座標はまったく関知せず、オブジェクト間の距離のみによってインデックスを生成する。したがって、相関を考慮した距離でも問題なくインデックスを生成することが可能となる。
【０００７】
ここで、距離空間インデックスによる類似画像検索の手法について説明する。まず、Ｏを画像、Ｆ（Ｏ）を特徴抽出関数、画像特徴をＸ＝｛Ｘ1 ，Ｘ2 ，Ｘ3 ，……，Ｘn ｝とすると、Ｘ＝Ｆ（Ｏ）であり、画像間の距離（類似度）は、Ｄ（Ｆ（Ｏａ），Ｆ（Ｏｂ））と表される。類似画像検索では、指定した問い合わせ画像に類似する画像を検索する。つまり、問い合わせ画像と各画像との距離を算出し、距離が小さい画像を検索結果とする。なお、検索の指定方法としては、次の二つがある。
・範囲指定検索（range query）
検索範囲を示す円の中心オブジェクト（問い合わせオブジェクト）Ｏｑ及び半径Ｒｑを指定し、Ｄ（Ｏｑ，Ｏ）≦Ｒｑを満足するオブジェクトの集合を求める方法である。
・件数指定検索（k−nearest neighbor query）
検索の中心オブジェクトＯｑ及び検索結果ｋを指定してＯｑとの距離Ｄ（Ｏｑ，Ｏ）が小さい順に上位ｋ件のオブジェクトＯの集合を求める方法である。
【０００８】
類似画像検索では、類似する尺度を表す距離定義が重要となる。代表的な特徴間の距離として、次式で表される距離がある。
Ｄｅ（F（Ｘ），Ｆ（Ｙ））＝｛Σ（Ｘ−Ｙ）k｝1/k
この距離は、ｋ＝２のときにはユークリッド距離であり、Ｋ＝１のときには市街区距離となる。しかし、色のヒストグラム特徴では、各特徴間の相関を考慮する必要があるため、以下のヒストグラム距離が提案されている。
Ｄｈ（F（X）,F（Y））＝（Ｘ−Ｙ）TＡ（Ｘ−Ｙ）
【０００９】
次いで、距離空間インデックスとしては、Ｍ−ｔｒｅｅやｖｐ−ｔｒｅｅがある。
【００１０】
Ｍ−ｔｒｅｅは、例えば、非特許文献１に示されているような空間インデックスである。このようなＭ−ｔｒｅｅにおいては、Ｍ−ｔｒｅｅの各ノードＮは中心オブジェクトＯと半径とによって形成され、ノードＮは複数の子ノードｎを有する。図１２に示すように、ノードＮの円は子ノードｎの円を完全に包囲し、ノードＮの円は必ずいずれかの子ノードｎの円に接する。Ｍ−ｔｒｅｅでは、各ノードＮが中心オブジェクトＯとノードＮに属するすべての子ノードｎの円を包含する円の半径を保持する。さらに、各ノードＮは、中心オブジェクトＯと親ノードＮの中心オブジェクトＯとの間の距離を持つ。この距離により、三角不等式に基づいて検索時に距離計算回数を削減することができる。
【００１１】
一方、ｖｐ−ｔｒｅｅは、非特許文献２等に示されているような空間インデックスである。このようなｖｐ−ｔｒｅｅでは、各ノードの空間はひとつの中心オブジェクト（vantage point）と分割円（二次元空間ではないので実際には円ではないが、説明の都合上円と表す）とによって順次分割される。検索時には、ルートノードから辿り、問い合わせオブジェクトが中心オブジェクトと半径とによって分割されている領域のいずれに属するかを判断し、辿るべき子ノードを決定する。これを繰り返すことで、検索範囲に適合するリーフを探す。
【００１２】
距離空間インデックスの検索処理に占める時間は二次記憶へのアクセス時間は勿論のこと、距離計算時間が大きな割合を占める。特に、ヒストグラム距離のように相関を考慮した距離の場合には増大する。したがって、距離計算の回数を減らすことが大きな課題となっている。
【００１３】
ｖｐ−ｔｒｅｅでは、一つの中心オブジェクトに対して複数の分割円を設定した分岐とすることで、中心オブジェクトからの距離を一回計算するだけで複数のノード領域のいずれに属するかを判断することができ、距離計算回数を減らすことができる。しかし、画像特徴の場合には、空間を一つの中心オブジェクトのみで数多く分割しても各領域はきわめて細いリング状になるため、検索時にすべての分割領域が検索範囲と交差してしまい、分割の意味が薄れてしまう傾向がある。
【００１４】
【非特許文献１】M-tree: An Efficient Access Method for Similarity Search in Metric Spaces（Proc. of the 23rd VLDB Conf. Athens, Greece, 1997）
【非特許文献２】Uhlmann, J. K., Satisfying general proximity/similarity queries with metric trees, Information Procedding Letters 40, pp. 175-179, 1991」や「Yianilos, P. N., Data Structure and Algorithms for Nearest Neighbor Search in General Metric Spaces, ACM-SIAM Symp. on Discrete Algorithms, pp. 311-321, 1993
【発明の開示】
【発明が解決しようとする課題】
【００１５】
以上述べた空間距離インデックスのうち、ｖｐ−ｔｒｅｅは、静的にインデックスを生成するアルゴリズムであり、インデックスを構築した後にオブジェクトを追加登録したり削除したりするというような操作ができないという問題がある。また、前述したように、画像特徴の検索に適用した場合、空間を一つの中心オブジェクトのみで数多く分割しても各領域はきわめて細いリング状になるため、検索時にすべての分割領域が検索範囲と交差してしまい、充分な検索速度を得ることができないという問題もある。さらに、空間を一つの中心オブジェクトで数多く分割するという構造上、単一の空間での検索にしか対応することができないという問題もある。
【００１６】
一方、前述したＭ−ｔｒｅｅによれば、動的にオブジェクトの挿入をすることができる。しかしながら、各ノード領域は子ノードの領域を包含するために、各ノード領域が大きくなりすぎる傾向がある。したがって、兄弟ノード同士の領域のオーバーラップが大きくなり、その結果、検索時に木構造を辿る場合の分別率が悪くなり、その結果、多くの子ノードを辿ることとなるために検索速度が低下してしまうという問題がある。また、各ノードは、親ノードとの距離を予め保持することで、検索時に距離計算回数をある程度押さえることができるが、これも充分とはいえない。さらに、ｖｐ−ｔｒｅｅ同様、単一の空間での検索にしか対応することができないという問題もある。
【００１７】
本発明の目的は、動的にオブジェクトを挿入することができることを前提としつつ、検索速度を高速度化することである。
【００１８】
本発明の別の目的は、複数空間での検索に対応することができる空間インデックス構造を得ることである。
【課題を解決するための手段】
【００３３】
上述した課題を解決し、目的を達成するために、請求項１記載の発明は、色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データを登録し、登録された前記空間データについて予め木構造をなすｖｐ−ｔｒｅｅ形式の空間インデックスを生成しておき、ユーザが指定した前記空間データに類似する前記空間データを前記空間インデックスを利用して画像を検索するシステムで実行される空間インデックス方法であって、前記システムは、制御部と記憶部を備え、前記制御部が、異なる種別の前記空間データに対して各種別単位でそれぞれ前記空間インデックスを生成し、個々の前記空間インデックスから所定の検索数を検索してバッファリングした後にこれらの結果をマージして検索結果を求めるという処理を指定された検索結果数まで繰り返し、前記空間データの各種別に重み付けをして検索を行なうステップを含む、ことを特徴とする。
【００３４】
請求項２記載の発明は、請求項１記載の空間インデックス方法の発明において、前記制御部が、バッファリングされた検索数のうちスコアの増加量が多い前記空間インデックスを優先的に処理するようにした。
【００３５】
請求項３記載の発明は、色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データを登録し、登録された前記空間データについて予め木構造をなすｖｐ−ｔｒｅｅ形式の空間インデックスを生成しておき、ユーザが指定した前記空間データに類似する前記空間データを前記空間インデックスを利用して画像を検索するシステムで実行される空間インデックス方法であって、前記システムは、制御部と記憶部を備え、前記制御部が、異なる種別の前記空間データに対して各種別単位でそれぞれ前記空間インデックスを生成し、個々の前記空間インデックスの検索結果において未処理の最上位及び次に位置するオブジェクト間の距離に関するスコアの増加量が多いものから順にスコアを算出し、次の順位の最大スコアをそれぞれ合計した値を最大確定スコアとし、その最大確定スコアより小さい最終スコアのオブジェクトの順位を順位確定することで、前記空間データの各種別に重み付けをして検索を行なうステップを含む、ことを特徴とする。
【００３６】
請求項４記載の発明は、色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データを登録し、登録された前記空間データについて予め木構造をなすｖｐ−ｔｒｅｅ形式の空間インデックスを生成しておき、ユーザが指定した前記空間データに類似する前記空間データを前記空間インデックスを利用して画像を検索するシステムで実行される空間インデックス方法であって、前記システムは、制御部と記憶部を備え、前記制御部が、異なる種別の前記空間データに対して各種別単位でそれぞれ前記空間インデックスを生成し、前記空間データの各種別に付けられた重み付けを等分に設定し、複数の前記空間データを統合して単一の空間インデックスを生成し、指定された重み付けに従い生ずる不確定部分を包含する範囲をインデックスで検索し、重み付けによる最終スコアを算出して順位付けを行なうことにより前記空間データの各種別に重み付けをして検索を行なうステップを含む、ことを特徴とする。
【発明の効果】
【００４７】
請求項１にかかる発明によれば、色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データに対して個々の空間単位に重み付けを設定して画像検索を行うので、無駄に大量のデータを検索することなく、高速に複数インデックスの検索を行なうことができる、という効果を奏する。
【００４８】
また、請求項２にかかる発明によれば、インデックスを空間単位に生成し、それぞれの検索結果をマージすることにより、重み付きで複数の空間を検索することができる、という効果を奏する。
【００４９】
また、請求項３及び４にかかる発明によれば、色特徴やテクスチャ特徴のような画像から抽出される画像特徴である空間データに対して個々の空間単位に重み付けを設定して画像検索を行う画像検索時の重み付けの設定がインデックス生成時の重み付けと大きく異ならない場合には、複数の空間の重み付けを予め設定して一つのインデックスを生成し、検索時に指定された重み付けで複数インデックスよりも高速に検索することができる、という効果を奏する。
【発明を実施するための最良の形態】
【００５０】
本発明の第１の実施の形態を図１ないし図８に基づいて説明する。本実施の形態は、木構造をなすＭ−ｔｒｅｅ形式の空間インデックスへの適用例である。
【００５１】
［構成］
図１は、空間インデックスを利用した空間データ管理システムの構成を示す模式図である。図１に示すように、空間インデックス１に登録部２と検索部３とが接続されている。これらは、実際には、図示しないマイクロコンピュータによって実現される。登録部２には、例えば画像特徴データのような空間データ４を格納するメモリ装置か接続され、検索部３には、検索空間データ５及び類似空間データ６を構成するメモリ装置が接続されている。つまり、このようなシステムは、図示しないＣＰＵやメモリ装置等を主体として構成されるハードウェアと、このハードウェアの一部であり、空間インデックス１や空間データ４等のような空間データを登録及び検索目的で格納するメモリ領域と、ハードウェアのシステムを構築するオペレーティングシステムのようなシステムソフトウェアと、ハードウェアに各種処理を実行させるアプリケーションプログラムとによって構築されている。アプリケーションプログラムは、コンピュータ読み取り可能な媒体、例えば、ハードディスクやＣＤ−ＲＯＭ等に格納されている。
【００５２】
次いで、図２は、空間インデックス１の構造を示す模式図である。つまり、空間インデックスは、図２に例示するような木構造をしている。そして、各ノードＮは中心点Ｏと半径とによって形成され、このようなノードＮは複数の子ノードｎを有する。図３は、空間インデックス１を図２とは異なる視点から見た模式図である。図３に示すように、各ノードＮの領域は、下位に属する空間データを包含し、いずれかの空間データに必ず接する。ここで、図１２に例示した従来のＭ−ｔｒｅｅとの相違として、従来のＭ−ｔｒｅｅでは、ノードＮの円は子ノードｎの円を完全に包含し、ノードＮの円は必ずいずれかの子ノードｎの円に接しているのに対し、本実施の形態の空間インデックス１では、従来との比較においてノード領域間のオーバーラップが明らかに少ない。したがって、検索時に辿る枝の数が減少し、検索処理の高速化が図られる。
【００５３】
［データ構造］
図４は、空間インデックス１の木構造をなすデータ構造を示す模式図である。木構造は、ノードデータと個々の空間データ（以下、オブジェクトと呼ぶ）を保持し、オブジェクトはエントリとしてリーフノード（最先端のノード）にリンクされている。図４中、Ｎがノードであり、Ｅがエントリである。
【００５４】
ノードＮは、次のデータからなる。
・ノードＩＤ
・ノード種別（リーフノードか否か）
・子ノードのノードＩＤ（リーフノードの場合にはエントリＩＤ）
・親ノードのＩＤ
・すべての兄弟ノードの中心との距離
・中心オブジェクト
・半径
・親ノードの中心オブジェクトと当ノードの中心オブジェクトとの距離
・ノード半径不適合フラグ
【００５５】
また、ノードテーブルのプロフィル情報として、以下のデータを持つ。
・ルートノードＩＤ
・Fanout（子ノードの数）の最大値／最小値
・中心ポイントのオブジェクトのサイズ
【００５６】
ここで、「すべての兄弟ノードの中心との距離」を事前にノードに設定しておくことにより、距離計算の回数を削減することができ、検索速度を向上させることができる。また、「ノード半径不適合フラグ」は、ノード半径が適切な半径を示しているか否かを示すフラグである。
【００５７】
エントリＥは、次のデータからなる。
・エントリＩＤ
・オブジェクト
・親ノードの中心オブジェクトとオブジェクトとの距離
【００５８】
また、エントリテーブルのプロファイル情報として、以下の情報を持つ。
・オブジェクトのサイズ
【００５９】
図５は、図４に示す空間インデックス１の木構造をなすデータ構造を格納する二次記憶のデータ構造を示す模式図である。図５に示すように、空間インデックス１は、画像ＩＤテーブルとエントリテーブルとノードテーブルとからなる。ＩＤテーブルは、オブジェクト名とＩＤとを対応つけている。エントリテーブルは、各オブジェクトデータを保持している。ノードテーブルは、各ノードデータを保持している。そして、個々のテーブルは、Space Page クラスというページ管理クラスを承継している。
【００６０】
図６は、図５に示す各テーブルの基本となるSpace Page クラスのデータ構造を示す模式図である。各ページが、前述の各ＩＤやノードＮやエントリＥに対応している。各ページの先頭には削除フラグ７があり、そのページが削除されているか否かを示している。そのページが削除されている場合には削除リスト８に加えられ、削除フラグ７が次の削除ページの番号を示すことになる。なお、Space Page クラスのデータ構造は、データ数９及びデータサイズ１０の領域も含んでいる。
【００６１】
［登録処理］
新たなオブジェクトを登録するアルゴリズムを次に示す。このアルゴリズムによって図２に例示するような木構造が構築され、このアルゴリズム中の（ *１）で示す部分でノードＮの半径が設定され、前述のように、オブジェクトを包含するノード領域が設定される。
【００６２】
【数１】
0004440246.tif 000002
但し、上記アルゴリズム中、
Ｎｃ：子ノードの中心点
Ｎｒ：子ノードの半径
Ｏｃ：オブジェクトの中心点
Ｄ（ａ，ｂ）：ａ，ｂ間の距離
である。
【００６３】
【数２】
0004440246.tif 000003
【００６４】
Splite()中のオブジェクト集合を２分するアルゴリズムは、現状では計算コストが比較的少ない次のようなアルゴリズムを採用しいている。まず、ランダムに選んだオブジェクトから最遠にあるオブジェクトを一つ目の集合の中心オブジェクトとする。そして、その中心オブジェクトから最遠にあるオブジェクトを二つ目の中心オブジェクトとする。さらに、すべてのオブジェクトを近い方の中心オブジェクトに振り分けて集合を二分する。なお、上記アルゴリズム中、（ *２）の部分において、兄弟ノードとの距離を設定することで、検索時に距離計算回数を削減することができる。
【００６５】
なお、以上のアルゴリズムの他にも、多様なアルゴリズムを利用することが可能である。
【００６６】
［検索処理］
以下に、従来のＭ−ｔｒｅｅの検索アルゴリズムの一例を示す。検索時には、検索中心点と半径とによって指定される検索領域が入力となる。従来のＭ−ｔｒｅｅの検索アルゴリズムでは、基本的には、ノード領域と検索領域とが交わるノードＮを辿っていき検索領域に包含されるオブジェクトを検索するのであるが、一般に、距離計算に時間がかかるので、距離計算の回数を削減することが検索速度の高速化につながる。
【００６７】
Ｍ−ｔｒｅｅでは、距離ｄ（Ｐｃ，Ｎｃ）やｄ（Ｐｃ，Ｏｃ）は、ノードやエントリに予め設定されているデータなので、（ *４）（ *６）を計算せずとも適合しないノードＮまたはエントリＥであることを判断することができる場合がある。（ *３）（ *５）によって交差しない判断をしているが、その理屈は図７に示すとおりである。つまり、（ *３）の式を満足しなければ、図７より、ＱとＮとは交差しないことが明白である。
【００６８】
【数３】
0004440246.tif 000004
但し、
Ｐｃ：カレントノードの中心点
Ｎｃ：子ノードの中心点
Ｑｃ：検索の中心点
Ｎｒ：子ノードの半径
Ｑｒ：検索の半径
Ｏｃ：オブジェクトの中心点
ｄ（ａ，ｂ）：ａ，ｂ間の距離
である。
【００６９】
しかし、本実施の形態では、兄弟ノード間の距離も予め求めておくことによって、さらに、距離計算回数を削減して検索速度を向上させることができる。そのアルゴリズムを以下に示す。（ *７）で、ｄ（Ｎｃ´，Ｎｃ）を計算するので、Ｎの中心座標を中心とし、Ｎと未だ検索対象から除外されていない任意の兄弟ノードのＮ´とが交差するか否かを（ *８）で判定する（図７中でのＰをＮ、ＮをＮ´に置き換えて考えることができる）。式中のｄ（Ｎｃ´，Ｎｃ）は、ノード中に予め設定されているので、距離計算する必要がない。このようにして距離計算を削除することが可能である。
【００７０】
【数４】
0004440246.tif 000005
但し、
Ｐｃ：カレントノードの中心点
Ｎｃ：子ノードの中心点
Ｑｃ：検索の中心点
Ｎｒ：子ノードの半径
Ｑｒ：検索の半径
Ｏｃ：オブジェクトの中心点
ｄ（ａ，ｂ）：ａ，ｂ間の距離
である。
【００７１】
［削除処理］
オブジェクトを削除するアルゴリズムを以下に示す。削除をするには、本来、個々のノードＮに属すオブジェクトとノードＮの中心との距離を計算しなければならないが、この処理には多くの時間がかかり、処理が極めて遅い。そこで、処理の高速化のため、ノードの半径の修正が必要な場合にはその属するすべてのオブジェクトを包含するのではなく、個ノードnの領域を包含する領域の半径を設定するようにしている。
【００７２】
【数５】
0004440246.tif 000006
【００７３】
このようにすることによって、削除処理の低速化が防止される。また、個のアルゴリズムにより、本来設定されるべき領域半径よりも大きい領域半径が設定されたノード（ *９）には、ノード半径不適合フラグが設定される。ノード半径不適合フラグがセットされているノードＮが多ければ多いほど、ノードＮのオーバーラップが大きくなり、検索速度が遅くなる。そこで、本実施の形態では、ノード半径不適合フラグが全ノードＮのある基準値以上の割合に達した場合には、自動的に木構造を再構築することにより、検索速度の低下を避けるようにしている。ここで、ある基準というのは、例えば、５０％というように、アプリケーションによって適宜設定すれば良い。
【００７４】
［複数空間インデックスの検索］
画像検索といったアプリケーションを考えた場合、空間データとしては色特徴やテクスチャ特徴といったように複数空間データを扱う必要があり、かつ、個々の特徴（空間）単位に重み付けを設定して検索する必要がある。このような場合には、個々の空間単位に予め前述の空間インデックス１を生成しておく。個々の空間単位の重み付けを指定して検索するアルゴリズムを以下に示す。検索の入力は、検索の中心点と上位何位までを結果とするか、すなわち、結果の個数である。
【００７５】
【数６】
0004440246.tif 000007
【００７６】
図８には、３つの空間に対する上記のアルゴリズムによる検索の様子を示す。Ｎを６として個々の空間を検索した結果が左の３つのテーブルである。検索結果のスコアはすでに正規化されているものとする。個々のスコアの小さいものから順に（左番号順）最終スコアが計算され、右側の総合順位テーブルに順位付けされる。図８（ａ）の段階では確定最大スコアが１９であり、総合順位でこれを下回る最終スコアがないので確定できる順位はない。さらに続けて小さいものから順に６番目まで計算したのが図９（ｂ）である。この段階で、確定最大スコアが３１になるので総合順位の１位が確定する。同様に、９位まで算出したのが図９（ｃ）である。この段階で、総合順位の２位までが確定する。このように操作を繰り返し、指定された順位までが確定すると、検索が終了する。
【００７７】
本発明の第２の実施の形態を図９ないし図１１に基づいて説明する。本実施の形態は、木構造をなすｖｐ−ｔｒｅｅ形式の空間インデックスへの適用例である。なお、第１の実施の形態と同一部分は同一符号で示し説明も省略する。
【００７８】
［構成］
図１に示すような基本構造は第１の実施の形態と共通である。空間インデックス１は、従来のｖｐ−ｔｒｅｅと同様に、図２のように空間を分割する。全空間は、Ｒ１で示される分割円により分割され、それぞれがルートノードの子ノードとなる。このようにして２分岐の木構造が生成され、空間は分割されていく。分割された最下位のノード（リーフノード）には、空間データがリンクされている。
【００７９】
［データ構造］
図１０は、空間インデックス１の木構造をなすデータ構造を示す模式図である。木構造は、ノードデータと個々の空間データ（以下、オブジェクトと呼ぶ）を保持し、オブジェクトはエントリとしてリーフノード（最先端のノード）にリンクされている。図９中、Ｎがノードであり、Ｅがエントリである。
【００８０】
ノードＮは、次のデータからなる。
・ノードＩＤ
・ノード種別（リーフノードか否か）
・子ノードのノードＩＤ（リーフノードの場合にはエントリＩＤ）
・分割円の中心ポイントデータ
・分割円の半径
・各エントリと分割円の中心ペイントとの距離（リーフのノードの場合）
【００８１】
また、ノードテーブルのプロフィル情報として、以下のデータを持つ。
・ルートノードＩＤ
・リーフノードの子ノードの数の最大値
・中心ポイントのオブジェクトのサイズ
【００８２】
エントリＥは、次のデータからなる。
・エントリＩＤ
・オブジェクト
【００８３】
また、エントリテーブルのプロファイル情報として、以下の情報を持つ。
・オブジェクトのサイズ
【００８４】
ｖｐ−ｔｒｅｅでは、空間データが予め与えられており、ｖｐ−ｔｒｅｅはこのような木構造インデックスを静的に生成するアルゴリズムである。したがって、後に空間データ（オブジェクト）を追加することができない。そこで、本実施の形態では、以下のように登録を行なうことで、動的に空間データの登録を可能としている。
【００８５】
【数７】
0004440246.tif 000008
【００８６】
ここで、ノードを分割する一例を以下に示す。分割円の中心ポイントを選択する方法として単純に任意のポイントとしたり、分割円が最も小さくなるようなポイントを選択したりなど、いろいろなアルゴリズムが考えられる。
【００８７】
【数８】
0004440246.tif 000009
【００８８】
このようにすることで、動的に空間データを登録することができる。削除時には、以下のような処理を行なう。
【００８９】
【数９】
0004440246.tif 000010
【００９０】
次いで、指定オブジェクトに類似する検索結果を指定個数だけ繰り返す検索のアルゴリズムを以下に示す。検索処理の時間の多くは距離計算（類似度算出）であり、距離計算の回数を減らすことで検索の高速化が実現される。 *１で示される判定では、オブジェクトを獲得せずに、かつ、個々のオブジェクトとの距離計算なしに判定が可能であり、 *２では、オブジェクトを獲得し、かつ、距離計算をしなければ判定をすることができない。そこで、 *１で示される条件判定により、 *２の判定をせずにその判定を行なうことができる場合があり、これによって検索の高速化が可能である。なお、Search()を呼び出すときのＱｒの初期値は、無限大とする。
【００９１】
【数１０】
0004440246.tif 000011
但し、
Ｐｃ：カレントノードの中心点
Ｑｃ：検索の中心点
Ｎｒ：子ノードの半径
Ｑｒ：検索の半径
Ｏｃ：オブジェクトの中心点
ｄ（ａ，ｂ）：ａ，ｂ間の距離
である。
【００９２】
［複数空間インデックスの検索］
画像検索といったアプリケーションを考えた場合、空間データとしては色特徴やテクスチャ特徴といったように複数空間データを扱う必要があり、かつ、個々の特徴（空間）単位に重み付けを設定して検索する必要がある。このような場合には、個々の空間単位に予め前述の空間インデックス１を生成しておく。個々の空間単位の重み付けを指定して検索するアルゴリズムを以下に示す。検索の入力は、検索の中心点と上位何位までを結果とするか、すなわち、結果の個数である。
【００９３】
検索前に個々のインデックスに対し、検索結果をいくつにすれば良いか判断することはできない。したがって、個々のインデックスに対し、特定の検索個数（例えば、ユーザが指定した検索数）だけ検索し、検索された結果をバッファリングし、最終結果のマージ処理を行なう。この処理を繰り返すことで、無駄に大量のデータを検索することなく、高速に複数インデックスの検索を行なうことが可能となる。
【００９４】
上記のように各空間毎に求めた検索結果について順位の最終検索スコアを求め総合順位のリストに加えていく。ここで、既に求めた順位の次の順位にあたるオブジェクトのスコアを各空間について合計した値よりも、これから処理するオブジェクトのスコアのほうが大きいことはありえない。そこで、この合計スコアを順位確定スコアとし、このスコアより小さい総合順位のオブジェクトは最終順位を確定することができる。したがって、スコアをできるだけ早く増加させるほど、順位を早く確定することができ、検索速度を向上させることができる。そこで、順位間の差分が多い空間を選択し、処理する。具体的なアルゴリズムは次の通りである。
【００９５】
【数１１】
0004440246.tif 000012
【００９６】
図１１に、３つの空間に対して上記アルゴリズムを用いて行なった検索の結果を示す。Ｎを６として個々の空間を検索した結果が左の３つのテーブルである。検索結果のスコアは重み付けに従い既に正規化されているとする。図１１（ａ）は、網掛けの部分まで処理が終わった状態を示す。円で囲まれた差分のうち最も大きい空間Ａが次の処理対象となる。空間Ａの順位２位の最終スコアを計算し総合順位に加える。空間Ａの３位のオブジェクトは既に最終スコアを算出済みなので、処理済みとする。その結果、図１１（ｂ）のような状態となる。さらに、差分が最も大きいオブジェクトが空間Ｂなので、空間Ｂの順位２位を処理した結果が図１１（ｃ）の状態である。
【００９７】
登録されているデータの量が多くなると各空間の検索結果のスコアが同じとなる場合が頻繁に起こるようになる。そういった場合には、差分がすべて同じになる可能性が高いので、空間を選択することができなくなる。そこで、差分が同じになった場合には、検索バッファの先頭と最後尾とのオブジェクトのスコアの差分が最も大きい空間を選択し、処理することとする。ミクロ的には差分が同じでも、マクロ的には差分が異なるので、マクロ的に見ることによって検索の効率を上げることができる。
【００９８】
複数インデックスを検索するよりも一つのインデックスを検索するほうが早いが、インデックスを生成するときに重み付けを指定しなければならないので、検索時にインデックス生成時と異なる重み付けを指定することが一般にできなくなる。検索時に指定された重み付けによって生じる不確定部分を包含する範囲でインデックスを検索し、最終スコアにより順位付けを行なうことで検索を行なうことにより、１インデックスにより複数空間の検索が可能となる。
【００９９】
但し、特定の空間の重み付けが小さくなればなるほど不確定部分が大きくなるので、検索範囲が広くなる。その結果、検索速度が低下してしまう。しかし、インデックス生成時の重み付けに近い範囲で重み付けを変更する分には複数のインデックスにより検索する場合よりも高速に検索することができる。
【０１００】
インデックス生成時には、例えば、等分の重み付け（３３：３３：３３）でインデックスを生成する。インデックス検索時には、以下のアルゴリズムにより検索する。 *３では、以下のようにＱｒを設定する。
【０１０１】
【数１２】
0004440246.tif 000013
【０１０２】
なお、Search()を呼び出すときのＱｒの初期値は無限大とする。
【０１０３】
【数１３】
0004440246.tif 000014
但し、
Ｐｃ：カレントノードの中心点
Ｑｃ：検索の中心点
Ｎｒ：子ノードの半径
Ｑｒ：検索の半径
Ｏｃ：オブジェクトの中心点
ｄ（ａ，ｂ）：インデックス生成時の重み付けによるａ，ｂ間の距離
である。
【図面の簡単な説明】
【０１０４】
【図１】本発明の第１の実施の形態における空間インデックスを利用した空間データ管理システムの構成を示す模式図である。
【図２】空間インデックスの構造を示す模式図である。
【図３】空間インデックスを図２とは異なる視点から見た模式図である。
【図４】空間インデックスの木構造をなすデータ構造を示す模式図である。
【図５】図４に示す空間インデックスの木構造をなすデータ構造を格納する二次記憶のデータ構造を示す模式図である。
【図６】図５に示す各テーブルの基本となるSpace Page クラスのデータ構造を示す模式図である。
【図７】所定の計算することなく適合しないノードＮまたはエントリＥであることを判断することができる理屈を示すための模式図である。
【図８】３つの空間に対して各空間単位で重み付けを指定して検索するアルゴリズムを実行する際の処理過程を示す模式図である。
【図９】本発明の第２の実施の形態として、空間インデックスの構造を示す模式図である。
【図１０】空間インデックスの木構造をなすデータ構造を示す模式図である。
【図１１】３つの空間に対して各空間単位で重み付けを指定して検索するアルゴリズムを実行する際の処理過程を示す模式図である。
【図１２】従来の空間インデックスとしてＭ−ｔｒｅｅの構造を例示する模式図である。
【符号の説明】
【０１０５】
１      空間インデックス
Ｎ      ノード
ｎ      下位ノード（子ノード）
【図１】
0004440246.tif 000015
【図２】
0004440246.tif 000016
【図３】
0004440246.tif 000017
【図４】
0004440246.tif 000018
【図５】
0004440246.tif 000019
【図６】
0004440246.tif 000020
【図７】
0004440246.tif 000021
【図８】
0004440246.tif 000022
【図９】
0004440246.tif 000023
【図１０】
0004440246.tif 000024
【図１１】
0004440246.tif 000025
【図１２】
0004440246.tif 000026