Tools for color models.
All methods in colorio are fully vectorized.
All color spaces implement the two methods
vals = colorspace.from_xyz100(xyz)
xyz = colorspace.to_xyz100(vals)
for conversion from and to XYZ100. Adding new color spaces is as easy as writing a class that provides those two methods.
The following color spaces are implemented:
- XYZ (
colorio.XYZ()
) - xyY (
colorio.XYY()
) - Linear SRGB (
colorio.SrgbLinear()
) This class has the two additional methodsfor conversion from and to standard RGB.from_srgb1() to_srgb1()
- CIELAB (
colorio.CIELAB()
) - CIELUV (
colorio.CIELUV()
) - ICtCp (
colorio.ICtCp()
) - IPT
(
colorio.IPT()
) - CIECAM02 / CAM02-UCS
The implementation contains a few improvements over the CIECAM02 specification (see here).
import colorio L_A = 64 / numpy.pi / 5 ciecam02 = colorio.CIECAM02(0.69, 20, L_A) cam02 = colorio.CAM02('UCS', 0.69, 20, L_A)
- CAM16 / CAM16-UCS
The implementation contains a few improvements over the CAM16 specification (see here).
L_A = 64 / numpy.pi / 5 cam16 = colorio.CAM16(0.69, 20, L_A) cam16ucs = colorio.CAM16UCS(0.69, 20, L_A)
- Jzazbz
(
colorio.JzAzBz()
)
colorio provides a number of useful tools for analyzing and visualizing color spaces.
The SRGB gamut is a perfect cube in SRGB space, and takes curious shapes when translated into other color spaces. The above image shows the SRGB gamut in XYZ space. The image data was created with
colorspace = colorio.CIELAB()
colorio.show_srgb_gamut(colorspace, 'out.vtu', n=50, cut_000=False)
The VTU file can then be opened
in, e.g., ParaView. To see the coloring, select the srgb
data and disable
Map Scalars
. You might also want to disable the Light Kit.
More images are in the gh-pages branch.
The data can be written in all formats supported by meshio.
Same as above, but with the gamut visible under a given illuminant.
colorspace = colorio.XYZ()
illuminant = colorio.illuminants.d65()
observer = colorio.observers.cie_1931_2()
colorio.show_visible_gamut(colorspace, observer, illuminant, 'visible.vtu')
The gamut is shown in grey since SRGB screens are not able to display the colors.
Show the classical visible gamut in xy with Planckian locus and the SRGB colors (at maximum luminosity).
colorio.show_gamut_diagram()
colorio contains lots of experimental data sets some of which can be used to assess certain properties of color spaces.
The famous MacAdam ellipses (from this article) can be plotted with
colorio.show_macadam(
scaling=10,
plot_filter_positions=False,
plot_standard_deviations=False
)
For example
colorspace = colorio.JzAzBz()
colorio.show_ebner_fairchild(colorspace)
shows constant-hue data from the Ebner-Fairchild experiments in the azbz-plane of the Jzazbz color space. (Ideally, all colors in one set sit on a line.)
Likewise for Hung-Berns:
colorspace = colorio.JzAzBz()
colorio.show_hung_berns(colorspace)
Likewise for Xiao et al.:
colorspace = colorio.CIELAB()
colorio.show_xiao(colorspace)
Munsell color data is visualized with
colorspace = colorio.CIELUV()
colorio.show_munsell(colorspace, V=5)
Color differences in any space can be computed with colorio.delta(a, b)
.
The images below all show the SRGB gamut in the respective color space.
colorio is available from the Python Package Index, so with
pip install -U colorio
you can install/upgrade.
To run the tests, simply check out this repository and run
pytest
To create a new release
-
bump the
__version__
number, -
publish to PyPi and GitHub:
$ make publish
colorio is published under the MIT license.