Image Pyramid(画像ピラミッド)

画像ピラミッドは、画像の多重解像度表現である。すなわち、同じ画像を段階的に縮小した(それに応じてぼかした)コピーの積み重ねである。これは、シーンの構造のスケールも、フレーム間の運動の大きさも事前にはわからないという事実に対する標準的なエンジニアリング上の解答であり、単純にアルゴリズムをすべてのレベルで走らせるか、粗いレベルが細かいレベルをブートストラップするという形で使われる。

ガウシアンピラミッド

基底レベル I0I_0 は入力画像である。それ以降の各レベルは、ローパスフィルタリングとサブサンプリングによって得られる。

I+1(x,y)=(GσI)(2x,2y)I_{\ell+1}(x, y) = \big(G_{\sigma} * I_{\ell}\big)(2x,\, 2y)

すなわち、ガウシアンカーネルで畳み込みを行い、両方向で1画素おきに残す。ぼかしは装飾ではなく本質的な処理である。サブサンプリングはサンプリング周波数を半分にするため、新しいナイキスト限界を超える周波数は先に除去しなければならない。除去しなければ、それらはエイリアシングによって誤った低周波構造として現れてしまう。解像度を半分にすることをオクターブと呼ぶ。ピラミッド全体のコストはわずかである。等比級数 1+14+116+1 + \tfrac{1}{4} + \tfrac{1}{16} + \cdots は基底画像のメモリの 43\tfrac{4}{3} に収束する。

一般的な2つの改良点がある。

ラプラシアンピラミッドは、代わりに連続するガウシアンレベル間の帯域通過差分、L=Iupsample(I+1)L_\ell = I_\ell - \mathrm{upsample}(I_{\ell+1}) を保存する。これはDoGがブロブ検出のために利用している同じアイデアであり、画像ブレンディングや圧縮のための古典的な手法である。

ピラミッドが視覚アルゴリズムにもたらすもの

スケール不変な検出。 FASTのようなコーナー検出器は固定の7画素のフットプリントを持ち、幅40画素のコーナーには反応できない。同じ検出器をすべてのピラミッドレベルで走らせることで、実質的に物体のサイズにわたるスキャンが行われる。ある特徴点が発火したレベルは記録される——ORBはそれに応じてキーポイントの座標と記述子パッチをスケーリングし、SLAMにおいては検出レベルがそのランドマークが後に再検出される距離範囲を定義する(ORB-SLAMの探索窓におけるスケール認識マッチング)。

粗から細への運動推定。 Lucas-Kanadeオプティカルフローは、輝度関数を線形化しているため、サブピクセルから数ピクセル程度の変位に対してのみ有効である。フル解像度でdd画素の変位は、レベル\ellでは d/2d / 2^{\ell} 画素として現れ、ある粗いレベルでは線形化の前提を満たす程度に小さくなる。ピラミッド型LK(BouguetのKLT)は、最も粗いレベルLLでフロー dL\mathbf{d}_L を推定し、それを初期推定として下方へ伝播させる。

g1=2(g+d),\mathbf{g}_{\ell-1} = 2\,(\mathbf{g}_{\ell} + \mathbf{d}_{\ell}),

各細かいレベルで精緻化していく。LL個のレベルを用いれば、半径wwの窓は ww 画素ではなく (2L+11)w(2^{L+1}-1)\,w 画素程度の運動を捉えることができる。同じ粗から細へのスケジュールが、LSD-SLAM/DSOにおける直接的な画像アライメントや、DTAMのような密な手法を駆動している——粗いレベルは測光コスト面も平滑化し、収束の盆地を広げる。

頑健性と速度。 粗いレベルは、局所最小値を作り出す雑音や細かいテクスチャを抑制する。また、4分の1やそれ以下の解像度で先に処理することで、トラッカーはフル解像度の画素に触れる前に、悪い仮説を安価に棄却できる。

実装上の実務的な注意点

ピラミッドベースのフロントエンドを実装する際に重要な詳細がある。

SLAMにおける意義

ピラミッドはほぼすべてのSLAMフロントエンドに、2つの形で現れる。第一に特徴点のスケールである。多レベル検出があるからこそ、ORB-SLAMはカメラが近づいたり離れたりしてもランドマークをマッチングし続けられる——これがなければ、見た目のサイズが変わるたびにトラックは失われてしまう。第二に運動の範囲である。ピラミッド型KLTと粗から細への直接アライメントがあるからこそ、トラッカーはフレーム間の速いカメラ運動を乗り越えられる。SLAMシステムが急激な回転の下で追跡を失ったとき、最初に問うべき質問は、いくつのピラミッドレベルを使っているか、そして最も粗いレベルでもまだ十分な構造が見えているか、である。レベル数とスケール係数の選択は実際の調整ノブである。レベルを増やすほど運動とスケールの範囲は広がるが、計算コストがかかり、最上位では粗く雑音の多い推定となる。

関連ノート