SIFT
読み: しふと
Scale-Invariant Feature Transform の略。画像のスケール変化や回転に対して不変な局所特徴量を抽出するアルゴリズムで、画像マッチングの基盤技術として広く利用される。
SIFT (Scale-Invariant Feature Transform) は、2004 年に David Lowe が発表した局所特徴量記述アルゴリズムである。スケール変化、回転、照明変動に対して頑健な特徴点を検出し、128 次元の記述子ベクトルで各特徴点の周辺情報を符号化する。
SIFT の処理は 4 段階で構成される。まずスケール空間上で DoG (Difference of Gaussians) の極値を検出し、キーポイント候補を抽出する。次にサブピクセル精度での位置・スケールの精密化とコントラストの低い点やエッジ上の点の除去を行う。続いて各キーポイント周辺の勾配方向ヒストグラムから主方向を決定し、回転不変性を付与する。最後に主方向に正規化した 16x16 領域を 4x4 のサブ領域に分割し、各サブ領域で 8 方向の勾配ヒストグラムを計算して 128 次元ベクトルを生成する。
- スケール不変性: DoG によるスケール空間極値検出により、撮影距離が変わっても同じ物理的構造に対応する特徴点を安定して検出できる
- 回転不変性: キーポイント周辺の支配的な勾配方向を基準に記述子を正規化するため、画像が回転しても同一の記述子が得られる
- マッチング: 2 枚の画像間で記述子のユークリッド距離を比較し、最近傍と次近傍の比率テスト (Lowe's ratio test、閾値 0.7〜0.8) で誤対応を排除する
SIFT の特許は 2020 年に失効し、OpenCV 4.4 以降では cv2.SIFT_create() で自由に利用できる。パノラマ合成、3D 復元、物体認識など幅広い応用を持つ。計算コストが高いため、リアルタイム用途では ORB や AKAZE などの高速代替手法も使われる。