This example presents a way of transferring colors between two images with Optimal Transport as introduced in [6]
[6] Ferradans, S., Papadakis, N., Peyre, G., & Aujol, J. F. (2014). Regularized discrete optimal transport. SIAM Journal on Imaging Sciences, 7(3), 1853-1882.
# Authors: Remi Flamary <remi.flamary@unice.fr> # Stanislas Chambon <stan.chambon@gmail.com> # # License: MIT License # sphinx_gallery_thumbnail_number = 2 import os from pathlib import Path import numpy as np from matplotlib import pyplot as plt import ot rng = np.random.RandomState(42) def im2mat(img): """Converts an image to matrix (one pixel per line)""" return img.reshape((img.shape[0] * img.shape[1], img.shape[2])) def mat2im(X, shape): """Converts back a matrix to an image""" return X.reshape(shape) def minmax(img): return np.clip(img, 0, 1)Generate data Plot original image
Text(0.5, 1.0, 'Image 2')Scatter plot of colors
plt.figure(2, figsize=(6.4, 3)) plt.subplot(1, 2, 1) plt.scatter(Xs[:, 0], Xs[:, 2], c=Xs) plt.axis([0, 1, 0, 1]) plt.xlabel("Red") plt.ylabel("Blue") plt.title("Image 1") plt.subplot(1, 2, 2) plt.scatter(Xt[:, 0], Xt[:, 2], c=Xt) plt.axis([0, 1, 0, 1]) plt.xlabel("Red") plt.ylabel("Blue") plt.title("Image 2") plt.tight_layout()Instantiate the different transport algorithms and fit them Plot new images
plt.figure(3, figsize=(8, 4)) plt.subplot(2, 3, 1) plt.imshow(I1) plt.axis("off") plt.title("Image 1") plt.subplot(2, 3, 2) plt.imshow(I1t) plt.axis("off") plt.title("Image 1 Adapt") plt.subplot(2, 3, 3) plt.imshow(I1te) plt.axis("off") plt.title("Image 1 Adapt (reg)") plt.subplot(2, 3, 4) plt.imshow(I2) plt.axis("off") plt.title("Image 2") plt.subplot(2, 3, 5) plt.imshow(I2t) plt.axis("off") plt.title("Image 2 Adapt") plt.subplot(2, 3, 6) plt.imshow(I2te) plt.axis("off") plt.title("Image 2 Adapt (reg)") plt.tight_layout() plt.show()
Total running time of the script: (0 minutes 24.449 seconds)
Gallery generated by Sphinx-Gallery
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4