Зарегистрируйтесь! 

 Вы сможете:  

размещать фотографии в Галерее, комментировать фотографии, общаться в форумах, обсуждать фототехнику

Зарегистрироваться
ФорумыФотогалереяБарахолкаСообществаОбсуждение фототехникиФотоклассики
Интернет-магазин Foto.ru
МАГАЗИН
Клуб Foto.ru - клуб фотографов, клуб для фотографов
 
Помогите выбрать! Цифровые компактные фотоаппараты Цифровые беззеркальные камеры со сменной оптикой Цифровые зеркальные фотоаппараты Фотоаксессуары Общие вопросы фотографии Цифровая обработка изображений Калибровка мониторов и принтеров Фотопечать Фототехника среднего и большого форматов Пленочная фототехника 35 мм. и принадлежности Студийная съемка и оборудование Стробистское оборудование и съемка Сделай сам Свадебная фотография Репортажная фотография ФотоОхота
 
 
 
 
Статьи 
Воробьев Андрей
16.06.2005

Ещё один способ преобразования цветного изображения в чёрно-белое


Ещё один способ преобразования цветного изображения в чёрно-белое

Blending mode Soft Light
Darkens or lightens the colors, depending on the blend color.
...
If the blend color is darker than 50% gray,
the image is darkened as if it were burned in.

If the blend color (light source) is lighter than 50% gray,
the image is lightened as if it were dodged.
(Photoshop Help)

Режим смешения Soft Light
Светлые тона управляющего слоя осветляют результат, темные затемняют. Средне-серый не производит никакого эффекта.
(Искаженный для цели данной статьи перевод)

Этот способ пришёл мне в голову при чтении книги Маргулиса, её последней главы. Не имею представления, насколько он нов; учитывая очевидность идеи, наверняка кто-нибудь уже додумался до этого; тем не менее мне он нигде ранее не встречался. Сам Маргулис прошел совсем рядом видимо оттого, что тема преобразования в чб не была для него столь животрепещущей, как ныне для многих.

Идея.

Итак, как известно, при автоматическом переводе цветного изображения в черно-белое сохраняется информация о яркости (lightness), но теряется о цветовом тоне (hue) и насыщености (saturation), что часто приводит к бедным по контрасту изображениям, особенно по локальному контрасту. Задача состоит в восстановлении информации, находившейся имено в цвете (живописный контраст) и добавлении ее в черно-белую картинку в виде дополнительных модуляций яркости (яркостный контраст).

В качестве первого приближения берём любой более-менее разумный алгоритм, переводящий цвет в чб; нет нужды искать какой-то лучший. Представление в координатах Lab представляется мне идеальным: канал L как начальный вариант чб и сам по себе неплох, а в каналах a и b содержится информация исключительно о цвете (причём сразу в градациях серого), которую мы и попытаемся употребить. И для этого переведем её из каналов в слои с их развитыми возможностями всевозможных манипуляций на лету.

На этом изложение самой идеи закончено. Дальнейшее представляет собой детали её практической реализации и сопутствующие соображения.

Воплощение.

Канал a описывает цвет от зеленого к красному, канал b — от синего к жёлтому.

Предположим к примеру, что перейдя в чб мы существенно потеряли различия между синим и жёлтым, так что хорошо бы бывшие синие области, скажем, притемнить, а бывшие жёлтые осветлить. Содержимое канала b дает необходимую информацию, а русская часть эпиграфа к данной статье дает самое простое средство (хотя возможны и другие).

Т.е. первым слоем нового изображения делаем копию канала L исходного цветного изображения, вторым слоем — копию канала b и ставим у этого ‘b copy’ режим смешения Soft Light или Overlay (выбор режима смешения обсуждается ниже).

Поскольку цветовая насыщенность реальных изображений очень мала по сравнению с тем диапазоном насыщенности, который можно описать в b, содержимое b имеет небольшой разброс в значениях, и эффект от Soft Light с таким слоем довольно слаб. Имеет смысл «усилить» значения в ‘b copy’, расширить его гистограмму; неизбежная при этом постеризация на ‘b copy’ нас не особенно волнует. Универсальное оружие здесь корректирующий слой с кривой. Надо только чтоб эта кривая воздействовала на один только ‘b copy’, а не на все нижележащие слои, что, как известно, делается помещением ‘b copy’ и слоя с кривой в Набор Слоев (Layer Set) и смены режима смешения этого набора с Pass Through на что-нибудь ещё; в нашем случае Soft Light можно как раз поставить у Set, а у ‘b copy’ восстановить Normal.

На этом пример с притемнением синего и осветлением жёлтого в основном закончен и изложенное вполне готово к первым экспериментам на практике.


