예제 #1
0
    def __getitem__(self, idx):
        idx = idx % len(self.data)
        iD, image, prob = self.data[idx]
        #image = (image[:,:,:3 ]*255).astype( np.uint8 )
        #image = (image[:,:, 0 ]*255).astype( np.uint8 )
        image = np.stack(
            (image[:, :, 0], image[:, :, 1] / 2 + image[:, :, 3] / 2,
             image[:, :, 2] / 2 + image[:, :, 3] / 2),
            axis=-1)
        #image = np.stack( (  image[:,:,0], image[:,:,1], image[:,:,2] ), axis=-1 )
        #image = utility.to_channels(image, 3)
        image = (image * 255).astype(np.uint8)

        #print(image.shape, flush=True )
        #print(image.min(), image.max(), flush=True )
        #assert(False)

        obj = ObjectImageTransform(image)
        if self.transform:
            obj = self.transform(obj)
        image = obj.to_value()

        #print(image.shape, flush=True )
        #assert(False)

        return iD, image, prob
예제 #2
0
    def __getitem__(self, idx):

        # read image
        image, label = self.data[(idx) % len(self.data)]
        #A,A_inv = F.compute_norm_mat( image.shape[1], image.shape[0] )
        #image = F.equalization(image,A,A_inv)
        image = utility.to_channels(image, self.num_channels)

        # read background
        if self.bbackimage:
            idxk = random.randint(1, len(self.databack) - 1)
            back = self.databack[idxk]
            back = F.resize_image(back,
                                  640,
                                  1024,
                                  resize_mode='crop',
                                  interpolate_mode=cv2.INTER_LINEAR)
            back = utility.to_channels(back, self.num_channels)
        else:
            back = np.ones((640, 1024, 3), dtype=np.uint8) * 255

        if self.generate == 'image':
            obj = ObjectImageTransform(image)

        elif self.generate == 'image_and_mask':

            image_org, image_ilu, mask, h = self.ren.generate(image, back)

            image_org = utility.to_gray(image_org.astype(np.uint8))
            image_org = utility.to_channels(image_org, self.num_channels)
            image_org = image_org.astype(np.uint8)

            image_ilu = utility.to_gray(image_ilu.astype(np.uint8))
            image_ilu = utility.to_channels(image_ilu, self.num_channels)
            image_ilu = image_ilu.astype(np.uint8)

            mask = mask[:, :, 0]
            mask_t = np.zeros((mask.shape[0], mask.shape[1], 2))
            mask_t[:, :, 0] = (mask == 0).astype(np.uint8)  # 0-backgraund
            mask_t[:, :, 1] = (mask == 1).astype(np.uint8)

            obj_image = ObjectImageTransform(image_org.copy())
            obj_data = ObjectImageAndMaskMetadataTransform(
                image_ilu.copy(), mask_t, np.concatenate(
                    ([label], h), axis=0))  #np.array([label])

        else:
            assert (False)

        if self.transform_image:
            obj_image = self.transform_image(obj_image)

        if self.transform_data:
            obj_data = self.transform_data(obj_data)

        x_img, y_mask, y_lab = obj_data.to_value()
        x_org = obj_image.to_value()

        return x_org, x_img, y_mask, y_lab
예제 #3
0
 def transform_image(image, image_size, num_channels):
     image = np.array(image, dtype=np.uint8)
     image = utility.to_channels(image, num_channels)
     obj = ObjectImageTransform(image)
     obj = get_transforms_det(image_size)(obj)
     # tensor is channel x height x width
     # image = image.transpose((2, 0, 1))
     # obj.to_tensor()
     # value = torch.from_numpy(obj.image).float()
     obj.image = obj.image.unsqueeze(0)
     return obj.to_dict()
