0

オブジェクトの検出にOpenCV Web サイトのコードを使用しています。私はOpenCV と画像処理の初心者であり、SURF の動作を理解しようとしています。いくつか疑問があります。

1.検出にカラー画像を使用してきましたが、これまでのところ結果は良好です。グレースケール画像を使用することを推奨している人がいますが、アルゴリズムのパフォーマンスは向上しますか?

2.コードで、距離が 3*mindist 未満の一致のみをフィルタリングすることの意味は何ですか?

for( int i = 0; i < descriptors_object.rows; i++ )
{ if( matches[i].distance < 3*min_dist )
     { good_matches.push_back( matches[i]); }
}

3.検出は高照度画像で堅牢ですが (私はヘッセ値として 900 を使用しました)、低照度条件下での同じ画像は同じヘッセ値で検出されません。同じヘッセ値で両方を行う方法はありますか? cv::equalizeHist() は役に立ちますか? もしそうなら、誰かが SURF 検出コードと統合する方法を提案してもらえますか?

4.一致を返すDMatch構造には、記述子間の距離を返すdistanceというパラメータがあります。これはどういう意味ですか?返される距離の単位はありますか?

5.オブジェクト検出の時間の複雑さ、スケール、および回転の不変性に関して、SURFよりも優れた記述子があるかどうかも知りたいです。

お時間をいただき、ご返信いただきありがとうございます。

4

1 に答える 1

0
  1. SURF はグレースケール イメージで動作します。

  2. 多くの誤ったランダム マッチがあり (img1 に 100 個のフィーチャがある場合、常に 100 個のマッチがあるため)、それらをフィルタリングすることをお勧めします。しかし、相対距離を確認することをお勧めします - SURF でのユークリッド距離の使用でどのように行われるか)

  3. はい、使用できます。元の画像の代わりに変更した画像を使用するだけです。ピクセル強度が低く、暗い領域のコントラストが低く、検出器の応答が低下するため、検出される特徴の数が少なくなります。暗い画像に適用すると、ヒストグラムの均等化によってコントラストが増加し、しきい値を下回る極大値の数が増加します。

    cv::Mat img1, img1histEq; cv::equalizeHist(img1,img1histEq);

  4. SURF は 128 次元のベクトルとして見ることができます。距離は、ある空間における 2 つのそのようなベクトル間の距離であり、通常はユークリッド - 対応するベクトル要素間の二乗差の合計です。L1 などの他のメトリックも使用できますが、ユークリッドは SURF に最もよく使用されます。

  5. SIFT は、不変性の点では優れていますが、3 倍遅くなります。ここここ で異なる記述子の比較を見つけることができます。「オブジェクト検出」が何を意味するのかは明確ではありません。正確に何をする必要がありますか?
于 2013-11-07T22:13:02.640 に答える