我有一个灰度图像的numpy数组。该数组的形状为
imgs.shape
(100, 1, 300, 300)
这段代码代表了100张灰度图像(1个通道)且大小为300x300。
我想对这个数组进行平均像素值减法操作。也就是说,我想从所有图像中减去平均像素值。
我想要所有图像的平均值。
对于单个图像,可以使用以下代码:
X_mean = X.mean(0)
X -= X_mean
如何对我的数组进行操作?
我有一个灰度图像的numpy数组。该数组的形状为
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
不是浮点类型,则需要将其复制为浮点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')
x = np.random.randint(11,99,(100,1,300,300))
,那么你们两个的解决方案都会导致错误的形状。形状应该被保留,只有值应该被“居中”。 - spore234imgs -= imgs.mean(axis=(0,-2,-1),keepdims=1)
,imgs
的形状会出错吗?还是说对于 imgs
来说,imgs.mean(axis=(0,-2,-1),keepdims=1)
基本上是一个标量 (100, 1, 300, 300)
是错误的? - Divakarimgs = np.random.randint(0, 255,(100,1,300,300))
成为我的数据。这是一个形状为 (100,1,300,300) 的 numpy 数组,其 int 值从 0 到 255,就像我的真实数据一样。你能提供一个可行的例子吗?我认为它与你所描述的整数问题有关。 - spore234