In the field of color science, it is useful to generate a table for converting data in a color exchange space to device values in a physical color space. This table contains data, which describes a physical color space for a particular output device. Program instructions can execute to use a table to map mathematical expressions that represent colors independent of any device to device values that represent colors for a particular output device. An output device can use such device values to produce color images. Program instructions can also execute to generate the above described table for a particular output device.
To generate a table, program instructions can execute to perform a minimum delta E clipping method to clip sampled nodes that are out of a color gamut of an output device to locations on a gamut boundary of the output device. The clipping of these sampled nodes to locations on the gamut boundary can affect the mapping of data to device values, which can affect colors produced by an output device. A minimum delta E clipping method can generate a table that maps data to device values so that an output device produces color images that do not use the full extent of available colors within its color gamut and/or that unevenly use colors near its gamut boundary.
Embodiments of the present disclosure include methods, computer readable media, application specific integrated circuits (ASICs) and computing devices including program instructions that are provided for gamut boundary mapping. One method embodiment includes defining a region of interest inside a color exchange space by a region boundary, which is formed, at least in part, by a gamut boundary for an output device and an inflated gamut boundary. The method also includes providing a table for converting data from the color exchange space to a physical color space for the output device. In this method, at least a portion of the table is generated by using a first set of nodes sampled inside the gamut boundary and a second set of nodes sampled inside the region of interest and clipped to the inflated gamut boundary. Embodiments of the present disclosure will now be described in relation to accompanying drawings, which will assist in illustrating the various features of the various embodiments.
An output device has its own color gamut, which has a limit marked by a gamut boundary. An output device can use device values to produce color images using colors within its color gamut (i.e. inside its gamut boundary). However, an output device cannot produce colors out of its color gamut (i.e. outside of its gamut boundary). According to various embodiments of the present disclosure, program instructions can execute to perform an inflated gamut clipping method. An inflated gamut clipping method can generate at least a portion of a table that maps data to device values so that an output device puts out color images that use available colors within its color gamut and that evenly use colors near its gamut boundary.
The embodiments described herein can be performed by software and/or firmware (i.e., computer executable instructions), hardware, application modules, and the like, executable and/or resident on systems, ASICs, and devices shown herein or otherwise. The embodiments of the invention are not limited to any particular operating environment or to instructions written in a particular programming language. Software, firmware, and/or processing modules, suitable for carrying out embodiments of the present invention, can be resident in one or more devices or locations. Processing modules can include separate modules connected together or include several modules on an application specific integrated circuit (ASIC).
The graph of
The graph of
The graph of
One end of the inflated gamut boundary 225 begins at a chroma value of zero and a lightness value of 100. The inflated gamut boundary 225 continues from that one end down and to the right, first gradually, then more steeply, to a cusp, at which the inflated gamut boundary 225 angles sharply. From the cusp, the inflated gamut boundary 225 continues down and to the left until it intersects the chroma axis. From the intersection with the chroma axis, the inflated gamut boundary 225 follows the chroma axis to the left to another end at a chroma value of zero. The inflated gamut boundary 225 of
In
As shown in
However, some of the sampled nodes in
Sampled nodes can be used to generate a table for converting data from a color exchange space to a physical color space for an output device, as will be understood by those of ordinary skill in the art. Program instructions can execute to regularly sample nodes in a color exchange space and to define a color exchange space location for each sampled node. Program instructions can also execute to clip some of the sampled nodes, to various locations in the color exchange space. Program instructions can execute to associate one or more device values with each node. Program instructions can execute to use the device values associated with the nodes to generate the table.
This table can be used for converting data from the color exchange space to the physical color space for the device, as will be understood by those of ordinary skill in the art. Program instructions can execute to process data in the color exchange space, through the table to form device values. Program instructions can execute to use the color exchange space locations to identify one or more sampled nodes located near each point of data in the color exchange space. Program instructions can execute an interpolation algorithm for each data point, by using the device values associated with the sampled node(s) identified near the data point, to map device values for each data point. By repeating this process for multiple data points, data can be converted from the color exchange space to the physical color space for the output device.
According to the present disclosure, determining which sampled nodes are clipped affects how device values are mapped, which will affect how a color is produced. In various embodiments, nodes sampled inside a region of interest are clipped to an inflated gamut boundary. In one embodiment, a region of interest can be defined by a particular region boundary that encloses sampled nodes, as described in
In another embodiment, a region of interest can be defined by describing particular nodes included in the region. A region of interest can include less than all sampled nodes outside a gamut boundary. For example, program instructions can execute so that a region of interest does not include sampled nodes that are relatively far from a gamut boundary. This can limit how many sampled nodes are clipped, which can limit how much out-of-gamut data is mapped to device values near the gamut boundary.
A region of interest can also include sampled nodes used by a table for converting data inside the gamut boundary from the color exchange space to a physical color space for the device. For example, program instructions can execute so that a region of interest includes sampled nodes outside a gamut boundary that are identified as near in-gamut data points and used for interpolating device values for those data points. This can target which sample nodes are clipped, which can increase clipping effects on out-of-gamut data that are mapped to device values near the gamut boundary.
Different scaling techniques can obtain different results, in various embodiments of the present disclosure. Scaling can be applied to modify one or more values or to modify a set of values. In one embodiment, scaling can compress a set of values to occupy a narrower range of values. For example, program instructions can multiply each value in a set of values by a scale factor less than one, to compress the set of values to occupy a narrower range. In another embodiment, scaling can expand a set of values to occupy a broader range of values. For example, program instructions can multiply each value in a set of values by a scale factor greater than one, to expand the set of values to occupy a broader range. In other embodiments, scaling can be accomplished by program instructions that can execute various algorithms to scale original values so that the scaled values occupy a range of a different size than a range that the original values occupied.
Different offsetting techniques can also obtain different results, in various embodiments of the present disclosure. Offsetting can be applied to modify one or more values or to modify a set of values. In one embodiment, offsetting can move a set of values to occupy a higher range of values. For example, program instructions can add a particular amount to each value in a set of values, to move the set of values to occupy a higher range. In another embodiment, offsetting can move a set of values to occupy a lower range of values. For example, program instructions can subtract a particular amount to each value in a set of values, to move the set of values to occupy a lower range. In other embodiments, offsetting can be accomplished by program instructions that can execute various algorithms to offset original values so that the offset values occupy a range of a different location than a range that the original values occupied.
In various embodiments, different channels of an output device can have different scaling and/or offsetting. As an example, for an output device with red, green, and blue output channels, program instructions can execute to scale and offset a red channel one way, and scale and offset a green channel another way. Program instructions can execute to perform different scaling and/or offsetting for different channels of an output device.
As shown in
Scaling, offsetting, or a combination of scaling and offsetting of encoded device values can improve interpolation through a table for converting data from a color exchange space to a device values in a physical color space for an output device. As one example, program instructions can execute to scale a range of encoded device values, so that the range is resized and the scaled range does not occupy a portion of color encoding in a table for converting data in a color exchange space to device values in a physical color space. As another example, program instructions can execute to offset a range of encoded device values, so that the range is relocated and the offset range does not occupy a portion of color encoding.
Such unoccupied portions of color encoding are available for other encoded device values. In
When converting data from a color exchange space to device values in a physical color space, as described herein, some data can be converted to out-of-gamut device values (i.e. device values that are outside of a gamut boundary for an output device). An output device can use device values within its color gamut to produce color images, however, an output device cannot produce colors out of its color gamut. In color exchange space, a color gamut has a limit marked by a gamut boundary. In physical color space, a color gamut has limits marked by a minimum device value and a maximum device value. An output device can use device values that are greater than or equal to its minimum device value to produce color images. An output device can also use device values that are less than or equal to its maximum device value to produce color images. Device values less than a minimum device value for an output device or greater than a maximum device value for the output device are out-of-gamut device values for the output device.
As an example of color gamut limits in a physical color space, an output device with a physical color space that uses an eight-bit color system can have a minimum device value of zero and a maximum device value of 255. This output device can use values from zero through 255 to produce colors. In this example, device values that are less than zero or greater than 255 are out-of-gamut device values for the output device.
Out-of-gamut device values can be modified to form modified encoded device values. Device values that are less than a minimum device value, can be modified to form modified encoded device values that are greater than or equal to a minimum device value and within an available portion. For example, if a minimum device value is zero, program instructions can execute to offset a device value of minus ten to form a modified encoded device value of positive ten. Similarly, device values that are greater than a maximum device value, can be modified to form modified encoded device values that are less than or equal to a maximum device value and within an available portion. For example, if a maximum device value is 255, program instructions can execute to scale a device value of 270 by a factor of 0.9 to form a modified encoded device value of 243. Thus, out-of-gamut device values can be modified to form modified encoded device values.
In various embodiments of the present disclosure, out-of-gamut device values can be modified to form modified encoded device values within an available portion of a color gamut created by scaling and/or offsetting converted in-gamut device values. For example, program instructions can execute to modify out-of-gamut device values, as described herein, to form modified encoded device values within an available portion of a color gamut.
Scaling and/or offsetting can create an available portion of an appropriate size in color encoding, to accommodate modified encoded device values formed by modifying out-of-gamut device values for a particular device. As one example, if relatively few modified encoded device values are formed from a particular device, program instructions can execute to scale in-gamut device values to a broader range of values, creating a smaller available portion in a color gamut, appropriate for fewer modified encoded device values. As another example, if relatively many modified encoded device values are formed from a particular device, program instructions can execute to scale in-gamut device values to a narrower range of values, creating a larger available portion in a color gamut, appropriate for many modified encoded device values. As will be understood by those of ordinary skill in the art, scaling and/or offsetting can also create an available portion in an appropriate location in a color gamut, to accommodate modified encoded device values within the gamut.
Various other embodiments of the present disclosure can be implemented, as will be understood by those of ordinary skill in the art. In one embodiment, data that are converted from a color exchange space to a physical color space, as described herein, can be processed through one dimensional look-up-tables to form device values within a color gamut for an output device. In another embodiment, data in the form of an ICC profile can be converted from color exchange space to a physical color space for a device, as described herein, by using output shapers.
An output device can use the device values represented in
Although specific embodiments have been illustrated and described herein, those of ordinary skill in the art will appreciate that an arrangement calculated to achieve the same techniques can be substituted for the specific embodiments shown. This disclosure is intended to cover all adaptations or variations of various embodiments of the present disclosure. It is to be understood that the above description has been made in an illustrative fashion, and not a restrictive one. Combination of the above embodiments, and other embodiments not specifically described herein will be apparent to those of skill in the art upon reviewing the above description. The scope of the various embodiments of the present disclosure includes other applications in which the above structures and methods are used. Therefore, the scope of various embodiments of the present disclosure should be determined with reference to the appended claims, along with the full range of equivalents to which such claims are entitled.
In the foregoing Detailed Description, various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the embodiments of the present disclosure require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.