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



使用 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])

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。

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

最新更新