Внимание! Вас снимает НЕ скрытая камера

Привет! На связи снова команда компании Cibirlan. И сегодня мы хотели бы поделиться один очень интересным кейсом, который мы завершили не так давно.

Благодаря сериалу «Ход Королевы» интерес к шахматам в мире вырос на 30%. Даже ввели модное понятие «Эффект «Хода королевы». На самом деле количество играющих людей в мире постоянно растет и по данным 2017 года число любителей шахмат составляло уже 650 миллионов человек. Сейчас упоминаются цифры, доходящие до миллиарда, но пока без конкретной статистики. Конечно, определить точное количество сложно, но то, что шахматы до сих пор остаются одним из популярных видов спорта – однозначно.

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

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

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

Этап 1. Исследование

Перед началом разработки, нужно было проверить концепцию: работает ли определение пульса через камеру в принципе.

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

При проведении исследования мы столкнулись с несколькими трудностями.

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

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

В конце исследования была выявлена идеальная схема: при хорошем освещении и минимальном шуме из-за движения стабильное сердцебиение должно быть выделено примерно за 15 секунд анализа видео потока. Подтвердив работу концепции, клиент попросил реализовать ее на стеке Python.

Этап 2. Разработка

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

Оксигемоглобин - гемоглобин, соединенный с кислородом. Он переносит кислород от органов дыхания к тканям. Кривая диссоциации оксигемоглобина смещается вправо при увеличении температуры тела и повышении содержания СО2 в крови. Т.е если человек начинает дышать чаще или при волнении у него повышается температура тела, то оксигемоглобин становится выше нормы и наоборот.

Волны Майера - быстрые колебания артериального давления и сердечного ритма. У человека частота этих колебаний составляет около 0,1 Гц, то есть приблизительно шесть раз в минуту. Экспериментальные исследования показывают, что амплитуда волн Майера возрастает при активации симпатической нервной системы.

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

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

Еще раз на пальцах

Порядок действий такой:

  • определяем лицо пользователя в видео потоке с веб-камеры;
  • получаем координаты (местоположение) лица в кадре;
  • считываем и анализируем полученные данные;
  • выводим на экран пульс игрока.

Разработка и исследование заняли 2.5 месяца и само решение уже использовалось на гран-при Европы при прямой трансляции.

0
6 комментариев
Написать комментарий...
О Де Колоныч

Наверное вполне может быть применено и в дистанционной медицине

Ответить
Развернуть ветку
Слегка Придурковатый

Круто.

Ответить
Развернуть ветку
Вадим Д.

Очень прикольно, молодцы!
Только вот пульс на последнем скрине/фото у игроком больно уж низкий (-:

Ответить
Развернуть ветку
Gre Li

В казино уже давным-давно так наблюдают за клиентами. И если что выводят и вносят в чёрный список.

Ответить
Развернуть ветку
Сидор

В Oceans13 показали как можно обманывать такую систему )))

Ответить
Развернуть ветку
David Rosheva

Жуть.

Ответить
Развернуть ветку
3 комментария
Раскрывать всегда