gpt4 book ai didi

python - 如何使用 python 从图像堆栈中读取时间序列?

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:23 24 4
gpt4 key购买 nike

我正在尝试将一堆图像读入 3 维矩阵(例如 X、Y、Z)。目标是遍历整个图像(从(X1,Y1)到(Xn,Yn)。在每个位置,例如(X1,Y3),我想读取整个 Z 数组并对其进行一些处理。一个输出例如图像将包含计算结果。

举个例子,假设我有 12 (3x3) 张带有反射率数据的图像,每张图像给出一个月的反射率。

图 1:

   X1 X2 X3
Y1 10 10 14
Y2 12 14 16
Y3 10 19 17

图 2:

   20 21 23
20 23 29
21 22 21

...

图 7:

   50 50 60
60 70 60
65 67 80

...

图 12:

   X1 X2 X3
Y1 10 11 12
Y2 10 16 17
Y3 12 13 14

所以,最后,我想在每个 (X,Y) 位置读取 z 数组。从 (X1,Y1) 开始到 (X12, y12) 结束。例如,在 (X1, Y3) 处,Z 数组为:[10、21、.、.、.、65、.、.、.、12]。我会在数组上应用一些函数,例如,数组的最大值。例如,位置 (X1,Y3) 的新输出图像的值为 65。

我在 IDL 中做过类似的事情,使用 ENVI 图像处理库。但我真的很想用 python 来做这件事,因为我的目标是切换到开源语言。我刚开始使用 python,到目前为止我的搜索还没有给我任何解决方案,这就是我寻求更有经验的 python 用户帮助的原因。

非常感谢,安吉拉

最佳答案

使用numpy其实很简单,所以我马上给你一些代码。请注意,它不一定是完整的解决方案。

import numpy as np
import cv2

image_files = [] # Your list of files
image_height = 3
image_width = 3
image_stack = np.empty((image_height, image_width, len(image_files))) # Create empty HxWxN array/matrix

for i, fname in enumerate(image_files):
img = cv2.imread(fname, cv2.CV_LOAD_IMAGE_GRAYSCALE)
image_stack[:,:,i] = img # Set the i:th slice to this image

mean_img = np.mean(image_stack, axis=2) # Take the mean for each pixel

由于我们只使用 OpenCV 进行图像加载,您当然可以将其切换为其他东西,只要它能为您提供一个 numpy 数组。

如果您有任何疑问,请发表评论,我会相应更新。

关于python - 如何使用 python 从图像堆栈中读取时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20055839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com