特徴点検出 — 画像の「目印」を見つける
パノラマ合成も物体追跡も AR も、出発点は「2枚の画像の間で同じ場所を対応づけること」。そのためには、画像の中から追いかけやすい目印=特徴点を選ぶ必要があります。なぜコーナー(角)が特別なのかを誤差の「地形」で体感し、Harris 検出器からマッチング、SIFT への道筋までを追います。
1. 追跡できる点、できない点 — 誤差の地形で見る
ある場所が「良い目印」かどうかは、こうテストできます。その場所に小窓を置き、窓を少しだけ (u, v) ズラしたときに見え方がどれだけ変わるか(SSD 誤差)を測るのです。
E(u, v) を高さとみなした地形は、場所によって形が激変します。
- 平坦部(空や壁の中) — どこへズラしても E ≈ 0。地形はまっ平ら。位置を特定する手がかりがない。
- エッジ上 — エッジと直交する方向では E が急増するが、エッジに沿った方向は E ≈ 0 の溝。1方向に曖昧。
- コーナー — 全方向で E が急増するお椀型。ズレが必ずバレる = 位置がピタリと決まる。
2. Harris コーナー検出 — 「お椀」を数式で測る
地形を毎回全方向に掘って調べるのは大変です。Harris らは、E(u, v) を微小なズレでテイラー近似すると、窓内の画像勾配 (Ix, Iy) だけから作れる 2×2 行列 M(構造テンソル)で地形の形が決まることを示しました。
固有値 λ₁, λ₂ は地形の主軸2方向の曲がり具合そのものです。
| λ₁ | λ₂ | 地形 | 場所の性格 |
|---|---|---|---|
| 小 | 小 | まっ平ら | 平坦 — 手がかりなし |
| 大 | 小 | 溝 | エッジ — 1方向に曖昧 |
| 大 | 大 | お椀 | コーナー — 特徴点! |
固有値分解を毎画素やる代わりに、行列式とトレースだけで済む応答関数 R を使うのが Harris 流です。
3. 見つけた点を照合する — テンプレートマッチング
特徴点が見つかったら、次は別の画像の中から同じ場所を探す番です。最も素朴な方法がテンプレートマッチング。目印の周りの小画像(テンプレート)を、相手画像の全位置にあてがって SSD を計算し、いちばん似ている場所を選びます。
4. SIFT へ — 変形に負けない特徴記述
この弱点を正面から解決したのが SIFT(Scale-Invariant Feature Transform)です。アイデアは「見た目を直接比べない」こと。
- スケール不変性 — 画像をぼかしながら縮めたピラミッド(DoG)の中で極値を探し、特徴点に「自分のサイズ」を持たせる。拡大縮小しても同じ点が同じ相対サイズで見つかる。
- 回転不変性 — 周囲の勾配から主方向を求め、記述子をその向きに揃えてから作る。
- 記述子 — 周辺を 4×4 ブロックに分け、各ブロックの勾配方向ヒストグラム(8方向)を並べた 128 次元ベクトル。照合は「見た目」ではなくベクトル間の距離で行う。
対応点のペアが集まれば、応用は一気に広がります。パノラマ合成(対応点から RANSAC で射影変換を推定して貼り合わせる)、物体トラッキング、SLAM・AR(特徴点の動きからカメラの自己位置を推定する)— どれも本章の「コーナーを見つけて対応づける」の延長線上にあります。
5. まとめ
- 良い特徴点とは、窓をズラすと全方向で誤差 E(u,v) が急増する場所=コーナー。平坦部は手がかりゼロ、エッジは1方向に曖昧(開口問題)。
- Harris 検出器は構造テンソル M の固有値 λ₁, λ₂ で地形を分類する。実装上は R = det M − k(tr M)² の閾値処理+非極大抑制。
- テンプレートマッチングは素朴で強力だが、明るさ変化(→NCC で対処)や回転・スケール変化に弱い。
- SIFT はスケールと向きを正規化した 128 次元記述子で照合し、パノラマ・トラッキング・SLAM の基盤となった。