Камеры глубины
Камера глубины - это камера, измеряющая расстояние от камеры до наблюдаемых объектов.
Такая камера выдает кадры изображений, которые называются картой глубины. Карта глубины это растр, пиксели которого хранят расстояния до объектов в миллиметрах.
Используя карту глубины и известные характеристики оптической системы камеры, можно построить трехмерное облако точек, представляющее наблюдаемую камерой сцену в виде трехмерного скопления точек в пространстве.
Часто камеры глубины оснащены не только сенсором расстояния, но и цветовым сенсором (RGB-камерой, то есть фактически обычной вебкамерой). В этом случае, для каждого пикселя карты глубины можно указать цвет,
и тогда растр называется RGBD-растр (red, green, blue, depth).
Также, для каждой точки в облаке точек можно указать цвет, и тогда это будет облако точек,
Применение
По сравнению с обычными вебкамерами, камеры глубины позволяют эффективно решать многие задачи, такие, как отделение силуэта от фона и обнаружение объектов, движущихся напротив стены или у пола.
- Отделение силуэта от фона осуществляется с помощью пороговой обработки карты глубины - тогда, мы получаем маске силуэтов объектов, расположенных на расстоянии не дальше заданного от камеры (проект Сканер). Этот подход работает надежнее, чем хромакеинг в случае использования обычных веб-камер, и не требует наличия однородного по цвету фона.
- Запоминая карту глубин на сцене без объектов и затем сравнивая ее с текущей картой глубин, можно вычислять маски объектов, движущихся у стены или пола, и строить интерактивные поверхности (проект Floor Games).
- Путем калибровки камеры глубины и проектора, можно строить маски для освещения проектором движущихся объектов - это основа так называемого динамического видеомэппинга (проект Барокко).
Используя несколько камер глубины, возможно осуществлять сшивку облаков точек, что позволяет вести сканирование объектов со всех сторон в реальном времени (если камеры стоят по кругу) или сканировать большие коридоры (если камеры стоят в ряд, как в проекте Quantum Space).
Некоторые камеры глубины оснащены программным обеспечением, позволяющим анализировать облако точек и вычленять в нем силуэты людей, а также строить по ним трехмерную модель человеческого тела: Microsoft Kinect SDK для камер Kinect, а также OpenNI для Kinect 1 и Xtion. Эта технология называется "трекинг скелета" (skeletal tracking), что позволяет распознавать жесты человека, такие, как вытянутая рука (проект Интерактивные Гиды).
Ограничения
Использование камер глубины обычно требует больших вычислительных мощностей по сравнению с другими сенсорами (например, Kinect 2 - подключение по USB 3.0).
Кроме того, есть ограничения на дальность и условия освещения (камеры с активной подсветкой плохо работают при солнечном свете, стереокамеры плохо работают в слабом освещении).
Помимо этого, камеры глубины плохо работают с полупрозрачными объектами, а камеры, основанные на активной ИК-подсветке, плохо работают с черными объектами и объектами, излучающими свет.
Модели камер
Основные модели камер глубины:
- Microsoft Kinect 1 - хорошее устройство для начала экспериментов с глубиной. Основано на активной ИК-подсветке. Меряет расстояния до 7 метров. Есть встроенная RGB-камера.
- Asus Xtion - аналог Kinect 1, но меньших размеров и не требующее дополнительного питания от адаптера. Более удобен в реальных работах. Есть модель без встроенной RGB-камеры.
- Microsoft Kinect 2 - устройство следующего поколения по сравнению с Kinect 1, дает значительно лучшую карту глубины и облако точек, а также имеет более широкий угол обзора. В то же время, она потребляет относительно много ресурсов CPU и GPU. RGB-камера высокого качества, выдает FullHD-изображение.
Stereolabs ZED - пассивная стереокамера (состоит из двух вебкамер), поэтому, отличие от Kinect, работает на ярком свете, и меряет расстояния до 20 метров, но качество карты глубины не такое высокое (пересглаженные контуры), особенно на однородных поверхностях. Выдает два RGB-изображения с каждой из встроенных вебкамер, при этом допустимо качество выше FullHD.
Tara Stereo Camera
DUO mini lx - Dense3D SDK
Внимание: Leap Motion - формально, это стереокамера, предназначенная для трекинга рук, но в текущей версии драйвероа она не выдает карту глубин и облако точек, поэтому ее применение в интерактивных проектах ограничено.