Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pillowライブラリで画像にランクフィルターを適用する方法

この記事では、Pythonの画像処理ライブラリ「Pillow(PIL)」を使用して、ランクフィルターによる画像へのぼかし処理を行う方法を解説します。ランクフィルターは、カーネル内のピクセル値を順位に基づいて並べ替え、指定した順位の値を出力する非線形フィルターです。

PillowライブラリのImageFilterクラスには、RankFilter()関数が用意されており、これを利用することで簡単にランクフィルターを適用できます。この関数は「カーネルサイズ」と「ランク」の2つのパラメータを受け取ります。ランクの指定によって、以下のようなフィルターとして動作します。

  • ランク = 0:最小値フィルター(min filter)
  • ランク = size × size ÷ 2:中央値フィルター(median filter)
  • ランク = size × size − 1:最大値フィルター(max filter)

元画像

Pillowライブラリで画像にランクフィルターを適用する方法

アルゴリズム

ステップ1:PillowからImageとImageFilterをインポートします。
ステップ2:対象となる画像を開きます。
ステップ3:rankfilter()メソッドを呼び出し、サイズとランクを指定します。
ステップ4:処理結果を表示します。

サンプルコード

from PIL import Image, ImageFilter

im = Image.open('image_test.jpg')
im1 = im.filter(ImageFilter.RankFilter(7, 0))
im1.show()

上記のコードでは、7×7のカーネルサイズでランク0(最小値フィルター)を適用しています。そのため、画像内の明るい部分が暗くなり、全体的にぼかしがかかったような効果が得られます。

実行結果

Pillowライブラリで画像にランクフィルターを適用する方法


  1. OpenCVのmedianBlur()関数を使って画像をぼかす方法

    この記事では、OpenCVライブラリに用意されている medianBlur() 関数を使って、画像にぼかし(ブラー)処理を加える方法を解説します。メディアンブラー(中央値フィルタ)は、画像のエッジ(輪郭)を比較的きれいに保ちながら、ノイズを効果的に除去できるのが大きな特徴です。塩胡椒ノイズのような極端な明暗のノイズ除去に特に有効とされています。 元画像 アルゴリズム 手順1:cv2 をインポートする。 手順2:画像を読み込む。 手順3:cv2.medianBlur() 関数に画像とカーネルサイズを渡す。 手順4:処理後の画像を表示する。 サンプルコード import cv2 image =

  2. OpenCVのblur()関数を使って画像をぼかす方法をわかりやすく解説

    この記事では、OpenCVが提供するblur()関数を使用して、画像にぼかし(ブラー)処理をかける方法を解説します。blur()は画像処理の基本となるフィルタの一つで、ノイズ除去や画像の前処理など、さまざまな場面で活用されます。 処理の流れ(アルゴリズム) 画像をぼかすための手順は以下の通りです。 ステップ1:OpenCVをインポートする。 ステップ2:対象となる画像を読み込む。 ステップ3:カーネルサイズを設定する。 ステップ4:blur()関数を呼び出し、画像とカーネルサイズを引数として渡す。 ステップ5:結果を表示する。 元画像 今回使用するサンプル画像は以下の通りです。 サンプルコー