三通道浮点型数据存储到图片中

在实际工作中,会遇到需要将浮点型数据(float或者double)的数据存在一张图中的问题,例如需要将有序点云的x y z坐标存在一张标准格式的图片中便于后续使用(halcon的3D匹配可用)。然而,大多数情况下,图片只能以整型的形式被存储在图片中,例如.bmp .jpeg .png等等,无法满足浮点数据存储的要求。但是,好在有一种牛逼的图像文件格式——TIFF,几乎可以存储所有的数据,甚至包括字符串。。。而且该格式文件还独立于操作系统,使用十分方便!

但是,使用TIFF格式存储浮点型数据并非易事!我花了近两天的时间,想了各种办法去将三通道的浮点数据存进TIFF图片中,遇到了许多的问题,要么是无法正确保存浮点数据(单通道可以),要么是保存的浮点数据不能被一些软件正常打开。。。当然,我也尝试了用OpenCV的API函数imwrite,并且设置各种param,但是还是不行(可能是我的param没有设置正确。。。),网上搜了大量的资料,也问了不少人。。。总是无法搞定这个看似简单的问题。

最终,我尝试使用TIFF的源码!通过直接制作TIFF格式的文件,终于成功了!链接TIFF库文件:http://www.libtiff.org/

------

关键参数设置如下:

保存成功的图片属性如下:

三通道浮点型数据存储到图片中_第1张图片

加载图片后的数据如下:

------------

成功搞定TIFF的浮点数据存储具有很大的意义,因为这样三维重建得到的有序点云数据就可以直接用图片的形式呈现了。

你可能感兴趣的:(三通道浮点型数据存储到图片中)