* 强文 *我试图按照example in the documentation在2012a中使用MATLAB TIFF类保存多页TIF文件。我的用法不同之处在于我正在编写一个32位灰度图像,其值大约在-10,000到200,000之间。
% Use 'a' for 'append' since this code is in a loop that writes each page.
% Note: 'fileName' is defined elsewhere and the file is created.
t = Tiff(fileName, 'a');
tagstruct.ImageLength = size(result, 2);
tagstruct.ImageWidth = size(result, 1);
tagstruct.Photometric = Tiff.Photometric.MinIsBlack;
tagstruct.SampleFormat = Tiff.SampleFormat.IEEEFP;
tagstruct.Compression = Tiff.Compression.None;
tagstruct.BitsPerSample = 32;
tagstruct.SamplesPerPixel = 1;
tagstruct.PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
tagstruct.Software = 'MATLAB';
t.setTag(tagstruct);
% Viewing the data immediately before the 'write' operation shows it correct.
% imtool(result(:, :, j));
% Tools -> Adjust Contrast
t.write(result(:, :, j));
t.close();
由MATLAB和ImageJ检查的输出图像尺寸正确且元数据正确,但所有值均为零。
更新
MATLAB的文档对于TIFF类来说有些稀疏,它本身就是LibTIFF library的包装器。 official TIFF Specification Version 6表示每种TIF图像类型的必填字段的完整列表。
答案 0 :(得分:1)
在example of MATLAB documentation: Exporting to images中,您的代码中没有一行代码:
tagstruct.RowsPerStrip = 16
因此,RowsPerStrip
的{{1}}字段可能缺少所有零图像的原因。