Знаете, меня порой удивляет причудливая структура общественного мнения. Взять к примеру технологию 3D-визуализации. Огромный общественный резонанс вызывают в последнее время технологии очков виртуальной реальности: Oculus Rift, Google Glass. Но ведь ничего нового тут нет, первые шлемы виртуальной реальности появились ещё в конце 90-х. Да, они были сложны, они опередили своё время, но почему тогда это не вызывало такого WOW-эффекта? Или 3D-принтеры. Статьи о том как они круты или как быстро они захватят мир появляются в информационном поле два раза в неделю последние года три. Я не спорю, это круто и мир они таки захватят. Но ведь эта технология была создана ещё в 1980х и с тех пор вяло прогрессирует. 3D-телевидение? 1915 год…
Технологии все эти хороши и любопытны, но откуда столько шумихи из-за каждого чиха?
Что, если я скажу, что в последние 10 лет была изобретена, разработана и внедрена в массовое производство технология 3D съёмки, очень сильно отличающаяся от любой другой? При этом технология уже повсеместно используемая. Отлаженная и доступная простым людям в магазинах. Вы слышали про неё? (наверное только специалисты по робототехнике и сопутствующим областям науки уже догадались, что я говорю про ToF-камеры).
Что такое 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 ». Даётся импульс и в каждой точке матрицы измеряется точное время его возвращения:
По сути матрица состоит из триггеров, срабатывающих по фронту волны. Такой же способ используется в оптических синхронах для вспышек. Только тут на порядки точнее. В этом-то и основная сложность этого метода. Требуется очень точное детектирование времени срабатывания, что требует специфических технических решений (каких — я не смог найти). Сейчас такие сенсоры тестирует NASA для посадочных модулей своих кораблей.
А вот картинки которые она выдаёт:
Подсветки на них хватает, чтобы триггеры срабатывали на оптический поток отражённый с расстояния порядка 1 километра. На графике приведено число сработавших в матрице пикселя в зависимости от расстояния 90% работают на расстоянии в 1км:
Второй способ — постоянная модуляция сигнала. Излучатель посылает некоторую модулированную волну. Приёмник находит максимум корреляции того, что он видит с этой волной. Это определяет время, которое сигнал потратил на то, чтобы отразиться и прийти на приёмник.
Пусть излучается сигнал:
где w — модулирующая частота. Тогда принятый сигнал будет выглядеть как:
где b-некий сдвиг, a-амплитуда. Корреляция входящего и исходящего сигнала:
Но полную корреляцию со всеми возможными сдвигами по времени произвести достаточно сложно за реальное время в каждом пикселе. Поэтому используется хитрый финт ушами. Полученный сигнал принимается в 4 соседних пикселя со сдвигом в 90⁰ по фазе и коррелируется сам с собой:
Тогда сдвиг по фазе определяется как:
Зная полученный сдвиг по фазе и скорость света получаем дальность до объекта:
Эти камеры чуть попроще, чем те, что построены по первой технологии, но всё равно сложны и дороги. Делает их вот эта компания. И стоят они порядка 4килобаксов. Зато симпатишные и футуристичные:
Третья технология — " Range gated imagers ". По сути затворная камера. Идея тут до ужаса проста и не требует ни высокоточных приёмников, ни сложной корреляции. Перед матрицей стоит затвор. Предположим, что он у нас идеальный и работает моментально. В момент времени 0 включается освещение сцены. Затвор закрывается в момент времени t. Тогда объекты, расположенные дальше, чем t/(2∙c), где с — скорость света видны не будут. Свет просто не успеет долететь до них и вернуться назад. Точка, расположенная вплотную к камере будет освещаться всё время экспозиции t и иметь яркость I. Значит любая точка экспозиции будет иметь яркость от 0 до I, и эта яркость будет репрезентацией расстояния до точки. Чем ярче — тем ближе.
Осталось сделать всего пару мелочей: ввести в модель время закрытия затвора и поведение матрицы при этом событии, неидеальность источника освещения (для точечного источника света зависимость дальности и яркости не будет линейной), разную отражающую способность материалов. Это очень большие и сложные задачи, которые авторы устройств решили.
Такие камеры самые неточные, но зато самые простые и дешёвые: всю сложность в них составляет алгоритм. Хотите пример того как выглядит такая камера? Вот он:
Да-да, во втором Kinect стоит именно такая камера. Только не стоит путать второй Kinect с первым (на хабре когда-то давно была хорошая и подробная статья где всё же перепутали). В первом Kinect используется структурированная подсветка. Это куда более старая, менее надёжная и более медленная технология:
Там используется обычная инфракрасная камера, которая смотрит на проектируемый паттерн. Его искажения определяют дальность (сравнение методов можно посмотреть вот тут).
Но Kinect далеко не единственный представитель на рынке. Например Intel выпускает камеру за 150 долларов, которая выдаёт 3д карту изображения. Она ориентирована на более ближнюю зону, но у них есть SDK для анализа жестов в кадре. Вот ещё один вариант от SoftKinetic (у них тоже есть SDK, плюс они как-то завязаны на texas instruments).
Сам я, правда до сих пор не сталкивался ни с одной из этих камер, что жалко и досадно. Но, думаю и надеюсь, что через пяток лет они войдут в обиход и моя очередь настанет. Насколько я знаю, их активно используют при ориентации роботов, внедряют в системы распознавания по лицам. Круг задач и применений очень широк.
Автор: ZlodeiBaal