gpt4 book ai didi

python - 图像的颜色值总和

转载 作者:太空狗 更新时间:2023-10-30 00:55:56 26 4
gpt4 key购买 nike

我正在寻找一种方法来求和图像所有像素的颜色值。我需要这个来根据其表面亮度图像估计亮源(比如遥远的星系)的总通量。谁能帮助我如何求和图像所有像素的颜色值。

例如:下图的每个像素都有一个介于 0 到 1 之间的颜色值。但是当我用 imread 读取图像时,我得到的每个像素的颜色值是一个包含 3 个元素的数组。我是 matplotlib 的新手,我不知道如何将该数组转换为 0 到 1 范围内的单个值并添加它们。

enter image description here

最佳答案

如果您有 PIL 图像,则可以像这样转换为灰度(“光度”):

from PIL import Image
col = Image.open('sample.jpg')
gry = col.convert('L') # returns grayscale version.

如果你想更好地控制颜色的添加方式,请先转换为 numpy 数组:

arr = np.asarray(col)
tot = arr.sum(-1) # sum over color (last) axis
mn = arr.mean(-1) # or a mean, to keep the same normalization (0-1)

或者您可以对颜色进行不同的加权:

wts = [.25, .25, .5]    # in order: R, G, B
tot = (arr*wts).sum(-1) # now blue has twice the weight of red and green

对于大型数组,这相当于最后一行并且速度更快,但可能更难阅读:

tot = np.einsum('ijk, k -> ij', arr, wts)

以上所有内容将每个像素的颜色相加,将彩色图像变成灰度(亮度)图像。下面将把所有的像素相加,以查看整个图像的积分:

tot = arr.sum(0).sum(0) # first sums all the rows, second sums all the columns

如果您有彩色图像,tot 仍将具有三个值。如果您的图像是灰度图像,它将是一个单一的值。如果您想要平均值,只需将 sum 替换为 mean:

mn = arr.mean(0).mean(0)

关于python - 图像的颜色值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com