CHROMA ENHANCEMENT FOR SDR AND HDR DISPLAY-COMPATIBLE SIGNALS FOR SL-HDRx SYSTEM

The method of classifying pixel colors and encoding dominant luminance values and chrominance gains as metadata in SL-HDRx systems addresses the issue of uncontrolled color correction, improving color accuracy and preventing over-saturation.

JP2025118825APending Publication Date: 2025-08-13INTERDIGITALCE PATENT HLDG SAS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025079604
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-05-05
Filing Date
2025-05-12
Publication Date
2025-08-13

Smart Images

  • Figure 2025118825000001_ABST
    Figure 2025118825000001_ABST
Patent Text Reader

Abstract

To provide a method that allows better control of color correction.SOLUTION: A method includes obtaining (90) a current RGB image, classifying (92) colors of pixels of the current RGB image into a plurality of classes, determining (94) for each color class data representative of the color class including a dominant luminance value representative of the luminance at which colors in the class are dominant, determining (95), from the data representative of the color classes, a value representative of a chrominance gain representing a margin for increasing chrominance components of the color class, and encoding (96) the dominant luminance value and the gain value corresponding to each class as metadata representative of a saturation gain function in a bitstream, the function defining a color correction to be applied to a pixel as a function of the luminance of the pixel.SELECTED DRAWING: Figure 5
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] At least one of the present embodiments generally relates to the field of HDR video distribution using SL-HDRx systems (x=1, 2, or 3). [Background technology]

[0002] Recent advances in display technology are beginning to enable an extended dynamic range of color, luminance, and contrast in displayed images. The term image, as used herein, refers to image content, which may be, for example, video or a still picture or image.

[0003] High-dynamic-range video (HDR video) describes video with a larger dynamic range than standard-dynamic-range video (SDR video). HDR video encompasses capture, production, content / encoding, and display. HDR capture and display can have brighter whites and deeper blacks. To address this, HDR encoding standards allow for increased maximum luminance and use at least 10 bits of dynamic range (compared to 8 bits for non-professional SDR video and 10 bits for professional SDR video) to maintain accuracy over this extended range.

[0004] Although technically "HDR" strictly refers to the ratio between maximum and minimum luminance, the term "HDR video" is generally understood to also mean a wide color gamut.

[0005] Although several HDR display devices have emerged, as well as image cameras capable of capturing images with increased dynamic range, the amount of HDR content available remains very limited. A solution is needed to extend the dynamic range of existing content, thereby enabling it to be efficiently displayed on HDR display devices.

[0006] The standard SL-HDR1 (ETSI TS 103433-1 series, latest version is v1.3.1) achieves direct backward compatibility by using metadata that allows for the reconstruction of an HDR signal from an SDR video stream that can be delivered using SDR distribution networks and services already in place. SL-HDR1 uses a single-layer video stream to enable HDR rendering on HDR devices and SDR rendering on SDR devices.

[0007] The standard SL-HDR2 (ETSI TS 103433-2 series, latest version is v1.2.1) is adapted for HDR devices. The standard SL-HDR2 allows the transmission of ST-2084 (also known as PQ (Perceptule Quantizer) or HDR10) streams along with metadata. If the stream is received by a device that is only compatible with ST-2084 and not with metadata, the device will ignore the metadata and display the image without knowing all of its technical details (depending on the device model and its processing capabilities, color rendering and level detail may not take the original source into account). When a device that supports the ST-2084 format and metadata receives the stream, it will display an optimized image that best reflects the content creator's intentions.

[0008] The SL-HDR3 standard (ETSI TS 103433-3v1.1.1) allows the transmission of HLG (Hybrid Log-Gamma) streams along with metadata. The SL-HDR3 system includes an HDR / SDR reconstruction block based on the SL-HDR2 HDR / SDR reconstruction block, i.e., a cascade of an HLG to ST-2084 Opto-Electronic Transfer Function (OETF) converter and an SL-HDR2 HDR / SDR reconstruction block. The OETF represents the sensor action and converts from scene luminance to data.

[0009] In an SL-HDRx system, the chroma of SDR and HDR display-compatible signals can be adjusted due to color correction adjustment variables contained in the SL-HDRx metadata. Such color correction adjustment variable metadata defines a piecewise function known as an SGF (Saturation Gain Function) that modifies the default color correction function present in any SL-HDRx process. The color correction depends on the luminance (Y component of the image signal). That is, the color correction modifies the color of a pixel as a function of the luminance of that pixel (e.g., its U and V components).

[0010] Generally, SGF metadata defines up to six points with coordinates (sgf_x, sgf_y). sgf_x represents the luminance and sgf_y represents the color correction at this luminance. The sgf_x and sgf_y coordinates are, for example, values between "0" and "255" inclusive.

[0011] By default, the SGF implements a default color correction that is the same for each luminance value. This default color correction is generally empirically defined and results in a neutral SDR and HDR display-compatible signal.

[0012] The basic solution to increase the chroma of SDR and HDR display compatible signals is to increase the chroma globally by having a different color correction for each of the luminance values. This solution has some limitations. This means that colors are only controlled globally. Therefore, if some colors are already saturated enough, adding color correction to these colors will make them appear overly saturated. Applying uncontrolled color correction to colors, i.e., increasing the U and V values excessively, can cause the U and V values to go out of range, which can result in clipping of the U and V values and therefore reconstruction errors.

[0013] It would be desirable to overcome the above drawbacks.

[0014] It is particularly desirable to define a method that allows for better control of color correction in the SL-HDR1, SL-HDR2 and SL-HDR3 systems, as well as in any subsequent variants of the SL-HDRx system. Summary of the Invention

[0015] In a first aspect, one or more of the present embodiments provide a method, the method including: obtaining a current RGB image; analyzing chrominance components of the current RGB image, the analysis including, for each pixel of at least a subset of pixels of the current RGB image, deriving a luma component from the RGB components of the pixel; applying tone mapping to the derived luma component to obtain a tone-mapped luma component; deriving chrominance components from the RGB components of the pixel, and applying joint normalization and color correction to the chrominance components to obtain corrected normalized chrominance components; and combining the tone-mapped luma component and the corrected luma component. classifying colors of pixels of the current RGB image into a plurality of classes using the normalized chrominance components determined by the method; determining, for each color class, data representative of the color class including a dominant luminance value representative of the luminance at which colors in the class are dominant; determining from the data representative of the color classes a value representative of a chrominance gain representing a margin for increasing chrominance components in the color class; and encoding the dominant luminance value and the gain value corresponding to each class as metadata representative of a saturation gain function in the bitstream, the function defining a color correction to be applied to a pixel as a function of the luminance of the pixel.

[0016] In one embodiment, the current RGB image is included in a video sequence, and temporal filtering is applied to information representing chroma gains based on information representing chroma gains calculated for images of the video sequence preceding the current RGB image.

[0017] In one embodiment, the temporal filtering is reinitialized at the beginning of the video sequence or when a scene cut is identified in the video sequence.

[0018] In one embodiment, a color class is a color sector around a pure primary and / or secondary color in the chrominance plane.

[0019] In one embodiment, the combination of sectors together covers the chrominance plane.

[0020] In one embodiment, determining the data representative of the color class includes obtaining a histogram of pixels as a function of luminance values of the color class.

[0021] In one embodiment, only pixels corresponding to luminance values that fall within a predetermined range of values are used to obtain the histogram.

[0022] In one embodiment, the dominant luminance value corresponds to the luminance value in the histogram where the maximum number of pixels resides or the luminance value where the maximum chrominance energy resides, the chrominance energy is calculated for a bin of the histogram by multiplying the number of pixels corresponding to that bin by the luminance value where the maximum chrominance value or maximum average chrominance energy resides found in that bin, and the average chrominance energy is calculated for a bin of the histogram by multiplying the number of pixels corresponding to that bin by the maximum chrominance value found in that bin.

[0023] In a second aspect, one or more of the present embodiments provide a device comprising: means for obtaining a current RGB image; means for analyzing chrominance components of the current RGB image, the analyzing means including, for each pixel of at least a subset of pixels of the current RGB image, means for deriving a luma component from the RGB components of the pixel; means for applying tone mapping to the derived components to obtain a tone mapped luma component; means for deriving chrominance components from the RGB components of the pixel; means for applying joint normalization and color correction to the chrominance components to obtain corrected normalized chrominance components; and means for applying tone mapping to the derived luma component to obtain a tone mapped luma component. means for classifying colors of pixels of the current RGB image into a plurality of classes using the corrected luma component and the corrected normalized chrominance components; and means for determining, for each color class, data representative of the color class including a dominant luminance value representing the luminance at which colors in the class are dominant, and determining from the data representative of the color class a value representing a chrominance gain representing a margin for increasing chrominance components in the color class; and means for encoding the dominant luminance value and the gain value corresponding to each class as metadata representing a saturation gain function in a bitstream, the function defining a color correction to be applied to a pixel as a function of the luminance of the pixel.

[0024] In one embodiment, the current RGB image is included in a video sequence, and the device includes temporal filtering means applied to the information representing the chroma gains based on information representing chroma gains calculated for an image of the video sequence preceding the current RGB image.

[0025] In one embodiment, the temporal filtering is reinitialized at the beginning of the video sequence or when a scene cut is identified in the video sequence.

[0026] In one embodiment, a color class is a color sector around a pure primary and / or secondary color in the chrominance plane.

[0027] In one embodiment, the combination of sectors together covers the chrominance plane.

[0028] In one embodiment, determining the data representative of the color class includes obtaining a histogram of pixels as a function of luminance values of the color class.

[0029] In one embodiment, only pixels corresponding to luminance values that fall within a predetermined range of values are used to obtain the histogram.

[0030] In one embodiment, the dominant luminance value corresponds to the luminance value in the histogram where the maximum number of pixels resides or the luminance value where the maximum chrominance energy resides, the chrominance energy is calculated for a bin of the histogram by multiplying the number of pixels corresponding to that bin by the luminance value where the maximum chrominance value or maximum average chrominance energy resides found in that bin, and the average chrominance energy is calculated for a bin of the histogram by multiplying the number of pixels corresponding to that bin by the maximum chrominance value found in that bin.

[0031] In a third aspect, one or more of the present embodiments provides a signal produced by the method of the first aspect or by the device of the second aspect.

[0032] In a fourth aspect, one or more of the present embodiments provide a computer program comprising program code instructions for implementing a method according to the first aspect.

