【问题标题】:Understanding histogram() in Pillow了解 Pillow 中的 histogram()
【发布时间】:2014-03-17 17:00:14
【问题描述】:

来自文档:

im.histogram() => 列表

返回图像的直方图。直方图以列表形式返回 像素计数,源图像中的每个像素值一个。如果 图像有多个波段,所有波段的直方图是 连接(例如,“RGB”图像的直方图包含 768 个值)。

我知道红色有 256 个值,绿色有 256 个值,蓝色有 256 个值 (256 * 3 = 768)。

for i, value in enumerate(im.histogram()):
    print i, value

生产:

0 329
1 145
... (skipping some)
256 460
... (skipping some)
767 3953

我的问题是:这是否意味着有:
329 个像素,其值为 R = 0, G = 0, B = 0
145 个像素,其值为 R = 1, G = 0, B = 0
460 像素,其值为 R = 256, G = 1, B = 0
3953 个像素,其值为 R = 256, G = 256, B = 256 等。

我应该这样读取输出吗?

【问题讨论】:

  • 鉴于文档中提到了关于订单的 Jack,我将生成 3 张独立的原色图片并查看直方图函数输出的内容。
  • 谢谢,这听起来是个好主意。不过,看看订单的含义仍然很有趣。
  • 我敢肯定,如果你想通过源代码工作,你可以建立实际的顺序,但有时最简单的方法是最好的。 BWT 当你弄明白后,把你的答案发回这里。
  • @PeterM:看起来数据是针对每个频道的,请参阅下面的 voithos 回答。

标签: python histogram pillow


【解决方案1】:

我还没有测试过,但从文档来看,措辞似乎表明直方图仅适用于每个通道(例如红色、绿色、蓝色)单独

如果图像有多个波段,则所有波段的直方图都是 串联(例如,“RGB”图像的直方图包含 768 个值)。

所以,不,你给出的例子并不正确。 768 values 只是256 * 3,这是可能的红色值的数量,加上可能的绿色值的数量,再加上可能的蓝色值的数量独立。它代表红色、绿色和蓝色的所有可能组合,而是256 ^ 3 == 16777216

据我所知,您的示例直方图值的解释应该是:

329  pixels with value of R = 0, G = ?, B = ? and
145  pixels with value of R = 1, G = ?, B = ? and
...
460  pixels with value of R = ?, G = 1, B = ? and
...
3953 pixels with value of R = ?, G = ?, B = 256

【讨论】:

  • 谢谢,这是一个非常明确的答案。我将分别查看每种颜色。
【解决方案2】:

不,您不知道有多少像素(例如)R=0、G=0、B=0。 这将需要一个包含大约 1600 万个条目的直方图。

你只知道有多少个 R=0,有多少个 G=0,有多少个 B=0,独立计算。

R=0 像素完全有可能拥有大量不同数量的 G 和 B。

【讨论】:

  • 谢谢,我的主要数学不及格。 256 ^ 3 != 256 * 3
【解决方案3】:

如果模式为RGB打开图像,768均值为红灰名单[0-255 pix nums]+绿灰名单[0-255 pix nums]+蓝灰名单[0-255 pix nums]

im 是 RGB 的 Image 对象

在[59]中:x = reduce(lambda x,y:x+y,im.histogram())

在 [60] 中:x 出[60]:47191725

在 [61] 中:im.size 出 [61]: (4731, 3325)

在[62]中:4731*3325 出[62]:15730575

在[63]中:4731*3325*3 出[63]:47191725

在 [64] 中:

或其他方式:

r, g, b = im.split()

len(r.histogram()) = 256

len(g.histogram()) = 256

len(b.histogram()) = 256

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    相关资源
    最近更新 更多