スケール不変特徴変換(SIFT)とは何ですか?
SIFTアルゴリズムがスケールや回転に不変な特徴点を検出・記述する仕組み、4つの処理ステップ、コンピュータビジョンでの用途をご紹介します。
Abirami Vina14 分で読めます
この記事で取り上げた概念を視覚的に解説した動画を、以下からご覧ください。
最近では、スマートフォンやカメラからスマートホームシステムまで、私たちが使う多くのスマートデバイスに、顔や物体、さらには視覚シーン全体を認識できるAIソリューションが搭載されています。この機能を支えているのがコンピュータービジョンです。コンピュータービジョンは、機械が画像や動画を理解し、解釈できるようにする人工知能の分野です。
たとえば、どのような角度や距離からエッフェル塔を撮影しても、通常、デバイスはコンピュータービジョンを使ってエッフェル塔を認識し、ギャラリー内の適切なフォルダーに整理できます。簡単そうに聞こえますが、物体の認識は必ずしも容易ではありません。画像はサイズ、角度、スケール、照明によって大きく異なる場合があり、機械が一貫して識別するのは困難です。
この問題の解決に向けて、研究者たちはScale Invariant Feature Transform、略してSIFTと呼ばれるコンピュータービジョンアルゴリズムを開発しました。このアルゴリズムを使うと、さまざまな撮影条件下で物体を検出できます。David Loweが1999年に開発したSIFTは、画像のサイズ変更、回転、照明条件の変化があっても認識可能な、角やエッジ、パターンなどの固有のキーポイントを見つけて記述するように設計されました。
Ultralytics YOLO11のようなディープラーニングベースのコンピュータービジョンモデルが広く使われるようになる前は、SIFTがコンピュータービジョンで広く利用される手法でした。写真内の特定のアイテムを識別する物体認識や、重なり合う画像特徴を見つけて写真の位置を合わせる画像マッチングなどのタスクで、標準的な手法として使われていました。
この記事では、SIFTの概要、基本的な仕組み、コンピュータービジョンの発展において重要な理由を簡単に解説します。
SIFTアルゴリズムがコンピュータービジョンに不可欠な理由#
画像の中の物体は、さまざまな見え方をします。たとえば、コーヒーマグは上から、横から、明るい日差しの下、暖色系のランプの下で撮影されることがあります。また、カメラに近ければ大きく、遠ければ小さく見えます。
こうした違いがあるため、コンピューターに物体を認識させるのは複雑な課題です。物体検出と呼ばれるこのコンピュータービジョンタスクでは、物体のサイズ、角度、照明条件が変わっても、ビジョンAIモデルが物体を正確に識別して位置を特定する必要があります。
これを実現するため、コンピュータービジョンでは特徴抽出または検出と呼ばれる処理を利用します。画像全体を一度に理解しようとするのではなく、モデルは鋭い角、独特なパターン、テクスチャなど、角度、スケール、照明条件が変わっても認識できる特徴的な画像特徴を探します。
特に、Scale Invariant Feature Transform、略してSIFTは、この処理を行うために設計されました。SIFTは特徴検出・記述アルゴリズムであり、撮影方法にかかわらず画像内の物体を確実に識別できます。
スケール不変性の実現#
SIFTアルゴリズムには、物体認識に役立つ重要な特性がいくつかあります。主要な特性の一つがスケール不変性です。これは、物体がカメラの近くにあって大きく見える場合でも、遠くにあって小さく見える場合でも、SIFTが物体のさまざまな部分を認識できることを意味します。物体の全体が見えていなくても、アルゴリズムは同じキーポイントを見つけられます。
この処理には、スケール空間理論という概念を使います。簡単に言うと、画像を異なるレベルでぼかして複数のバージョンを作成します。SIFTはこれらのバージョンを調べ、画像のサイズや鮮明さが変わっても変わらないパターンや細部を探します。
たとえば、数メートル先から撮影した道路標識は、遠くから撮影した同じ標識よりはるかに大きく見えますが、SIFTは同じ特徴的な特徴を検出できます。そのため、標識の見かけ上のスケールが大きく異なっていても、2枚の画像を正しく対応付けられます。
回転不変性の確保#
画像内の物体は回転して見えることもあり、ときには上下逆さまになることもあります。SIFTは、回転不変性と呼ばれる特性によってこれに対応します。検出した各キーポイントに対し、アルゴリズムは局所的な画像勾配に基づいて一貫した向きを割り当てます。これにより、物体がどのように回転していても認識できます。
各キーポイントに、その向きを示す小さな矢印を付けるようなものだと考えてください。特徴をこうした向きに合わせることで、物体が回転していてもキーポイントを正しく対応付けられます。たとえば、横向きの写真で撮影したランドマークは、カメラを傾けて撮影した別の写真でも正しく識別できます。
その他の画像変化への耐性#
サイズや回転のほかにも、照明の変化など、画像はさまざまな形で変化します。物体の明るさが明るい状態から暗い状態に変わったり、カメラの角度がわずかに変わったり、画像がぼやけたりノイズを含んだりすることがあります。
SIFTは、こうした変化に対応できるように設計されています。特徴的でコントラストの高いキーポイントに注目するため、照明の変化や視点のわずかなずれの影響を受けにくくなっています。その結果、条件が変わると失敗しやすい単純なエッジ検出やコーナー検出の手法より、SIFTのほうが信頼性の高い傾向があります。

