使用 Python3 和 imageio 错误地保存 .tif 图像

Saving .tif Image Incorrectly using Python3 and imageio

我正在尝试在 Python3 中保存更改后的 z-stack .tif 文件。这是我的代码,我在其中检查了函数是否按预期工作。

#libraries
import imageio as ii

#import initial image
fname='101_nuc1syg1.tif'
adata = ii.volread(fname)

#check to make sure volread works
ii.volsave('temp.tif', adata)

结果是:

现在,当我尝试做一个简单的阈值时,使用以下代码:

#now doing very simple thresholding
bdata  = adata < adata[0].mean()

bdata = bdata +0

ii.volsave('temp.tif', bdata)

我明白了:

知道如何在执行图像操作后正确保存 tif 文件吗?

编辑:请注意,我能够提取每个堆栈并将它们保存为单独的 .png 文件,但我更愿意将它们保存为单个 .tif 文件。

数据来自:https://www.nature.com/articles/s41467-020-15987-2

看来您需要将 bdata 类型转换为 np.uint8 并将结果乘以 255。

  • 表达式的类型(adata < adata[0].mean())是np.bool.
    常见的图片类型是np.uint8.
    (adata < adata[0].mean()) 转换为类型 np.uint8:

     bdata  = (adata < adata[0].mean()).astype(np.uint8)
    
  • 将结果转为np.uint8时,所有True元素转为1,False元素转为0
    乘以 255True 元素转换为 255(白色):

     bdata = bdata * 255
    

完整代码:

import imageio as ii
import numpy as np

#import initial image
fname='101_nuc1syg1.tif'
adata = ii.volread(fname)

#now doing very simple thresholding
bdata  = (adata < adata[0].mean()).astype(np.uint8)

bdata = bdata * 255  # Convert ones to 255 (255 is white color)

ii.volsave('temp.tif', bdata)

注:
我无法测试我的答案 - 您发布的 link 不包含图像的 link。