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
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()