def sample(gt, n, im_size, scale_factor, transfer_range, scale_range, valid, verbose=False):
samp = np.array([gt[0]+gt[2]/2.0, gt[1]+gt[3]/2.0, gt[2], gt[3]])
samples = np.repeat(np.reshape(samp, [1, -1]), n, axis=0)
h, w = im_size
if verbose:
print(w, h)
print(gt)
print(samp)
print(transfer_range)
print(scale_range)
samples[:, 0] = np.add(samples[:, 0], transfer_range*samp[2]*(np.random.rand(n)*2-1))
samples[:, 1] = np.add(samples[:, 1], transfer_range*samp[3]*(np.random.rand(n)*2-1))
samples[:, 2:] = np.multiply(samples[:, 2:], np.power(scale_factor, scale_range*np.repeat(np.random.rand(n,1)*2-1,2,axis=1)))
samples[:, 2] = np.maximum(0, np.minimum(w-5, samples[:,2]))
samples[:, 3] = np.maximum(0, np.minimum(h-5, samples[:,3]))
if verbose:
print(samples[0])
samples = np.c_[samples[:,0]-samples[:,2]/2, samples[:,1]-samples[:,3]/2, samples[:,2], samples[:,3]]
if verbose:
print(samples[0])
if valid:
samples[:,0] = np.maximum(0,np.minimum(w-samples[:,2],samples[:,0]))
samples[:,1] = np.maximum(0,np.minimum(h-samples[:,3],samples[:,1]))
else:
samples[:,0] = np.maximum(0-samples[:,2]/2,np.minimum(w-samples[:,2]/2,samples[:,0]))
samples[:,1] = np.maximum(0-samples[:,3]/2,np.minimum(h-samples[:,3]/2,samples[:,1]))
if verbose:
print(samples[0])
return samples
###########################################################################
# overlap_ratio #
###########################################################################
评论列表
文章目录