Как работают улучшающие фильтры PIL ImageFilter? - PullRequest
1 голос
/ 27 июля 2010

Где я могу найти информацию о том, какие алгоритмы используются функциями PIL ImageFilter? Например, как работает edge_enhance? Я пытаюсь реализовать разницу в фильтре Гаусса, но если PIL имеет фильтр, который работает аналогично, я буду его использовать.

1 Ответ

2 голосов
/ 21 апреля 2011

Все методы ImageFilter используют ядра, свернутые с изображением, для создания эффектов фильтра. Здесь - хороший пример для свертки ядра. Если вы загрузите модуль ImageFilter, вы сможете выяснить ядра, используемые для каждого вида операций, взглянув на

>>> help(ImageFilter)

Например, для EDGE_ENHANCE_MORE справка дает

filterargs = ((3, 3), 1, 0, (-1, -1, -1, -1, 9, -1, -1, -1, -1))

Это означает, что ядро ​​EDGE_ENHANCE_MORE имеет размер 3x3, коэффициент масштабирования 1, смещение 0 и состоит из -1 значений, за исключением значения центра, равного 9. Из того, что я прочитал, кажется, что вы можете создать пользовательский фильтр (включая разницу ядра Гаусса), предоставляя соответствующие аргументы для объекта ядра:

Kernel(size, kernel, scale=None, offset=0)
...