Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COLOR MAPPING
Document Type and Number:
WIPO Patent Application WO/2016/134785
Kind Code:
A1
Abstract:
Methods and apparatus for color mapping are described. In an example, a plurality of RGB elements are received, each element defined by a color value of each primary RGB color. For each of a plurality of RGB elements, the largest color value of the primary RGB colors of the RGB element is identified. It is also determined whether the RGB element represents a neutral color. For an RGB element which does not represent a neutral color, and in which the largest color value is less than a threshold value, a new RGB element in which the largest color value of the primary RGB colors is at least the threshold value for that primary color is determined. For an RGB element which does represents a neutral color, a new RGB element is determined according to a neutral colors projection of the color values. A mapping of the RGB elements to the determined new RGB elements may also be determined.

Inventors:
MOROVIC JAN (GB)
MOROVIC PETER (ES)
SANCHEZ ROMERO JOSE ANTONIO (ES)
Application Number:
PCT/EP2015/054144
Publication Date:
September 01, 2016
Filing Date:
February 27, 2015
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO LP (US)
MOROVIC JAN (GB)
MOROVIC PETER (ES)
SANCHEZ ROMERO JOSE ANTONIO (ES)
International Classes:
H04N1/60
Foreign References:
US20130259363A12013-10-03
Other References:
ANONYMOUS: "How do I perform an RGB threshold? - MATLAB Answers - MATLAB Central", 6 November 2013 (2013-11-06), XP055224055, Retrieved from the Internet [retrieved on 20151028]
ANONYMOUS: "Basic Thresholding Operations - OpenCV v2.4.1 documentation", 4 June 2012 (2012-06-04), XP055224049, Retrieved from the Internet [retrieved on 20151028]
Attorney, Agent or Firm:
DAY, Caroline M (Redcliff Quay120 Redcliff Street, Bristol BS1 6HU, GB)
Download PDF:
Claims:
CLAIMS

1 . A method comprising:

receiving a plurality of RGB elements, each element defined by a color value of each primary RGB color; and

for each of the plurality of RGB elements:

identifying a largest color value of the primary RGB colors of the RGB element;

determining if the RGB element represents a neutral color; for an RGB element which does not represent a neutral color, and in which the largest color value is less than a threshold value, determining a new RGB element in which the largest color value of the primary RGB colors is at least the threshold value for that primary color; and

for an RGB element which represents a neutral color, determining a new

RGB element according to a neutral colors projection of the color values; the method further comprising mapping the RGB elements to the determined new

RGB elements.

2. The method of claim 1 , wherein each primary RGB color of each element is

defined by a code, a threshold code defining the threshold value for the primary color and determining a new RGB element for an RGB element which does not represent a neutral color comprises replacing the code for each primary RGB color having the largest color value with the threshold code.

3. The method of claim 1 , in which determining if the RGB element represents a neutral color comprises determining if all of the primary RGB color values of an RGB element are within a predetermined range.

4. The method of claim 1 , in which determining a new RGB element according to the neutral colors projection comprises projecting the RGB element color values to a selected primary color to white ramp of the RGB color space.

5. The method of claim 4, wherein the selected primary to white ramp comprises a blue to white ramp. The method of claim 1 further comprising, for an RGB element that does not represent a neutral color and if the blue color value of the RGB element comprises the largest value, replacing at least one of the red and green values with an offset value.

A method according to claim 6 in which determining a new RGB element according to the neutral colors projection comprises projecting the RGB element color values to a selected primary color to white ramp of the RGB color space, and

the offset value is determined using to the magnitude of separation between the color selected as the primary color to white ramp and the blue color of the received RGB element.

The method of claim 1 , in which determining a new RGB element according to the neutral colors projection comprises projecting the RGB element along a line parallel with a vector connecting the black vertex and a selected point on a selected one of the edges of the RGB color space.

A non-transitory computer readable storage medium encoded with instructions, executable by a processor, comprising:

