Method and system for chromatic gamut extension, corresponding apparatus and computer program product

09807358 · 2017-10-31

Assignee

Inventors

Cpc classification

International classification

Abstract

Color images designed to be displayed, for example, with a projector such as a laser pico projector, are subjected to gamut extension in respective iso-hue paths in the CIE1931xyY color space, operating for example, as follows: a plurality of iso-hue curves in the CIE1931xyY color space is determined; for the points subjected to gamut extension, the closest iso-hue curves are identified; and extension paths to be used for the operation of gamut extension are interpolated from said closest iso-hue curves.

Claims

1. A method, comprising: generating an output color image from an input color image by subjecting the input color image to chromatic gamut extension, the generating including: identifying, for points in the input color image subjected to chromatic gamut extension, closest iso-hue curves of a plurality of determined iso-hue curves in a CIE1931xyY color space; and interpolating, from the identified closest iso-hue curves of the plurality of iso-hue curves, extension paths for chromatic gamut extension, the interpolating including: partitioning the CIE1931xyY color space into a grid of cells; locating, for a point subjected to chromatic gamut extension, intersections of horizontal and vertical lines passing through the point subjected to chromatic gamut extension and a set of iso-hue curves of the plurality of determined iso-hue curves passing through the cell of the grid where the point is located; and selecting, as the closest iso-hue curves, iso-hue curves whose intersections are closest to the point subjected to chromatic gamut extension.

2. The method of claim 1 wherein said closest iso-hue curves are sampled by points and the interpolating comprises: identifying a first pair and a second pair of points closest to the point subjected to extension on the one and the other of said closest iso-hue curves, respectively; calculating a first point and a second point of intersection between the vertical line passing through the point subjected to chromatic gamut extension and the one and the other of the segments between the points of said first pair and said second pair of points, respectively; and calculating an interpolated extension path for the chromatic gamut extension of said point as a parametric curve passing through said point subjected to chromatic gamut extension.

3. The method of claim 2 wherein an extension parameter t of the chromatic gamut extension is defined according to:
t=(y.sub.m−y.sub.2)/(y.sub.1−y.sub.2) where y.sub.m, y.sub.1 and y.sub.2 are y coordinates of said point subjected to chromatic gamut extension, said first point of intersection and said second point of intersection.

4. The method of claim 3, comprising calculating said extension paths by one of: a) non-compensated interpolation:
x.sub.1(k)=(1−t′).Math.x.sub.2(k)+t′.Math.x.sub.1(k)
y.sub.1(k)=(1−t′).Math.y.sub.2(k)+t′.Math.y.sub.1(k), and b) compensated interpolation:
x.sub.1(k)=(1−t.sub.ec).Math.x.sub.2(k)+t.sub.ec.Math.x.sub.1(k)
y.sub.1(k)=(1−t.sub.ec).Math.y.sub.2(k)+t.sub.ec.Math.y.sub.1(k) where x.sub.1(k), y.sub.1(k), x.sub.2(k), y.sub.2(k) are the coordinates, of said first point and second point of intersection, respectively, of a k-th sample of said sampling by points, t.sub.ec=[(y.sub.m+δ.sub.E)−y.sub.2]/(y.sub.1−y.sub.2), and δ.sub.E=abs(y.sub.m−y.sub.intercept) is the error associated to said non-compensated interpolation, with abs denoting absolute value and y.sub.intercept being the y coordinate of an effective intersection point of the interpolation curve and t′, t.sub.ec are respective extension parameters.

5. The method of claim 2, wherein said iso-hue extension paths in the CIE1931xyY color space are sampled by points, the method comprising: locating, for the points subjected to chromatic gamut extension, two points over the respective iso-hue extension path which are closest to the point subjected to chromatic gamut extension, said iso-hue path being expressed in parametric form as C.sub.x(t),C.sub.y(t) with values of the parameters t.sub.1, t.sub.2 such that C.sub.x(t.sub.1)=x.sub.1 and C.sub.x(t.sub.2)=x.sub.2, with t.sub.mpos=(x.sub.m−x.sub.1)/(x.sub.2−x.sub.1), where x.sub.m, x.sub.1, x.sub.2 are coordinates of the point (P.sub.m) subject to chromatic gamut extension and said two closest points, respectively; and using for said extension parameter an initial value t.sub.start equal to t.sub.i+t.sub.mpos with i=1, 2 and an end value t.sub.end equal to t.sub.start+(t.sub.start.Math.t.sub.boost), wherein t.sub.boost is an extension parameter.

6. The method of claim 5, comprising: locating, over the respective iso-hue extension path, four points around the point subjected to chromatic gamut extension defined as:
x.sub.1=C.sub.x(endpoint.sub.1)
y.sub.1=C.sub.y(endpoint.sub.1)
x.sub.2=C.sub.x(endpoint.sub.2)
y.sub.2=C.sub.y(endpoint.sub.2) where: endpoint.sub.1=custom charactert.sub.endcustom character endpoint.sub.2=custom charactert.sub.endcustom character; calculating the distance
ξ=t.sub.endcustom charactert.sub.endcustom character; and calculating the coordinates x.sub.b, y.sub.b deriving from the extension as:
x.sub.b=(1−ξ).Math.x.sub.1+ξ.Math.x.sub.2
y.sub.b=(1−ξ).Math.y.sub.1+ξ.Math.y.sub.2.

7. The method of claim 2 wherein said iso-hue paths are defined in the LCh or Lab color space and transformed to the CIE1931xy color space.

8. The method of claim 2, comprising performing said chromatic gamut extension along said iso-hue paths in the CIE1931xyY color space, with boosting factors selected according to one of: selecting a single boosting factor for all colors from a plurality of boosting factors; and selecting different boosting factors for different iso-hue paths.

9. The method of claim 2, comprising performing said chromatic gamut extension along said iso-hue paths in the CIE1931xyY color space, with extension or boosting factors selected to reduce clipping effects.

