【画像処理】LoGフィルタの原理・特徴・計算式

画像処理におけるLoGフィルタの原理・特徴・計算方法についてまとめました。

LoGフィルタとは

LoGフィルタ(Laplacian Of Gaussian Filter)とは、ガウシアンフィルタとラプラシアンフィルタを組み合わせたフィルタです。
ラプラシアンフィルタは二次微分で輪郭を検出するため、ノイズが強調されやすいという欠点があります。LoGフィルタでは、ガウシアンフィルタで画像を平滑化してノイズを低減した後、ラプラシアンフィルタで輪郭を検出します。これによりラプラシアンフィルタの欠点を抑えることができます。

■ラプラシアンフィルタ(左)とLoGフィルタ(右)

LoGフィルタの計算式

LoGフィルタの計算式は、ガウス関数のラプラシアン(2階微分)により求まります。
ガウス関数は以下のとおりです。

$$ G(x, y) = \frac{1}{2\pi\sigma^2}e^{-\frac{x^2+y^2}{2\sigma^2}} $$

  • $ G(x, y) $:座標 $(x, y)$ におけるガウス関数の値(フィルタの重み)。
  • $ \sigma $:ガウス分布の標準偏差。値が大きいほど、平滑化の効果が大きくなり、フィルタの範囲が広がる。(その分、計算コストも高くなる)
  • $ e $:自然対数の底 (約2.718) 。

この計算式のxについての一次微分を求めます。

$$ \frac{\partial G(x, y)}{\partial x} = \frac{\partial}{\partial x}\left( \frac{1}{2\pi\sigma^2}e{-\frac{x2+y2}{2\sigma^2}} \right) = \frac{1}{2\pi\sigma^2}\left( -\frac{x}{\sigma^2} \right)e^{-\frac{x^2+y^2}{2\sigma^2}} $$

さらに、上式をもう一度微分することで、二次微分を求めます。
$$ \frac{\partial^2 G(x, y)}{\partial x^2} = \frac{1}{2\pi\sigma^2}\left( \left( \frac{x^2}{\sigma^4} – \frac{1}{\sigma^2} \right)e^{-\frac{x^2+y^2}{2\sigma^2}} \right) $$

同様にして、yについても二次微分を求めます。

$$ \frac{\partial^2 G(x, y)}{\partial y^2} = \frac{1}{2\pi\sigma^2}\left( \left( \frac{y^2}{\sigma^4} – \frac{1}{\sigma^2} \right)e^{-\frac{x^2+y^2}{2\sigma^2}} \right) $$

x と y の二次微分の和を求めると、ラプラシアンが求まります。

$$ \nabla^2 G(x, y) = \frac{\partial^2 G(x, y)}{\partial x^2} + \frac{\partial^2 G(x, y)}{\partial y^2} $$

$$ = \frac{1}{2\pi\sigma^2}\left( \left( \frac{x^2 + y^2}{\sigma^4} – \frac{2}{\sigma^2} \right)e^{-\frac{x^2+y^2}{2\sigma^2}} \right) $$

上式を整理して、定数をまとめるとLoGフィルタの計算式が求まります。

$$ LoG(x, y)=\frac{x^2+y^2-2\sigma ^2}{2\pi \sigma ^6}e^{-\frac{x^2+y^2}{2\sigma ^2}} $$

関連ページ

【Python/OpenCV】LoGフィルタで輪郭検出
Python版OpenCVでLoGフィルタを実装し、ノイズを抑えて画像の輪郭を検出する方法をソースコード付きで解説します。
【画像処理超入門】アルゴリズムの仕組みと実装方法を簡単に解説
画像処理超アルゴリズムの仕組みとプログラミングによる実装方法を簡単に解説します。
この記事を書いた人
西住技研

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

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

コメント

  1. tomato より:

    -sigma^2 → -2*sigma^2