使用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])
答案 0 :(得分:0)
numpy.nanmean(a,axis = None,dtype = None,out = None,keepdims =)[来源] 计算沿指定轴的算术平均值,忽略NaN。
https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.nanmean.html
所以现在你只需要将透明像素变成NaN。
如果您想要整个图片的平均值,而不是沿着轴,您还可以将数组展平为一维,删除所有透明像素,然后取平均值。