文章目录
- 简介与测试准备
- 基础使用
- 文件来源和元数据
简介与测试准备
tifffile是专门用于处理科学TIFF图像的Python库。
TIFF(Tagged Image File Format)严格来说并不是一个单一的图像格式,而是基于标签的数据容器,这种灵活性使之成为存储科学数据的基本格式。标准TIFF最大只能支持到4GB大小,BigTIFF则放开了这种限制,理论上最高支持18EB的文件。tifffile可以完美支持BigTIFF,并且支持内存映射,从而在直接读取数百G的TIFF文件后,无需将其载入内存,也可以像操作Numpy数组一样操作数据。
pip install tifffile-i https://pypi.tuna.tsinghua.edu.cn/simple为了展示tifffile的威力,可以在OME-TIFF sample data下载一张内容丰富的Tiff文件。这里下载Leica-2.ome.tiff,1.2G大小,5个通道,一般的看图软件是打不开的。
基础使用
Leica-2.ome.tiff是一个显微镜图像文件,为bigtiff格式,尺寸为39168 × 26048 × 1 × 3 × 1 39168\times26048\times1\times3\times139168×26048×1×3×1,内有5个图像。
在tifffile中,可直接用imread将tiff图像读取为Numpy数组,但考虑到Leica-2.ome.tiff并不是个简单的图像,更加稳妥的方案是,直接根据路径创建TiffFile。
fromtifffileimportTiffFile,imread,imwrite path="Leica-2.ome.tiff"tif=TiffFile(path)tif.series[4].shape# (3, 26048, 39168)im0=tif.series[0].asarray()imwrite("im0.tiff",im0)im0_1=imread("im0.tiff")图像如下,这个类似于封面图像了,但保存之后也有20多M。
文件来源和元数据
TiffFile类中有很多判定属性,用于标记当前TIFF文件的特征和来源,对于Leica-2.ome.tiff而言,这些标记如下
tif.is_bigtiff# True 是BigTIFF格式tif.is_shaped# False 不包含 tifffile 自定义的 "shaped" 元数据tif.is_appendable# False 不允许安全地追加新的图像页面。tif.is_uniform# False 文件中的页面(Pages/IFDs)是否结构不统一tif.is_ome# True 是OME-TIFF (Open Microscopy Environment) 格式tif.is_lsm# False 不是蔡司 LSM (Laser Scanning Microscope) 格式tif.is_mdgel# False 不是MD Gel 格式tif.is_micromanager# False 不是由 Micro-Manager 软件生成tif.is_mmstack# False 不是Micro-Manager 堆栈格式tif.is_ndpi# False 不是Hamamatsu NDPI 格式tif.is_ndtiff# False 不是 NDTiff (N-dimensional TIFF) 格式tif.is_philips# False 不是Philips DP (Digital Pathology) 格式tif.is_scanimage# False 不是由 ScanImage 软件生成tif.is_sis# False 不是Olympus SIS (Soft Imaging System) 格式tif.is_vista# False 不是ISS Vista 格式从这些判据可知,TIFF是一个非常驳杂的数据格式,内部并不同意,正因如此,TiffFile类中有很多metadata结尾的类成员,分别装载这些类型各异的元数据
| 元数据 | 格式 | 来源 | 备注 |
|---|---|---|---|
| ome_metadata | XML | OME-TIFF | 包含最完整、最标准化的 5D 图像物理尺寸、通道信息和仪器参数。 |
| lsm_metadata | 字典 | 蔡司 LSM 激光共聚焦显微镜 | 包含激光线、针孔大小、探测器增益等。 |
| fluoview_metadata | 字典 | 奥林巴斯 FluoView 共聚焦显微镜 | |
| sis_metadata | 字典 | 奥林巴斯 SIS (Soft Imaging System) 软件 | |
| scn_metadata | XML | 徕卡 SCN 数字病理全切片扫描 | |
| philips_metadata | XML | 飞利浦数字病理扫描仪 | |
| indica_metadata | XML | Indica Labs HALO 数字病理分析软件 | |
| micromanager_metadata | 字典 | Micro-Manager 开源显微镜控制软件的非 TIFF 元数据 | 包含相机属性、时间间隔等。 |
| scanimage_metadata | 字典 | ScanImage(双光子/多光子显微镜主流采集软件) | 包含帧率、ROI、Pockels cell 电压等。 |
| stk_metadata | 字典 | MetaMorph / Universal Imaging 的 STK 格式元数据 | 包含 UIC 标签信息。 |
| metaseries_metadata | 字典 | MetaMorph 软件的 Metamorph 系列文件 | |
| mdgel_metadata | 字典 | MD Gel 凝胶电泳成像系统 | 包含泳道、分子量标记等生物学信息。 |
| geotiff_metadata | 字典 | GeoTIFF文件 | 包含地图投影、坐标系 (EPSG 代码)、像素物理分辨率 (GSD)。 |
| gdal_metadata | XML | GDAL库 | 通用地理空间元数据,通常包含更复杂的波段统计信息或自定义地理标签。 |
| gdal_structural_metadata | 字典 | GDAL 结构化元数据 | 指非 TIFF 标签内的数据,例如来自侧车文件 (sidecar files) 或特定结构的信息。 |
| astrotiff_metadata | 字典 | AstroTIFF 天文图像 | 包含 WCS (世界坐标系统) 信息,用于将像素映射到赤经/赤纬。 |
| imagej_metadata | 字典 | ImageJ / Fiji 软件 | 包含校准条 (Calibration bar)、ROI (感兴趣区域) 坐标、宏命令、显示范围等。 |
| nih_metadata | 字典 | NIH Image 软件 | 这是 ImageJ 在 Mac 经典时代的前身,用于兼容极老的生物图像。 |
| shaped_metadata | 字典 | tifffile | 当你用 tifffile.imwrite() 保存多维数组时,它会把数组的 shape、dtype 和 axes 写成 JSON 存在这里,确保下次读取时能 100% 完美还原 N 维结构。 |
| fei_metadata | 字典 | FEI / Thermo Fisher 电子显微镜 (SEM/TEM) | 包含加速电压、束流、放大倍率。 |
| sem_metadata | 字典 | 通用扫描电子显微镜 (SEM) 元数据 | 通常来自 CZ_SEM 标签。 |
| tvips_metadata | 字典 | TVIPS (EM-MENU) 电子显微镜相机 | |
| eer_metadata | 字典 | EER (Electron Event Representation) | 用于冷冻电镜 (Cryo-EM) 直接电子探测器的原始事件帧数据。 |
| andor_metadata | 字典 | Andor 科学相机 (EMCCD/sCMOS) | 包含制冷温度、读出速度、增益。 |
| nuvu_metadata | 字典 | Nuvu Caméras (超低噪声 EMCCD) | |
| pilatus_metadata | 字典 | Dectris PILATUS X射线探测器(常用于同步辐射/X射线衍射) | |
| epics_metadata | 字典 | EPICS (实验物理和工业控制系统) | 常用于大科学装置(如散裂中子源、同步辐射)的 areaDetector 系统。 |
| avs_metadata | 字典 | Argos AVS 科学相机/系统 | |
| streak_metadata | 字典 | Hamamatsu 条纹相机 (Streak camera,用于超快光学/飞秒级发光动力学) 。 |