10. The method of claim 9, comprising avoiding clipping effects over at least one of said extension paths by: defining a chromatic gamut boundary before chromatic gamut extension; defining a chromatic gamut boundary after chromatic gamut extension; using a chromatic gamut extension parameter t.sup.∂.sub.boost
t.sup.∂.sub.boost=(t.sup.L.sub.max−t.sup.s.sub.max)/t.sup.s.sub.max wherein t.sup.s.sub.max and t.sup.L.sub.max are the values along said at least one of said extension paths exiting said chromatic gamut boundary before chromatic gamut extension and said chromatic gamut boundary after chromatic gamut extension, respectively.

11. The method of claim 9, comprising performing said color gamut extension with different clipping values for different iso-hue extension paths.

12. The method of claim 1, comprising subjecting said color images to at least one set of processing operations selected from: conversion to a RGB format before said chromatic gamut extension; conversion to a XYZ format and conversion to a xyY format before said chromatic gamut extension with subsequent complementary conversions after said chromatic gamut extension; and linearization using gamma decoding, before said chromatic gamut extension with complementary processing, using gamma encoding, after said chromatic gamut extension.

13. An apparatus, comprising: one or more memories; and one or more processing devices coupled to the one of more memories, wherein the one or more processing devices, in operation, generate an output color image from an input color image by subjecting the input color image to chromatic gamut extension, the generating including: identifying, for each point in the input color image subjected to chromatic gamut extension, closest iso-hue curves of a plurality of determined iso-hue curves in a CIE1931xyY color space; and interpolating, from the identified closest iso-hue curves of the plurality of iso-hue curves, extension paths for chromatic gamut extension, the interpolating including: partitioning the CIE1931xyY color space into a grid of cells; locating, for a point subjected to chromatic gamut extension, intersections of horizontal and vertical lines passing through the point subjected to chromatic gamut extension and a set of iso-hue curves of the plurality of determined iso-hue curves passing through the cell of the grid where the point is located; and selecting, as the closest iso-hue curves, iso-hue curves having intersections closest to the point subjected to chromatic gamut extension.

14. The apparatus of claim 13 wherein said closest iso-hue curves are sampled by points and the interpolating comprises: identifying a first pair and a second pair of points closest to the point subjected to extension on the one and the other of said closest iso-hue curves, respectively; calculating a first point and a second point of intersection between the vertical line passing through the point subjected to chromatic gamut extension and the one and the other of the segments between the points of said first pair and said second pair of points, respectively; and calculating an interpolated extension path for the chromatic gamut extension of said point as a parametric curve passing through said point subjected to chromatic gamut extension.

15. The apparatus of claim 14 wherein an extension parameter t of the chromatic gamut extension is defined according to:
t=(y.sub.m−y.sub.2)/(y.sub.1−y.sub.2) where y.sub.m, y.sub.1 and y.sub.2 are y coordinates of said point subjected to chromatic gamut extension, said first point of intersection and said second point of intersection.

16. The apparatus of claim 15 wherein the one or more processing devices are configured to calculate said extension paths by one of: a) non-compensated interpolation:
x.sub.1(k)=(1−t′).Math.x.sub.2(k)+t′.Math.x.sub.1(k)
y.sub.1(k)=(1−t′).Math.y.sub.2(k)+t′.Math.y.sub.1(k), and b) compensated interpolation:
x.sub.1(k)=(1−t.sub.ec).Math.x.sub.2(k)+t.sub.ec.Math.x.sub.1(k)
y.sub.1(k)=(1−t.sub.ec).Math.y.sub.2(k)+t.sub.ec.Math.y.sub.1(k) where x.sub.1(k), y.sub.1(k), x.sub.2(k), y.sub.2(k) are the coordinates, of said first point and second point of intersection, respectively, of a k-th sample of said sampling by points, t.sub.ec=[(y.sub.m+δ.sub.E)−y.sub.2]/(y.sub.1−y.sub.2), and δ.sub.E=abs(y.sub.m−y.sub.intercept) is the error associated to said non-compensated interpolation, with abs denoting absolute value and y.sub.intercept being the y coordinate of an effective intersection point of the interpolation curve and t′, t.sub.ec are respective extension parameters.

17. The apparatus of claim 14 wherein said iso-hue extension paths in the CIE1931xyY color space are sampled by points, the method comprising: locating, for the points subjected to chromatic gamut extension, two points over the respective iso-hue extension path which are closest to the point subjected to chromatic gamut extension, said iso-hue path being expressed in parametric form as C.sub.x(t),C.sub.y(t) with values of the parameters t.sub.1, t.sub.2 such that C.sub.x(t.sub.1)=x.sub.1 and C.sub.x(t.sub.2)=x.sub.2, with t.sub.mpos=(x.sub.m−x.sub.1)/(x.sub.2−x.sub.1), where x.sub.m, x.sub.1, x.sub.2 are coordinates of the point (P.sub.m) subject to chromatic gamut extension and said two closest points, respectively; and using for said extension parameter an initial value t.sub.start equal to t.sub.i+t.sub.mpos with i=1, 2 and an end value t.sub.end equal to t.sub.start+(t.sub.start.Math.t.sub.boost), wherein t.sub.boost is an extension parameter.

18. The apparatus of claim 17 wherein the one or more processing devices are configured to: locate, over the respective iso-hue extension path, four points around the point subjected to chromatic gamut extension defined as:
x.sub.1=C.sub.x(endpoint.sub.1)
y.sub.1=C.sub.y(endpoint.sub.1)
x.sub.2=C.sub.x(endpoint.sub.2)
y.sub.2=C.sub.y(endpoint.sub.2) where: endpoint.sub.1=custom charactert.sub.endcustom character endpoint.sub.2=custom charactert.sub.endcustom character; calculating the distance
ξ=t.sub.endcustom charactert.sub.endcustom character; and calculate the coordinates x.sub.b, y.sub.b deriving from the extension as:
x.sub.b=(1−ξ).Math.x.sub.1+ξ.Math.x.sub.2
y.sub.b=(1−ξ).Math.y.sub.1+ξ.Math.y.sub.2.

19. The apparatus of claim 14 wherein said iso-hue paths are defined in the LCh or Lab color space and transformed to the CIE1931xy color space.

20. The apparatus of claim 14 wherein the one or more processing devices are configured to perform said chromatic gamut extension along said iso-hue paths in the CIE1931xyY color space, with boosting factors selected according to one of: selecting a single boosting factor for all colors from a plurality of boosting factors; and selecting different boosting factors for different iso-hue paths.

