示例#1
0
def replace_windows_with_nearest_neighbors(im, window_size, nbrs, fout_name):
    pixels = im.load()
    windows = ImageSeg.window_segmentation(im, window_size)
    im_width, im_height = im.size
    window_width, window_height = window_size
    for offset in windows:
        window_to_replace = windows[offset]
        vector_to_match = window_to_vector(window_to_replace)
        distances, indices = nbrs.kneighbors(np.array(vector_to_match))
        window_replacement_vector = nbrs._fit_X[indices[0]][0]
        # print window_replacement_vector
        window_pixels = vector_to_window(window_replacement_vector, window_size)
        ImageSeg.replace_window(pixels, offset, window_pixels)

    im.save(fout_name)
示例#2
0
def NN_nbrs(images, window_size):
    windows_of_images = map(lambda im: ImageSeg.window_segmentation(im, window_size).values(), images)
    # LOG("images segmented")
    all_windows = reduce(lambda a, b: a + b, windows_of_images)
    vectors = map(window_to_vector, all_windows)
    # LOG("vectors created")

    # print len(vectors)
    X = np.array(vectors)
    # LOG("np array created")
    # print len(X)
    nbrs = NearestNeighbors(n_neighbors=1).fit(X)
    # LOG("nn learned")
    return nbrs