instructions to identify a largest color value of primary RGB colors of each of a plurality of input RGB elements;

instruction to determine if the largest color value is less than a threshold value for that primary RGB color;

instructions to determine if the RGB element represents a neutral color; instructions to determine, for RGB elements which do not represent a neutral color, and in which the largest color value is less than a threshold value, a new RGB element in which the largest color value of the primary RGB colors is replaced with at least the threshold value for that primary color;

instructions to determine, for RGB elements which represent a neutral color, a new RGB element according to a neutral colors projection of the color values, wherein the neutral colors projection is to project RGB elements to new RGB elements having a range of color values. The non-transitory computer readable storage medium of claim 9, further comprising:

instructions to store a mapping from an input RGB element to the

RGB element determined for that input RGB element in a look-up table.

1 1 . The non-transitory computer readable storage medium of claim 9 in which the instructions to determine, for RGB elements which represent a neutral color, a new RGB element according to a neutral colors projection of the color values comprise:

instructions to determine a projection of the RGB element color values to a selected primary color to white ramp of the RGB color space.

12. The non-transitory computer readable storage medium of claim 1 1 , in which the instructions to determine, for RGB elements which do not represent a neutral color, a new RGB element further comprise:

instructions to determine if the blue color value of a given RGB element is the largest value, and

instructions to replace at least one of the red and green values with an offset value if the blue color value of the given RGB element is the largest value.

13. The non-transitory computer readable storage medium of claim 9 in which the instructions to determine, for RGB elements which represent a neutral color, a new RGB element according to a neutral colors projection comprise instructions to project the RGB element along a line parallel with the vector connecting the black vertex and a selected point on a selected one of the edges of the RGB color space.

14. A color mapping apparatus comprising:

an interface to receive image data comprising a plurality of pixels, each pixel have associated color data comprising red, green and blue color values, a color data assessment module to determine, from the color data, a color associated with a largest color value and to categorise each pixel as representing a neutral or a non-neutral color; a color data transformation module, to transform received color data to transformed color data, wherein the color data of non-neutral pixels is transformed by ensuring that the largest color value is at least a threshold value and the color data of neutral pixels is transformed according to a predetermined neutral colors projection; and

a mapping module to map the received color data to transformed color data.

15. The color mapping apparatus of claim 14 in which the color data transformation module is to transform received color data to transformed color data which comprises color values from a face of an RGB color space cube which comprises the white point in which the threshold value is the maximum color value.

Description:
COLOR MAPPING

BACKGROUND

[0001 ] In printing processes, data transformation of an image to be printed may be performed to convert an input image which is in an input color space, for example, the RGB (Red, Green, Blue) color space of a display of a computer system to a print color space, for example, the CMYK (Cyan, Magenta, Yellow, and Black) color space, CMYKcm color space (where c and m are lighter versions of C and M), CMYKRGB color space (where there are additional printing colors: red, green and blue), CMYKk color space (where k is an additional gray color), or combinations of any of the above.

[0002] Further, in some examples of printing processes, patterns of dots are printed on a print medium for example to assist in the alignment of a printhead and the medium to ensure correct positioning of printed images on the medium. These patterns of dots may be printed on the medium with black (K) ink.

BRIEF DESCRIPTION OF DRAWINGS

[0003] For a more complete understanding, reference is now made to the following description taken in conjunction with the accompanying drawings in which:

[0004] Figure 1 is a simplified schematic of an example of a printing system;

[0005] Figure 2a is a 3-D illustration of an example an RGB color space;

[0006] Figure 2b is a 2-D illustration of an example of an RGB color space;

[0007] Figure 3 is a flowchart of an example of mapping colors of an RGB color space;

[0008] Figure 4 is a flowchart of an example of mapping colors of an RGB color space; [0009] Figure 5 is an illustration of an example mapping of an RGB element;

[0010] Figure 6 is a flowchart of an example of mapping colors of an RGB color space;

