通过使用Kinect,我可以得到深度图像,其中每个深度图像像素存储相机和物体之间的距离(以毫米为单位)。现在我想保存它们以便以后使用。什么是最好的推荐?
我正在考虑将深度图像保存为图像(jpg / png等)。但是,该值通常为50毫米至10000毫米,而普通图像元素可以存储0-255。然后我需要将数据扩展到0-255范围,并且可能以某种方式利用数据。
答案 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功能),您的精度将受到更低的伤害