21. The apparatus of claim 14 wherein the one or more processing devices are configured to perform said chromatic gamut extension along said iso-hue paths in the CIE1931xyY color space, with extension or boosting factors selected to reduce clipping effects.

22. The apparatus of claim 21 wherein the one or more processing devices are configured to avoid clipping effects over at least one of said extension paths by: defining a chromatic gamut boundary before chromatic gamut extension; defining a chromatic gamut boundary after chromatic gamut extension; using a chromatic gamut extension parameter t.sup.∂.sub.boost
t.sup.∂.sub.boost=(t.sup.L.sub.max−t.sup.s.sub.max)/t.sup.s.sub.max wherein t.sup.s.sub.max and t.sup.L.sub.max are the values along said at least one of said extension paths exiting said chromatic gamut boundary before chromatic gamut extension and said chromatic gamut boundary after chromatic gamut extension, respectively.

23. The apparatus of claim 21 wherein the one or more processing devices are configured to perform said color gamut extension with different clipping values for different iso-hue extension paths.

24. The apparatus of claim 13 wherein the one or more processing devices are configured to subject said color images to at least one set of processing operations selected from: conversion to a RGB format before said chromatic gamut extension; conversion to a XYZ format and conversion to a xyY format before said chromatic gamut extension with subsequent complementary conversions after said chromatic gamut extension; and linearization using gamma decoding, before said chromatic gamut extension with complementary processing, using gamma encoding, after said chromatic gamut extension.

25. A system, comprising: an input configured to receive color images; and image processing circuitry coupled to the input and configured to generate an output color image from an input color image by subjecting the input color image to chromatic gamut extension, the generating including: identifying, for points in the color image subjected to chromatic gamut extension, closest iso-hue curves of a plurality of determined iso-hue curves in a CIE1931xyY color space; and interpolating, from the identified closest iso-hue curves of the plurality of iso-hue curves, extension paths for chromatic gamut extension, the interpolating including: partitioning the CIE1931xyY color space into a grid of cells; locating, for a point subjected to chromatic gamut extension, intersections of horizontal and vertical lines passing through the point subjected to chromatic gamut extension and a set of iso-hue curves of the plurality of determined iso-hue curves passing through the cell of the grid where the point is located; and selecting, as the closest iso-hue curves, iso-hue curves having intersections closest to the point subjected to chromatic gamut extension.

26. The system of claim 25 wherein said closest iso-hue curves are sampled by points and the interpolating comprises: identifying a first pair and a second pair of points closest to the point subjected to extension on the one and the other of said closest iso-hue curves, respectively; calculating a first point and a second point of intersection between the vertical line passing through the point subjected to chromatic gamut extension and the one and the other of the segments between the points of said first pair and said second pair of points, respectively; and calculating an interpolated extension path for the chromatic gamut extension of said point as a parametric curve passing through said point subjected to chromatic gamut extension.

27. The system of claim 26 wherein the image processing circuitry is configured to perform said chromatic gamut extension along said iso-hue paths in the CIE1931xyY color space, with extension or boosting factors selected to reduce clipping effects.

28. The system of claim 25, comprising a projector.

29. A non-transitory computer-readable medium whose contents configure a digital processing device to generate an output color image from an input color image by subjecting points in the input color image to chromatic gamut extension processing, the processing comprising: identifying, for each point in the color image subjected to chromatic gamut extension, closest iso-hue curves of a plurality of determined iso-hue curves in a CIE1931xyY color space; and interpolating, from the identified closest iso-hue curves of the plurality of iso-hue curves, extension paths for chromatic gamut extension, the interpolating including: partitioning the CIE1931xyY color space into a grid of cells; locating, for a point subjected to chromatic gamut extension, intersections of horizontal and vertical lines passing through the point subjected to chromatic gamut extension and a set of iso-hue curves of the plurality of determined iso-hue curves passing through the cell of the grid where the point is located; and selecting, as the closest iso-hue curves, iso-hue curves having intersections closest to the point subjected to chromatic gamut extension.

30. The non-transitory computer-readable medium of claim 29 wherein said closest iso-hue curves are sampled by points and the interpolating comprises: identifying a first pair and a second pair of points closest to the point subjected to extension on the one and the other of said closest iso-hue curves, respectively; calculating a first point and a second point of intersection between the vertical line passing through the point subjected to chromatic gamut extension and the one and the other of the segments between the points of said first pair and said second pair of points, respectively; and calculating an interpolated extension path for the chromatic gamut extension of said point as a parametric curve passing through said point subjected to chromatic gamut extension.

31. The non-transitory computer-readable medium of claim 30 wherein the processing comprises performing said chromatic gamut extension along said iso-hue paths in the CIE1931xyY color space, with extension or boosting factors selected to reduce clipping effects.

Description

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

(1) One or more embodiments will now be described, purely by way of non-limiting example, with reference to the annexed drawings, wherein:

(2) FIG. 1 is a block diagram of an apparatus incorporating a system according to embodiments;

(3) FIG. 2 is a block diagram in greater detail of part of FIG. 1;

(4) FIGS. 3 to 6 are graphs referring to the CIE1931 color space and illustrating the principles underlying some embodiments;

(5) FIG. 7 is a table provided by way of example of signal processing in some embodiments;

(6) FIGS. 8 to 10 illustrate examples of signal processing in some embodiments; and

(7) FIGS. 11 to 14 exemplify functions of extension/boosting according to some embodiments.

DETAILED DESCRIPTION

(8) In the ensuing description, various specific details are illustrated aimed at providing an in-depth understanding of various examples of embodiments. The embodiments may be provided without one or more of the specific details, or with other methods, components, materials, etc. In other cases, known structures, materials, or operations are not shown or described in detail so that the various aspects of the embodiments will not be obscured.

(9) Reference to “an embodiment” or “one embodiment” in the framework of the present description is intended to indicate that a particular configuration, structure, or characteristic described in relation to the embodiment is comprised in at least one embodiment. Hence, phrases such as “in an embodiment” or “in one embodiment” that may be present in various points of the present description do not necessarily refer to one and the same embodiment. Moreover, particular conformations, structures, or characteristics may be combined in any adequate way in one or more embodiments.