[0011 ] Figure 7 is an illustration of an example mapping of an RGB element;

[0012] Figure 8 is a flowchart of an example of mapping colors of an RGB color space;

[0013] Figures 9a and 9b are illustrations of examples mapping of an RGB element;

[0014] Figure 10 is an example of a color mapping apparatus; and

[0015] Figure 1 1 is an example of a processor associated with a memory.

DETAILED DESCRIPTION

[0016] Figure 1 shows an example of a printing system 100 that may be used with the methods described herein. The printing system 100 produces a print output. The print output 140 comprises colored inks deposited on a substrate which may, for example, be paper, fabric, plastic or any other suitable print medium. In the example of Figure 1 , input image data corresponding to an image 1 10 is sent to a print processor 120. The print processor 120 processes the image data. The print processor 120 then outputs print control data that is communicated to a print device 130. The print device 130 generates a print output 140 as instructed by the print control data. In some examples, the print control data may provide instructions to apply printing fluids which may contain color pigments or dyes, e.g. colored inks to a substrate.

[0017] In some printing systems, a pattern of black dots may be provided to allow for accurate location within a print and enable, for example, alignment of a printhead of the print device 130 and hence correct placement of the printed image on the substrate. [0018] In printing a color image, an input color space (for example, RGB color space) of an input image may be converted to the color space of the print device (for example, CMYK color space, CMYKcm color space (where c and m are lighter versions of C and M), CMYKRGB (where there are additional printing colors: red, green and blue), CMYKk (where k is an additional gray color), or combinations of any of the above). In such an example, the input color space may be mapped to a color to be printed using black ink. However, in examples in which a pattern of dots may also printed on the substrate using black ink, it may be difficult to separate the functional dot patterns from the content which is overprinted on it, in particular if the printed image is dark or makes use of a lot of black ink.

[0019] It may be the case that an image in the input color space may be received without any information regarding the resources to be used throughout the printing workflow and digital front end pipeline.

