Main Content

detectSIFTFeatures

Scale Invariant Feature Transform (SIFT) 特徴を検出し、SIFTPoints オブジェクトを返す

説明

points = detectSIFTFeatures(I) は、2 次元グレースケール入力イメージ I で SIFT 特徴を検出し、SIFTPoints オブジェクトを返します。関数 detectSIFTFeatures は、Scale-Invariant Feature Transform (SIFT) アルゴリズムを実装して、イメージ内の局所特徴を見つけます。

points = detectSIFTFeatures(I,Name=Value) は、前の構文にある引数の任意の組み合わせに加えて、名前と値の引数を 1 つ以上使用してオプションを指定します。たとえば、detectSIFTFeatures(I,ContrastThreshold=0.0133) は、コントラストが 0.0133 未満の SIFT 特徴を検出します。

すべて折りたたむ

イメージを読み込みます。

I = imread('cameraman.tif');

イメージ内の SIFT 特徴を検出します。

points = detectSIFTFeatures(I);

結果を表示します。

imshow(I);
hold on;
plot(points.selectStrongest(10))

Figure contains an axes object. The axes object contains 3 objects of type image, line.

入力引数

すべて折りたたむ

入力イメージ。M 行 N 列の行列として指定します。入力イメージは、実数で非スパースの値でなければなりません。

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

名前と値の引数

例: detectSIFTFeatures(I,ContrastThreshold=0.0133) は、コントラストが 0.0133 未満の SIFT 特徴を検出します。

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

最も強い特徴を選択するためのコントラストしきい値。範囲 [0,1] の非負のスカラーとして指定します。このしきい値は、イメージの低コントラスト領域にある弱い特徴をフィルターで除外するために使用されます。返される特徴の数を減らすには、コントラストしきい値を増やします。

エッジのしきい値。1 以上の非負のスカラーとして指定します。このしきい値は、イメージ内にある、ノイズの影響を受けやすいエッジのような不安定な特徴をフィルターで除外するために使用されます。フィルター処理によって削除される特徴の数を減らすには、エッジのしきい値を増やします。

各オクターブの層の数。1 以上の整数スカラーとして指定します。オクターブ数は、イメージの解像度から自動的に計算されます。イメージ内のより大きな特徴を検出するには、各オクターブの層の数を増やします。

ガウスのシグマ。スカラーとして指定します。ガウスのシグマは、最初のオクターブで入力イメージに適用されます。通常、シグマ値は [1,2] の範囲にあります。イメージがぼやけている場合は、シグマ値を下げます。

出力引数

すべて折りたたむ

SIFT 特徴。SIFTPoints オブジェクトとして返されます。このオブジェクトには、2 次元グレースケール イメージで検出された SIFT 特徴に関する情報が含まれます。

参照

[1] Lowe, David G. "Distinctive Image Features from Scale-Invariant Keypoints." International Journal of Computer Vision 60, no. 2 (November 2004): 91--110.

拡張機能

バージョン履歴

R2021b で導入