MATLAB读写 多帧TIF 和 RGB多帧TIF

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图过于普遍就不在这里给出了。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值