Linux color management

Last updated
Color profile viewer on KDE Plasma 5, showing an ICC color profile Colour profile viewer on KDE Plasma screenshot.png
Color profile viewer on KDE Plasma 5, showing an ICC color profile

Linux color management has the same goal as the color management systems (CMS) for other operating systems, which is to achieve the best possible color reproduction throughout an imaging workflow from its source (camera, video, scanner, etc.), through imaging software (Digikam, darktable, RawTherapee, GIMP, Krita, Scribus, etc.), and finally onto an output medium (monitor, video projector, printer, etc.). In particular, color management attempts to enable color consistency across media and throughout a color-managed workflow.

Contents

Linux color management relies on the use of accurate ICC (International Color Consortium) and DCP (DNG Color Profile) profiles describing the behavior of input and output devices, and color-managed applications that are aware of these profiles. These applications perform gamut conversions between device profiles and color spaces. Gamut conversions, based on accurate device profiles, are the essence of color management.

Historically, color management was not an initial design consideration of the X Window System on which much of Linux graphics support rests, and thus color-managed workflows have been somewhat more challenging to implement on Linux than on other OS's such as Microsoft Windows or macOS. This situation is now being progressively remedied, and color management under Linux, while functional, has not yet acquired mature status. Although it is now possible to obtain a consistent color-managed workflow under Linux, certain problems still remain:

Since ICC color profiles are written to an open specification, they are compatible across operating systems. Hence, a profile produced on one OS should work on any other OS given the availability of the necessary software to read it and perform the gamut conversions. This can be used as a workaround for the lack of support for certain spectrophotometers or colorimeters under Linux: one can simply produce a profile on a different OS and then use it in a Linux workflow. Additionally, certain hardware, such as most printers and certain monitors, can be calibrated under another OS and then used in a fully color-managed workflow on Linux.

The popular Ubuntu Linux distribution added initial color management in the 11.10 release (the "Oneiric Ocelot" release). [2]

Requirements for a color-managed workflow

Calibration and profiling requires:

Monitor calibration and profiling

Color corrections settings panel on KDE Plasma 5 Colour corrections settings on KDE Plasma screenshot.png
Color corrections settings panel on KDE Plasma 5

One of the critical elements in any color-managed workflow is the monitor, because, at one step or another, handling and making color adaptation through imaging software is required for most images, thus the ability of the monitor to present accurate colors is crucial.

Monitor color management consists of calibration and profiling. [3] [4]

Calibration curve on DisplayCAL DisplayCAL calibration curve on GNOME screenshot.png
Calibration curve on DisplayCAL

The first step, calibration, is done by adjusting the monitor controls and the output of the graphics card (via calibration curves) to match user-definable characteristics, such as brightness, white point and gamma. The calibration settings are stored in a .cal file. The second step, profiling (characterization), involves measuring the calibrated display's response and recording it in a color profile. The profile is stored in an .icc file ("ICC file"). For convenience, the calibration settings are usually stored together with the profile in the ICC file.

Note that .icm files are identical to .icc files - the difference is only in the name.

