2. A step-by-step example showing how to recover shadow information using high bit depth GIMP’s floating point ColorsExposure… operation

Рисунок 2

Using high bit depth GIMP’s Exposure operation to lighten the ground by one stop without blowing out portions of the sky.

Данный пошаговый пример предоставляет образец изображения и разбит на пять шагов, начиная с загрузки изображения. Сама операция описана в шагах 3, 4 и 5.

  1. Скачайте tree.png, представляющее собой целочисленное изображение sRGB с глубиной цвета в 16 бит. Работа с изображениями с высокими значениями глубины цвета в GIMP — это работа фактически только с sRGB, поэтому лучше даже и не пытаться выполнять редактирование в других рабочих пространствах RGB.

  2. Open tree.png with GIMP and assign the GIMP built-in sRGB profile (the image colors won’t change a bit). Then convert the image to 32-bit floating point linear precision: Select ImageEncoding32 bit floating point, and in the Encoding Conversion dialog, select Linear light (this ensures that the Normal blend mode produces radiometrically correct results).

  3. Make a copy of the “tree.png” layer via LayerNew Layer… or LayerNew from Visible, and label it “+1 stop exposure comp”. Then use Colors Exposure… to add one stop of positive exposure compensation. Figure 3 below shows the proper settings for the Exposure operation dialog, and Figure 4 shows the result:

    Рисунок 3

    Using the Exposure operation to add one stop of positive exposure compensation.

    When using the Exposure operation to add one stop of positive exposure compensation, make sure the image really is at floating point precision, because integer precision will clip the highlights.

    Рисунок 4

    At floating point precision, GIMP’s Exposure operation is unbounded. This means you can use the Exposure operation to add positive exposure compensation without blowing out the highlights.

    Обратите внимание на значения каналов RGB четырёх выборочных точек: данные канала, которые при использовании целочисленной точности были бы обрезаны, закодированы с использованием значений канала, превышающих 1,0 с плавающей запятой.

    The image in Figure 4 clearly has “blown” highlights in the sky. But the highlights aren’t really blown (that is, clipped to 1.0 in one or more channels). Instead the highlight information is still there, but the RGB channel values fall outside the RGB display channel value range of 0.0f to 1.0f. The sample points dialog in Figure 4 above shows four sample points that have RGB channel values that are greater than 1.0. As shown in Figure 5 below, adding a mask allows you to recover these highlights by bringing them back down into the display range.

    Если бы мы использовали целочисленную точность вместо точности с плавающей запятой, то светлые области действительно были бы пересвечены: выборочные точки имели бы максимальные значения каналов 255, 65535 или 4294967295, в зависимости от глубины цвета. А добавление маски «восстановило» бы области сплошного серого цвета без всяких деталей (попробуйте сами и посмотрите, что получится).

  4. Add an inverse grayscale layer mask: Right-click on the layer and select LayerMaskAdd Layer Masks…, and when the Add Layer Mask dialog pops up, choose Grayscale copy of layer and check the Invert mask box.

    Как показано на Рисунке 5 ниже, на данном этапе все светлые области вернутся вотображаемый диапазон, то есть все значения каналов RGB будут помещаться между 0.0f и 1.0f. Но изображение будет, вероятно, смотреться немного странно (мутноватое и плоское), а также, в зависимости от изображения, на самых ярких участках могут присутствовать тёмные пятнышки — но не беспокойтесь, это временно.

    Рисунок 5

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

    Добавление обратной маски слоя в оттенках серого возвращает светлые области в показываемый диапазон, но на данном этапе большинство изображений будет выглядеть плоскими и мутными, а в светлых областях некоторых изображений будут присутствовать тёмные пятнышки. Следующий шаг, «Авто → Растянуть контраст», выполненный для маски, позаботится об этой проблеме.

  5. Click on the layer mask to select it for editing, and then select ColorsAutoStretch Contrast…:

    Параметр «Сохранять цвета» должен быть отмечен галочкой (хотя для изображений в оттенках серого, таких, как маски слоёв, это не имеет значения).

    На Рисунке 6 ниже показан окончательный результат:

    Doing ColorsAutoStretch Contrast… on the layer mask removes the “cloudy” appearance, leaving a nicely brightened image with intact highlights.

    ColorsAutoStretch Contrast… on the mask is necessary because just like the image layer has out of gamut RGB channel values, the inverted grayscale mask contains out of gamut grayscale values. ColorsAutoStretch Contrast… brings all the mask grayscale values back into the display range, allowing the mask to proportionately compensate for the layer’s otherwise out-of-gamut RGB channel values, masking more in the layer highlights and less/not at all in the image’s shadows and midtones.

    Notice that one of the sample points still has a blue RGB channel value that is slightly out of gamut. The easiest way to deal with this is to use ColorsLevels… and drag the middle slider triangle to make a Gamma adjustment of 0.45 on the mask, not on the actual image layer. You can make this Gamma adjustment either on the entire mask (works well, less effort). Or else you can make the adjustment just on the mask shadows (which correspond to the layer highlights), in which case you’d load the mask as a selection, invert the selection, and make the Gamma adjustment. Or if the remaining out of gamut channel values are only very slightly out of gamut, make a “New from Visible” layer and then ColorsAutoStretch Contrast… the result to bring the remaining channel values back into gamut.

    That’s the whole procedure for using the Exposure operation to add a stop of positive exposure compensation to the shadows without blowing out the highlights. Now you can either fine-tune the mask, or else just make a “New from Visible” layer and continue editing your nicely brightened image. Depending on the image and also on your artistic intentions for the image, the mask might not need fine-tuning. But very often you’ll want to modify the resulting tonal distribution by doing a gamma correction, or perhaps a Curves operation on the mask, or else by painting directly on the mask. And sometimes you’ll want to blur the mask to restore micro contrast.