使用numpy阵列操作从图像生成像素密度图(热图)

2024-06-02 05:09:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决的具体问题是: 我有一个二值图像binary map,我想为它生成一个热图(密度图),我的想法是得到这个图像的2D数组,假设它是12x12

a = np.random.randint(20, size=(12, 12));

索引并使用固定大小的子矩阵(比如3x3)处理它,因此对于每个子矩阵,将计算一个像素百分比值(非零像素/总像素)

submatrix = a[0:3, 0:3]
pixel_density = np.count_nonzero(submatrix) / submatrix.size

最后,所有百分比值将组成一个新的2D数组(更小的4x4密度数组),表示原始图像的密度估计。较低的分辨率是可以的,因为将与之进行比较的数据的分辨率也较低

我不知道如何通过numpy实现这一点,特别是对于索引部分。另外,如果有更好的方法生成这样的热图,请让我也知道

谢谢大家!


Tags: 图像mapsizenp分辨率矩阵random像素
1条回答
网友
1楼 · 发布于 2024-06-02 05:09:06

也许是一个2-D convolution?基本上,这将用b矩阵扫过a矩阵,它仅在下面1s。所以它会做你想要的总和。这个link在底部附近有一个卷积的可视化演示

import numpy as np
from scipy import signal

a = np.random.randint(2, size=(12, 12))
b = np.ones((4,4))
signal.convolve2d(a,b, 'valid') / b.sum()

相关问题 更多 >