예제 #4
0
    def __getitem__(self, idx):   
        image = self.data[idx]        
        Id = idx
        
        image = np.array(image) 
        image = utility.to_channels(image, self.num_channels)      
    
        obj = ObjectImageTransform( image )
        if self.transform: 
            obj = self.transform(obj)        

        Id = torch.from_numpy( np.array([Id])).float()
        return Id, obj.to_value() 
    def __getitem__(self, idx):

        # read image
        image, label = self.data[(idx) % len(self.data)]
        image = utility.to_channels(image, self.num_channels)

        # read background
        if self.bbackimage:
            idxk = random.randint(1, len(self.databack) - 1)
            back = self.databack[idxk]  #(idx)%len(self.databack)
            back = F.resize_image(back,
                                  640,
                                  1024,
                                  resize_mode='crop',
                                  interpolate_mode=cv2.INTER_LINEAR)
            back = utility.to_channels(back, self.num_channels)
        else:
            back = np.ones((640, 1024, 3), dtype=np.uint8) * 255

        if self.generate == 'image':
            obj = ObjectImageTransform(image)

        elif self.generate == 'image_and_label':
            _, image, _ = self.ren.generate(image, back)
            image = utility.to_gray(image.astype(np.uint8))
            image_t = utility.to_channels(image, self.num_channels)
            image_t = image_t.astype(np.uint8)
            label = utility.to_one_hot(int(label), self.data.numclass)
            obj = ObjectImageAndLabelTransform(image_t, label)

        elif self.generate == 'image_and_mask':
            _, image, mask = self.ren.generate(image, back)
            image = utility.to_gray(image.astype(np.uint8))
            image_t = utility.to_channels(image, self.num_channels)
            image_t = image_t.astype(np.uint8)
            #print( image_t.shape, image_t.min(), image_t.max(), flush=True )
            #assert(False)
            mask = mask[:, :, 0]
            mask_t = np.zeros((mask.shape[0], mask.shape[1], 2))
            mask_t[:, :, 0] = (mask == 0).astype(np.uint8)  # backgraund
            mask_t[:, :, 1] = (mask == 1).astype(np.uint8)
            obj = ObjectImageAndMaskMetadataTransform(image_t, mask_t,
                                                      np.array([label]))

        else:
            assert (False)

        if self.transform:
            obj = self.transform(obj)

        return obj.to_dict()
def tranform_image_performs(image,
                            transform,
                            num_transform=4,
                            bsave=False,
                            bshow=True,
                            bgrid=False):

    frames = []
    for i in range(num_transform):

        obj = ObjectImageTransform(image)
        if bgrid: obj._draw_grid(50, (255, 255, 255))

        start = time.time()
        obj_transform = transform(obj)
        t = time.time() - start

        print('{} ({}sec)'.format(transform, t))

        image_o = obj.image
        image_t = obj_transform.image
        frame = np.concatenate((stand(image), stand(image_t)), axis=1)

        font = cv2.FONT_HERSHEY_SIMPLEX
        txt = 'Transform: + [{} ({:0.4f}sec)]'.format(transform, t)
        cv2.putText(frame, txt, (10, 15), font, 0.35, (255, 255, 255), 1,
                    cv2.LINE_AA)
        frames.append(frame)

        if bshow:
            plt.figure(figsize=(8, 4))
            plt.imshow(frame)
            plt.title('Transform: +[{} ({:0.4f}sec)]'.format(transform, t))
            plt.show()

    if bsave:
        filename = '../rec/{}'.format(transform)
        create_gif(filename, frames, duration=0.5)
        print('save: ', filename)
def test_image_transform():

    pytvision.transforms.aumentation.interpolate_image_mode = cv2.INTER_LINEAR

    image = cv2.imread('../rec/image.jpg')
    image = image[:, :, (2, 1, 0)]  #[:,:,0]

    obj = ObjectImageTransform(image)
    trans = transform_aug()

    start = time.time()
    obj_t = trans(obj)
    t = time.time() - start
    print('Time {}(s)'.format(t))

    image_t = obj_t.image.permute((1, 2, 0)).numpy()  #.squeeze(-1)

    plt.figure(figsize=(8, 8))
    plt.imshow(image_t)
    plt.show()