Как из чёрно-белого фото сделать цветное

  Сделать из чёрно-белого фото цветное - нет проблем. Существует масса программ, которые делают это. Но у меня был к этой теме свой собственный чисто исследовательский интерес.
  Прочёл я, что в Фотошопе для такого преобразования есть специальный фильтр. Как с ним работать - объясняют. А вот что в нём такого специального, не совсем понятно. Вероятно, специфика есть. Вот я и подумал, а не сделать ли мне такое же и в своей программе? Заодно вникну и поучусь.
 
  Оказалось, что красить фото целиком не получается. Добавишь светлую краску - светлые фрагменты фото выглядят достойно, однако тени неестественно светлы. Сделаешь лессировку, свет потемнеет, а тени почти не изменятся в цвете. Опять не то.
А что же нужно?

  Нужно, чтобы при изменении цвета, во всех местах картинки сохранились как видимая локальная светлота тона, так и контраст изображения. Используем для этого следующий алгоритм.
1. Выбираем цвет, в который будем окрашивать изображение.
2. Находим его RGB компоненты и нормируем их на единицу. То есть, попросту делим на число 255.
3. Находим светлоту тона как сумму A=R+G+B
4. Затем перебираем все пиксели в зоне преобразования. Считываем их цвет и определяем светлоту тона Ao=Ro+Go+Bo. Находим показатель степени, как отношение логарифмов – Z=Log(Ao)/Log(A). И затем находим компоненты нового цвета, перевычисляя их по формулам
    R=R^Z: G=G^Z: B=B^Z
Полученным цветом окрашиваем пиксель.

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

  На иллюстрации вы можете видеть, что описанный алгоритм даёт в точности такие же результаты, что и Фотошоп. Потому я и думаю, что и там алгоритм именно такой. Цвета получаются естественные, и их при желании можно разнообразить, как угодно.
  Для выполнения тонирования мы должны установить опцию «ф» на кнопке фильтры и нужную «Плотность» - степень покрытия новым цветом старого.
Цифра 9 это максимальное значение, оно означает полную замену серого тона цветным. Затем мы обозначаем область преобразования, кликнув по её диагональным углам, и подбираем с помощью палитры подходящий цвет.
  Цвет BGR 146 171 206 это телесный цвет. Неважно, светлый он или тёмный, главное, чтобы казался именно телесным. Программа учтёт его конкретную светлоту и сама всё пересчитает.

  Запускаем процесс кликом по кнопке «Ц».
  Область прямоугольная, мы обозначили её с избытком. Потому и получили прямоугольник телесного цвета большого размера. Теперь включаем «синий ластик» и убираем лишнее, счищая незакреплённую графику. Результат на всякий случай запоминаем на «поле_6».
  Теперь кликами обозначаем другую область, выбираем другой цвет, и повторяем процесс. Используя то же выделение,  и кликая по кнопкам «Т» или «С», можно темнить или светлить изображение. И так же счищать синим ластиком лишнее или то, что не понравилось.
  Неплохо также забрасывать начальное или промежуточное изображение на «поле_2». Ластик розового цвета будет переносить изображение с «поля_2» на поле нашего рисунка. В общем, работать легко и удобно. И мне даже показалось, что удобнее, чем в Фотошопе.

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

__________
19.09.2021


Рецензии
Дмитрий, спасибо большое!
Это очень интересный материал!
Вы гений! Разгадали и поняли, (точнее, вычислили) как работает алгоритм фильтра в фотошопе, и смогли сгенерировать своё! Спасибо за разъяснения.
Для раскрашивания или цветокоррекции я иногда работаю отдельно по цветовым каналам - R-G-B, или в системе LAB. По теням и светам можно ещё регулировать в Кривых и уровнях.
Всего самого наилучшего, творческих и научных успехов Вам!
Хорошего дня!
С уважением,

Анна Мельниченко 2   25.01.2023 08:23     Заявить о нарушении
Спасибо. Вы знаете, Ваша рецензия имела очень важные последствия. Я продолжил свои эксперименты в своей новой программе. И результаты получил хорошие -
http://proza.ru/2023/02/02/143 http://proza.ru/2023/02/03/634
ещё я развил опции лессировки, темнения и светления, так что у меня теперь имеется очень хороший набор инструментов для обработки изображений.
Вот что значит, иметь связь с читателями ))
Без Вашего отзыва мне бы не пришло в голову заняться именно этим делом.

Дмитрий Маштаков   04.02.2023 05:56   Заявить о нарушении
Дмитрий, здравствуйте!
Это очень здорово!
Я очень рада, что у Вас получилось!
Успехов Вам и в дальнейшем, всего доброго!

Анна Мельниченко 2   04.02.2023 22:05   Заявить о нарушении
На это произведение написаны 2 рецензии, здесь отображается последняя, остальные - в полном списке.