SURFとは

SURFは、コンピュータビジョンにおいて、画像の拡大縮小(スケール)と回転の変化に強い、高速な特徴点(キーポイント)検出および記述を可能にするアルゴリズムであり、既存のSIFTアルゴリズムの頑健性を維持しつつ、積分画像を用いることで処理速度を大幅に向上させた手法のことです。

SURFの概要と設計思想

SURF(Speeded Up Robust Features、高速化された頑健な特徴)は、2006年に発表された特徴抽出アルゴリズムです。これは、画像間の物体認識、追跡、および三次元再構築といったタスクにおいて、極めて高い性能を示すSIFT(Scale-Invariant Feature Transform)アルゴリズムの計算速度の問題を克服するために開発されました。

SIFTがガウシアンフィルタの差分(DoG)と複雑な浮動小数点ベクトル演算に依存していたのに対し、SURFは**積分画像(Integral Image)**というデータ構造を核として利用することで、フィルタリング処理を高速化しました。

主な目的は、SIFTに匹敵する、あるいは凌駕するスケール不変性と回転不変性を保ちながら、特徴点の検出と記述の計算時間を劇的に短縮し、リアルタイム処理の実現に近づけることでした。

SURFの動作原理と積分画像

SURFの高速化の鍵は、積分画像の使用にあります。積分画像は、画像の任意の矩形領域内のピクセル値の合計を、わずか4回の参照で計算することを可能にする効率的なデータ構造です。

1. 積分画像(Integral Image)

積分画像 $I_{\Sigma}(x, y)$ の各点 $(x, y)$ の値は、元の画像 $I$ の左上隅 $(0, 0)$ から $(x, y)$ までの矩形領域に含まれる全ピクセルの輝度値の総和として定義されます。

I_{\Sigma}(x, y) = \sum_{i=0}^{x} \sum_{j=0}^{y} I(i, j)

これにより、任意の矩形領域内の輝度合計 $S$ は、積分画像上のたった4点(A, B, C, D)の参照で計算できます。

S = I_{\Sigma}(D) - I_{\Sigma}(C) - I_{\Sigma}(B) + I_{\Sigma}(A)

この積分画像を用いることで、異なるサイズのフィルタ(ボックスフィルタ)を適用する際の計算が、フィルタサイズに関わらず一定時間($O(1)$)で完了し、大幅な高速化が実現します。

2. キーポイント検出

SURFは、キーポイントを検出するために、ボックスフィルタで近似されたヘッセ行列(Hessian Matrix)の決定式の極大値を探します。

ヘッセ行列の決定式は、画像の特定の点における輝度変化の状況(曲率)を示し、安定した特徴点(コーナーやブロブ)を見つけるのに適しています。積分画像のおかげで、異なるスケール(フィルタサイズ)に対する決定式の計算が非常に迅速に行われます。

3. 回転推定(主方向の決定)

検出されたキーポイントの周囲の領域に対し、水平・垂直方向のハールウェーブレット応答(明るさの変化)を計算します。これらの応答のベクトル和が最も大きくなる方向をキーポイントの主方向として定義し、回転不変性を確保します。

4. 特徴記述子の生成

主方向に基づいて座標軸を回転させた後、キーポイントの周囲の領域を $4 \times 4$ のサブ領域に分割します。

各サブ領域内で、水平方向($d_x$)と垂直方向($d_y$)のハールウェーブレット応答を計算し、以下の4つの値を特徴ベクトルとして抽出します。

(\sum d_x, \sum |d_x|, \sum d_y, \sum |d_y|)

$4 \times 4$ のサブ領域があるため、最終的な特徴記述子は $4 \times 4 \times 4 = 64$ 次元の浮動小数点ベクトルとなります。これは、SIFTの128次元よりもコンパクトであり、マッチング処理の高速化にも貢献します。

SURFの課題

SURFはかつて非常に広く利用されましたが、そのアルゴリズムは特許によって保護されていました。この特許の問題が、その後のORBAKAZEといった特許フリーの高速特徴記述子の開発を促進する一因となりました。

関連用語

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

お問い合わせ

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

APPSWINGBYの

ソリューション

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

システム開発

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

iOS/Androidアプリ開発

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


リファクタリング

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