(10) The references used herein are merely provided for convenience of the reader and hence do not define the sphere of protection or the scope of the embodiments.

(11) The block diagram of FIG. 1 exemplifies the possible structure of an apparatus 10 that is able to operate according to one or more embodiments.

(12) In one or more embodiments it may be an apparatus for the reproduction of (fixed or video) images such as, for example, a laser projector (e.g., a laser pico projector).

(13) In the example considered herein, it is assumed that the apparatus 10 will receive at input images I, for example in the form of digital images in a color format such as RGB or YUV: of course, reference to these formats is provided merely by way of example.

(14) The reference 12 designates a module/function/circuitry that is able to carry out, for example, conversion of the format of the images I at input into an RGB format. The presence of the module/function/circuitry 12 is, however, optional: if the input images I are already in formats such as sRGB or adobeRGB (or the like) the module/function/circuitry 12 is superfluous.

(15) The signal corresponding to the images I, possibly converted in the module/function/circuitry 12, can be transferred to a color-management module/function/circuitry 14, in which it is possible to carry out the gamut-extension/boosting function according to the modalities illustrated more fully in what follows.

(16) The signals (for example, in RGB format) coming from the module/function/circuitry 14 may be written in a frame buffer 16 with a view to their use for display (e.g., projection) of the image.

(17) In the example presented herein (which is merely an example and hence in no way limits the scope of the embodiments), the device 10 is a projector, such as for example a raster-scanning projector that is able to operate on the basis of the co-ordinates of the pixels to be projected as a function of the position of the projection mirrors.

(18) In one or more embodiments, there may hence be present a sub-system of the mirrors 18 that is able to supply the current position of the mirrors of the projector to a module/function/circuitry 20 for mapping the image co-ordinates so as to compute the co-ordinates x, y of the pixel of the frame buffer to be projected and locate, as a function of the co-ordinates (x, y) of the pixel to be projected, the triad RGB (or the like) to be projected.

(19) In this way, it is thus possible to extract from the frame buffer 16 the triads to be projected, sending them to an LDD (Laser Driver DAC) module/function 22 containing the digital-to-analog converters that are to supply values of current for driving the lasers of the projection unit or projector proper, designated by 24.

(20) Reference to a display device having the characteristics illustrated in the block diagram of FIG. 1 is to be understood as being merely an example. One or more embodiments can in fact be used in display devices of a different type—for example, displays (including printers) of various nature.

(21) The block diagram of FIG. 2 exemplifies possible embodiments of the color-management module/function/circuitry represented in FIG. 1 by block 14.

(22) In the example shown in FIG. 2, the signals/data (e.g., RGB) at input to the module/function/circuitry 14 can be first linearized (for example, in a gamma-decoding module/function/circuitry 140) so as to perform the subsequent operations of transformation and color processing in a linear space.

(23) The signals linearized in the module/function/circuitry 140 (which are designated in FIG. 2 by R′, G′, B′) can be transmitted to a set of modules/functions/circuitry designated as a whole by 142.

(24) The above set comprises two modules/functions/circuitry 1420, 1422 that transform the linearized data R′, G′, B′ first in XYZ and then in xyY to transfer to a gamut-extension module/function/circuitry 1424.

(25) The module/function/circuitry 1424 can receive on an input line 1426 the co-ordinates xy of the primary color components of the output device (for example, a projector 24). Possible criteria of operation of the module/function/circuitry 1424 will be illustrated in greater detail in what follows.

(26) The signals in xyY format subjected to the process of gamut extension (which is able, as will be described more fully in what follows, to take into account the maximum gamut that can be represented by the output device on the basis of the co-ordinates xy of the three primary components of color of the output device) can be supplied to two modules/functions/circuitry 1428, 1430 that perform transformations from the xyY format to the XYZ format and again to the format R′, G′, B′ that are complementary to the transformations performed by the modules/functions/circuitry 1420 and 1422.

(27) The signals thus obtained can then be supplied to a module/function/circuitry 144, which is able to carry out a gamma encoding complementary to the decoding performed by the module/function/circuitry 140 to obtain signals (for example, in RGB format) that can be used for the purposes of display of the image. For example, with reference to the embodiment exemplified in FIG. 1, this can be obtained via supply to the frame buffer 16.

(28) One or more embodiments resort to linear or quasi-linear operations, thus avoiding the complexity linked to transformations made in color spaces that are perceptively uniform such as Lab and LCh, with the possibility of operating in real time as in the case of a projector of video signals. One or more embodiments are suited, on the other hand, to being used in off-line mode, for example by saving the image in the format resulting from the gamut extension with a view to a subsequent use.

(29) The various blocks exemplified previously have been presented as exemplifying modules/functions/circuitry, taking into account the fact that one or more embodiments are suited to being implemented at a hardware level (for example, operating in fixed-point arithmetic), or else with mixed software/hardware implementations, possibly in the form of a computer program product operating on processing hardware of a standard type.

(30) Possible criteria of operation of one or more embodiments of the processing block designated as a whole by 142 in FIG. 2 will now be illustrated paying particular attention to the following two aspects: the identification of iso-hue paths in the xy space to be used for the purposes of gamut extension so as to minimize onset of artefacts; and the corresponding extension or boosting operation proper.

(31) In one or more embodiments, the iso-hue paths that can be used for gamut extension may be obtained by interpolation starting from iso-hue curves.

(32) In one or more embodiments, the iso-hue curves/paths can be identified in the LCh or Lab space and transformed into the CIE1931xy color space as schematically represented in FIG. 4.

