Python numpy阵列的平均像素减法
我有一组灰度图像。阵列的形状是Python numpy阵列的平均像素减法,python,numpy,Python,Numpy,我有一组灰度图像。阵列的形状是 imgs.shape (100, 1, 300, 300) 它代表100个灰度图像(1个通道),大小为300x300 我想对这个数组进行平均像素减法。 这意味着我要从所有图像中减去平均像素 我想要所有图像的平均值 对于单个图像,可能是这样的: X_mean = X.mean(0) X -= X_mean 对于我的数组,我该怎么做呢?如果它是一次一个图像的平均值,我们可以计算最后两个轴上的平均值,保持尺寸不变(这简化了以后的减法代码),然后简单地从原始输入中减法
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)
请注意,平均值
值默认为浮点值。因此,如果imgs
不是浮点类型,我们需要将imgs
复制为浮点数据类型,然后从中减去,或者将mean
值转换为与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')
您是要所有图像的平均值,还是要分别计算每个图像的平均值。@WillemVanOnsem所有图像的平均值就是所有图像的平均值?@spore234它是每个图像的平均值,然后从每个图像中减去。它应该是:1。计算所有图像的平均值2。从每张图像中减去这个平均值。对不起,没有说清楚。对不起,我认为这是错误的。例如,
x=np.random.randint(11,99,(100,1300300))
,那么这两种解决方案都会导致错误的形状。形状应该保留,只有值应该“居中”@spore234不确定我是否正确理解该注释。所以,当imgs-=imgs.mean(轴=(0,-2,-1),keepdims=1)
时,imgs
的形状会是错误的吗?或者imgs.mean(轴=(0,-2,-1),keepdims=1)
基本上是imgs的标量:(100,1300,300)
是错误的吗?