在Matlab中保存Kinect深度图像?

时间:2011-06-12 18:18:39

标签: matlab image-processing depth kinect

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

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

2 个答案:

答案 0 :(得分:8)

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

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

以下是matlab文档中有关png格式的imwrite的内容:

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

如果您将数据存储为uint16,那么您已经很好了。

答案 1 :(得分:2)

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

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