Подтвердить что ты не робот

Точность камеры глубины kinect

Насколько точна камера глубины в kinect?

  • диапазон?
  • разрешение?
  • шум?

Особенно мне хотелось бы знать:

  • Есть ли официальные спецификации об этом от Microsoft?
  • Есть ли какие-либо научные статьи по этому вопросу?
  • Исследования TechBlogs?
  • Личные эксперименты, которые легко воспроизводить?

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

4b9b3361

Ответ 1

  • Диапазон: ~ 50 см до 5 м. Может быть ближе (~ 40 см) по частям, но полный обзор не может быть & lt; 50 см.
  • Горизонтальное разрешение: 640 x 480 и 45 градусов по вертикали и 58 градусов по горизонтали. Простые геометрические представления составляют примерно ~ 0,75 мм на пиксель x на y при 50 см и ~ 3 мм на пиксель x на y на 2 м.
  • Разрешение по глубине: ~ 1,5 мм при 50 см. примерно 5 см на 5 м.
  • Шум: около DN +-1 на всех глубинах, но DN до глубины нелинейный. Это означает, что +-1 мм близко, а + - 5 см далеко.

Есть официальные спецификации от разработчика сенсора, а не от Microsoft. Нет научных работ, о которых я знаю пока. Много исследований и экспериментов (см. Google). В OpenKinect сейчас обсуждается гораздо больше, чем на этом сайте.

Ответ 2

Kinect для Windows SDK предоставляет некоторые константы, которые я использовал и кажутся последовательными. Для диапазона и разрешения эти значения:

В режиме по умолчанию:

  • Минимальный диапазон: 80 см
  • Максимальный диапазон: 400 см

В ближнем режиме:

  • Минимальный диапазон: 40 см
  • Максимальный диапазон: 300 см

Для цветной камеры у вас может быть одно из следующих разрешений:

  • 80x60
  • 320x240
  • 640х480
  • 1280x960

Для камеры глубины вы можете иметь одно из следующих разрешений:

  • 80x60
  • 320x240
  • 640х480

Конфликт с информацией из Avada Kedavra (и из большинства источников, кстати), значения для поля , заданного API следующие:

Для цветной камеры:

  • Горизонтальное FOV: 62,0 °
  • Вертикальное FOV: 48,6 °

Для камеры глубины:

  • Горизонтальное FOV: 58,5 °
  • Вертикальное FOV: 45,6 °

Источник: http://msdn.microsoft.com/en-us/library/hh855368

Ответ 3

Реальный вопрос здесь касался разрешения и точности. Я позабочусь об этом здесь, так как считаю, что разрешение и точность не так хороши, как указано. Максимальный выход разрешения по глубине - действительно 640x480, однако это не эффективное разрешение, и это не совсем точно.

Метод, в котором работает kinect, основан на структурированной проекции света. Образец света излучается и наносится на поверхность, которую камера видит, а затем триангулирует каждый луч от источника, отскакивает от объекта, до камеры.

Дело в том, что этот шаблон состоит из 34.749 ярких пятен, которые могут быть триангулированы (http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/). Если мы свяжем это с разрешением 640x480 = 307.200 точек данных, мы замечаем большую разницу. Спросите себя, может ли количество данных, в 10 раз превышающее количество точек данных источника, быть действительным и эффективно отбираться. Я сомневаюсь в этом. Если бы вы спросили меня, каково эффективное разрешение kinect, я бы предположил, что это около 240x180 честных и довольно хороших данных.

Ответ 4

В соответствии с техническая спецификация Kinect наконец показала спецификации для поля глубины (этот матч также подтвержден в официальном руководстве по программированию, опубликованном Mannimarco):

* Horizontal field of view: 57 degrees
* Vertical field of view: 43 degrees
* Physical tilt range: ± 27 degrees
* Depth sensor range: 1.2m - 3.5m
* Resolution depth stream: 320x240 pixels
* Resolution color stream: 640x480 pixels

Но по собственному опыту диапазон датчиков глубины больше похож на 0.8m-4.0m, по крайней мере, я получаю хорошее считывание в этом диапазоне. Этот диапазон соответствует листу данных Primesense, опубликованному mankoff в комментариях ниже.

Также важно помнить, что разрешение по глубине намного выше, чем у датчика. На 3-4 метра разрешение не так хорошо, как на 1,5 м. Это становится важным, если вы, например, хотите вычислить нормали поверхности. Результат будет лучше ближе к датчику, чем дальше.

Не трудно тестировать диапазон самостоятельно. Официальный SDK (в настоящее время бета) даст вам нулевую (0) глубину, когда вы находитесь за пределами допустимого диапазона. Таким образом, вы можете протестировать это с помощью простой линейки и проверить, на каком расстоянии вы получаете/не получаете чтение больше нуля. Я не знаю, как OpenKinect SDK обрабатывает показания вне диапазона.

Комментарий о шуме: я бы сказал, что в потоке глубины есть довольно много шума, из-за которого сложнее работать. Например, если вы вычисляете нормали поверхности, вы можете ожидать, что они будут немного "прыгающими", что, конечно, будет иметь негативное влияние на поддельное освещение и т.д. Кроме того, у вас есть проблема параллакса в потоке глубины из-за расстояния между ИК-передатчиком и приемником. С этим также трудно работать, поскольку он оставляет большую "тень" в данных глубины. Это видео youtube демонстрирует проблему и обсуждает способ решения проблемы с использованием шейдеров. Его видео стоит посмотреть.

Ответ 5

Я думаю, что стоит упомянуть статью Хошельэма и Эльберника, которые предложили теоретическую случайную модель ошибки датчика глубины кинов в феврале12. Он называется "Точность и разрешение глубинных данных Kinect для приложений внутреннего картографирования". Бумагу можно найти здесь.

Ответ 6

Если вы ищете что-то, опубликованное Microsoft, посмотрите страницу Руководство по программированию Kinect. В нем говорится почти то же самое, о чем здесь уже упоминалось.

  • Диапазон: от 1,2 до 3,5 м.
  • Угол обзора: 43 ° по вертикали на 57 ° по горизонтали.
  • Механизированный диапазон наклона: ± 28 °
  • Частота кадров: 30 кадров в секунду
  • Разрешение, поток глубины: 320 x 240 (он может действительно превышать этот уровень)
  • Разрешение, цветовой поток: 640 x 480 (опять же, он может повышаться)

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

Ответ 7

Мой опыт показывает, что это не так точно. Это довольно хорошо, но когда вы сравниваете это с рулеткой, то это не совсем совпадает. Я сделал Excel с измерениями на каждые 10 мм, и он просто не выдерживает, особенно те, которые находятся на расстоянии более 2500 мм, но также и ближе.

Имейте также в виду, что фактическая глубина пикселей намного ниже, чем рекламируется. Электроника внутри заполняет дыхание, поэтому вы видите артефакты небольшой площади, а не что-то вроде данных пикселей. По сути, это означает, что 320x240 имеет 1/8 пикселей, покрытых "реальным" измерением, остальные пиксели вычисляются. Таким образом, вы можете использовать 640x480; но это только ресурс CPU/UBS и не заставит ваше приложение лучше видеть.

Это всего лишь два моих цента опыта, я программирую робототехнику.