(33) The CIE1931 color space has been defined in 1931 by the International Commission on Illumination (Commission International de l'Eclairage) in order to define a color space comprising all the hues visible by the human eye, in a way independent of the luminance. The CIE1931 model is based upon three primary colors, which enable all the colors to be obtained by additive synthesis, e.g., by mixing them together, and in a way independent of the behavior of the specific display device used.

(34) FIG. 3 exemplifies the fact that, in the CIE1931 representation, given any color P.sub.m with co-ordinates (x.sub.m, y.sub.m) in the xy domain, it is possible to define an iso-hue path that starts from the white point WP and that passes through P.sub.m.

(35) For example, it is possible to obtain iso-hue curves in the LCh or Lab domain by sampling (according to known criteria) the color space in iso-hue directions, e.g., with one and the same angle “h”. For each hue it is possible to sample different chromatic values, and each of the samples obtained can be transformed into the corresponding element in the CIE1931 xy domain.

(36) Considering the perceptively non-uniform nature of the CIE1931xy space, the transformed samples are distributed in non-linear paths, as exemplified precisely in FIGS. 3 and 4.

(37) As compared to FIG. 3, FIG. 4 brings out more clearly (in the two-dimensional space xy of the CIE1931 system) a certain number N of iso-hue curves defined, for example, in the LCh (or Lab) space and transformed into the CIE 1931 space. FIG. 4 refers, by way of example, to a number N of iso-hue curves equal to 24 (N=24).

(38) Various embodiments may, however, use a different number of iso-hue curves and/or different iso-hue curves: this fact is highlighted in FIGS. 3 to 6, where different iso-hue curves are represented.

(39) In the present description of examples of embodiments, it may be assumed that each iso-hue curve is sampled on a certain number K of samples, for example K=75. One or more embodiments may evidently use different values.

(40) In this regard, it is once again recalled that the definition of a certain number of iso-hue curves transformed into the CIE 1931xy space may be made according to criteria known in the art.

(41) For example, in one or more embodiments, it is possible to transform, for example, 24 hues (which in the LCh space are straight) into the Lab space (transformation with known equations). From the Lab space, once again following known transformations, we arrive at the XYZ space; finally, once again via known equations, we arrive at the xy space, with a processing chain LCh->Lab->XYZ->xy, which may, for example, comprise steps such as: from LCh to Lab from Lab to XYZ from XYZ to xy

(42) with the last space (“xy”) corresponding to the domain in which the extension or boosting operation is carried out.

(43) In one or more embodiments it may hence be the result of three transformations between color spaces, each of these transformations being carried out by applying known equations.

(44) For example, for the transformation from LCh to Lab reference may be made to the known formulas.

(45) For the transformation from Lab to XYZ reference may be made, for example, to Henry R. Kang, “Computational Color Technology”, (SPIE Press Monograph Vol. PM159), 2006, p. 62.

(46) Finally, the transformation from XYZ to xy may be a normalization with respect to the sum of the components, as described, for example, on page 10 of the document by Douglas A. Kerr: “The CIE XYZ and xyY Color Spaces”, Issue 1, Mar. 21, 2010.

(47) In one or more embodiments, the iso-hue paths (however determined) may prove not expressible in the xy space of the CIE1931 system with a function of the type y=f(x), in particular with a simple representation in polynomial terms.

(48) In one or more embodiments, in order to determine the iso-hue path that starts from the white point WP and passes through a given point P.sub.m of the color space (point corresponding to the color of which it is desired to carry out gamut extension), it is possible to proceed by interpolation starting from the two closest iso-hue curves, for example, from the two iso-hue curves that “enclose” the point P.sub.m.

(49) In one or more embodiments, this action of location of the two iso-hue curves closest to a given color (x, y) represented by the point P.sub.m may be implemented by dividing the xy space according to the cells of a grid represented with a dashed line in FIG. 5.

(50) In one or more embodiments, the grid can be defined in such a way that the white point WP is located at the intersection of two lines that define the grid so as to correspond to a vertex point of four adjacent cells of the grid. Even though it is not in any way an imperative choice, in what follows it will be assumed for simplicity that the cells of the grid have a rectangular shape and the same dimensions.

(51) In one or more embodiments, in order to identify potentially adjacent iso-hue curves it is possible to proceed by identifying in which cell of the grid the point P.sub.m that is undergo gamut extension is located.

(52) It will on the other hand be appreciated that the ensuing treatment refers to the case (which is by far the most likely) where the point P.sub.m is not located on any of the iso-hue curves. In the case where the point P.sub.m is located on one of the iso-hue curves, this curve can be directly used as extension path, skipping the operations of interpolation described in detail in what follows and passing directly to the step of extension or boosting proper described with reference to FIGS. 10 to 14. In other words, in the case where the point P.sub.m is located on one of the iso-hue curves, the operations of interpolation amount to the pure identification, as extension path, of the iso-hue curves passing through the point itself.

(53) For example, FIG. 6 is an enlarged representation of a part of the plane xy of the CIE1931 system adjacent to the white point WP where there may be noted, by way of example, a point P.sub.m (with co-ordinates x=x.sub.m and y=y.sub.m) located in a cell traversed by two iso-hue curves, with another two iso-hue curves that pass just outside the cell.

(54) In one or more embodiments, it is possible to proceed by identifying the intersections between the horizontal line (y=y.sub.m) and the vertical line (x=x.sub.m) that pass through the point P.sub.m and the set of curves passing through the cell of the grid in which the point P.sub.m is located. It is then possible to select the horizontal and vertical intersections (HN), identify the curves closest to the point P.sub.m, and “label” the intersections with the numbers of the curves in question so as to locate the two curves closest to P.sub.m via the two intersections closest to P.sub.m.

(55) The table of FIG. 7 exemplifies how this can be obtained in one or more embodiments. In particular, the rows and the columns of the table identify the cells of the grid, and the vertical or horizontal intersections are obtained as indicated by the double-headed arrows.

(56) In the table, the symbol H expresses the fact that, to identify the two adjacent curves, only the horizontal intersection is made (intersection of the straight line y=y.sub.m with the curves that pass through the cell in which the point P.sub.m is located). The symbol V expresses the fact that to seek the adjacent curves only the vertical intersection is made (intersection of the straight line x=x.sub.m with the curves that pass through the cell in which the point P.sub.m is to be found). The point or circle at the center of the table represents the White Point WP.

(57) In one or more embodiments, it is possible to proceed by locating the minimum of the distances greater than zero and the maximum of the distances smaller than zero, and (assuming that the iso-hue curves are numbered in an orderly way) the numbers of the curves associated to the two distances identify the two iso-hue curves that embrace the point/sample P.sub.m, which are closest thereto.

(58) This procedure enables identification of the two iso-hue curves closest to the point P.sub.m, designated by C.sub.1 and C.sub.2 in the representation of FIG. 8. Starting from these curves, it is possible to interpolate an iso-hue path (represented dashed in FIG. 8) in which it is possible to carry out chromatic gamut extension by “mapping” the point P.sub.m in a new point P′.sub.m, resulting from the action of extension and designed to be used for display. For example, the point P′.sub.m can be supplied to the frame buffer 16 in the scheme provided by way of example in FIG. 1.

(59) In carrying out an interpolation aimed at identifying a path along which to implement the action of gamut extension or boosting various factors may be taken into account, for instance: the samples of the curves (e.g., C.sub.1 and C.sub.2) used for the purposes of interpolation may be found not to be aligned vertically in the plane xy; the distances between samples, whether it is the distance between adjacent samples within one and the same curve (intra-curve samples) or the distance between the pairs of samples closest to one another in the two curves (cross-curve samples) may not be uniform.

(60) In one or more embodiments, it is possible to proceed as schematically represented in FIG. 9, e.g., identifying the four points I, II, III, and IV closest to the point P.sub.m (in the example represented herein, the points I and II on the curve C.sub.1 and the points III, IV on the curve C.sub.2) and then compute the points of intersection between the vertical line passing through P.sub.m and the segments that connect the points I, II, on one side, and the points III and IV, on the other. The corresponding points of intersection, designated respectively by P.sub.1 (intersection with the segment that connects the points I and II) and P.sub.2 (intersection with the segment that connects the points III and IV), will consequently present co-ordinates (x.sub.1, y.sub.1) for P.sub.1 and (x.sub.2, y.sub.2) for P.sub.2, with the co-ordinates x.sub.1 and x.sub.2 that are the same as one another and equal to the co-ordinates x.sub.m of the point P.sub.m.

(61) In this way, it is possible to define a curve passing through P.sub.m that can be expressed at P.sub.m in the form
y.sub.m=(1−t)y.sub.2+ty.sub.1
where, in this case, t is the unknown
t=(y.sub.m−y.sub.2)/(y.sub.1−y.sub.2).

(62) In one or more embodiments, it is thus possible to interpolate the “missing” path using samples already available between the two adjacent curves C.sub.1, C.sub.2.

(63) In one or more embodiments, it is possible to apply an interpolation without compensation
x.sub.1(k)=(1−t′).Math.x.sub.2(k)+t′.Math.x.sub.1(k)
y.sub.1(k)=(1−t′).Math.y.sub.2(k)+t′.Math.y.sub.1(k)
where t′ is chosen equal to the value oft defined above. This operating procedure can lead to errors such as not to enable a correct interpolation at the first step in so far as an error may be generated
δ.sub.E=abs(y.sub.m−y.sub.intercept)
where abs indicates the absolute value, and y.sub.intercept indicates the co-ordinate y of the effective point of intersection of the correct interpolation curve.

(64) In one or more embodiments, it is therefore possible to apply an interpolation with compensation
x.sub.1(k)=(1−t.sub.ec).Math.x.sub.2(k)+t.sub.ec.Math.x.sub.1(k)
y.sub.1(k)=(1−t.sub.ec).Math.y.sub.2(k)+t.sub.ec.Math.y.sub.1(k)
with a compensated interpolation factor t.sub.ec, where t.sub.ec=[(y.sub.m+δ.sub.E)−y.sub.2]/(y.sub.1−y.sub.2).

(65) In both cases k=1, . . . , K identifies the number of the sample (previously reference was made to an example where K=72 samples are present).

(66) In one or more embodiments, some particular cases of iso-hue paths may be taken into account, where the co-ordinates present a non-monotonic increasing/decreasing pattern (for example, instead of a pattern increasing in a monotonic way, a pattern in which the co-ordinate x first increases and then decreases). This behavior can affect the choice of the four closest points previously designated by I, II, III, and IV.

(67) As indicated previously—once the iso-hue path along which to implement the action of extension has been determined (for example, via a mechanism of interpolation between adjacent iso-hue curves)—in one or more embodiments it is possible to pass from the pre-extension point, P.sub.m, to the post-extension point, P′.sub.m ensuring that this new point lies in the extension path defined previously, for example, by interpolation.

(68) In one or more embodiments, it is possible to proceed by treating separately each of the co-ordinates x(t) and y(t).

(69) In one or more embodiments it is possible to operate in a parametric discrete domain, for example, as a function of the parameter t defined previously.

(70) In one or more embodiments, the aim may hence be to shift the point P.sub.m “forwards” (e.g., away from the white point WP) along the extension path that passes through P.sub.m to reach a point P.sub.m′ that represents the result of the extension.

(71) It will consequently be appreciated (also with reference to the figures) that the departure from the white point WP in passing from the point P.sub.m, with co-ordinates x.sub.m, y.sub.m, to the extended or boosted point P.sub.m′, with co-ordinates x.sub.b, y.sub.b, can entail either an increase or a decrease of the abscissa and/or of the ordinate—according to the orientation of the extension path.

(72) Also in order to be able to manage easily such a situation, in one or more embodiments, instead of working directly on the Cartesian co-ordinates x.sub.m, y.sub.m of the point P.sub.m, it is possible to operate in a parametric domain, for example, on the basis of a parameter such as t.

(73) In what follows, mainly presented by way of example is the possibility of operating in this way on the value x of the abscissae (the case of the ordinate y may be treated in a similar way).

(74) FIG. 10 shows that, in one or more embodiments, it is possible to locate two points P.sub.m1 and P.sub.m2 closest to the point P.sub.m to be extended that lie on the iso-hue path used for the extension.

(75) In one or more embodiments, the two points P.sub.m1 and P.sub.m2 can be located by scanning the value x of the space of the interpolation path until co-ordinates are determined such that x.sub.1<x.sub.m<x.sub.2 or x.sub.2<x.sub.m<x.sub.1, according to the orientation of the extension path, by obtaining also the corresponding values y from the space of the y value.

(76) For example, assuming that the iso-hue path used for the extension can be expressed in a parametric form as (C.sub.x(t),C.sub.y(t)) with values of the parameters t.sub.1, t.sub.2 such that C.sub.x(t.sub.1)=x.sub.1 and C.sub.x(t.sub.2)=x.sub.2, with t.sub.mpos=(x.sub.m−x.sub.1)/(x.sub.2−x.sub.1), such that 0≦t.sub.mpos≦1, the initial value t.sub.start for the action of extension or boosting in the parametric space can be expressed as
t.sub.start=t.sub.i+t.sub.mpos
where i=1, 2: in the parametric domain it will be assumed that associated to x.sub.1 is t.sub.1 and associated to x.sub.2 is t.sub.2.

(77) The extended or boosted point in the parametric domain that is to be reached is identified by the boosting parameter t.sub.end, which can be expressed as
t.sub.end=t.sub.start+(t.sub.start.Math.t.sub.boost)
where the parameter t.sub.boost can be defined according to criteria described more fully in what follows.

(78) In one or more embodiments, the values t.sub.start and t.sub.end may not exist in the sampled space of the interpolated curve (for which the sampled points may be designated as a whole by t.sub.1, t.sub.2, t.sub.3, . . . ). To this there corresponds the fact that, depending upon the value of t.sub.boost, the co-ordinate x.sub.b of the “boosted” point could fall accordingly between x.sub.1 and x.sub.2, between x.sub.2 and x.sub.3, between x.sub.3 and x.sub.4, . . . where by x.sub.3, x.sub.4, etc., are understood in general values that are further away from x.sub.2 along the extension path.

(79) It is then possible to define the values
endpoint.sub.1=custom charactert.sub.endcustom character
endpoint.sub.2=custom charactert.sub.endcustom character
and identify four points along the extension path that surround the point subjected to extension or boosting so that for example,
x.sub.1=C.sub.x(endpoint.sub.1)
y.sub.1=C.sub.y(endpoint.sub.1)
x.sub.2=C.sub.x(endpoint.sub.2)
y.sub.2=C.sub.y(endpoint.sub.2)
and, for example, it is possible to have endpoint.sub.1=t.sub.2 and endpoint.sub.2=t.sub.3, with x.sub.b that is between x.sub.2 and x.sub.3 in so far as t.sub.2 and t.sub.3 have been obtained.

(80) Wishing to know for example how far x.sub.b departs from x.sub.2 it is possible to compute (once again operating in the parametric domain) the distance
ξ=t.sub.endcustom charactert.sub.endcustom character
finally obtaining, with reference for simplicity to two extremes called simply x.sub.1 and x.sub.2, the co-ordinates deriving from boosting in the space of the values as follows
x.sub.b=(1−ξ).Math.x.sub.1+λ.Math.x.sub.2
y.sub.b=(1−ξ).Math.y.sub.1+ξ.Math.y.sub.2
e.g., with reference to the notation already introduced previously,
x.sub.1=C.sub.x(endpoint.sub.1); y.sub.1=C.sub.y(endpoint.sub.1)
x.sub.2=C.sub.x(endpoint.sub.2); y.sub.2=C.sub.y(endpoint.sub.2).

(81) It will be appreciated that, in one or more embodiments, it is possible to operate in the same way for the value y, for example, using the same values oft for both co-ordinates.

(82) The procedure described previously makes it possible to arrive (for example, on the basis of considerations on clipping, according to the criteria described more fully in what follows) to values x.sub.b, y.sub.b that may constitute the co-ordinates of the point resulting from chromatic gamut extension, for instance, to the boosted point designated by P′.sub.m for example, in FIG. 8.

(83) In a way independent of the criteria adopted for identifying the iso-hue extension paths passing through the points P.sub.m subjected to gamut extension (hence also irrespective of the examples of interpolation examined previously—which are hence in any case to be understood as non-binding examples), in one or more embodiments the degree of the action of extension or boosting—in practice how far the point P′.sub.m departs from the point P.sub.m—can be given in different ways such as, for example: i) using a single boosting factor, for example, defined by the user, for all the colors, e.g., for all the iso-hue paths; ii) using a different boosting factor according to the iso-hue path so as to prevent clipping effects; and iii) using a different boosting factor according to the iso-hue path tolerating a certain amount of clipping.

