現在、imread
次のように画像を読み取るために使用しています。Matlab のdetectSURFFeatures
関数は、グレースケール画像でのみ機能します。
I = rgb2gray( imread( '434.jpg' ) );
この行を実行して、SURF 機能を取得できます。
points = detectSURFFeatures( I );
以下を使用して、サーフ フィーチャをプロットできます。
imshow( I );
hold on;
plot( point.selectStrongest(10) );
hold off;
これが私が扱った画像の視覚化です。

このpoints
オブジェクトを印刷すると、41 個の機能を示す次のプロパティを取得できます。
Scale: [41x1 single]
SignOfLaplacian: [41x1 int8]
Orientation: [41x1 single]
Location: [41x2 single]
Metric: [41x1 single]
Count: 41
すべてのグレースケール画像がセル オブジェクトcellimg
(画像ごとに 1 つのセル要素) に格納されている場合は、次のようにそれぞれに対して実行できdetectSURFFeatures
ます。
cellsurf = cellfun( @(I) detectSURFFeatures( I ), cellimg, 'UniformOutput', false );
の各要素にcellsurf
は SURF ポイントが含まれます。各イメージを識別する独特で固定された特徴のセットが必要なため、 で各イメージの最も強いポイントを選択できますcellsurf
。機能の上位n
数または set を使用できますn = min( points )
。次のコードを使用して、特徴の最小数を計算します。
n = min( cellfun( @(S) S.Count, cellsurf ) );
selectStrongest
次に、 の各セルを実行して、最強のポイントを選択できますcellsurf
。
F = cellfun( @(S) S.selectStrongest( n ), cellsurf, 'UniformOutput', false);
変数F
には一定の機能セットが含まれます。n
それに応じて、必要な最も強力な機能の数を変更できます。2 つの特徴セットを一致させるには、組み込みのmatchFeatures 関数を使用できます。
ノート
- さらに機能が必要な場合は、
detectSURFFeatures
関数を呼び出すときに別の 'MetricThreshold' パラメーターを指定できます。
detectBRISKFeatures
次の関数を使用してdetectFASTFeatures
、SURF の代わりに他の機能アルゴリズムを使用できます。detectHarrisFeatures
detectMinEigenFeatures
detectMSERFeatures