В 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%.
Теперь применим порог к микшированному изображению с автоматическим определением значения порога по алгоритму Оцу (кнопка «Авто»):
Как видно из результата, использование пороговой карты для нормировки значительно расширяет возможности регулирования этого самого результата.
ссылка на оригинал статьи https://habr.com/ru/articles/907974/
Добавить комментарий