首页 > 解决方案 > 在 MATLAB 中将双矩阵保存为图像文件

问题描述

我有一个sig_matrix数据类型为 double 的矩阵,值如下:

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

标签: imagematlabtype-conversionpngtiff

解决方案


推荐阅读