0

我有一张从 Kinect V2 拍摄的深度图像,如下所示。我想在 Matlab 中提取任何特定坐标处的像素值 x 及其深度值。我在 Matlab 中使用了以下代码,但它给了我 16 位的值。但是,我不确定它是像素 x 的像素值还是深度值。

im=imread('image_depth.png');
val=im(88,116);
display(val);

Result
val= (uint16) 2977

有人可以帮助我,如何在 Matlab 中提取像素和深度值?

深度图像

4

2 回答 2

1

图像名称暗示它是深度图。颜色图通常以不同的分辨率存储在单独的文件中,如果尚未对齐,则存在一些偏移量。要对齐RGB和深度图像,请参见:

还有子链接...

您提供的带有颜色选择器的图像与0x000B0B0B内部轮廓的颜色相同。这暗示它不是深度图,或者它的位宽太低,或者SO+Brownser转换失去精度。如果内部的任何像素也为您返回相同的数字,则深度图不可用。

如果您的峰值返回 16 位值,它会提示 RAW Kinect深度值。如果情况见:

否则,它可能只是缩放深度,因此您可以将x值转换为深度,例如:

depth = a0 + x*(a1-a0)

<a0,a1>应该在数据集源中某处说明的图像的深度范围在哪里...

于 2017-08-21T06:44:33.973 回答
0

根据您的描述和文件名,图像中每个位置的值都是深度值。

如果您需要每个像素的实际颜色值,它们可能会存储在单独的图像文件中,希望具有相同的尺寸。

您在这里看到的可能是使用 MATLAB 或您的图片查看软件标准化为可显示区域的深度值。

您需要查看规范以了解 2977 之类的值如何转换为物理世界(例如 cm)。希望它只是一个标量值,您可以乘以得到该答案。

于 2017-08-20T03:40:28.260 回答