Compressed float index based look up table
By compressing floating representations into a compressed index format for LUTs and using linear interpolation, the method addresses the trade-off between accuracy and complexity in LUT-based image processing, improving visual quality and reducing errors.
Patent Information
- Application Number
- PCT/EP2025/052495
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-02-21
- Filing Date
- 2025-01-31
- Publication Date
- 2025-08-28
AI Technical Summary
Existing image processing methods using look-up tables (LUTs) face a trade-off between accuracy and computation complexity, particularly in interpolating functions with sharp gradients, leading to significant approximation errors, especially in dark image areas, which affect visual quality.
A method and device that compress floating representations of input data into a compressed index format for LUTs, reducing the number of exponent and mantissa bits while using linear interpolation between LUT values, thereby maintaining precision and reducing complexity.
This approach improves the accuracy of LUT-based image processing by maintaining precision with reduced computational complexity, minimizing approximation errors and enhancing visual quality in image processing.
Smart Images

Figure EP2025052495_28082025_PF_FP_ABST
Abstract
Description
[0001] COMPRESSED FLOAT INDEX BASED LOOK UP TABLE
[0002] 1. CROSS REFERENCE TO RELATED APPLICATIONS
[0003] This application claims priority to European Application No. 24305285.9, filed February 21, 2024, which is incorporated herein by reference in its entirety.
[0004] 2. TECHNICAL FIELD
[0005] At least one of the present embodiments generally relates to the field of lookup tables-based image processing processes and more particularly to a method and a device for processing images using look-up tables.
[0006] 3. BACKGROUND
[0007] Look up tables (LUT) are widely used in image processing to accelerate computations with a tradeoff in terms of accuracy and computation complexity. Indeed, instead of directly using a function to compute an output value provided by the function for a given input value, the function is approximated by a limited number of precomputed coordinate values represented in a table. An approximated output value of the function for the given input value is then estimated by interpolating the coordinates values of the LUT.
[0008] A common approach is to use a linear addressing with steps between each precomputed coordinate value equal to a definition interval on which the function is to be precalculated in the LUT divided by a LUT size (i.e. by anumber of entries in the LUT). Such approach can lack accuracy if functions to be interpolated with a LUT have sharp gradients. Indeed, approximation errors may become extreme for example for small values at the beginning of the LUT and create visual artifacts. Such approximation errors are particularly noticeable in image processing in dark areas of images to which the human vision is very sensitive. An approach to mitigate this problem is to use a correction function (like power of the input value) or a pre-look up table to decrease the function gradient and reduce relative errors. If such an approach works well at improving accuracy, it also adds more complexity to the interpolation process.
[0009] It is desirable to overcome the above drawbacks. It is particularly desirable to propose a solution offering a better trade-off between accuracy and computation complexity of a LUT based image processing process.
[0010] 4. BRIEF SUMMARY
[0011] In a first aspect, one or more of the present embodiments provide a method comprising: obtaining input picture data; obtaining a floating representation of the input picture data, the floating representation of the input data comprising a first number of exponent bits followed by a second number of mantissa bits; compressing the floating representation of the input picture data into a current index, the compressing of the floating representation of the input picture data comprising: compressing the first number of exponent bits in a third number of compressed exponent bits, the third number being lower than the first number; compressing the second number of mantissa bits in a fourth number of compressed mantissa bits, the fourth number being lower than the second number; and obtaining the current index from the compressed mantissa bits and the compressed exponent bits; and obtaining output picture data representing a result of a processing applied to the input picture data using a look-up table indexed by the current index.
[0012] In an embodiment, the look-up table is obtained by defining a set of index of the look-up table; and for each index of the set: decompressing the index into a decompressed float value, the decompressing comprising obtaining a first number of exponent bits from a third number of exponents bits comprised in the index, obtaining a second number of mantissa bits from a fourth number of mantissa bits comprised in the index and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the processing for the decompressed float value; and setting a look-up table value of the look up table for the index to the output value.
[0013] In an embodiment, the obtaining of the output picture data representing the result of the processing applied to the input picture data comprises applying a linear interpolation between a look-up table value of the look-up table for the current index and a look-up table value of the look-up table for an index following the current index.
[0014] In a second aspect, one or more of the present embodiments provide a method for determining a look-up table representing an image processing function comprising: defining a set of index of the look-up table; and for each index of the set: decompressing the index into a decompressed float value, the decompressing comprising obtaining a first number of exponent bits from a third number of exponents bits comprised in the index, the third number being lower than the first number, obtaining a second number of mantissa bits from a fourth number of mantissa bits comprised in the index, the fourth number being lower than the second number, and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the image processing function for the decompressed float value; and setting a look-up table value of the look up table for the index to the output value.
[0015] In a third aspect, one or more of the present embodiments provide a device comprising electronic circuitry configured for: obtaining input picture data; obtaining a floating representation of the input picture data, the floating representation of the input data comprising a first number of exponent bits followed by a second number of mantissa bits; compressing the floating representation of the input picture data into a current index, the compressing of the floating representation of the input picture data comprising: compressing the first number of exponent bits in a third number of compressed exponent bits, the third number being lower than the first number; compressing the second number of mantissa bits in a fourth number of compressed mantissa bits, the fourth number being lower than the second number; and obtaining the current index from the compressed mantissa bits and the compressed exponent bits; and obtaining output picture data representing a result of a processing applied to the input picture data using a look-up table indexed by the current index.
[0016] In an embodiment, the look-up table is obtained by defining a set of index of the look-up table; and for each index of the set: decompressing the index into a decompressed float value, the decompressing comprising obtaining a first number of exponent bits from a third number of exponents bits comprised in the index, obtaining a second number of mantissa bits from a fourth number of mantissa bits comprised in the index and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the processing for the decompressed float value; and setting a look-up table value of the look up table for the index to the output value.
[0017] In an embodiment, the obtaining of the output picture data representing the result of the processing applied to the input picture data comprises applying a linear interpolation between a look-up table value of the look-up table for the current index and a look-up table value of the look-up table for an index following the current index.
[0018] In a fourth aspect, one or more of the present embodiments provide a device for determining a look-up table representing an image processing function comprising electronic circuitry configured for: defining a set of index of the look-up table; and for each index of the set: decompressing the index into a decompressed float value, the decompressing comprising obtaining a first number of exponent bits from a third number of exponents bits comprised in the index, the third number being lower than the first number, obtaining a second number of mantissa bits from a fourth number of mantissa bits comprised in the index, the fourth number being lower than the second number, and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the image processing function for the decompressed float value; and setting a look-up table value of the look up table for the index to the output value.
[0019] In a fifth aspect, one or more of the present embodiments provide a non- transitory information storage medium storing program code instructions for implementing the method according to the first or the second aspect.
[0020] In a sixth aspect, one or more of the present embodiments provide a computer program comprising program code instructions for implementing the method according to the first or the second aspect.
[0021] 5. BRIEF SUMMARY OF THE DRAWINGS
[0022] Fig. 1 illustrates schematically an example of image processing process;
[0023] Fig. 2 illustrates schematically an example of hardware architecture of a processing module able to implement various aspects and embodiments;
[0024] Fig. 3 illustrates a block diagram of an example of a system in which various aspects and embodiments are implemented;
[0025] Fig. 4 illustrates schematically a method for deriving a look-up table according to an embodiment;
[0026] Fig. 5 illustrates schematically a use of the LUT for computing the value of the function according to an embodiment; Fig. 6 illustrates schematically a compression process according to an embodiment; and Fig. 7 illustrates schematically a decompression process according to an embodiment.
[0027] 6. DETAILED DESCRIPTION
[0028] In the following, we illustrate various embodiments with an image processing process comprising a step of conversion from a non-linear domain to a linear domain and a step of conversion from a linear domain to a non-linear domain, these steps being possibly implemented using LUTs. However, the various embodiments are also adapted to any other image processing step implemented using a LUT such as a tone mapping (a mapping from a first dynamic range to a second dynamic range), a gamut mapping (a mapping from a first color gamut to a second color gamut), a filtering, etc.
[0029] Fig- 1 illustrates schematically an example of image processing process.
[0030] The image processing process of Fig. 1 is integrated in an HDR workflow.
[0031] In Fig. 1 , any transform from a linear domain L to a non-linear domain NLD1 is called OETF (Opto-Electronic Transfer Function). Any transform from a non-linear domain NLD1 to the linear domain L is called EOTF (Electro-Optical Transfer Function).
[0032] The process described in relation to Fig. 1 is executed by a processing module on samples of a video content. The processing module is for example the processing module 300 described later in relation to Fig. 2.
[0033] In this example, the processing module 300 receives input data in the form of a YUV sample Y'T1C1U'T1C1V'T1C1. The input data Y'T1C1U'T1C1V'T1C1are in a color gamut CGI and corresponds to a non-linear domain NLDL The processing module 300 then applies a tone mapping to generate output data in the form of a YUV sample y'nciu'Tlclv'Tlcl. The output data y'nciu'Tlclv'Tlclare in the color gamut CGI and correspond to the non-linear domain NLD1.
[0034] In a step 10, the processing module 300 converts the input data Y'nciU'T1C1V'T1C1into RGB data R'T1C1G'T1C1B'T1C1using a YUV to RGB matrix Ml adapted to the color gamut CGI.
[0035] In a step 11, the processing module 300 converts the RGB data R'T1C1G'T1C1B'T1C1to RGB data RLC1GLC1BLC1in the color gamut CGI but corresponding to the linear domain L with no transfer function using a non-linear to linear converter allowing a NLD1 to L conversion.
[0036] In a step 12, the processing module 300 applies a tone mapping to the RGB data RLC1GLCI BLCI to obtain RGB data rLC1gLC1bLC1in the color gamut CGI while remaining in the linear domain L with no transfer function using a tone mapping function.
[0037] In a step 13, the processing module 300 converts the RGB data rLC1gLC1bLC1to RGB data r'Tlclg'ncib'Tlclin the color gamut CGI and corresponding to the non-linear domain NLD1 using a linear to non-linear converter allowing a L to NLD1 conversion.
[0038] In a step 14, the processing module converts the RGB data r'riclg'ncib'Tlclto YUV data y'nciu'Tlclv'Tlclin the color gamut CGI and corresponding to the non-linear domain NLD1 using a RGB to YUV matrix M2 adapted to the color gamut CGI.
[0039] For example, the color gamut CGI is a BT.2020 color gamut as described in BT.2100 recommendation (Recommendation ITU-R BT.2100-2, Image parameter values for high dynamic range television for use in production and international program exchange, 07 / 2018). In that case, the YUV to RGB matrix is:
[0040] 1.0 0.0 1.47460
[0041] Ml = 1.0 -0.164550 -0.571350
[0042] .1.0 1.8814000 0.0 and the RGB to YUV matrix is: 0.26700 0.6780 0.05930 '
[0043] M2 = -0.139630 -0.360730 0.5 0.5 -0.459786 -0.040214.
[0044] The non-linear domain NLD1 is for example the SMPTE ST 2084.
[0045] For the purpose of illustrating the problem solved by various embodiments mentioned in this document, we suppose that in the example of Fig. 1, the tone mapping process of step 12 is a pass-through operation, i.e., the tone mapping process of step 12 doesn’t apply any operation on the RGB data RLC1GLC1BLC1.
[0046] Table TAB1 illustrates the inputs of steps 10 to 14 and the output of step 14 of the process of Fig. 1. A first line illustrates values taken by a slower but accurate application of the process of Fig. 1 without using LUTs. In that case functions are used in steps 11 and 13. A second line illustrates values taken by a faster application of the process of Fig. 1 wherein LUTs replace functions in steps 11 and 13. In this example, linearly indexed LUTs compute each entry with regular steps. LUT size is “497” and interval of definition is between [0,1], LUT steps are equal to “1” divided by “497”. As can be seen, large errors occur in step 13 (L to NLD1 conversion) for small input values. This results in significant differences between the input of step 10 and the output of step 14.
[0047] Table TAB 1
[0048] One solution to solve this approximation issue is to perform all computations in floating values (as in the first line). Floating values are commonly represented on “32” or “64” bits. However, “32” or “64” bits are too large to index a LUT. There is need for a solution keeping the benefits in terms of complexity of the LUTs while keeping the benefits of the floating values in terms of precision.
[0049] At least one embodiment in the following proposes to use a compressed representation of float values to index LUTs.
[0050] A known binary representation of floating values is a “32” bits IEEE floating representation. The IEEE floating representation is composed with a sign bit, followed by a “8” bits prefix called exponent and then by a “23” bits suffix called mantissa. This binary representation can be expressed as a floating value F with the following formula where 5 denotes the sign bit, e the exponent value (between “0” and “255”) and m, the / th mantissa bit:
[0051] The following embodiments propose to compress the IEEE floating representation to limit the LUTs size. The compression method targets the exponent and mantissa, the sign bit being only kept if there is need for positive and negative values. Exponent and mantissa are compressed by discarding the least significant bits from the exponent and the mantissa. The method used to compute the compressed exponent and the compressed mantissa and to merge these two values as a compressed float is described in detailed later in this document in relation to Fig. 6.
[0052] In the following, a compressed exponent is a w-bits value where n is between “1” and “8” and a compressed mantissa is a m-bits value where m is between “1” and “23”. It had been observed that good values of n (respectively of m) allowing generating LUTs with an acceptable precision are between “4” and “6” (respectively between “4” and “8”).
[0053] Fig- 2 illustrates schematically an example of hardware architecture of a processing module 300 configured to implement the various embodiments described in this document.
[0054] The processing module 300 comprises, connected by a communication bus 305: a processor or CPU (central processing unit) 306 encompassing one or more microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture, as non-limiting examples; a random access memory (RAM) 301 ; a read only memory (ROM) 302; a storage unit 303, which can include non-volatile memory and / or volatile memory, including, but not limited to, Electrically Erasable Programmable Read-Only Memory (EEPROM), Read-Only Memory (ROM), Programmable Read-Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), flash, magnetic disk drive, and / or optical disk drive, or a storage medium reader, such as a SD (secure digital) card reader and / or a hard disc drive (HDD) and / or a network accessible storage device; at least one communication interface 304 for exchanging data with other modules, devices, systems or equipment. The communication interface 304 can include, but is not limited to, a transceiver configured to transmit and to receive data over a communication network 310 (not represented in Fig. 2). The communication interface 304 can include, but is not limited to, a modem or a network card.
[0055] For example, the communication interface 304 enables the processing module 300 to receive an SDR video and to output a SDR video with SL-HDR1 metadata. The processor 306 is capable of executing instructions loaded into the RAM 301 from the ROM 302, from an external memory (not shown), from a storage medium, or from a communication network. When the processing module 300 is powered up, the processor 306 is capable of reading instructions from the RAM 301 and executing them. These instructions form a computer program causing, for example, the implementation by the processor 306 of a method described in relation to Figs. 4, 5, 6 and 7.
[0056] All or some of the algorithms and steps of executed in the various embodiments described below may be implemented in software form by the execution of a set of instructions by a programmable machine such as a DSP (digital signal processor) or a microcontroller, or be implemented in hardware form by a machine or a dedicated component such as a FPGA (field-programmable gate array) or an ASIC (applicationspecific integrated circuit). The processor 306, a DSP, a microcontroller, a FPGA and an ASIC are therefore examples of electronic circuitry adapted or configured to implement the method described in relation to Figs. 4, 5, 6 and 7.
[0057] Fig. 3 illustrates a block diagram of an example of the system in which various aspects and embodiments are implemented.
[0058] System 30 can be embodied as a device including various components or modules and is configured to receive a video content and to apply an image processing process to the video content. The image processing process is for example the one described in relation to Fig. 1 wherein steps 11 and 13 are implemented using LUTs indexed using the compressed floating representation according to an embodiment. Examples of such system include, but are not limited to, various electronic systems such as a server, a camera, a personal computer, a laptop computer, a smartphone, a tablet or a set top box. Components of the system 30, singly or in combination, can be embodied in a single integrated circuit (IC), multiple ICs, and / or discrete components. In various embodiments, the system 30 is communicatively coupled to one or more other systems, or other electronic devices, via, for example, a communications bus or through dedicated input and / or output ports.
[0059] The input to the processing module 300 can be provided through various input modules as indicated in block 320. Such input modules include, but are not limited to, (i) a radio frequency (RF) module that receives an RF signal transmitted, for example, over the air by a broadcaster, (ii) a component (COMP) input module (or a set of COMP input modules), (iii) a Universal Serial Bus (USB) input module, and / or (iv) a High Definition Multimedia Interface (HDMI) input module. Other examples, not shown in Fig. 3, include composite video.
[0060] In various embodiments, the input modules of block 320 have associated respective input processing elements as known in the art. For example, the RF module can be associated with elements suitable for (i) selecting a desired frequency (also referred to as selecting a signal, or band-limiting a signal to a band of frequencies), (ii) down-converting the selected signal, (iii) band-limiting again to a narrower band of frequencies to select (for example) a signal frequency band which can be referred to as a channel in certain embodiments, (iv) demodulating the down-converted and bandlimited signal, (v) performing error correction, and (vi) demultiplexing to select the desired stream of data packets. The RF module of various embodiments includes one or more elements to perform these functions, for example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion can include a tuner that performs various of these functions, including, for example, down-converting the received signal to a lower frequency (for example, an intermediate frequency or a near-baseband frequency) or to baseband. Various embodiments rearrange the order of the abovedescribed (and other) elements, remove some of these elements, and / or add other elements performing similar or different functions. Adding elements can include inserting elements in between existing elements, such as, for example, inserting amplifiers and an analog-to-digital converter. In various embodiments, the RF module includes an antenna.
[0061] Additionally, the USB and / or HDMI modules can include respective interface processors for connecting the system 13 to other electronic devices across USB and / or HDMI connections. It is to be understood that various aspects of input processing, for example, Reed-Solomon error correction, can be implemented, for example, within a separate input processing IC or within the processing module 300 as necessary. Similarly, aspects of USB or HDMI interface processing can be implemented within separate interface ICs or within the processing module 300 as necessary. The demodulated, error corrected, and demultiplexed stream is provided to the processing module 300.
[0062] Various elements of the system 30 can be provided within an integrated housing. Within the integrated housing, the various elements can be interconnected and transmit data therebetween using suitable connection arrangements, for example, an internal bus as known in the art, including the Inter-IC (I2C) bus, wiring, and printed circuit boards. For example, in the system 30, the processing module 300 is interconnected to other elements of the system 30 by the bus 305.
[0063] The communication interface 304 of the processing module 300 allows the system 30 to communicate on the communication network 310. The communication network 310 can be implemented, for example, within a wired and / or a wireless medium.
[0064] Data is streamed, or otherwise provided, to the system 30, in various embodiments, using a wireless network such as a Wi-Fi network, for example IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The WiFi signal of these embodiments is received over the communications network 310 and the communications interface 304 which are adapted for Wi-Fi communications. The communications network 310 of these embodiments is typically connected to an access point or router that provides access to external networks including the Internet for allowing streaming applications and other over-the-top communications. Still other embodiments provide streamed data to the system 30 using the RF connection of the input block 320. As indicated above, various embodiments provide data in a nonstreaming manner, for example, when the system 30 is a smartphone or a tablet. Additionally, various embodiments use wireless networks other than Wi-Fi, for example a cellular network or a Bluetooth network.
[0065] The system 30 can provide an output signal to various output devices using the communication network 310 or the bus 305. For example, the system 30 can provide a processed video content to a display system 15.
[0066] The system 30 can provide an output signal to various output devices, including the display system 15, speakers 360, and other peripheral devices 370. The display system 15 can include one or more of, for example, a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display system 15 can be for a television, a tablet, a laptop, a smartphone (mobile phone), or other devices. The display system 15 can also be integrated with other components (for example, as in a smartphone or a tablet), or separate (for example, an external monitor for a laptop). The other peripheral devices 370 include, in various examples of embodiments, one or more of a stand-alone digital video disc (or digital versatile disc) (DVR, for both terms), a disk player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 370 that provide a function based on the output of the system 30. For example, a disk player performs the function of playing the output of the system 30.
[0067] In various embodiments, control signals are communicated between the system 30 and the display system 15, speakers 360, or other peripheral devices 370 using signaling such as AV. Link, Consumer Electronics Control (CEC), or other communications protocols that enable device-to-device control with or without user intervention. The output devices can be communicatively coupled to the display system 15 via dedicated connections through respective interfaces (330, 340 and 350). Alternatively, the output devices can be connected to the system 30 using the communication network 310 via the communication interface 304. The display system 15 and speakers 360 can be integrated in a single unit with the other components of the system 30 in an electronic device such as, for example, a television. In various embodiments, the display interface includes a display driver, such as, for example, a timing controller (T Con) chip.
[0068] The display system 15 and speakers 360 can alternatively be separate from one or more of the other components, for example, if the RF module of input block 320 is part of a separate set-top box. In various embodiments in which the display system 15 and speakers 360 are external components, the output signal can be provided via dedicated output connections, including, for example, HDMI ports, USB ports, or COMP outputs.
[0069] When a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of a corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of a corresponding method / process.
[0070] The implementations and aspects described herein can be implemented in, for example, a method or a process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method), the implementation of features discussed can also be implemented in other forms (for example, an apparatus or program). An apparatus can be implemented in, for example, appropriate hardware, software, and firmware. The methods can be implemented, for example, in a processor, which refers to processing devices in general, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, smartphones (cell phones), portable / personal digital assistants ("PDAs"), tablets, and other devices that facilitate communication of information between end-users.
[0071] Reference to “one embodiment” or “an embodiment” or “one implementation” or “an implementation”, as well as other variations thereof, means that a particular feature, structure, characteristic, and so forth described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” or “in one implementation” or “in an implementation”, as well any other variations, appearing in various places throughout this application are not necessarily all referring to the same embodiment.
[0072] Additionally, this application may refer to “determining” various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, retrieving the information from memory or obtaining the information for example from another device, module or from user.
[0073] Further, this application may refer to “accessing” various pieces of information. Accessing the information can include one or more of, for example, receiving the information, retrieving the information (for example, from memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0074] Additionally, this application may refer to “receiving” various pieces of information. Receiving is, as with “accessing”, intended to be a broad term. Receiving the information can include one or more of, for example, accessing the information, or retrieving the information (for example, from memory). Further, “receiving” is typically involved, in one way or another, during operations such as, for example, storing the information, processing the information, transmitting the information, moving the information, copying the information, erasing the information, calculating the information, determining the information, predicting the information, or estimating the information. It is to be appreciated that the use of any of the following “ / ”, “and / or”, and “at least one of’, “one or more of’ for example, in the cases of “A / B”, “A and / or B” and “at least one of A and B”, “one or more of A and B” is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the cases of “A, B, and / or C” and “at least one of A, B, and C”, “one or more of A, B and C” such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This may be extended, as is clear to one of ordinary skill in this and related arts, for as many items as are listed.
[0075] As will be evident to one of ordinary skill in the art, implementations or embodiments can produce a variety of signals formatted to carry information that can be, for example, stored or transmitted. The information can include, for example, instructions for performing a method, or data produced by one of the described implementations or embodiments. For example, a signal can be formatted to carry a post-processed reconstructed video content. Such a signal can be formatted, for example, as an electromagnetic wave (for example, using a radio frequency portion of spectrum) or as a baseband signal. The information that the signal carries can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor- readable medium.
[0076] Fig- 4 illustrates schematically a method for deriving a look-up table according to an embodiment.
[0077] The method of Fig. 4 is for example executed offline by the processing module 300 of the system 30.
[0078] In a step 401, the processing module 300 applies an initialization step. During the initialization step, the processing module 300 determines boundaries of the LUT, i.e. the processing module 300 determines a minimal index of the LUT lutminindex and a maximal index of the LUT lutmaxindex. The LUT represents a function Func() on an interval [Min, Max}. The function Func() is for example the non-linear to linear converter of step 11 or the linear to non-linear converter of step 13. The minimal index (respectively the maximum index) of the LUT lutminindex (respectively lutmaxindex~) is determined for the lower bound of the interval Min (respectively for the higher bound of the interval Max) applying a compression process detailed in relation to Fig. 6.
[0079] Fig- 6 illustrates schematically a compression process according to an embodiment.
[0080] The compression process of Fig. 6 corresponds to an implementation of a compression function compress float (F,ceb,cmb) when applied to a float value F with a compressed exponent bitdepth ceb and a compressed mantissa bitdepth cmb.
[0081] The method of Fig. 6 is applied for example during step 401.
[0082] In a step 5031, the processing module 300 obtains a float value F to be compressed.
[0083] In a step 5032, the processing module 300 computes a set of compression constants. The set of compression constants is computed using various operators described in table TAB2:
[0084] Table TAB2
[0085] The set of compression constants comprises an IEEE float exponent mask semask. Exponent compression bias depth cebd. an Exponent compression mask cemask. a mantissa compression mask cmmask. a compressed mantissa round mask cm.rm.ask. a mantissa remainder normalizing ratio normalizer, a min compressed float value cmin. and a min float normalizing ratio minnormalizer . One can note that the following formulas are for float 32 but can be adapted to float 16 and float 64. semask = ((1 shl seb - 1) shl smb with seb = 8 and smb = 23 cebd = (1 shl (seb - ceb) - 1) shl (30 - (seb - ceb) cemask = ((1 shl ceb) - 1) shl cmb cmmask = (1 shl cmb) - 1 cmrmask = (1 shl (smb - cmb)) - 1 normalizer = 1.0 / (1 shl (smb - cmb)) cmin = decompress float (1, cmb, ceb) minnormalizer = 1.0 / cmin where cmb is the compressed mantissa bitdepth (i.e. a number of bits allocated to represent a compressed mantissa), ceb is the compressed exponent bitdepth (i.e. a number of bits allocated to represent a compressed exponent), seb is a IEEE float exponent bitdepth (i.e. is the number of bits allocated to the exponent in the IEEE floating representation), and smb is a IEEE float mantissa bitdepth (i.e. is the number of bits allocated to the mantissa in the IEEE floating representation). Decompress float () represents a decompression process described in relation to Fig. 7.
[0086] Fig- 7 illustrates schematically a decompression process according to an embodiment.
[0087] The decompression process of Fig. 7 corresponds to an implementation of a decompression function decompress float (CF, ceb, cmb) when applied to a compressed float value CF.
[0088] In a step 4040, the processing module 300 obtains a compressed float value CF to be decompressed.
[0089] In a step 4041, the processing module 300 determines if the compressed float value CF is equal to zero.
[0090] If yes, the processing module 300 set a value of a decompressed float F corresponding to the compressed float value CF to zero. If the compressed float value CF is not equal to zero, the processing module 300 computes a set of decompression constants in a step 4043.
[0091] The set of decompression constants comprises the IEEE float exponent mask semask. the exponent compression bias depth cebd. an exponent decompression mask demask, a mantissa decompression mask dmmask. and a bias float shifter cebds. demask = ((1 shl ceb) - 1) shl cmb dmmask = (1 shl cmb) - 1 cebds = cebd shr (smb - cmb)
[0092] In a step 4044, the processing module 300 decompresses the compressed exponent to obtain a decompressed exponent dexp as follows: dexp = ((CF and demask) + cebds) shl smb - cmb)
[0093] In a step 4045, the processing module 300 decompress the compressed mantissa to obtain a decompressed mantissa dman as follows: dman = (CF and dmmask) shl (smb - cmb)
[0094] In a step 4046, the processing module 300 computes the decompressed float value F corresponding to the compressed float value CF from the decompressed exponent dexp and decompressed mantissa dman.
[0095] F = dexp or dman
[0096] Back to Fig. 6, after step 5032, the processing module 300 determines if the float value F is lower than cmin.
[0097] If yes, the processing module 300 set the compressed float value CF to zero in a step 5038.
[0098] Step 5038 is followed by a step 5039 during which the processing module 300 computes a lambda value 2:
[0099] 2 = F^minornormalizer if the float value F is not lower than cmin. step 5033 is followed by a step 5034.
[0100] During step 5034, the processing module 300 compresses the exponent of Fto obtain a compressed exponent cexp: cexp = (((base2(F) and semask) - cebd) shr (smb - cmb)) and cemask
[0101] In a step 5035, the processing module 300 compresses the mantissa of F to obtain a compressed mantissa cman: cman = ((base2(F) shr (smb-cmb) and cmmask
[0102] In a step 5036, the processing module 300 computes a compressed float value CF corresponding to the float F:
[0103] CF = cexp or cman
[0104] In a step 5037, the processing module 300 computes a lambda value A:
[0105] 2 = (base2(F) and cmrmask) * normalizer
[0106] The output of the compression function compress float () is therefore a compressed float value CF and a lambda value A. back to Fig. 4, step 401 is followed by a step 402 during which the processing module 300 determines if all LUT entries from lutminindex to lutmaxindex were processed. If yes, step 402 is followed by a step 407 during which the processing module 300 stops the method for deriving the LUT.
[0107] If at least one entry has not been processed, step 402 is followed by a step 404.
[0108] In step 404, the processing module 300 decompresses the value of a current entry curr idx (the entry corresponding to an index in the LUT) to obtain a decompressed float entry value dcurr _idx by applying the function decompress float () to curr idx. dcurr _idx = decompress float (curr_idx,ceb,cmb)
[0109] In a step 405, the processing module 300 computes an output value func dcurr _idx of the function FuncQ for the decompressed float entry value dcurr idx'. func dcurr _idx = func (dcurr idx)
[0110] In a step 406, the processing module 300 sets the value of the LUT for the entry curr idx to the value func dcurr _idx:
[0111] LUT [curr idx] = func dcurr _idx
[0112] Fig- 5 illustrates schematically a use of the LUT LU' / ] \ for computing the value of the function Func() for a current float value F curr.
[0113] In a step 502, the processing module 300 obtains the float value F curr.
[0114] In a step 503, the processing module 300 compresses the float value F curr applying the compression function compress float () to obtain a compressed float value c F curr (output of step 5036) and a lambda value F curr (output of step 5037):
[0115] (C F curr, F curr) = compress float (F_curr,ceb,cmb) In a step 504, the processing module 300 fetches the value LUT c F curr of the LUT LUT[] corresponding to the compressed float value c F curr (i.e., corresponding to the index c F curr) and the value LUT c F curr next of the LUT LUT[] corresponding to the compressed float value c_F_curr+ 1, i.e., corresponding to the index c F curr+F.
[0116] LUT c F curr = LUT\c_F_curr - lutminindex]
[0117] LUT ' c F curr next = LUT\c_F_curr + 1 - lutminindex]
[0118] In a step 505, the processing module 300 determines a value func F curr of the function Func() for the current float value F curr. To do so, the processing module 300 uses a linear interpolation: func F curr = LUT c F curr + I F curr * (LUT c F ' cur r next - L UT c F curr)
[0119] One can note that in a variant, the linear interpolation could be skipped. In that case func F curr = LUT c F curr.
[0120] We described above a number of embodiments. Features of these embodiments can be provided alone or in any combination. Further, embodiments can include one or more of the following features, devices, or aspects, alone or in any combination, across various claim categories and types:
[0121] • A TV, set-top box, cell phone, tablet, personal computer or other electronic device that performs at least one of the embodiments described, and that displays (e.g. using a monitor, screen, or other type of display) a resulting picture.
[0122] • A TV, set-top box, cell phone, tablet, personal computer or other electronic device that tunes (e.g. using a tuner) a channel to receive a signal including a video content, and performs at least one of the embodiments described.
[0123] • A TV, set-top box, cell phone, tablet, or other electronic device that receives (e.g. using an antenna) a signal over the air that includes a video content, and performs at least one of the embodiments described.
Claims
Claims1. A method comprising: obtaining input picture data; obtaining (502) a floating representation of the input picture data, the floating representation of the input picture data comprising a first number of exponent bits followed by a second number of mantissa bits; compressing the floating representation of the input picture data into a current index, the compressing of the floating representation of the input picture data comprising: compressing (503, 5034) the first number of exponent bits in a third number of compressed exponent bits, the third number being lower than the first number; compressing (503, 5035) the second number of mantissa bits in a fourth number of compressed mantissa bits, the fourth number being lower than the second number; and obtaining the current index from the compressed mantissa bits and the compressed exponent bits (503, 5036); and obtaining (504, 505) output picture data representing a result of a processing applied to the input picture data using a look-up table indexed by the current index.
2. The method of claim 1 wherein the look-up table is obtained by defining (401) a set of index of the look-up table; and for each index of the set: decompressing (404) the index into a decompressed float value, the decompressing comprising obtaining (4044) a first number of exponent bits from a third number of exponents bits comprised in the index, obtaining (4045) a second number of mantissa bits from a fourth number of mantissa bits comprised in the index and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the processing for the decompressed float value; and setting a look-up table value of the look-up table for the index to the output value.
3. The method of claim 1 or 2 wherein the obtaining of the output picture data representing the result of the processing applied to the input picture data comprises applying a linear interpolation between a look-up table value of the look-up table for the current index and a look-up table value of the look-up table for an index following the current index.
4. A method for determining a look-up table representing an image processing function comprising: defining (401) a set of index of the look-up table; and for each index of the set: decompressing (404) the index into a decompressed float value, the decompressing comprising obtaining (4044) a first number of exponent bits from a third number of exponents bits comprised in the index, the third number being lower than the first number, obtaining (4045) a second number of mantissa bits from a fourth number of mantissa bits comprised in the index, the fourth number being lower than the second number, and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the image processing function for the decompressed float value; and setting a look-up table value of the look-up table for the index to the output value.
5. A device comprising electronic circuitry configured for: obtaining input picture data; obtaining (502) a floating representation of the input picture data, the floating representation of the input picture data comprising a first number of exponent bits followed by a second number of mantissa bits; compressing the floating representation of the input picture data into a current index, the compressing of the floating representation of the input picture data comprising: compressing (503, 5034) the first number of exponent bits in a third number of compressed exponent bits, the third number being lower than the first number;compressing (503, 5035) the second number of mantissa bits in a fourth number of compressed mantissa bits, the fourth number being lower than the second number; and obtaining the current index from the compressed mantissa bits and the compressed exponent bits (503, 5036); and obtaining (504, 505) output picture data representing a result of a processing applied to the input picture data using a look-up table indexed by the current index.
6. The device of claim 5 wherein the look-up table is obtained by defining (401) a set of index of the look-up table; and for each index of the set: decompressing (404) the index into a decompressed float value, the decompressing comprising obtaining (4044) a first number of exponent bits from a third number of exponents bits comprised in the index, obtaining (4045) a second number of mantissa bits from a fourth number of mantissa bits comprised in the index and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the processing for the decompressed float value; and setting a look-up table value of the look-up table for the index to the output value.
7. The device of claim 5 or 6 wherein the obtaining of the output picture data representing the result of the processing applied to the input picture data comprises applying a linear interpolation between a look-up table value of the look-up table for the current index and a look-up table value of the look-up table for an index following the current index.
8. A device for determining a look-up table representing an image processing function comprising electronic circuitry configured for: defining (401) a set of index of the look-up table; and for each index of the set: decompressing (404) the index into a decompressed float value, the decompressing comprising obtaining (4044) a first number of exponent bitsfrom a third number of exponents bits comprised in the index, the third number being lower than the first number, obtaining (4045) a second number of mantissa bits from a fourth number of mantissa bits comprised in the index, the fourth number being lower than the second number, and computing the decompressed float value from the first number of exponent bits and the second number of mantissa bits; computing an output value of the image processing function for the decompressed float value; and setting a look-up table value of the look-up table for the index to the output value.
9. Non-transitory information storage medium storing program code instructions for implementing the method according to any previous claim from claim 1 to 4.
10. A computer program comprising program code instructions for implementing the method according to any previous claim from claim 1 to 4.
Citation Information
Patent Citations
Lossless exponent and lossy mantissa weight compression for training deep neural networks
US11615301B2
High dynamic range data format conversions for digital media
US20070258641A1
Conversion and compression of floating-point and integer data
US20130262539A1
Digital image processing chain and processing blocks and a display including the same
US20190027082A1
Ultrasound signal compression
US8157738B2