[0033] In a fifth embodiment, one or more of the present embodiments provide information storage means for storing program code instructions for implementing a method according to the first aspect. [Brief explanation of the drawings]

[0034] [Figure 1]An example of an SL-HDRx system is shown below. [Figure 2] 1 illustrates a schematic of the post-processing module of the SL-HDRx system. [Figure 3] 1 illustrates schematically an example of a hardware architecture of a processing module in which various aspects and embodiments may be implemented; [Figure 4] 1 illustrates a block diagram of an example of a first system in which various aspects and embodiments may be implemented. [Figure 5] FIG. 1 illustrates a block diagram of an example of a second system in which various aspects and embodiments may be implemented. [Figure 6] 1 shows a schematic diagram of a first example of a pretreatment process. [Figure 7] 1 shows a schematic diagram of a second example of a pretreatment process. [Figure 8] 10 shows a schematic diagram of an example of a reconstruction process for a post-processing process. [Figure 9] 1 illustrates a schematic diagram of a method for controlling color correction in an SL-HDRx system. [Figure 10] It represents the three primary (red, green, blue) and secondary (magenta, yellow, cyan) colors and the corresponding sector positions. [Figure 11] 1 shows a schematic diagram of an example of a time stabilization method. [Figure 12] 1 illustrates a schematic diagram of an example of an initialization stage of a time stabilization method. [Figure 13] 10 illustrates a schematic example of a filtered parameter calculation process for the time stabilization method. [Figure 14] 1 illustrates schematically an embodiment of a method for controlling color correction adapted to a SL-HDR2 system. [Figure 15] 1 shows details of a first method for controlling color correction adapted to an SL-HDR2 system. [Figure 16] 10 shows a second detail of a method for controlling color correction adapted to an SL-HDR2 system. DETAILED DESCRIPTION OF THE INVENTION

[0035] FIG. 1 illustrates an example of an SL-HDRx system. SL-HDRx (x=1, 2, or 3) includes a pre-processing module 10, an encoding module 12, and a post-processing module 14. The pre-processing module 10 is communicatively connected to the encoding module 12 via a communication link 11. In SL-HDR2 and SL-HDR3 systems, the pre-processing module 10 generates HDR content and dynamic metadata from original content, while in the SL-HDR1 system, the pre-processing module generates SDR content and dynamic metadata from the original. The pre-processing module 10 integrates a computational part that generates output HDR or SDR content and an analytical part that analyzes the content and generates dynamic metadata. The original content can be generated by an acquisition device such as a camera, a computer graphics system, or a combination of an acquisition device and a computer graphics system. The HDR or SDR content can include static metadata that describes the acquisition context of the HDR or SDR content, such as acquisition device (i.e., camera) parameters.

[0036] The pre-processing module 10 is supplied with the HDR content generated during a post-production process that is applied to the original HDR or SDR video to obtain the master video and static metadata. For example, the color grading process to introduce artistic effects into the master video; VFX compositing process to introduce visual effects into the master video; A tone mapping process that allows you to generate an SDR master video from HDR video; An inverse tone mapping process that allows you to generate an HDR master video from SDR video.

[0037] The pre-processing module 10 then generates content and dynamic metadata adapted for the SL-HDRx use case: in the SL-HDR1 system, the generated video is SDR video, in the SL-HDR2 system, the generated video is PQ HDR video, and in the SL-HDR3 system, the generated video is HLG HDR video.

[0038] An example of the pre-processing process implemented in the SL-HDR1 system is described below in connection with FIG.

[0039] The encoding module 12 is responsible for receiving the generated video and metadata from the pre-processing module 10, including both static metadata from post-production and dynamic metadata from SL-HDRx pre-processing, and encoding the generated video and metadata.

[0040] Encoding module 12 generates an encoded video stream from the generated video and metadata that conforms to, for example, the video compression standards HEVC (ISO / IEC 23008-2 - MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265) or AVC (ISO / IEC 14496-10 - MPEG-4 Part 10, Advanced Video Coding) or the under-developed standard named Versatile Video Coding (VVC). The metadata is carried by SEI messages, such as, for example, the HEVC Color Remapping Information (CRI) or Mastering Display Color Volume (MDCV) SEI messages.

[0041] In the following, we refer to the combination of the pre-processing module 10 and the encoding module 12 as the input module.

[0042] Once encoded, the resulting encoded video is sent to a post-processing module 14 using a communication link 13 .

[0043] FIG. 2 shows the post-processing module 14 in a schematic manner.

[0044] The post-processing module 14 comprises a decoder 140 adapted to decode the encoded master video and associated metadata.

[0045] In an SL-HDR1 system, the encoded generated video represents SDR video, and metadata is used to generate HDR video from the SDR video. Once the SDR video is decoded, it is sent to an SDR display device 18 using a communication link 17 in a post-processing device that does not integrate SL-HDR1. The SDR display device 18 then displays the decoded SDR video. In a post-processing device that integrates SL-HDR1, the post-processing module 14 includes a reconstruction module 141. The reconstruction module 141 receives the decoded SDR video from the decoder 140 and reconstructs HDR video from the decoded SDR video using the metadata. The reconstructed HDR video is then sent to an HDR display device 16, which displays it. In some cases, the display device 16 is not an HDR display device, but rather an SDR display device or an MDR (medium dynamic range) display device, which is intermediate between an SDR display device and an HDR display device. In these cases, the reconstruction module obtains information representing the display capabilities of MDR display device 16 and takes these capabilities into account during reconstruction to reconstruct video adapted for the MDR display device. Once reconstructed, the HDR (or SDR or MDR) video is transmitted to HDR (or SDR or MDR) display device 16 using communication link 15. HDR (or SDR or MDR) display device 16 then displays the reconstructed HDR (or SDR or MDR) video.

[0046] In an SL-HDR2 system, the encoded generated video represents PQ HDR video, and metadata is used to generate SDR (or MDR) video from the decoded PQ HDR video. Once decoded, the PQ HDR video is sent to HDR display device 18 using communication link 17 in a post-processing device that does not integrate SL-HDR2. HDR display device 18 then displays the decoded PQ HDR video. In a post-processing device that does not integrate SL-HDR2, reconstruction module 141 receives the decoded PQ HDR video from decoder 140, the metadata, and, in some cases, the display capabilities of display device 16, which may be an SDR display device, an MDR display device, or an HDR display device. From these data, the reconstruction module generates a video signal adapted to the capabilities (SDR, MDR, or HDR video) of display device 16. Once reconstructed, the SDR (or MDR, or HDR) video is sent to SDR (or MDR, or HDR) display device 16 using communication link 15. The SDR (or MDR or HDR) display device 16 then displays the reconstructed SDR (or MDR or HDR) video.

[0047] In an SL-HDR3 system, the encoded generated video represents HLG HDR video, and metadata is used to generate SDR (or MDR) video from the decoded HLG HDR video. The function of post-processing module 14 in an SL-HDR3 system is very similar to the function of post-processing module 14 in an SL-HDR2 system. The main difference lies in the reconstruction module 141. In fact, in that case, reconstruction module 141 comprises a cascade of an HLG to ST-2084 OETF converter and an SL-HDR2 reconstruction module, as described above.

[0048] FIG. 3 shows a schematic example of a hardware architecture of a processing module 40 included in the pre-processing module 10, the encoding module 12, the input module or the post-processing module 14, in which different aspects and embodiments can be implemented. The processing module 40 is connected by a communication bus 405 and includes a processor or central processing unit (CPU) 400, which may include, by way of non-limiting example, one or more microprocessors, general purpose computers, special purpose computers, and processors based on multi-core architectures; a random access memory (RAM) 401; a read only memory (ROM) 402; and a memory module (RAM) 403, which may include, by way of example only, an erasable programmable read-only memory (EEPROM), a read only memory (ROM), a programmable read-only memory (PROM), a random access memory (RAM), a dynamic random access memory (DRAM), a static random access memory (SRAM), flash, a magnetic disk drive, and / or an optical disk drive, or a secure digital (SD) card reader and / or a hard disk drive. The module 400 includes a storage device 403, which may include non-volatile and / or volatile memory, including, but not limited to, a storage media reader such as a hard disk drive (HDD) and / or a network-accessible storage device, and at least one communication interface 404 for exchanging data with other modules, devices, systems, or equipment. The communication interface 404 may include, but is not limited to, a transceiver configured to send and receive data over a communication channel 5. The communication interface 404 may include, but is not limited to, a modem or a network card.

[0049] The communication interface 404 allows the processing module 40 to, for example, receiving SDR or HDR content and outputting a master video when the processing module 40 is included in the pre-processing module 10; receiving the master video and outputting the encoded master video including the metadata when the processing module 40 is included in the encoding module 12; receiving SDR or HDR content and outputting an encoded master video including metadata when the processing module 40 is included in the input module; receiving the encoded master video including metadata and outputting SDR, MDR and / or HDR video when the processing module 40 is included in a post-processing module 40;

[0050] The processor 400 can execute instructions loaded into the RAM 301 from the ROM 402, an external memory (not shown), from a storage medium, or from a communication network. When the processing module 40 is powered on, the processor 400 can read instructions from the RAM 401 and execute them. These instructions form a computer program that causes the processor 400 to perform, for example, a pre-processing process, an encoding process, a decoding process, or a post-processing process.

[0051] All or part of the algorithms and steps of the process may be implemented in software form by execution of a set of instructions by a programmable machine such as a digital signal processor (DSP) or microcontroller, or in hardware form by a machine or dedicated component such as a field-programmable gate array (FPGA) or application-specific integrated circuit (ASIC).

[0052] FIG. 4 illustrates a block diagram of an example system A adapted to implement a pre-processing module 10, an encoding module 12, or an input module, and in which various aspects and embodiments may be implemented. System A may be embodied as a device including various components described below and configured to perform one or more of the aspects and embodiments described herein. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smartphones, tablet computers, connected home appliances, servers, and cameras. Elements of system A may be embodied, singly or in combination, in a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, system A includes a single processing module 40 that implements a pre-processing module, an encoding module, or both. In various embodiments, system A is communicatively coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports.

