ImageFilter 模块

The 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]

三维颜色查找表。

使用通道的值作为三维查找表中的坐标并插值最近的元素来转换 3 通道像素。

此方法允许你通过使用预先计算的缩减表以恒定时间应用几乎任何颜色变换。

在版本 5.2.0 中添加。

参数:
  • size – 表的大小。一个整数或 (int, int, int) 的元组。任何维度上的最小大小为 2,最大大小为 65。

  • table – 平面查找表。一个包含 channels * size**3 个浮点元素的列表,或者一个包含 size**3 个带有浮点数的通道大小元组的列表。通道首先更改,然后是第一个维度,然后是第二个,然后是第三个。值 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 – 具有三个参数的函数,对应于三个颜色通道。将使用 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 – 一个函数,它接受旧的查找表值并返回一组新的值。函数应接受的参数个数为 self.channels3 + self.channels(如果设置了 with_normals 标志)。如果设置了 channels,则应返回一个包含 self.channelschannels 个元素的元组。

  • with_normals – 如果为真,callback 将使用颜色立方体中的坐标作为前三个参数进行调用。否则,callback 将仅使用实际颜色值进行调用。

  • channels – 结果查找表中的通道数。

  • target_mode – 传递给结果查找表的构造函数。

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

通过将每个像素设置为正方形框内像素的平均值来模糊图像,该正方形框在每个方向上延伸 radius 像素。支持任意大小的浮点数半径。使用优化的实现,该实现相对于图像大小以线性时间运行,无论半径值如何。

参数:

radius

一个方向上的方框大小。可以是两个数字的序列(分别对应于 x 和 y),也可以是单个数字(表示 x 和 y 都使用该数字)。

半径为 0 不会模糊,返回一个相同的图像。半径为 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),也可以是单个数字(表示 x 和 y 都使用该数字)。

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

锐化遮罩滤镜。

有关参数的解释,请参阅维基百科中关于 数字锐化遮罩 的条目。

参数:
  • 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]

创建一个模式过滤器。在具有给定大小的框中选择最频繁的像素值。仅出现一次或两次的像素值将被忽略;如果没有任何像素值出现超过两次,则会保留原始像素值。

参数:

size – 内核大小,以像素为单位。

class PIL.ImageFilter.Filter[source]

用于过滤图像的抽象 mixin(用于 filter())。

实现者必须提供以下方法

filter(self, image)[source]

将过滤器应用于单波段图像或图像的单个波段。

返回值:

图像的已过滤副本。

class PIL.ImageFilter.MultibandFilter[source]

用于过滤多波段图像的抽象 mixin(用于 filter())。

实现者必须提供以下方法

filter(self, image)

将过滤器应用于多波段图像。

返回值:

图像的已过滤副本。