При выполнении некоторых задач в 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)


  1. NightBlade74
    11.05.2025 13:51

    Поздравляю! Вы изобрели Unsharp Mask!


    1. zvezdochiot Автор
      11.05.2025 13:51

      Да. Использовал именно его, как наиболее наглядный, известный и понятный пример. Других столь известных и узнаваемых примеров я не знаю.


      1. NightBlade74
        11.05.2025 13:51

        Ну, ок. Что делает нечеткая маска очень хорошо понятно довольно давно. Своеобразное название этот фильтр получил еще в доцифровую эпоху обработки фотографий, а сам эффект увеличения четкости краев использовался художниками ренессанса. Но вот остальные предлагаемы вами "реверсные" фильтры, для чего они вообще? Какое практическое применение? Вот второй пример, он что делает полезного? Чисто визуально я тут вижу пересвет по всей картинке, что, скорее всего, говорит о том, что алгоритм какой-то неправильный, это напрочь убило детали на шляпе и других светлых местах, а в тенях насыпало цветового шума. Боюсь представить, что произошло бы с более контрастным изображением.


        1. zvezdochiot Автор
          11.05.2025 13:51

          Реверс конкретно этого фильтра вряд ли будет иметь практическое применение. Всего лишь пример, с ярко выраженными последствиями.

          Практическое применение? GIMP: изменение размера изображения с соблюдением правил RIS.