図1. (a) 雨天画像と (b) 対応する元の鮮明な画像から抽出されたSIFTキーポイント。(出典)
美術館の絵画を考えてみましょう。柔らかな日光の下でも、明るい人工照明の下でも、手持ちカメラによるわずかなモーションブラーがあっても、絵画を認識できます。こうした違いがあっても、キーポイントは正確なマッチングができる程度に安定しています。
Scale-Invariant Feature Transform(SIFT)アルゴリズムの仕組み#
次に、SIFTアルゴリズムの仕組みを見ていきましょう。この処理は、キーポイント検出、キーポイントの位置特定、向きの割り当て、キーポイント記述という4つの主なステップに分けられます。
ステップ1:スケール空間の極値検出#
最初のステップでは、オブジェクトの追跡や認識に役立つ、画像内の特徴的な点であるキーポイントを見つけて検出します。こうした点には、角やテクスチャが急に変化する箇所などがあります。
こうした候補キーポイントをあらゆるサイズで認識できるように、SIFTはスケール空間と呼ばれるものを構築します。これは、元の画像を平滑化手法であるガウシアンフィルターで徐々にぼかして画像群を作り、その結果をオクターブと呼ばれるレイヤーにまとめたものです。各オクターブには、ぼかしの度合いを高めた同じ画像が含まれ、次のオクターブでは画像を縮小します。
ぼかした画像同士を減算することで、SIFTはDifference of Gaussians(DoG)を計算し、明るさが急激に変化する領域を強調します。画像を拡大または縮小しても一貫性を保つため、これらの領域がキーポイント候補として選ばれます。

図2. 異なるレベルでぼかした画像を減算することで主要な構造を強調するDoG。(出典)
ステップ2:キーポイントの位置特定#
候補となるキーポイントのすべてが有用とは限りません。弱いものや不安定なものもあるためです。これらを絞り込むため、SIFTはテイラー級数展開と呼ばれる数学的手法を使い、キーポイントの正確な位置をより高い精度で推定します。
このステップでは、信頼性の低い点を取り除きます。周囲に溶け込むようなコントラストの低いキーポイントや、簡単に位置がずれてしまうエッジ上のキーポイントを除外します。このフィルタリングにより、最も安定した特徴的なキーポイントだけが残ります。
ステップ3:向きの割り当て#
安定したキーポイントを特定した後、SIFTは回転不変性を持たせます。つまり、画像が横向きや上下逆さまになっていてもマッチングできます。そのために、SIFTは各キーポイント周辺の明るさの変化、つまり勾配を分析します。勾配はピクセル強度の変化の方向と強さを示し、これらを組み合わせることで点の周辺構造を捉えます。
SIFTは各キーポイントについて、周辺領域内の勾配を調べ、向きのヒストグラムに分類します。このヒストグラムで最も高いピークが、強度変化の主要な方向を示し、キーポイントの向きとして割り当てられます。強度がどの方向に変化しているかを示す勾配方向と、変化の強さを示す勾配の大きさの両方を使って、このヒストグラムを作成します。
同程度に強いピークがほかにもある場合、SIFTは同じキーポイントに複数の向きを割り当てます。これにより、物体が通常とは異なる角度で現れたときに重要な特徴が失われるのを防ぎます。各キーポイントをその向きに合わせることで、次のステップで生成される記述子の一貫性を確保します。
つまり、同じ物体を写した2枚の画像が異なる向きに回転していても、向きを合わせたキーポイントは正しくマッチングされます。このステップによってSIFTは回転に強くなり、従来の特徴検出手法よりもはるかに堅牢になります。

