Image 将双矩阵另存为MATLAB中的图像文件
我有一个数据类型为double的矩阵Image 将双矩阵另存为MATLAB中的图像文件,image,matlab,type-conversion,png,tiff,Image,Matlab,Type Conversion,Png,Tiff,我有一个数据类型为double的矩阵sig_matrix,其值如下: 3,0450 3,0450 3,0450 2,6200 2,6050 2,5900 2,5250 2,5200 2,5150 2,3800 2,3800 2,3650 2,6050 2,6650 2,7350 我需要另存为图像文件,但问题是:像jpg、png这样的图像类型只接受整数数据(uint8、uint16),但我确实需要将数据另存为double 我尝试使用以下代码保存为TIF文件: t = Tiff
sig_matrix
,其值如下:
3,0450 3,0450 3,0450
2,6200 2,6050 2,5900
2,5250 2,5200 2,5150
2,3800 2,3800 2,3650
2,6050 2,6650 2,7350
我需要另存为图像文件,但问题是:像jpg、png这样的图像类型只接受整数数据(uint8、uint16),但我确实需要将数据另存为double
我尝试使用以下代码保存为TIF文件:
t = Tiff('test.tif', 'w8');
setTag(t,'Photometric',Tiff.Photometric.RGB);
setTag(t,'ImageLength',length(sig_matrix));
setTag(t,'ImageWidth',length(sig_matrix));
setTag(t,'BitsPerSample',64);
setTag(t,'SamplesPerPixel',3);
setTag(t,'SampleFormat', 3);
setTag(t,'PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);
setTag(t,'Compression',Tiff.Compression.None);
write(t,repmat(sig_matrix, [1 1 3]));
close(t);
它起作用了,但后来我尝试将该文件转换为yuv(例如使用ffmpeg
),但我得到了一个错误(更具体地说,是无效的TIFF头)
所以,我需要将双矩阵保存为图像文件,然后转换为yuv
有人能帮我吗
Obs.:我不能使用
mat2gray
或类似的东西,因为我需要特定的双精度数据来转换为yuv为什么不找到值的范围并将它们映射到整数色标上?但是当我转换为yuv时,输入必须是双精度ffmpeg
将期望整数像素值,我确信。大多数软件都有。具有浮点值的TIFF文件非常罕见。为什么你说转换成yuv需要双倍数据?yuv不需要双倍数据,但我的项目需要。我从生物信号中获取数据,所以为了不丢失任何类型的信息,我需要使用双重数据类型。我尝试使用TIFF,因为正如我所说,大多数图像格式只接受uint8或uint16,我认为TIFF将是存储数据的一个很好的选择。如果您需要保持完全的精度,那么您可能需要寻找其他格式来保存数据。这将取决于您希望用哪种语言进行处理。例如,如果您使用MATLAB的save
函数(作为.mat)保存它,那么您可以使用scipy的loadmat
函数在python中加载它。一种更为暴力的方法是使用fwrite
写入所有原始字节,这些字节在大多数语言中都很容易读取。