【Python/OpenCV】平均値フィルタで画像を平滑化する方法(cv2.Blur)

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基礎」の記事一覧です。
この記事を書いた人
西住技研

Python使用歴10年以上。研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
OpenCV

コメント