画像検索システムを高速化するためにmatlabにRツリー構造を実装する方法を教えてください。私のデータベース空間には色ヒストグラム(多次元)の特徴ベクトルとIIが距離ベクトルを持っていることをお知らせします。類似性測度の場合...
ありがとう
画像検索システムを高速化するためにmatlabにRツリー構造を実装する方法を教えてください。私のデータベース空間には色ヒストグラム(多次元)の特徴ベクトルとIIが距離ベクトルを持っていることをお知らせします。類似性測度の場合...
ありがとう
私はMatlabを使用していません。そのため、Matlab でインデックス構造に関連付けられているコストがどれくらいかはわかりません。そのようなもののために設計されているようには見えません。
Rツリーはかなりの違いを生むようです。http://elki.dbs.ifi.lmu.de/wiki/Benchmarkingから判断すると、一部のアルゴリズムは、優れたインデックス構造を持つことで大きなメリットを得ることができます。その Web ページの数値は、110250 の画像カラー ヒストグラム データ セットで 5 倍から 7 倍高速です。
私の経験から、R-Tree を正しく設定するのは非常に難しい場合があります。ただし、完全に行きたい場合に限ります。静的データベースを使用している場合は、一括ロードされたR ツリーを簡単に使用できます。一括読み込みもクエリも非常に難しいことではありません。複雑な分割戦略、再挿入、バランシングを使用して R* ツリーの最適化を行い、スマート キャッシュを使用してこれらすべてを効率的にオンディスクで実行すると、R ツリーが乱雑になります。ただし、メモリ内で操作し、オブジェクトを動的に追加しない限り、STR の一括読み込み R ツリーは非常に役立ち、実装がはるかに簡単になります。
すでに機能している R ツリーを基に構築する方がよい場合もあります。上記の rtree モジュールまたは ELKI で SQLite を言います。
R ツリーの実装は、実際には簡単な作業ではありません。LidarK ライブラリに matlab バインディングを使用できます。十分に高速である必要があります。コードはこちら: http://graphics.cs.msu.ru/en/science/research/3dpoint/lidark
kd-tree (画像検索では一般的) を使用する場合は、適切な実装もあります。 http://www.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN
特に R ツリーについて詳しくはありませんが、一般的にツリーは動的なデータ構造です。オブジェクト指向機能を使い始めない限り、Matlab は実際には動的データ構造を処理しません。それをしたくない場合は、ツリーをセル配列にフラット化できます。たとえば、セル配列に (厳密に) フラット化されたバイナリ ツリーを記述します。これにより、ツリーを描画する必要がなくなります。ここに行きます:
{1,{2},{3}}
これは、ルート 1 と左から 2、右から 3 への分岐を持つ二分木を表します。これをさらに深くすることができます。
{1,{2,{5,6}},{3,{7,8}}}
これにより、前のツリーに別のレベルが追加されます。いずれかのノードにデータを追加する場合、(最初の) ツリーは次のようになります。
{1,[a b c],{2,[e f]},{3,[h i j k l]}}
これに代わる方法は、次のようにノードを個別に定義することです
node1 = [a b c]; node2 = [e f]; node3 = [h i j k l],
その後、あなたの木は
{node1, node2, node3}
問題は、選択した表現でツリーを作成してトラバースする関数を作成することになります。ほとんどのツリー関数は、再帰として記述するのが最適です。適切なテキストや多くのインターネット サイトから、そのような機能について知りたいことがすべてわかります。