Монитор с мультитачем, компьютер и камера на подвижной платформе в корпусе
Монитор с мультитачем, компьютер и камера на подвижной платформе в корпусе

Почему на максималках? Потому что, в отличие от обычных фотобудок, камера стоит на подвижной платформе и всё время наводится по лицу так, чтобы обеспечить правильную композицию, есть управление зумом. Система и интерфейс пользователя рассчитан не на 3 фотографии, а на неограниченное количество. За час можно наделать хоть 300 штук. Кроме этого экспозиция максимально точно рассчитывается по положению человека в пространстве.

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

Старое фото, тогда еще не было корпуса
Старое фото, тогда еще не было корпуса

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

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

  • Многих людей фотографы раздражают

  • Сразу видишь себя на экране и в режиме liveview и последние сделанные снимки

  • Все фото с идеально ровной линией горизонта, с точной коррекцией наклона оптической оси, процент технически хороших снимков очень высокий, в отличие от живого фотографа

  • Снимки готовы сразу, с правильными цветами, экспозицией и композицией, не надо ждать

Утверждения, несомненно, спорные, напишите, пожалуйста, в комментариях, что думаете :)

И сразу еще одно замечание — мне хотелось сделать чтобы всё работало вместе и это можно было использовать а не совершенствовать до идеала какой-то один компонент.

Сценарий использования

Вот видео с экрана с примером работы:

А результат съёмки можно посмотреть здесь.

Теперь немного объясню. Пользователь может запустить съёмку двумя способами.

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

Второй способ — это отсканировать QR код телефоном. В этом случае дополнительно можно будет управлять съемкой с телефона через браузер, также на телефоне будут сразу показываться готовые фото и сразу можно будет скачать архив  с фотографиями.

На экране монитора показывается экран с liveview, то что видит камера, две последние сделанные фотографии и QR код для перехода в галерею с готовыми фотографиями. Как только пользователь делает снимок сразу же показывается JPEG  из камеры и Raw ставится в очередь на обработку. Обработка raw делается в программе RawTherapee, довольно медленно, секунд 10-15. После обработки фото загружается в облако а в интерфейсе на мониторе и телефоне камерный JPEG заменяется на обработанное фото.

В процессе съемки можно посмотреть все сделанные фотографии на мониторе, а также можно поменять настройки: компенсацию экспозиции, интенсивность сглаживания кожи, положение лица относительно кадра по вертикали, выключить режим «зеркала» в liveview а также включить повороты относительно вертикальной оси.

С помощью пульта или телефона можно сделать снимок сразу же (это удобно, если воспользуетесь помощью товарища), сделать снимок с задержкой в 3 секунды либо запустить серию из нескольких снимков — с пульта 6, с телефона — 3 или 10.

Программная часть

Схема работы
Схема работы

Схема работы примерно как у любого современного веб-приложения — есть бэкенд, написанный на Golang, он слушает по http 2 порта: один доступен только локально, в него ходит запущенный локально электрон, второй доступен из интернета через SSH тунель для работы через телефон, liveview и изменения состояния посылаются через вебсокет. Но в отличие от большинства веб-приложений тут обработка по http это малая часть, так как еще нужно управлять большим количеством девайсов: фотоаппарат, PTZ, камера глубины, пульт.

В момент запуска съемки начинается обработка изображений с камеры. На каждом кадре находим все лица и после этого зная текущие углы поворота и необходимое положение лиц относительно кадра посылаем в контроллер платформы новые значения углов поворота.

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

Ну и в моменты когда возникает необходимость сделать снимок собираем информацию: угол наклона платформы и текущее точное значение необходимой коррекции экспозиции диафгагму и ставим задачу на обработку фотографии.

Железо

Камера стоит на платформе с шаговыми двигателями:

Куплена на известном сайте, продавалась без контроллера. Первая версия была с коллекторными двигателями и управлялась arduino uno с нацепленным motor shieldом, но для управления двумя шаговыми двигателями нужно 2 шилда, получилось бы довольно ненадежная конструкция, да и в целом на плате ардуино коннекторы для продакшена не годятся. После написания первой статьи мне предложил с этим помочь @dmitriyrudnev небесплатно, но за приемлемую цену, очень ему за это благодарен, сильно продвинул проект вперёд. В-общем разместили на одной плате arduino leonardo, 2 драйвера двигателей на L298P и модули питания 8В для фотоаппарата, 5В для сервопривода управления зумом и 3.3В для питания синхронизатора вспышек (оказался не нужен, так как стал использовать синхронизатор, который питается от USB). Всё это питается от 12В и поэтому получилось избавиться от огромной кучи проводов, все стало намного надежнее и аккуратнее:

Контроллер
Контроллер

