我有一小撮灰度图像。数组的形状是
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/