[0020] Figure 2a illustrates an RGB color space cube in which each of the vertices represent one of the colors, White (W), Red (R), Yellow (Y), Black (K), Cyan (C), Blue (B), Green (G) and Magenta (M). Any point enclosed by the cube may be represented by a combination of the red, green and blue primary colors. For example, in the RGB color space, a point within the cube N- \ may be represented by a (Ri, Gi, B^, where each of the primary colors have a color value of R-i, Gi B-i, where Ri is a color value of the primary color Red between 0 and R max , Gi is a color value of the primary color Green between 0 and G max and B-i is a color value of the primary color Blue between 0 and B max . Each of the vertices may be represented, as follows:

[0021 ] Blue (0, 0, B max )

[0022] Cyan (0, G max , B max )

[0023] White (R max , G max , Bmax)

[0024] Green (0, G max , 0)

[0025] Yellow (R max , G max , 0)

[0026] Red (R max , 0, 0)

[0027] Black (0, 0, 0) [0028] Magenta (R max , 0, B max )

[0029] These values of the primary colors, Red, Green and Blue, may be encoded. For an 8-bit encoding channel, the maximum value of the primary colors Rmax, G m ax, B max are encoded to the code 255. For the vertex Yellow, for example, as listed above, the 8-bit encoded vertex would be represented by (255, 255, 0).

[0030] In an example, to reduce the use of black ink and so minimise conflict with the functional dot patterns, a mapping within the RGB color space is created that restricts colors to be colors which are close to, or on, the three faces 201 , 203, 205 of the RGB cube shown in Figure 2b that contain the White point at a respective corner of the respective face, since colors near these faces may be mapped to print control data which does not, or only rarely, specifies the use of black when transformed into the print device color space, as opposed to the faces 207, 209, 21 1 which contain the Black (K) point at a respective corner of the respective face. If the colors are mapped to the faces 201 , 203, 205, this allows use of black K to be reserved for use of a functional pattern added to a print job. However, mapping to near the faces 201 , 203, 205 may result in reduced, or minimal use of black ink. As the mapping is carried out in the RGB color space, the transformation may be made without consideration of the capabilities of a particular print device, regardless of the printing system to be used.

[0031 ] In one example, a transformation of the colors of the RGB color space, which will result in RGB values which may be mapped to print device color space values which do not result in the use of black ink, or in which the use of black ink is reduced or unlikely, is created as shown in Figure 3.

[0032] In block 300, a plurality of RGB elements is received, each element defined by a color value of each primary RGB color. The RGB elements may comprise at least one pixel of an array of pixels of an input image, for example, or the RGB elements may comprise all the color elements of an imaging device, for example a display of a computer system or a digital camera. For each of a plurality of RGB elements, the method continues by identifying, in block 302, the largest color value of the primary RGB colors of the RGB element. This may be one, two or all of the RGB values. The method also determines if the RGB element represents a neutral color (block 304). In an example, a neutral color may be black, white, grey, or near grey.

[0033] A RGB element representing a neutral color will contain a relatively balanced set of RGB values, i.e. the RGB values will be the same or relatively close to one another. In one example, an element may be determined to be a neutral color if all the primary colors have a color value within a predetermined range of the highest color value. In such cases, the highest color value could be designated as V max , and the element is determined to be neutral if, for all other colors, the color value V > V max - S . The value of δ determines the extent of 'near grays' which are considered to be neutral colors. In one example of an 8-bit encoded color space, δ may have a value of up to 16. In another example, δ may have a value of up to 32. In other examples, an RGB element may be considered to be neutral if the range of color values is within a predetermined range, e.g. V max - V min ≤ <9, where the value of θ determines the extent of near greys which are considered to be neutral. In one example of an 8-bit encoded color space, θ may have a value of up to 16. In another example, θ may have a value of up to 32. In another example, a K-W vector, which runs between the Black and White point corners of the RGB color space may be determined. An RGB element may be determined to represent a neutral color if it is determined that it lies on or within a predetermined distance of the K-W vector.

[0034] For an RGB element that does not represent a neutral color, and in which the largest color value is less than a threshold value, a new RGB element in which the largest color value of the primary RGB colors is replaced with the threshold value for that primary color is determined (block 306). If more than one color has this largest value, or is within a determined range thereof, then such values may also be set to at least the threshold value, and, in an example, to be the threshold value. The range may for example be determined using or based on a range used in determining neutral colors. In some examples, the threshold value may be the maximum value, for example, 255 in a scheme using 8-bit encoding. In other examples, the threshold value may be less than the maximum, but still relative close thereto. For example, in a scheme using 8-bit encoding, the threshold value may be within 8 bits of the maximum (for example, at least 247), or within 16 bits of the maximum (for example, at least 239). This transforms the RGB to be nearer at least one of the faces 201 , 203, 205 (or on a face 201 , 203, 205). However, for an RGB element that does represent a neutral color, a new RGB element is determined according to a neutral colors projection of the color values (block 308). RGB elements are then mapped to the determined new RGB elements (block 310).

[0035] The new RGB elements may, in some examples, be transformed to the print color space while avoiding regions of that color space which may result in print control data which instructs the use of black ink, or which reduce the use of black ink compared to received RGB elements mapped to the print color space.

[0036] In one example, where an 8-bit encoding channel is used, the threshold value is the maximum value. Each occurrence of the largest color value of the primary colors which is not already the maximum value is replaced by the coding 255.

[0037] For example for element N-i, where Ri corresponds to the largest color value for the input image, Ri is replaced by R ma x and is then mapped onto the face 201 , that is, onto the face containing the white vertex.

[0038] For chromatic (i.e. non-neutral) elements, such a new RGB element may be determined to have the same hue as the original element on which it is based. Although a similar transformation could be determined for the neutral pixels (and this would still result in an image as a whole with a reasonable degree of discrimination), such a transformation may result in neutral elements (i.e. greys, near greys and blacks) being projected onto or near the white point of the RGB cube. Therefore, in this example, the neutral elements are handled differently to non-neutral elements. As noted above, the neutral elements may be treated according to a neutral colors projection. In some examples, the neutral colors projection preserves at least some color variability between projected neutral elements.

[0039] Figure 4 shows an example of method of mapping colors of an RGB color space. [0040] In block 402, a plurality of RGB elements is received, each element defined by a color value of each primary RGB color. The RGB elements may comprise pixels of an array of pixels of an input image, for example, or the RGB elements may comprise all the color elements of an imaging device, for example a display of a computer system or a digital camera. In block 404, it is determined whether all elements have been processed. If they have all been processed, the process ends (block 406). If not, the current element is processed. For each of a plurality of RGB elements, the method continues by identifying, in block 408, the largest color value of the primary RGB colors of the RGB element. In this example, in order to determine if an element represents a neutral color, it is determined whether all of the primary RGB colors of each of the plurality of received elements is within a predetermined range δ of the largest value, V max , by determining whether all the color values of all of the primary colors of an element are greater than V max - S (block 410). If it is determined that all the primary colors have a color value greater than V max - S , the RGB element is considered neutral (i.e. it will be understood that the neutral colors comprise greys, blacks and a range which may be considered as near-grey). In other examples, an RGB element may be considered to be neutral if the range of colors is within a predetermined range, e.g. V max - V min < d.

[0041 ] Neutral RGB elements are projected according a neutral colors projection, which in this example comprises a projection to a white-primary color ramp (block 412). The ramp comprises the slope formed by interconnecting the white vertex and a selected one of the primary color vertices, for example, the slope 501 , shown in Figure 5, between the white vertex and the blue vertex, across the width of the mapping. All of the neutral RGB elements are then mapped to this slope. For example, for the element N 2 represented by the primary colors (R 2 , G 2 , B 2 ), and R 2 , G 2 and B 2 are within the range V max - S , the element is mapped to N' 2 on the white-blue ramp 501 and may be represented by (R' 2 , G' 2 , B' 2 ).