[0053] Input to processing module 40 may be provided through various input modules, as shown in block 52. Such input modules may include, but are not limited to, (i) a radio frequency (RF) module that receives, for example, a radio frequency (RF) signal transmitted over the air from a broadcast station, (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. 4, include composited video.

[0054] In various embodiments, the input modules of block 52 have associated respective input processing elements, as is known in the art. For example, the RF module may be associated with appropriate elements to (i) select a desired frequency (also referred to as selecting a signal or bandlimiting a signal to a frequency band), (ii) downconvert the selected signal, (iii) bandlimit again to a narrower frequency band to select a signal frequency band, which in particular embodiments may be referred to as a channel (for example), (iv) demodulate the downconverted and bandlimited signal, (v) perform error correction, and (vi) demultiplex to select a desired stream of data packets. The RF module of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a bandlimiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner that performs various of these functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency near baseband) or to baseband. In various embodiments, the order of the above-described (and other) elements is rearranged, some of these elements are removed, and / or other elements that perform similar or different functions are added. Adding elements may include inserting elements between existing elements, such as inserting amplifiers and analog-to-digital converters. In various embodiments, the RF module includes an antenna.

[0055] Additionally, the USB module and / or HDMI module may include respective interface processors for connecting system 3 to other electronic devices via USB and / or HDMI connections. It should be understood that various aspects of the input processing, e.g., Reed-Solomon error correction, may be implemented, for example, in a separate input processing IC or within processing module 40, as desired. Similarly, aspects of the USB or HDMI interface processing may be implemented, as desired, in a separate interface IC or within processing module 40. The demodulated, error corrected, and demultiplexed stream is provided to processing module 40.

[0056] The various elements of System A may be provided within a unitary housing, where the various elements may be interconnected and transmit data between them using any suitable connection arrangement, e.g., internal buses known in the art, including inter-IC (I2C) buses, wiring, and printed circuit boards. For example, in System A, processing module 40 is interconnected to the other elements of System A by bus 405.

[0057] The communication interface 404 of the processing module 40 enables the system A to communicate over a communication channel 5. The communication channel 5 may be implemented, for example, in a wired and / or wireless medium.

[0058] In various embodiments, data is streamed or otherwise provided to system A using a wireless network such as a Wi-Fi network, e.g., IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal in these embodiments is received via communication channel 5 and communication interface 404 adapted for Wi-Fi communication. Communication channel 5 in these embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, to enable streaming applications and other over-the-top communications. In still other embodiments, the RF connection of input block 52 is used to provide streaming data to system A. As noted above, various embodiments provide data in a non-streaming format, for example, when system A is a camera, smartphone, or tablet. Additionally, various embodiments use wireless networks other than Wi-Fi, such as cellular or Bluetooth networks.

[0059] System A can provide output signals to various output devices using communication channel 5 or bus 405. For example, when implementing pre-processing module 10, system A provides output signals to encoding module 12 using bus 405 or communication channel 5. When implementing encoding module 12 or an input module, system A provides output signals to post-processing module 14 using communication channel 5.

[0060] Various implementations include applying a preprocessing process and / or an encoding process. As used herein, a preprocessing process or encoding process can encompass, for example, all or part of a process performed on a received SDR or HDR image or video stream to generate a master video or encoded master video with metadata. In various embodiments related to an encoding process, such a process includes one or more of the processes typically performed by a video encoder, such as a JPEG decoder or H.264 / AVC (ISO / IEC14496-10-MPEG-4 Part 10, Advanced Video Coding), H.265 / HEVC (ISO / IEC23008-2-MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265), or H.266 / VVC (Versatile Video Coding), which are being developed by a joint collaborative team of experts from ITU-T and ISO / IEC known as the Joint Video Experts Team (JVET) encoder.

[0061] FIG. 5 illustrates a block diagram of an example system B adapted to implement post-processing module 14 and in which various aspects and embodiments are implemented. System B may be embodied as a device including various components described below and configured to perform one or more of the aspects and embodiments described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptop computers, smartphones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. Elements of system B, singly or in combination, may be embodied in a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, system B includes a processing module 40 that performs post-processing. In various embodiments, system B is communicatively coupled to one or more other systems or other electronic devices, for example, via a communication bus or through dedicated input and / or output ports.

[0062] Input to processing module 40 may be provided through various input modules, as shown in block 52. Such input modules may include, but are not limited to, (i) a radio frequency (RF) module that receives, for example, a radio frequency (RF) signal transmitted over the air from a broadcast station, (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. 5, include composited video.

[0063] In various embodiments, the input modules of block 52 have associated respective input processing elements, as is known in the art. For example, the RF module may be associated with appropriate elements to (i) select a desired frequency (also referred to as selecting a signal or bandlimiting a signal to a frequency band), (ii) downconvert the selected signal, (iii) bandlimit again to a narrower frequency band to select a signal frequency band, which in particular embodiments may be referred to as a channel (for example), (iv) demodulate the downconverted and bandlimited signal, (v) perform error correction, and (vi) demultiplex to select a desired stream of data packets. The RF module of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a bandlimiter, a channel selector, a filter, a downconverter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner that performs various of these functions, including downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency near baseband) or to baseband. In one set-top box embodiment, the RF module and its associated input processing elements receive RF signals transmitted over a wired (e.g., cable) medium and perform frequency selection by filtering, downconverting, and re-filtering to a desired frequency band. Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements that perform similar or different functions. Adding elements may include inserting elements between existing elements, such as inserting an amplifier and an analog-to-digital converter. In various embodiments, the RF module includes an antenna.

[0064] Additionally, the USB module and / or the HDMI module may include respective interface processors for connecting System B to other electronic devices via a USB connection and / or an HDMI connection. It should be understood that various aspects of the input processing, e.g., Reed-Solomon error correction, may be implemented, for example, in a separate input processing IC or within processing module 40, as desired. Similarly, aspects of the USB or HDMI interface processing may be implemented, as desired, in a separate interface IC or within processing module 40. The demodulated, error corrected, and demultiplexed stream is provided to processing module 40.

[0065] The various elements of System B may be provided within a unitary housing, where the various elements may be interconnected and transmit data between them using any suitable connection arrangement, e.g., internal buses known in the art, including an inter-IC (I2C) bus, wiring, and printed circuit boards. For example, in System B, processing module 40 is interconnected to the other elements of System B by bus 405.

[0066] The communication interface 404 of the processing module 40 enables the system B to communicate over a communication channel 5. The communication channel 5 may be implemented, for example, in a wired and / or wireless medium.

[0067] In various embodiments, data is streamed or otherwise provided to system B using a wireless network such as a Wi-Fi network, e.g., IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). The Wi-Fi signal in these embodiments is received via communication channel 5 and communication interface 404 adapted for Wi-Fi communication. Communication channel 5 in these embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, to enable streaming applications and other over-the-top communications. In yet other embodiments, the RF connection of input block 52 is used to provide streaming data to system B. As noted above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, such as a cellular network or a Bluetooth network.

[0068] System B can provide output signals to various output devices, including a display 5, speakers 6, and other peripheral devices 7. Display 5 in various embodiments includes, for example, one or more of a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. Display 5 can be, for example, display device 16 or 18 of FIG. 1 . Display 5 can be for a television, tablet, laptop, mobile phone, or other device. Display 5 can also be integrated with other components (e.g., as in a smartphone) or separate (e.g., an external monitor for a laptop). Display device 5 can be compatible with SDR, MDR, or HDR content. Other peripheral devices 7, in various example embodiments, include one or more of a standalone digital video disc (or digital versatile disc) (DVR, or digital versatile disc, as an abbreviation for both terms), a disc player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 7 that provide functionality based on the output of System B. For example, a disc player performs the function of playing the output of system B.

[0069] In various embodiments, control signals are communicated between system B and display 5, speakers 6, or other peripheral devices 7 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that allow control between devices with or without user intervention. Output devices can be communicatively coupled to system B via dedicated connections through respective interfaces 53, 54, and 55. Alternatively, output devices can be connected to system B using communication channel 5 via communication interface 404. Display 5 and speakers 6 can be integrated into a single unit with other components of system B within an electronic device such as a television. In various embodiments, display interface 5 includes a display driver, such as a timing controller (TCon) chip.

[0070] Alternatively, the display 5 and speakers 6 may be separate from one or more of the other components, for example, if the RF module of input 52 is part of a separate set-top box. In various embodiments in which the display 5 and speakers 6 are external components, the output signal may be provided via a dedicated output connection, including, for example, an HDMI port, a USB port, or a COMP output.

[0071] Various implementations include applying post-processing processes, including decoding processes. As used herein, a post-processing process can encompass all or part of the processes performed on the received encoded master video to generate, for example, an SDR, MDR, or HDR output suitable for display. In various embodiments, such processes include one or more of the processes typically performed by an image or video decoder, such as H.264 / AVC (ISO / IEC14496-10-MPEG-4 Part 10, Advanced Video Coding), H.265 / HEVC (ISO / IEC23008-2-MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265), or H.266 / VVC (Versatile Video Coding), which are being developed by a joint collaborative team of experts from ITU-T and ISO / IEC known as the Joint Video Experts Team (JVET) decoder.

[0072] Where a figure is presented as a flowchart, it should be understood that the figure also provides a block diagram of the corresponding apparatus. Similarly, where a figure is presented as a block diagram, it should be understood that the figure also provides a flowchart of the corresponding method / process.

[0073] Implementations and aspects described herein may be implemented in, for example, a method or process, an apparatus, a software program, a data stream, or a signal. Even if discussed only in the context of a single implementation (e.g., discussed only as a method), the implementation of the discussed feature may also be implemented in other forms (e.g., an apparatus or a program). An apparatus may be implemented in, for example, appropriate hardware, software, and firmware. A method may be implemented in, for example, a processor, where a processor refers to a general processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include, for example, communication devices such as computers, mobile phones, handheld / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.

[0074] References to "one embodiment" or "embodiment" or "one implementation" or "implementation," as well as other variations thereof, mean that a particular feature, structure, characteristic, etc. described in connection with an embodiment is included in at least one embodiment. Thus, appearances of the phrases "in one embodiment" or "in an embodiment" or "in one implementation" or "in an implementation" appearing in various places throughout this specification, as well as any other variations thereof, do not necessarily all refer to the same embodiment.

[0075] Additionally, the application may refer to "determining" various information. Determining information may include, for example, one or more of estimating information, calculating information, predicting information, retrieving information from memory, or retrieving information from, for example, another device, module, or user.

[0076] Additionally, the application may refer to "accessing" various information. Accessing information may include, for example, one or more of receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.

[0077] Additionally, the application may refer to "receiving" various information. Receiving, like "accessing," is intended to be a broad term. Receiving information may include, for example, one or more of accessing information or retrieving information (e.g., from a memory). Furthermore, "receiving" generally involves in some way, for example, storing information, processing information, transmitting information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information.

