平均値フィルタによる原理や特徴、計算式についてまとめました。
平均値フィルタとは
平均値フィルタは、注目画素の近傍の画素値の平均値を計算し、その値を新しい画素値とすることから「平均値フィルタ」と呼ばれます。
画像処理では、画像を平滑化(ぼかし)してノイズを除去する空間フィルタとして使用されます。
■入力画像(左)、出力画像(右)


出力画像を見ると、画像にぼかしが効いていて平滑化されていることがわかります。
解説動画
本ページの内容は以下動画で解説しています。
平均値フィルタのカーネルと計算式
平滑化フィルタのカーネル
は次のようになります。
(1) ![Rendered by QuickLaTeX.com \begin{eqnarray*} K=\frac{1}{9} \left[ \begin{array}{ccc} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \\ \end{array} \right] \end{eqnarray*}](https://algorithm.joho.info/wp-content/ql-cache/quicklatex.com-8e3a2c8cf1499fc485b3209e037b6b30_l3.png)
見て分かる通り、「注目画素と8近傍の計9画素の平均値を求めています。
9つの画素値の合計値÷9=9つの画素値の平均値
この他にも、注目画素の画素値の重みを近傍8画素の2倍にする場合もあります。
※この方がより自然な平滑化となります。
(2) ![Rendered by QuickLaTeX.com \begin{eqnarray*} K=\frac{1}{10} \left[ \begin{array}{ccc} 1 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 1 \\ \end{array} \right] \end{eqnarray*}](https://algorithm.joho.info/wp-content/ql-cache/quicklatex.com-2892c8368e1d257c025e4f02705c84c9_l3.png)
【計算例】
入力画像
と平均値フィルタのカーネル
が次のように与えられたとき、出力画像
を求めよ。
(3) ![Rendered by QuickLaTeX.com \begin{eqnarray*} I= \left[ \begin{array}{ccccc} 0 & 0 & 0 & 0\\ 0& 90 & 90 & 0\\ 0& 0 & 90 & 0\\ 0 & 0 & 0 & 0\\ \end{array} \right], K= \left[ \begin{array}{ccccc} 1/9 & 1/9 & 1/9\\ 1/9 & 1/9 & 1/9\\ 1/9 & 1/9 & 1/9\\ \end{array} \right] \end{eqnarray*}](https://algorithm.joho.info/wp-content/ql-cache/quicklatex.com-aafc6397c4af5fe7911496efb43f01e5_l3.png)
出力画像の計算
入力画像
とカーネル
を畳み込み演算してやると
(4) 
となります。
今回、入力画像の端の画素値はそのまま出力画像の画素値にします。
また、0未満の画素値は0とします。
すると、出力画像
は次のようになります。
(5) ![Rendered by QuickLaTeX.com \begin{eqnarray*} I'= \left[ \begin{array}{ccccc} 0 & 0 & 0 & 0\\ 0& 30 & 30 & 0\\ 0& 30 & 30 & 0\\ 0 & 0 & 0 & 0\\ \end{array} \right] \end{eqnarray*}](https://algorithm.joho.info/wp-content/ql-cache/quicklatex.com-9b9cde2ad22cf3b31a517ea4ccf6e4c7_l3.png)
関連ページ
プログラミングによる実装例について下記事で解説しています。

【Python/OpenCV】平均値フィルタ(cv2.Blur)で画像のぼかし・平滑化
Python + OpenCVで平均値フィルタを「NumPy」「cv2.filter2D」「cv2.Blur」で実装し、画像をぼかし・平滑化する方法をソースコード付きで解説します。

【画像処理超入門】アルゴリズムの仕組みと実装方法を簡単に解説
画像処理超アルゴリズムの仕組みとプログラミングによる実装方法を簡単に解説します。

コメント