在Matlab中保存Kinect深度图像



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

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

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

使用这些格式的好处当然是,您可以使用其他程序读取它们。您很可能不想使用jpeg格式,因为存在压缩瑕疵。

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

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

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

您可以使用命令save()和load()将矩阵直接存储到光盘中。但只有matlab才能读取。这是最好的选择,因为你一点也不损失精度。

如果必须将值缩放到0..255,则不要线性缩放。距离较近的对象需要更高的精度。因此,只需将以下函数应用于矩阵ln(DepthImage-49)*25,得到大约0..255个值。现在保存图像,并在加载时应用反向功能。通过这种方式(使用lan函数),您的精度将受到较少的损害

最新更新