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