我想了解如何计算 RGB 图像每个通道的平均值的过程

I am trying to understand how the process of calculating the mean for every channel of RGB image

我试图在将 RGB 图像发送到我的模型之前对其进行预处理。图像的形状是 (2560, 1440,3)。为此,我需要计算每个通道的平均值并将它们从相应的通道像素中减去。我知道我可以通过以下方式做到这一点: np.mean(image_array, 轴=(0, 1)). 但是,我无法理解它是如何完成的。 我知道轴是如何单独工作的(列的轴 = 0,行的轴 = 1)。 axis = (0,1) 在这种情况下如何工作?

还有我怎样才能对多张图片做同样的事情,比如说,train_data_shape = (1000, 256, 256, 3)? 我感谢每一个反馈!

考虑一下当你有一个形状为 (5, 3) 的数组 X 并执行 np.mean(X, axis=0) 时会发生什么。你会得到一个形状为 (1, 3) 的数组,其中 (0, i) 元素是第 i 列中 5 个值的平均值。您实际上是在“平均”第一个维度。如果您改为设置 axis=1,您将返回一个形状为 (5, 1) 的数组,其中 (i, 0) 元素是第 i 行中 3 个值的平均值 - 现在,您正在计算第二个值的平均值维度.

提供多轴时类似。假设 X 的形状为 (5, 4, 2)。然后,执行 np.mean(X, axis=(0,1)) 将 return 形状为 (1, 2) 的数组,其中 (0, i) 元素是子数组的平均值X[:, :, i](形状为 (5, 4))。我们正在对前两个维度进行平均。

回答你的第二个问题:如果你想在逐个图像和逐个通道的基础上计算均值,请使用 axis=(1,2)。如果您想计算每个通道所有图像的均值,请使用 axis=(0,1,2).