【问题标题】:How can I produce an image array as the average of multiple image arrays?如何生成一个图像数组作为多个图像数组的平均值?
【发布时间】:2018-03-12 12:15:47
【问题描述】:

我正在尝试从多个热图创建平均热图。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from scipy import misc

f1 = misc.imread('heatmap1.png')
f2 = misc.imread('heatmap2.png')
f3 = misc.imread('heatmap3.png')
f_avg=np.average([f1,f2,f3],axis=0)
plt.imshow(f_avg)
plt.show()

这是 heatmap1.png:

这是平均 3 个热图的结果:

看起来这不是计算颜色数组平均值的方法。

我错过了什么吗?

【问题讨论】:

  • 您的预期输出是什么?您可能应该将您的图片提供给我们。 (这真的是一种数学上合理的方法吗?)

标签: python image numpy matplotlib scipy


【解决方案1】:

您应该使用plt.imshow(f_avg.astype(np.uint8)) 以便imshow 可以检测到这是图像而不是任意浮点数据。我无法访问您的所有三个图像,但是如果我使用f1 进行三次测试,或者使用随机噪声图像,此更改会使代码的行为符合我的预期(如果没有更改) .

还要注意,这些图像数组的 RGB 值和一个 alpha 值都被平均了 - 这三个图像的平均值不一定与包含所有数据的热图相同(但这是一个很好的粗略估计,如果您只能访问)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2021-04-03
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    相关资源
    最近更新 更多