【问题标题】:How do I ignore transparent pixels when using Numpy to calculate the mean of an image?使用 Numpy 计算图像均值时如何忽略透明像素?
【发布时间】:2018-08-21 02:17:35
【问题描述】:

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

【问题讨论】:

    标签: python numpy transparency mean alpha-transparency


    【解决方案1】:

    numpy.nanmean(a, axis=None, dtype=None, out=None, keepdims=)[来源] 计算沿指定轴的算术平均值,忽略 NaN。

    https://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.nanmean.html

    所以现在你所要做的就是把你的透明像素变成 NaN。

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

    【讨论】:

    • 因此,与其使用透明度来确定我应该忽略哪些像素,NAN 会更容易吗?喜欢使用:target_img.nanmean(0).nanmean(0)?
    • 当我运行t = target_img - mu_t 时忽略target_img 中的任何NAN 怎么样?
    猜你喜欢
    • 1970-01-01
    • 2014-10-25
    • 2015-12-07
    • 1970-01-01
    • 2022-11-30
    • 2023-01-17
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多