図3. SIFTアルゴリズムのステップ3を詳しく見る(出典)
ステップ4:キーポイント記述子#
SIFTの最後のステップでは、各キーポイントを別の画像でも認識できるように、その特徴を記述します。
SIFTでは、各キーポイントの周囲にある約16×16ピクセルの小さな正方形の領域を調べます。まず、この領域をキーポイントの向きに合わせ、回転の影響を受けないようにします。次に、この領域を4×4の小さな正方形のグリッドに分割します。
各小さな正方形では、さまざまな方向における明るさの変化を測定します。こうした変化は、どの方向が最も多いかを示すグラフのようなヒストグラムに記録されます。各正方形について個別のヒストグラムが作られ、16個の正方形から合計16個のヒストグラムが得られます。
最後に、これらのヒストグラムを合計128個の数値からなる一つのリストにまとめます。このリストは特徴ベクトルと呼ばれ、キーポイントの指紋のような役割を果たします。点の周囲にある固有のテクスチャや構造を捉えるため、この指紋を使えば、サイズ変更、回転、照明条件の変化があっても、異なる画像間で同じキーポイントを対応付けられます。

図4. SIFTの仕組みの概要(出典)
コンピュータービジョンにおけるSIFTの主な応用例#
SIFTとは何か、どのように動作するかを理解したところで、コンピュータービジョンにおける実世界の応用例をいくつか見てみましょう。
物体認識と検出#
SIFTの主な用途の一つは、物体認識と検出です。物体の見え方が常に同じとは限らない場合でも、画像内の物体を認識して位置を特定できるよう、コンピューターを学習させます。たとえば、カメラの近くにある本も、遠くにある本も、斜めに回転した本も、SIFTで検出できます。
これは、SIFTが非常に特徴的で安定したキーポイントを抽出するためです。これらのキーポイントをSIFT記述子と組み合わせるとSIFT特徴量が形成され、異なる画像間で同じ物体を確実に対応付けられます。これらの特徴量は物体固有の細部を捉え、それらの細部は一貫して保たれるため、物体のサイズ、位置、向きが変わっても画像間で安定した特徴マッチングが可能になります。

