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

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

Birateralオペレータを使うとGaussianオペレータのときよりもノイズの少なく平滑化できる。

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

 

前提

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

&nbsp

元画像

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

 

BilateralFilterオペレータ

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

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

# 色空間に関する標準偏差
sigma_color = 1

# 距離空間に関する標準偏差
sigma_metric = 1

# Bilateralオペレータを使用して平滑化
img_bilateral = cv2.bilateralFilter(img_src,
average_square_size,
sigma_color,
sigma_metric)
[/python]

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

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

import cv2
import numpy as np

if __name__ == ‘__main__’:

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

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

# 色空間に関する標準偏差
sigma_color = 1

# 距離空間に関する標準偏差
sigma_metric = 1

# Bilateralオペレータを使用して平滑化
img_bilateral = cv2.bilateralFilter(img_src,
average_square_size,
sigma_color,
sigma_metric)

# 表示
cv2.imshow("Show BILATERAL Image", img_bilateral)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/python]

実行してみる。

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

Gaussianオペレータのとき

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

 

よりもよりノイズが少ないことがわかる。

 

Related posts

コメントを残す