[0042] If at least one of the RGB primary colors of an element is outside of the predetermined range δ of the largest value V max , it is determined if the largest value is below a threshold value V th res h oi d (block 414). If so, each primary RGB color having the largest value, or being within a range thereof, is replaced with the threshold value for that primary color (block 416). In some examples, the range may be the same as that to identify neutral colors, i.e. in this example, S m

[0043] This provides an orthogonal projection towards the nearest of the RGB cube faces containing the white vertex, faces 201 , 203, 205, for chromatic (non-neutral) elements, whereas the neutral elements are mapped onto the blue-white ramp 501 .

[0044] In block 418, the input RGB elements are mapped to the new elements including the adjusted values created by process blocks 408, 410, 412, 414 and 416.

[0045] Another example is shown in Figure 6. The blocks in common with Figure 4 have the same reference numerals and will not be described in detail here. In this example, the primary to white ramp of the neutral colors mapping comprises the blue to white ramp, which may be selected on the basis that blue is the darkest color and therefore the best match to black. As a result, all neutral elements will map to blue.

[0046] In this example, for elements which are determined to represent non- neutral colors, it is determined whether the primary color which has the largest value is blue (block 602). If not, and the largest value is below a threshold value for that color, the colors having the highest value are replaced with the threshold value for that color, which in this example is the maximum value (block 606). If however it is determined that the primary color of the element which has the largest value is blue, it is determined whether either red or green also reach V max (block 604). If so, the method proceeds to block 60. If not, the color value of Blue is set to its threshold value, which in this example is the maximum value B max (255 in 8-bit encoding) (block 608).

[0047] A decision is then taken in block 610 as to whether to compress towards R or G and replace the R or G value, R 3 or G 3 of the element N 3 (shown in Figure 7). For example, if it is decided to compress towards, then, in block 612, the color Green, G 3 is replaced by: a+ 3 threshold - , where

