(image_file_formats:aicsimagio=)
使用AICSImageIO读取文件#
AICSImageIO库旨在简化读取显微镜图像数据的过程。
要安装该库,需要执行以下命令。
pip install aicsimageio
如果需要读取特定的专有文件格式,则必须安装额外的软件。查看文档以获取详细信息。
from aicsimageio import AICSImage
from skimage.io import imshow
首先,我们创建一个AICSImage对象来查看它是否理解我们的文件格式。在以下示例中,我们读取了一个之前用ImageJ保存的OME Tif文件。
作为示例,我们这里使用的是Célia Baroux等人(苏黎世大学)分享的一张图像,该图像为了演示目的而重新保存。
aics_image = AICSImage("../../data/EM_C_6_c0.ome.tif")
aics_image
Attempted file (C:/structure/code/BioImageAnalysisNotebooks/data/EM_C_6_c0.ome.tif) load with reader: aicsimageio.readers.bfio_reader.OmeTiledTiffReader failed with error: No module named 'bfio'
C:\Users\haase\mambaforge\envs\bio39\lib\site-packages\ome_types\_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).
d = to_dict(os.fspath(xml), parser=parser, validate=validate)
<AICSImage [Reader: OmeTiffReader, Image-is-in-Memory: False]>
这个对象已经可以给我们提供基本信息,如图像大小/形状、维度以及维度名称和顺序。
aics_image.shape
(1, 1, 256, 256, 256)
aics_image.dims
<Dimensions [T: 1, C: 1, Z: 256, Y: 256, X: 256]>
aics_image.dims.order
'TCZYX'
从这个对象中,我们还可以将像素作为numpy数组检索。
np_image = aics_image.get_image_data("ZYX", T=0)
np_image.shape
(256, 256, 256)
imshow(np_image[128])
<matplotlib.image.AxesImage at 0x158c9b60ac0>
读取元数据#
在处理显微镜图像数据时,了解元数据很重要,例如体素大小。为了以适当的物理单位进行体积测量,我们需要知道X、Y和Z方向上一个体素的大小。
aics_image.physical_pixel_sizes
PhysicalPixelSizes(Z=0.16784672897196262, Y=0.16776018346253663, X=0.16776018346253663)
可以定义一个辅助函数来以Z/Y/X格式读取体素大小。
def get_voxel_size_from_aics_image(aics_image):
return (aics_image.physical_pixel_sizes.Z,
aics_image.physical_pixel_sizes.Y,
aics_image.physical_pixel_sizes.X)
get_voxel_size_from_aics_image(aics_image)
(0.16784672897196262, 0.16776018346253663, 0.16776018346253663)
读取CZI文件#
如果额外安装了aicspylibczi库,也可以使用AICSImageIO打开CZI文件。
czi_image = AICSImage("../../data/PupalWing.czi")
czi_image.shape
(1, 1, 80, 520, 692)
np_czi_image = czi_image.get_image_data("ZYX", T=0)
np_czi_image.shape
(80, 520, 692)
get_voxel_size_from_aics_image(czi_image)
(1.0, 0.20476190476190476, 0.20476190476190476)
读取LIF文件#
如果额外安装了readlif库,也可以使用AICSImageIO读取LIF图像。
lif_image = AICSImage("../../data/y293-Gal4_vmat-GFP-f01.lif")
lif_image.shape
(1, 2, 86, 500, 616)
np_lif_image = lif_image.get_image_data("ZYX", T=0)
np_lif_image.shape
(86, 500, 616)
get_voxel_size_from_aics_image(lif_image)
(1.0070810588235295, 0.46827875751503006, 0.46827869918699183)