如何从四个或更多灰度图像中识别出具有最高激活的像素并保存为最终的热图?

How to identify the pixels with the highest activation from four or more grayscale images and save as the final heatmap?

我有四个注意力图,每个尺寸为 217 x 217,采用 float64 数组的形式。我需要使用这些注意力图执行操作并保存最终的注意力图,其中只存在具有最高激活的像素。在这方面需要自定义函数。附上热图:

起始代码在这里:

import cv2
import numpy as np
import os
from PIL import Image

im1 = np.array(Image.open("heatmap1.png").convert('L'))
im2 = np.array(Image.open("heatmap2.png").convert('L'))
im3 = np.array(Image.open("heatmap3.png").convert('L'))
im4 = np.array(Image.open("heatmap4.png").convert('L'))

#compute to save only the pixels with the highest activation

#save final heatmap as a PNG file
cv2.imwrite("final_heatmap.png", bitwise_AND)

你可以使用numpy的内置函数

logical_and
bitwise_or
bitwise_xor
binary_repr

示例用法如下

np.bitwise_and(arr1, arr2)

要计算两个图像之间的像素最大值,请使用 np.maximum(im1, im2)。按位逻辑与只给出布尔值的最大值,不泛化到灰度值。

要找到四个图像的像素最大值,请使用带有成对运算符的金字塔方案:

out1 = np.maximum(im1, im2)
out2 = np.maximum(im3, im4)
out = np.maximum(out1, out2)

如果您愿意覆盖输入,您可以更有效地执行上述操作:

np.maximum(im1, im2, out=im1)
np.maximum(im3, im4, out=im3)
np.maximum(im1, im3, out=im1)  # im1 now has the result