ColorfulCurves: Palette-Aware Lightness Control and Color Editing via Sparse Optimization (paper)
ACM Transactions on Graphics (TOG). Presented at SIGGRAPH North America 2023.
[By Cheng-Kang Ted Chao, Jason Klein, Jianchao Tan, Jose Echevarria, Yotam Gingold]
See demo video for our editing framework.
This repo is official code release for ColorfulCurves.
Our editing framework allows users to:
- Edit lightness (a.k.a luminance in photography communities though not mathematically equivalent) sparsely according to the representative colors in the given image.
- Edit pixel's colors by directly placing image-space color constraints. ColorfulCurves will find a best set of representative colors and tone curves to satisfy your constraints.
You can install dependencies using either conda
or pip
.
Install Anaconda or Miniconda. (Miniconda is faster to install.) Choose the 64-bit Python 3.x version. Launch the Anaconda shell from the Start menu and navigate to this directory. Then:
conda env create -f environment.yml
conda activate colorfulcurves
To update an already created environment if the environment.yml
file changes, first activate and then run conda env update --file environment.yml --prune
.
(Optional) Create a virtual environment:
python3 -m venv .venv
source .venv/bin/activate
Install dependencies:
pip install -r requirements.txt
(untested) If you want to install the exact version of the dependencies we used, run: pip install -r requirements.frozen.txt
After setting up the environment, you can compile the Cython file with cythonize -i func/aux/GteDistPointTriangle.pyx
. If you don't, it will happen automatically when you launch the GUI.
Launch the GUI:
python3 GUI.py
Note: The time complexity of our algorithm is independent of image size; however, the GUI will resize your image if its width is larger than a certain size to fit itself properly onscreen. A better implementation would operate on the full size image and just show a downsampled version.
This work is licensed under a Creative Commons Attribution 4.0 International License.
The software is licensed under MIT License
.