Time of flight

в 18:00, , рубрики: Без рубрики

Знаете, меня порой удивляет причудливая структура общественного мнения. Взять к примеру технологию 3D-визуализации. Огромный общественный резонанс вызывают в последнее время технологии очков виртуальной реальности: Oculus Rift, Google Glass. Но ведь ничего нового тут нет, первые шлемы виртуальной реальности появились ещё в конце 90-х. Да, они были сложны, они опередили своё время, но почему тогда это не вызывало такого WOW-эффекта? Или 3D-принтеры. Статьи о том как они круты или как быстро они захватят мир появляются в информационном поле два раза в неделю последние года три. Я не спорю, это круто и мир они таки захватят. Но ведь эта технология была создана ещё в 1980х и с тех пор вяло прогрессирует. 3D-телевидение? 1915 год…

Технологии все эти хороши и любопытны, но откуда столько шумихи из-за каждого чиха?

Что, если я скажу, что в последние 10 лет была изобретена, разработана и внедрена в массовое производство технология 3D съёмки, очень сильно отличающаяся от любой другой? При этом технология уже повсеместно используемая. Отлаженная и доступная простым людям в магазинах. Вы слышали про неё? (наверное только специалисты по робототехнике и сопутствующим областям науки уже догадались, что я говорю про ToF-камеры).
Time of flight
Что такое ToF камера? В русской Википедии (англ) вы не найдёте даже коротенького упоминания о том, что это такое. «Time of flight camera» переводится как «Времяпролётная камера». Камера определяет дальность через скорость света, измеряя время пролёта светового сигнала, испускаемого камерой, и отражённого каждой точкой получаемого изображения. Сегодняшним стандартом является матрица 320*240 пикселей (следующее поколение будет 640*480). Камера обеспечивает точность измерения глубины порядка 1 сантиметра. Да-да. Матрица из 76800 сенсоров, обеспечивающих точность измерения времени порядка 1/10,000,000,000 (10^-10) секунды. В продаже. За 150 баксов. А может вы ею даже пользуетесь.
А теперь чуть подробнее про физику, принцип работы, и где вы встречали эту прелесть.

Существуют три основных типа ToF-камер. Для каждого из типов используется своя технология измерения дальности положения точки. Самая простая и понятная — «Pulsed Modulation» она же «Direct Time-of-Flight imagers ». Даётся импульс и в каждой точке матрицы измеряется точное время его возвращения:
Time of flight
По сути матрица состоит из триггеров, срабатывающих по фронту волны. Такой же способ используется в оптических синхронах для вспышек. Только тут на порядки точнее. В этом-то и основная сложность этого метода. Требуется очень точное детектирование времени срабатывания, что требует специфических технических решений (каких — я не смог найти). Сейчас такие сенсоры тестирует NASA для посадочных модулей своих кораблей.
Time of flight
А вот картинки которые она выдаёт:
Time of flight
Подсветки на них хватает, чтобы триггеры срабатывали на оптический поток отражённый с расстояния порядка 1 километра. На графике приведено число сработавших в матрице пикселя в зависимости от расстояния 90% работают на расстоянии в 1км:
Time of flight
Второй способ — постоянная модуляция сигнала. Излучатель посылает некоторую модулированную волну. Приёмник находит максимум корреляции того, что он видит с этой волной. Это определяет время, которое сигнал потратил на то, чтобы отразиться и прийти на приёмник.
Time of flight
Пусть излучается сигнал:
Time of flight
где w — модулирующая частота. Тогда принятый сигнал будет выглядеть как:
Time of flight
где b-некий сдвиг, a-амплитуда. Корреляция входящего и исходящего сигнала:
Time of flight
Time of flight
Но полную корреляцию со всеми возможными сдвигами по времени произвести достаточно сложно за реальное время в каждом пикселе. Поэтому используется хитрый финт ушами. Полученный сигнал принимается в 4 соседних пикселя со сдвигом в 90⁰ по фазе и коррелируется сам с собой:
Time of flight
Тогда сдвиг по фазе определяется как:
Time of flight
Зная полученный сдвиг по фазе и скорость света получаем дальность до объекта:
Time of flight
Эти камеры чуть попроще, чем те, что построены по первой технологии, но всё равно сложны и дороги. Делает их вот эта компания. И стоят они порядка 4килобаксов. Зато симпатишные и футуристичные:
Time of flight
Третья технология — " Range gated imagers ". По сути затворная камера. Идея тут до ужаса проста и не требует ни высокоточных приёмников, ни сложной корреляции. Перед матрицей стоит затвор. Предположим, что он у нас идеальный и работает моментально. В момент времени 0 включается освещение сцены. Затвор закрывается в момент времени t. Тогда объекты, расположенные дальше, чем t/(2∙c), где с — скорость света видны не будут. Свет просто не успеет долететь до них и вернуться назад. Точка, расположенная вплотную к камере будет освещаться всё время экспозиции t и иметь яркость I. Значит любая точка экспозиции будет иметь яркость от 0 до I, и эта яркость будет репрезентацией расстояния до точки. Чем ярче — тем ближе.
Осталось сделать всего пару мелочей: ввести в модель время закрытия затвора и поведение матрицы при этом событии, неидеальность источника освещения (для точечного источника света зависимость дальности и яркости не будет линейной), разную отражающую способность материалов. Это очень большие и сложные задачи, которые авторы устройств решили.
Такие камеры самые неточные, но зато самые простые и дешёвые: всю сложность в них составляет алгоритм. Хотите пример того как выглядит такая камера? Вот он:
Time of flight
Да-да, во втором Kinect стоит именно такая камера. Только не стоит путать второй Kinect с первым (на хабре когда-то давно была хорошая и подробная статья где всё же перепутали). В первом Kinect используется структурированная подсветка. Это куда более старая, менее надёжная и более медленная технология:
Time of flight Time of flight
Там используется обычная инфракрасная камера, которая смотрит на проектируемый паттерн. Его искажения определяют дальность (сравнение методов можно посмотреть вот тут).
Но Kinect далеко не единственный представитель на рынке. Например Intel выпускает камеру за 150 долларов, которая выдаёт 3д карту изображения. Она ориентирована на более ближнюю зону, но у них есть SDK для анализа жестов в кадре. Вот ещё один вариант от SoftKinetic (у них тоже есть SDK, плюс они как-то завязаны на texas instruments).
Time of flight Time of flight
Time of flight
Сам я, правда до сих пор не сталкивался ни с одной из этих камер, что жалко и досадно. Но, думаю и надеюсь, что через пяток лет они войдут в обиход и моя очередь настанет. Насколько я знаю, их активно используют при ориентации роботов, внедряют в системы распознавания по лицам. Круг задач и применений очень широк.

Автор: ZlodeiBaal

Источник

Поделиться

* - обязательные к заполнению поля