根据条件选择Numpy数组中的随机坐标



我使用了convolution2d来生成一些关于局部模式条件的统计数据。为了完成,我正在使用图像,值0.5是我的"灰屏幕",不幸的是,在此之前我不能使用蒙版(依赖于其他一些软件包)。我想添加新的对象到我的图像,但它应该重叠至少75%的非灰屏幕。假设这个新对象是正方形的,我将灰屏上的图像与其他图像进行屏蔽,用一个n × n的矩阵进行二维卷积,矩阵中填充了1,这样我就可以得到那个补丁中灰度像素的总和。这一切都有效,所以我有一个矩阵,有合适的地方放置我的新对象。如何有效地从这个矩阵中随机抽取一个?

这里有一个5x5图像和2x2卷积矩阵的小例子,我想在我的最后一个矩阵中有一个随机坐标1(因为在那个补丁中最多有1个0.5)

图片:

1    0.5  0.5  0    1
0.5  0.5  0    1    1
0.5  0.5  1    1    0.5
0.5  1    0    0    1
1    1    0    0    1

卷积矩阵:

1    1 
1    1 

复杂的图片:

3    3    1    0
4    2    0    1
3    1    0    1
1    0    0    0

条件为<= 1:

0    0    1    1
0    0    1    1
0    1    1    1
1    1    1    1

如何有效地得到1s的均匀分布坐标?

np.wherenp.random.randint应该可以做到这一点:

#we grab the indexes of the ones
x,y = np.where(convoluted_image <=1)
#we chose one index randomly
i = np.random.randint(len(x))
random_pos = [x[i],y[i]]

最新更新