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)
예제 #4
0
    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])
예제 #5
0
    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
예제 #6
0
    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)
예제 #8
0
            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)