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

2021-04-11 14:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将多个.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文件,根据:

^{pr2}$

{t16>都是正确的。但是,我无法在ImageJ(或我尝试过的任何其他查看器)中打开结果图像。问题似乎并不在于数据丢失io.imread公司或者io.imsave公司,因为如果我这样做:

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

结果可以打开。所以我想问题是源于np.连接,但我不知道到底是什么问题,更不知道如何解决它。在

如果您有任何关于如何修复它的想法,那将是非常感谢!在

1条回答
网友
1楼 ·

试试外部.tiff文件scikit图像模块。它似乎没有遇到你所描述的问题。在

以下是我在Windows7和Python3.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中时,Bio Formats导入选项将弹出(见下文)。只需将视图堆栈选择为“Standard ImageJ”,数据将被加载。Screenshot of the ImageJ Bio-Format Import Option popup window

相关问题