OpenCVで画像の平滑化を行うには、blur()関数を用います。
ここで言う平滑化は、単純な移動平均フィルタとなります。
移動平均フィルタの処理については、下記ページを参照ください。
平滑化処理の構文
blur( src, ksize[, dst[, anchor[, borderType]]] ) -> dst
引数
src | 平滑化を行う画像データを指定します。 データタイプはuint8, uint16, int16, float32, float64に対応しています。 |
ksize | カーネルのサイズを(幅, 高さ)で指定します。 通常、幅と高さは奇数の値を指定してください。 |
anchor | カーネルの基点となる座標を(x, y)で指定します。 (-1, -1)と指定すると、カーネルの中心座標となります。 指定しないと、初期値でカーネルの中心座標となります。 |
borderType | ボーダー処理の種類をBorderTypesのenumで指定します。 |
戻り値
dst | 平滑化された画像データ |
サンプルプログラム
平滑化処理のサンプルプログラムを以下に示します。
import cv2
src = cv2.imread("Text.bmp", cv2.IMREAD_UNCHANGED)
# 平滑化(移動平均)
dst = cv2.blur(src, (5, 5))
# 二値化処理後の画像表示
cv2.imshow("Src Image", src)
cv2.imshow("blur", dst)
cv2.waitKey()
実行結果
anchorやborderTypeについては、ほぼ、指定することは無いかと思いますが、念のため、それぞれを指定したサンプルを示します。
import cv2
src = cv2.imread("Text.bmp", cv2.IMREAD_UNCHANGED)
# 平滑化(移動平均)
dst = cv2.blur(
src, # 入力画像
(3, 21), # カーネルのサイズ(幅、高さ)
anchor = (1, 10), # カーネルの中心座標
borderType = cv2.BORDER_DEFAULT # ボーダー処理の種類
)
# 二値化処理後の画像表示
cv2.imshow("Src Image", src)
cv2.imshow("blur", dst)
cv2.waitKey()
実行結果
参照ページ
https://docs.opencv.org/4.8.0/d4/d86/group__imgproc__filter.html#ga8c45db9afe636703801b0b2e440fce37