0

この質問は、SIFT 機能と MATLAB での使用に関するものです。次の情報を含むデータがあります。

  1. 各特徴点のx,y座標
  2. 各特徴点のスケール
  3. 各特徴点の向き
  4. 各特徴点の記述子ベクトル。各ベクトルには 128 個のコンポーネントがあります。

キーポイントを対応する入力画像に描画する際に問題があります。これを行う方法を知っている人はいますか?使用できる組み込み関数はありますか?

どうもありがとう。

4

1 に答える 1

1

ポイント自体を表示するだけの場合は、xyの座標を別々の配列に読み込んでから、イメージを表示し、hold onコマンドを使用して、ポイントをプロットします。これにより、ポイントが画像の上にオーバーレイされます。

これらの座標が既に利用可能で および として保存されているxy仮定し、画像が利用可能で として保存されていると仮定するとim、次のことができます。

 imshow(im);
 hold on;
 plot(x, y, 'b.');

x座標は水平で、左から右に増加することに注意してください。y座標は垂直で、上から下に向かって増加します。座標の原点は左上隅で、 です(1,1)

ただし、検出ウィンドウ、そのサイズ、および記述子の向きを表示したい場合は、それVLFeatを行うための優れた機能があるため、ライブラリを確認することをお勧めします。

Rafael Monteiro による提案 (以下のコメントを参照)

検出されたスケールを反映するように各ポイントを変更することもできます。このようにしたい場合は、スケールを という別の配列として保存したと仮定しますscales。その後、次のことを試してください。

 imshow(im);
 hold on;
 for i = 1 : length(x)
      plot(x(i), y(i), 'b.', 'MarkerSize', 10*scales(i));
 end

の定数係数10はかなり恣意的です。キーポイントを検出するために使用したスケールの数がわからないため、スケールが 1.0 の場合、プロット時にキーポイントがデフォルト サイズで表示されます。納得のいく結果が得られるまで、数値をいじってみてください。ただし、スケールが問題にならない場合は、最初の方法で問題ありません。

于 2014-05-02T15:08:21.420 に答える