我使用了convolution2d来生成关于局部模式条件的一些统计数据。为了完整,我正在使用图像,值为0.5是我的灰色屏幕',我不能在此之前使用蒙版(依赖于其他一些软件包)。我想在我的图像中添加新对象,但它应该至少重叠75%的非灰色屏幕。让我们假设新物体是方形的,我将图像掩盖在灰色屏幕上与其余部分相比,使用填充1s的n矩阵进行2-d卷积,这样我就可以得到灰色数量的总和 - 缩放该补丁中的像素。这一切都有效,所以我有一个矩阵,有合适的位置放置我的新对象。如何从该矩阵中有效地选择一个随机的?
这是一个带有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的均匀分布坐标?
答案 0 :(得分:7)
np.where
和np.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]]