論文情報

C. Rhemann et al. “Fast Cost-Volume Filtering for Visual Correspondence and Beyond” (2013)

リンク

著者

ウィーン工科大学, Microsoftの人たち

概要

  • Stereo matching, optuical flow, interactive segmentationなどをラベル問題として定式化
  • コスト関数の平滑化にGuided Filterを用いることで、精度を落とさずに高速化

内容

Stereo matchingについて具体例

[Rhemann+(2013)] Fig.1

[Rhemann+(2013)] Fig.1

  1. cost volume $C_{x, y, l}$は2枚の画像 $I, I^{'}$ の変位$l$の時の差分と、x方向の微分の差分の重み付き和(上の画像の(b))
  2. 変位ごとに、元の画像をガイドとして重み付き平均する(上の画像の(e))
  3. 平滑化したcost volumeのargminが解となる変位
  4. occlusionがあるところ(左右の画像の両方をベースにして2回マッチングをし、左右の結果がコンシステントでない場所)は周りの変位で修正する

ラベリング問題

以下の3つの例は、画像の各Pixelのラベリング問題として解釈できる。

  • Stereo matchingは平行化した2枚の画像の間に、各Pixelでどれくらい変位があるかを求める問題。各Pixelに対して、変位を割り当てるラベル問題と解釈できる。
  • Optuical flowは各Pixelに対して、動きベクトルを求める問題。これも各Pixelに対して、変位を割り当てるラベル問題と解釈できる
  • interactive segmentationはユーザーが一部のPixelに対して与えた初期ラベルを元に、各Pixelを前景と背景に分類する問題。2ラベル問題になっている。

手法

画像の各Pixelのラベリング問題を解くアルゴリズムとして以下を考案。

  1. 各Pixel・各ラベルに対して、コストを計算。コストはpixel座標$x, y$とラベル$l$のindexをもつので3次元なのでcost volume $C_{x, y, l}$と呼んでいる
  2. cost volumeを、元画像をガイドとしてGuided Filterで平滑化
  3. 平滑化されたcost volumeのargminを取ることで、最終的なラベルを決定
  • 先行研究[31]では2.のcost volumeの平滑化をBilateral filterでやっており、それにより元画像のエッジが保存される結果が得られていたが、処理時間が遅かった。
    本研究では、cost volumeの平滑化にGuided filterを使うことで、エッジ保存の平滑化を高速に実行できる。
    (Guided filterは、積分画像を使って高速に計算可能なBox filterの組み合わせで実装できるため早い)
  • sub-pixel精度が必要な場合 元の画像をbicubic拡大して、sub-pixelの変位の場合のコスト関数も計算する。 コスト関数の変位の次元は大きくなるが、座標の次元はそのまま。

処理速度

  • 1Mpix画像に対して5msec(CUDA実装)
  • 論文の処理速度はCUDA実装で測定した結果で、公開されているのはMatlab実装なのが悲しい

感想

  • [Khamis+(2018)]などで引用されていたので目を通した。
  • Stereo matchingで、cost関数をただの差分だけに(x方向の微分の項をなくす)して、平滑化をbox filterにすると、シンプルなSADでのブロックマッチングに帰着する。それに比べて平滑化をbilateral filterとかguided filterにすると、画素値が近い周りのpixelの影響は大きくなるが、画素値が遠い周りのPixelの影響は小さくなる。このように画素値の違いで寄与を変えると、異なる奥行きの物体間の境界などでは良さそうだが、同じ物体でTextureがある時などに悪影響がありそう。実験でCG画像で精度が悪いという結果は、これが関係してそうな気がする。(学習ベースにして、単に画素値で寄与度を決めるのではなくて、同じ物体に属するかで決めると精度が上がりそう。)
  • costにただのL1ノルムではなく、カットオフみたいなものを導入している。L2よりL1の方が外れ値に強いが、更にそれを推し進めた感じ。初めて見たが、一般的なのだろうか?

参考文献