Многостраничная запись 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

person user3692990    schedule 10.09.2014    source источник


Ответы (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
person Benoit_11    schedule 10.09.2014