Фотобудка на максималках

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

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

Почему на максималках? Потому что, в отличие от обычных фотобудок, камера стоит на подвижной платформе и всё время наводится по лицу так, чтобы обеспечить правильную композицию, есть управление зумом. Система и интерфейс пользователя рассчитан не на 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 синхронизатора, но там есть некоторые проблемы из-за которых не получается точно выставить экспозицию.

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

Железо

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

4eafbe0d837ec2e299b425887ee332e6.jpg

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

Контроллер

Контроллер

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

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

Корпус

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

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

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

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

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

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

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

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

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

954fa559ba3094f2a5bac85a6cc495b3.jpg

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

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

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

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

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

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

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

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

Фотофорум

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

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

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

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

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

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

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

Студия Citrus

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

c0facac51db42b7013a24cc211939ebf.jpg

К тому моменту я сделал довольно много улучшений: во-первых, систему уже можно было включить, нажав на кнопку 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 раз проще.

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

примеры фото

примеры фото

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

© Habrahabr.ru