【SIFTとは】特徴点検出・特徴量記述の原理・計算方法

SIFTによる特徴点検出・特徴量記述の原理と計算方法について解説します。

SIFTとは

SIFT (Scale-Invariant Feature Transform) は、画像の特徴点検出および特徴量を記述するアルゴリズムです。1999年にDavid Loweによって発表され、回転やスケール、照明変化に対してロバストな特徴量を求めることができます。SIFTの主な特徴は以下のとおりです。

  1. スケール不変性
    • 画像のスケールが変わっても特徴点を検出できます。
  2. 回転不変性
    • 画像が回転しても特徴点を検出できます。
  3. ロバスト性
    • 照明変化やノイズに対しても強いです。

特徴点検出・特徴量記述の計算手順

SIFTによる特徴点検出・特徴量記述の計算手順は以下のとおりです。

① 異なるスケールでDoG画像を複数作成し、極値(最大値 or 最小値)を探索します。見つかった極値の画像内での位置$(x, y)$とガウスぼかしのスケール$\sigma$を特徴点の情報として記録します。
なお、DoG画像は以下で計算できます。

$$ DoG(x, y, \sigma) = (G(x, y, k\sigma) – G(x, y, \sigma)) \ast I(x, y) $$

  • $DoG(x, y, \sigma)$: DoG (Difference of Gaussians) 画像
  • $G(x, y, \sigma)$: 標準偏差 $\sigma $ のガウスぼかし
  • $I(x, y)$: 入力画像
  • $k$: スケールの係数

② Descripstion特徴量を抽出します。注目する特徴点の位置とサイズに基づいて、画像から128次元のベクトルを抽出し、それを特徴量とします。

③ 特徴点のサイズから所定の範囲を決め、その範囲内の各部の輝度勾配から、特徴店の角度を計算します。具体的には、範囲内の各部の輝度勾配の角度をヒストグラムにして、閾値以上の頻度で最大となる角度を推定します。

④ 特徴のサイズから所定の範囲を決め、4×4のブロックに分割します。各ブロックについて8方向の勾配の強度を算出し、合計して128次元のベクトルとして算出します。

計算例① 異なるスケールでDoG画像を作成し、極値を探索

以下の3×3の入力画像$I$を例に極値を探索します。
$$ I = \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 1 \\ \end{bmatrix} $$

入力画像$I$に対して、異なるスケールでガウスぼかしを適用します。ここでは、スケール1とスケール2でガウシアンフィルタ処理を掛け、ぼかし画像$G_1$と$G_2$を計算すると以下のようになります。

$$ G_1 = \begin{bmatrix} 1.5 & 2 & 1.5 \\ 2 & 3 & 2 \\ 1.5 & 2 & 1.5 \\ \end{bmatrix} $$

$$ G_2 = \begin{bmatrix} 2 & 2.5 & 2 \\ 2.5 & 3 & 2.5 \\ 2 & 2.5 & 2 \\ \end{bmatrix} $$

次に、スケール間の差分(DoG)を計算します。

$$ DoG = G_1 – G_2 = \begin{bmatrix} -0.5 & -0.5 & -0.5 \\ -0.5 & 0 & -0.5 \\ -0.5 & -0.5 & -0.5 \\ \end{bmatrix} $$

このDoG行列の中心要素(0)は、隣接する要素(-0.5)よりも大きいため、局所的な極値となります。極値はスケール2における中心要素(0)で見つかったため、キーポイントの座標は(1, 1)、スケール2です。実際には、他にも異なるスケールでDoG画像を複数作成し、極値を求めます。これにより、スケールに対して不変な特徴点を求めることができます。

関連ページ

【画像処理超入門】アルゴリズムの仕組みと実装方法を簡単に解説
画像処理超アルゴリズムの仕組みとプログラミングによる実装方法を簡単に解説します。
【Python版OpenCV入門】画像処理の基礎〜応用例までサンプルコード付きで徹底解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
この記事を書いた人
西住技研

在学中はシステム制御理論や画像処理、機械学習を専攻分野として研究していました。就職後は、プログラミング(Python)を活用したデータ分析や作業自動化に取り組み、現在に至ります。そこで得たノウハウをブログで発信しています。
YoutubeX(旧Twitter)でも情報発信中です

西住技研をフォローする
画像処理

コメント