^threshold

a is an offset factor whose value determines the magnitude of separation between the blue that black is mapped to and the altered blue color B max (or more generally, the threshold value for B th reshoid)- The selection of compression towards R or G may be made in any way, for example randomly, following image analysis, following user input, and/or may be predetermined. A compression towards R will result in a red-ish cast of the colors, whereas a compression towards G will result in a greenish cast.

[0048] This example therefore reserves the blue ramp for neutral elements and compresses the blue face of the cube (or, more generally, the plane near the blue face corresponding to Bthreshoid) to accommodate the mapping of neutral elements and therefore enables the neutral elements projected to the blue ramp to be distinguished from input blues.

[0049] In yet another example, shown in Figure 8, discrimination among colors can be maximised. Here, the RGB cube is dealt with in hue slices as illustrated in Figures 9a and 9b.

[0050] As illustrated in Figure 9a, a vector, 903, interconnecting the White and Black vertices comprises one edge of a hue slice 909 (as shown in Figure 9b). The other edges 905, 907 of the hue slice 909 comprise a vector 905 interconnecting the Black vertex and a selected point 913 on a selected one of the edges of the RBG cube (in the example shown in Figure 9a, this is a point 913 selected on Blue-Cyan edge), and a vector 907 interconnecting the White vertex and the selected point 913 on the selected edge of the RBG cube (in the example illustrated, the point 913 selected on the Blue-Cyan edge). The selected point 913 is identified by intersecting a plane, the plane being defined by the K-W vector and the RGB element being transformed, with the line segments connecting the primary and secondary colors (i.e., the R-Y-G-C-B-M-R segmented line).

[0051 ] In block 802 it is determined whether the element represents a neutral color by determining whether the received RGB element lies on the K-W vector 903. If it is determined that the element lies on the K-W vector 903, in block 804, a neutral colors projection is performed by projecting the element onto the vector 907 interconnecting the White vertex and the point 913 selected on the cube edge, i.e. to the edge of the hue slice. The element N 4 is projected onto this vector 907 along a projection line 91 1 parallel to the vector 905 interconnecting the Black vertex and the point 913 selected on the cube edge as illustrated in Figure 9b. All the elements including the projected

RGB elements N' 4 may be used in a mapping to a print device color space.

[0052] The projections are made along lines 91 1 parallel with the vector 905 of the black vertex and the selected edge point results in maximum luminance discrimination possible on or near the RGB cube's faces 201 , 203, 205.

[0053] The above mapping strategy will yield greater luminance discriminability at the expense of lower overall contrast.

[0054] The mappings of any of the above examples may be computed directly, on the fly, or precomputed as at least one look-up table, for example mappings of the input RGB elements to the adjusted new RGB elements and of the RGB to print device color space mappings such that the output of the first look-up table provides the input for the latter look-up table.

[0055] Using the mappings described above, arbitrary RGB content can be mapped towards, or onto, the faces 201 , 203, 205 containing the white point, and the resulting transformed content can then be combined with other content such as functional patterns from which location in a print can be inferred.

[0056] Figure 10 shows a color mapping apparatus 131 comprising an interface 132, a color data assessment module 134, a color data transformation module 136, and a mapping module 138. The interface 132 receives image data comprising a plurality of pixels, each pixel having associated color data comprising red, green and blue color values. The color data assessment module 134 determines, from the color data, the color associated with the largest color value and categorises each pixel as representing a neutral or a non-neutral color. The color data transformation module 136 transforms received color data into transformed color data, wherein the color data of non-neutral pixels is transformed by ensuring that the largest color value of the primary RGB colors is at least a threshold value for that color and the color data of neutral pixels is transformed according to a predetermined neutral colors projection. In some examples, the color data transformation module 136 transforms received color data to transformed color data which comprises color values from, or from near, a face of an RGB color space cube which comprises the white point. The mapping module 138 maps the received color data to transformed color data.

