Автор Тема: Как сделать экшен  (Прочитано 2322 раз)

Оффлайн UstinofАвтор темы

  • юниор
  • *
  • Сообщений: 2
Как сделать экшен
« : 31 Октябрь 2020, 16:08:30 »
Коллеги, всем привет!

Как сделать  экшен, чтоб  автоматом находилось лицо на фото,   потом  при помощи пипетки автоматом измерялась  плотность лица   в градациях  серого (например на щеке) и  вся  картинка  автоматом  становилась  светлее или темнее, в зависимости от результатов измерения до уровня 20-25%.

Подскажите, это возможно сделать или нет.

Заранее всем спасибо!!

 

Оффлайн jazz-y

  • Прописан здесь
  • ****
  • Сообщений: 361
Re: Как сделать экшен
« Ответ #1 : 31 Октябрь 2020, 21:46:40 »
В теории - да, на практике - через одно место.
Фотошоп не дает ни скриптам, а тем более экшенам доступ к пиксельным массивам. Без них сделать точные измерения и коррекцию сложно.

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

Последние два шага - только через скрипт. Остальное можно и экшеном.

Оффлайн jazz-y

  • Прописан здесь
  • ****
  • Сообщений: 361
Re: Как сделать экшен
« Ответ #2 : 01 Ноябрь 2020, 00:32:13 »
что-то типа того: https://pastebin.com/NHMxeXsd

Целевая координата задается в самом начале - var targetRGB = 200;

Самое слабое место - это понять, по какой точке мерить. Я попробовал так: (т.е. квадрат 100х100 пикселов 4/5 от центра выделения по горизонтали и 2/3 по вертикали)
var x = bounds.left + 4 * (bounds.right - bounds.left) / 5,
            y = bounds.top + 2 * (bounds.bottom - bounds.top) / 3;

Некоторые кадры вылетают по коррекции из-за того, что либо нос попадает в эту зону, либо щека (в зависимости от поворота головы)

Второй скользкий момент - я нахожу среднюю яркость и тупо тяну эту точку кривыми к целевой координате. Это неправильно и может давать вариации по контрасту. Нужно вычислять уравнение кривой коррекции, так чтобы целевое значение получалось при смещении средней точки. Последний раз я это делал лет 10 назад, сейчас сходу не смог найти нужное уравнение - там какая-то экспоненциальная функция. Посмотрю позже
« Последнее редактирование: 01 Ноябрь 2020, 00:44:05 от jazz-y »

Оффлайн iv131

  • Ветеран
  • ******
  • Сообщений: 5006
  • г. Озёрск на Урале iv131@mail.ru
Re: Как сделать экшен
« Ответ #3 : 01 Ноябрь 2020, 06:39:26 »
Лучший экшен в фотошопе - это нажал кнопку и деньги на карту перевелись. :)
Я лет десять назад тоже пытался такой написать, не получилось. То ли карта не та, то ли фотошоп.
Загружаешь все фото в лайтрум и одним рычагом корректируешь. Остальное не работает. Кожа у всех разная по контрасту. Поймать такие нюансы может только глаз. И то не всегда.
Учиться, учиться и еще раз учиться, чтобы не было мучительно больно за бесплатно потраченное время.
Ленин-Островский-Иваныч.

Оффлайн UstinofАвтор темы

  • юниор
  • *
  • Сообщений: 2
Re: Как сделать экшен
« Ответ #4 : 01 Ноябрь 2020, 08:32:10 »
Спасибо всем за помощь, быстро и по делу!

Нашел интересную статью "Проект определитель лица в Photoshop"  и панельку  для фотошопа - https://elffoto.livejournal.com/9032.html

jazz-y Вы правы) Надо было написать так:  Измеренное пипеткой значения цветов 20-25% в режиме Градация серого  в палитре Info 
« Последнее редактирование: 01 Ноябрь 2020, 08:42:57 от Ustinof »

Оффлайн creator

  • Ветеран
  • ******
  • Сообщений: 6441
Re: Как сделать экшен
« Ответ #5 : 01 Ноябрь 2020, 08:53:18 »
Ustinof,  y не надо определять лицо и экшн не надо. Прогоняешь всё  через Portrait+ 3(64 bit)  , предварительно выбрав нужный цвет и свет лица, можешь румянец добавить всем или глаза увеличить :)

Оффлайн mariko

  • Ветеран
  • ******
  • Сообщений: 2635
  • Марина
Re: Как сделать экшен
« Ответ #6 : 01 Ноябрь 2020, 12:30:27 »
Прогоняешь всё  через Portrait+ 3(64 bit)  , предварительно выбрав нужный цвет и свет лица,
Так в результате этого все лица просто изменятся на определённый уровень, на одинаковый,  а не каждый индивидуально под нужный. кто был темнее, тот и останется темнее остальных. Или я чего то не знаю об этой программе?  :)

