Python OpenCV3で移動平均オペレータで平滑化

移動平均とは、画像の各画素値の周辺の平均値をとって画素値を決定すること。
単純な平均をとるため、ぼやけた画像が出力される。

[amazonjs asin="4061538225″ locale="JP" title="OpenCVによる画像処理入門 (KS情報科学専門書)"]

 

前提

ディレクトリ構成などはこことかこことか。

&nbsp

元画像

カラスの画像(karasu.jpg)を使う。
karasu

 

移動平均オペレータ

Pythonの場合、移動平均を行う場合はblurメソッドを使う。
blurメソッドの使い方は以下のとおり。
今回はわかりやすくするために、かなり大きめの周囲の大きさを指定している。

[python title="GaussianBlurメソッドの使い方"]
# 平均化する画素の周囲の大きさを指定する。
# (25, 25) の場合、個々の画素の地点の周囲25×25マスの平均をとる。
# 数値が大きいほどぼやける。
average_square = (25, 25)

# 移動平均を計算して出力する。
img_blur = cv2.blur(img_src, average_square)
[/python]

sourceディレクトリ配下にblur.pyを作成する。

[python title="blur.pyメソッドの内容"]
# -*- coding: utf-8 -*-

import cv2
import numpy as np

if __name__ == '__main__’:

# 画像の読み込み
img_src = cv2.imread("./image/karasu.jpg", 1)

# 平均化する画素の周囲の大きさを指定する。
# (25, 25) の場合、個々の画素の地点の周囲25×25マスの平均をとる。
# 数値が大きいほどぼやける。
average_square = (25, 25)

# 移動平均を計算して出力する。
img_blur = cv2.blur(img_src, average_square)

# 表示
cv2.imshow("Show BLUR Image", img_blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/python]

実行してみる。

[shell]
(opencv_python)$ python blur.py
[/shell]

スクリーンショット 2015-07-03 23.21.03

 

ぼやけてる。
average_square を小さくするともう少しくっきりした画像になるし、大きくするとよりぼやけた画像になる。