def augmentation(self, imgs): s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif = imgs # reconstruct cosine curve i_0, i_45, i_90, i_135 = calc_fourPolar_from_stokes(s0, s1, s2) i_list = np.array([i_0, i_45, i_90, i_135]) # add gaussian noise row, col, ch = s0.shape for inum in range(i_list.shape[0]): gauss = np.random.normal(0, self.sigma, (row, col, ch)) gauss = gauss.reshape(row, col, ch) i_list[inum] += gauss # calc new stokes images i_0 = i_list[0] i_45 = i_list[1] i_90 = i_list[2] i_135 = i_list[3] s0, s1, s2 = calc_s0s1s2_from_fourPolar(i_0, i_45, i_90, i_135) s0 = np.clip(s0, 0, 1) s1 = np.clip(s1, -1, 1) s2 = np.clip(s2, -1, 1) s0, s1, s2 = de_normalize_s0s1s2(s0, s1, s2, self.max) s0spe, s1spe, s2spe = de_normalize_s0s1s2(s0spe, s1spe, s2spe, self.max) s0dif, s1dif, s2dif = de_normalize_s0s1s2(s0dif, s1dif, s2dif, self.max) return (s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif)
def augmentation(self, imgs): s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif = imgs # flip coordinate of gt image gt[:,:,2] = gt[:,:,2] * (-1) + self.max gt[:,:,2][gt[:,:,0]==0] = 0 # z=0 means background area # flip images s0 = s0[:,::-1,:] s1 = s1[:,::-1,:] s2 = s2[:,::-1,:] * -1 s0, s1, s2 = de_normalize_s0s1s2(s0, s1, s2, self.max) gt = gt[:,::-1,:] s0spe = s0spe[:,::-1,:] s1spe = s1spe[:,::-1,:] s2spe = s2spe[:,::-1,:] * -1 s0spe, s1spe, s2spe = de_normalize_s0s1s2(s0spe, s1spe, s2spe, self.max) s0dif = s0dif[:,::-1,:] s1dif = s1dif[:,::-1,:] s2dif = s2dif[:,::-1,:] * -1 s0dif, s1dif, s2dif = de_normalize_s0s1s2(s0dif, s1dif, s2dif, self.max) return (s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif)
def augmentation(self, imgs): s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif = imgs s0 = np.clip(cv2.blur(s0, self.square), 0, 1) s1 = np.clip(cv2.blur(s1, self.square), -1, 1) s2 = np.clip(cv2.blur(s2, self.square), -1, 1) s0, s1, s2 = de_normalize_s0s1s2(s0, s1, s2, self.max) s0spe, s1spe, s2spe = de_normalize_s0s1s2(s0spe, s1spe, s2spe, self.max) s0dif, s1dif, s2dif = de_normalize_s0s1s2(s0dif, s1dif, s2dif, self.max) return (s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif)
def operation(self, s0, s1, s2): s0 = self.averageRGB(s0) s1 = self.averageRGB(s1) s2 = self.averageRGB(s2) s0, s1, s2 = pol.de_normalize_s0s1s2(s0, s1, s2, self.range_max) return np.array([s0, s1, s2])
def operation(self, s0, s1, s2): s0, s1, s2 = pol.de_normalize_s0s1s2(s0, s1, s2, self.range_max) stokes_array = np.array([ s0[2, :, :], s0[1, :, :], s0[0, :, :], s1[2, :, :], s1[1, :, :], s1[0, :, :], s2[2, :, :], s2[1, :, :], s2[0, :, :] ]) return stokes_array
def augmentation(self, imgs): s0_img, s1_img, s2_img, gt_img = imgs # flip coordinate of gt image gt_img[:, :, 2] = gt_img[:, :, 2] * (-1) + self.max gt_img[:, :, 2][gt_img[:, :, 0] == 0] = 0 # z=0 means background area # flip images s0_img = s0_img[:, ::-1, :] s1_img = s1_img[:, ::-1, :] s2_img = s2_img[:, ::-1, :] * -1 gt_img = gt_img[:, ::-1, :] s0_img, s1_img, s2_img = de_normalize_s0s1s2(s0_img, s1_img, s2_img, self.max) return (s0_img, s1_img, s2_img, gt_img)
def augmentation(self, imgs): s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif = imgs """mn = np.mean(s0) * self.max newmn = np.random.normal(mn, mn/4) gain = newmn / mn if gain < 0: raise ValueError("gain should be larger than 0!")""" # random number [a, b) a, b = 0.5, 1.5 gain = (b - a) * np.random.rand() + a # reconstruct cosine curve i_0, i_45, i_90, i_135 = calc_fourPolar_from_stokes(s0, s1, s2) i_0spe, i_45spe, i_90spe, i_135spe = calc_fourPolar_from_stokes( s0spe, s1spe, s2spe) i_0dif, i_45dif, i_90dif, i_135dif = calc_fourPolar_from_stokes( s0dif, s1dif, s2dif) # multiply gain i_0 *= gain i_45 *= gain i_90 *= gain i_135 *= gain i_0spe *= gain i_45spe *= gain i_90spe *= gain i_135spe *= gain i_0dif *= gain i_45dif *= gain i_90dif *= gain i_135dif *= gain # return back to s0s1s2 s0 = i_0 + i_90 s1 = i_0 - i_90 s2 = i_45 - i_135 s0spe = i_0spe + i_90spe s1spe = i_0spe - i_90spe s2spe = i_45spe - i_135spe s0dif = i_0dif + i_90dif s1dif = i_0dif - i_90dif s2dif = i_45dif - i_135dif # clipping s0 = np.clip(s0, 0, 1) s1 = np.clip(s1, -1, 1) s2 = np.clip(s2, -1, 1) s0spe = np.clip(s0spe, 0, 1) s1spe = np.clip(s1spe, -1, 1) s2spe = np.clip(s2spe, -1, 1) s0dif = np.clip(s0dif, 0, 1) s1dif = np.clip(s1dif, -1, 1) s2dif = np.clip(s2dif, -1, 1) # denormalize s0, s1, s2 = de_normalize_s0s1s2(s0, s1, s2, self.max) s0spe, s1spe, s2spe = de_normalize_s0s1s2(s0spe, s1spe, s2spe, self.max) s0dif, s1dif, s2dif = de_normalize_s0s1s2(s0dif, s1dif, s2dif, self.max) return (s0, s1, s2, gt, s0spe, s1spe, s2spe, s0dif, s1dif, s2dif)
i135_spe *= gain i0_dif *= gain i45_dif *= gain i90_dif *= gain i135_dif *= gain # return back to s0s1s2 s0, s1, s2 = mpl.calc_s0s1s2_from_fourPolar(i0, i45, i90, i135) s0spe, s1spe, s2spe = mpl.calc_s0s1s2_from_fourPolar( i0_spe, i45_spe, i90_spe, i135_spe) s0dif, s1dif, s2dif = mpl.calc_s0s1s2_from_fourPolar( i0_dif, i45_dif, i90_dif, i135_dif) # de-normalize s0, s1, s2 = mpl.de_normalize_s0s1s2(s0, s1, s2, MAX_16BIT) s0spe, s1spe, s2spe = mpl.de_normalize_s0s1s2( s0spe, s1spe, s2spe, MAX_16BIT) s0dif, s1dif, s2dif = mpl.de_normalize_s0s1s2( s0dif, s1dif, s2dif, MAX_16BIT) s0 = np.clip(s0, 0, MAX_16BIT) s1 = np.clip(s1, 0, MAX_16BIT) s2 = np.clip(s2, 0, MAX_16BIT) s0spe = np.clip(s0spe, 0, MAX_16BIT) s1spe = np.clip(s1spe, 0, MAX_16BIT) s2spe = np.clip(s2spe, 0, MAX_16BIT) s0dif = np.clip(s0dif, 0, MAX_16BIT) s1dif = np.clip(s1dif, 0, MAX_16BIT)