[0078] The use of any of " / ", "and / or", "at least one of", "one or more", e.g., "A / B", "A and / or B", "at least one of A and B", "one or more of A and B" should be understood to be intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of both alternatives (A and B). As a further example, "A, B, and / or C" and "at least one of A, B, and C", "one or more of A, B, and C" are intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), or the selection of only the first and third listed alternatives (A and C), or the selection of only the second and third listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be expanded to include as many items as listed, as would be apparent to one of ordinary skill in this and related arts.

[0079] As will be apparent to one skilled in the art, implementations or embodiments can produce various signals formatted to carry information that can be stored or transmitted, for example. 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 convey an SDR or HDR image or video sequence of a described embodiment. Such a signal can be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting can include, for example, encoding the SDR or HDR image or video sequence into an encoded stream and modulating a carrier with the encoded stream. The information carried by the signal 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.

[0080] 6 shows a schematic diagram of an example of the computational part of the pre-processing process. A first example of the pre-processing process is adapted to an SL-HDR1 system in non-constant luminance (NCL) mode. In this example, the pre-processing module 10 receives HDR content and generates a master video representing the SDR content and metadata. The pre-processing process is performed by the processing module 40 for each pixel of each image of the HDR content. In the example of FIG. 6, the pixel includes three color components corresponding to the primary colors red (R), green (G), and blue (B), i.e., the pixel is an RGB signal.

[0081] In step 601, processing module 40 derives the luminance (luma) component L' from the RGB signal as follows: L'=L' / L'.

[0082]

number