Управляется контроллер через RawHID, сначала использовал последовательный порт, но там как-то нет гарантии, что сообщение не порежется на части. Посмотрел код ядра - у RawHID вроде бы с этим получше.

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

Корпус

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

Опыта в проектировании корпусов у меня не было совсем да еще и не до конца было понятно, как лучше разместить все компоненты внутри, так чтобы платформа могла нормально вращаться, ничего не загораживало объектив камеры и, наконец, чтобы корпус получился более-менее компактным.

Корпус со снятыми панелями
Корпус со снятыми панелями

Решил сделать каркас из алюминиевого профиля а платформу разместить на относительно подвижных направляющих, чтобы можно было донастроить её положение. Как раз купил к этому времени 3D принтер, так что на этом корпусе я учился чертить и печатать.

Панель с клипсами
Панель с клипсами

Когда получилось сделать каркас и разместить внутри все компоненты начал думать над тем, как это всё закрыть. В итоге мне подсказали, что можно заказать вырезать по чертежам панели в компании, которая занимается рекламными конструкциями. Эти панели сейчас крепятся к профилям клипсами, так что они очень легко снимаются и надеваются. К стойке корпус крепится стандартным креплением Vesa 100x100.

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

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

Крепление профиля на который установлена платформа и транспортировочное крепление
Крепление профиля на который установлена платформа и транспортировочное крепление

История развития и перспективы

Идея у меня возникла в конце 2017 года, весь 2018 год я делал proof of concept и тогда был настроен крайне оптимистично :)

Скриншот интерфейса в браузере телефона
Скриншот интерфейса в браузере телефона

Тогда я почему-то думал, что система обязательно должна уметь работать автономно, без интернета. Соответственно был только один вариант скачивания фотографий - пользователь должен был сначала подключиться к нашему вайфаю и затем уже запускать фотосьёмку отсканировав QR код на мониторе. Ну и в любой момент можно было кликнуть на ссылку и скачать zip архив с фотографиями. В браузере телефона сохранялся токен, поэтому можно было подходить и запускать съёмку несколько раз, все было доступно, но только при подключении к локальному вайфаю. Я даже опробовал это на паре друзей и, как обычно бывает, в такие моменты всё работает довольно неплохо.

Фотофорум

Первый показ широкой публике решил сделать на фотофоруме в Крокус Экспо в апреле 2019 года. Заплатил около 200 т.р. за павильон 2x3 метра на 3 дня.

Наш павильон на фотофоруме
Наш павильон на фотофоруме

В первые же часы фотофорума я понял, насколько далека эта система от рабочего состояния. Вскрылась просто масса проблем. WiFi в первый день работал через pci адаптер в режиме точки доступа а на площадке, мне кажется, у каждого участника была своя точка доступа. Так что скорость была чрезвычайно низкой. Усугублялось всё тем, что архив я генерил на лету и браузер не показывал, сколько процентов уже скачано. Но даже до этого момента было дойти очень сложно - только там я выяснил, что телефоны крайне негативно относятся к вайфаю без подключения к интернету. Часть телефонов сразу отключается, браузеры проверяют сайты на безопасность через свои сервисы.

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

Короче главное что я выяснил - самая большая проблема - это передать фотографии пользователю. А вот фотографии получались на удивление хорошими, тогда у меня фотографии обрабатывались в Adobe Lightroom и Portraiture, которые крутились в виртуальной машине.

Было довольно много людей (больше пяти), который спрашивали как и когда можно купить мою систему, но из-за тотального краха в UX я так и не нашел что им ответить. В то время даже просто включить все было крайне сложно.

Студия Citrus

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

К тому моменту я сделал довольно много улучшений: во-первых, систему уже можно было включить, нажав на кнопку power на компьютере, а во-вторых, я все-таки отказался от вайфая без подключения к интернету, да и сделал что архив с фотографиями сначала генерился и уже потом начинал отдаваться по http, чтобы были видны проценты загрузки.

Это был первый опыт работы системы вдали от меня и опять, было очень много проблем - я постоянно заходит туда по ssh и что-то подкручивал, ездил каждый день на другой конец Москвы чтобы что-то починить. Но всё было гораздо лучше, чем на фотофоруме, пользователи как-то сами справлялись, но, к сожалению, далеко не все. Тогда фотостудией воспользовались примерно 20 человек.

HSE Pizza Pitch

Кадр с мероприятия
Кадр с мероприятия

