如何使用 numpy 数组进行 Z 投影(如 ImageJ)?

How to do a Z-projection (like in ImageJ) using numpy arrays?

我目前正在处理我拍摄的一些细胞的 Z 轴堆栈图像。我想投影这些图像类似于 ImageJ 中的 ZProjection 函数。

导入它们后(见下文),我有一堆 3d 图像。我继续在第 3 / Z 维度上执行一个 numpy 函数,如下所示:

import numpy as np
projection = np.**(img, axis=2)

** == max, std, sum, mean

然而,当我 plt.imshow 不同的数学运算时,我没有看到任何差异,而且它们看起来肯定不像 ImageJ 的(见下面的比较)。也许任何人都知道出了什么问题。

提前致谢,BBQuercus :)

––––––––––

图片导入:

import os
import numpy as np

# File path
root = '/Folder'

# Import all images in root
img = np.zeros((1002, 1004)) # Pixel size

for file in os.listdir(root):
    if not file.endswith('.tif'):
        continue
    _img = imread(os.path.join(root, file))
    if 'c1' in file:
        img = np.dstack((img, _img))

图像(完整数据集太大而无法显示),顶部 – numpy.std,底部 – ImageJ std(完整堆栈):

我使用以下非常酷的命令回答了它:

import fijibin.macro

in_folder = '/Infolder'
out_name = '/Outname'

macro = """run("Image Sequence...", "open=[{}] file=c1 sort use");
run("Z Project...", "projection=[Standard Deviation]");
saveAs("Tiff", "{}");
close();
close();""".format(in_folder, out_name)

fijibin.macro.run(macro)

然后我将输出文件导入新的 np.array。

也许将来有人可以用它。