Skip to content

Latest commit

 

History

History
96 lines (83 loc) · 17.7 KB

README.md

File metadata and controls

96 lines (83 loc) · 17.7 KB

colortransfer

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.

Color Transfer Methods

Histogram Matching

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.

Ellipsoid Transformation

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.

Run

nix run github:damianfral/colortransfer -- \
  --input my-photo.jpg \
  --reference nice-colors.jpg \
  --output my-photo-with-nice-colors.jpg \

Options

  • --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

Examples

Input Image Reference Image Histogram Matching Ellipsoid Transformation
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET
Input Reference HM ET