[0057] Examples in the present disclosure can be provided as methods, systems or machine readable instructions, such as any combination of software, hardware, firmware or the like. Such machine readable instructions may be included on a computer readable storage medium (including but is not limited to disc storage, CD-ROM, optical storage, etc.) having computer readable program codes therein or thereon.

[0058] The present disclosure is described with reference to flow charts and/or block diagrams of the method, devices and systems according to examples of the present disclosure. Although the flow diagrams described above show a specific order of execution, the order of execution may differ from that which is depicted. Blocks described in relation to one flow chart may be combined with those of another flow chart. In some examples, some blocks of the flow diagrams may not be necessary and/or additional blocks may be added. It shall be understood that each flow and/or block in the flow charts and/or block diagrams, as well as combinations of the flows and/or diagrams in the flow charts and/or block diagrams can be realized by machine readable instructions.

[0059] The machine readable instructions may, for example, be executed by a general purpose computer, a special purpose computer, an embedded processor or processors of other programmable data processing devices to realize the functions described in the description and diagrams. In particular, a processor or processing apparatus may execute the machine readable instructions. Thus modules of apparatus (for example, the color mapping apparatus 131 or the printing system 100) may be implemented by a processor executing machine readable instructions stored in a memory, or a processor operating in accordance with instructions embedded in logic circuitry. The term 'processor' is to be interpreted broadly to include a CPU, processing unit, ASIC, logic unit, or programmable gate set etc. The methods and modules may all be performed by a single processor or divided amongst several processors.

[0060] Such machine readable instructions may also be stored in a computer readable storage that can guide the computer or other programmable data processing devices to operate in a specific mode.

[0061 ] For example, the instructions may be provided on a non-transitory computer readable storage medium encoded with instructions, executable by a processor.

[0062] Figure 1 1 shows an example of a processor 150 associated with a memory 152. The memory 152 comprises computer readable instructions 154 which are executable by the processor 150. The instructions 154 comprise:

Instructions 156 to identify the largest color value of the primary RGB colors of each of a plurality of input RGB elements;

Instruction 158 to determine if the largest color value is less than a threshold value for that primary RGB color;

Instructions 160 to determine if the RGB element represents a neutral color;

Instructions 162 to determine for RGB elements which do not represent a neutral color, and in which the largest color value is less than a threshold value, a new RGB element in which the largest color value of the primary RGB colors is replaced with at least the threshold value for that primary color; and

Instructions 164 to determine, for RGB elements which represent a neutral color, a new RGB element according to a neutral colors projection of the color values. The neutral colors projection may be such that RGB elements are projected to new RGB elements having a range of color values (i.e. neutral

RGB elements having different values may be mapped to new RGB elements having different values, rather than all being mapped to the same or similar new RGB element).

[0063] Such machine readable instructions may also be loaded onto a computer or other programmable data processing devices, so that the computer or other programmable data processing devices perform a series of operations to produce computer-implemented processing, thus the instructions executed on the computer or other programmable devices provide a operation for realizing functions specified by flow(s) in the flow charts and/or block(s) in the block diagrams.

[0064] Further, the teachings herein may be implemented in the form of a computer software product, the computer software product being stored in a storage medium and comprising a plurality of instructions for making a computer device implement the methods recited in the examples of the present disclosure.

[0065] While the method, apparatus and related aspects have been described with reference to certain examples, various modifications, changes, omissions, and substitutions can be made without departing from the spirit of the present disclosure. In particular, a feature or block from one example may be combined with or substituted by a feature/block of another example.

[0066] The word "comprising" does not exclude the presence of elements other than those listed in a claim, "a" or "an" does not exclude a plurality, and a single processor or other unit may fulfil the functions of several units recited in the claims.

[0067] The features of any dependent claim may be combined with the features of any of the independent claims or other dependent claims.