Matlab不能原生地读取超过2 ^ 16帧的多页tiff文件

时间:2014-04-18 22:23:44

标签: image matlab tiff libtiff

我正在尝试读取128像素x 128像素x 122000帧的多页tiff。使用以下代码读取文件:

InfoImage=imfinfo(fname);
mImage=InfoImage(1).Width;
nImage=InfoImage(1).Height;
NumberImages=length(InfoImage);
image=zeros(nImage,mImage,NumberImages,'uint16'); 
TifLink = Tiff(fname, 'r');
for i=1:NumberImages
   TifLink.setDirectory(i);
   image(:,:,i)=TifLink.read();
end
TifLink.close();

产生以下错误:

Error using tifflib
Input argument out of range.

Error in Tiff/setDirectory (line 1277)
        tifflib('setDirectory',obj.FileID,dirNum-1);

Error in TiffReader (line 18)
   TifLink.setDirectory(i);

恰好是i = 65537,或2 ^ 16 + 1。

似乎MATLAB认为tiff不可能长于65536帧,显然不是这样,因为我有一个在ImageJ中打开的很好。

有谁知道问题可能是什么?

1 个答案:

答案 0 :(得分:0)

TIFFStack的{​​{1}}库可以导入这些文件。 https://github.com/DylanMuir/TIFFStack