Как стать автором
Обновить

GIMP: реверс фильтров

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров723

При выполнении некоторых задач в GIMP проще обратить действие некоторого фильтра, чем искать фильтр с противоположным воздействием. Непосредственного механизма обращения нет, но косвенный есть. Это производится определённым наложением слоёв. При этом возникает условие, при соблюдении которого не происходит усечение (клиппинг) цветовых значений и операция имеет характер обратимой.

Операция обращения (реверс) действия фильтра производится с помощью наложения "Grain Extract" ("Извлечения зерна"). Это наложение работает как diff/patch двух слоёв, при условии, что эти слои отличаются не более чем на половину цветового диапазона (256/2 = 128 для 8-ми битных изображений).

Наложение "Извлечение зерна" можно выразить формулой:

O = I - F + 128

где O - результат наложения, I - исходный слой, F - накладываемый слой.

В данной статье будет рассмотрено применение "Извлечение зерна" только для обращения действия фильтров. Это будет определять порядок наложения слоёв. В зависимости от порядка наложения diff/patch слоёв будет инвертироваться.

Для примеров в качестве исходного возьмём изображение "Лена".

Исходное изображение "Лена"
Исходное изображение "Лена"

Пример 1: Обращение размывания.

Создадим копию исходного слоя и применим к ней "Фильтры" -> "Размытие" -> "Гауссово размывание" с радиусами 25 и 25.

"Гауссово размывание" с радиусами 25x25
"Гауссово размывание" с радиусами 25x25

Применим к ещё одной копии исходного слоя режим наложения "Извлечение зерна" и наложим этот слой на размытый.

"Извлечение зерна" исходного и размытого слоёв
"Извлечение зерна" исходного и размытого слоёв

Применим к данной "разнице" режим наложения "Извлечение зерна" и наложим на ещё одну копию исходного слоя.

Слой с инвертированным размытием.
Слой с инвертированным размытием.

Итого для проведения операции обращения понадобилось 1 копия исходного слоя для фильтрации и 2 копии исходного слоя для наложений.

Пример 2: Обращение оператора Собеля.

Создадим копию исходного слоя и применим к ней "Фильтры" -> "Выделение края" -> "Оператор Собеля...".

"Оператор Собеля..."
"Оператор Собеля..."

Применим к ещё одной копии исходного слоя режим наложения "Извлечение зерна" и наложим этот слой на фильтрованный.

"Извлечение зерна" исходного и фильтрованного слоёв
"Извлечение зерна" исходного и фильтрованного слоёв

Применим к данной "разнице" режим наложения "Извлечение зерна" и наложим на ещё одну копию исходного слоя.

Слой с инвертированным фильтром.
Слой с инвертированным фильтром.

Этот метод хорошо работает для схожих изображений, чья разность не выходит за половину шкалы цветового диапазона. Для пикселей, нарушающих данное условие, будут наблюдаться усечения (станут либо слишком яркими, либо слишком тёмными).

Методика вполне рабочая, но очень не хватает режима наложения "Reverse" ("Обращение"), которое производило бы данную операцию более простым и без лишних усечений способом:

O = I - F + I

где O - результат наложения, I - исходный слой, F - накладываемый слой.

Теги:
Хабы:
+4
Комментарии4

Публикации

Ближайшие события