GIMP: пороговые карты и их применение
В GIMP: префильтрация перед порогом было рассказано, как используется префильтрация перед порогом и насколько сильно она оказывает влияние на результат порога. Также было указано, что возможно воспроизведение пороговых карт (TM) локальных порогов с помощью стандартных фильтров GIMP. И также было указано, что пороговые карты можно использовать для нормировки изображения в виде префильтра для более гибкого использования этих пороговых карт.
В данной статье будет показано воспроизведение (неточное) пороговой карты локального порога Niblack и использование её для нормировки исходного изображения.
Пороговая карта локального порога Niblack выражается как разность локального среднего и доли локального стандартного отклонения:
где:
mean(I, r) - локальное среднее изображения I в радиусе r
k - коэффициент доли стандартного отклонения, обычно равный 0.2
stdev(I, r) - стандартное отклонение изображения I в радиусе r
Так как точное воспроизведение данной пороговой карты - это та ещё морока, то воспроизведём не в точности её, а некую похожую пороговую карту. Это не значит, что точное воспроизведение невозможно, просто в этом нет необходимости в рамках данной статьи:
где:
M - размытая версия изображения I
D - размытая разность между изображением I и "средним" M
В качестве примера будет использовано всё тоже изображение "Лена":
Опять (для сравнения) применим порог без манипуляций с автоматическим определением значения порога (кнопка «Авто»):
Пороговая карта (TM)
В качестве компоненты M пороговой карты TM используем фильтр "Размытие оптики". Создадим копию слоя с исходным изображением и применим к новому слою данный фильтр с радиусом 25:
Используем режим наложение "Разница" для получения разности между размытым изображением и исходным:
После чего применим к данной разности всё тот же фильтр "Размытие оптики" с тем же радиусом:
Объединим две компоненты пороговой карты (M и D) с помощью наложения "Вычитание":
Применение пороговой карты (TM) в GIMP
Для начала применим пороговую карту стандартным образом. Используем режим наложения слоя "Вычитание" и вычтем пороговую карту из исходного изображения:
После этого применим к разности порог со значением 1:
Как видим полученная пороговая карта очень похожа по характеру на пороговую карту Niblack. Не в точности, но для данного примера достаточно.
Такое применение пороговой карты с одной стороны просто, а с другой очень неудобно для регулирования результата. Чтобы иметь возможность регулировать результат порога, произведём нормализацию исходного изображения по пороговой карте. Создадим ещё одну копию слоя, установим фоновый цвет в (127, 127, 127) и удалим всё с нового слоя, проверив, что у слоя отсутствует альфа-канал:
Применим режим наложения слоя "Умножение" и наложим его на копию исходного слоя. После этого применим к пороговой карте режим наложения "Делить" и наложим её на результат умножения. Получим нормированное по пороговой карте изображение:
Ежели мы применим порог со значением 128 к нормированному изображению, то получим результат такой же (с точностью до округления: "умножение" и "деление" дают округления значений) результат, что и при простом применении пороговой карты:
Но целью использования пороговой карты для нормировки было удобство регулирования результата. Так оно и есть. Микшируем нормированное изображение с исходным, установив прозрачность нормированного слоя 75.0%.
Теперь применим порог к микшированному изображению с автоматическим определением значения порога по алгоритму Оцу (кнопка "Авто"):
Как видно из результата, использование пороговой карты для нормировки значительно расширяет возможности регулирования этого самого результата.