def inpaint_double_train(img_files): img_file_1, img_file_2, fold = img_files img_1 = cv2.imread(join(TRAIN_DIR, 'images', img_file_1), cv2.IMREAD_GRAYSCALE) trg_1 = cv2.imread(join(TRAIN_DIR, 'masks', img_file_1), cv2.IMREAD_GRAYSCALE) img_2 = cv2.imread(join(TRAIN_DIR, 'images', img_file_2), cv2.IMREAD_GRAYSCALE) trg_2 = cv2.imread(join(TRAIN_DIR, 'masks', img_file_2), cv2.IMREAD_GRAYSCALE) if not np.sum(img_1) or not np.sum(img_2): return img_1 = np.pad(img_1, PAD_WIDTH, mode='constant') trg_1 = np.pad(trg_1, PAD_WIDTH, mode='constant') img_2 = np.pad(img_2, PAD_WIDTH, mode='constant') trg_2 = np.pad(trg_2, PAD_WIDTH, mode='constant') img = np.concatenate([img_1, img_2], axis=1) trg = np.concatenate([trg_1, trg_2], axis=1) img = (inpaint_biharmonic(img, MASK_INPAINT) * 255).astype(np.uint8) trg = inpaint_biharmonic(trg, MASK_INPAINT) trg = np.where(trg > TARGET_THRESHOLD, 255, 0) img_file = img_file_1[:-4] + '_' + img_file_2[:-4] + '.png' make_dir(join(TRAIN_DIR, 'images' + SAVE_NAME, 'fold_%d' % fold)) make_dir(join(TRAIN_DIR, 'masks' + SAVE_NAME, 'fold_%d' % fold)) cv2.imwrite( join(TRAIN_DIR, 'images' + SAVE_NAME, 'fold_%d' % fold, img_file), img) cv2.imwrite( join(TRAIN_DIR, 'masks' + SAVE_NAME, 'fold_%d' % fold, img_file), trg) return img, trg, img_file
def inpaint_train(img_file): img = cv2.imread(join(TRAIN_DIR, 'images', img_file), cv2.IMREAD_GRAYSCALE) trg = cv2.imread(join(TRAIN_DIR, 'masks', img_file), cv2.IMREAD_GRAYSCALE) img = np.pad(img, PAD_WIDTH, mode='constant') trg = np.pad(trg, PAD_WIDTH, mode='constant') img = (inpaint_biharmonic(img, MASK_INPAINT) * 255).astype(np.uint8) trg = inpaint_biharmonic(trg, MASK_INPAINT) trg = np.where(trg > TARGET_THRESHOLD, 255, 0) cv2.imwrite(join(TRAIN_DIR, 'images' + SAVE_NAME, img_file), img) cv2.imwrite(join(TRAIN_DIR, 'masks' + SAVE_NAME, img_file), trg)
def remove_text(img): th = threshold_otsu(img[:, :, 2]) mask = img[:, :, 2] > th newimg = img.copy() newimg[:, :, 2] = 0 newimg = inpaint_biharmonic(newimg, mask, multichannel=True) return newimg
def inpaint(self): print ' Beginning inpainting. ' mask = np.zeros(len(self.By)) for i in range(len(self.By)): if math.isnan(self.Bx[i]) or math.isnan(self.By[i]) or math.isnan( self.Bz[i]): mask[i] = 1 self.Bx = skres.inpaint_biharmonic(self.Bx, mask, multichannel=False) print ' Bx done' self.By = skres.inpaint_biharmonic(self.By, mask, multichannel=False) print ' By done' self.Bz = skres.inpaint_biharmonic(self.Bz, mask, multichannel=False) print ' Bz done' if var.plot_comparison == True: self.plot_comp['inpainted'] = copy.deepcopy(self.By) print ' Inpainting done!' return None
def inpaintBiharmonic(): img = np.tile(np.square(np.linspace(0, 1, 5)), (5, 1)) imgO = img.copy() mask = np.zeros_like(img) mask[2, 2:] = 1 mask[1, 3:] = 1 mask[0, 4:] = 1 imgN = mask.copy() out = inpaint_biharmonic(img, mask) imgR = out.copy() return [imgO, imgN, imgR]
def inpaint_test(id): neighbors = SALT_DATA.get_neighbors(id) stacked_image, image_unknown_mask = SALT_DATA.get_stacked_images(neighbors, return_unknown_mask=True) center_stacked_image = CENTER_CROP(stacked_image) center_image_unknown_mask = CENTER_CROP(image_unknown_mask) if np.sum(center_image_unknown_mask): inpaint_image = inpaint_biharmonic(center_stacked_image, center_image_unknown_mask) inpaint_image = (inpaint_image * 255).astype(np.uint8) else: inpaint_image = center_stacked_image cv2.imwrite(join(TEST_DIR, 'images' + SAVE_NAME, f"{id}.png"), inpaint_image)
def inpaint_train(id): neighbors = SALT_DATA.get_neighbors(id) stacked_image, image_unknown_mask = SALT_DATA.get_stacked_images(neighbors, return_unknown_mask=True) center_stacked_image = CENTER_CROP(stacked_image) center_image_unknown_mask = CENTER_CROP(image_unknown_mask) if np.sum(center_image_unknown_mask): inpaint_image = inpaint_biharmonic(center_stacked_image, center_image_unknown_mask) inpaint_image = (inpaint_image * 255).astype(np.uint8) else: inpaint_image = center_stacked_image stacked_mask, mask_unknown_mask = SALT_DATA.get_stacked_masks(neighbors, return_unknown_mask=True) center_stacked_mask = CENTER_CROP(stacked_mask) center_mask_unknown_mask = CENTER_CROP(mask_unknown_mask) if np.sum(center_mask_unknown_mask): inpaint_mask = inpaint_biharmonic(center_stacked_mask, center_mask_unknown_mask) inpaint_mask= np.where(inpaint_mask > TARGET_THRESHOLD, 255, 0) else: inpaint_mask = center_stacked_mask cv2.imwrite(join(TRAIN_DIR, 'images' + SAVE_NAME, f"{id}.png"), inpaint_image) cv2.imwrite(join(TRAIN_DIR, 'masks' + SAVE_NAME, f"{id}.png"), inpaint_mask)
def inpaint_test(img_file): img = cv2.imread(join(TEST_DIR, 'images', img_file), cv2.IMREAD_GRAYSCALE) img = np.pad(img, PAD_WIDTH, mode='constant') img = (inpaint_biharmonic(img, MASK_INPAINT) * 255).astype(np.uint8) cv2.imwrite(join(TEST_DIR, 'images' + SAVE_NAME, img_file), img)
def time_inpaint_grey(self): restoration.inpaint_biharmonic(self.image_defect_gray, self.mask, **_channel_kwarg(False))
def time_inpaint_rgb(self): restoration.inpaint_biharmonic(self.image_defect, self.mask, **_channel_kwarg(True))
def time_inpaint_grey(self): restoration.inpaint_biharmonic(self.image_defect_gray, self.mask, multichannel=False)
def time_inpaint_rgb(self): restoration.inpaint_biharmonic(self.image_defect, self.mask, multichannel=True)