[0083] In step 602, processing module 40 applies tone mapping to the luma component L′ to obtain a tone mapped value Y pre0 Get. Y pre0 =LUT TM (L') (Equation 2) In the formula, Y pre0 ∈[0;1023] and LUT TM () is a lookup table representing the tone mapping function.

[0084] In step 603, processing module 40 applies gamma correction to the RGB signals as follows.

[0085]

number

[0086] In step 604, processing module 40 derives the chrominance (chroma) component (chroma) from the gamma-corrected RGB signal as follows:

[0087]

number

[0088] In step 605, processing module 40 performs joint normalization and color correction on chroma component U as follows: pre0 and V pre0 The corrected chrominance component U pre1 and V pre1 Get.

[0089]

number

[0090]

number

[0091] In step 606, processing module 40 calculates the tone-mapped luma value Y pre0 Apply adjustments to the tone-mapped luma value Y pre1 Get. Y pre1 =Y pre0 -max(0, aU pre1 +bV pre1 ) (Equation 6)

[0092] In step 607, the processing module 40 calculates the luma and chroma values Y pre1 , U pre1 and V pre1 Step 607 converts the value midsample, for example equal to "512", to the chrominance component U pre1 and V pre1 , optionally downsampling the chroma components to compress the signal by reducing the number of chroma samples, and optionally converting the luma and chroma components Y and UV from full-range values (Y and UV components range from 0 to 1023 when coded in 10 bits) to limited-range values (Y components range from 64 to 940, and UV components range from 64 to 960) to represent a pixel of the SDR signal.sdr , U sdr , V sdr The purpose of step 607 is, for example, to convert a full range YUV444 signal to a limited range YUV420 signal.

[0093] 7 shows a schematic diagram of a second example of the computational part of the pre-processing process, adapted for an SL-HDR2 system. In this example, a pre-processing module 10 receives HDR content and generates a master video representing the HDRPQ signal and metadata. The pre-processing process is performed by a processing module 40 for each pixel of each image of the input HDR content. In the example of FIG. 7, the pixels are again RGB signals.

[0094] In step 701, the processing module 40 extracts the luma and chroma components Y of the PQ signal from the RGB signal. pre0 , U pre0 , V pre0 Get.

[0095]

number

[0096] In step 702, the processing module 40 calculates the luma and chroma values Y pre0 , U pre0 and V pre0 Step 702 converts the value midsample, for example equal to "512", into U pre0 and V pre0, optionally compressing the signal by reducing the number of chroma samples, and optionally converting the luma and chrominance components Y and UV from full-range values (Y and UV components range from 0 to 1023 when encoded in 10 bits) to limited-range values (Y components range from 64 to 940, and UV components range from 64 to 960) to represent the pixels of the HDR signal. hdr , U hdr , V hdr The purpose of step 702 is, for example, to convert a full range YUV444 signal to a limited range YUV420 signal.

[0097] FIG. 8 schematically illustrates an example of a reconstruction process for the post-processing process. The process of FIG. 8 is executed by the processing module 40 when the processing module 40 implements the post-processing module 14, more specifically, the reconstruction module 141. The reconstruction process is applied to each pixel of the decoded master video generated by the decoder 140. The adaptation of the reconstruction process to SL-HDR1 and SL-HDR2 is described below. Since the SL-HDR3 specification is based on the SL-HDR2 specification, all SL-HDR2 specification matters also apply to the following SL-HDR3. The reconstruction process of FIG. 8 follows, for example, the pre-processing process of FIG. 6 or FIG. 7. Therefore, the signal output by the pre-processing process is the input signal of the reconstruction process. Therefore, the reconstruction process receives a limited-range YUV420 signal.

[0098] In step 801, processing module 40 converts the received YUV420 signal into a full range YUV444 signal (the reverse process of steps 607 and 702).

[0099] For the SL-HDR1 system, the YUV420 signal is an SDR pixel, which, when converted, is divided into luma and chroma components. y , SDR cb , SDR cr is expressed by

[0100] In the case of the SL-HDR2 system, the YUV420 signal is an HDR pixel, which, when converted, is divided into a luma component and a chroma component HDR y , HDR cb , HDR cr is expressed by

[0101] After the transformation, the processing module 40 adjusts the positions of the chroma components to form the central chroma component U post1 and V post1 For the SL-HDR1 system, the alignment is performed as follows:

[0102]

number

[0103] For the SL-HDR2 system, the alignment is performed as follows:

[0104]

number

[0105] In step 802, the processing module 40 applies a readjustment to the luma component. For the SL-HDR1 system, the readjustment operation is as follows: Y post1 =SDR y +max(0, mu0×U post1 +mu1×V post1 ) where the parameters mu0 and mu1 are defined in section 7.2.4 of the document ETSITS103433-1v1.3.1, and max(x,y) takes the maximum value of x and y.

[0106] For the SL-HDR2 system, the realignment calculation is simpler. Y post1 =HDR y

[0107] In SL-HDR1 and SL-HDR2, the luma value Y post1 is clipped to [0;1023], and Y post2 is obtained.

[0108] In step 803, the processing module 40 constructs a color correction lookup table lutCC[Y].

[0109] For SL-HDR1, the composition of the color correction lookup table is specified in section 7.2.3.2 of document ETSITS103433-1v1.3.1.

[0110]

number

[0111] For SL-HDR2, the construction of the color correction lookup table is specified in section 7.2.3.2 of document ETSITS103433-2v1.2.1.

[0112]

number

[0113] In both SL-HDR1 and SL-HDR2, g(Y n ) is defined as follows: g(Y n )=f sgf (Y n) × modFactor + (1 - modFactor) ÷ R sgf Saturation gain function f sgf (Y n ) is derived from the piecewise linear pivot points defined by the saturated gain function metadata sgf_x and sgf_y as detailed in section 7.3 of document ETSITS103433-1v1.3.1.

[0114] In step 804, processing module 40 calculates the central chroma component U using the configured color correction lookup table lutCC[y]. post1 and V post1 Apply inverse color correction to

[0115] For SL-HDR1, the inverse color correction is described in section 7.2.4 of the document ETSITS103433-1v1.3.1.

[0116]

number

[0117] For SL-HDR2, the inverse color correction is described in section 7.2.4 of the document ETSITS103433-2v1.2.1.

[0118]

number

[0119] In step 805, the processing module calculates the intermediate values S0, U post3 and V post3 In the case of SL-HDR1, the variable T is calculated as follows: T=k o ×U post2 ×V post2 +k1×U post2 ×U post2 +k2×V post2 ×V post2 k1 and k2 are described in section 7.2.4 of document ETSITS103433-1v1.2.1. If T≦1,

[0120]

number

[0121] Otherwise, if T>1, then S0=0, U post3 and V post3 is derived as follows:

[0122]

number

[0123] This last formula is for SL-HDR1 "CL" mode only. For SL-HDR1 "NCL mode" and SL-HDR2, k o =k1=k2=0, S0=1 and U post3 =U post2 and V post3 =V post2 is.

[0124] Y post2 Y pre0 Corresponding to U post1 and V post1 are U pred1 and V pred1 It can be noted that corresponds to

[0125] In step 806, the processing module calculates the intermediate RGB reconstruction values R2, G2 and B2. This is done in two steps.

[0126] For SL-HDR1, the calculation of R1, G1 and B1 is described in section 7.2.4 of document ETSITS103433-1v1.3.1.

[0127]

number

[0128] For SL-HDR2, the calculation of R1, G1 and B1 is described in section 7.2.4 of document ETSITS103433-2v1.2.1.

[0129]

number

[0130] In the second step, the intermediates R2, G2 and B2 are calculated as described in section 7.2.4 of ETSITS103433-1v1.3.1 for SL-HDR1 and ETSITS103433-2v1.2.1 for SL-HDR2.

[0131]

number

[0132] The LutMapY calculation is described in section 7.2.3.1 of ETSITS103433-1v1.3.1 for SL-HDR1 and in ETSITS103433-2v1.2.1 for SL-HDR2.

[0133] For SL-HDR1, LutMapY is the SDRSDR of the SL-HDR1 post processor. yIt acts as an inverse tone mapping lookup table that converts the input luma signal into an HDR output signal or an SDR or MDR output signal, if appropriate for the display.

[0134] For SL-HDR2, LutMapY is the HDRHDR of the SL-HDR2 post processor. y It acts as a tone mapping lookup table that converts the input luma signal into an HDR output signal or an SDR or MDR output signal, if appropriate for the display.

[0135] In step 807, the output HDRRGB reconstruction signal HDR R , HDR G and HDR B Calculate.

[0136] For SL-HDR1 the calculation is described in section 7.2.4 of document ETSITS103433-1v1.3.1.

[0137]

number

[0138] For SL-HDR2 the calculations are described in section 7.2.4 of document ETSITS103433-2v1.2.1.

[0139]

number

[0140] Therefore, the color correction in the SL-HDRx system is performed by a color correction lookup table lutCC[Y post2 In the case of SL-HDR1, the sgf_x and sgf_y metadata are used to control the U pre1 and V pre1 control the generation of U sdr , Vsdr Controls SDR output. In the case of SL-HDR2, the sgf_x and sgf_y metadata are used in the U post2 and V post3 , and therefore controls the chroma output of the SL-HDR2 reconstruction process.

[0141] 9 illustrates a schematic diagram of a method for controlling color correction in an SL-HDRx system. The method described in connection with FIG. 9 is executed by the processing module 40 when the processing module 40 implements the pre-processing module 10 or the input module. The method is applied to each image of an image or video. The method of FIG. 9 is described in the context of an SL-HDR1 system in NCL mode. The processing module 40 receives HDR content.

[0142] In step 90, processing module 40 obtains the current input HDR image.

[0143] In step 91, processing module 40 analyzes the chroma of the current image. To do so, processing module 40 applies the process of FIG. 6 up to step 605, and calculates for each pixel of the current image the three color components Y pre0 , U pre1 and V pre1 Get.

[0144] In step 92, the processing module 40 calculates the three components Y pre0 , U pre1 and V pre1 In one embodiment of step 92, six classes are used: Three classes corresponding to the three primary colors red, green and blue, • Three classes are used corresponding to the three secondary colors magenta, cyan and yellow.

[0145] Each color can be represented in many different color spaces. In one embodiment, RGB and its polar coordinates Hue(H) and Chroma(C) are used. Hue(H) and Chroma(C) are calculated as follows:

[0146]

number

[0147] For SL-HDR1, the calculation is as follows:

[0148]

number

[0149] The following formulas in polar coordinates define the direction for each of the three primary and secondary colors, where "c" in [0...1] is the normalized value of each of the RGB values (c=1 corresponds to a primary or secondary color, c=0 is the achromatic origin of the UV plane):

[0150] The red color (R=1, G=0, B=0) is defined as follows: ●U R =au×c ●V R = αv × c

[0151]

number

[0152]

number

[0153]

number

[0154]

number

[0155] Green (R=0, G=1, B=0) is defined as follows: ●U G =bu×c ●V G =bv×c

[0156]

number

[0157] Blue (R=0, G=0, B=1) is defined as follows: ●U B =cu×c ●V B =cv×c

[0158]

number

[0159] The magenta color (R=1, G=0, B=1) is defined as follows: ●U_M=(au+cu)×c ●V_M=(av+cv)×c

[0160]

number

[0161] For cyan color (R=0, G=1, B=1), it is defined as follows: ●U_C=(bu+cu)×c ●V_C=(bv+cv)×c

[0162]

number

[0163] Yellow (R=1, G=1, B=0) is defined as follows: ●U Y =(au+bu)×c ●V Y =(av+bv)×c

[0164]

number

[0165] FIG. 10 shows the positions of the primary (red, green, blue) and secondary (magenta, yellow, cyan) colors calculated using the above formulas in the UV plane.

[0166] U pre1 and V pre1 A given pixel, represented by, has its hue H value equal to the hue value H G , H R , H B , H M , H C , H Y If it is equal to one of the following, it belongs to either the primary or secondary color line.

[0167] However, in images, colors are rarely "pure" primary or secondary colors. Therefore, instead of defining six classes, each corresponding to one of the primary or secondary colors, six sectors are defined, each centered on one of the six primary and secondary colors. For each sector, a deviation angle delta is defined, and the corresponding sector is defined by four points. ●Up=Cmax * cos(H+delta) ●Vp=C max * sin(H+delta) ●Um=C max * cos(H-delta) ●Vm=C max * sin(H-delta) During the ceremony, Regarding red

[0168]

number

[0169]

number

[0170]

number

[0171]

number

[0172]

number

[0173]

number

[0174] U pre1 and V pre1 To check whether a given pixel, denoted as , belongs to a sector, calculate the product vector of the normalized value of the pixel with the two limits of this sector as follows:

[0175]

number

[0176] (PV p ≧0) and (PV m ≦0), then this pixel belongs to this sector.

[0177] In one embodiment, the value delta may be fixed and the same for all sectors, while in other embodiments the value delta may vary from sector to sector.

[0178] In one embodiment, all sectors are contiguous, meaning that any pixel in the frame belongs to one of the sectors, while in other embodiments, at least some sectors are not contiguous, meaning that some pixels may not belong to any of the sectors.

[0179] 10 shows six sectors corresponding to the three primary and three secondary colors in the UV plane. The sectors are bounded by dashed lines 1000 to 1005. For example, the sector corresponding to red is bounded by dashed lines 1000 and 1001.

[0180] In step 93, processing module 40 generates a statistical representation for each sector (i.e., each class). In one embodiment, the statistical representation is: ●Y in SL-HDR1 case pre1 a histogram histo representing the number of pixels found in a sector for each luma value, For each luma value lum in the histogram, a vector frame_chr_max[lum] representing the maximum chroma value of all pixels in the sector that have luma value lum; For each luma value lum in the histogram, it contains a value frame_chr_av[lum] that represents the average chroma value of all pixels with luma value lum in the sector.

[0181] It can be noted that the chroma value of the current pixel, chr_curr, is calculated as follows:

[0182]

number

[0183] In one embodiment, the bin numbers of the histogram histo and the entry numbers of the two vectors are set to 64. In another embodiment, the bin numbers and the entry numbers of the two vectors are set to 256, which corresponds to the sgf_x value range defined in the SL-HDRx standard for saturation gain function metadata. In another embodiment, the bin numbers of the histogram and the entry numbers of the two vectors can be lower or higher than 64.

[0184] In step 94, processing module 40 determines, for each sector (i.e., for each color class), data representative of that sector. In one embodiment, the data representative of the sector is a dominant luminance value corresponding to the dominant luminance of the color in the current sector. The dominant luminance value of a sector is determined using at least one of the histogram histo corresponding to the sector and the vectors frame_chr_max[lum] and frame_chr_av[lum] corresponding to the sector.

[0185] In a first embodiment of step 94, the dominant luminance value for a sector is determined by scanning the histogram histo for that sector and determining the bin with the highest number of pixels (i.e., the luminance values corresponding to the highest number of pixels).

[0186] Step 94 makes it possible to obtain a vector frame_idx_max_histo that makes it possible to obtain, for each primary and secondary color (i.e. for each sector), a vector containing the dominant chrominance value. For each sector, the chroma of the color is finally corrected with its dominant luminance value using the SGF function.

[0187] In step 95, processing module 40 determines a chroma gain (i.e., a scaling value or color correction) to apply to the chroma values for each color sector. To do so, processing module 40 determines the maximum allowable chroma value for the color corresponding to the dominant luma value for each sector. This chroma gain represents a margin for increasing the chroma of that color and indirectly the maximum allowable chroma value for each sector and each luminance value.

[0188] As mentioned above, YUV values can be derived from RGB values using matrix operations.

[0189]

number

[0190] For three primary and three secondaries, when dealing with normalized RGB values (values in [0;1]), we have: For the primary color red (component R), the processing module 40 calculates the following values: ●R=s and G=B=0, ○Y=al×s and Y Rmax =al (Y in the BT2020 color gamut) Rmax =0.2627, ○U=au×s=au / al×Y, ○V=av×s=av / al×Y,

[0191]

number

[0192] Processing module 40 then calculates an envelope of allowed chroma values for red, which in one embodiment is made up of two straight lines. ●From the first point AR with coordinates (Y=0, C=0) to the coordinates (Y=Y Rmax , C=C Rmax ) an increasing straight line in YC (luma / chroma) space up to the second point BR. • A decreasing straight line in YC (luma / chroma) space from the second point to the third point CR with coordinates (Y=1, C=0). For the primary color green (component G), the processing module 40 calculates the following values: ●G=s and R=B=0, ○Y=bl×s and Y Gmax =bl (Y in BT2020 color gamut) Gmax =0.678, ○U=bu×s=bu / bl×Y, ○V=bv×s=bv / bl×Y,

[0193]

number

[0194] Processing module 40 then calculates the envelope of allowed chroma values for green, which in one embodiment is made up of two straight lines. ●From the first point AG with coordinates (Y=0, C=0) to the coordinates (Y=Y Gmax , C=C Gmax ) the second point BR of the YC (luma / chroma) space is an increasing straight line. ●A decreasing straight line in YC (luma / chroma) space from the second point to the third point CG with coordinates (Y=1, C=0). For the primary color blue (component B), the processing module 40 calculates the following values: ●B=s and R=G=0, ○Y=cl×s and Y Bmax =cl(Y in BT.2020 color gamut Bmax =0.0593, ○U=cu×s=cu / cl×Y, ○V=cv×s=cv / cl×Y,

[0195]

number

[0196] Processing module 40 then calculates an envelope of allowed chroma values for blue, which in one embodiment is made up of two straight lines. ●From the first point AB with coordinates (Y=0, C=0) to the coordinates (Y=Y Bmax , C=C Bmax ) an increasing straight line in YC (luma / chroma) space up to the second point BB. ● A decreasing straight line in YC (luma / chroma) space from the second point to the third point CB with coordinates (Y=1, C=0). For the secondary color magenta, the processing module 40 calculates the following values: ●R=B=s and G=0, ○Y=al×s+cl×C=(au+cu)×R and Y Mmax = al+cl (Y in BT.2020 color gamut) Mmax =0.322), ○U=au×s+cu×C=(au+cu)×s and U=((au+cu)) / ((al+cl)×Y), ○V=av×s+cv×C=(av+cv)×s and V=((av+cv)) / ((al+cl)×Y),

[0197]

number

[0198] Processing module 40 then calculates an envelope of allowed chroma values for the color magenta. In one embodiment, this envelope is made up of two straight lines. ●From the first point AM with coordinates (Y=0, C=0) to the coordinates (Y=Y Mmax , C=C Mmax ) an increasing straight line in YC (luma / chroma) space up to the second point BM. ● A decreasing straight line in YC (luma / chroma) space from the second point to the third point CB with coordinates (Y=1, C=0). For the secondary color cyan, the processing module 40 calculates the following values: ●G=B=s and R=0, ○Y=bl×s+cl×C=(bl+cl)×s and Y Cmax =bl+cl (Y in BT.2020 color gamut) Cmax =0.7373), ○U=bu×s+cu×C=(bu+cu)×s and U=((bu+cu)) / ((bl+cl)×Y) ○V=bv×s+cv×C=(bv+cv)×s and V=((bv+cv)) / ((bl+cl)×Y)

[0199]

number

[0200] Processing module 40 then calculates an envelope of allowed chroma values for the color cyan. In one embodiment, this envelope is made up of two straight lines. ●From the first point AC with coordinates (Y=0, C=0) to the coordinates (Y=Y Cmax , C=C Cmax ) an increasing straight line in YC (luma / chroma) space up to the second point BC. ● A decreasing straight line in YC (luma / chroma) space from the second point to the third point CC with coordinates (Y=1, C=0). For the secondary color yellow, the processing module 40 calculates the following values: ○G=R=s and B=0, ■Y=al×s+bl×C=(al+bl)×s and Y Ymax = al+bl (Y in BT2020 color gamut) Ymax =0.9407), ■U=au×s+bu×C=(au+bu)×s and U=((au+bu)) / ((al+bl)×Y), ■V=av×s+bv×C=(av+bv)×s and V=((av+bv)) / ((al+bl)×Y),

