Different technical devices handle and render color representations in different ways. For example, a printing device may be configured to deposit discrete amounts of a set of colorants such as Cyan, Magenta, Yellow and Black. Similarly, a display device may electrically modulate liquid crystal elements that have Red, Green and Blue filters. For this reason, color management technologies have been developed that map color representations between different devices. Color management may involve defining a device-dependent color space based on configurable states of an associated rendering device. For example, a device-dependent color space for a display device may have three dimensions representing different values of Red, Green and Blue color channels (e.g. an 8 bit RGB image may have three 8 bit channels, where each channel has a range of integer values between 0 and 255). Certain color management technologies provide for mappings to device-independent color spaces, such as profile connection spaces, as an intermediate operation in a device-to-device color mapping. When color management is applied there is an issue of how to provide color adjustments, as color mapping may distort a rendered color and/or lead to unpredictable output.
Various features of the present disclosure will be apparent from the detailed description which follows, taken in conjunction with the accompanying drawings, which together illustrate, features of certain examples, and wherein:
Certain examples described herein address a challenge of how to provide color adjustments in a color management system. Certain examples described herein present a method and apparatus for mapping between color gamuts that improve an effectiveness of color transformations applied to color data.
Certain examples described herein relate to gamut mapping. A gamut is a volume in a multi-dimensional color space. A gamut represents a range of renderable colors for a rendering device. The multi-dimensional color space may be device-dependent, e.g. have dimensions that are set by the physical properties and/or characteristics of a particular rendering device, or may be device-independent, e.g. be independent of any one rendering device. Red, Green, Blue (RGB) color spaces are typically device-dependent and have three dimensions or channels, each representing an intensity of one of the three colors; similarly, a Cyan, Magenta, Yellow and Black (CMYK) color space is a device-dependent color space that is dependent on a number of colorants used in a printing system. Examples of device-independent color spaces include those defined by the Commission Internationale de l'Eclairage (CIE) such as CIEXYZ and CIEL*a*b* color spaces. Hence, a particular rendering device may have a particular color gamut in a particular color space, e.g. a monitor may have a three-dimensional volume in RGB color space representing all the colors that may be displayed by the monitor (i.e. data points that can be rendered).
When moving between rendering devices, defined colors are mapped between color spaces. For example, a color image may be shown to a user of a design application via a computer monitor and be stored as pixel values in an RGB color space. The user may then wish to print the image on a printing device. The printing device may have four colorants—CMYK—and thus represent colors in a CMYK color space. In this case, the color image in the RGB color space needs to be converted to a print image in CMYK color space. Hence, data points defined within a given range of three dimensions are to be converted into a given (and typically different) range in four dimensions. Moreover, the set of colors that are renderable on the computer monitor (e.g. that can be displayed) may differ from the set of colors that are renderable by the printing device (e.g. that can be printed). In this case, a color gamut for the computer monitor in RGB color space is to be mapped to a color gamut for the printing device in CMYK color space. For example, a naive linear mapping may result in initial color points that are outside the gamut of the printing device. Gamut mapping adjusts these color points so that they are reproduced within the color gamut of the printing device.
To provide flexibility, many computing devices provide color mapping by mapping to an intermediate device-independent color space. Device-independent color spaces tend to be based on standardized color representations. As such, color representations for different devices may be mapped to a common well-defined color space. In a computing device, a color profile may be provided to map between the device-dependent color space and the device-independent color space. For example, the International Color Consortium (ICC) provides a standardized specification for color mapping between a source and/or target device-dependent color space and a profile connection space, a standardized device-independent color space. This specification sets out the configuration of a file called an ICC color profile that is used to perform the mapping. Similarly, a device link profile may be provided to map between two device-dependent color spaces, typically by way of a hidden intermediate device-independent color space color mapping.
When performing color mapping, it may be desired to change certain color properties. For example, it may be desired to modify hue, chroma and/or lightness characteristics. These modifications may be provided by way of one or more color transformations. In comparative cases, when rendering colors, these color transformations are applied in a device-independent color space before gamut mapping occurs, or in a device-dependent color space after gamut mapping occurs. Hence, the color transformations are applied in a single, uni-directional sequence. If the color transformations are applied before gamut mapping this may lead to unpredictability, as gamut mapping typically applies irreversible, non-linear transformations. If color transformations are applied after mapping, e.g. to a device gamut, they may have a constrained impact.
Certain examples described herein involve defining sequences of color transformations that modify the gamuts that form the fixed points of gamut mapping. In particular, a device-dependent color gamut, e.g. as measured based on an output of a rendering device, is transformed by a series of inverse color transformations that are applied backwards from a measured color gamut to change the output gamut that is mapped to in the gamut mapping process. This differs from comparative approaches where the output of the gamut mapping process is fixed as the measured color gamut and color transformations are applied to the measured color gamut of the device in a forward direction following the gamut mapping.
The storage medium 120 in
The storage medium 120 also stores computer program code 140 representing a gamut mapping function. The gamut mapping function maps a source color gamut to a target color gamut. Like instances of a color transformation function, an instance of the gamut mapping function may define a particular mapping between data points of a first dimensionality and range to data points of a second dimensionality and range. The gamut mapping function may represent a geometric transform that maps the volume associated with the source color gamut to the volume associated with the target color gamut. The geometric transform may not be continuous and/or may not be linear. The gamut mapping function may apply one or more of clipping and compression of data values to provide the mapping. The gamut mapping function may take the form of a mathematically defined function, as expressed in computer program code for execution by the processor 110, and/or a set of input and output data points, which may be represented in a look-up table. In the latter case, mappings outside of the defined data points may be made using interpolation.
The storage medium 120 also stores data 150 defining a color gamut for a rendering device. The color gamut is set based on properties of the rendering device. The color gamut may be defined by sampling from a device-dependent color space. In one case, it may be determined whether sampled points can be successfully rendered. In another case, measurements may be made of a rendered output and a volume fitted to the data points. In another case, a list of data points that violate operating constraints may be made. A variety of approaches are possible.
Lastly, the storage medium 120 stores computer program code 160 that when executed causes the processor 110 to perform a number of operations. Via instructions 162, the processor 110 is instructed to receive a sequence of forward color transformations. The forward color transformations are selected from the library of color transformation functions, e.g. they may comprise particular instances of a color transformation function. The sequence of forward color transformations acts to transform a source color gamut defined within a source color space. The sequence of forward color transformations is arranged such that the output of a first forward color transformation is used as the input of a subsequent forward color transformation, e.g. for consecutive pairs of forward color transformations in the sequence. The instructions 162 may comprise configuring defined inputs and outputs of the forward color transformations such that they meet the constraints of the sequence; for example, if a forward color transformation reduces a range of one or more dimensions in a color space, then the next forward color transformation in the sequence may be configured to receive input within that range. Similarly, if a forward color transformation adds, removes or constrains a dimension, this is taken into account for the input of the next forward color transformation. The received sequence of forward color transformations modifies the source color gamut, e.g. geometrically modifies the volume within multi-dimensional space, to output, at the end of the sequence, a modified source color gamut.
Via instructions 164, a sequence of inverse color transformations is also received. The inverse color transformations are also selected from the library of color transformation functions as described for instructions 162. The sequence of inverse color transformations is to be applied to transform a target color gamut defined within a target color space. In this case, the output of the sequence is constrained to be the target color gamut and the inverse color transformations are constrained to generate this final output. For example, if the last inverse color transformation comprises a contrast transformation, a color gamut output following that transformation is constrained to be the target color gamut, and a color gamut at the input is modified to accommodate the contrast transformation. Similarly, if a chroma transformation is applied as the penultimate inverse color transformation, then a color gamut at its output is constrained to match the color gamut at the input of the contrast transformation, and a color gamut at the input of the chroma transformation is modified based on the chroma transformation. As such the sequence of inverse color transformations are applied backwards starting from the target color gamut as a fixed set of data points, where the output of the color transformations is constrained and the color transformations applied to modify input data points (i.e. apply inverse transformations).
Via instructions 166, the processor 110 is instructed to provide the transformed source color gamut and the transformed target color gamut as inputs to the gamut mapping function. For example, a comparative implementation of the gamut mapping function may operate to map from the source color gamut to the target color gamut, wherein color transformations are applied before, or after, the gamut mapping. In the present case, the color transformations are folded into, or moved inside of, the gamut mapping operation. This is achieved by setting the transformed source color gamut and the transformed target color gamut as the respective input and output volumes for the gamut mapping function. The transformed source color gamut comprises the result of applying the sequence of forward color transformations to the source color gamut. The transformed target color gamut comprises the result of applying the sequence of inverse color transformations with a final output constrained as the target color gamut.
Via instructions 168, the processor 110 is instructed to output color mapping data generated based on the received sequences and the gamut mapping function that maps color data from the source color space to the target color space. This may comprise applying the received sequences and the gamut mapping function in the defined orders to data point samples. For example, the received sequences and the gamut mapping function may be applied to a series of data points from within the source color gamut and/or the target color gamut. For example, the gamut mapping function may clip colors in an input color gamut that lie outside of an output color gamut, where clipping may comprise setting a data point to a value that lies on a gamut boundary for the output color gamut. In the present example, the gamut mapping function operates on the transformed source color gamut as input and the transformed target color gamut as output. Hence, clipping clips values that are within the transformed source color gamut to a boundary of the transformed target color gamut, e.g. rather than the target color gamut itself. Similarly, if compression is performed, e.g. applied to in-gamut data points, this is performed relative to ranges in the transformed color gamuts as opposed to the original source and target color gamuts.
In the example of
In certain cases, the color mapping data comprises one of a color profile and a device-link profile to map color data for rendering on the rendering device. A color profile may be used by a computing device to convert color data (e.g. for an image) from a device-independent color space to the device-dependent color space for the rendering device such that following the mapping the color data points lies within a renderable volume. These profiles may be structured according to the ICC standard, or may be structured according to other formats, including proprietary formats.
In certain cases, the color mapping data is generated in the form of a look-up table by sampling data points in at least one of the source and target color spaces and applying the received sequences and the gamut mapping function to the sampled data points. For example, the received sequences and the gamut mapping function may be considered a single transformation from the source color space to the target color space. Sampling the application of this single transformation to input data points may be used to populate a multidimensional look-up table. This allows the overall transformation to be converted into a resource that may be embedded in a color profile, such as an ICC color profile.
The rendering device may comprise a variety of devices. In one case, the rendering device comprises a two or three dimensional printer. In other cases, the rendering device comprises a display device such as a monitor or television screen. If the target color space comprises the device-dependent color space for the rendering device, the target color space may comprise one of a Red Green Blue (RGB) based color space and a Cyan Magenta Yellow and Black (CMYK) based color space. Other color spaces are possible.
As described above, the sequence of inverse color transformations is applied starting from the target color space, wherein an output of a first inverse color transformation applied to a data point in the target color space is passed to an input of a second inverse color transformation for ordered pairs of first and second inverse color transformations in the sequence of inverse color transformations.
In
The gamut mapping process 260 maps colors from one sequence of color transformations to colors in the other sequence of color transformations. This mapping may involve clipping colors in the input gamut that lie out of the output gamut. It may also involve color compression, and in-gamut color adjustment. The gamut mapping process 260 is applied between the source color space after being transformed by the first sequence of forward color transformations 240, and maps to the destination space (and gamut) after it is transformed by the second sequence of inverse color transformations 250.
At subblock 430, a gamut mapping is applied between the output of the forward color transformations and the output of the inverse color transformations. Hence, the color mapping of block 410 comprises the application of the sequence of forward color transformations, the sequence of reverse color transformations and the gamut mapping, i.e. the end-to-end process shown in
The method of
The nature of the source and target color spaces may depend on the implementation. In a first case, the first color space comprises a device-independent color space, such as a profile connection space, and the second color space comprises the device-dependent color space. In this case, the color mapping may generate a color profile for mapping received color data to a standardized color space. The second color space may comprise a color space for a rendering device, and the color mapping data may be useable by a computing device to process color image data for rendering on the rendering device. In a second case, the first color space comprises the device-dependent color space and the second color space comprises a device-independent color space. In this case, the color mapping may generate a color profile for rendering color data received from a standardized color space. In a third case, the first color space comprises a device-dependent color space for a first device and the second color space comprises a device-dependent color space for a second device. In this case, the color mapping may generate a device link profile for mapping between color representations used by two devices (e.g. between different types of display device, or between a display device and a printing device).
The sequence of forward color transformations comprises an ordered sequence of a plurality of color transformations. These may be selected from the set of: adjusting the first color space based on a reference media; adjusting the first color space based on a defined tone curve; adjusting the chroma characteristics of the first color space; adjusting the saturation characteristics of the first color space; and applying black point compensation.
An example set of forward color transformations will now be described, working from a profile connection space. These are provided to illustrate how the present examples may be used in a printing context and should not be seen as limiting, they are just one possible sequence out of many possible sequences of varying lengths and orders. In this example, a first forward color transformation may comprise a primary adjustment. This morphs a color gamut defined in profile connection space to take into account a reference media gamut. It may also involve adjusting the primaries of the reference media gamut with primaries of a rendering device gamut, e.g. for a printing device. The primary adjustment may finish by expanding a given transformation to a remaining portion of the profile connection space. A second forward color transformation may comprise applying an adjustment based on a tone curve. This adjustment is made to points in color space that have already been modified by the primary adjustment. The adjustment based on the tone curve may comprise adjusting points in a color space with reference to a tone curve that will compress or expand the space in a L* axis. A third forward color transformation may comprise chroma or saturation adjustment. This may be applied to the color points following the tone curve adjustment. This adjustment may comprise modifying the chroma and/or saturation conditions of the color space by applying a radial color transformation. Lastly, in this example, black point compensation may be applied. This is best applied as a later stage and involves expansion and/or compression of an L* axis, such that the black point of the transformed source color gamut best matches the black point of the transformed target color gamut.
In a case where the second color space is associated with a rendering device, the sequence of inverse color transformations may comprise an ordered sequence of a plurality of color transformations selected from the set of: applying a correction for gray axis mapping; constraining the dimensionality of the second color space; and adjusting a modeling of a device response for the rendering device.
Following on from the previous example of a set of forward color transformations, an example set of inverse color transformations will now be discussed. Again, these are provided to illustrate how the present examples may be used in a printing context and should not be seen as limiting, they are just one possible sequence out of many possible sequences of varying lengths and orders. Starting from a device color gamut, e.g. as color transformation 250-1 in
It should be noted that forward color transformations as described herein may be converted to inverse color transformations and vice versa. For instance, expanding chroma in a forward color transformation may enable the complete transformation to render colors as more vivid. However, this forward color transformation may also be applied as an inverse color transformation by compressing the chroma of the second color space, which creates a similar effect in the complete transformation. In both case, an overall colorfulness mapping goes from a larger gamut to a smaller one, either by inflating the former or by shrinking the later. Color transformations may be applied as forward or inverse color transformations depending on desired color configurations, e.g. it may be desired to preserve a relationship between colors as described below.
Certain examples described herein allow for predictability of color adjustments. They allow for adjustments to be applied before gamut mapping in two directions. They allow easier configuration of a color processing pipeline to generate a desired “look and feel” of a rendered color image. They also provide better color quality as color adjustments can be applied in a controlled manner. Certain examples allow a color profile or device link profile to be generated, for both ICC-compliant systems and proprietary systems.
At least some aspects of the examples described herein with reference to the drawings may be implemented using computer processes operating in processing systems or processors, e.g. as described with reference to
Similarly, it will be understood that a processor may in practice be provided by a single chip or integrated circuit or plural chips or integrated circuits, optionally provided as a chipset, an application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), etc. For example, this may apply to all or part of a controller or other printer control circuitry. The processor may be an embedded processor of a rendering device such as a printer or monitor.
The preceding description has been presented only to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Features of individual examples may be combined in different configurations, including those not explicitly set out herein. Many modifications and variations are possible in light of the above teaching.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2018/022037 | 3/12/2018 | WO | 00 |