Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第3回】OpenCVを用いた画像の平滑化処理

はじめに

OpenCVとはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリで、画像処理・画像解析および機械学習等の機能を持つC/C++JavaPythonMATLAB用ライブラリとなっています。

Opencvには以下のような機能があります。

  • グレースケール化
  • 2値化
  • 輪郭の検出
  • 顔検出
  • ノイズ除去
  • テンプレートマッチング

本記事では、Opencvを用いた画像の平滑化処理について紹介します。具体的には、ブラーフィルター、メディアンフィルター、ガウシアンフィルターの手法について紹介します。

SAMURAI TERAKOYA

 

1. 本記事で使用する画像

本記事で使用する画像を読み込んで表示するコードを記載します。画像の読込にはcv2.imread()を用います。画像の表示にはcv2.imshow() を用います。cv2.waitkey()で表示する時間を指定することができ、cv2.waitkey(0)とすることでキーボードが押されるまで表示されます。cv2.destroyAllWindows() は現在までに作られた全てのウィンドウを閉じます。

さらに、今回はグレースケールにした画像をヒートマップで表示する場面もあるので、ここで元画像をグレースケールにしてヒートマップで示します。

 

2. ブラーフィルター(cv2.blur())

ブラーフィルターは平滑化処理の一つで、平滑化を行うと画像がぼやけます。ブラーフィルターではcv2.blur()を用い、第一引数にフィルターを掛けたい画像、第二引数にボックスサイズを指定します。

ここで計算方法を簡単に示します。わかりやすいようにグレースケールした画像とその画像をブラーフィルター処理後の画像の画素値を確認します。以下の場合3×3のボックスサイズとし、その9つの画素値の平均値をその中央のマスの値に置き換える処理になります。表示用のプログラムとその結果と計算内容を以下の図に示します。

 

以下の例では、5×5ピクセル、15×15ピクセル、25×25ピクセルのボックスフィルタを使用しています。例えば、5×5ピクセルではある1マスの値とその周りの24マスの値の平均値をとってある1マスの値に置き換えます。出力結果を見るとボックスの大きさが大きくなるほどぼやけが増しているのがわかると思います。

【5×5】

【15×15】

【25×25】

 

3. メディアンフィルター(cv2.medianBlur())

メディアンフィルターは平滑化処理の一つで、平滑化を行うと画像がぼやけます。メディアンフィルターではcv2.medianBlur()を用い、第一引数にフィルターを掛けたい画像、第二引数にボックスサイズを指定します。

ここで計算方法を簡単に示します。わかりやすいようにグレースケールした画像とその画像をブラーフィルター処理後の画像の画素値を確認します。以下の場合3×3のボックスサイズとし、その9つの画素値の中央値をその中央のマスの値に置き換える処理になります。表示用のプログラムとその結果と計算内容を以下の図に示します。



以下の例では、3×3ピクセル、5×5ピクセル、11×11ピクセルのある1マスとその周りのマスの中央値をとって、ある1マスの値に置き換えます。出力結果を見るとボックスの大きさが大きくなるほどぼやけが増しているのがわかると思います。

【3×3】

【5×5】

【11×11】

 

4. ガウシアンフィルター(cv2.GaussianBlur())

ガウシアンフィルターは平滑化処理の一つで、平滑化を行うと画像がぼやけます。ガウシアンフィルターではcv2.GaussianBlur()を用い、第一引数にフィルターを掛けたい画像、第二引数にボックスサイズ、第三引数にガウス関数のσを指定します。

ガウス関数の分布を調べていただくとわかるように、ボックスプロット内にて中央になるほど重み付けが大きく、外側ほど重み付けが小さくなるようにして計算するフィルタです。

以下の例では、3×3ピクセル、5×5ピクセル、11×11ピクセルに対してガウシアンフィルターをかけます。出力結果を見るとボックスの大きさが大きくなるほどぼやけが増しているのがわかると思います。

【3×3】

【5×5】

【11×11】

 

オススメ書籍

Pythonで始めるOpenCV4プログラミング

実践OpenCV4 for Python 画像映像情報処理と機械学習

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、Opencvを用いた画像の平滑化処理であるブラーフィルター、メディアンフィルター、ガウシアンフィルターの手法について紹介しました。