Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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