使用Numpy计算图像的平均值时,如何忽略透明像素?

时间:2018-03-12 23:05:52

标签: python numpy transparency mean alpha-transparency

使用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_tt时忽略这两个步骤。

如果无法忽略透明像素,那么添加假色值(例如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])

1 个答案:

答案 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。

如果您想要整个图片的平均值,而不是沿着轴,您还可以将数组展平为一维,删除所有透明像素,然后取平均值。