最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

extractFeatures

関心点記述子の抽出

構文

[features,validPoints] = extractFeatures(I,points)
[features,validPoints] = extractFeatures(I,points,Name,Value)

説明

[features,validPoints] = extractFeatures(I,points) は、バイナリ イメージまたは強度イメージから、抽出された特徴ベクトル (記述子とも呼ばれます) と、これらに対応する位置を返します。

関数は、関心点の周りのピクセルから記述子を導出します。ピクセルは、単一点の位置によって指定された特徴を表し、これらの特徴をマッチさせます。各単一点は、近傍の中心位置を指定します。記述子の抽出に使用する手法は、入力 points のクラスによって異なります。

[features,validPoints] = extractFeatures(I,points,Name,Value) は、1 つ以上の Name,Value 引数ペアによって指定された追加オプションを使用します。

すべて折りたたむ

イメージを読み取ります。

  I = imread('cameraman.tif');

コーナー特徴を検出して抽出します。

  corners = detectHarrisFeatures(I);
  [features, valid_corners] = extractFeatures(I, corners);

イメージを表示します。

  figure; imshow(I); hold on

有効なコーナー ポイントをプロットします。

  plot(valid_corners);

イメージを読み取ります。

    I = imread('cameraman.tif');

特徴を検出して抽出します。

    points = detectSURFFeatures(I);
    [features, valid_points] = extractFeatures(I, points);

最も強い 10 個の SURF 特徴を表示してプロットします。

    figure; imshow(I); hold on;
    plot(valid_points.selectStrongest(10),'showOrientation',true);

イメージを読み取ります。

    I = imread('cameraman.tif');

MSER と SURF 特徴記述子を使用して特徴を検出します。

    regions = detectMSERFeatures(I);
    [features, valid_points] = extractFeatures(I,regions,'Upright',true);

MSER 楕円の中心に対応する SURF 特徴を表示します。

    figure; imshow(I); hold on;
    plot(valid_points,'showOrientation',true);

入力引数

すべて折りたたむ

入力イメージ。バイナリ イメージまたは 2 次元グレースケール イメージとして指定します。

データ型: logical | single | double | int16 | uint8 | uint16

正方形の近傍の中心位置の点。BRISKPoints オブジェクト、SURFPoints オブジェクト、KAZEPoints オブジェクト、MSERRegions オブジェクト、cornerPoints オブジェクト、または M 個の [x y] 座標の M 行 2 列の行列として指定します。次の表に、抽出に使用できる点の入力クラスをまとめています。

点のクラス 
BRISKPointsBinary Robust Invariant Scalable Keypoints (BRISK)
SURFPoints オブジェクトSpeeded-Up Robust Features (SURF)
MSERRegions オブジェクトMaximally Stable Extremal Regions (MSER)
cornerPointsFeatures from Accelerated Segment Test (FAST)、最小固有値または Harris
KAZEPoints非線形イメージのピラミッド ベースの回転および方向に不変の特徴。SURF と同様ですが、ノイズが少ない点が含まれます。
[x y] 座標の M 行 2 列の行列[x y] 点位置の周りのシンプルな正方形の近傍

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'Method','Block' は、記述子の抽出に Block 法を指定します。

記述子抽出法。'Method' と文字ベクトル 'FREAK'、'SURF'、'Block' または 'Auto' で構成されるコンマ区切りのペアとして指定します。

次の表で、関数が記述子抽出法をどのように実装するかを説明します。

メソッド特徴ベクトル (記述子)
BRISKBinary Robust Invariant Scalable Keypoints (BRISK)。
関数は validPoints 出力オブジェクトの Orientation プロパティを、抽出した特徴の向き (ラジアン単位) に設定します。
FREAKFast Retina Keypoint (FREAK)。
関数は validPoints 出力オブジェクトの Orientation プロパティを、抽出した特徴の向き (ラジアン単位) に設定します。
SURFSpeeded-Up Robust Features (SURF)。
関数は、validPoints 出力オブジェクトの Orientation プロパティを、抽出した特徴の向き (ラジアン単位) に設定します。

