В практике обработки изображений часто встают задачи различных выравниваний цветовых компонент этих самых изображений. И в первую очередь это касается яркостной составляющей изображений. К этим задачам относится такой фильтр как Retinex. Этот фильтр хорошо выравнивает яркостную составляющую изображения, но беспощадно искажает соотношение цветовых составляющих - картинка становится "кислотной".
Для нужд STEX (ScanTailor-Experimental) была поставлена задача разработки фильтра, производящего выравнивание яркостной составляющей, но щадящей цвет. Это необходимо для вытягивания слабовыраженных контуров, не поддающихся отрисовке ни одним из имеющихся в STEX порогов без доп. префильтрации с сохранением гармоничности цветных иллюстраций.
Данный фильтр разрабатывался в GIMP и был реализован в STEX для яркостной компоненты, а позднее в виде CLI утилиты stbibalance на базе STB в полноцветовом исполнении.
Фильтр "Balance".
Действие фильтра определяется наличием двух слоёв (двух значений) с одинарным и двойным радиусом размытия. Разница между этими двумя слоями применяется не напрямую, а через систему наложений "Перекрытие" ("Overlay"). Наложение "Перекрытие" можно выразить следующей формулой:
где O - результат наложения, I - исходный слой, F - накладываемый слой.
Данное наложение используется в фильтре четыре раза.
Проиллюстрирую работу фильтра поэтапно на примере изображения "Лена".

Копирую исходный слой дважды. На первой копии применяю "Гауссово размывание" одиночного радиуса (25).

На второй копии применяю "Гауссово размывание" двойного радиуса (50).

Копирую эти два слоя, чтобы получились две пары этих слов, но с разным порядком следования. В каждой паре исходный (нижний) слой "Инвертирую нелинейно"

и накладываю второй слой пары режимом "Перекрытие".


Накладываю в режиме "Перекрытие" полученные два слоя последовательно на исходный слой. Это и будет результатом действия фильтра "Balance".

Сравнение.
Для сравнения посмотрим, как проявит себя порог на исходном и отфильтрованном изображении. Применим "Порог" к исходному слою с автоматическим определением значения порога (кнопка "Авто").

Таким же образом применим "Порог" к фильтрованному слою.

Эпилог.
Для удобства применения всех этих нудных операций, я сделал SCM-скрипт: Gimp Balance filter Plugin. Добавляется пункт в меню "Цвет" -> "Авто" -> "Balance".