この記事では、Python版OpenCVでDoGフィルタを実装し、画像をぼかして輪郭を抽出する方法をソースコード付きで解説します。
DoGフィルタ
DoG(Difference of Gaussian)とは、 の値が異なる2つのガウシアンフィルタ画像の差分です。
DoGフィルタは、LoGフィルタに近似できます。
そして、計算量も小さいため、LoGフィルタの代わりなどでよく用いられます。
【詳細】DoGフィルタの原理・特徴・計算式
今回は、Python言語とOpenCVを用いてDoGフィルタを実装してみました。
書式
dst = cv2.GaussianBlur(src, ksize, sigmaX)
パラメータ名 | 説明 |
---|---|
src | 入力画像 |
ksize | カーネルサイズ |
sigmaX | ガウス分布の |
dst | 出力画像 |
ソースコード(Python3+OpenCV3)
サンプルプログラムのソースコードです。
#-*- coding:utf-8 -*- import cv2 import numpy as np # DoGフィルタ def DoG(gray, ksize, sigma1, sigma2): # 標準偏差が異なる2つのガウシアン画像を算出 g1 = cv2.GaussianBlur(gray, ksize, sigma1) g2 = cv2.GaussianBlur(gray, ksize, sigma2) # 2つのガウシアン画像の差分を出力 return g1 - g2 def main(): # 入力画像を読み込み img = cv2.imread("input.jpg") # グレースケール変換 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # DoGフィルタ処理 dst = DoG(gray, (3,3), 1.3, 2.6) # 結果を出力 cv2.imwrite("output.jpg", dst ) if __name__ == "__main__": main()
※動作には、OpenCVライブラリのインストールが必要です。
実行結果
サンプルプログラムの実行結果です。
■入力画像(左)と出力画像(右)
【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
コメント