【问题标题】:Creating a tiff stack from individual tiffs in python从 python 中的单个 tiff 创建一个 tiff 堆栈
【发布时间】:2020-10-23 01:21:44
【问题描述】:

我正在根据此处找到的示例创建不同大小的 tiff 堆栈: http://www.bioimgtutorials.com/2016/08/03/creating-a-z-stack-in-python/

可以在此处下载 tif 文件的示例: nucleus

我有一个文件夹,里面有 5 个 tiff 文件。 我想堆叠它们以便能够在 imageJ 中打开它们,使它们看起来像这样:

这适用于以下代码:

from skimage import io
import numpy as np
import os

dir = 'C:/Users/Mich/Desktop/tiff stack/'

listfiles =[]


for img_files in os.listdir(dir):
    if img_files.endswith(".tif") :
        listfiles.append(img_files)



first_image = io.imread(dir+listfiles[0])

io.imshow(first_image)

first_image.shape

stack = np.zeros((5,first_image.shape[0],first_image.shape[1]),np.uint8)



for n in range(0,5):
    stack[n,:,:]= io.imread(dir+listfiles[n])

path_results = 'C:/Users/Mich/Desktop/'
io.imsave(path_results+'Stack.tif' ,stack)

当我只想堆叠前 4 个或前 3 个时,问题就来了。

以 4 个 tiff 图像为例:

   stack=np.zeros((4,first_image.shape[0],first_image.shape[1]),np.uint8)

   for n in range(0,4):
       stack[n,:,:]= io.imread(dir+listfiles[n])

然后我得到这样的结果:

在尝试堆叠文件夹的前 3 张图像时,它们被合并了!

   stack=np.zeros((3,first_image.shape[0],first_image.shape[1]),np.uint8)

   for n in range(0,3):
       stack[n,:,:]= io.imread(dir+listfiles[n])

我的代码哪里错了,所以它只是将单个 tiff 添加到大小为 3、4 或 5 的多维堆栈中?

【问题讨论】:

    标签: python image-processing tiff


    【解决方案1】:

    指定图像数据的颜色空间(photometric='minisblack'),否则tifffile插件会根据输入数组的形状猜测出来。

    这是直接使用 tifffile 的较短版本:

    import glob
    import tifffile
    
    with tifffile.TiffWriter('Stack.tif') as stack:
        for filename in glob.glob('nucleus/*.tif'):
            stack.save(
                tifffile.imread(filename), 
                photometric='minisblack', 
                contiguous=True
            )
    

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 2021-12-11
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多