我有从Kinect V2拍摄的深度图像,如下所示。我想在Matlab中提取任何特定坐标及其深度值的像素值x。我在Matlab中使用了以下代码,但它给了我16位的值。但是,我不确定像素值或像素x的深度值。
im=imread('image_depth.png');
val=im(88,116);
display(val);
Result
val= (uint16) 2977
有人请帮助我,如何在Matlab中提取像素和深度值?
答案 0 :(得分:1)
图像名称提示它是深度图。颜色图通常以不同的分辨率存储在单独的文件中,如果没有对齐,则存在一些偏移。要对齐 RGB 和深度图像,请参阅:
和子链接......
您提供的图像与颜色选择器的峰值相同,内部轮廓的颜色为0x000B0B0B
。这暗示它要么不是深度图,要么它的位宽太低或 SO + Brownser 转换失去精度。如果内部的任何像素也为您返回相同的数字,那么深度图将无法使用。
如果您的峰值返回16位值,则会提示RAW Kinect 深度值。如果案件见:
否则它可能只是缩放深度,因此您可以将x
值转换为深度,如:
depth = a0 + x*(a1-a0)
其中<a0,a1>
是图像的深度范围,应在数据集源中的某处说明......
答案 1 :(得分:0)
根据您的说明和文件名,图片中每个位置的值都是深度值。
如果您需要每个像素的实际颜色值,它们可能会存储在单独的图像文件中,希望具有相同的尺寸。
您在这里看到的可能是使用MATLAB或您的图片查看软件将深度值标准化为可显示区域。
您需要查看规范以了解2977之类的值如何转换为物理世界(例如cm)。希望它只是一个标量值,你可以乘以得到答案。