MATLAB中的多页Tiff写不起作用

时间:2014-09-10 17:25:05

标签: matlab io tiff multipage

我正在使用下面的函数读取Tiff,它工作正常,但是当我尝试使用我的写函数将相同的Tiff写回不同的文件时,它全部是255。有谁知道如何解决这一问题?谢谢,Alex。

function Y = tiff_read(name)
% tiff reader that works

info = imfinfo(name);
T = numel(info);

d1 = info(1).Height;
d2 = info(1).Width;

Y = zeros(d1,d2,T);
for t = 1:T
    temp = imread(name, t, 'Info',info);
    Y(:,:,t) = temp(1:end,1:end);
end

% Tiff writer that doesn't work
function tiff_write(Y,name)
% Y should be 3D, name should end in .tif
T = size(Y,3);
imwrite(Y(:,:,1),name);
for t = 2:T
    imwrite(Y(:,:,t),name,'WriteMode','append');
end

1 个答案:

答案 0 :(得分:0)

尝试使用此行:

Y = zeros(d1,d2,T,'uint16');

而不是这一个:

Y = zeros(d1,d2,T);

您的数据可能是uint16格式,当您导出时,您将最大值剪辑为255(uint8),这会使值大于255的像素(如果您的数据位于uint16中,那么它们很多)会显示为白色。

否则你可能想要使用这一行:

function tiff_write(Y,name)
   % Y should be 3D, name should end in .tif
   for t = 2:T
     imwrite(Y(:,:,t)/255,name,'WriteMode','append');
   end