def im_augmentation(ims_src, weight, vec, trans=0.1, color_dev=0.1, distortion=True):
num, W, H, _ = ims_src.shape
if distortion:
ran_noise = np.random.random((4, 2))
ran_color = np.random.randn(3,)
else:
ran_noise = np.ones((4, 2)) * 0.5
ran_color = np.zeros(3,)
# perspective translation
dst = np.float32([[0., 0.], [1., 0.], [0., 1.], [1., 1.]]) * np.float32([W, H])
noise = trans * ran_noise * np.float32([[1., 1.], [-1., 1.], [1., -1.], [-1., -1.]]) * [W, H]
src = np.float32(dst + noise)
mat = cv2.getPerspectiveTransform(src, dst)
for i in range(num):
ims_src[i] = cv2.warpPerspective(ims_src[i], mat, (W, H))
# color deviation
deviation = np.dot(vec, (color_dev * ran_color * weight)) * 255.
ims_src += deviation[None, None, None, :]
return ims_src, mat
评论列表
文章目录