SURF 法で MSERRegions オブジェクトを使用すると、オブジェクトの Centroid プロパティによって SURF 記述子が抽出されます。オブジェクトの Axes プロパティは、特徴を表す円の領域が MSER 楕円領域に比例するような SURF 記述子のスケールを選択します。このスケールは 1/4*sqrt((majorAxes/2).*(minorAxes/2)) で求められ、SURFPoints オブジェクトの要件として 1.6 に飽和されます。

KAZE非線形のピラミッド ベースの特徴。

関数は validPoints 出力オブジェクトの Orientation プロパティを、抽出した特徴の向き (ラジアン単位) に設定します。

KAZE 法で MSERRegions オブジェクトを使用すると、オブジェクトの Location プロパティを使用して KAZE 記述子を抽出します。

オブジェクトの Axes プロパティは、特徴を表す円の領域が MSER 楕円領域に比例するような KAZE 記述子のスケールを選択します。

Blockシンプルな正方形近傍。

Block 法は、イメージの境界内に完全に含まれる近傍のみを抽出します。したがって、出力 validPoints に含まれる点の数が入力 POINTS よりも少ない場合があります。

Autoこの関数は入力の点のクラスに基づいて Method を選択し、次を実装します。
cornerPoints 入力オブジェクトの場合は FREAK 法。
SURFPoints 入力オブジェクトまたは MSERRegions 入力オブジェクトの場合は SURF 法。
BRISKPoints 入力オブジェクトの場合は BRISK 法。

[x y] 座標の M 行 2 列の入力行列の場合、関数は Block 法を実装します。

ブロック サイズ。奇数の整数スカラーで指定します。この値は、各関心点を中心とした、BlockSize x BlockSize の局所的な正方形の近傍を定義します。このオプションは、関数が Block 法を実装する場合にのみ適用されます。

回転不変フラグ。logical スカラーとして指定します。このプロパティを true に設定すると、特徴ベクトルの向きが推定されず、特徴の向きが pi/2 に設定されます。イメージ記述子で回転情報を取得する必要がない場合には、このプロパティを true に設定します。このプロパティを false に設定すると、特徴の向きが推定され、特徴が回転に対して不変になります。

SURF または KAZE 特徴ベクトル (記述子) の長さ。64 または 128 として指定します。このオプションは、関数が SURF または KAZE 法を実装する場合にのみ適用されます。特徴のサイズを 128 に増やすと、精度が向上しますが、特徴のマッチング速度は低下します。

出力引数

すべて折りたたむ

特徴ベクトル。binaryFeatures オブジェクト、または M 個の特徴ベクトル (記述子とも呼ばれる) の M 行 N 列の行列として返されます。各記述子の長さは N です。

features の各出力特徴ベクトル (記述子) に関連付けられた有効な点。入力と同じ形式で返されます。有効な点は、BRISKPoints オブジェクト、cornerPoints オブジェクト、SURFPoints オブジェクト、KAZEPoints オブジェクト、MSERRegions オブジェクト、または [x,y] 座標の M 行 2 列の行列になります。

関数は、各関心点の周りの領域から記述子を抽出します。領域がイメージの外側に位置する場合、関数はその点の特徴記述子を計算できません。関心点がイメージの端に近すぎる場合、関数は特徴記述子を計算できません。この場合、関数はこの点を無視します。この点は有効な点の出力に含まれません。

参照

[1] G. Bradski and A. Kaehler, Learning OpenCV : Computer Vision with the OpenCV Library, O'Reilly, Sebastopol, CA, 2008.

[2] Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool, SURF: Speeded Up Robust Features", Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346--359, 2008

[3] Bay, Herbert, Andreas Ess, Tinne Tuytelaars, and Luc Van Gool, "SURF: Speeded Up Robust Features", Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346--359, 2008.

[4] Alahi, Alexandre, Ortiz, Raphael, and Pierre Vandergheynst, "FREAK: Fast Retina Keypoint", IEEE Conference on Computer Vision and Pattern Recognition, 2012.

[5] Alcantarilla, P.F., A. Bartoli, and A.J. Davison. "KAZE Features", ECCV 2012, Part VI, LNCS 7577 pp. 214, 2012

拡張機能

R2011a で導入