當我運行此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