Fig_1

Следует заметить, что получаемый эффект сильно зависит от формы кривой над ‘b copy’. Я предпочитаю разнести её работу на две кривые: первая более-менее раздвигает гистограмму ‘b copy’, обычно это довольно крутая кривая, а вторая занята более плавными преобразованиями, которые на первой было бы сделать трудно из-за её крутизны. Если требуется инверсия (в нашем примере осветлять синий и притемнять жёлтый), то на мой взгляд её тоже проще организовать в виде отдельного корректирующего слоя.

При усилении ‘b copy’ среднесерую точку надо держать неизменной. Она соответствует отсутствию цвета в оригинале.


Fig_2

То же самое проделывается с каналом a, если надо восстановить потерянные различия между зеленым и красным.

Если надо востанавливать различия между такими парами цветов, которые прямо не описываются каналами a и b, можно либо сконструировать из a и b требуемую противоположность, либо — что проще — перед снятием содержимого a и b «передвинуть» интересующую пару цветов в пару “зелёное—красное” (или “синее—жёлтое”) в исходном цветном изображении посредством команды Hue/Saturation. — Однако эта операция статична, т.е. не позволяет в дальнейшем возвращаться к ней и что-то подправлять.

Той же Hue/Saturation в исходном изображении, кстати, можно и сильно увеличить насыщенность и тем самым расширить множество значений цветоносного канала — альтернатива упортебления первой кривой (раздвигавшей гистограмму ‘b copy’). Впрочем, я предпочитаю кривую.

Есть ещё один нюанс: если ‘b copy’ будет осветлять уже сами по себе светлые в ‘L copy’ области или затемнять темные, мы может потерять детали в светах или тенях. Если режим смешения выбран разумно (см. описание разных режимов далее), детали не совсем потеряются, однако контраст в светах/тенях может снизится настолько, что практически это будет выглядеть как потеря деталей. Видятся два альтернативных средства:

1) не переусердствовать с усилением ‘b copy’
или
2) сразу над ‘L copy’ поместить кривую, принудительно сужающую выходной диапазон этого слоя.

И конечно, никогда не будет лишней корректирующая кривая для окончательной правки тонов результата — самый верхний слой во всей этой пачке. К слову будь сказано, в большинстве примеров, которые я видел, многие в том числе и по смешению каналов часто дают худший результат, чем осмысленное применение одной кривой к одной только ‘L copy’ без какого-либо использования цветовой информации вообще! А при использовании цветовой информации важность окончательной тональной коррекции ничуть не меньше.


Fig_3

Как всегда маски слоев к вашим услугам, как и регулировка силы эффекта с помощью Opacity. И то и другое имеет смысл применять прежде всего к созданным Наборам слоев.

Вариации метода.

В качестве первого приближения не обязательно брать копию канала L; если уже есть какой-то довольно удачный черно-белый варинт, можно попробовать использовать его. Например зелёный канал из RGB-представления (Маргулис говорит, что он неплох для портретов) или чёрный из CMYK. Хотя теретически это есть отход от стройности исходной идеи, когда цветовая информация черпается только из чисто цветоносных каналов и, стало быть, начальный чб вариант содержит чистую яркостную информацию...

Просмотр одной только цветовой информации.

Во-первых, каналы a и b по отдельности.

Во-вторых, помещение исходного изображения как слоя в режиме смешения Color над каким-л нейтрально окрашенным слоем.

В-третьих, можно поглядеть на информацию Hue и на информацию Saturation до некоторой степени по отдельности. Выбор режима смешения Hue или Saturation над нейтральным слоем ничего не даст, т.к. Hue и Saturation друг без друга не видны. Поэтому под изображением надо держать не нейтрально окрашенный слой, а наоборот, ярко окрашенный, т.е. навязать свое Hue для Saturation изображения или свое Saturation для Hue изображения. Маргулис так и делает с ядовито-зеленой подложкой для своего попугая.

Выбор режима смешения.

Результаты работы всех режимов смешения с разной прозрачностью проиллюстрированы в Приложении.

При выборе режима имеют место следующие очевидные требования:

  • Тон светлее среднесерого в верхнем слое должен осветлять результат, темнее среднесерого — затемнять.
  • Среднесерое в верхнем слое не должно оказывать никакого воздействия.

С этих свойств режима смешения началась данная статья, и эти требования сразу исключают режимы Multiply, Screen, Darken, Lighten, Color Burn, Linear Burn, Color Dodge, Linear Dodge, Difference, Exclusion, Hard Mix, Dissolve, Normal.

  • Более светлое в верхнем слое должно осветлять сильнее, чем менее светлое.
    Более тёмное в верхнем слое должно затемнять сильнее, чем менее тёмное.

