Matlab:如何在没有压缩的情况下保存透明度或PNG的TIFF?

时间:2012-12-01 13:53:15

标签: matlab compression png transparency tiff

我必须处理大量图像并将结果保存到Matlab中具有透明度的图像文件中。但PNG压缩对我来说需要太多时间。如何保存没有压缩的PNG或具有透明度的TIFF?是否有其他方法可以在没有压缩和透明度的情况下保存图像?

这是我在这里的第一个问题,如果有任何错误,请回答我的错误英语和错误的问题风格。

3 个答案:

答案 0 :(得分:4)

使用Matlab中的TIFF类,您可以编写具有透明度的TIFF:

%# create a synthetic RGBA image
ch = checkerboard(100);
rgba = repmat(ch,[1,1,4]);
rgba(:,:,4) = rgba(:,:,4)==0;
rgba = uint8(round(rgba*255));

%# create a tiff object
tob = Tiff('test.tif','w');

%# you need to set Photometric before Compression
tob.setTag('Photometric',Tiff.Photometric.RGB)
tob.setTag('Compression',Tiff.Compression.None)

%# tell the program that channel 4 is alpha
tob.setTag('ExtraSamples',Tiff.ExtraSamples.AssociatedAlpha)

%# set additional tags (you may want to use the structure
%# version of this for convenience)
tob.setTag('ImageLength',size(ch,1));
tob.setTag('ImageWidth',size(ch,2));
tob.setTag('BitsPerSample',8);
tob.setTag('RowsPerStrip',16);
tob.setTag('PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);
tob.setTag('Software','MATLAB')
tob.setTag('SamplesPerPixel',4);

%# write and close the file
tob.write(rgba)
tob.close

%# open in Photoshop - see transparency!

答案 1 :(得分:1)

Matlab的imwrite没有PNG压缩级别的参数。如果是这样,您可以将其设置为零,不进行压缩。虽然对于TIFF,none确实有Compression选项,但没有Alpha通道。您可以使用Alpha通道写入旧的Sun Raster(RAS)格式,而不进行压缩。虽然没有什么可能能够阅读它。

答案 2 :(得分:0)

"没有未压缩的PNG变体。只使用未压缩的deflate块"

就可以存储未压缩的数据

未压缩的deflate块使用每个块5个字节的标头+最多65535个字节的未压缩数据。

http://www.w3.org/TR/PNG-Rationale.html