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()
実行結果
参照ページ
OpenCV: Image Filtering
平滑化(移動平均)フィルタ
平滑化フィルタは読んで字のごとく、画像の輝度値を平らに滑らかにするための手法です。 画像中のノイズを除去するために用いられます。 → → 平滑化処理前 平滑化処理後 移動平均フィルタ(別名:平均化フィルタ、単に平滑化フィルタともいう)では、...
【OpenCV-Python】BorderTypes(画像の外周処理の設定)
blur(平滑化)やGaussianBlur(ガウシアンフィルタ)など、カーネルを使った画像フィルタ処理では、画像の最外周部分では、カーネルが画像からはみ出してしまうため、はみ出した部分を、どのように補うか?の設定の種類にBoarderTy...
外周画像の処理
平滑化フィルタやメディアンフィルタなどの注目画素の周辺画素を用いた画像フィルタ処理では、画像の外周部分が下図のように画像の外側を参照してしまうため、処理ができなくなります。 この外周部分を処理する方法はいくつかあるのですが、代表的な方法を紹...
コメント