当我运行此Matlab code获得深度图像时,我得到的结果是一个480x640的矩阵。最小元素值是0,最大元素值是2711. 2711是什么意思?这是从相机到图像最远部分的距离。但是2711的单位是多少?什么是从Kinect收到的深度图像
回答
我不知道Matlab代码对深度有什么影响,但它可能会对它进行一些处理,因为Kinect发送的深度是11位,所以它不应该高于2048.尝试了解它的功能,或者访问由Kinect发送的原始数据。
由Kinect发送的数据不是一个合适的距离(这是一个“不一致”),所以你必须做一些数学转换为有用的单位。
从OpenKinect project wiki(其中包含有关Kinect的有用信息):
从他们的数据,一个基本的一阶 近似为以厘米为单位的原始 11位视差值转换成深度 值是:100 /( - 0.00307 * rawDisparity + 3.33)。这种近似值在距离4米处约为10厘米,距离在2.5米以内不到2厘米。
更好的近似由 斯特凡Magnenat在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深度相机及其校准的更多细节。
非常感谢您 – John 2011-06-06 15:11:52
对于rawDisparity>〜1100,tan函数是负值http://www.wolframalpha.com/input/?i= y +%3D + .1236 + * + tan%28x +%2F + 2842.5 +%2B + 1.1863%29 +从+ 300 +到+ 2000。我误解了吗? – 2011-11-17 04:09:47
哦,我看到第一个大致相同 - 然后我只是不明白这些方程的正确使用。 – 2011-11-17 04:14:36
如果您将数据映射到米级,它会稍微压缩深度图像。当我试图在映射数据中查找平面时,发现这是一个问题。
- 1. 从Kinect 2获取度量深度图
- 2. Kinect深度图像仅部分可见
- 3. 在Matlab中保存Kinect深度图像?
- 4. 来自Kinect的深度图像:索引图像?
- 5. 从mm到像素的Kinect深度转换
- 6. 合并rgb和深度图像从一个kinect
- 7. 从Kinect V2 RGB和深度图像创建脱机点云
- 8. Kinect V2深度帧像素尺寸
- 9. 比较Kinect的深度到OpenGL的深度有效
- 10. 有人用kinect-v2中的openNI获得了深度图像?
- 11. 如何从Kinect深度流中获取原始深度值?
- 12. 删除Kinect深度阴影
- 13. Kinect在全屏模式下显示深度图像
- 14. Kinect和Opencv,深度图像,如何使用它
- 15. 从kinect保存的图像是黑色
- 16. 使用Kinect 1.0 SDK对RGB图像进行深度图像故障修正
- 17. 什么应该是灰度和黑白图像的卷积层的深度?
- 18. 从WPF上的Kinect RGB摄像机接收连续图像?
- 19. 从Kinect获取深度数据遇到麻烦
- 20. 的Kinect V2阅读深度问题
- 21. kinect深度相机的更改范围
- 22. 什么是BST以上的深度
- 23. 如何填写的黑色斑块在Kinect的V1深度图像
- 24. 什么是从图像
- 25. 微软Kinect V2 + Unity 3D深度=翘曲
- 26. 用kinect获得鼠标点击深度
- 27. pcl ::点云到cv ::垫深度图像
- 28. 的Kinect从骨架数据转换成深度数据和回
- 29. 图像位深度值
- 30. Kinect 2的原始深度数据是否完全未过滤?
matlab代码包装OpenNI。我不知道深度图本身,但OpenNI/NITE标准的骨骼,手势等单位是毫米。深度/ z值实际上是距离原点(这是设备本身)的距离 – Artium 2011-06-12 00:35:58