DoGフィルタとは?計算式の仕組みとLoGと近似である理由についてまとめました。
DoGフィルタとは
DoG(Difference of Gaussian)とは、わずかに異なる標準偏差をもつ2つのガウシアンフィルタを適用し、2枚のガウシアン画像の差分を計算することで輪郭検出します。DoGフィルタは、LoGフィルタと処理が似ており、計算量が小さいため、LoGフィルタの代わりに用いられます。
DoGフィルタの処理手順
DoGフィルタの処理手順は以下のとおりです。
① 入力画像に対して、標準偏差がわずかに異なる2つのガウシアンフィルタを適用し、平滑化処理します。
② 得られた2枚のガウシアン画像の差分を求めます。
$$ DoG(x, y)=G(x, y, \sigma_1)-G(x, y, \sigma_2) $$
※$G(x, y, \sigma_1), G(x, y, \sigma_2)$は標準偏差$\sigma$の値が異なる2つのガウシアン画像です。
③ 得られた差分画像$DoG$がDoGフィルタの出力となります。
LoGフィルタとDoGフィルタの計算式
LoGフィルタは、ガウシアンフィルタで平滑化した後にラプラシアンフィルタを適用することで輪郭検出を行う手法です。LoGフィルタを数式で表すと以下のとおりです。
$$ \text{LoG}(x, y) = \nabla^2 [G(x, y, \sigma) \ast I(x, y)] =\frac{x^2+y^2-2\sigma ^2}{2\pi \sigma ^6}e^{-\frac{x^2+y^2}{2\sigma ^2}} \ast I(x, y) $$
ここで、$ \nabla^2 $ はラプラシアン演算子、$ G(x, y, \sigma) $ はガウシアンカーネル、$ I(x, y) $ は入力画像、$\ast$ は畳み込み演算子を表します。
一方、DoGフィルタは、異なる標準偏差を持つ2つのガウシアンフィルタを引き算することで輪郭検出を行う手法です。DoGフィルタを数式で表すと以下のとおりです。
$$ \text{DoG}(x, y) = G(x, y, \sigma_1) \ast I(x, y) – G(x, y, \sigma_2) \ast I(x, y) $$
$ G(x, y, \sigma_1) $ および $ G(x, y, \sigma_2) $ はそれぞれ異なる標準偏差 $ \sigma_1 $ と $ \sigma_2 $ を持つガウシアンカーネルを表します。ただし、$ \sigma_1 $ と $ \sigma_2 $は近い値である必要があります。
LoGとDoGが近似となる理由
ガウス関数$G$の $ \sigma $ を変数とみなして一次微分すると次のようになります。
$$ \begin{aligned} \frac{\partial G}{\partial \sigma} &= \left( \frac{\partial}{\partial \sigma} \right) \left( \frac{1}{2\pi\sigma^2} \right) e^{-\frac{x^2+y^2}{2\sigma ^2}} \\ &= \left[ \left( \frac{1}{2\pi\sigma^2} \right) \frac{x^2 + y^2}{\sigma^3} – \frac{1}{\sigma^3} \right] e^{-\frac{x^2+y^2}{2\sigma ^2}} \\ &= \left[ \frac{x^2 + y^2}{2\pi\sigma^5} – \frac{1}{\pi\sigma^3} \right] e^{- \frac{x^2 + y^2}{2\sigma^2}} \\ &= \left( \frac{1}{2\pi\sigma^5} \right) \left( x^2 + y^2 – 2\sigma^2 \right) e^{- \frac{x^2 + y^2}{2\sigma^2}} \\ &= \sigma \nabla^2 G \end{aligned} $$
$k\sigma$ と$\sigma$が非常に近ければ、以下の近似式が成り立ちます。
$$ \frac{\partial G}{\partial \sigma} \approx \frac{G(x, y, k\sigma) -G(x, y, \sigma)}{k\sigma – \sigma} $$
$$ \sigma \nabla^2 G = \frac{\partial G}{\partial \sigma} \approx \frac{G(x, y, k\sigma) -G(x, y, \sigma)}{k\sigma – \sigma} $$
よって、以下の式が成り立ちます。
$$ G(x, y, k\sigma) – G(x, y, \sigma) \approx (k – 1) \sigma^2 \nabla^2 G $$
$\sigma^2 \nabla^2 G$はLoGの式であるため、上式はDoGがLoGの近似であることを示している。LoGよりDoGの方が計算コストが低いため、例えばSIFT特徴量の計算では、LoGの代わりにDoGが採用されています。
関連ページ



コメント