Image Pyramid(画像ピラミッド)
画像ピラミッドは、画像の多重解像度表現である。すなわち、同じ画像を段階的に縮小した(それに応じてぼかした)コピーの積み重ねである。これは、シーンの構造のスケールも、フレーム間の運動の大きさも事前にはわからないという事実に対する標準的なエンジニアリング上の解答であり、単純にアルゴリズムをすべてのレベルで走らせるか、粗いレベルが細かいレベルをブートストラップするという形で使われる。
ガウシアンピラミッド
基底レベル は入力画像である。それ以降の各レベルは、ローパスフィルタリングとサブサンプリングによって得られる。
すなわち、ガウシアンカーネルで畳み込みを行い、両方向で1画素おきに残す。ぼかしは装飾ではなく本質的な処理である。サブサンプリングはサンプリング周波数を半分にするため、新しいナイキスト限界を超える周波数は先に除去しなければならない。除去しなければ、それらはエイリアシングによって誤った低周波構造として現れてしまう。解像度を半分にすることをオクターブと呼ぶ。ピラミッド全体のコストはわずかである。等比級数 は基底画像のメモリの に収束する。
一般的な2つの改良点がある。
- より細かいスケールサンプリング。 SIFTは各オクターブを個の中間スケールで満たし、係数 でぼかしを行う。これにより、差分ガウシアン(DoG)応答を密なスケール集合にわたって比較し、 で極値を局在化できる。
- 2の累乗ではないスケール係数。 ORB検出器は通常より緩やかなスケール係数を用いる(ORB-SLAMは8レベルにわたって1.2を使用する)。これにより、レベル間で大きな飛躍を生じさせずに、ランドマークが広い範囲の観察距離でマッチング可能なままとなる。
ラプラシアンピラミッドは、代わりに連続するガウシアンレベル間の帯域通過差分、 を保存する。これはDoGがブロブ検出のために利用している同じアイデアであり、画像ブレンディングや圧縮のための古典的な手法である。
ピラミッドが視覚アルゴリズムにもたらすもの
スケール不変な検出。 FASTのようなコーナー検出器は固定の7画素のフットプリントを持ち、幅40画素のコーナーには反応できない。同じ検出器をすべてのピラミッドレベルで走らせることで、実質的に物体のサイズにわたるスキャンが行われる。ある特徴点が発火したレベルは記録される——ORBはそれに応じてキーポイントの座標と記述子パッチをスケーリングし、SLAMにおいては検出レベルがそのランドマークが後に再検出される距離範囲を定義する(ORB-SLAMの探索窓におけるスケール認識マッチング)。
粗から細への運動推定。 Lucas-Kanadeオプティカルフローは、輝度関数を線形化しているため、サブピクセルから数ピクセル程度の変位に対してのみ有効である。フル解像度で画素の変位は、レベルでは 画素として現れ、ある粗いレベルでは線形化の前提を満たす程度に小さくなる。ピラミッド型LK(BouguetのKLT)は、最も粗いレベルでフロー を推定し、それを初期推定として下方へ伝播させる。
各細かいレベルで精緻化していく。個のレベルを用いれば、半径の窓は 画素ではなく 画素程度の運動を捉えることができる。同じ粗から細へのスケジュールが、LSD-SLAM/DSOにおける直接的な画像アライメントや、DTAMのような密な手法を駆動している——粗いレベルは測光コスト面も平滑化し、収束の盆地を広げる。
頑健性と速度。 粗いレベルは、局所最小値を作り出す雑音や細かいテクスチャを抑制する。また、4分の1やそれ以下の解像度で先に処理することで、トラッカーはフル解像度の画素に触れる前に、悪い仮説を安価に棄却できる。
実装上の実務的な注意点
ピラミッドベースのフロントエンドを実装する際に重要な詳細がある。
- 座標の慣習:レベル上ののキーポイントは、スケール係数に対して基底レベルでは に対応する——このマッピングにおけるオフバイワンレベルのバグは、微妙に間違った再投影誤差の典型的な原因である。
- レベルごとの特徴点予算:検出器はレベルにわたって特徴点の割当量を配分する(細かいレベルには多く、粗いレベルには少なく)。これにより地図が複数の距離で使えるランドマークを含むようになる。
- 記述子のスケール:記述子パッチは検出時のレベルからサンプリングされなければならない(そうでなければそれに応じてスケーリングされなければならない)。そうしないと、スケールをまたぐマッチングが密かに劣化する。
- ぼかしてからサブサンプリングする順序:時間を節約するためにローパスフィルタをスキップすると、検出の再現性と測光的アライメントの両方を損なうエイリアシングが発生する。
SLAMにおける意義
ピラミッドはほぼすべてのSLAMフロントエンドに、2つの形で現れる。第一に特徴点のスケールである。多レベル検出があるからこそ、ORB-SLAMはカメラが近づいたり離れたりしてもランドマークをマッチングし続けられる——これがなければ、見た目のサイズが変わるたびにトラックは失われてしまう。第二に運動の範囲である。ピラミッド型KLTと粗から細への直接アライメントがあるからこそ、トラッカーはフレーム間の速いカメラ運動を乗り越えられる。SLAMシステムが急激な回転の下で追跡を失ったとき、最初に問うべき質問は、いくつのピラミッドレベルを使っているか、そして最も粗いレベルでもまだ十分な構造が見えているか、である。レベル数とスケール係数の選択は実際の調整ノブである。レベルを増やすほど運動とスケールの範囲は広がるが、計算コストがかかり、最上位では粗く雑音の多い推定となる。