Оффлайн creator

  • Ветеран
  • ******
  • Сообщений: 6441
Re: Как сделать экшен
« Ответ #7 : 01 Ноябрь 2020, 12:47:10 »
кто был темнее, тот и останется темнее остальных.


Действительно - только цвет меняет. Но освещение ж и так стабильное.

Оффлайн mariko

  • Ветеран
  • ******
  • Сообщений: 2635
  • Марина
Re: Как сделать экшен
« Ответ #8 : 01 Ноябрь 2020, 12:53:59 »
Но освещение ж и так стабильное
Нет конечно, я постоянно в процессе съёмки настройки кручу, чтоб меньше потом корректировать  :) А если освещение стабильно, то разница будет ещё больше, ведь разные лица по разному поглощают и отражают свет.

Оффлайн creator

  • Ветеран
  • ******
  • Сообщений: 6441
Re: Как сделать экшен
« Ответ #9 : 01 Ноябрь 2020, 19:11:15 »
ведь разные лица по разному поглощают и отражают свет.


И вот тут мне не понятно стремление всех под одну гребёнку выровнять :)  Ну, одни желтее - так и на фото они будут желтее. Другие темнее - почему их надо делать светлыми? Пусть так и будут темнее.

Оффлайн mariko

  • Ветеран
  • ******
  • Сообщений: 2635
  • Марина
Re: Как сделать экшен
« Ответ #10 : 01 Ноябрь 2020, 19:19:04 »
Другие темнее - почему их надо делать светлыми? Пусть так и будут темнее.
Потому что светлее они буду выглядеть лучше, что ж тут непонятного! Это не стремление всех сделать одинаковыми, а стремление всех сделать красивыми  :)

Оффлайн jazz-y

  • Прописан здесь
  • ****
  • Сообщений: 361
Re: Как сделать экшен
« Ответ #11 : 01 Ноябрь 2020, 22:31:11 »
Обновил скрипт https://pastebin.com/NHMxeXsd

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

Немного поигрался с размером точки замера и ее положением. В скрипте она 50х50 пикселов. Пробовал сделать 100х100 или 200х200 - результат лучше, но не для всех лиц подходит (может вылететь за границы лица).

<a href="http://www.youtube.com/watch?v=yZ_IF5zPT7w" target="_blank">http://www.youtube.com/watch?v=yZ_IF5zPT7w</a>

Остается главная проблема - как алгоритмически (средствами фотошопа) найти опорный цвет на лице. Если кто-то сможет предложить свой вариант - попробую реализовать.
« Последнее редактирование: 01 Ноябрь 2020, 22:47:18 от jazz-y »

Оффлайн Влад

  • Прописан здесь
  • ****
  • Сообщений: 364
Re: Как сделать экшен
« Ответ #12 : 02 Ноябрь 2020, 06:45:20 »
Лучший экшен в фотошопе - это нажал кнопку и деньги на карту перевелись.
Лучший экшен-это нажал кнопку "шедевр" на фотике и без дальнейшей цветокоррекции тоже самое получилось при печати ,если не рукожоп конечно. :)

Сообщения объединены: 02 Ноябрь 2020, 06:49:38
Остается главная проблема - как алгоритмически (средствами фотошопа) найти опорный цвет на лице.
:D А что мешает при съёмке всё настроить ,что бы сразу был желаемый  результат.  :)
« Последнее редактирование: 02 Ноябрь 2020, 06:49:38 от Влад »
Мир на столько стал фальшивым,что почти все благодарят за ложь и обижаются на правду.

Оффлайн jazz-y

  • Прописан здесь
  • ****
  • Сообщений: 361
Re: Как сделать экшен
« Ответ #13 : 02 Ноябрь 2020, 11:20:30 »
В съемке много переменных - от отражающей способности снимаемого объекта до обстановки в помещении. Я ни разу не видел школьных фотографов, которые подстраивают экспозицию под каждого ребенка - пристрелялся по первому, настройки в мануал и вперед! Ну и у всех разный контекст работы - если снимаешь сам, то ок, снимай как хочешь. Если работаешь в сотрудничестве с коллегами или с нанятыми фотографами - у всех разный свет, разные камеры, разная степень кривизны рук.

Оффлайн jazz-y

  • Прописан здесь
  • ****
  • Сообщений: 361
Re: Как сделать экшен
« Ответ #14 : 02 Ноябрь 2020, 11:36:04 »
Обновил скрипт https://pastebin.com/NHMxeXsd

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

Есть идея сделать поканальную коррекцию (в теории можно будет двигать цвета под образец).

П.С. сейчас зона лица это примерно вот что:
« Последнее редактирование: 02 Ноябрь 2020, 11:50:18 от jazz-y »

 





Рейтинг@Mail.ru Яндекс цитирования Мастерхост
Виньетка.ру

16+