colortransfer
is a small tool that transfers the color distribution
of one image to another image. It offers two methods of color transfer,
histogram matching and ellipsoid transformation.
This method adjusts the mean and standard deviation of the color channels in the input image to match those of the reference image. It's a simple and effective approach for many cases, but it may not capture more complex color relationships.
The ellipsoid transformation method offers a more advanced approach to color transfer:
- It models the color distributions of both the input and reference images as 3D ellipsoids in the color space.
- The method then computes a transformation that maps the input image's color ellipsoid to match the reference image's color ellipsoid.
- This transformation takes into account not just the mean and standard deviation, but also the covariance between color channels, allowing for a more nuanced color transfer.
- The result often preserves the relative relationships between colors better than simple histogram matching, potentially leading to more natural-looking results, especially for images with complex color distributions.
nix run github:damianfral/colortransfer -- \
--input my-photo.jpg \
--reference nice-colors.jpg \
--output my-photo-with-nice-colors.jpg \
--input
: The image to be used as the color source--reference
: The image we want to transform--output
: The output image--method
: The color transfer method to use (default: 2)- 1: Histogram matching
- 2: Ellipsoid transformation
Input Image | Reference Image | Histogram Matching | Ellipsoid Transformation |
---|---|---|---|