我有一个numpy灰度图像阵列。数组的形状是
imgs.shape
(100, 1, 300, 300)
代表100张灰度图像(1个通道),尺寸为300x300。
我想为这个数组做平均像素减法。 这意味着我想从所有图像中减去平均像素。
我想要所有图像的均值。
对于单个图像,如下所示:
X_mean = X.mean(0)
X -= X_mean
我怎样才能为我的阵列做到这一点?
答案 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')