Размер пикселя Kinect V2

Kinect v2 обеспечивает глубину кадра с разрешением 512 x 424 пикселей с полем зрения 70.6 x 60 degrees в результате чего в среднем около 7 x 7 пикселей на градус. [ Источник].

Однако я не смог найти какую-либо информацию о размере пикселя кадра глубины, или есть какой-либо метод для расчета размера пикселя по данной информации?

1 ответ

Решение

Вы спрашиваете, как вы отображаете размер пикселей в данных глубины?

Система координат глубины ортогональна с ее началом и ориентацией на датчике KINECT. Основная тригонометрия говорит нам, что отношения между противоположной стороной и соседней стороной в прямоугольном треугольнике Tan A = a/bтак по горизонтали имеем tan(FOV/2) = (FrameWidth/2)/depthотсюда FrameWidth = 2*depth*tan(35.3)и так width of 1px = depth*2*tan(35.3)/512Точно так же height of 1px = depth*2*tan(30)/414,

KINECT геометрия поля зрения

const int FRAME_WIDTH = 512;
const int FRAME_HEIGHT = 424;
const float FOV_HORIZONTAL = 70.6 * PI / 180.0; // convert to radians
const float FOV_VERTICAL = 60.0 * PI / 180.0;   // convert to radians
const float HORIZONTAL_SCALING = 2 * std::tan(FOV_HORIZONTAL / 2.0) / (float)FRAME_WIDTH;
const float VERTICAL_SCALING = 2 * std::tan(FOV_VERTICAL / 2.0) / (float)FRAME_HEIGHT;

для каждого пикселя глубины вы можете вычислить его ширину и высоту простым масштабированием:

width = HORIZONTAL_SCALING * (float)depth;
height = VERTICAL_SCALING * (float)depth;
Другие вопросы по тегам