Посетил мероприятие, где можно выступить со своим питчем пере потенциальными инвесторами. Сразу после выступления мне показалось что люди мой проект не особо оценили, судя по вопросам и коментариями. Но зато после удалось довольно продуктивно пообщаться в кулуарах. И, самое удивительное, почти нашел инвестора :) Она даже съездила в студию Citrus, но там случился эпик фейл, сели батарейки в синхронизаторе вспышек. Короче она целый час снимала с пилотным светом и фотографии получились совсем не такие как должны быть :( В-общем прямо впечатлить не получилось, но она предложила открыть пару студий и оплатить аренду на какое-то время при условии, что доли в проекте будут 50 на 50, но я отказался.

День Рождения Студии Артемия Лебедева

Артемий Лебедев каждый год предлагает бесплатно поразвлекать гостей на их мероприятии, на удивление их заинтересовало моё предложение. Там я впервые опробовал идею ездить с этим на корпоративы. А еще у меня был крупный апдейт железа - новый контроллер и шаговые двигатели. И да, из-за этого всё глючило и ничего не работало :) Но никто этого не заметил, потому что всем было очень весело.

Примерно раз в 15-20 минут что-то происходило и систему нужно было перезагружать. И как обычно было очень сложно объяснить людям, как скачать фотографии себе на телефон.

Были люди, которые интересовались, как можно мою систему купить, но опять таки я так и не смог ничего определенного им ответить, к сожалению.

А вот фотографии и там получались хорошие. Даже удалось позвать Артемия Лебедева. И, что самое удивительное, он даже спустя 3 года эти фотографии не потерял и использовал их в своём видео:

Очень надеюсь что никаких авторских прав не нарушил. Это кадр из опубликованного видео Самые Честные Новости. Если что - пишите, я удалю :)
Очень надеюсь что никаких авторских прав не нарушил. Это кадр из опубликованного видео Самые Честные Новости. Если что - пишите, я удалю :)

Сразу после вечеринки в студии Артемия Лебедева мой оптимизм сильно угас, так как были совсем непонятные проблемы с железом да и ситуация с передачей фотографий пользователям меня сильно измотала. Короче примерно в этот момент проект перешел в статус пет-проекта. На следующий день у меня было назначено собеседование в mail.ru, которое я прошёл и устроился туда на работу на позицию, на которой требовалась гораздо большая вовлеченность, чем на предыдущем месте работы. И автоматической фотостудией я уже занимался в вялотекущем режиме. За 3 года порешал все проблемы с железом, сделал корпус и сделал режим работы без подключения телефона пользователей.

Недавние мероприятия

Год назад сходил на мероприятие для детей в школе английского и опробовал новый режим работы. И опять оказалось, что я не всё продумал. Там была такая ситуация, что очень много людей и каждый подходит, делает пару фоток и уходит. Сразу же стало ясно, что большая часть времени тратится на ввод emailа. В-общем спустя полчаса запустили с моим адресом почты и обещанием разослать фотографии после мероприятия. Что тоже было совсем не круто, так как одно из главных преимуществ - это как раз фотографии сразу. А на тот момент фотографии в облаке у меня были сделаны хитрым образом - они по одной загружались в S3 и в конце сессии я загружал туда же архив и генерил html файл в котором все ссылки на фотографии были в виде S3 presigned urlов. Так что не надо было держать какой-то отдельный сервис в облаке, но фотографии становились доступными только после завершения сессии.

И вот наконец я написал этот облачный сервис, в котором фотографии появляются сразу, сделал режим "вечеринки", когда на экране во время съемки показывается QR код и любой может посмотреть сразу фотографии. Его удалось испытать в этой же школе английского этой весной. И в первый раз всё получилось. Наконец всем удалось всё сразу посмотреть и скачать.

Выводы

Сейчас, к сожалению, не могу уделять достаточно времени этому проекту из-за основной работы и двоих детей. Возможно похожу еще на какие-то праздники, но в полноценный бизнес вырастить уже не планирую. В сумме потратил наверное тысяч 600, но они уже окупились из-за прибавки в зарплате из-за накопленного опыта. Пара мыслей на этот счёт:

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

  • Очень тяжело продавать, когда ты - разработчик, потому что все мысли не о том, что тебе заплатят денег а о то, сколько ты проблем огребёшь от того, что твоим поделием кто-то начнёт пользоваться. Нужно обязательно отдельного безбашенного продажника приглашать, который будет приходить и говорить - мы уже всё продали, надо через месяц выдать результат.

  • Если делаешь продукт B2C, то надо делать максимально просто, по возможности он должен повторять то, что люди уже знают. Вот прямо надо взять то, что ты придумал и сделать в 10 раз проще.

    И еще пара фотографий напоследок, ничего дополнительно не ретушировал и не подкручивал цвета:

примеры фото
примеры фото

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

