Python+OpenCV|ラプラシアンフィルタ

ラプラシアンフィルタとは

二次微分を利用して画像から輪郭を抽出する空間フィルタです。

x方向とy方向の2次微分の和をラプラシアンという。


$$\nabla^2 = \frac{ \partial }{ \partial x^2 } + \frac{ \partial }{ \partial y^2 } $$

2次微分はノイズも検出してしまう可能性がある。

ラプラシアンカーネル

$$F = \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix}$$

斜め方向も考慮したラプラシアンカーネル

$$F = \begin{bmatrix} 1 & 1 & 1 \\ 1 & -8 & 1 \\ 1 & 1 & 1 \end{bmatrix}$$

Python+OpenCV

import matplotlib.pyplot as plt
import cv2
import numpy as np
gray=cv2.imread('haruna_kankore.png', 0)

cv2.imwrite('gray_model.png', gray)
laplacian = cv2.Laplacian(gray, cv2.CV_32F, ksize=3)

cv2.imwrite('laplacian_model.png', laplacian)

出力結果

元画像

ラプラシアンフィルタ