numpy数组的平均像素减法

时间:2017-02-01 12:09:42

标签: python numpy

我有一个numpy灰度图像阵列。数组的形状是

imgs.shape
(100, 1, 300, 300)

代表100张灰度图像(1个通道),尺寸为300x300。

我想为这个数组做平均像素减法。 这意味着我想从所有图像中减去平均像素。

我想要所有图像的均值。

对于单个图像,如下所示:

X_mean = X.mean(0)
X -= X_mean

我怎样才能为我的阵列做到这一点?

1 个答案:

答案 0 :(得分:1)

如果它一次是一个图像的平均值,我们可以计算最后两个轴的平均值来保持尺寸(这样可以减轻以后的减法代码)并简单地从原始输入中减去,就像这样 -

imgs -= imgs.mean(axis=(-2,-1),keepdims=1)

如果它在所有图像中的平均值,也包括第一个轴 -

imgs -= imgs.mean(axis=(0,-2,-1),keepdims=1)

请注意,mean值默认为浮点值。因此,如果imgs不是float类型,我们需要将imgs的副本设为float dtype,然后从中减去,或将mean值转换为与dtype相同的dtype imgs然后减去。

示例运行 -

In [188]: imgs = np.random.randint(0, 255,(10,1,30,30))

In [189]: out = imgs - imgs.mean(axis=(0,-2,-1),keepdims=1)

In [190]: out.shape
Out[190]: (10, 1, 30, 30)

In [191]: out.dtype
Out[191]: dtype('float64')