在 python 中为 ImageJ 创建多堆栈(例如,12 色)tiff 图像

Create a multi-stack (e.g., 12 color) tiff image in python for ImageJ

我有一个维度为 (5000, 5000, 12) 的数组,表示 X、Y 和颜色。已经 dtype=uint16.

我想从这个数组创建一个 tiff 堆栈,以便我可以将它加载到 ImageJ 中。到目前为止我的方法:

skimage.io.imsave(
   'Top4cores.tif', full_small_image,
    bigtiff=True, imagej=True, resolution=(1, 1),
    metadata={'spacing': 1, 'unit': 'um', 'axes': 'XYC'},photometric='minisblack')

不幸的是,这会创建一个图像:

SizeC = 5000
SizeT = 1
SizeX = 18
SizeY = 5000
SizeZ = 1

如何确保我的图像具有正确的坐标?我是否必须导出单个图像并在之后堆叠它们?

skimage.io.imsave 在后台使用 tifffile。最近的版本提高了 builtins.ValueError: ImageJ hyperstack axes must be in TZCYXS order。要修复此错误,请更新 tifffile,反转数组的维度,然后使用 axes='CYX':

tifffile.imwrite(
    'Top4cores.tif',
    full_small_image.transpose(),
    imagej=True,
    resolution=(1, 1),
    photometric='minisblack',
    metadata={'spacing': 1, 'unit': 'um', 'axes': 'CYX'}
)