В соответствии с техническая спецификация 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 демонстрирует проблему и обсуждает способ ее решения с помощью шейдеров.Это видео стоит посмотреть.