0

*强文本*我正在尝试按照文档中的示例在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 检查,输出图像的大小正确且元数据正确,但所有值均为零。

更新:

对于 TIFF 类,MATLAB 的文档有些稀疏,它本身就是LibTIFF 库的包装器。官方 TIFF 规范版本 6表示每种 TIF 图像类型的必填字段的完整列表。

4

1 回答 1

1

MATLAB 文档的示例中:Exporting to images有一行代码中没有:

tagstruct.RowsPerStrip = 16

因此,可能缺少RowsPerStrip字段tagstruct是全零图像的原因。

于 2012-05-15T15:27:02.163 回答