【DoGフィルタとは】計算式の仕組みとLoGと近似である理由

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が採用されています。

参考:Gradientベースの特徴抽出-SIFTとHOG

関連ページ

【Python/OpenCV】DoGフィルタで輪郭検出
Python版OpenCVでDoGフィルタを実装し、画像の輪郭を検出する方法をソースコード付きで解説します。
画像処理
「画像処理」の記事一覧です。
【画像処理】LoGフィルタの原理・特徴・計算式
画像処理におけるLoGフィルタの原理・特徴・計算方法についてまとめました。
この記事を書いた人
西住技研

在学中はシステム制御理論や画像処理、機械学習を専攻分野として研究していました。就職後は、プログラミング(Python)を活用したデータ分析や作業自動化に取り組み、現在に至ります。そこで得たノウハウをブログで発信しています。
YoutubeX(旧Twitter)でも情報発信中です

西住技研をフォローする
画像処理

コメント