Matlab只有打开第一帧的多页tiff堆栈

71(30天)
我创建了多页tiff文件ImageJ宏,并使用matlab现在我试图打开它,但是我只能访问第一帧。
这是由于imfinfo(文件名)。因此,我得到
长度(imfinfo(文件名))= 1
文件名(1 x129 char):
FileModDate:“11月28 - - 2013 12:27:51”
文件大小:6.7905 e + 09年
格式:气管无名动脉瘘管的' '
FormatVersion: []
宽度:512
身高:512
BitDepth: 8
ColorType:“灰度”
FormatSignature (77 77 0 42):
ByteOrder:“大端法”
NewSubFileType: 0
BitsPerSample: 8
压缩:未压缩的
PhotometricInterpretation:“BlackIsZero”
StripOffsets: 932625
SamplesPerPixel: 1
RowsPerStrip: 512
StripByteCounts: 262144
XResolution: []
YResolution: []
ResolutionUnit:“没有”
Colormap: []
PlanarConfiguration:“粗”
TileWidth: []
TileLength: []
TileOffsets: []
TileByteCounts: []
方向:1
FillOrder: 1
GrayResponseUnit: 0.0100
MaxSampleValue: 255
MinSampleValue: 0
阈值:1
抵消:8
ImageDescription:“ImageJ = 1.47 q
图像= 25900
片= 25900
循环= false
但如果我在ImageJ打开气管无名动脉瘘管的相同的文件,那么我可以阅读和滚动25900帧…不可思议的是,matlab可以阅读之前多页tiff我创造了在imageJ批宏……
我不明白发生了什么……任何帮助将不胜感激!谢谢你,史蒂文

接受的答案

Christoph
Christoph 2014年4月28日
编辑:图像分析 2019年10月17日
ImageJ只写第一个IFD TIFF文件大于4 gb的文件。
其他IFD条目放置的TIFF文件。
ImageJ能够阅读这些文件,因为它看到“图像= n”ImageDescription标记和实现它需要打开n图像。
在MATLAB解决方法,你可以试试下面的代码是否有效。注意:这段代码假设TIFF图像已经剥夺了平面配置和包含一个带/形象。这可能不适用于所有的图片,但可以提供你大致了解如何阅读这些文件生成的ImageJ使用底层I / O功能。
文件名=“Mylarge.tif”;%确定图像帧的数量和抵消第一形象
信息= imfinfo(文件名)
这可能产生类似于(还有其他人)
文件大小:1.055313188500000 e + 10
格式:气管无名动脉瘘管的' '
FormatVersion: []
宽度:692
身高:520
BitDepth: 16
ColorType:“灰度”
FormatSignature (77 77 0 42):
ByteOrder:“大端法”
NewSubFileType: 0
BitsPerSample: 16
压缩:未压缩的
PhotometricInterpretation:“BlackIsZero”
StripOffsets: 3342765
SamplesPerPixel: 1
RowsPerStrip: 520
StripByteCounts: 719680
现在确定帧的数量:
numFramesStr = regexp (info.ImageDescription,“图像= (\ d *)”,“令牌”);
numFrames = str2double (numFramesStr {1} {1});
%使用低级文件I / O读取该文件
fp = fopen(文件名,rb的);
% StripOffsets字段提供了第一条抵消。基于
%的信息文件,每个图像由1条。
info.StripOffsets fseek (fp,“转炉”);
%假设每像素16位图像和存储在大端格式。
%还假设图像存储一个接一个。
例如,%读第一个100帧
framenum = 100;
imData =细胞(1、framenum);
问= 1:framenum
imData{问}=从文件中读(fp,[信息。宽度info.Height),“uint16”0,“ieee-be”)”;
结束
文件关闭(fp);
1评论
阿施施Uthama
阿施施Uthama 2021年9月27日
可能的解释为“不可思议的是,matlab可以阅读之前多页tiff我创造了在imageJ批宏……”:我相信ImageJ开关(非标)tiff格式图像大小超出4 gb时,如果你以前的图片小他们是标准MATLAB可以识别的tiff文件。

登录置评。

答案(1)

阿施施Uthama
阿施施Uthama 2022年2月25日
MATLAB R2020b已经 tiffreadVolume 支持non-金宝appBigTIFF卷,大于4 gb, ImageJ创造的。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的