Это требование исключает режимы Vivid Light, Linear Light, Pin Light.

Остаются всего три режима: Soft Light, Overlay, Hard Light. Все они удовлетворяют еще одному важному требованию:

  • Когда оба тона не крайние (не черный и не белый), то результат тоже не должен быть крайним тоном. Иначе мы будем терять тональную информацию.

И еще одному:

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

Однако в случае, когда один тон строго черный, а другой строго белый, Hard Light отдает предпочтение верхнему слою, а Soft Light и Overlay нижнему. Последнее для наших целей представляется более логичным: если яркость черно-белого изображения равна 0, то никакой цвет не может осветлить это черное.

Кроме того, в случае Hard Light с непрозрачностью 100% содержимое верхнего слоя будет проступать в результате сильнее нижнего (на большей части иллюстрации в Приложении линии уровня более горизонтальны, чем вертикальны). Это, надо полагать, нежелательно.

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

Последнее требование трудно назвать обязательным. Но Soft Light ему удовлетворяет, а Overlay нет (на вертикали x=0.5 у результата явный излом).

Таким образом, остались всего два пригодных режима: Soft Light и Overlay.
И Soft Light слегка предпочтительнее.


Приложение. Иллюстрации работы всех режимов смешения с различной непрозрачностью.

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

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

y

x

Значения пикселей X, Y и непрозрачность нормированы на единицу: x = X/255, y = Y/255, p = P/100.

В первом столбце, у названия режима, приведены формулы, если они мне известны (для полной непрозрачности).

Если на верхнем слое задана неполная непрозрачность p, то формула результат является линейной комбинацией из готового результата смешения Blend(x, y)
с полной непрозрачностью и нижнего слоя x; коефициенты этой линейной комбинации, конечно, в сумме должны давать 1, т.е. это будут ­p и (1‑p):
Blend(x, y, p)= p∙Blend(x, y, 1) + x∙ (1-p)

Например, вместо
Normal(x, y) = y
получаем
Normal(x, y, p) = p∙y + x∙ (1-p)

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

 
0.25
0.5
0.75
1

Multiply

Mul(x, y) = xy

Screen

Scr(x, y) = Inv (Mul (Inv(x), Inv(y)))

Darken

Darken (x, y) = min (x, y)

Lighten

Lighten (x, y) = max (x, y)

Normal

Normal(x, y) = y

Soft Light

Overlay

Overlay(x,y)=

=2∙Mul(x,y)

x≤0.5

=Inv(2∙Inv(x,y))

x≥0.5

Hard Light

Overlay(x,y)=

=2∙Mul(x,y)

y≤0.5

=Inv(2∙Inv(x,y))

y≥0.5

Vivid Light

Linear Light

Pin Light

Color Burn

Linear Burn

Color Dodge

Linear Dodge

Difference

Diff (x, y) = abs (x-y)

Exclusion



 
0.02
0.10
0.66
1

Hard Mix

Dissolve


Видно, что нижний и верхний слои имеют разную силу в формировании результирующего изображения:
чем вертикальнее полосы, тем больший приоритет имеет нижний слой;
чем горизонтальнее полосы, тем больший приоритет имеет верхний слой.

Пример.

Копия канала L выглядит следующим образом:

Хотелось бы сделать желтую листву более яркой, а синее небо и тучи притемнить. Это не может быть сделано только коррекцией тонов на ‘ L copy’: затронутся другие цвета, например зелень и дорога. По изложенному выше, нам нужна инфорация о цвете: о желтом и о синем, т.е. данные из канала b.

Палитра слоев и описание кривых приводятся ниже. Чтоб иметь возможность в любой момент взглянуть на оригинал, я поместил его в самый верхний слой. Т.е. всё преобразование можно проводить не только в черно-белой моде, но и в Lab; разумеется, все кривые в этом случае относятся к каналу Lightness.

Координаты опорных точек кривых (в канале Lightness):

final finetuning

(0;0), (18;5), (42;27), (65;51), (88;80), (96;93), (100,100)


b curve

(0;0), (36;9), (47;34), (50;50), (53;54), (56;58), (67;71), (82;88), (100,100)

Полученный результат выглядит так :

Конечно, возможны более деликатные тональные решения. Цель этого примера чисто иллюстративная.




Обсудить эту статью в форуме Клуба

Разделы справочника


Категории статей

  Правила Клуба | О Клубе | Вход / Регистрация | Поиск авторов | ХудСовет | Как связаться | Статистика | FAQ | Рекламодателям | Архив галереи | Архив форумов