[0201]

number

[0202] Processing module 40 then calculates an envelope of allowed chroma values for the color cyan. In one embodiment, this envelope is made up of two straight lines. ○From the first point AY with coordinates (Y=0, C=0) to the coordinates (Y=Y Ymax , C=C Ymax ) an increasing straight line in YC (luma / chroma) space up to the second point BY. ○ A decreasing straight line in YC (luma / chroma) space from the second point to the third point CY with coordinates (Y=1, C=0).

[0203] In one embodiment, processing module 40 represents the six calculated envelopes by six vectors, chr_envelop[S], one for each sector (i.e., one for each class), where S represents the sector index. For each sector S, vector chr_envelop[S] contains information representing the maximum allowable chroma value for each bin of histogram histo[S].

[0204] In a sector, the vector chr_envelop[S] is used by the processing module 40 to determine the maximum allowable scaling value (ie, maximum allowable gain) scale_max[S] as follows: cur_idx=frame_idx_max_histo[S], scale_max[S]=chr_envelop[S][cur_idx] / frame_chr_max[S][cur_idx].

[0205] The maximum allowed scaling value scale_max[S] provides the multiplication factor for chroma at the selected luminance in each sector S. The maximum allowed scaling value scale_max[S] makes it possible to obtain, in a controlled and independent way, images with more chroma for colors that need to have more chroma.

[0206] In step 96, the processing module encodes information representing chroma gain as metadata in the bitstream. The metadata is SL-HDR1 compliant. In one embodiment, the information representing chroma gain is a vector frame_idx_max_histo and a vector of the maximum allowed scaling value scale_max. This information is encoded in the form of an SGF function in the SL-HDR1 metadata.

[0207] In embodiments where the number of bins in the histogram histo[S] is 256, the frame_idx_max_histo range directly matches the sgf_x value range defined in the SL-HDRx standard for saturation gain function metadata, and no adaptation is required, i.e., the value of frame_idx_max_histo can be directly copied into one of the sgf_x values of the SL-HDRx metadata. In embodiments where the number of bins is different from 256, for example 64, processing module 40 rescales the vector frame_idx_max_histo to 256 before encoding it with the sgf_x that defines the SGF function.

[0208] Processing module 40 then assigns one of the six available sgf_x values to the bin number corresponding to index cur_idx=frame_idx_max_histo[S] and modifies the corresponding default sgf_y value (typically equal to 118 for the SL-HDR1NCL case) using the maximum allowed scaling value scale_max[S]. In an embodiment with 256 bins and a number of bins equal to six sectors, i.e., three primary and three secondary colors, processing module 40 assigns one of the six available sgf_x values to the bin number corresponding to index cur_idx=frame_idx_max_histo[S] and modifies the corresponding default sgf_y value using the maximum allowed scaling value scale_max[S].

[0209] For each sector S, sgf_x[S]=frame_idx_max_histo[S] and sgf_y[S]=scale_max[S].

[0210] Processing module 40 then reorders the sgf_x and sgf_y values such that the sgf_x[i] values monotonically increase as i increases. Reordering the sgf_x and sgf_y values allows for the definition of SGF functions that are transmitted to post-processing module 14 in the form of metadata.

[0211] In one embodiment of step 91, the analysis is performed on a subsampled version of the current image.

[0212] In other embodiments of step 92, any other classes representing different hues or colors, or a different number of classes, may be used.

[0213] In one embodiment of step 93, since it is difficult to distinguish colors for dark values (low luminance values), dark values are not considered during construction of the histogram, e.g., luminance values below a first luminance threshold are not considered.

[0214] In one embodiment of step 93, since it is difficult to distinguish colors for brightness values (high luminance values), brightness values are not considered during the construction of the histogram, for example, luminance values higher than a first luminance threshold are not considered.

[0215] In an embodiment of step 93, chroma values (chr_curr) below the chroma threshold are not considered in constructing the histogram.

[0216] In a second embodiment of step 94, processing module 40 calculates, for each histogram histo (i.e., for each sector), a value max_energy_chroma that represents the maximum chrominance energy in the sector. To do so, for each bin of each histogram histo, processing module 40 calculates a value energy_chroma[lum] that represents the chrominance energy by multiplying the number of pixels in that bin by the maximum chrominance value frame_chr_max[lum] found in that bin in the corresponding sector. Then, for each sector, processing module determines the maximum chrominance energy max_energy_chroma by determining the maximum value of energy_chroma[lum]. The dominant luma value is the luma value that corresponds to the maximum chrominance energy max_energy_chroma. One advantage of the second embodiment is that it correlates the maximum chrominance value with the luminance value (or bin number) of the bin, better indicating which are the most attractive areas in the image.

[0217] In a third embodiment of step 94, the processing module 40 calculates for each histogram histo (i.e., for each sector) a value max_av_energy_chroma that represents the maximum average chroma energy in the sector. To do so, the processing module 40 replaces the maximum chroma value frame_chr_max[lum] with the average chroma value frame_chr_av[lum] in the process of the second embodiment. The dominant luma value is the luma value that corresponds to the maximum average chroma energy max_av_energy_chroma.

[0218] In the first, second and third embodiment variations of step 94, only bins containing at least a minimum number of pixels are considered during the scan.

[0219] In a first, second, and third embodiment variant of step 94, only bins corresponding to values of the envelope of allowed chroma values that are higher than the minimum chroma value Chr_trigger are considered during the scan. This embodiment avoids taking into account colors that are not very saturated. In a first, second, and third embodiment variant of step 94, each histogram histo is pre-processed to smooth out any eventual noise or remove excessively small peaks before searching for the dominant luma value.

[0220] In an embodiment of step 95, the maximum allowed scaling value, scale_max[S], can be limited to a maximum value, absolute_scale_max[S], to avoid over-saturation of colors. In one embodiment, the maximum value, absolute_scale_max[S], is the same for all color sectors or different for each sector. The maximum allowed scaling value, scale_max[S], is then calculated as follows: scale_max[S]=min(scale_max[S], absolute_scale_max[S]).

[0221] In an embodiment of step 95, the maximum allowed scaling value scale_max[S] has a minimum value that avoids desaturation of colors even if analysis indicates that the envelope of allowed chroma values is lower than the current maximum chroma chr_max[S].

