来自图像堆栈的最大强度投影

Neu*_*pex 2 python matlab

我正在尝试重新创建该功能

max(array, [], 3)
Run Code Online (Sandbox Code Playgroud)

来自 MatLab,它可以获取我的 N 个图像的 300x300px 图像堆栈(我在这里说“图像”是因为我正在处理图像,实际上这只是一个大的双阵列),300x300xN,并创建一个 300x300 的阵列。我认为在这个函数中发生的事情,如果它运行效率低下,是它解析每个 (x,y) 点,然后从 z 轴上的那个点取最大值,然后用最大值和最小值进行归一化整个数组的值。

我试过在 python 中重新创建这个

# Shape of dataset: (300, 300, 181)
# Type of dataset: <type 'numpy.ndarray'>
for x in range(numpy.size(self.dataset, 0)):
    for y in range(numpy.size(self.dataset, 1)):
        print "Point is", x, y
        # more would go here to find the maximum (x,y) value over Z axis in self.dataset
Run Code Online (Sandbox Code Playgroud)

一个非常简单的 X,Y 迭代器。-- 但我的 IDE 不仅在运行此代码几毫秒后崩溃,而且感觉很糟糕且效率低下。

有什么我想念的吗?我是 Python 新手,因此我不清楚这里的答案。是否有执行此操作的现有功能?

小智 6

import numpy as np
import matplotlib.pyplot as plt
from skimage import io

path = "test.tif"
IM = io.imread(path)
IM_MAX= np.max(IM, axis=0)
plt.imshow(IM_MAX)
Run Code Online (Sandbox Code Playgroud)

  • @kai 不,原来的答案是正确的。skimage 将图像轴读取为(平面、行、列),因此 axis=0 是作为 z 轴的平面。 (2认同)