gpt4 book ai didi

python - 如何在 python 中组合 .tif 堆栈?

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:32 24 4
gpt4 key购买 nike

我正在尝试将多个 .tif 堆栈(每个堆栈已包含 40 个图像)合并为一个 tiff 堆栈。我更喜欢使用 python 来完成此操作。到目前为止我尝试过的是(请记住,我没有太多编写代码的经验,如果我遗漏了一些明显的东西,很抱歉):

import numpy as np
from skimage import io

im1 = io.imread('filename1.ome.tif')
for i in range(2,10):
im = io.imread('filename'+str(i)+'.ome.tif')
im1 = np.concatenate((im1,im))

io.imsave('filescombined.ome.tif', im1)

这确实给我留下了一个 .tif 文件,并且根据:

print(im1.shape)

这是正确的形状,并且通过使用 im1.dtype 我发现两者都是 uint16。但是,我无法在 ImageJ(或我尝试过的任何其他查看器)中打开生成的图像。问题似乎不是来自 io.imread 或 io.imsave 丢失的数据,因为如果我这样做:

image = io.imread('filename1.ome.tif')
io.imsave('testing.ome.tif', image)

结果可以打开。所以我猜问题一定源于 np.concatenate,但我不知道问题到底是什么,更不用说如何解决它了。

如果您对如何修复它有任何想法,我们将非常感激!

最佳答案

尝试 scikit 图像的 external.tifffile 模块。好像没有遇到你描述的问题。

以下内容适用于 Windows 7 和 Python 3.5。它正确保存了一堆 180 张图像,每张图像 100x100 像素,可以直接导入 ImageJ

from skimage.external import tifffile as tif
import numpy as np

stack1 = np.random.randint(255, size=(20, 100, 100))

for i in range(2,10):
stack = np.random.randint(255, size=(20, 100, 100))
stack1 = np.concatenate((stack1,stack))

tif.imsave('stack1.tif', stack1.astype('uint16'), bigtiff=True)

当您将文件拖放到 ImageJ 中时,将弹出生物格式导入选项(见下文)。只需将 View 堆栈选择为“Standard ImageJ”即可加载数据。 Screenshot of the ImageJ Bio-Format Import Option popup window

关于python - 如何在 python 中组合 .tif 堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com