[seaborn-image] 5. filterplotで各種フィルタをかけた画像を表示

matplotlib

はじめに

Seaborn-imageはmatplotlibベースの画像可視化ライブラリで、画像データを簡潔なコードで明瞭に表示できます。このライブラリは、データ可視化ライブラリのseabornの2次元データ版のような位置づけとなっています。この記事では、Seaborn-imageの機能の一つである「filterplot」について解説します。filterplotを使うことで、画像に様々なフィルタを適用し、その効果を視覚的に確認することができます。

seaborn-image: image data visualization — seaborn-image documentation

コード&解説

インストール

condaの方は

conda install -c conda-forge seaborn-image

pipの方は

pip install -U seaborn-image

でインストールできます。

モジュールのインポート

seaborn_image は isnsとして読み込みます。

バージョン

全体の設定

isns.set_imageで、デフォルトのカラーマップをcmap=”bone”とし、画像の原点の設定をupperにします。

適用可能なフィルタ

かけることのできるフィルタには以下のものがあります。

filterplotで利用できる代表的なフィルタには以下のようなものがあります:

エッジ検出フィルタ

Sobel、Prewitt、Laplaceなどのフィルタは、画像内のエッジ(輪郭)を強調するために使用されます。これらは物体の境界を検出する際に非常に有効です。

ぼかしフィルタ

ガウシアンフィルタやメディアンフィルタは、画像のノイズを除去したり、細部を滑らかにしたりするために使用されます。特にガウシアンフィルタは、正規分布に基づいた重み付けで周辺ピクセルの平均を取るため、自然なぼかし効果が得られます。

シャープニングフィルタ

アンシャープマスクなどのシャープニングフィルタは、画像の細部をより鮮明にするために使用されます。これらは医療画像や天体写真の分析などで特に重要です。

データの読み込み

サボテンのすみれ丸の画像を読み込みます。以下の画像を使用し、rgb2grayでグレースケールに変換しています。

gaussianフィルタ

filterplotでfilt=’gaussian’,sigma=5と指定することで、sigma値5のガウシアンフィルタをかけた画像を表示できます。

ndimageの関数を直接、例えば

filt=ndi.gaussian_filterのように指定することでも、フィルタを適用した画像を表示できます。

sobelフィルタ

[scikit-image] 90. sobelフィルタで画像の各画素における勾配を求める
scikit-imageのsobelフィルタを使って画像の勾配を計算する方法を解説。sobel、sobel_h、sobel_v関数の使い方と実装例を紹介し、エッジ検出における勾配の重要性と応用例について詳しく説明します。

medianフィルタ

[SciPy] 3. ndimageによる画像処理
SciPyのndimageモジュールを使った画像処理の基本と応用を解説。フィルタリング、形態学的処理、オブジェクト測定、幾何学的変換などの機能と実践的な使用例を通じて、多次元配列データの処理方法を詳しく紹介しています。

maxフィルタ

[scikit-image] 108. マキシマムフィルタによる高輝度部分の強調(skiamge.filters.rank.maximum)
scikit-image のマキシマムフィルタを用いて画像の高輝度部分を強調する方法を解説。フィルタの基本原理から実装例、パラメータ調整のコツまで、画像処理初心者にもわかりやすく説明しています。

DoGフィルタ

[ipywidgets] 34. バンドパスフィルタ(skimage.filters.difference_of_gaussians)のsigmaをFloatSliderで調整して2Dフーリエ変換
scikit-imageのdifference_of_gaussiansによるバンドパスフィルタとipywidgetsのFloatSliderを組み合わせて、画像処理とフーリエ変換を対話的に操作する方法を解説。Jupyter環境での画像処理のパラメータ調整を視覚的に行う実践的なチュートリアル。

ガウス微分フィルタ

[SciPy] 24. ガウス微分フィルタによるエッジ検出(ndimage.gaussian_gradient_magnitude)
SciPyのndimage.gaussian_gradient_magnitude関数を用いた画像エッジ検出の方法を解説。ガウス微分フィルタの適用により、画像内の輝度変化が大きい領域を強調し、物体の境界を効果的に検出する技術について詳述します。

gaussian_laplaceフィルタ

[SciPy] 25. LoGフィルタによるエッジ検出(ndimage. gaussian_laplace)
SciPyのndimage.gaussian_laplaceを使用したLoGフィルタによるエッジ検出の実装方法を解説。画像処理においてノイズに強く、輝度変化を効果的に検出する手法の詳細とコード例を紹介します。

laplaceフィルタ

[SciPy] 26. ラプラシアンフィルタによるエッジ検出(ndimage.laplace)
SciPyのndimage.laplace関数を使用したラプラシアンフィルタによる画像エッジ検出の方法を解説。実装コードと共に画像処理の基本テクニックを紹介し、エッジ検出の仕組みと応用例について学べる内容です。

minimumフィルタ

[SciPy] 27. ミニマムフィルタによる低輝度部分の強調(ndimage.minimum_filter)
SciPyのndimage.minimum_filterを使った画像処理技術について解説。低輝度部分を強調し、高輝度部分を抑制するフィルタの基本的な使い方から応用例まで詳しく紹介。

percentileフィルタ

[SciPy] 28. パーセンタイルフィルタによる画像の平滑化(ndimage.percentile_filter)
SciPyのndimage.percentile_filterを使った画像平滑化技術について解説。ノイズ除去や特徴抽出に役立つパーセンタイルフィルタの使い方、パラメータ設定、実装例を含む画像処理のための実践的ガイド。

prewittフィルタ

[scikit-image] 91. 各種エッジフィルタの回転不変性の比較
scikit-imageライブラリのエッジ検出フィルタ(sobel、prewitt、farid、scharr)の回転不変性を比較分析。回転不変性はfarid、scharr、sobel、prewittの順に高く、各フィルタの適用結果画像を表示しています。

rankフィルタ

[scikit-image] 35. 平均化フィルタによる画像の平滑化(skimage.rank mean, mean_percentile, mean_percentile)
ここでは、skimage rank mean, mean_percentile, mean_percentileにより画像に平均化フィルタを適用した例について説明する。

uniformフィルタ

uniformフィルタは、平均値フィルタ(meanフィルタ)である。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

Seaborn-imageのfilterplot機能は、画像処理における様々なフィルタの効果を視覚的に理解するための強力なツールです。シンプルなコードで複雑な画像処理の効果を比較できるため、初心者から専門家まで幅広いユーザーにとって有用です。画像データを扱う際には、このライブラリを活用して効率的な分析と可視化を行いましょう。

参考

seaborn_image.filterplot — seaborn-image documentation

コメント