1

我正在尝试在 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

4

1 回答 1

1

看起来您需要将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)

注意:
我无法测试我的答案 - 您发布的链接不包含指向图像的链接。

于 2021-05-28T22:00:22.113 回答