Pull to refresh

На пороге дополненной реальности: к чему готовиться разработчикам (часть 3 из 3)

AR and VR

Третья и заключительная часть стенограммы-трилогии (см. часть 1 и часть 2) доклада про Дополненную Реальность.

Речь пойдет об обработке изображений в применении к дополненной реальности:
  • детектирование маркеров и меток;
  • многокамерные системы маркерного захвата движений;
  • структурированная подсветка;
  • Z-сенсоры (в частности, Kinect);
  • использование баз данных поз;
  • чисто оптические системы захвата движений.

И на закуску — субъективный взгляд на будущее дополненной реальности, который прояснит смысл картинки с собакой.


Markers


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


Вот например, как мы видим на Sony Move, там светящийся шарик. Это достаточно классная штука, ибо если мы знаем фактический диаметр маркера (D), мы знаем параметры своей камеры, как это называется, угол обзора (Field-Of-View = FOV), и разрешение ее, по ширине (W) и высоте (H), и зная размер в пискелях проекции маркера на изображение (d), мы можем оценить расстояние до нашего реального объекта (L), и вообще, можем оценить его положение в системе координат камеры.


Делается это все по совершенно простейшим и тупым формулам, ну вот если у нас угол обзора 75°, 640×480, а шарик 5см, и мы его видим как 20 пикселей, то значит до него полтора метра. На этом элементарнейшем принципе и работает отслеживание Sony Move. Есть акселерометр, есть гироскоп, и есть магнитный компас, благодаря которому мы можем видеть углы, но нам еще интересно, где оно находится в пространстве.

Там есть совершенно простая камера, Sony Playstation Eye, кстати, хорошая камера. Она недорогая относительно, и при этом может снимать с высокой частотой, и низким искажением (геометрическим).


И в общем, исходя из этого, мы можем понимать, где у нас что, и делать вот такую вот дополненную реальность. Вот в данном случае чувак себе руки пририсовал вместо Sony Move, потому что по маркерам мы понимаем, где они, и мы можем отмасштабировать руку, в зависимости от того, ближе она или дальше, а по углам мы понимаем, как сориентировать эту руку:


Высокая частота это сколько?

60 кадров в секунду, она даже 77 умеет выдавать, но это какой-то экстремальный режим.

How to detect markers on image


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


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


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


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

Но есть и более хитрые алгоритмы, сейчас вычислительные мощности растут, это становится доступно.

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


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


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



Сами камеры, кстати, в компьютер гонят просто координаты маркера, потому что со стольких камер гнать картинку в компьютер, какие бы сейчас не были современные шины… поэтому в саму камеру вшит самый тупейший алгоритм — порог, специальный чипчик, и он уже в компьютер вам передает, грубо говоря (x,y), координаты изображения маркера, а дальше уже компьютер молотит.

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

Вот такой примерно это рынок, чтобы вы понимали, до сих пор дорогой.

Итого: тяжело обрабатывать изображения, поэтому можно выкручиваться: использовать маркеры — по порогу отрезал, и все, у нас уже есть точечка, а с точечками мы как-нибудь уж разберемся.

Structured light


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



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

Собственно говоря, на этом принципе работает Microsoft Surface, пока такая чисто разработка-research, пока она в ширпотреб не пошла, и может быть не пойдет, потому что она достаточно дорога1).


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



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

Z-cameras/ Z-sensors


Дальше — Z-камеры, Z-сенсоры. Это, конечно, Microsoft Kinect, и я обещал о нем подробней рассказать.


Но на самом деле, Kinect, который раньше назывался Project Natal, его корни — это Z-sensor и Z-cam от 3DV, и Microsoft их купило.


И прородитель этого сенсора здесь живьем. Вот если кто видит на ноутбуке, я тут подхожу, а здесь — карта глубины, а вот собственно Z-sensor.



Как работает конкретно вот этот сенсор? По сути, это как лазерный дальномер. Там посылается пучок света, он отражается от объекта и обратно он приходит с какими-то пикосекундными задержками, а мы их научились измерять каким-то образом. Это по сути время прохождения светового сигнала до объекта и обратно:


Это я записал дома с собою видео, карта глубины как выглядит:


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

Но Kinect, чем он еще отличается. Похоже, несмотря на то, что они это купили, они построили это все на другом принципе2). Потому что у них есть две камеры, которые определяют глубину, и одна — которая RGB3). И похоже, они дают какую-то структурированную подсветку, в инфракрасном диапазоне на объект, и двумя камерами ее снимают, и какой-то достаточно сложный чип ее обсчитывает, в плане корреляции этих изображений c подсветкой, и глубиной до разных точек. Т.е. они по сути, технологию-то сменили.

Еще интересная вещь с Kinect-oм, это что они применили базу данных неких поз, для распознавания… ведь остается задача распознать — в какой позе сейчас человек в данный момент, а им надо в real-time, потому что это все для игр. Они применили какую-то базу данных, и это все очень сложно, очень секретно.4)

Есть какие-то разработки в MIT, которые что-то подобное делают для руки,


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



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



Ну дальше это их фантазии, что руки не помыл, а вот в перчатке берет и моет. Молодцы, с юмором чуваки.

True Optical: several cameras


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



