SIFTとは

SIFTは、コンピュータビジョンにおいて、画像の拡大縮小(スケール)と回転の変化に対して不変な特徴点(キーポイント)を検出・記述するために開発された、非常に頑健な特徴抽出アルゴリズムであり、物体認識や画像照合の分野で長らく標準的な手法として利用されてきたアルゴリズムのことです。

SIFTの概要と特徴記述子の定義

SIFT(Scale-Invariant Feature Transform、スケール不変特徴変換)は、2004年にデイビッド・ロウ(David Lowe)によって発表されました。その最大の特長は、同一の物体が異なる画像間で、サイズ(スケール)、回転角度、照明条件、視点の変化などを受けても、その特徴点を安定して見つけ出し、対応付けられる点にあります。

特徴記述子(Feature Descriptor)の役割は、キーポイントの周囲の局所的な情報をコンパクトなベクトルとして表現し、他の画像内の特徴点と識別・照合を可能にすることです。SIFTが生成する特徴記述子は128次元の浮動小数点ベクトルであり、その高い識別能力が画像処理分野で革命をもたらしました。

主な目的は、環境変化に極めて強く、高い信頼性を持つ特徴点を提供し、物体認識や画像スティッチング(パノラマ作成)などの基盤技術として利用可能にすることです。

SIFTアルゴリズムの動作原理

SIFTアルゴリズムは、以下の4つの主要なステップを通じて、特徴点の検出から記述子の生成までを実行します。

1. スケール空間極値の検出(Scale-Space Extrema Detection)

画像の拡大縮小の変化に対応するため、SIFTはまずスケール空間(Scale Space)を構築します。

  • ガウシアンフィルタの適用: 画像に対して複数の異なるサイズのガウシアンフィルタを適用し、ぼかしの度合いが異なる画像のピラミッド(オクターブ)を作成します。
  • DoGの計算: 各オクターブにおいて、隣接するスケールレベルのガウシアン平滑化画像の差分(Difference of Gaussians, DoG)を計算します。
  • キーポイントの候補: このDoG画像内のピクセルを、その周囲の26個の隣接点(同じスケール内の8点と、上下スケールレベルの各9点)と比較し、輝度の局所的な極大値または極小値となる点をキーポイントの候補として検出します。

2. キーポイントの位置の精密化(Keypoint Localization)

検出された候補点の位置は、ノイズの影響を受けやすく、真の極値からずれている可能性があります。このステップでは、テイラー展開を用いてDoG関数の正確な極値の位置をサブピクセル精度で推定し、コントラストが低い点やエッジに沿った不安定な点を除去することで、キーポイントの品質を高めます。

3. 回転の割り当て(Orientation Assignment)

キーポイントの回転不変性を確保するために、キーポイント周辺の局所領域の勾配の大きさ方向を分析します。

  • ヒストグラムの作成: 勾配方向を360度にわたって分割し、そのヒストグラムを作成します。
  • 主方向の決定: ヒストグラムの最も大きなピークを持つ方向を、そのキーポイントの主方向として割り当てます。以降のすべての処理は、この主方向に合わせて座標系を回転させて実行されます。

4. 特徴記述子の生成(Keypoint Descriptor Generation)

このステップで、キーポイントの周囲の局所的な情報が、128次元のベクトルに変換されます。

  • パッチの抽出: キーポイントを中心に、回転補正された $16 \times 16$ ピクセルの領域を抽出します。
  • ヒストグラムの作成: この $16 \times 16$ のパッチを $4 \times 4$ のサブ領域(合計16個)に分割します。各サブ領域内で、8方向の勾配方向ヒストグラムを作成します。
  • 記述子の連結: 16個のサブ領域のヒストグラム( $16 \times 8$ = 128個の要素)を結合し、128次元のベクトルを生成します。

最後に、照明の変化に不変にするため、この記述子ベクトルを正規化します。

SIFTの課題と後続技術

SIFTは、その高い性能から広く利用されましたが、以下の課題を抱えていました。

  1. 計算負荷の高さ: 複雑なガウシアンフィルタリングと浮動小数点演算により、処理速度が遅く、リアルタイムアプリケーションには不向きでした。
  2. 特許: SIFTアルゴリズムは長らく特許によって保護されていました。

これらの課題に対処するため、より高速な代替アルゴリズムとしてSURF、そして特許フリーで高速なバイナリ記述子であるORBAKAZEなどの手法が後に開発されました。

関連用語

特徴抽出 | 今更聞けないIT用語集
コンピュータビジョン | 今更聞けないIT用語集
AIソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。