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., 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.
Source | Target | Result | |
---|---|---|---|
Photograph | |||
Film sequence | |||
Light-field correction | |||
Paintings |
- via pip:
- install with
pip3 install color-matcher
- type
color-matcher -h
to the command line once installation finished
- install with
- from source:
- install Python from https://www.python.org/
- download the source using
git clone https://github.com/hahnec/color-matcher.git
- go to the root directory
cd color-matcher
- load dependencies
$ pip3 install -r requirements.txt
- install with
python3 setup.py install
- if installation ran smoothly, enter
color-matcher -h
to the command line
From the root directory of your downloaded repo, you can run the tool on the provided test data by
color-matcher -s './tests/data/scotland_house.png' -r './tests/data/scotland_plain.png'
on a UNIX system where the result is found at ./tests/data/
. A windows equivalent of the above command is
color-matcher --src=".\\tests\\data\\scotland_house.png" --ref=".\\tests\\data\\scotland_plain.png"
Alternatively, you can specify the method or select your images manually with
color-matcher --win --method='hm-mkl-hm'
Note that batch processing is possible by passing a source directory, e.g., via
color-matcher -s './tests/data/' -r './tests/data/scotland_plain.png'
More information on optional arguments, can be found using the help parameter
color-matcher -h
from color_matcher import ColorMatcher
from color_matcher.io_handler import load_img_file, save_img_file, FILE_EXTS
from color_matcher.normalizer import Normalizer
import os
img_ref = load_img_file('./tests/data/scotland_plain.png')
src_path = '.'
filenames = [os.path.join(src_path, f) for f in os.listdir(src_path)
if f.lower().endswith(FILE_EXTS)]
cm = ColorMatcher()
for i, fname in enumerate(filenames):
img_src = load_img_file(fname)
img_res = cm.transfer(src=img_src, ref=img_ref, method='mkl')
img_res = Normalizer(img_res).uint8_norm()
save_img_file(img_res, os.path.join(os.path.dirname(fname), str(i)+'.png'))
The above diagram illustrates light-field color consistency from Wasserstein metric W1 and histogram distance D2 where low values indicate higher similarity between source r and target z. These distance metrics are computed as follows
where f(k, ⋅ ) and F(k, ⋅ ) represent the Probability Density Function (PDF) and Cumulative Density Function (CDF) at intensity level k, respectively. More detailed information can be found in our IEEE paper.
@ARTICLE{plenopticam,
author={Hahne, Christopher and Aggoun, Amar},
journal={IEEE Transactions on Image Processing},
title={PlenoptiCam v1.0: A Light-Field Imaging Framework},
year={2021},
volume={30},
number={},
pages={6757-6771},
doi={10.1109/TIP.2021.3095671}
}