The embodiments disclosed herein relate to a color control system, and more specifically, to a method for controlling color in printing devices.
Many modern printing technologies are capable of supporting a wide array of color spaces. For example, the Adobe® PostScript® page description language (PDL) uses Color Render Dictionary (CRD) based color systems to support a wide array of color spaces. Historically however, applications on devices connected to the printing device (or on a machine integrating the printing device) typically emitted a very limited subset of possible color spaces. In fact, a number of years ago, about the only color space being used in the office market was the sRGB color space (mainly coming from PDF documents). Therefore, there was a conscious decision to optimize the pipeline from input image to output image for that color space.
There has been a slow shift in the office market. The number of different CIE color spaces being used has been increasing. For example, the use of CIE Based DEFG spaces is becoming more common. These four dimensional color spaces are typically used for emulating printing presses. These color spaces are quite different from the sRGB color space. Therefore, when an image generated using one of these non-sRGB spaces passes through the sRGB optimized pipeline, the resulting color may be less than desirable.
The methods disclosed herein relate to intercepting the color space choice as it is being set. If the CIE color space appears to be or is substantially similar to a known RGB color space, then record that color space in lieu of the CIE space that would be assigned by the application. Additionally, if the CIE color space appears to be or is substantially similar to a known CMYK color space, then record the input space as the four-color CMYK space. Finally, if the CIE color space appears to be or is substantially similar to a known gray space, then substitute the known gray space for the application-assigned space.
Embodiments of the present invention include a method for processing image data. The method includes receiving image data including a defined color space, comparing the defined color space of the image data to a known color space, and processing the image data based upon the known color space if the difference between the known color space and the defined color space is below an acceptable threshold.
Embodiments further include calculating the differences between the value of N sample data points in the defined space and the same N sample points in the known space.
Embodiments of the present invention also include a method performed in a printing device. The method includes receiving image data including color data, assigning a color space to the image data, determining whether the assigned color space of the image data is acceptably close to one or more target color spaces, and when one of the one or more target color spaces is acceptably close to the assigned color space of the image data, substituting the one of the one or more target color spaces for the assigned color space.
Various exemplary embodiments will be described in detail, with reference to the following figures.
A printing device as used herein refers to any device that produces visible marks on paper. Printing devices include, for example, copiers, printers, or multi-function devices. Paper as used herein refers to any markable media such as, for example, paper, plastic, and textile materials.
During the transformation into a CMYK signal, a variety of image enhancement algorithms may be performed on the signal. In
Because the CRD and VCD transforms are optimized for sRGB transformations, the results for non-sRGB spaces can range from acceptable to bad. One approach for achieving more accurate color output includes being more pro-active further up the pipeline. Rather than let the application set the input color space, the color space can be intercepted prior to being acted on by the PostScript® interpreter.
Many printing devices contain an operator that allows the user to define the color space of input image information. Such an operator will hereinafter be referred to as the setcolorspace operator. The setcolorspace operator can be redefined to assign a color space to image data during interpretation of a PostScript® file. Specifically, the setcolorspace operator can compare the PostScript® application dictionary defined color space of the image input data against a set of known color spaces of matching dimensions. If a known color space sufficiently matches the defined space, then the input color signal will be treated as if it were acquired in the matching, known color space. The color signal would then bypass the CRD and proceed directly to the VCD transforms associated with the assigned color space.
It is noted that while the methods and examples herein are described with respect to applications using Adobe® PostScript®, the techniques described herein could be applied to other PDL applications such as Microsoft®'s XPS. Other applications such as XPS may be streamlined for interpreting received color data and processing that data through a particular color space or a limited set of color spaces. The techniques for assigning a color space as described herein may be used with these other PDL applications as well.
If the color data comprises more than one color, the printing device determines 225 if the color space of the image data is a three-color space. If the data comes from a three-color space, the printing device then compares the defined three-color space to one or more target three-color spaces and determines 230 whether the defined three-color space is sufficiently similar to at least one of the one or more known target three-color spaces. If the defined space is sufficiently close to one or more target three-color spaces, then select 232 the target three-color space closest to the actual color space. Then identify 235 the selected target three-color space as the space in which the image color data was obtained. The assigned target space is used 260 for future processing of the image data.
If the color data comprises more than three colors, the printing device determines 240 if the color space of the image data is a four-color space. If the data comes from a four-color space, the printing device then compares the defined four-color space to one or more target four-color spaces and determines 245 whether the defined four-color space is sufficiently similar to at least one of the one or more known target four-color spaces. If the defined space is sufficiently close to one or more target four-color spaces, then select 247 the target four-color space closest to the actual color space. Then identify 250 the selected target four-color space as the space in which the image color data was obtained. The assigned target space is used 260 for future processing of the image data.
If the image data does not appear to be from a one, three, or four-color space that is sufficiently similar to a known target color space, the printing device will use 255 the application assigned color space to process the data. The term “is sufficiently similar to” means within an acceptable limit of difference between the target space and the defined space and is subjective on its own. A more rigorous exemplary definition will be provided.
As will be explained in more detail subsequently, the comparison between the defined “actual” space and each target space will be formed by comparing sample points from the defined color space to sample points of the target space in a device-independent space such as, for example, CIE L*a*b*. In the present case, a space having more linear color transitions was used. The particular color space used herein is not described independently from the transformations of the input and output color space vectors. However, the exemplary comparison calculations, equation 14-25, described herein include the transformations into the particular device-independent space used.
It should be noted that the steps outlined in the flowchart of
If a target space is assigned, then VCD transforms tailored to the assigned target space are used to process the image data signal prior to printing, thereby producing an improved output. Default VCD transforms 170 and 180 (generally sRGB-based transforms) would be replaced by VCD transforms tailored for the target space assigned to the input image signal.
To determine whether a target color space is sufficiently similar to the color space of the input image data, the relationship between the two color spaces should be quantified. The printing device may be programmed to work with a finite number of known color spaces. For example, the printing device may include n1 known target gray spaces, n3 known target three-color spaces, and n4 known target four-color spaces.
n1≡The number of target gray spaces (e.g., /DeviceGray). (1)
n3≡The number of target three-color spaces (e.g., /DeviceRGB). (2)
n4≡The number of target four-color spaces (e.g., /DeviceCMYK). (3)
Given an arbitrary CIE color space, A, and a known target color space, T, one can compute a difference metric δ(A,T) that represents a measure of just how different the two color spaces are from each other.
δ(A,T)≡A metric representing the difference between color spaces A and T. (4)
The metric δ(A,T) is the comparison performed in the Automatic Substitution Logic block outlined in
Typically, δ is a single function in a device-independent color space to which the incoming signal is mapped. The defined color space of the input signal and the target spaces are also mapped to the device-independent color space. If a target color space is sufficiently close to the defined color space, then the target color space can effectively be substituted for the defined color space. An advantage of doing so is that then the printer could process the signal using algorithms tailored for the target color space.
The metric used had the following three properties or constraints:
1. The metric must always yield a non-negative real number:
0≦δ(A,T)<∞for all values of A and T; (5)
2. When comparing identical color spaces, the metric should produce a zero value:
δ(T,T)=0; and (6)
3. As A diverges from T, the value of δ(A,T) increases.
The latter quality is not easily represented by an equation, but was a constraint for the δ's used in the methods described herein. An exemplary function δ is defined in more detail in subsequent paragraphs.
In embodiments, different metrics may be used for different types of color spaces. For example, different metrics may be used to compare 1-D, 3-D, and 4-D color spaces. The metrics used should still embody the properties and constraints 1-3.
The three subjective queries 215, 230, and 245 in
Similarly in
Similarly in
Referring back to
It should be noted that while it will generally take more processing time, color space defined by the dictionary could simply be compared against every target color space regardless of dimensionality. All the comparisons are performed in the same device-independent space already. However, as the dimensionality of the defined color space is already known, it is simple enough to use that information to reduce the number of comparisons to be performed.
Depending on the needs of the user, the value of the λ's in
The color space difference metric δ(A,T) is computed within the printing device every time a CIE color space is set within a document (this typically happens multiple times per page). PDL languages such as Adobe® PostScript® only support CIE based independent color spaces, but the methods described herein would work with non-CIE device-independent color spaces as well.
For performance reasons color space difference metric calculation should be as simple as possible. From a mathematical viewpoint, comparing two spaces involves integrating over a multi-dimensional volume. The printing device would perform this integration as a numerical approximation (finite sum). The number of samples in the sum affects the numerical accuracy of the approximation. As the number of samples decreases, so the accuracy decreases, but speed of the calculation increases. A variety of factors can influence the decision of how many points to use including accuracy requirements, processor speed and memory, variety of image data received by the printing device, etc. The accuracy required drives the decision on how many samples to use.
As it turns out, for printing devices supporting Adobe® PostScript®, not much accuracy is required for the following reason. Adobe® PostScript® CIE color space may have any white point. This is problematic. For example, the official white point for sRGB is D65. ICC profiles only support a D50 white point. If a user is using a sRGB ICC color profile, it has been converted from D65 to D50. The results of conversion process will vary depending on the chromatic adaptation model used. The chromatic adaptation model does not propagate as part of the document workflow. In fact, if it is proprietary algorithm, it may be known only to the profile creator. There are a whole host of chromatic adaptation models out there. They all produce different results. It is a daunting if not impossible task to pick a “best” method. For example, the Bradford model is currently popular. It would not be surprising to see its popularity usurped by something newer (not necessarily better) in the future. A big bucket is needed to catch all the variations on the same CIE color space. Because there are such differences in adaptation models, and such large tolerances are required, a limit is quickly approached where adding more sample points provides no new information. Therefore, very few sample points are required. In embodiments, 3 sample points were used for gray spaces, 11 sample points were used for three-color spaces, and 19 sample points were used for four-color spaces. The number of points used could certainly have been greater, but would have added additional computation time.
For the sake of computational speed, a precise comparison is not used. A precise comparison would mean taking the Euclidean distance between each sample point of the defined color space and its corresponding sample point in the target color space. To speed up the comparison, the metric, δ, is a useful approximation that can be calculated more quickly.
Up to this point, the specifics of the metric, δ, have not been discussed. The methods disclosed herein will work with any metric that fits the three requirements listed previously.
The first step is to pick N samples in the target space T.
N≡Is the number of samples in the target space T. (7)
Three pieces of information may be associated with each sample: the input vector {right arrow over (σ)}i, and the output vector {right arrow over (ω)}i, and the tolerance vector {right arrow over (Δ)}i:
for all samples i such that 1≦i≦N and η is the dimension of the input space;
for all samples i such that 1≦i≦N where xωi, yωi, and zωi, are the tri-stimulus values of the i'th sample; and
for all samples i such that 1≦i≦N where L*i, a*i, and b*i are the tolerance constants of the i'th sample.
The white point of the target space T can be represented by:
with xt, yt, and zt being the tri-stimulus values of the white point of the target color space t.
For every input vector {right arrow over (σ)}i, the CIE dictionary provided can be used to compute an output vector {right arrow over (Ω)}i for the requested CIE color space A.
for all samples i such that 1≦i≦N, where xΩi, yΩi, and zΩi are the tri-stimulus values of the i′th sample. {right arrow over (Ω)}i is a three-dimensional vector and all the comparisons and calculations are being performed in a device-independent space. Likewise, the respective target gray spaces and four-dimensional spaces against which these spaces will be compared are also converted to a three-dimensional device-independent space representation as well.
The white point of the requested color space A can be represented by:
with xA, yA, and z4 being the tri-stimulus values of the white point of the requested color space A.
For each sample i it is possible to compute a vector {right arrow over (d)}i via matrix multiplication. Equation 14 contains many constants. The equation is presented in this way in order to draw attention to the simplicity (speed) of the runtime calculation. The values of the constants are specified in equations 15 through 24.
for all samples i such that 1≦i≦N
This next group of equations defines the constants used in equation 14. To decrease runtime, equations 15-24 can be precomputed and cached prior to runtime:
for all samples i such that 1≦i≦N.
The function f comes from the CIE definition of the L*a*b* color space.
The function ƒ′ is the derivative of ƒ with respect to x:
This finally brings us to the actual metric definition:
The computation of the metric should be very fast, because only equations 14 and 25 are computed at runtime.
In recapitulation exemplary embodiments of a method for improving the color output of a printing device are disclosed. The method includes comparing a color space defined for electronic image data by a color dictionary of an Adobe® PostScript® application to one or more target color spaces using, for example, equations 14 and 25. If one of the one or more target color spaces results in a value for δ less than a threshold value, then the target color space is assigned to the image data. If multiple target color spaces yield δ's below the threshold value, the target color space yielding the lowest δ value is assigned to the image data.
It will be appreciated that various of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into many other different systems or applications. Also that various presently unforeseen or unanticipated alternatives, modifications, variations or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims. Unless specifically recited in a claim, steps or components of claims should not be implied or imported from the specification or any other claims as to any particular order, number, position, size, shape, angle, color, or material.