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

Комментарии (10)


  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.


          1. NightBlade74
            11.05.2025 13:51

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

            Во-вторых, вы "компенсированное" изображение увеличиваете, что, собственно, опять вносит дефект (не считая предыдущих операций, которые тоже не бездефектные - округление, будь оно не ладно!). Понятно, что финальное изображение с "компенсацией" будет отличаться от изображения с простой интерполяцией, но насколько? С чем их сравнивать? Ну, если вообще визуально разница видна, а если не видна, то нафиг оно надо? Можно предложить здесь взять исходное изображение 3500х3500, уменьшить его, а потом уже апскейлить уменьшенное и смотреть, на разницу между двумя способами апскейла и исходным большим изображением, тогда хоть что-то понятно будет.

            Кроме того, когда начинаете "массовые игры" с пикселями, то лучше переводить изображение в повышенное разрешение по диапазону, хотя бы до 16 бит на канал.

            Но что-то мне подсказывает, что все эти пляски с бубном совершенно бессмысленны по сравнению с современными методами апскейла с использованием AI, да и раньше были интеллектуальные алгоритмы, борющиеся с размытием и "лестницами" на четких границах при увеличении разрешения.


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

              1. Разница видна визуально.

              2. Статьи про GIMP, а не про что то другое.


              1. NightBlade74
                11.05.2025 13:51

                1. Где она видна? Что с чем сравнить и что увидеть?

                2. В целом не понял смысл вашего высказывания. Но GIMP здесь только инструмент, алгоритму все равно где работать. Все эти операции можно и в Photoshop проделать.


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

                  1. Сравнивать в GIMP. Отлючаешь/включаешь верхний слой.

                  2. GIMP здесь именно тот инструмент, для которого статьи и писались. А не всего лишь инструмент.


                  1. NightBlade74
                    11.05.2025 13:51

                    1. Как сравнивать изображения, я хорошо знаю. Надо ЧТО сравнивать. Изображений для сравнения я не нашел, по вашим ссылкам их нет.

                    2. Ну хорошо, пусть статья будет исключительно про GIMP, хотя все эти подходы универсальны и работать будут где угодно, были бы в редакторе подходящие операции. Но я все равно не понимаю, почему вы написали тогда "Статьи про GIMP, а не про что то другое", это к чему было? Я не упоминал тогда другие программы.


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

                      1. Правильно. Потому и сказано, что статьи для пользователей GIMP. Без него вы ничего и не найдёте.

                      2. К тому, что рассматривается именно GIMP и его возможности, а не что то другое. Про другое другие статьи, но не эти.