我正在使用下面的函数读取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
答案 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