Комментарии (14)


  1. dyadyaSerezha
    11.08.2023 06:10

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


    1. pavel_raskin
      11.08.2023 06:10

      Мне кажется, что это скорее робо-фотограф в студию: посидел в инсталляции, посмотрел превьюшки, подождал минут 10-15, скачал готовые фотографии.


    1. guryanov Автор
      11.08.2023 06:10

      2 юзкейса: первый - это развлечение типа фотобудки на корпоративы и свадьбы. Второй - фотостудия без фотографа.

      Поворачивать надо, потому что люди разного роста и в обычных фотобудках фото получаются как минимум неправильные по композиции. Ну и в целом наверное все видели, какого качества там получаются фотографии, в 2023 году такое даже в инстаграм стыдно постить.


      1. dyadyaSerezha
        11.08.2023 06:10

        Камеры наблюдения давно имеют поворотные крепления. Почему не использовать их?


        1. guryanov Автор
          11.08.2023 06:10

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

          То есть есть простые, где есть 4 кнопки - вправо-влево и вверх-вниз - тут бы я наверное разобрался, но для трекинга такое не подойдет, надо чтобы углы были известны.


  1. Mitya78
    11.08.2023 06:10

    Такое скорее зайдёт в странах с дорогой рабочей силой и плохим сервисом.

    Как во Франции. :)


    1. guryanov Автор
      11.08.2023 06:10

      Ага, тоже так думал :)


  1. Mishootk
    11.08.2023 06:10
    +1

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

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

    Тут же просится хромокей.

    И самое сложное. Неподготовленным людям сложно смотреть в камеру, а позу строить по монитору. Идеально - камера за полупрозрачным монитором и все время позиционируется через область отображения глаз. Т.е. человек всегда смотрит как в зеркало себе в глаза. И камера находится именно на этой оси. Как это технически сделать чтобы стоило не как самолет - не знаю.

    В качестве режима игры - на экран выводится силуэт позы для выбранного режима. Нужно в него влезть. Возможна интеллектуальная автоадаптация размеров силуэта под рост и комплекцию человека.


    1. roach1967
      11.08.2023 06:10

      Можно использовать принцип телесуфлёра.


  1. sergej_pipets
    11.08.2023 06:10

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


    1. guryanov Автор
      11.08.2023 06:10
      +1

      Ну вот не получается так, к сожалению. Тоже сначала думал, что вот подключается пользователь своим телефоном к 5GHz вайфаю, нажимает на экране телефона кнопку спуска затвора и камера делает снимок с минимальной задержкой. Потом все фото можно скачать очень быстро, не менее 10Мб/с.

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

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


  1. Quiensabe
    11.08.2023 06:10

    Я бы делал так. Экран сенсорный, рядом лежит пульт. В пульте акселерометр и блютус. Если блютус теряет базу - начинает пищать (чтобы не унесли случайно). Пультом может служить мобильник в надежном корпусе, тогда на него можно стримить превью и готовые фотки.

    По акселерометру пульт знает, он лежит на месте или его кто-то держит. Если пульт лежит - на экране надпись "попробуйте бла бла бла, нажмите "начать", возьмите пульт...". Человек подходит, трекер об этом знает и меняет картинку (интерактив важен). Тут чуть разные сценарии, от действий пользователя, но не суть.

    Когда человек отходит - экран в режиме съемки. Большое превью. До первого кадра там же сбоку висит инструкция ("жми сюда", и фотка пульта).

    Если подойти к экрану - он переключается в режим просмотра фото. Должен быть общий список и возможность увеличить, удалить ненужное.

    Как "лайфхак" - можно делать снимки с более широким углом, но показывать (в живом превью и в списке) - кропнутые. Пользователь не будет знать что фото больше чем он видит, но можно дать ему возможность подвигать уже готовое фото, чтобы чуть поменять композицию. Будет выглядеть как магия)))

    Дальше. Внизу кнопки "завершить" и "получить фото". По факту они делают одно и тоже, но пользователь в разных сценариях будет нажимать разное. По любой кнопке появляется экран - "куда прислать фото?". Там выбор - или сканировать qr код, или (если у него нет сканера) ввести телефон, почту, мессенджеры и пр.

    QR-код, обновляется под каждого нового пользователя, содержит его уникальный ключ. При переходе - открывается его уникальная страничка на сайте проекта, где уже размещены его фотки. Он может их скачать, расшиарить, или ввести свои данные и получить на почту/мессенджер. За регистрацию можно получить бонус, скажем RAW'ы.

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

    Главное - просить ввести данные нужно уже когда фото сделаны. Потенциально, там же можно брать оплату (предупреждать, конечно, в начале), но тут вариативно.


    Все imho


  1. Taraflex
    11.08.2023 06:10

    Смотрю я на сию конструкцию, вывод один — сопруть.


    1. guryanov Автор
      11.08.2023 06:10

      Да, антивандальности нет никакой, нужно, чтобы человек рядом стоял, если на корпоративы ставить :(