(84) The first possibility exemplified previously can be implemented by defining, for example, a single boosting factor t.sub.boost. For example, the user can define a value of his own choice such as, for example t.sub.boost=0.2.

(85) The other two possibilities (preventing clipping, or else tolerating a certain amount of clipping) may take into account the fact that it is possible to avoid clipping in so far as the extended or boosted point does not fall outside the gamut of the destination device (e.g., the chromatic gamut generated by the laser 10): hence, if an excessively high value of t.sub.boost is used, some colors could be mapped into colors that fall outside the gamut of the destination device, thus not being displayable.

(86) The limit or boundary of the gamut of the destination device (for example, the laser projector 10 exemplified in FIG. 1) may be designated as LRGB.sup.∂. In the figures, this limit or boundary is exemplified as a triangle T.sub.L.

(87) The limit or boundary of the starting gamut may be instead designated by sRGB.sup.∂. In the figures, this limit or boundary is exemplified as a triangle T.sub.S.

(88) For example, in one or more embodiments, for each iso-hue extension path it is possible to identify the values oft (designated, respectively, as t.sup.s.sub.max and t.sup.L.sub.max) such that the iso-hue path used for boosting intersects, respectively, sRGB.sup.∂ and LGRB.sup.∂ and stop the extension so as not to depart (at least appreciably) from LGRB.sup.∂, for example, stopping the extension at t.sup.L.sub.max.

