def scene_complete(fn_src, img_mask, img_target, query_name, offset=(0, 0), plot_figure=False, save_dir=None): """ Complete the scene """ print fn_src img_src = io.imread(fn_src).astype(np.float64) img_mask, img_src, offset_adj \ = create_mask(img_mask.astype(np.float64), img_target, img_src, offset=offset) img_sc = poisson_blend(img_mask, img_src, img_target, method='normal', offset_adj=offset) if plot_figure: plt.imshow(img_sc) plt.show() if save_dir is not None: sc_name = '%s+%s.jpg' % ( query_name.split('/')[-1].split('.jpg')[0], fn_src.split('/')[-1].split('.jpg')[0]) sc_name = opj(save_dir, sc_name) io.imsave(sc_name, img_sc) return sc_name
def mask_complete(img_mask, img_target, query_name, save_dir=None, plot_figure=False): """ Scene completion with mask """ img_sc = poisson_blend(img_mask, 1 - img_mask, img_target, method='src', offset_adj=(0, 0)) mst_name = query_name.split('/')[-1].split('.jpg')[0] mst_name = opj(save_dir, mst_name + 'mask.jpg') if plot_figure: print '\nOriginal image with mask.' plt.imshow(img_sc) plt.show() if save_dir is not None: io.imsave(mst_name, img_sc) return mst_name
def get_matches(gist, gist_data, block_weight, file_names, img_mask, query_name, mask_name, plot_figure=True, save_dir=None): """ Using the gist value, get the closes matches from the database """ offset = (0, 0) # find the close matches of a scene chosen using the er = np.linalg.norm( (gist_data - gist.reshape((len(gist_data), 1))) * block_weight, axis=0).flatten() agst = np.argsort(er) file_names = np.array(file_names) fn_sorted = file_names[agst][1:7] print '\nImages chosen from scene completion are:\n', fn_sorted img_target = io.imread(query_name).astype(np.float64) img_mask, _, offset_adj \ = create_mask(img_mask.astype(np.float64), img_target, img_mask, offset=offset) img_sc = poisson_blend(img_mask, 1-img_mask, img_target, method='src', offset_adj=(0, 0)) mst_name = query_name.split('/')[-1].split('.jpg')[0] mst_name = opj(save_dir, mst_name+'mask.jpg') if plot_figure: print '\nOriginal image with mask.' plt.imshow(img_sc) plt.show() if save_dir is not None: io.imsave(mst_name, img_sc) print '\nCompleted images from 1st to 5th choices:' sc_names = [] for i in range(len(fn_sorted)): # img_target = io.imread(query_name).astype(np.float64) print fn_sorted[i] img_src = io.imread(fn_sorted[i]).astype(np.float64) # img_mask = io.imread(mask_name, as_grey=True) img_mask, img_src, offset_adj \ = create_mask(img_mask.astype(np.float64), img_target, img_src, offset=offset) img_sc = poisson_blend(img_mask, img_src, img_target, method='normal', offset_adj=offset) if plot_figure: plt.imshow(img_sc) plt.show() if save_dir is not None: sc_name = '%s+%s.jpg' %( query_name.split('/')[-1].split('.jpg')[0], fn_sorted[i].split('/')[-1].split('.jpg')[0]) sc_name = opj(save_dir, sc_name) io.imsave(sc_name, img_sc) sc_names.append(sc_name) return mst_name, fn_sorted, sc_names