function imwriteTiff(tifimage, filename)
i = Tiff(filename, 'w');
infostruct.ImageLength = size(tifimage, 1);
infostruct.ImageWidth = size(tifimage, 2);
infostruct.Photometric = Tiff.Photometric.MinIsBlack;
infostruct.BitsPerSample = 16;
infostruct.SampleFormat = Tiff.SampleFormat.UInt;
infostruct.PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
i.setTag(infostruct)
i.write(uint16(tifimage));
i.writeDirectory();
i.close();
end
function stack=imreadRGBTiff(filename)
info = imfinfo(filename);
frames = numel(info);
stack=zeros(info(1).Height,info(1).Width,3,frames);
for k = 1:frames
stack(:,:,:,k) =single(imread(filename, k));
end
function imwritestack(stack, filename)
im = Tiff(filename, 'w');
infostruct.ImageLength = size(stack, 1);
infostruct.ImageWidth = size(stack, 2);
infostruct.Photometric = Tiff.Photometric.MinIsBlack;
infostruct.BitsPerSample = 16;
infostruct.SampleFormat = Tiff.SampleFormat.UInt;
infostruct.PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
for k = 1:size(stack, 3)
im.setTag(infostruct)
im.write(uint16(stack(:, :, k)));
im.writeDirectory();
end
im.close();
end
function imwriteRGBstack(stack, filename)
im = Tiff(filename, 'w');
infostruct.ImageLength = size(stack, 1);
infostruct.ImageWidth = size(stack, 2);
infostruct.Photometric = Tiff.Photometric.MinIsBlack;
infostruct.BitsPerSample = 8;
infostruct.SampleFormat = Tiff.SampleFormat.UInt;
infostruct.PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
infostruct.SamplesPerPixel=3;
for k = 1:size(stack, 4)
im.setTag(infostruct)
im.write(uint8(stack(:, :, :,k)));
im.writeDirectory();
end
im.close();
end
其中3D参数是由于有时候多帧TIF代表3D数据,不可单张归一化,而读写灰度图设置的是16位,而RGB设置的是8位。
至于读写单帧灰度图和RGB图过于普遍就不在这里给出了。