図5. 元の画像とは異なる向きで撮影された新しい画像内で、SIFTを使用して本の表紙を認識。画像提供:著者。
ディープラーニングが普及する前は、SIFTは物体認識システムを構築するための最も信頼性の高い手法の一つでした。大量の画像データセットから物体を対応付ける必要がある研究やアプリケーションで広く使われていましたが、多くの場合、大きな計算リソースが必要でした。
画像のスティッチングとパノラマの作成#
SIFTは、複数の写真をつなぎ合わせて作る横長のパノラマ画像の作成にも使えます。SIFTを使うと、異なる画像の重なり合う領域から特徴的なキーポイントが見つかり、相互に対応付けられます。これらの対応点が基準となり、写真をどのように配置するかをスティッチング処理に指示します。
対応付けが完了すると、スティッチングアルゴリズムで適切な位置合わせを計算できます。多くの場合、幾何学的変換を使って一方の画像をもう一方の画像に写像します。その後、境界が目立たないように画像をブレンドします。複数の写真から作成されていても、最終的には一枚の横長写真のように見える、継ぎ目のないパノラマになります。
3D再構成とロボティクス#
SIFTのもう一つの興味深い用途は3D再構成です。異なる角度から撮影した複数の2D写真を組み合わせて、3次元モデルを構築します。SIFTは、これらの画像間で同じ点を見つけて対応付けます。
対応点を得た後、異なる視点から深度を計算する三角測量を使って、それらの点の3D位置を推定できます。この処理は、Structure from Motion(SfM)の一部です。Structure from Motionは、重なり合う複数の画像から、シーンの3D形状と撮影に使われたカメラの位置を推定する手法です。
その結果は通常、物体や環境の輪郭を示す空間内の点の集合である3D点群になります。SIFTは、Structure from Motionを実用的にした初期のツールの一つでした。現在はより高速で一般的な新しい手法が使われていますが、速度より精度が重視される場面では、今もSIFTが利用されています。
SIFTはロボティクス、特にビジュアルSLAM(同時位置推定・地図作成)でも使われてきました。SLAMを使うと、ロボットは周囲の地図を作成しながら、自身の位置を把握できます。
SIFTのキーポイントは信頼性の高いランドマークとして機能し、照明や角度が変わっても、ロボットはフレーム間でこれらを認識できます。ロボットはこれらのランドマークを追跡することで、自身の位置を推定し、マップをリアルタイムで更新できます。現在のロボティクスでは、より高速な特徴検出器がよく使われていますが、SIFTは初期のSLAMシステムで重要な役割を果たし、速度より堅牢性が重視される場面では現在も重要です。
SIFTの利点と検討事項#
SIFTアルゴリズムはコンピュータービジョンで広く使われ、信頼性の高い手法として知られていますが、トレードオフもあります。そのため、プロジェクトに適しているかを判断する前に、長所と短所を比較検討することが重要です。次に、主な強みと制約を見ていきましょう。
SIFTの主な利点#
SIFTアルゴリズムを使用する主な利点をいくつか紹介します。
- スケールと回転に対する不変性: SIFTは、物体のサイズや向きが異なっても比較的安定した、スケール不変のキーポイントを提供します。これは、従来の特徴検出器に比べて大きな進歩です。
- 照明や視点の変化に対する適度な堅牢性: SIFTは明るさやコントラストの変化、小さな視点のずれに対応できますが、より極端な条件では信頼性が低下します。
- 複雑なシーンや一部が隠れたシーンでの動作: SIFTは多数の局所キーポイントを検出するため、物体の一部が隠れていたり、背景が複雑だったりしても、物体を識別できる場合がよくあります。
パフォーマンス上の検討事項と代替手法#
SIFTアルゴリズムを使用する主な短所をいくつか紹介します。
- 計算コストが高い: SIFTの多段階処理と詳細な記述子により、最新の特徴検出器より処理が遅く、より多くのリソースを消費します。この課題に対応するため、研究者は特徴の検出と記述に高速な計算を用いるSURF(高速化堅牢特徴量)アルゴリズムを開発しました。場合によってはSURFの精度はSIFTより低いものの、処理速度は大幅に速く、時間制約のあるタスクでより実用的です。
- リアルタイム用途には不向き: 計算コストが高いため、SIFTはリアルタイムトラッキングやモバイルロボティクスなど、速度が重要なアプリケーションでは性能を発揮しにくい傾向があります。
- 汎用性の限界: 多くのケースで堅牢性を発揮する一方、極端な照明変化、大きな視点の移動、動きの激しいシーンでは効果が低く、こうした状況では新しいアルゴリズムや機械学習手法のほうが優れています。
SIFTの長所と短所を見ていくと、その制約の多くが、より高度な手法の開発につながったことに気付くかもしれません。特に、畳み込みニューラルネットワーク(CNN)は強力な代替手法として登場しました。
CNNは、人間の視覚システムの働きに着想を得た深層学習モデルの一種です。画像をレイヤーごとに処理し、エッジやテクスチャなどの単純なパターンから始めて、より複雑な形状や物体へと段階的に特徴を抽出します。手作業で設計されたSIFTの特徴ルールとは異なり、CNNはデータから特徴表現を直接学習します。
このデータ駆動型の学習により、CNNは記述子マッチングや分類タスクでSIFTを上回る性能を発揮できます。また、CNNは表現力と堅牢性に優れ、視覚データのばらつきや複雑さにより適応できます。
たとえば、CNNベースのモデルは、数千カテゴリにわたる数百万枚のラベル付き画像を含む大規模なベンチマークデータセットであるImageNetで、画期的な成果を上げています。アルゴリズムの物体認識・分類性能を評価するために設計されたImageNetは、従来の特徴ベースの手法と深層学習の差を明らかにできます。
CNNは、はるかに豊かで柔軟な表現を学習することで、すぐにSIFTを上回りました。その結果、照明の変化や異なる視点に対応し、物体の一部が隠れている場合でも認識できるようになりました。こうした状況では、SIFTはしばしば苦戦します。
重要なポイント#
スケール不変特徴変換(SIFT)アルゴリズムは、コンピュータービジョンの歴史において重要な位置を占めています。環境が変化しても特徴を確実に検出する方法を提供し、現在使われている多くの手法に影響を与えました。
より新しい手法は高速かつ効率的ですが、SIFTはその基盤を築きました。SIFTは、今日のコンピュータービジョンの進歩がどこから始まったのかを示し、現代のAIシステムがどれほど発展したかを浮き彫りにしています。
グローバルなコミュニティに参加し、GitHubリポジトリでコンピュータービジョンについて詳しくご覧ください。ソリューションページでは、農業分野のAIや小売業におけるコンピュータービジョンなどのイノベーションをご紹介しています。ライセンスオプションを確認して、独自のコンピュータービジョンモデルの構築を始めましょう。
執筆者
コメント
質問したり、結果を共有したり、ほかの人をサポートしたりできます。










