Сообщить об ошибке.

Встроенные фильтры передискретизации модуля Pillow в Python

В материале рассматриваются встроенные фильтры передискретизации подмодуля Image библиотеки Pillow, которые применяются для геометрических операций. Эти фильтры сопоставляют несколько входных пикселей с одним выходным пикселем.

Содержание:


Примеры обращения к фильтрам:

>>> from PIL import Image
>>> Image.NEAREST
# 0
>>> Image.BILINEAR
# 2

>>> Image.Resampling
# <enum 'Resampling'>
>>> Image.Resampling.NEAREST
# <Resampling.NEAREST: 0>
>>> Image.Resampling(0)
# <Resampling.NEAREST: 0>
>>> Image.Resampling.BILINEAR
<Resampling.BILINEAR: 2>

Image.NEAREST:

Фильтр Image.NEAREST выбирает один ближайший пиксель из входного изображения. Игнорирует все остальные входные пиксели.

Image.BOX:

Фильтр Image.BOX - применяется для масштабирования, эквивалентен Image.NEAREST. Каждый пиксель исходного изображения вносит вклад в один пиксель целевого изображения с одинаковыми весами.

Этот фильтр можно использовать только с методами Image.resize() и Image.thumbnail().

Image.BILINEAR:

Фильтр Image.BILINEAR применяется для изменения размера. Вычисляет значение выходного пикселя, используя линейную интерполяцию для всех пикселей, которые могут внести вклад в выходное значение.

Для других преобразований используется линейная интерполяция по среде 2x2 во входном изображении.

Image.HAMMING:

Фильтр Image.HAMMING дает более четкое изображение, чем Image.BILINEAR, не имеет дислокаций на локальном уровне, как у Image.BOX.

Этот фильтр можно использовать только с методами Image.resize() и Image.thumbnail().

Image.BICUBIC:

Свойство Image.BICUBIC применяется для изменения размера. Вычисляет значение выходного пикселя, используя кубическую интерполяцию для всех пикселей, которые могут внести вклад в выходное значение.

Для других преобразований используется кубическая интерполяция по среде 4x4 во входном изображении.

Image.LANCZOS:

Свойство Image.LANCZOS вычисляет значение выходного пикселя, используя высококачественный фильтр Ланцоша (усеченный sinc) для всех пикселей, которые могут внести вклад в выходное значение.

Этот фильтр можно использовать только с методами Image.resize() и Image.thumbnail().

Таблица сравнения фильтров:

FilterКачество уменьшенияКачество увеличенияПроизводительность
NEAREST5
BOX14
BILINEAR113
HAMMING23
BICUBIC332
LANCZOS441

Названия некоторых устаревших фильтров:

  • PIL.Image.NONE = PIL.Image.Resampling.NEAREST,
  • PIL.Image.LINEAR = PIL.Image.Resampling.BILINEAR,
  • PIL.Image.CUBIC = PIL.Image.Resampling.BICUBIC,
  • PIL.Image.ANTIALIAS = PIL.Image.Resampling.LANCZOS.