Слои

Познакомимся со слоями — мощным инструментом, который существует во очень многих графических редакторах, в том числе и в GIMP. Слои в GIMP можно рассматривать как стопку листов сквозь которые смотрят зритель. Некоторые листы прозрачны, некоторые непрозрачны и скрывают все, что находится под ними, некоторые обладают странными физическими свойствами, меняя вид расположенных ниже изображений, но вместе они создают нужный нам эффект. Можно просто создать прозрачный слой поверх картинки и рисовать по нему, не затрагивая оригинальное изображение, что позволит легко отменить или модифицировать изменения.

Режимы смешивания слоев

Как уже упоминалось выше слои могут обладать некоторыми свойствами, от которых зависит видимость ниже лежащих слоев. Чаще всего это математические преобразования значений цветов пикселей на слоях. Давайте рассмотрим какие вообще возможны способы смешивания. Для простоты договоримся о следующем: у нас всего два слоя, нижний будем называть «Изображение», верхний — «Маска». Значения яркости пикселей нижнего слоя будем обозначать I, а верхнего — M. Значения яркостей пикселей результирующего изображения обозначим как E.

Если не сказано иного, то значения E, I и М лежат в пределах от 0 до 255. Когда в результате преобразований у нас получается значение большее 255, то оно заменяется на 255, если меньше 0 — заменяется на 0.

Нормальный (Normal)

Самый простой способ смешивания. Берутся значения пикселей с маски так, как они есть.

<latex> E = M </latex>

Растворение (Dissolve)

«Растворяет» маску в изображении выбирая случайные точки с обоих слоев где прозрачнее маска, берутся пиксели с изображения и наоборот.

Умножение (Multiply)

Перемножает значение яркостей слоев и делит их на 255, т.е.

<latex>E=\frac{I*M}{255}</latex>

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

Деление (Divide)

Умножает значения пиекселей изображения на 256 и делит на значения пикселей маски плюс единица (чтобы избежать деления на нуль)

<latex>E=\frac{I*256}{M+1}</latex>

Экран (Screen)

Инвертирует значения пикселей слоев, перемножает их между собой, делит на 255 и опять инвертирует. Изображение становится несколько светлее, менее контрастным. Фактически этот режим противоположен Умножению.

<latex>E=255-\frac{(255-I)*(255-M)}{255}</latex>

Перекрытие (Overlay)

Комбинирует режимы смешивания Умножение и Экран. Яркие части становятся ярче, а темные темнее.

<latex>E=\frac{I*(I+2M*(255-I)}{255}</latex>

В текущих версиях GIMP (до 2.6.8 включительно) этот режим реализован с ошибкой и работает так же как режим Рассеянный свет. В готовящейся к выходу версии 2.8 эта ошибка исправлена.

Осветление (Dodge)

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

<latex>E=\frac{I*256}{(255-M)+1}</latex>

Затемнение (Burn)

Режим обратный предыдущему, снижает общую яркость изображения.

<latex>E=255-\frac{(255-I)*256}{M+1}</latex>

Направленный свет (Hard light)

Более сложный режим смешивания, поскольку метод преобразования зависит от яркости пикселя. Увеличивает контраст изображения.

<latex> M>128: E=255-\frac{(255-I)*(255-(2*(M-128)))}{256} </latex>

<latex> M\leq 128: E=\frac{I*M*2}{256} </latex>

Рассеянный свет (Soft light)

Более мягкий вариант режима Перекрытие. Смягчает края и снижает контраст изображения. Для вычислений используются значения для из режима Экран

<latex>R_s=255-\frac{(255-I)*(255-M)}{255}</latex>

<latex>E=\frac{((255-I)*M*I)+(I*R_s)}{255}</latex>

Извлечение зерна (Grain extract)

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

<latex>E=I-M+128</latex>

Объединение зерна (Gran merge)

Режим противоположный предыдущему, снижает зернистость изображения.

<latex>E=I+M-128</latex>

Простые преобразования

Разница

Просто считается разность значений яркостей пикселей между слоями и берет абсолютное значение результата. Изображение может инвертироваться.

<latex>E=\vert I-M \vert</latex>

Добавление

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

<latex>E=\min((M+I),255)</latex>

Вычитание

Опять же просто вычитает значения яркостей пикселей друг из друга, но в отличие от Разности не берет абсолютное значение, а считает все отрицательные значения нулевыми.

<latex>E=\max((I-M),0)</latex>

Только темное

Сравнивает значения яркостей пикселей между слоями и выбирает самый темный.

<latex>E=\min(M,I)</latex>

Только светлое

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

<latex>E=\max(M,I)</latex>

Тон, насыщенность, цвет

Тон (Hue)

Берет значение тона с маски, а яркость и насыщенности с изображения.

Насыщенность (Saturation)

Берет значение насыщенности с маски, а яркость и тона с изображения.

Цвет (Color)

Берет тон и насыщенность маски, а яркость с изображения.

Значение (Value)

Берет яркость маски, а тон и насыщенность с изображения. Можно использовать для выделения деталей в тенях или светах, без изменения тона картинки.