Там какая-то хитрая алгоритмика, там кромсают человека, чтобы восстановить его положение, т.е. все это немножко варварски все это выглядит, вот видео, это Andrew Чеснок, автор идеи и генеральный директор, он к нам на выставке подходил и общался, такой вполне обычный и общительный дяденька-американец.



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

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

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



Вот пример, один из наших пользователей, при помощи нашего Mockupа смастерил вот такой боевичок:



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

True Optical: one moving camera


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



Вот живая программа, которая пытается трекать какие-то точки на изображении, и исходя из этого, находит какие-то плоскости на картинке, в реальном трехмерном мире и на них далее можно сажать каких-то персонажей, все достаточно забавно, вот это живая демонстрация, более того, все это доступно в исходных кодах. Единственное, нет готовых c-build-женых примеров, поэтому надо пройти квест, и суметь это все собрать. Я под Windows не смог, хотя утверждается, что можно. Правда я недолго старался, но если кто сильно заинтересовался, то можно поиграться.

Future


Про будущее. Обязательно в презентации надо говорить про деньги.


Предполагают резкий рост всяких денег, хотя это всего лишь… не так много миллионов долларов, и исследование такое плюшевое.

Но на самом деле на пути к этому есть три проблемы.

Robustness

Первая — это robustn'ость, т.е. на самом деле надежность. Все что вы увидите и будете пробовать пользоваться, оно на самом деле глючит, и как бы ненадежно.


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

Quick response

Второе — это быстрый ответ. Потому что если мы совершаем некоторое действие, а отклик на него мы видим спустя некоторое время, у нас в голове возникает когнитивный диссонанс. Кстати, в этом основная проблема Microsoft Kinect, потому что у них есть весьма заметный лаг, между действием и отображением в игре, и поэтому у них все игры очень плюшевые — не hardcore6). Т.е. в хардкорных таких играх это пока неприменимо, а вот Sony Move — он применим, там лага почти нет, он там в районе десяти миллисекунд.

Helpfulness

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

Зачем это, я не знаю. Так что пока с этим есть некие проблемы.



Future is now

Ну вот как может выглядеть будущее, как себе это видит BMW, вообще, здорово BMW показывать в качестве будущего:



Техник будущего. Т.е. кто-то приехал со своей BMW в армян-сервис, известно, они только вчера из аула, они не знают, как и что устроено в машине, поэтому они надевают специальные очки, она им рисует «Чувак, здесь вот надо два винта открутить». Вот он сказал «Next step», она разобрала армянский акцент, и показала — «теперь это снимай». Так вот можно разобрать, непонятно, можно ли также все собрать обратно, в общем, так себе видит будущее BMW.

Вот так вот снимался фильм AVATAR (слышал высказывание, что смотреть как снимали Avatar значительно интереснее, чем смотреть сам Avatar):



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

Причем они там ездили на реальных лошадях, вместо мифических каких-то скулзов, которые там на Пандоре. В общем, если вы на ютубе наберете «AVATAR MOCKUP», то вы найдете кучу одного и того же ролика, десять раз залитого разными людьми и организациями. Вот, можно приглядется — ей черные точки наносят, это тоже маркеры. В Голливуде они не парятся.

Я так понимаю, там много всяких инноваций было, подсветка лица, чтобы было ярко, и они даже движение глаз научились отслеживать. Вот (сцена с драконом у скалы) — вы думаете это все на компьютере нарисовали? Отрендерили то да, но актерам пришлось полетать.

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




На этом собственно говоря все, SEE YOU IN AR!




Примечания


1) За полгода, прошедшие с момента доклада, Microsoft успела анонсировать новую версию — Surface 2.0, работающую на новых принципах — PixelSense. И уже в ближайшее время ожидается начало продаж устройства SUR400 от Samsung.


2) Как только Kinect-ы поступили в продажу, их сразу разобрали и выяснили, что там стоит чип от PrimeSense. Это тоже Израильская компания (как и 3DV), но они не продались Microsoft-у, так что теперь их же чип стоит в ASUS Xtion.

3) На самом деле там одна инфракрасная камера, одна RGB-камера и инфракрасный лазер для структурированной подсветки. Здравствуй снова структурированный свет! Вот как выглядит комната с работающим Kinect-ом через инфракрасные очки:


4) Не так давно MS Research опубликовало статью на эту тему: Real-Time Human Pose Recognition in Parts from Single Depth Images. Интересно, что в официальном патенте описан несколько иной подход.

5) За это время выпустили версию с поддержкой Kinect-а и сделали массу доработок:


6) Меньше месяца назад MS анонсировала, что готовится новая версия алгоритма трекинга человеческого тела, которая имеет существенно меньшие задержки по времени.
Tags:дополненная реальностьAugumented Realitykinectsony movems surfaceviconструктурированный светZ-сенсорыfuture is now
Hubs: AR and VR
Total votes 53: ↑47 and ↓6 +41
Views7.8K

Popular right now

Программист Android
June 19, 202184,000 ₽GeekBrains
PHP программист
June 19, 202148,000 ₽GeekBrains
Программист iOS
June 19, 202172,000 ₽GeekBrains
WEB-разработчик
June 19, 202196,000 ₽GeekBrains
Frontend-разработчик
June 19, 202160,000 ₽GeekBrains