Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 将双矩阵另存为MATLAB中的图像文件_Image_Matlab_Type Conversion_Png_Tiff - Fatal编程技术网

Image 将双矩阵另存为MATLAB中的图像文件

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

我有一个数据类型为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('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
写入所有原始字节,这些字节在大多数语言中都很容易读取。