[0222] In an embodiment of step 95, when determining the maximum allowable scaling value scale_max[S] for sector S, the same calculation can be performed for other color sectors at index cur_idx=frame_idx_max_histo[S]. If at least one sector S' different from the current color sector has a maximum allowable scaling value scale_max[S'] lower than the maximum allowable scaling value scale_max[S], processing module 40 limits the maximum allowable scaling value scale_max[S] to the lower maximum allowable scaling value scale_max[S'] found in another sector.

[0223] In an embodiment of step 95, instead of limiting the maximum allowable scaling value scale_max[S] of the current sector S to the smallest of the maximum allowable scaling values scale_max[S'] found in the other sectors S' at index cur_idx=frame_idx_max_histo[S], a further analysis of the maximum U and V values that avoid clipping of the color sector at index cur_idx=frame_idx_max_histo[S] can be performed. This analysis provides the value scale_max_UV that is used to limit scale_max[S] as follows: scale_max[S]=min(scale_max[S], scale_max_UV).

[0224] If temporal stabilization (i.e., temporal filtering) is not applied, the vectors frame_idx_max_histo[S] and scale_max[S] may fluctuate. These fluctuating vectors may cause the pre-processor 10 to generate unstable and unacceptable sequences of SDR pictures.

[0225] In optional step 97, the processing module applies a time stabilization method.

[0226] FIG. 11 details an example embodiment of the optional step 97 of time stabilization.

[0227] In step 971, processing module 40 determines whether the current image of the HDR content corresponds to a scene cut. To do so, for example, processing module 40 compares the current image with an image preceding the current image in the HDR content. For example, if a difference calculated as the sum of absolute differences between co-located pixels of the two images exceeds a threshold, processing module 40 determines that the current image corresponds to a scene cut. If so, step 971 is followed by step 973. If not, step 971 is followed by step 972.

[0228] In step 973, the processing module 40 initializes a set of parameter sets for the temporal stabilization method. In other words, the temporal stabilization is reinitialized during step 973.

[0229] In step 972, the processing module 40 calculates the filtered vectors frame_idx_max_histo and scale_max.

[0230] In one embodiment, during step 971, instead of searching for a scene cut, the processing module determines whether the current image is the first image of the HDR content.

[0231] FIG. 12 shows an example implementation of step 973 in more detail.

[0232] In the example of FIG. 12 , for each parameter frame_idx_max_histo[S] (respectively, scale_max[S]), a configurable circular buffer frame_idx_max_histo_buf[S] (respectively, scale_max[S]) is used to calculate a filtered version of that parameter. In one embodiment, each buffer has the same size n, which represents the number of consecutive frames over which the filtered version of the corresponding parameter is considered. In one embodiment, the buffer size n=10. An invalid value frame_idx_max_histo_invalid (respectively, scale_max_invalid) is defined for each parameter frame_idx_max_histo[S] (respectively, scale_max[S]). When this invalid value is generated by the method for determining color correction of FIG. 9 , this indicates that no valid histogram index has been calculated for the current color sector of the current frame, i.e., there is no need to scale the chroma of the current color sector for the current frame. For example, if a value of "64" is defined for luma, then frame_idx_max_histo[S] is between "0" and "63." Scale_max[S] can also be defined, for example, to be less than or equal to "5." For red (S=red), if processing module 40 using the method for determining color correction of FIG. 9 determines that red can be saturated, then frame_idx_max_histo[red] is in the range of [0, 63] and scale_max[red] is in the range of [0, 5]. However, when using the method of FIG. 9, processing module 40 has determined that the color should not be saturated, and then invalid values are assigned to frame_idx_histo[red] (e.g., "64") and scale_max[red] (e.g., "10"). Thus, using the method of FIG. 9, processing module 40, as a function of the values of frame_idx_max_histo[red] and scale_max[red], recognizes whether these values are valid and, therefore, whether these values need to be stabilized.

[0233] As a result, there is no need to stabilize the current parameters in time when an invalid value is detected. Each value in each buffer is initialized as described below.

[0234] As noted above, in the process of FIG. 12, all buffers are considered to have the same size n.

[0235] In step 973A, the processing module 40 initializes a variable S representing a sector (ie, representing a color) to zero.

[0236] In step 973B, the processing module 40 determines whether the variable S is lower than the number of sectors NumOfSectors, for example, NumOfSectors=6.

[0237] If S=NumOfSectors, the processing module 40 stops the initialization process 973.

[0238] Otherwise, the processing module 40 initializes the variable i to zero in step 973D.

[0239] In step 973E, the processing module 40 determines whether n is less than the buffer size n.

[0240] If i=n, the processing module 40 increments the variable S by one unit in step 973F.

[0241] Otherwise, the processing module 40 determines whether the parameter frame_idx_max_histo[S] is different from the invalid value frame_idx_max_histo_invalid. If frame_idx_max_histo[S]=frame_idx_max_histo_invalid, the processing module 40 sets the value of frame_idx_max_histo_buf[S][i] to frame_idx_max_invalid in step 973H. Otherwise, the processing module 40 sets the value of frame_idx_max_histo_buf[S][i] to frame_idx_max_histo[S] in step 973I.

[0242] Steps 973H and 973I are followed by step 973J, in which the processing module 40 compares the parameter scale_max[S] with the invalid value scale_max_invalid. If scale_max[S]=scale_max_invalid, the processing module 40 sets the value scale_max_buf[S][i] to scale_max_invalid. Otherwise, the processing module 40 sets the value scale_max_buf[S][i] to scale_max[S] in step 973L.

[0243] In step 973M, the processing module 40 adds the value frame_idx_max_histo_buf[S][i]×W_i to the accumulated value cum_frame_idx_max_histo[S]. The accumulated value cum_frame_idx_max_histo[S] represents all values of the corresponding buffer. W_i is a weighting coefficient. In one embodiment, W_i=1. In another embodiment, W_i is different for each value of i. In that case, the accumulated value cum_frame_idx_max_histo[S] is a weighted sum of frame_idx_max_histo_buf[S][i], so that more weight is given to certain positions in the buffer.

[0244] In step 973N, the processing module 40 adds the value scale_max_buf[S][i]×W_i to the cumulative value cum_scale_max[S], which represents all values in the corresponding buffer.

[0245] In step 973O, the processing module 40 initializes an index filterIndex that represents the position of the current image in the buffer.

[0246] In one embodiment, if all buffers have the same size, filterIndex=0.

[0247] In another embodiment, each buffer associated with the parameters of the vectors frame_idx_max_histo and scale_max has a different size, in which case there is an index filterIndex for each buffer.

[0248] FIG. 13 details an example embodiment of step 972.

[0249] The purpose of the example embodiment of step 972 is to filter the parameters of the vectors frame_idx_max_histo and scale_max. The method of Figure 13 is performed by the processing module 40. These parameters are filtered as follows: For each parameter, the cumulative value is updated by doing the following: o Subtract the oldest parameter value that corresponds to the parameter value found in the current index. The subtraction can be a simple or weighted subtraction of the oldest parameter value in combination with any of the subsequent parameter values. Adding the most recent parameter value just received. The addition can be a simple addition or a weighted addition of the most recent parameter value in combination with any of the preceding parameter values. - Updating the buffer at the current index with the most recent parameters just received. Calculating the filtered value for each parameter. The filtered value is The corresponding cumulative value is simply divided by the size of the corresponding buffer, It may be the corresponding cumulative value divided by a number corresponding to the sum of the weighted sum of the combination of the most recent parameter value and any of the preceding parameter values considered when calculating the cumulative value.

[0250] In this step, processing module 40 checks whether the buffer has already been initialized or has not been previously in the current cut. If so, processing module 40 updates the current buffer value if the current value is a valid value. If not, processing module 40 initializes the buffer and cumulative value as described in step 973.

[0251] An example of the embodiment of Figure 13 applies when the buffer size n is the same for all parameters, the current index is i, the accumulated value is a simple sum of all parameters, and the filtered value is a simple division by the buffer size n. In that case, all filtered values are calculated as follows:

[0252] In step 972A, processing module 40 initializes a variable S that represents a sector (ie, represents a color).

[0253] In step 972B, the processing module 40 determines whether the variable S is lower than the number of sectors NumOfSectors.

[0254] If not, processing module 40 stops the process of FIG. 13 at step 972C.

[0255] If not, the processing module 40 determines whether the parameter frame_idx_max_histo[S] is different from frame_idx_max_histo_invalid. If frame_idx_max_histo[S]=frame_idx_max_histo_invalid, step 972D is followed by step 972P, during which the processing module 40 reinitializes all buffer values frame_idx_max_histo_buf[S][x] (x ranging from zero to the buffer size n) to frame_idx_max_histo_invalid. After this reinitialization, during step 972P the processing module 40 increments the variable S by one unit. Additionally, during step 972P, step 972P is followed by step 972B.

[0256] If frame_idx_max_histo[S]≠frame_idx__max_histo_invalid, step 972D is followed by step 972E. During a step 972E, the processing module 40 determines whether the value of the buffer frame_idx_max_histo_buf[S][i] is different from frame_idx_max_invalid.

[0257] If frame_idx_max_histo_buf[S][i]=frame_idx_max_histo_invalid, step 972E is followed by step 972F, in which all buffer values frame_idx_max_histo_buf[S][x] (x ranging from zero to the buffer size n) are initialized to frame_idx_max_histo[S]. Additionally, during step 972F, processing module 40 assigns the value frame_idx_max_histo[S] to the filtered dominant chrominance value filtered_frame_idx_max_histo[S].

[0258] If frame_idx_max_histo_buf[S][i]≠frame_idx_max_histo_invalid, step 972E is followed by step 972G, in which the processing module 40 updates the cumulative value cum_frame_idx_max_histo[S] as follows: cum_frame_idx_max_histo[S]=cum_frame_idx_max_histo[S]. cum_frame_idx_max_histo[S]=cum_frame_idx_max_histo[S]-frame_idx_max_histo_buf[S][i]+frame_idx_max_histo[S].

[0259] In step 972H, the processing module 40 updates the buffer value frame_idx_max_histo_buf[S][i] as follows: frame_idx_max_histo_buf[S][i]=frame_idx_max_histo[S].

[0260] In step 972I, the processing module 40 obtains the filtered dominant color difference value filtered_frame_idx_max_histo[S]. filtered_frame_idx_max_histo[S]=cum_frame_idx_max_histo[S] / n.

[0261] Step 972I is followed by step 972J.

[0262] During a step 972J, the processing module 40 determines whether the maximum allowed scaling value scale_max[S] is different from scale_max_invalid.

[0263] If scale_max[S]=scale_max_invalid, the processing module 40 reinitializes all buffer values scale_max_buf[S] to scale_max_invalid. After this reinitialization, the processing module 40 increments the variable S by one unit during step 972P.

[0264] If not, the processing module 40 determines during step 972K whether the buffer value scale_max_buf[S][i] is different from scale_max_invalid. If scale_max_buf[S][i]=scale_max_invalid, then in step 972L the processing module sets the buffer value scale_max_buf[S][x] to scale_max[S] and sets the filtered maximum allowed scaling value filtered_scale_max[S] to scale_max[S]. Step 972L is followed by step 972P.

[0265] Otherwise, in step 972M, the processing module updates the cumulative value cum_scale_max[S] as follows: cum_scale_max[S]=cum_scale_max[S]-scale_max_buf[S][i]+scale_max[S].

[0266] In step 972N, the processing module 40 updates the buffer value scale_max_buf[S][i] as follows: scale_max_buf[S][i]=scale_max[S].

[0267] In step 972O, processing module 40 obtains the filtered maximum allowable scaling value as follows: filtered_scale_max[S]=cum_scale_max_histo[S] / n.

[0268] Step 972O is followed by step 972P.

[0269] Then, for each sector S, the filtered values replace the unfiltered values in the definition of the SGF function, which is sent in the form of metadata to the post-processing module. sgf_x[S]=filtered_frame_idx_max_histo[S] and sgf_y[S]=filtered_scale_max[S].

[0270] In the case of SL-HDR1, all processing aimed at determining the SGF function begins with the output of the SL-HDR1 pre-processing module, i.e., Y representing the SDR signal. pre0 , U pre1 and V pre1 Based on intermediate signals, in other words, all calculations are done in the SDR domain.

[0271] FIG. 14 illustrates schematically an embodiment of a method for controlling color correction adapted to an SL-HDR2 system.

[0272] The method for controlling color correction described in connection with Figure 9 addresses the SL-HDR1 system. In the SL-HDR2 pre-processor, no SDR signal generation is performed. In step 140 of the embodiment adapted to the SL-HDR2 system of Figure 14, an analysis of the chroma of the current image is performed using the variable HDR R , HDR G and HDR B , U post2 , V post2 8 is obtained, steps 801 to 807 of the reconstruction process described in relation to FIG. 8 are performed in the SL-HDR2 post-processor (i.e., performed by processing module 40) by emulating the SL-HDR2 post-processor. The reconstruction process is performed by taking into account that the connected display is an SDR display. Therefore, the reconstructed signal is actually an HDR signal. R , HDR G and HDR B Generate a signal.

[0273] The SL-HDR2 post-processing module (more precisely, the reconstruction module) takes an HDR signal and generates an SDR or MDR or HDR signal. The method described in connection with FIG. 9 allows for determining the SGF point coordinates sgf_x and sgf_y in the SDR domain. However, in an actual SL-HDR2 post-processor, these points are applied to the input HDR signal. Therefore, in the SL-HDR2 case, all calculated SGF points are mapped to the HDR domain, which means estimating the SDR / HDR conversion.

[0274] In step 141, the processing module calculates the SDR / HDR conversion. This is done in two steps by using two values Lhisto_cur_sdr and Lhisto_cur_hdr and three vectors Lhisto_match_sdr_hdr_min, Lhisto_match_sdr_hdr_max and Lhisto_match_sdr_hdr. In the first step, for each pixel of the current image of HDR content, Lhisto_match_sdr_hdr_min and Lhisto_match_sdr_hdr_max are calculated as follows:

[0275]

number

[0276] In step 1410, the processing module 40 initializes the variable Last_correct_value to zero.

[0277] In step 1411, the processing module 40 initializes the variable lum to zero.

[0278] In step 1412, the processing module 40 determines whether the variable lum is less than NumBins.

[0279] If lum=NumBins, the processing module stops the process of Figure 15. In step 1404, the processing module 40 calculates the value Lhisto_match_sdr_hdr[lum] as follows: Lhisto_match_sdr_hdr[lum] =Lhisto_match_sdr_hdr_min[lum]+Lhisto_match_sdr_hdr_max[lum] / 2.

[0280] In step 1415, the processing module 40 determines whether the value Lhisto_match_sdr_hdr[lum] is equal to NumBins.

[0281] If so, the processing module 40 calculates in step 1417 the value Lhisto_match_sdr_hdr[lum] as follows:

[0282] Lhisto_match_sdr_hdr[lum]=last_correct_value.

[0283] If not, then in step 1416 the processing module calculates the value last_correct_value as follows:

[0284] last_correct_value=Lhisto_match_sdr_hdr[lum].

[0285] Steps 1416 and 1417 are followed by step 1418, in which the value lum is incremented by one unit.

[0286] In step 142, the processing module 40 applies steps 90 to 96 to determine the vectors frame_idx_max_histo and scale_max.

[0287] In step 143, the processing module 40 maps the parameters of the vector frame_idx_max_histo to the HDR domain, as shown in FIG.

[0288] In step 1430, the processing module 40 initializes a variable S to zero.

[0289] In step 1431, the processing module 40 determines whether the variable S is less than NumOfSectors.

[0290] If S=NumOfSectors, the processing module 40 stops the process of FIG.

[0291] If not, the processing module determines whether the parameter frame_idx_max_histo[S] is lower than NumBins.

[0292] If frame_idx_max_histo[S]=NumBins, the processing module 40 increments the variable S by one unit in step 1436. Step 1436 is followed by step 1431.

[0293] Otherwise, in step 1434, the processing module 40 calculates the variable Lhisto_sdr as follows: Lhisto_sdr=(Lhisto_sdr) / ... Lhisto_sdr=frame_idx_max_histo[S].

[0294] In step 1435, the processing module 40 calculates the parameter frame_idx_max_histo[S} as follows: frame_idx_max_histo[S]=Lhisto_match_sdr_hdr[Lhisto_sdr].

[0295] Step 1435 is followed by step 1436 .

[0296] 14, after step 143, processing module 40 performs step 144 in which processing module 40 calculates SGF points that represent the SGF function. For each sector S, sgf_x[S]=frame_idx_max_histo[S] and sgf_y_tmp[S]=scale_max[S].

[0297] Processing module 40 then reorders the sgf_x and sgf_y_tmp values such that the sgf_x[i] values monotonically increase as i increases. Reordering the sgf_x and sgf_y_tmp values allows for the definition of SGF functions that are transmitted to post-processing module 14 in the form of metadata.

[0298] In step 142, all calculations are performed to generate an SGF function that improves saturation in the SL-HDR1 case, according to steps 90-96. Finally, because the SGF function works differently between SL-HDR1 and SL-HDR12, all sgf_y_tmp(Y) values calculated in step 96 in the SL-HDR1 case need to be adapted to the SL-HDR2 case.

[0299] In SL-HDR1, the SGF is applied on the pre-processor side in step 605 of FIG. 6 as follows:

[0300]

number

[0301]

number

[0302] At a given luminance Y, sgf(Y) is increased by an increment value incr.

[0303]

number

[0304] Therefore, increasing sgf(Y) by incr will pre1 (V pre1 ) is modified as follows:

[0305]

number

[0306] Any positive value of incr is U pre1 (V pre1 ), thus increasing the saturation of the pixel.

[0307] In SL-HDR2, the SGF is applied to the post-processor side by lutCC[Y] in step 804 of Figure 8. Increasing sgf(Y) by incr results in U post2 (V post2 ) is modified as follows:

[0308]

number

[0309] Any positive value of incr is post2 (V post2 ) and thus reduce the saturation of the corresponding pixel.

[0310] Therefore, in SL-HDR2, the increment incr_slhdr2 is calculated in function of the corresponding SL-HDR1 increment incr_slhdr1, so that:

[0311]

number

[0312]

number

Claims

1. receiving high dynamic range (HDR) image data associated with a current frame; converting the HDR image data to standard dynamic range (SDR) image data to obtain a plurality of baseline pixel values; determining a plurality of chroma saturation gain values to apply to the baseline pixel values for a plurality of color categories; generating a saturation gain function that maps luminance to chroma gain for the plurality of color categories based on the plurality of chroma saturation gain values; encoding the saturated gain function as metadata associated with the SDR image data; A method comprising:

2. obtaining a chrominance plane representing a color gamut; The method of claim 1 , further comprising: dividing the chrominance plane into a plurality of chrominance sectors, each of the plurality of chrominance sectors corresponding to one of the plurality of color categories.

3. For a pixel in the set of pixels of the current frame, deriving a luma component from the HDR image data; applying tone mapping to the luma component to obtain a tone-mapped luma component; deriving chrominance components from the HDR image data; applying joint normalization and color correction to the chrominance components to obtain corrected and normalized chrominance components; classifying the pixel into the color category using the tone-mapped luma component together with the corrected and normalized chrominance components; The method of claim 1 further comprising:

4. For each of the plurality of color categories, 10. The method of claim 1, further comprising determining a maximum allowable chroma value, the maximum allowable chroma value being a value of chroma that prevents clipping in the representation of the SDR image data.

5. The method of claim 4 , further comprising encoding as part of the metadata a dominant luminance value for each of the plurality of color categories and the maximum allowable chroma value determined for each of the color categories.

6. 2. The method of claim 1, wherein the SDR image data and the metadata are included within video data such that an SDR display renders the SDR image data and such that an HDR display reconstructs HDR content by applying the metadata to the SDR image data.

7. 10. The method of claim 1, wherein the HDR image data is maintained as a base layer and the metadata is included with the HDR image data in video data configured for a decoder that converts an HDR base layer to SDR for an SDR display.

8. 2. The method of claim 1, wherein the current frame is included in a video sequence, and temporal filtering is applied to information representing chroma saturation gain values based on information representing chroma saturation gain values calculated for at least one frame of the video sequence preceding the current frame.

9. 6. The method of claim 5, wherein temporal filtering is applied to information representing the chroma saturation gain values, and wherein the temporal filtering is reinitialized at the start of a video sequence or when a scene cut is identified within the video sequence.

10. For the plurality of color categories, obtaining a histogram of luminance values of pixels of the current frame associated with the color categories; As the dominant luminance value, the luminance value corresponding to the largest number of pixels in the histogram; a luminance value corresponding to the maximum chrominance energy for a bin of the histogram, the chrominance energy for said bin being the product of the number of pixels in said bin and the maximum chrominance value found in said bin; or a luminance value corresponding to the maximum average chrominance energy for a bin of the histogram, the average chrominance energy for the bin being the product of the number of pixels in the bin and the maximum chrominance value found in the bin; and selecting one of The method of claim 1 further comprising:

11. 1. A device for video encoding, comprising: receiving high dynamic range (HDR) image data associated with the current frame; converting the HDR image data to standard dynamic range (SDR) image data to obtain a plurality of baseline pixel values; determining a plurality of chroma saturation gain values to apply to the baseline pixel values for a plurality of color categories; generating a saturation gain function that maps luminance to chroma gain for the plurality of color categories based on the plurality of chroma saturation gain values; encoding the saturated gain function as metadata associated with the SDR image data; 1. A device comprising a processor configured to:

12. the processor: Obtain a chrominance plane that represents the color gamut, dividing the chrominance plane into a plurality of chrominance sectors, each of the plurality of chrominance sectors corresponding to one of the plurality of color categories; The device of claim 11 further configured to:

13. the processor: For a pixel in the set of pixels of the current frame, deriving a luma component from the HDR image data; applying tone mapping to the luma component to obtain a tone-mapped luma component; deriving chrominance components from the HDR image data; applying joint normalization and color correction to the chrominance components to obtain corrected and normalized chrominance components; classifying the pixel into the color category using the tone-mapped luma component together with the corrected and normalized chrominance components; 12. The device of claim 11 further configured to:

14. the processor: For each of the plurality of color categories, 12. The device of claim 11, further configured to determine a maximum allowable chroma value, the maximum allowable chroma value being a value of chroma that prevents clipping in the representation of the SDR image data.

15. the processor:

15. The device of claim 14, further configured to encode as part of the metadata a dominant luminance value for each of the plurality of color categories and the maximum allowable chroma value determined for each of the color categories.

16. 12. The device of claim 11, wherein the SDR image data and the metadata are included within video data such that an SDR display renders the SDR image data and such that an HDR display reconstructs HDR content by applying the metadata to the SDR image data.

17. 12. The device of claim 11, wherein the HDR image data is maintained as a base layer and the metadata is included with the HDR image data in video data configured for a decoder that converts an HDR base layer to SDR for an SDR display.

18. 12. The device of claim 11, wherein the current frame is included in a video sequence, and temporal filtering is applied to information representing chroma saturation gain values based on information representing chroma saturation gain values calculated for at least one frame of the video sequence preceding the current frame.

19. 16. The device of claim 15, wherein temporal filtering is applied to information representing the chroma saturation gain values, and wherein the temporal filtering is reinitialized at the start of a video sequence or when a scene cut is identified within the video sequence.

20. the processor: For the plurality of color categories, obtaining a histogram of luminance values of pixels of the current frame associated with the color categories; As the dominant luminance value, the luminance value corresponding to the largest number of pixels in the histogram; a luminance value corresponding to the maximum chrominance energy for a bin of the histogram, the chrominance energy for said bin being the product of the number of pixels in said bin and the maximum chrominance value found in said bin; or a luminance value corresponding to the maximum average chrominance energy for a bin of the histogram, the average chrominance energy for the bin being the product of the number of pixels in the bin and the maximum chrominance value found in the bin; Select one of the The device of claim 11 further configured to: