Многостраничный Tiff писать в MATLAB не работает
Я читаю в 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
1 ответ
Попробуйте использовать эту строку:
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