Python版OpenCVで平均値フィルタを実装し、画像を平滑化する方法をソースコード付きで解説します。
平均値フィルタとは
平均値フィルタ(Averaging Filter)は、画像をぼかし(平滑化)する空間フィルタです。平均化フィルタともいいます。仕組みの詳細は下記事で紹介しています。

【画像処理】平均値フィルタの原理・特徴・計算式
この記事では、平均値フィルタによる原理や特徴、計算式についてまとめました。
今回は、以下の3通りの方法で処理を実装する方法をそれぞれ解説します。
方法①cv2.Blurで実装
方法②cv2.filter2Dで実装
方法③NumPyでアルゴリズムを書いて実装(原理の理解を深めるため)
解説動画
本ページの内容は以下動画で解説しています。
サンプルコード① cv2.Blurで実装した場合
以下は、cv2.Blurで実装した場合のサンプルコードです。
実行結果
サンプルプログラムの実行結果です。
■入力画像(左)と出力画像(右)
コード解説
サンプルコード①のポイントを解説します。平均値フィルタの実装に用いた「cv2.Blur」の使い方は以下のとおりです。
dst = cv2.Blur(src, bit, ksize)
パラメータ名 | 説明 |
---|---|
src | 入力画像 |
bit | 出力画像のビット深度 |
ksize | カーネルサイズ |
dst | 出力画像 |
サンプルコード② cv2.filter2Dで実装した場合
以下は、cv2.filter2Dで実装した場合のサンプルコードです。
コード解説
サンプルコード①のポイントを解説します。平均値フィルタの実装に用いた「cv2.filter2D」の使い方は以下のとおりです。
dst = cv2.filter2D(src, -1, kernel)
パラメータ名 | 説明 |
---|---|
src | 入力画像 |
kernel | フィルタのカーネル(※NumPy配列で与える) |
dst | 出力画像 |
サンプルコード③ NumPyで実装した場合
以下は、アルゴリズムを自分で実装した場合のサンプルコードです。
関連ページ

【PythonとOpenCVで画像処理超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。

Python基礎
「Python基礎」の記事一覧です。
コメント