在matlab中将多页tif写入文件

时间:2015-03-12 11:10:34

标签: matlab tiff imagej

我试图写一个多页(确切地说是1024页)来存档。

for frame=1:num_images
    imwrite(output(:,:,frame), 'output.tif', 'tif', 'WriteMode', 'append', 'compression', 'none');
end

我试过这个,但imwrite不支持将int32写入tiff。 我也试过了

tiffObj = Tiff('output.tif', 'w');
tiffObj.setTag('ImageLength', x_size);
tiffObj.setTag('ImageWidth', y_size);
tiffObj.setTag('Photometric', Tiff.Photometric.MinIsBlack);
tiffObj.setTag('BitsPerSample', 32);
tiffObj.setTag('SamplesPerPixel', 1);
tiffObj.setTag('RowsPerStrip', 64);
tiffObj.setTag('SampleFormat', Tiff.SampleFormat.Int);
tiffObj.setTag('TileWidth', 128);
tiffObj.setTag('TileLength', 128);
tiffObj.setTag('Compression', Tiff.Compression.None);
tiffObj.setTag('PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);
tiffObj.setTag('Software', 'MATLAB');
tiffObj.write(output);
tiffObj.close();

tif I imread()每帧有1个SamplesPerPixel,但是当我尝试使用相同的值时,我得到了

  

SamplesPerPixel为1,但提供的图像平面数为1204。

如果我将它设置为1204 Imagej抱怨

  

不支持的SamplesPerPixel:1204

这令人沮丧。

1 个答案:

答案 0 :(得分:1)

将多个页面写入TIFF文件的正确方法是在写入每个页面(2D图像)之后调用Tiff.writeDirectory。我同意,那里的MATLAB文档不是很清楚,知道LibTIFF有助于使用df2 = pd.DataFrame({'price': [Decimal(1.4334), Decimal(1.4335), Decimal(1.4336), Decimal(1.4337)], 'tpo_count': [1, 2, 3, 1], 'tpo': ['A', 'BC', 'BCD', 'D']}) print(df2.dtypes) price object tpo_count int64 tpo object dtype: object 类。例如:

df2['price_float']=float(df2['price'])