論文 "Fast bilateral-space stereo for synthetic defocus" ③
論文"Fast bilateral-space stereo for synthetic defocus. "を読む。
背景
前回まで
低品質のセグメンテーション結果から高品質のセグメンテーション結果を生成するバイラテラルソルバーを実際にプログラミングするために、行列、(を構成する、信頼度画像)、ベクトルの具体的な作り方を調べている。
疑問点
- バイラテラルソルバーを計算するために必要な行列、ベクトルの作り方。
- 親和性行列の作り方(二重確率化とは?)
- 信頼度の作り方
論文を読む
文献[2]のAbstractと1.Introductionまで読んだ。
文献はデフォーカスレンダリングを目的とするデプスマップ作成のために、バイラテラル空間で行なわれる新しい最適化フレームワークを提案し、高速に視差図を求める。
コアの技術はバイラテラルフィルタをピクセル空間からバイラテラル空間へとリサンプリングするというもの。今日はその"2. FAST BILATERAL FILTERING"について読み進める。
2. FAST BILATERAL FILTERING-1
バイラテラルフィルタ[28]は、エッジ保存フィルタであり、局所的にフィルタを画像内容に適応させることによって、エッジに沿ったぼかしは行うが、エッジを横切るぼかしは行わない効果がある。
バイラテラルフィルタを考えるのに便利な方法は、正規化された行列 - ベクトル乗算である:
\begin{align}
\bf{y}=(A\bf{x})/(A1)
\tag{1}
\end{align}ここで、はピクセルとの間の重み、は(ベクトル化された)入力画像、はフィルター処理された出力画像、/ は要素ごとの割り算、そして1はすべて1のベクトルです。
一般に画像は2次元データだが、ここで入力画像と出力画像はそれぞれ1次元にベクトル化されている。式(1)を書き下すと次のようになる。
つまり、出力画像の1画素を計算するために、入力画像の全ての画素に、フィルタ係数を表す行列のある行の全ての値をかけて総和をとり、フィルタ係数の総和で割るのが式(1)である。
では行列は? という話が続く。
正式には、Aは次のように定義されます。
ここでパラメータとはそれぞれ、フィルタの空間と範囲帯域幅を制御する。
式(2)は、が画素と画素との空間的な距離を、が画素と画素との画素値の差を表している。距離や差が大きくなればなるほどフィルタ係数であるは小さくなる。
式(1)(2)では、出力画像の画素ひとつを計算するのに入力画像の画素すべてを用いて係数を求めることになっているので、真面目に計算すると非常に計算コストが高い。ただ、例えばとしてを計算すると、距離が0の時最大値1、距離が1で0.607、距離が2で0.135、距離が3で0.011、距離が4で0.0003と、どんどん小さくなる(図1)。
したがって求める出力画像に実用上問題の生じる差がないのであれば、適当な範囲で計算を打ち切るようにすることはできそうである。なお、と係数との関係は図2のようになる。つまり、に応じて計算範囲を定める必要がある。
まとめ
2. FAST BILATERAL FILTERING を読みはじめる。
まずはバイラテラルフィルタの式そのものについて。