In some imaging apparatuses, a color profile may define a mapping between a device source color space and an output color space. The device source color space may comprise a red, green and blue (RGB) color space or a cyan, magenta, yellow and black (CMYK) color space, for example. The output color space may be a color space defined by the International Commission on Illumination (CIE), such as a CIELAB, expressing colors as three values (LAB representing the lightness from black to white, from green to red and from blue to yellow, respectively) color space in which colors are expressed or a CIEXYZ (XYZ representing the tristimulus values perceived by the human eye) color space. Mappings can be specified using tables, to which interpolation is applied, or through a series of parameters for transformations, for example.
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 the present disclosure, and wherein:
In the following description, for purposes of explanation, numerous specific details of certain examples are set forth. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with the example is included in that one example, but not necessarily in other examples.
In an example, the processor 102 is in communication with a non-transitory computer readable storage medium 104 to store the color profile of the imaging apparatus 100. The non-transitory computer readable storage medium 104 may be a read only memory (ROM) or a read-write memory, for example. The non-transitory computer readable storage medium 104 (hereinafter “storage medium 104”) may be in the form of compact disk (CD), a digital versatile disk (DVD), hard disk drive, solid state drive, a flash memory device and the like.
In an example, the storage medium 104 has instructions stored thereon, which, when executed by a processor (in this instance, the processor 102), causes the processor to update the color profile of the imaging apparatus 100.
In this example, the processor 102 is in communication with an interface 106 to receive input data indicating a determined association between a first determined color value in the first color space and a second determined color value in the second color space.
The interface 106 may be a user interface comprising a user input means, such as a keypad or a touchscreen. A user may use the interface 106 to enter color values on the basis of which the processor 102 updates the color profile, as described below.
The imaging apparatus 100 may be an apparatus which produces as image such as a printing system, a camera or general-purpose computer monitor, for example.
In the following description, methods of updating a color profile are described as being performed by the imaging apparatus whose color profile is to be updated. However, in some examples, the methods are performed by a different apparatus, for example a computing device separate from the imaging apparatus whose color profile is to be updated. For example, the color profile of the imaging apparatus may be provided to a memory of the computing device and updated according to methods disclosed herein.
At block 202 of the method 200, the color profile of an imaging apparatus 100 is retrieved from a data storage. The color profile comprises a first plurality of associations between a first plurality of color values of a first color space and a second plurality of color values of a second color space. One of the first color space and the second color space may be a source color space of the imaging apparatus and the other of the first color space and the second color space may be an output color space of the imaging apparatus.
The color profile of the imaging apparatus may be an international color consortium (ICC) profile mapping the available color values of an imaging apparatus. The color profile may comprise a look-up table (LUT) associating (e.g. relating) each source color value (e.g. an RGB or CMYK value) to a corresponding output color value (e.g. a CIELAB or CMZY value). The source color space may be an RGB or CMYK color space and the output color space may be a CIELAB or CIEXYZ color space, for example. The output color space may thus define the range of colors which the imaging apparatus 100 is capable of producing (e.g. which a printer is capable of printing or a monitor is capable of displaying). Some examples described herein are described with reference to RGB and LAB color spaces. It will be appreciated that these examples apply equally to other color spaces, such as CMYK and XYZ color spaces.
Values in the input color space may define input parameters for the imaging apparatus 100. For example, in the case that the imaging apparatus 100 is a printing system, the output color values may each represent colors to be produced as a result of printing content with the corresponding source color values. The source color values may each represent a set of parameters such as parameters relating to ink to be used to be used in order that content printed according to the source color value has a color conforming to the corresponding output color value. The source values may thus be used as part of printing data representing the printing content to be printed. Each of the first plurality of color values may represent a set of coordinate values of a first color space and each of the second plurality of color values may represent a set of coordinate values of the second color space.
The color profile thus provides a mapping between color spaces, with each of the second color values representing a set of coordinates of a vertex of a shape (for example, a 3-dimensional or 4-dimensional shape) in the second color space, and the corresponding first color values representing values of the first color space corresponding to each of the vertices. Each of the first and second color spaces may be tessellated according to such shapes. These shapes may be referred to as “tessella”.
When a color is to be output which is not included in the color profile of the imaging apparatus 100 (e.g. there is a no value exactly corresponding to the desired value in a LUT of the color profile), an interpolation scheme associated with the imaging apparatus 100 may be used to obtain the value. Data representing the interpolation scheme may be stored in the storage medium 104, for example. The interpolation scheme may be a linear interpolation scheme, such as a trilinear or quadrilinear interpolation scheme, or a simplicial interpolation scheme, such as a pentahedral, tetrahedral or cubic interpolation scheme, for example.
At block 204, the processor 102 receives input data indicating a determined association, the determined association being an association between a first determined color value of the first color space and a second determined color value of the second color space, the determined association being different from each of the first plurality of associations.
The input data may be derived from data entered by a user at the interface 106, for example. For example, in the case the imaging apparatus 100 is a printing system, the input data may be based on a matching process of printed content. For example, a user may compare printed content with samples having specified LAB values. The samples may be brand or corporate identify colors, for example. The LAB value of a sample which most closely matches (e.g. by visual inspection) with the printed content may be entered into the interface, this entered value being an example of the second determined color value. An RGB value used by the imaging apparatus 100 to produce the content having the LAB value measured according to the above process is an example of the first determined color value. This RGB value may also be entered by a user via the interface 106, or the imaging apparatus 100 may store the value used to perform the e.g. printing process and associate the stored value with the entered LAB value on input of the LAB value.
In other examples, the imaging apparatus 100 may produce image files, such as digital files which may be decoded into raster and vector content from where color values (e.g. LAB values) can be extracted and provided via the interface 106. This may involve the use quantization algorithms, median cut or octree techniques to reduce the set of output color space colors produced according to input color spaces listed in the color profile (which may be referred to as a “palette”) to the desired size.
At block 206, the processor 102 performs an update process to update the first plurality of associations, the update process comprising performing an interpolation process using the determined association and an association of the first plurality of associations.
At block 302, the processor 102 identifies a default coordinate value of the second color space corresponding to the first determined color value by interpolating, using an interpolation scheme associated with the color profile of the imaging apparatus, based on given values of the first plurality of color values, the given values being associated in the color profile with color values of the second color space representing coordinate values of the vertices of a shape containing the default value.
As described above, the second color value may be a measured value in the second color space, corresponding to the first determined color. The second determined color value may represent a modified value of the second color space. For example, the modified value may be a value desired to be obtained using an interpolation scheme associated with the imaging apparatus 100. In this example, the default coordinate value of the second color space is a coordinate value corresponding to the first determined color value as calculated using the interpolation scheme associated with the color profile of the imaging apparatus. This default coordinate value may differ from the measured value due to differences between characteristics of the imaging apparatus 100 assumed when creating the color profile and the actual characteristics of the imaging apparatus, for example.
In this example, the given values are interpolation values used by the interpolation scheme to obtain the default value. The given values may be selected as those associated, in the color profile, with color values of the second color space corresponding (e.g. comprising the coordinate values of) vertices of the shape (tessellar) in the second color space enclosing the default value (e.g. the shape in which the default value lies).
At block 304, the processor identifies a coordinate value difference between the default coordinate value and the modified coordinate value. The coordinate value difference between the default coordinate value and the coordinate value is, for example, a vector distance. This is illustrated in
At block 306, the given values of the second plurality of color values are updated based on the difference value obtained at block 304. The update may reduce or eliminate the coordinate value difference between the default coordinate value and the modified coordinate value. For example, modified color values for the given values are selected such that when the interpolation scheme associated with the imaging apparatus 100 is applied to the modified color values to generate a coordinate value corresponding to RGBref, the coordinate value generated is the same as LABmod or is closer (e.g. by vector distance) to LABmod than LABdefault. For example, in the case that the interpolation scheme associated with the imaging apparatus 100 is a tetrahedral interpolation scheme, the modified coordinate values may be generated as follows. The barycentric coordinates of the points corresponding to the default coordinate value and the modified coordinate value, in the shape (e.g. tetrahedron) in the second color space enclosing the modified value and the default value may be calculated. These barycentric coordinates correspond to the convex weights applied in combining the coordinate values of the vertices of the enclosing shape when using the tetrahedral interpolation scheme to determine coordinate values for a given enclosed point. These barycentric coordinate values can thus be used as weights for distributing the coordinate value difference among the color values in the first color space associated with the coordinate values of the tetrahedron vertices. Similarly, if an interpolation scheme different than a tetrahedral interpolation scheme is used, the process according to which the coordinate values of the vertices are combined in the interpolation scheme can be applied to update the given values associated with the vertices of the shape.
In the example of
The color profile of the imaging apparatus 100 may be updated according to the new color values RGB1′, RGB2′, RGB3′ and RGB4′, by modifying the first plurality of associates so that the values RGB1′, RGB2′, RGB3′ and RGB4′ are associated with the values LAB1, LAB2, LAB3, LAB4, respectively. For example, in the case that the color profile comprises a LUT, the entries for RGB1, RGB2, RGB3 and RGB4 may be replaced with RGB1′, RGB2′, RGB3′ and RGB4′, respectively.
In some examples, the input data indicates a plurality of determined associations between first determined color values of the first color space and respective second determined color values of the second color space, the respective second determined color values representing modified coordinate values of the second color space. For example, the received input data may indicate multiple measured LAB values and associated RGB values. In this case, block 302 described above may involve determining a default value for each of the plurality of determined associations. Block 304 may involve identifying the coordinate value differences between the default coordinate values and respective ones of the modified coordinate values.
Further, in examples, a respective shape in the tessellation of the second color space in which each of the default coordinate values lies is identified. In the case that a first given color value is used to identify more than one of the plurality of default coordinate values, the first given color value is updated based on an average value of the differences corresponding to the more than one of the plurality of default coordinate values. For example, it may be that a more than one of the default coordinate values lies in a given shape in the tessellation. In this case, the average value may be calculated as a mean or weighted mean of the coordinate value differences. A weighted mean may be used if it is desired to give more importance to certain types of colors, such as neutral colors, or colors specified e.g. by a user has having particular importance e.g. brand or corporate identity colors. Alternatively or additionally, because a given vertex is a vertex for multiple shapes in the tessellation, default coordinate values may lie in more than one of these multiple shapes. In this case, a cumulative value of the coordinate value differences may be calculated, and a mean change calculated, by dividing by the number of default coordinate values involved.
In the examples described above with reference to
In common with the first example described above with reference to
As discussed above, the second plurality of color values may represent coordinate values identifying vertices of shapes forming a tessellation in the second color space. At block 402, the processor 102 determines a modified tessellation in the second color space by setting the modified coordinate value as a vertex of a shape forming the modified tessellation.
In some examples, a coordinate value difference, for example a vector distance, may be determined between the modified coordinate value and a given coordinate value of the second plurality of color values. In the case that the coordinate value difference is less than a predetermined threshold value, the modified tessellation may be determined without using the given coordinate value as a vertex in the modified tessellation. Not including coordinate values having a coordinate value difference less than a threshold in the modified tessellation may maintain a desired spacing of nodes in the color profile, which may improve smoothness of output in response to changes in input and reduce measurement noise.
In the example of
At block 404, the processor 102 performs an interpolation between vertices in the modified tessellation to determine a modified color value of the first color space, corresponding to a given color value of the first plurality of color values. The color value of the first color space which is modified may correspond to a coordinate value of the second color space which is not used as a vertex in the modified tessellation. In the example of
As mentioned above, the second example update process 400 may be used when the interpolation scheme used by the imaging apparatus 100 is not available. In this case, a predetermined interpolation scheme, such as a tetrahedral interpolation scheme may be used at block 404. In one example, the tetrahedral interpolation is based on the tetrahedra formed using Delaunay tessellation as described above.
At block 406, the processor 102 associates the updated coordinate value with the given color value of the color profile of the imaging apparatus. In the example, of
It will be appreciated that while
In the examples described above with reference to
The methods described above provide a way of updating a color profile of an imaging apparatus using an interpolation process involving an existing association between color spaces and data indicating a different association. The different association may be based on measured values and may indicate an accurate correspondence between values of the first color space and values of the second color space. Because an interpolation process is used based on color values which need not already be included in the color profile (e.g. the input data does not need to indicate color values already listed in the color profile), laborious sampling and matching of existing color mappings can be avoided. For example, some existing methods involve comparing the color palette with an expected/desired color palette. This means that only the specific color values (e.g. CIELAB values) in the color profile are updated and made more accurate, or the color profile expanded to include more entries. In contrast, in examples disclosed herein, color values not listed in the color profile may be used as the basis for updating the color profile. This enables the color profile to be updated more accurately to produce any color value within the gamut of the imaging apparatus 100.
Methods according to the above examples may be performed repeatedly, for example at regular intervals, to iteratively improve the accuracy of the imaging apparatus 100. Performing the method periodically may also enable the color profile to be updated to take account of changes in the characteristics of the imaging apparatus over time.
As described above, the first example update process 300 may be used when an interpolation scheme used by the imaging apparatus is known. The first example update process 300 enables a precise update of the color profile because the changes made to the color profile are based on the same interpolation scheme which is subsequently used to generate colors when the imaging apparatus is in use. The second example update process 400 does not need an interpolation scheme associated with the imaging apparatus 100 to be known. The second example update process 400 may also involve fewer processing resources than the first example process update process 300.
In some examples, the processor 102 may determine whether an interpolation scheme associated with the imaging apparatus 100 is available e.g. whether it is stored in the storage medium 104 In the case that the interpolation scheme is determined to be available, an update process according to the first example update process 300 is used. In the case that the interpolation scheme is determined not to be available, an update process according to the second example update process 400 is used.
In the examples herein, where reference is made to a “color value” and a “coordinate value” this includes cases the referred to value comprises multiple values; for example a “coordinate value” may include for example three or four values, corresponding to each axis in the relevant color space. References to “coordinates” may include any suitable type of coordinate, for example cartesian coordinates or barycentric coordinates.
The preceding description has been presented 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. Many modifications and variations are possible in light of the above teaching. It is to be understood that any feature described in relation to any one example may be used alone, or in combination with other features described, and may also be used in combination with any features of any other of the examples, or any combination of any other of the examples.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2020/014966 | 1/24/2020 | WO |