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