6

通过使用 Kinect,我可以获得深度图像,其中每个深度图像像素存储相机和物体之间的距离(以毫米为单位)。现在我想保存它们以便以后使用。最好的建议是什么?

我正在考虑将深度图像保存为图像(jpg/png 等)。但是,该值通常从 50 毫米到 10000 毫米,而普通图像元素可以存储 0-255。然后我需要将数据缩放到 0-255 范围内,这可能会以某种方式利用数据。

4

2 回答 2

8

您可以使用任何支持 16 位灰度图像的格式,例如 tiff 或 png,因为您的数据适合 16 位 (2^16-1=65535)。

使用这些格式的好处当然是您可以使用其他程序来阅读它们。由于压缩伪影,您很可能不想使用 jpeg 格式。

以下是 matlab 文档中关于 imwrite 的 png 格式的说明:

默认情况下,如果 image 为 double 或 uint8,则 imwrite 每个像素使用 8 位;如果图像是 uint16,则每像素 16 位;如果图像是逻辑的,则每像素 1 位。

因此,如果您将数据存储为 uint16 就可以了。

于 2011-06-13T07:13:14.983 回答
2

您可以使用命令 save() 和 load() 将矩阵直接存储到磁盘。但是只有 matlab 才能读取它。这是最佳选择,因为您根本不会失去精度。

如果您必须将值缩放到 0..255,则不要线性缩放它。对于更近的物体,您需要更高的精度。因此,只需将以下函数应用于矩阵 ln(DepthImage - 49)*25 即可获得大约 0..255 个值。现在保存图像并在加载时应用反向功能。这样(使用 lan 函数)你的精度会受到更少的伤害

于 2011-06-12T19:48:46.043 回答