スケール不変特徴変換(SIFT)とは何ですか?
SIFTアルゴリズムを詳しく解説します。SIFTとは何か、スケール不変なコンピュータービジョンに役立つ強力な特徴、画像処理を強化する方法を学びます。

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

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

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

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

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

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









