Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 图像叠加的最大强度投影_Python_Matlab - Fatal编程技术网

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)