Seeing correct colors requires using a monitor profile-aware application, together with the same calibration used when profiling the monitor. Calibration alone does not yield accurate colors. If a monitor was calibrated before it was profiled, the profile will only yield correct colors when used on the monitor with the same calibration (the same monitor control adjustments and the same calibration curves loaded into the video card's lookup table). macOS has built-in support for loading calibration curves and installing a system-wide color profile. Windows 7 onward allows loading calibration curves, though this functionality must be enabled manually. [5] Linux and older versions of Windows require using a standalone LUT loader.

Device profiles

ICC profiles are cross-platform and can thus be created on other operating systems and used under Linux. Monitor profiles, however, require some additional attention. Since a monitor profile depends both on the monitor itself and on the video card, a monitor profile should only be used with the same monitor and video card with which it was created. The monitor settings should not be adjusted after creating the profile. In addition, since most calibration software use LUT adjustments during calibration, the corresponding LUTs must be loaded every time the display server (X11, Wayland) is started (e.g. with every graphical login).

In the unlikely case of a colorimeter being unsupported by Linux, a profile created under Windows or macOS can be used under Linux.

Display-channel lookup tables

There are two approaches to loading display channel LUTs:

  1. Create a profile that does not modify video card LUTs and thus does not require LUTs be loaded later on. Ideally, this approach would rely on DDC-capable monitors—the internal monitor settings of which are set via calibration software. Unfortunately, monitors capable of making these adjustments through DDC are not common and are generally expensive. There is only one calibration software on Linux that can interact with a DDC monitor. [6] For mainstream monitors, a couple of options exist:
    • BasICColor software, which works with most colorimeters on the market, allows one to adjust display output via the monitor interface, and then to choose a "Profile, do not calibrate" option. By doing this, one can create a profile that does not require video card LUT adjustments.
    • For EyeOne devices, EyeOne Match allows the user to calibrate to "Native" gamma and white point targets, which results in the LUT adjustment curves displayed after the calibration as a simple, linear 1:1 mapping (a straight line from corner to corner).
    • Both BasICColor and EyeOne Match do not presently run under Linux but they are capable of creating a profile that does not require LUT adjustments.
  2. Use an LUT loader to actually load the LUT adjustments contained within the profile prepared during calibration. According to the documentation, these loaders do not modify the video card LUT by itself, but achieve the same type of adjustment by modifying the X server gamma ramp. Loaders are available for Linux distributions that use X.org or XFree86—the two most popular X servers on Linux. Other X servers are not guaranteed to work with the currently available loaders. There are two LUT loaders available for Linux:
    • Xcalib is one such loader, and although it is a command-line utility, it is quite easy to use.
    • dispwin is a part of Argyll CMS.
    • If, for any reason, the LUT cannot be loaded, it is still recommended to go through the initial stages of calibration where a user is asked by calibration software to make some manual adjustments to the monitor, as this will often improve display linearity and also provide information on its color temperature. This is especially recommended for CRT monitors.

Color-managed applications

In ICC-aware applications, it is important to make sure the correct profiles are assigned to devices, mainly to the monitor and the printer. Some Linux applications can auto-detect the monitor profile, while others requires that it is specified manually.

Although there is no designated place to store device profiles on Linux, /usr/share/color/icc/ has become the de facto standard.

Most applications running under WINE have not been fully tested for color accuracy. While 8-bpp programs can have some color resolution difficulties due to depth conversion errors, colors in higher-depth applications should be accurate, as long as those programs perform their gamut conversions based on the same monitor profile as that used for loading the LUT, granted that the corresponding LUT adjustments are loaded.

List of color-managed applications

Obsolete

List of software for input and output profiling

Obsolete

List of LUT loaders

A color profile file for a monitor will typically contain two parts: [8]

In a color-managed setup, the VCGT/LUT part is typically loaded on login, while the filename of the color profile is stored in the _ICC_PROFILE X atom so that color managed programs can load that as a default profile for applying gamma+matrix corrections. Some programs also let you override what profile is used for gamma+matrix corrections.

List of color management systems

colord

colord
Developer(s) Richard Hughes et al.
Stable release
1.4.6 [9] / February 16, 2022;2 years ago (2022-02-16)
Written in C
Operating system Linux, FreeBSD
Type system daemon
color management
License GPLv2+
Website www.freedesktop.org/software/colord/

colord is a system daemon that makes it easy to manage, install and generate color profiles to accurately color manage input and output devices.

colord provides a D-Bus API for system frameworks to query, offering the ability to, for example, get the profiles for a given device or create a device and assign to it a given profile. colord provides a persistent database-backed store that is preserved across reboots, and it provides the session for a way to set system settings, for instance setting the display profile for all users and all sessions.

GNOME Color Manager and colord-kde are graphical tools for colord to be used in the GNOME and KDE desktop environments. Each acts as a client to colord.

colord supports the following subsystems:

See also

Related Research Articles

Gamma correction or gamma is a nonlinear operation used to encode and decode luminance or tristimulus values in video or still image systems. Gamma correction is, in the simplest cases, defined by the following power-law expression:

Color management is the process of ensuring consistent and accurate colors across various devices, such as monitors, printers, and cameras. It involves the use of color profiles, which are standardized descriptions of how colors should be displayed or reproduced.

Colorimetry is "the science and technology used to quantify and describe physically the human color perception". It is similar to spectrophotometry, but is distinguished by its interest in reducing spectra to the physical correlates of color perception, most often the CIE 1931 XYZ color space tristimulus values and related quantities.

ColorSync is Apple Inc.'s color management API for the Mac OS and Mac OS X Operating Systems.

sRGB Standard RGB color space

sRGB is a standard RGB color space that HP and Microsoft created cooperatively in 1996 to use on monitors, printers, and the World Wide Web. It was subsequently standardized by the International Electrotechnical Commission (IEC) as IEC 61966-2-1:1999. sRGB is the current defined standard colorspace for the web, and it is usually the assumed colorspace for images that are neither tagged for a colorspace nor have an embedded color profile.

<span class="mw-page-title-main">3D lookup table</span>

In the film and graphics industries, 3D lookup tables are used for color grading and for mapping one color space to another. They are commonly used to calculate preview colors for a monitor or digital projector of how an image will be reproduced on another display device, typically the final digitally projected image or release print of a movie. A 3D LUT is a 3D lattice of output RGB color values that can be indexed by sets of input RGB colour values. Each axis of the lattice represents one of the three input color components and the input color thus defines a point inside the lattice. Since the point may not be on a lattice point, the lattice values must be interpolated; most products use trilinear interpolation.

Little CMS or LCMS is an open-source color management system, released as a software library for use in other programs which will allow the use of International Color Consortium profiles. It is licensed under the terms of the MIT License.

The aim of color calibration is to measure and/or adjust the color response of a device to a known state. In International Color Consortium (ICC) terms, this is the basis for an additional color characterization of the device and later profiling. In non-ICC workflows, calibration sometimes refers to establishing a known relationship to a standard color space in one go. The device that is to be calibrated is sometimes known as a calibration source; the color space that serves as a standard is sometimes known as a calibration target. Color calibration is a requirement for all devices taking an active part in a color-managed workflow and is used by many industries, such as television production, gaming, photography, engineering, chemistry, medicine, and more.

In color management, an ICC profile is a set of data that characterizes a color input or output device, or a color space, according to standards promulgated by the International Color Consortium (ICC). Profiles describe the color attributes of a particular device or viewing requirement by defining a mapping between the device source or target color space and a profile connection space (PCS). This PCS is either CIELAB (L*a*b*) or CIEXYZ. Mappings may be specified using tables, to which interpolation is applied, or through a series of parameters for transformations.

<span class="mw-page-title-main">UFRaw</span> An application for processing digital photographs in raw image formats

UFRaw is an application which can read and manipulate photographs in raw image formats, as created by many digital cameras. UFRaw is available as both as a stand-alone program and as a plugin for GIMP. As a stand-alone program, UFRaw can be invoked with a graphical interface, or as a command line batch processing utility.

IT8 is a set of American National Standards Institute (ANSI) standards for color communications and control specifications. Formerly governed by the IT8 Committee, IT8 activities were merged with those of the Committee for Graphics Arts Technologies Standards in 1994.

Windows Color System (WCS) is a platform for color management, first included with Windows Vista, that aims to achieve color consistency across various software and hardware, including cameras, monitors, printers and scanners.

<span class="mw-page-title-main">Color chart</span> Card with color samples

A color chart or color reference card is a flat, physical object that has many different color samples present. They can be available as a single-page chart, or in the form of swatchbooks or color-matching fans.

<span class="mw-page-title-main">RawTherapee</span> Raw photo processing software

RawTherapee is application software for processing photographs in raw image formats, as created by many digital cameras. It comprises a subset of image editing operations specifically aimed at non-destructive post-production of raw photos and is primarily focused on improving a photographer's workflow by facilitating the handling of large numbers of images. It is notable for the advanced control it gives the user over the demosaicing and developing process. It is cross-platform, with versions for Microsoft Windows, macOS and Linux.

<span class="mw-page-title-main">SilverFast</span>

SilverFast is the name of a family of software for image scanning and processing, including photos, documents and slides, developed by LaserSoft Imaging.

Video calibration software is software used to improve the quality of commercial video reproduction.

A contract proof usually serves as an agreement between customer and printer and as a color reference guide for adjusting the press before the final press run. Most contract proofs are a prepress proof.

Monitor proofing or soft-proofing is a step in the prepress printing process. It uses specialized computer software and hardware to check the accuracy of text and images used for printed products. Monitor proofing differs from conventional forms of “hard-copy” or ink-on-paper color proofing in its use of a calibrated display(s) as the output device.

The G7 Method is a printing procedure used for visually accurate color reproduction by putting emphasis on matching grayscale colorimetric measurements between processes. G7 stands for grayscale plus seven colors: the subtractive colors typically used in printing and the additive colors. The method is used in many applications of printing such as offset lithography, flexography, and gravure since it uses a one-dimensional neutral print density curve (NPDC) to match neutral tonality between two G7 calibrated printing systems. The G7 method is not a completely accurate color management system nor is it officially standardized by the International Color Consortium (ICC).

<span class="mw-page-title-main">Darktable</span>

Darktable is a free and open-source photography application and raw developer. Rather than being a raster graphics editor like Adobe Photoshop or GIMP, it comprises a subset of image editing operations specifically aimed at non-destructive raw image post-production. It is primarily focused on improving a photographer's workflow by facilitating the handling of large numbers of images. It is freely available in versions tailored for most major Linux distributions, macOS, Solaris and Windows and is released under the GPL-3.0-or-later.

References