使用 Numpy 计算图像的平均值时如何忽略透明像素?
我导入的软件包:
import numpy as np
import scipy.ndimage as spi
from skimage import io,transform,img_as_float
from skimage.io import imread,imsave
图像已加载:
target_img = spi.imread(target_img, mode="RGB").astype(float)/256
然后我得到图像的平均值并从图像中减去它:
mu_t = target_img.mean(0).mean(0)
t = target_img - mu_t
变量target_img
将具有一些完全透明的像素,我希望在计算mu_t
和t
时忽略这两个步骤。
如果没有办法忽略透明像素,那么添加假颜色值,就像257
那样,我会为了我想做的事情吗?
然后作为后续问题,我如何确保透明像素不会影响这些代码行:
from numpy import eye
t = t.transpose(2,0,1).reshape(3,-1)
Ct = t.dot(t.T) / t.shape[1] + eps * eye(t.shape[0])
numpy.nanmean(a, axis=None, dtype=None, out=None, keepdims=([source] 沿指定轴计算算术平均值,忽略 NaN。
https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.nanmean.html
所以现在你所要做的就是把你的透明像素变成NaN。
如果你想要整个图片的平均值,而不是沿着轴,你也可以将数组展平到一个维度,删除所有透明像素,然后取平均值。