Python 图像叠加的最大强度投影
我正在尝试重新创建函数Python 图像叠加的最大强度投影,python,matlab,Python,Matlab,我正在尝试重新创建函数 max(array, [], 3) 从MatLab,它可以获取由N个图像组成的300x300px图像堆栈(我在这里说“图像”,因为我在处理图像,实际上这只是一个大的双数组),300x300xN,并创建一个300x300数组。我认为这个函数中发生的情况是,如果它运行效率低下,它将解析每个(x,y)点,然后在z轴上从该点获取最大值,然后使用整个数组的最大值和最小值进行规格化 我已经尝试用python和 # Shape of dataset: (300, 300, 181)
max(array, [], 3)
从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
#数据集的形状:(300300181)
#数据集类型:
对于范围内的x(numpy.size(self.dataset,0)):
对于范围内的y(numpy.size(self.dataset,1)):
打印“点是”,x,y
#更多内容将在self.dataset中查找Z轴上的最大(x,y)值
一个非常简单的X,Y迭代器但我的IDE不仅在运行这段代码几毫秒后崩溃,而且感觉很糟糕,效率低下
有什么我遗漏的吗?我是Python新手,因此这里的答案对我来说并不清楚。是否存在执行此操作的现有函数?您应该在问题中发布一个小样本数据集,例如维度10*10*3,这将帮助其他人提供建议。我认为您的问题与return
self.dataset
数组大小有关。你能试试这个吗dim1=len(self.dataset)dim2=len(self.dataset[0])dim3=len(self.dataset[0][0])
以获得正确的数组尺寸。MATLAB的max
不规范化。在这种情况下,对于i
和j
的每个组合,它只取array(i,j:)
的最大值。与max(array,[],3)
等价的Numpy将是np.amax(array,axis=2)
。这两个函数都没有标准化。
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)