(89) With reference to the strategy indicated previously in point ii), in one or more embodiments clipping can be avoided by simply choosing:
t.sup.∂.sub.boost=(t.sup.L.sub.max−t.sup.s.sub.max)/t.sup.s.sub.max
where t.sup.s.sub.max and t.sub.L.sup.max represent the values such that, following the samples of the extension path passing through P.sub.m, respectively, the limit or boundary sRGB.sup.∂ is crossed and the limit or boundary LGRB.sup.∂ is crossed.

(90) By operating in this way, where the boundaries sRGB.sup.∂ and LGRB.sup.∂ are close to one another, the boosting factor t.sup.∂.sub.boost could be reduced so that a significant boosting effect would not be obtained.

(91) In one or more embodiments, with reference to the strategy designated previously by iii), it is possible to relax the constraint that leads the point resulting from the extension or boosting action to belong to LGRB.sup.∂, accepting a certain amount of clipping.

(92) In one or more embodiments, accepting a certain amount of clipping can correspond to the fact that the colors in the clipping area are to be clipped after boosting, e.g., to be represented by the same color located in the boundary of LGRB.sup.∂, e.g., in the boundary of the triangle T.sub.L represented in the figures. However, this makes it possible to carry out boosting of the points (colors) that are located in the proximity of the clipping area—e.g., before the clipping area, proceeding from the white point WP.

