This application claims priority from European Patent Application No. 18305894.0, entitled “METHOD OF PROCESSING DATA BY AN ITERATIVE APPLICATION OF A SAME LUT”, filed ON Jul. 6, 2018, the contents of which are hereby incorporated by reference in tis entirety.
The present disclosure relates to the processing of data using lookup tables. It is mainly focuses on the processing of colors of images.
It is known to process data according to a processing function. For instance, the so-called Perceptual Quantizer Electro-Optical Transfer Function (PQ-EOTF) L=h(N) is, according to SMPTE ST-2084 standard, represented by the following function:
where L is the Luminance and N is a non-linear color value.
Instead of using an algebraic function h(⋅) to process data, it is common and efficient to use a Lookup-table (LUT) that models such a function to process these data. Such a processing method is quite usual notably in the field of color and image processing. LUTs are typically used when evaluation of a processing function is difficult to implement (for instance because it involves expensive operations such as divisions, logarithms and the like). Look-up tables are commonly used to represent complex processing functions, or processing functions that would otherwise be difficult to implement in hardware. Replacing a processing function with a look-up table involves approximating the function with a number of bins. Each bin of such a LUT maps a sample input value to a sample output value. An input/output value is meant to be a scalar value, or a vector of several scalar values. If values are scalar, the LUT is said to be one-dimensional, if values are vectors, the LUT is said to be multi-dimensional.
An input value different from the sample input values of a LUT is generally mapped to an output value interpolated from the sample output values of this LUT and this means that a table-lookup is always an approximation of the function that it represents.
Globally, it means that the processing of input values by a function is replaced by two operations: 1/application of a LUT—2/application of interpolation between output values of this LUT.
When the processing function represented by the LUT is nonlinear, the interpolation can be improved upon by means of non-linear interpolation. Another way to reduce the error made by this interpolation is to increase the number of bins of the LUT. Yet another method for reducing the error is to creates bins of varying size. For example, in intervals of input values in which the function has a high curvature, the bin density of the LUT may be higher. In summary, methods to make LUTs more accurate include increasing the number of elements (bins) in the LUT, applying linear or higher order interpolation, or having a variable spacing between the bins.
It should be noted that each of these well-known methods to decrease the error made by replacing a function by a LUT (+ interpolation) increases the computation time, as well as the complexity of the hardware. As a consequence, it is desirable to use LUTs with regularly sized bins and linear interpolation, even if a larger size of LUT, i.e. a high number of bins, is needed to achieve a given level of precision.
An object of the invention is to find a more efficient way of modeling a processing function by the application of a LUT which is different from the well-known procedure where a single LUT is applied once to input values of data to process.
In the new processing method, a single, specific LUT is applied multiple times in succession, as illustrated in
For this purpose, a subject of the invention is a method of processing input values of data using a lookup-table comprising applying iteratively said lookup-table over at least two iterations.
Preferably, the at least two iterations comprise a first iteration in which said lookup-table is applied to said input values resulting in first output values and in which said lookup-table is applied to said first output values resulting in second output values.
Preferably, the method comprises interpolating for said iterative application of said lookup table. It means that, for any input values of data that are different from input values of the lookup-table, an interpolation is performed over output values of the at least two iterations based on corresponding input values of the lookup-table. In other words, preferably, said interpolating for an application of the lookup table is performed between input values of said lookup table and between output values of said lookup table.
Preferably, this interpolation is linear, reducing then advantageously the required computing resources.
Said lookup table may be multidimensional.
Preferably, said data represent colors. For instance, these data are R,G,B data representing colors in a RGB color space of a color device.
Preferably, the at least two iterations of said lookup table models a processing function which is nonlinear and bijective. By replacing notably these processing functions with multiple iterations of one LUT, a high accuracy approximation may be advantageously obtained at a low computational cost. Such processing functions may be 1D functions, 2D functions or 3D functions, leading respectively to 1D-lookup tables, 2D-lookup tables or 3D-lookup tables. Preferably, said processing function is chosen in the group composed of a transfer function, a tone mapping and an inverse tone mapping function.
An object of the invention is also a device comprising at least one processor configured to implement the above method. Preferably, this device is chosen in the group composed of a mobile device, a communication device, a game device, a laptop, a camera, a chip, a server, a TV set and a Set-Top Box. The implementation of the above method of processing is notably advantageous on such a device with limited computing resources, because a high accuracy approximation may be obtained although such limited computing resources.
An object of the invention is also a computable readable storage medium comprising stored instructions that when executed by a processor performs the above method.
The invention will be more clearly understood on reading the description which follows, given by way of non-limiting examples and with reference to the appended figures in which:
It will be appreciated by those skilled in the art that flow charts presented herein represent conceptual views of illustrative circuitry embodying the invention. They may be substantially represented in computer readable media and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.
The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. Explicit use of the term processor should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor (“DSP”) hardware, Systems on Chip (SOCs) hardware or Field-Programmable Gate Arrays (FPGAs) hardware, read-only memory (“ROM”) for storing software, random access memory (“RAM”), and non-volatile storage.
It is to be understood that the method of processing input values of data may be implemented in various forms of hardware, software, firmware, special purpose processors, or combinations thereof. The invention may be notably implemented as a combination of hardware and software. Moreover, the software may be implemented as an application program tangibly embodied on a program storage unit. The application program may be uploaded to, and executed by, a processing machine comprising any suitable architecture. Preferably, the processing machine is implemented on a platform having hardware such as one or more central processing units (“CPU”), a random access memory (“RAM”), and input/output (“I/O”) interfaces. The platform may also include an operating system and microinstruction code. The various processes and functions described herein may be either part of the microinstruction code or part of the application program, or any combination thereof, which may be executed by a CPU. In addition, various other peripheral units may be connected to the platform such as an additional data storage unit and a display device. The platform may be notably a mobile device as a tablet, a communication device as a smartphone, a game device, a laptop, a camera, a chip as an encoding chip or a decoding chip, a server as a broadcast server or web server, a TV set or a Set-Top Box.
It is to be understood that input values of data to be processed by the method can be any kind of data, even if the below embodiment is described in the context of processing input values of color data.
In a first part of this embodiment, an approximation of a processing function h(x) by applying iteratively at least two times an iterative function ƒ(x), i.e. according (ƒ° . . . °ƒ° . . . °ƒ)(x) is explained. Then, the obtained result is extended to replace the iterative function ƒ (x) with the application of a corresponding iterative LUT resulting to an approximative iterative function ƒ′ (x).
A method to obtain a lookup table LUT to be applied iteratively over two iterations will be first described, in the context of processing color data x through a PQ electro-optical transfer function hPQ(x) as specified in ITU-R Recommendation BT2100. The variable x corresponds to the variable N in the PQ-EOTF quoted in the background art paragraph above.
First, a number k of bins is determined, based notably on memory size available on the processing platform. These k input values x1, . . . , xj, . . . , xk are chosen to be distributed uniformly over the range of input values. Therefore, the targeted iterative LUT will have k input values x1, . . . , xj, . . . , xk (and k corresponding output values y1, . . . yj, . . . , yk).
Then, an iterative function ƒPQ(x) is defined such that:
h
PQ(x)=ƒPQ(ƒPQ(x))
Such an iterative function ƒPQ(x) can be for instance approximated in a manner known per se by a 6-degree polynomial PfPQ(x) as follows: PfPQ(x)=−4.0793e−5x5+0.0116x4+0.2966x3+0.4146x2+0.1455x+0.1317
Note that, on a sampled grid of 1000 input values x, the mean absolute error of |hPQ(x)−ƒPQ(ƒPQ(x))| is 1.95 e−5, showing a high degree of correspondence between a double iteration ƒPQ(ƒPQ(x)) of the iterative function and the processing function itself hPQ(x). Similarly, the HLG opto-electrical transfer function (ITU-R Recommendation BT.2100) can be approximated with this procedure to within a mean absolute error of 9.01 e−4.
Generally, for any processing function h(x), the iterative function ƒ (x) cannot be obtained analytically. However, it is generally possible to approximate the iterative function ƒ(x) using a polynomial Pƒ(x) of a sufficiently high degree:
where the polynomial Pƒ(x) is defined by the degree n and the coefficients mi. The coefficients of the polynomial Pƒ(x) can be determined by the equation:
Here, an iterative polynomial P′ƒ(x) is preferably evaluated based only on the k input values x1, . . . , xj, . . . , xk and their corresponding processing function values ƒ (x1), . . . , ƒ(xj), . . . , ƒ(xk). The k resulting values P′ƒ (x1), . . . , P′ƒ(xj), . . . , P′ƒ(xk) output by this iterative polynomial P′ƒ(⋅) then serve once more as input to this iterative polynomial P′ƒ(x). The resulting coarsely k-discretized P′ƒ(P′ƒ(xj)) (with j in [1,k]) is then turned in a manner known per se into a LUT′p′p′ representing P′ƒ(P′ƒ(xj)) and having the k input values x1, . . . , xj, . . . , xk as entries. This LUT′p′p′, which represents a function ƒp′p′′(x), can be evaluated (by means of linear interpolation) at a large number i of sample points between x∈[0,1]. Thus, for a large number of points, say 1000, the following iterative function is evaluated:
After minimizing the difference ∥h(x)−ƒp′,p′′(x)∥22 for this large number i of sample points mi, another resulting polynomial P″p′p′(⋅) with coefficients mi is once again evaluated as above at the same k sample points. This other resulting polynomial P″p′p′(x) is then turned into a final target iterative LUT″p″p″ in a manner known per se.
As an example, this procedure is applied to the above PQ EOTF using a 6-degree polynomial, and a 5-bin target LUT, with results shown in
The advantage of approximating a function of input values of data by applying iteratively a small size LUT to these input values will now be shown in comparison with approximating the function of input values of data by applying once a bigger LUT to these input values.
When comparing the above situation of a two-iterative 5-bin LUT″p″p″ approximating the PQ EOTF with a situation of a single 10-bit LUT approximating the PQ EOTF, the mean absolute error induced by the double application of the small LUT″p″p″ is 0.0046, whereas a single application of a 10-bin bigger LUT induces a higher mean absolute error of 0.0096. The double application of the small LUT″p″p″ is therefore a better approximation of the PQ EOTF that a single application of the 10-bin bigger LUT.
The distribution shown in
Finally, note that by incorporating a small k-bin LUT″p″p″ into the iterative function ƒp(x), the approximating polynomial Pƒ(x) is no longer accurate, as shown in
Still in the first part of this embodiment, a method to obtain a lookup table LUT to apply iteratively over more than two iterations will be described.
To approximate a function h(x) with n repeated applications of an iterative function ƒ(x), the iterative function ƒp(x) is given by:
To approximate a function h(x) with an iterative LUT applied over n iterations, the iterative function ƒp(x) is given by:
where ƒpp . . . p′(x) is a small LUT created by repeating the evaluation of polynomial ƒp(x) using a LUT of k bins for a total of n times.
As an example, using the above method, the so-called Slog3 opto-electrical transfer function (OETF) is approximated with an iterative 5-bin LUT applied over 3 iterations. The accuracy of this approximation is shown in
The error induced by this approximation is shown in
Still in the first part of this embodiment, it may be noticed that, once a processing function h(x) is given, there is generally no uniquely defined solution to determine a iterative function such that:
h(x)=(ƒ°ƒ)(x)
However, under certain circumstances it is possible to approximate an iterative function to an arguably simpler problem, namely to find an approximation to the iterative function ƒ such that when applied twice it approximates the processing function h(x):
(ƒ′°ƒ′)(x)≈h(x)
where ƒ′ is an approximation to ƒ.
In a second part of this embodiment, a method of processing input values of data x using a lookup-table (LUT) comprising applying iteratively this lookup-table over at least two iterations will be briefly described. This iterative lookup-table is notably defined as described in the first part of this embodiment, using usual computing means.
The method is notably implemented on a platform comprising at least one processor configured in a manner known per se to implement it. This platform can be for instance a mobile device as a tablet, a communication device as a smartphone, a game device, a laptop, a camera, a chip as an encoding chip, a server as a broadcast server or web server, a TV set or a Set-Top Box.
This processing method comprises at least two iterations: a first iteration in which the lookup-table is applied to the input values resulting in first output values and a second iteration in which the lookup-table is applied to the first output values resulting in second output values.
When the input value is different from an input value x1, . . . , xj, . . . , xk of the lookup table, an interpolation is performed between input values of the lookup table to output an output value that is interpolated between the corresponding output values of the lookup table. Such an interpolation is performed in an manner known per se in the field of lookup tables. Preferably, this interpolation is linear, saving then advantageously computing resources. Although interpolation is linear, the approximation of a processing function remains accurate due notably to the multiple iterations of the method.
Preferably, input values to process represents colors. For instance, input values to process are R,G,B values representing colors in a RGB color space. Preferably, as described in the first part of the embodiment above, the at least two iterations of the lookup table models a transfer function such as an Electro-Optical Transfer Function (EOTF), an Optical Electrical Transfer Function (OETF), a gamma function or a Slog/Slog2/Slog3 function, or models a tone mapping or an inverse tone mapping function. By replacing these processing functions with multiple iterations of one LUT, a high accuracy approximation at a low computational cost may be obtained.
A processing function h(x) that can be modeled by iterative application of a given LUT preferably adheres to the following characteristics.
First, the processing function h(x) is preferably strictly monotonically increasing or strictly monotonically decreasing:
This means that the processing function h(x) is preferably bijective, although may have inflection points.
Further, a given non-linear processing function h(x) may have over its range of values a certain (varying) curvature. This curvature, along with the bin spacing and the assumed use of linear interpolation, has direct impact on the accuracy of a LUT. For example, for processing functions that have a smaller curvature (i.e., they are straighter), the accuracy of a corresponding LUT will be higher than for other functions.
Still further, when a highly non-linear target function h(x) is decomposed into a double application of a same ƒ(x) such that h(x)=(ƒ°ƒ)(x), then the curvature of ƒ(x) is less than that of h(x) in the range x∈[0,1]. Thus, a LUT with a given number of bins approximating ƒ (x) will be of higher accuracy than a LUT with the same number of bins approximating directly h(x). In practice, it is found that applying two k-bin LUTs in succession to approximate (ƒ°ƒ)(x) is twice as accurate as approximating h(x) directly with a single 2k-bin LUT.
Note that when the processing function h(x) to be approximated is linear, finding a solution ƒ(x) such that h(x)=(ƒ°ƒ)(x) is trivial. Assuming that h(x)=kx, then ƒ (x) can be chosen to be ƒ (x)=√{square root over (k)}x so that:
ƒ°ƒ(x)=(√{square root over (k)})2x=kx=h(x)
When h(x)=xγ (as for very usual so-called gamma functions), the iterative function can be ƒ(x)=x√{square root over (γ)}, so that:
ƒ°ƒ(x)=(x√{square root over (γ)})√{square root over (γ)}=xγ=h(x)
Preferably, both input and output of a processing function are bounded to a given range. Such a range may be bounded to be between 0 and 1, although any number of other ranges are possible:
x∈[0,1]
h(x)∈[0,1]
The method of processing input values of data is notably advantageous, because an approximation of a processing function h(x) by multiple iteration of a given function ƒ (x) has been found generally more accurate than an approximation of this processing function h(x) by different intermediate functions ƒ1(x), . . . , ƒr(x), . . . , ƒQ(x) such that h(x)=ƒ1( . . . (ƒr ( . . . (ƒQ(x)) . . . )) . . . ).
Although the illustrative embodiments of the invention have been described herein with reference to the accompanying drawings, it is to be understood that the present invention is not limited to those precise embodiments, and that various changes and modifications may be effected therein by one of ordinary skill in the pertinent art without departing from the invention. All such changes and modifications are intended to be included within the scope of the present invention as set forth in the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
18305894.0 | Jul 2018 | EP | regional |