0

kinect v2 提供具有512 x 424像素分辨率的深度帧,其 fov70.6 x 60 degrees导致平均7 x 7每度大约像素。[来源]。

但是,我无法找到有关深度帧像素大小的任何信息,或者是否有任何方法可以根据给定信息计算像素大小?

4

1 回答 1

4

您是在问如何在深度数据中映射像素大小吗?

深度坐标系与其在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;
于 2017-08-03T10:12:09.087 回答