平均フィルター
Opencvの平均フィルタリングの使用は、cv2.blurを介して実現されます。原則は非常に単純です。つまり、周囲の平均値を取得します。
方法を以下に説明します
def blur(src, ksize, dst=None, anchor=None, borderType=None)
- src:入力画像
- ksize:タプルである畳み込みカーネルのサイズ
- dst:出力画像
- アンカー:アンカーポイント。デフォルト値のPoint(-1、-1)は、アンカーポイントがカーネルの中心にあることを意味します。
- borderType:画像の外側のピクセルを推測するために使用されるいくつかの境界モード。デフォルト値はBORDER_DEFAULTです
このフィルターは、塩とコショウのノイズにより良い効果があります
import cv2
import numpy as np
lp = cv2.resize(cv2.imread('../images/jiaoyan.png'), None, fx=0.8, fy=0.8)
new_lp1 = cv2.blur(lp, (5, 5))
cv2.imshow('lp', np.hstack((lp, new_lp1)))
cv2.waitKey(0)
cv2.destroyAllWindows()
ボックスフィルター
opencvボックスフィルターはcv2.boxFilter関数によって実装されます。この関数は基本的にcv2.blurと同じです。normalize=Trueの場合、平均フィルタリング結果と同じです。Normalize= False、正規化は実行されず、255 255より大きい場合に使用されます。
機能は以下のとおりです。
def boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None)
- src:入力画像
- ddepth:出力画像の深さ。-1は元の画像と同じことを意味し、通常は-1です。
- ksize:タプルである畳み込みカーネルのサイズ
- dst:出力画像
- アンカー:アンカーポイント。デフォルト値のPoint(-1、-1)は、アンカーポイントがカーネルの中心にあることを意味します。
- normalize:カーネルがその領域によって正規化されているかどうかを示す識別子。
- borderType:画像の外側のピクセルを推測するために使用されるいくつかの境界モード。デフォルト値はBORDER_DEFAULTです
正規化はcv2.blurと同じであるため、正規化されていない画像を以下に示します。
import cv2
import numpy as np
lp = cv2.resize(cv2.imread('../images/jiaoyan.png'), None, fx=0.8, fy=0.8)
new_lp1 = cv2.boxFilter(lp, -1, (2, 2), normalize=False)
cv2.imshow('lp', np.hstack((lp, new_lp1)))
cv2.waitKey(0)
cv2.destroyAllWindows()
正規化しないと、それらのほとんどは白になります