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