ImageFilter モジュール

ImageFilter モジュールには、Image.filter() メソッドで使用できる、定義済みのフィルターのセットが含まれています。

例:画像のフィルタリング

from PIL import ImageFilter

im1 = im.filter(ImageFilter.BLUR)

im2 = im.filter(ImageFilter.MinFilter(3))
im3 = im.filter(ImageFilter.MinFilter)  # same as MinFilter(3)

フィルター

Pillow は、以下の定義済み画像強調フィルターを提供します。

  • BLUR

  • CONTOUR

  • DETAIL

  • EDGE_ENHANCE

  • EDGE_ENHANCE_MORE

  • EMBOSS

  • FIND_EDGES

  • SHARPEN

  • SMOOTH

  • SMOOTH_MORE

class PIL.ImageFilter.Color3DLUT(size: int | tuple[int, int, int], table: Sequence[float] | Sequence[Sequence[int]] | NumpyArray, channels: int = 3, target_mode: str | None = None, **kwargs: bool)[source]

三次元カラールックアップテーブル。

チャンネルの値を3Dルックアップテーブル内の座標として使用し、最も近い要素を補間することにより、3チャンネルピクセルを変換します。

このメソッドを使用すると、事前に計算された間引きテーブルを使用することで、ほぼすべてのカラー変換を一定時間で適用できます。

バージョン 5.2.0 で追加されました。

パラメータ:
  • size – テーブルのサイズ。1 つの int または (int, int, int) のタプル。任意の次元の最小サイズは 2、最大サイズは 65 です。

  • table – 平坦なルックアップテーブル。 channels * size**3 個の float 要素のリスト、または size**3 個の float を含む channels サイズのタプルのリスト。チャンネルは最初に変更され、次に第一次元、次に第二次元、次に第三次元が変更されます。値 0.0 は出力の最小値に対応し、1.0 は最大値に対応します。

  • channels – テーブルのチャンネル数。3 または 4 にできます。デフォルトは 3 です。

  • target_mode – 結果画像のモード。 channels 以上のチャンネルが必要です。デフォルトは None で、モードは変更されません。

classmethod generate(size: int | tuple[int, int, int], callback: Callable[[float, float, float], tuple[float, ...]], channels: int = 3, target_mode: str | None = None) Color3DLUT[source]

指定されたコールバックを使用して新しいLUTを生成します。

パラメータ:
  • size – テーブルのサイズ。コンストラクタに渡されます。

  • callback – 3つのパラメータ(3つのカラーチャネルに対応)を持つ関数。0.0~1.0の値でsize**3回呼び出され、channels個の要素を持つタプルを返す必要があります。

  • channels – コールバックが返すチャネル数。

  • target_mode – 生成されるルックアップテーブルのコンストラクタに渡されます。

transform(callback: Callable[[...], tuple[float, ...]], with_normals: bool = False, channels: int | None = None, target_mode: str | None = None) Color3DLUT[source]

指定されたコールバックを使用してテーブルの値を変換し、変更された値を持つ新しいLUTを返します。

パラメータ:
  • callback – 以前のルックアップテーブルの値を受け取り、新しい値のセットを返す関数。with_normalsフラグが設定されている場合はself.channels個、そうでない場合は3 + self.channels個の引数を取る必要があります。channelsが設定されている場合はself.channels個、設定されていない場合はself.channels個の要素を持つタプルを返す必要があります。

  • with_normals – trueの場合、callbackは、最初の3つの引数としてカラーキューブ内の座標とともに呼び出されます。それ以外の場合は、callbackは実際のカラー値のみで呼び出されます。

  • channels – 生成されるルックアップテーブルのチャネル数。

  • target_mode – 生成されるルックアップテーブルのコンストラクタに渡されます。

class PIL.ImageFilter.BoxBlur(radius: float | Sequence[float])[source]

各ピクセルを、各方向にradiusピクセル延びる正方形のボックス内のピクセルの平均値に設定することで、画像をぼかします。任意のサイズの浮動小数点数のradiusをサポートします。任意のradius値に対して画像サイズに対して線形時間で実行される最適化された実装を使用します。

パラメータ:

radius

方向のボックスのサイズ。xとyの2つの数値のシーケンス、または両方に1つの数値。

