Python OpenCV3でGaussianオペレータを使って平滑化


移動平均オペレータよりも加重平均オペレータの方がよりエッジがくっきりした平滑化ができる。
今回はGaussianオペレータを使って加重平均を取得する。

 

前提

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

&nbsp

元画像

移動平均オペレータと比較するため、カラスの画像(karasu.jpg)を使う。
karasu

 

Gaussianオペレータ

Pythonの場合、移動平均を行う場合はGaussianBlurメソッドを使う。
GaussianBlurメソッドの使い方は以下のとおり。

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

# x軸方向の標準偏差
sigma_x = 1

# Gaussianオペレータを使用して平滑化
img_gauss = cv2.GaussianBlur(img_src, average_square, sigma_x)

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

# -*- coding: utf-8 -*-

import cv2
import numpy as np

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

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

    # x軸方向の標準偏差
    sigma_x = 1

    # Gaussianオペレータを使用して平滑化
    img_gauss = cv2.GaussianBlur(img_src, average_square, sigma_x)

    # 表示
    cv2.imshow("Show GAUSS Image", img_gauss)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

実行してみる。

(opencv_python)$ python gauss.py 

スクリーンショット 2015-07-04 0.30.06

 

少しぼやけてるが、移動平均オペレータのとき

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

よりもエッジがはっきりしている。

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です