diff --git a/README.rst b/README.rst index b9dee4f..8ae8728 100644 --- a/README.rst +++ b/README.rst @@ -7,9 +7,9 @@ Description *color-matcher* enables color transfer across images which comes in handy for automatic color-grading of photographs, paintings and film sequences as well as light-field and stopmotion corrections. The methods behind -the mappings are based on the approach from Reinhard *et al.*, an analytical solution to a Multi-Variate Gaussian -Distribution (MVGD) transfer, the Monge-Kantorovich solution as proposed by Pitie *et al.* in conjunction with -classical histogram matching. +the mappings are based on the approach from Reinhard *et al.*, the Monge-Kantorovich Linearization (MKL) as proposed by +Pitie *et al.* and our analytical solution to a Multi-Variate Gaussian Distribution (MVGD) transfer in conjunction with +classical histogram matching. As shown below our HM-MVGD-HM compound outperforms existing methods. |release| |license| |build_github| |coverage| |pypi_total| |pypi| @@ -50,10 +50,40 @@ Results |vspace| +Experimental results +==================== + |metric| +The above diagram illustrates light-field color consistency from Wasserstein metric :math:`$W_1$` and histogram distance +:math:`$D_2$` where low values indicate higher similarity between source :math:`$\mathbf{r}$` and target :math:`$\mathbf{z}$`. +These distance metrics are computed as follows + +.. math:: + + W_1 = \int_{0}^{\infty} \left| F\left(\mathbf{r}^{(g)}\right) - F\left(\mathbf{z}^{(g)}\right) \right|_1 \, \mathrm{d}k + + D_2 = \left\| f(\mathbf{r}) - f(\mathbf{z}) \right\|_2 + +where :math:`$f(\cdot)$` and :math:`$F(\cdot)$` represent the Probability Density Function (PDF) and Cumulative Density Function (CDF), respectively. +More detailed information can be found in `our IEEE paper `__. + |vspace| +Citation +-------- + +.. code-block:: BibTeX + + @article{hahne21:tip, + title={PlenoptiCam v1.0: A light-field imaging framework}, + author={Christopher Hahne and Amar Aggoun}, + journal={IEEE Transactions on Image Processing}, + year={2021}, + volume={31}, + pages={1--15} + } + Installation ------------ @@ -122,7 +152,7 @@ API Usage .. |metric| raw:: html - + .. |src_photo| raw:: html @@ -207,19 +237,9 @@ API Usage .. |binder| image:: https://img.shields.io/badge/launch-binder-579aca.svg?logo=data:image/png;base64,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 :target: https://gesis.mybinder.org/binder/v2/gh/hahnec/color-matcher/3a85a06bb546fa6d4294c7fc241de9e3cce2b2e0?urlpath=lab%2Ftree%2F01_api_demo.ipynb -Citation --------- - -.. code-block:: BibTeX - - @article{hahne21:tip, - title={PlenoptiCam v1.0: A light-field imaging framework}, - author={Christopher Hahne and Amar Aggoun}, - journal={IEEE Transactions on Image Processing}, - year={2021}, - volume={31}, - pages={1--15} - } +.. |paper| image:: http://img.shields.io/badge/paper-arxiv.2010.11687-red.svg?style=flat-square + :target: https://arxiv.org/pdf/2010.11687.pdf + :alt: arXiv link Author ------ diff --git a/hist+wasser_dist.svg b/hist+wasser_dist.svg index b28e773..490b669 100644 --- a/hist+wasser_dist.svg +++ b/hist+wasser_dist.svg @@ -6,7 +6,7 @@ - 2021-06-27T01:18:35.119984 + 2021-06-27T13:53:06.903903 image/svg+xml @@ -40,7 +40,7 @@ z - @@ -48,214 +48,214 @@ L 81.246558 31.104 +" id="m28f9fba18d" style="stroke:#262626;stroke-width:0.8;"/> - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + @@ -263,7 +263,7 @@ L 451.862372 31.104 - @@ -271,10 +271,10 @@ L 462.672 114.553756 +" id="m9c7eb24442" style="stroke:#262626;stroke-width:0.8;"/> - + @@ -308,13 +308,13 @@ z - - + @@ -348,13 +348,13 @@ z - - + @@ -529,871 +529,871 @@ z - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - @@ -1424,7 +1424,7 @@ L 87.861588 10.395146 L 87.861588 3.395146 L 67.861588 3.395146 z -" style="fill:url(#h136b9d71bf);"/> +" style="fill:url(#h659e8871f1);"/> @@ -1482,7 +1482,7 @@ L 87.861588 24.332324 L 87.861588 17.332324 L 67.861588 17.332324 z -" style="fill:url(#hc1e21792ec);"/> +" style="fill:url(#he4a8a286f0);"/> @@ -1645,7 +1645,7 @@ L 192.427359 10.395146 L 192.427359 3.395146 L 172.427359 3.395146 z -" style="fill:url(#hed383648c3);"/> +" style="fill:url(#h6b2e49f843);"/> @@ -1733,7 +1733,7 @@ L 192.427359 24.332324 L 192.427359 17.332324 L 172.427359 17.332324 z -" style="fill:url(#hdb71db390b);"/> +" style="fill:url(#h6602d017d1);"/> @@ -1812,10 +1812,10 @@ L 295.166637 10.395146 L 295.166637 3.395146 L 275.166637 3.395146 z -" style="fill:url(#h9ac439ec46);"/> +" style="fill:url(#ha3a402ed58);"/> - + + + + @@ -1843,10 +1846,10 @@ L 295.166637 24.332324 L 295.166637 17.332324 L 275.166637 17.332324 z -" style="fill:url(#h5a13af4d44);"/> +" style="fill:url(#hcd6389750e);"/> - + @@ -1858,6 +1861,9 @@ z + + + @@ -1874,13 +1880,13 @@ z - - + @@ -1942,13 +1948,13 @@ z - - + @@ -2040,13 +2046,13 @@ z - - + @@ -2110,13 +2116,13 @@ z - - + @@ -2188,13 +2194,13 @@ z - - + @@ -2218,13 +2224,13 @@ L 168.450279 118.726244 - - + @@ -2256,13 +2262,13 @@ z - - + @@ -2318,13 +2324,13 @@ z - - + @@ -2344,13 +2350,13 @@ L 233.85307 118.726244 - - + @@ -2366,13 +2372,13 @@ L 255.654 118.726244 - - + @@ -2412,13 +2418,13 @@ z - - + @@ -2433,13 +2439,13 @@ L 299.25586 118.726244 - - + @@ -2497,13 +2503,13 @@ z - - + @@ -2519,13 +2525,13 @@ L 342.857721 118.726244 - - + @@ -2563,13 +2569,13 @@ z - - + @@ -2584,13 +2590,13 @@ L 386.459581 118.726244 - - + @@ -2606,13 +2612,13 @@ L 408.260512 118.726244 - - + @@ -2632,13 +2638,13 @@ L 430.061442 118.726244 - - + @@ -2659,13 +2665,13 @@ L 451.862372 118.726244 - - + @@ -2677,13 +2683,13 @@ L 462.672 202.176 - - + @@ -2697,13 +2703,13 @@ L 462.672 171.356313 - - + @@ -2781,868 +2787,868 @@ z - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#h659e8871f1);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#he4a8a286f0);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6b2e49f843);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#h6602d017d1);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#ha3a402ed58);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> - +" style="fill:url(#hcd6389750e);"/> + - + - + - + - + - + - + - +