radiusが0の場合、ぼかしは行われず、同一の画像が返されます。radiusが1の場合、各方向に1ピクセル、つまり合計9ピクセルが使用されます。

class PIL.ImageFilter.GaussianBlur(radius: float | Sequence[float] = 2)[source]

ガウスカーネルを近似する一連の拡張ボックスフィルタを使用して画像をぼかします。精度の詳細については、<https://www.mia.uni-saarland.de/Publications/gwosdek-ssvm11.pdf>を参照してください。

パラメータ:

radius – ガウスカーネルの標準偏差。xとyの2つの数値のシーケンス、または両方に1つの数値。

class PIL.ImageFilter.UnsharpMask(radius: float = 2, percent: int = 150, threshold: int = 3)[source]

アンシャープマスクフィルタ。

パラメータの説明については、デジタルアンシャープマスキングに関するWikipediaのエントリを参照してください。

パラメータ:
  • radius – ブラー半径

  • percent – アンシャープマスクの強度(パーセント)

  • threshold – しきい値は、シャープ化される最小輝度変化を制御します。

class PIL.ImageFilter.Kernel(size: tuple[int, int], kernel: Sequence[float], scale: float | None = None, offset: float = 0)[source]

畳み込みカーネルを作成します。これは、3x3と5x5の整数および浮動小数点カーネルのみをサポートしています。

カーネルは、「L」および「RGB」画像にのみ適用できます。

パラメータ:
  • size – カーネルサイズ(幅、高さ)。(3,3)または(5,5)でなければなりません。

  • kernel – カーネルの重みを格納するシーケンス。カーネルは、画像に適用される前に垂直方向に反転されます。

  • scale – スケールファクター。指定されている場合、各ピクセルの結果は、この値で除算されます。デフォルトは、カーネルの重みの合計です。

  • offset – オフセット。指定されている場合、スケールファクターで除算した後に、この値が結果に追加されます。

class PIL.ImageFilter.RankFilter(size: int, rank: int)[source]

ランクフィルタを作成します。ランクフィルタは、指定されたサイズのウィンドウ内のすべてのピクセルをソートし、rank番目の値を返します。

パラメータ:
  • size – ピクセル単位のカーネルサイズ。

  • rank – 選択するピクセル値。最小値フィルタには0、中央値フィルタにはsize * size / 2、最大値フィルタにはsize * size - 1などを使用します。

class PIL.ImageFilter.MedianFilter(size: int = 3)[source]

中央値フィルタを作成します。指定されたサイズのウィンドウ内で中央値のピクセル値を選択します。

パラメータ:

size – ピクセル単位のカーネルサイズ。

class PIL.ImageFilter.MinFilter(size: int = 3)[source]

最小値フィルタを作成します。指定されたサイズのウィンドウ内で最も低いピクセル値を選択します。

パラメータ:

size – ピクセル単位のカーネルサイズ。

class PIL.ImageFilter.MaxFilter(size: int = 3)[source]

最大値フィルタを作成します。指定されたサイズのウィンドウ内で最も高いピクセル値を選択します。

パラメータ:

size – ピクセル単位のカーネルサイズ。

class PIL.ImageFilter.ModeFilter(size: int = 3)[source]

モードフィルタを作成します。指定されたサイズのボックス内で最も頻繁に発生するピクセル値を選択します。1回または2回しか発生しないピクセル値は無視されます。ピクセル値が3回以上発生しない場合は、元のピクセル値が保持されます。

パラメータ:

size – ピクセル単位のカーネルサイズ。

class PIL.ImageFilter.Filter[source]

画像のフィルタリングに使用される抽象的なmixin(filter()と共に使用)。

実装者は、次のメソッドを提供する必要があります。

filter(self, image)[source]

単一バンド画像、または画像の単一バンドにフィルタを適用します。

戻り値:

フィルタリングされた画像のコピー。

class PIL.ImageFilter.MultibandFilter[source]

マルチバンド画像のフィルタリングに使用される抽象的なmixin(filter()と共に使用)。

実装者は、次のメソッドを提供する必要があります。

filter(self, image)

マルチバンド画像にフィルタを適用します。

戻り値:

フィルタリングされた画像のコピー。