将双精度矩阵保存为图像

时间:2015-07-28 12:21:13

标签: image matlab floating-point double

我有一个双值矩阵(例如,22.51,23.15,...),其中每个值对应一个温度。因此,矩阵是热图像。热像仪的软件产生一种奇怪的输出格式,只有这个软件才能读取。

因此,我有两个问题:

  1. 如何将双矩阵写入图形文件,使图像质量反映矩阵中的实际值?
  2. 是否有一种聪明的,记忆效率高的方法来存储图像中的温度值(例如,这也可以通过窗口轻松解释)?我想这可能很难,因为图像格式每像素的位数不够?否则,我必须将温度存储在csv文件中,例如。
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

此类情况的一个选项是使用FITS而不是标准图像格式。 MATLAB支持读取(fitsread)和编写(fitswrite)这些文件,而许多其他程序(如ImageJ或GIMP)可以处理(大多数).fits文件。

在最基本的层面:

I = rand(100) + 20; %100x100 matrix of doubles
fitswrite(I,'test.fits');
I2 = fitsread('test.fits'); % returns the 100 x 100 matrix of doubles

然而,我个人的偏好是将两个功能分开 - 准确存储数据,并存储易于查看的图像。您可以使用sprintf构建文件名,也可以只使用简单的字符串连接。可能使用fileparts去除原始数据文件的名称,减去扩展名,然后保存更易于阅读的(.csv)数据版本和更容易查看的图像版本。

[path, name, ext] = fileparts('my_data_file.dat');
% returns name = 'my_data_file'
% if path is important, use "fullfile" function instead of below lines
fname = [name,'.csv']; % or however you store data
iname = [name, '.png']; % or preferred image format
相关问题