(93) In one or more embodiments, it is hence possible to define a threshold for each iso-hue path.

(94) The criteria outlined previously are exemplified in the form of graphs in FIGS. 11 to 14.

(95) For example, the scheme of FIG. 11 (referred to an ideal CIE 1931 xyY color space, the co-ordinates of which are not represented so as to render the figure clearer) an iso-hue path is represented, which can be used for the gamut extension from the white point WP to a generic point P.sub.m′ with the points t.sup.s.sub.max and t.sup.L.sub.max highlighted.

(96) Once the primary colors of the two gamuts sRGB.sup.∂ and LGRB.sup.∂ have been fixed, also the areas of the two triangles T.sub.S and T.sub.L are likewise fixed.

(97) Moving along a certain iso-hue path it is therefore possible to locate: the first value of the parameter t that causes exit from the triangle T.sub.S (e.g., t.sup.s.sub.max); and the first value of the parameter t that causes exit from the triangle T.sub.L (e.g., t.sup.L.sub.max).

(98) As has been seen, for a current hue the boosting coefficient such as to prevent clipping can be defined by the relation
t.sup.∂.sub.boost=(t.sup.L.sub.max−t.sup.s.sub.max)/t.sup.s.sub.max

(99) FIG. 12, which comprises two parts indicated by a) and b), represents a criterion for verifying easily whether a given point c located on an iso-hue extension path can lead to an out-of-gamut condition referred to a generic RGB triangle (once again defined on a CIE 1931 xyY system).

(100) The RGB triangle (whether it is a triangle R.sub.S,G.sub.S,B.sub.S corresponding to the triangle T.sub.S or a triangle R.sub.L, G.sub.L, B.sub.L corresponding to the triangle T.sub.L) can be considered as being constituted by three triangles T.sub.1, T.sub.2, T.sub.3 having, respectively, as vertices: the points B, G, and C for the triangle T.sub.1: the points B, C, R for the triangle T.sub.2; and the points C, G, R for the triangle T.sub.3.

(101) As long as the sum of the areas of the triangles T.sub.1, T.sub.2, T.sub.3 is smaller than the area of the RGB triangle, the point c falls within the RGB triangle. If, instead, the sum of the areas of T.sub.1, T.sub.2, T.sub.3 is greater than the area of the RGB triangle, the point c is to be considered as falling outside the gamut represented by the triangle.

(102) As already said, this applies both to the triangle T.sub.S and to the triangle T.sub.L.

(103) The diagram of FIG. 13 exemplifies the possibility of modulating the boosting factor bf (on the ordinates) as a function of the value of the parameter t prior to boosting, distinguishing, for example, a low-saturation area LS, a medium-saturation area MS, and a high-saturation area HS.

(104) The division of the corresponding fields (both for the parameter t and for the boosting factor bf) into bands of equal width with value of the boosting factor bf initially constant in the low-saturation area LS and then designed to increase according to a linear law in the areas MS and HS is to be deemed as being provided purely by way of example. The same applies also to the division of the corresponding fields of variation into bands of non-uniform width and/or to the number of said bands.

(105) FIG. 14 exemplifies, once again with reference to the two triangles T.sub.S and T.sub.L already represented in FIG. 11, the possibility, to which reference has already been made previously, of portions of the two gamuts represented by the aforesaid triangles to be close to one another, in a condition where a control of clipping is carried out with a limited increase in saturation.

(106) Also in this case it is possible to obtain an appreciable increase of saturation by operating on an iso-hue extension path passing through one of these areas. For the aforesaid extension path, the clipping phenomenon can be tolerated to a greater extent by increasing the value of t.sup.∂.sub.boost for the corresponding hue, accepting for this hue a clipping value that is higher (even significantly higher) than the one accepted for other hues.

(107) In the CIE 1931 xyY space it is possible to define chromatic classes. In one or more embodiments, the points of the curves associated to these classes can be treated by applying different boosting factors defined as a function of the specific color class. For example, the boosting factor may be limited more markedly for the chromatic classes corresponding to the skin hues so as to prevent an excessive gamut extension in this case.

(108) Some embodiments may take the form of or comprise computer program products. For example, according to one embodiment there is provided a computer readable medium comprising a computer program adapted to perform one or more of the methods or functions described above. The medium may be a physical storage medium such as for example a Read Only Memory (ROM) chip, or a disk such as a Digital Versatile Disk (DVD-ROM), Compact Disk (CD-ROM), a hard disk, a memory, a network, or a portable media article to be read by an appropriate drive or via an appropriate connection, including as encoded in one or more barcodes or other related codes stored on one or more such computer-readable mediums and being readable by an appropriate reader device.

(109) Furthermore, in some embodiments, some or all of the methods and/or functionality may be implemented or provided in other manners, such as at least partially in firmware and/or hardware, including, but not limited to, one or more application-specific integrated circuits (ASICs), digital signal processors, discrete circuitry, logic gates, standard integrated circuits, controllers (e.g., by executing appropriate instructions, and including microcontrollers and/or embedded controllers), field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), etc., as well as devices that employ RFID technology, and various combinations thereof. For example, embodiments of a projector may be implemented as discussed above (e.g., partially in hardware, partially with controllers executing instructions, etc.).

(110) The various embodiments described above can be combined to provide further embodiments. Aspects of the embodiments can be modified, if necessary to employ concepts of the various patents, applications and publications to provide yet further embodiments.

(111) These and other changes can be made to the embodiments in light of the above-detailed description. In general, in the following claims, the terms used should not be construed to limit the claims to the specific embodiments disclosed in the specification and the claims, but should be construed to include all possible embodiments along with the full scope of equivalents to which such claims are entitled. Accordingly, the claims are not limited by the disclosure.