当我运行此Matlab code来获取深度图像时,我得到的结果是480x640的矩阵。 min元素值为0,max元素值为2711. 2711是什么意思?这是从相机到图像最远部分的距离。但是2711的单位是多少。是那米尺还是?? ??
答案 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)
如果将数据映射到仪表刻度,则会稍微压缩深度图像。当我试图在映射数据中寻找飞机时,我发现这是一个问题。