MATLAB中的多页Tiff写入不起作用

MATLAB中的多页Tiff写入不起作用,matlab,io,tiff,multipage,Matlab,Io,Tiff,Multipage,我正在使用下面的函数读取Tiff,这很好,但是当我尝试使用我的写入函数将相同的Tiff写回另一个文件时,都是255。有人知道如何解决这个问题吗?谢谢,亚历克斯 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

我正在使用下面的函数读取Tiff,这很好,但是当我尝试使用我的写入函数将相同的Tiff写回另一个文件时,都是255。有人知道如何解决这个问题吗?谢谢,亚历克斯

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
尝试使用以下行:

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