从Kinect收到的深度图像是什么?

时间:2011-06-06 14:35:09

标签: matlab kinect color-depth

当我运行此Matlab code来获取深度图像时,我得到的结果是480x640的矩阵。 min元素值为0,max元素值为2711. 2711是什么意思?这是从相机到图像最远部分的距离。但是2711的单位是多少。是那米尺还是?? ??

2 个答案:

答案 0 :(得分:5)

我不知道Matlab代码究竟对深度做了什么,但它可能会对它进行一些处理,因为Kinect发送的深度是11位,所以它不应该高于2048。找出它的作用,或访问Kinect发送的原始数据。

Kinect发送的数据不是一个合适的距离(它是一个“差异”),所以你必须做一些数学运算才能将它转换成有用的单位。

来自OpenKinect project wiki(其中包含有关Kinect的有用信息):

  

从他们的数据,基本的第一顺序   转换原始的近似值   深度为11位差异值   以厘米为单位的值是:100 /( - 0.00307   * rawDisparity + 3.33)。这个近似值约为10厘米   距离4米远,不到2厘米   在2.5米范围内。

     

更好的近似给出   StéphaneMagnenat在this post:   距离= 0.1236 * tan(rawDisparity /   以米为单位的2842.5 + 1.1863)。添加最终偏移项-0.037中心   最初的ROS数据。晒黑   近似值具有平方和   差异为.33厘米而1 / x   近似值约为1.7厘米。

     

一旦你有了距离   测量上面,一个好   转换(i,j,z)的近似   到(x,y,z)是:

x = (i - w / 2) * (z + minDistance) * scaleFactor * (w/h)
y = (j - h / 2) * (z + minDistance) * scaleFactor
z = z
Where
minDistance = -10
scaleFactor = .0021.
These values were found by hand.

您可以在ROS website(以及其他许多人)上找到有关Kinect深度相机及其校准的更多详细信息。

答案 1 :(得分:0)

如果将数据映射到仪表刻度,则会稍微压缩深度图像。当我试图在映射数据中寻找飞机时,我发现这是一个问题。