我有一小撮灰度图像。数组的形状是

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


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

我想表示此数组的像素减法。
这意味着我想从所有图像中减去平均像素。

我想要所有图片的均值。

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

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


我该如何为我的阵列做到这一点?

最佳答案

如果它一次只显示一幅图像,我们可以在保持尺寸不变的情况下计算出最后两个轴的均值(这样可以简化代码,以便以后进行减法运算),并且只需从原始输入中减去即可,如下所示:

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


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

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


请注意,mean值默认情况下为浮点值。因此,如果imgs不是浮点类型,则需要复制imgs作为float dtype,然后从中减去,或者将mean值转换为与imgs相同的dtype,然后减去。

样品运行-

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')

关于python - numpy数组的平均像素减法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41979481/

10-12 20:12