Chroma Increase for SDR and HDR Display Compatible Signals for SL-HDRx Systems
The method improves the dynamic range and color accuracy of existing content by analyzing and correcting chrominance components and encoding metadata for saturation gain functions, addressing the limitations of current HDR content and display technologies.
Patent Information
- Application Number
- JP2022566081
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-05-05
- Filing Date
- 2021-04-28
- Publication Date
- 2025-05-22
- Estimated Expiration
- 2041-04-28
AI Technical Summary
Existing HDR content is limited, and current technologies struggle to efficiently enhance the dynamic range of existing content for display on HDR devices, leading to inadequate color correction and potential reconstruction errors.
A method that involves obtaining a current RGB image, analyzing its chrominance components, applying tone mapping and joint normalization and color correction to derive corrected normalized chrominance components, and encoding metadata representative of a saturation gain function to control color correction based on luminance values.
This approach enables better control of color correction, preventing over-saturation and reconstruction errors, thereby enhancing the dynamic range and color accuracy of existing content for HDR display.
Smart Images

Figure 0007681621000054 
Figure 0007681621000055 
Figure 0007681621000056
Abstract
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) refers to video with a larger dynamic range than standard-dynamic-range video (SDR video). HDR video includes 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" refers strictly to the ratio of maximum to minimum luminance, the term "HDR video" is commonly 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 enhanced 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 such content 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 reconstructing HDR signals from SDR video streams that can be delivered using SDR distribution networks and services already in place. SL-HDR1 allows HDR rendering on HDR devices and SDR rendering on SDR devices using a single layer video stream.
[0007] The standard SL-HDR2 (ETSI TS 103433-2 series, the latest version is v1.2.1) is adapted for HDR devices. The standard SL-HDR2 allows the transmission of ST-2084 (also called PQ (Perceptule Quantizer) or HDR10) streams together 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, the color rendering and level detail may not take into account the original source). When a device that supports the ST-2084 format and metadata receives the stream, it will display an optimized image that best takes into account the intent of the content creator.
[0008] The standard SL-HDR3 (ETSI TS 103433-3v1.1.1) allows the transmission of HLG (Hybrid Log-Gamma) streams together 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 action of the sensor and converts from the scene luminance to data.
[0009] In a 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 piecewise functions known as SGFs (Saturation Gain Functions) that modify the default color correction functions present in any SL-HDRx process. The color correction depends on the luminance (Y component of the image signal), i.e., 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] Typically, 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" included.
[0011] By default, the SGF implements a default color correction that is the same for each luminance value, which 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. ● That is, the color is controlled only globally. Therefore, when some colors are already sufficiently saturated, adding color correction to these colors may make them appear overly saturated. ● Adding uncontrolled color correction to the color, that is, excessively increasing the U value and the V value, may cause the U value and the V value to go out of range, whereby the U value and the V value are clipped, and thus, a reconstruction error may occur.
[0013] It is desirable to overcome the above drawbacks.
[0014] In the SL-HDR1, SL-HDR2, and SL-HDR3 systems, and also in any subsequent variations of the SL-HDRx system, it is particularly desirable to define a method that enables better control of color correction. 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 a corrected normalized chrominance component; and applying a joint normalization and color correction to the tone mapped luma component and the corrected luma component to obtain a corrected normalized chrominance component. classifying colors of pixels of the current RGB image into a plurality of classes using the normalized chrominance components determined ...
[0016] In one embodiment, the current RGB image is included in a video sequence, and the temporal filtering is applied to information representing chroma gains based on information representing chroma gains calculated for an image of the video sequence preceding the current RGB image.
[0017] In one embodiment, the temporal filtering is reinitialized at the beginning of a 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 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 chroma 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 chroma 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 analysing chrominance components of the current RGB image, the means for analyzing 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 normalisation and colour correction to the chrominance components to obtain a corrected normalised chrominance component; and means for applying a tone mapping to the derived components. and means for classifying colors of pixels of the current RGB image into a plurality of classes using the corrected luma components 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 representative of the luminance at which colors in that class dominate, and determining from the data representative of the color classes a value representative of a chrominance gain representing a margin for increasing chrominance components in that color class, and means for encoding the dominant luminance value and the gain representative 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.
[0024] In one embodiment, the current RGB image is included in a video sequence and the device includes a 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 a 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 a chrominance plan.
[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 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 chroma 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 chroma value found in that bin.
[0031] In a third aspect, one or more of the present embodiments provides a signal generated 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 the method according to the first aspect. [Brief description of the drawings]
[0034] [Figure 1]An example of the SL-HDRx system is shown. [Diagram 2] 1 illustrates a schematic of the post-processing module of the SL-HDRx system. [Diagram 3] 1 illustrates generally an example of a hardware architecture of a processing module in which various aspects and embodiments can 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. [Diagram 5] 1 illustrates a block diagram of an example of a second system in which various aspects and embodiments may be implemented. [Figure 6] 1 illustrates a schematic diagram of a first example of a pretreatment process. [Figure 7] 2 illustrates a schematic diagram of a second example of a pretreatment process. [Figure 8] 13 illustrates a schematic diagram of an example of a reconstruction process for a post-processing process. [Figure 9] 1 illustrates a schematic of a method for controlling color correction in a 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] 1 illustrates a schematic diagram of an example of a filtered parameter calculation process for the time stabilization method; [Figure 14] 1 illustrates a schematic representation of 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 a SL-HDR2 system. [Figure 16] 4 shows a second detail of a method for controlling color correction adapted to a SL-HDR2 system. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0035] Fig. 1 shows an example of a SL-HDRx system. SL-HDRx (x=1, 2 or 3) comprises 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 by 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 SL-HDR1 system, the pre-processing module generates SDR content and dynamic metadata from original. The pre-processing module 10 integrates a computation part that generates the output HDR or SDR content and an analysis 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 acquired by 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, for example, 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 for introducing visual effects into the master video; A tone mapping process that allows you to generate an SDR master video from an HDR video; An inverse tone mapping process that allows for the generation of an HDR master video from an SDR video.
[0037] The pre-processing module 10 then generates content and dynamic metadata adapted for the SL-HDRx use case. In a SL-HDR1 system, the generated video is an SDR video. In a SL-HDR2 system, the generated video is a PQ HDR video. In a SL-HDR3 system, the generated video is an HLG HDR video.
[0038] An example of the pre-processing process implemented in the SL-HDR1 system is described below in relation to 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, for example, in accordance with 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 a standard under development named Versatile Video Coding (VVC). The metadata is carried by SEI messages, for example, HEVC Color Remapping Information (CRI) or Mastering Display Colour 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 an input module.
[0042] Once the generated video is encoded, it is transmitted to the post - processing module 14 using the communication link 13.
[0043] Figure 2 schematically shows the post - processing module 14.
[0044] The post - processing module 14 includes a decoder 140 adapted to decode the encoded master video and the associated metadata.
[0045] In the SL - HDR1 system, the encoded generated video represents SDR video, and the metadata is used to generate HDR video from the SDR video. When the SDR video is decoded, it is transmitted to the SDR display device 18 using the communication link 17 in a post - processing device that does not integrate SL - HDR1. Then, the SDR display device 18 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 uses the metadata to reconstruct HDR video from the decoded SDR video. Then, the reconstructed HDR video is transmitted to the HDR display device 16 that displays it. In some cases, the display device 16 is an MDR (Media Dynamic Range) display device that is not an HDR display device but 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 the MDR display device 16 and, taking these capabilities into account during reconstruction, reconstructs a video adapted to the MDR display device. Once the HDR (or SDR or MDR) video is reconstructed, it is transmitted to the HDR (or SDR or MDR) display device 16 using the communication link 15. Then, the HDR (or SDR or MDR) display device 16 displays the reconstructed HDR (or SDR or MDR) video.
[0046] In the SL-HDR2 system, the encoded generated video represents PQ HDR video, and the metadata is used to generate SDR (or MDR) video from the decoded PQ HDR video. When the PQ HDR video is decoded, it is transmitted to the HDR display device 18 using the communication link 17 in a post-processing device that does not integrate SL-HDR2. Then, the HDR display device 18 displays the decoded PQ HDR video. In a post-processing device that does not integrate SL-HDR2, the reconstruction module 141 receives the decoded PQ HDR video from the decoder 140, the metadata, and, optionally, the display function of the display device 16, which can be an SDR display device or an MDR display device or an HDR display device. From these data, the reconstruction module generates a video signal adapted to the capabilities (SDR or MDR or HDR video) of the display device 16. When the SDR (or MDR or HDR) video is reconstructed, it is transmitted to the SDR (or MDR or HDR) display device 16 using the communication link 15. Then, the SDR (or MDR or HDR) display device 16 displays the reconstructed SDR (or MDR or HDR) video.
[0047] In the SL-HDR3 system, the encoded generated video represents HLG HDR video, and the metadata is used to generate SDR (or MDR) video from the decoded HLG HDR video. The function of the post-processing module 14 in the SL-HDR3 system is very similar to the function of the post-processing module 14 in the SL-HDR2 system. The main difference lies in the reconstruction module 141. In fact, in that case, the reconstruction module 141 comprises a cascade of an HLG to ST-2084 OETF converter and the SL-HDR2 reconstruction module, as described above.
[0048] FIG. 3 illustrates generally an example of a hardware architecture for a processing module 40 included in the pre-processing module 10, the encoding module 12, the input module or the post-processing module 14 and capable of implementing different aspects and embodiments. 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 device such as an electrically 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), a 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 system 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 transmit 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 is, 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 a master video and outputting an encoded master video including 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 enabling the processing module 40 to output SDR, MDR and / or HDR video when included in the post-processing module 40.
[0050] The processor 400 can execute instructions loaded into the RAM 301 from the ROM 402, from 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 a microcontroller, or in hardware form by a machine or dedicated component such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC).
[0052] FIG. 4 shows a block diagram of an example of a system A adapted to implement a pre-processing module 10, an encoding module 12, or an input module, in which various aspects and embodiments are implemented. The system A may be embodied as a device including various components described below and configured to execute one or more of the aspects and embodiments described in this document. 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. The elements of the system A may be embodied, alone or in combination, in a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, the system A comprises one processing module 40 that implements a pre-processing module, an encoding module, or both. In various embodiments, the 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 include composited video, not shown in FIG. 4.
[0054] In various embodiments, the input modules of block 52 have associated respective input processing elements as 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 band-limiting a signal to a frequency band), (ii) down-convert the selected signal, (iii) band-limit again to a narrower frequency band to select a signal frequency band, which in certain embodiments may be referred to (for example) as a channel, (iv) demodulate the down-converted and band-limited 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 band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner that performs various of these functions, including down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency close to 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, for example, 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 appreciated 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 in a separate interface IC or within processing module 40, as desired. The demodulated, error corrected and demultiplexed stream is provided to processing module 40.
[0056] The various elements of system A may be provided in a unitary housing, where the various elements may be interconnected and transmit data between them using any suitable connection arrangement, such as an internal bus known in the art, including an Inter-IC (I2C) bus, 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] Data is streamed or otherwise provided to system A in various embodiments 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 a communication channel 5 and a communication interface 404 adapted for Wi-Fi communication. The 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 the input block 52 is used to provide streaming data to system A. As mentioned 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, e.g., cellular networks 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 pre-processing process and / or an encoding process. A pre-processing process or encoding process as used in this application may, for example, encompass all or part of a process performed on a received SDR or HDR image or video stream to generate a master video or an 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, for example, a JPEG decoder or H.264 / AVC (ISO / IEC14496-10-MPEG-4 Part10, Advanced Video Coding), H.265 / HEVC (ISO / IEC23008-2-MPEG-H Part2, 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 ITU-T and ISO / IEC experts known as the Joint Video Experts Team (JVET) encoder.
[0061] FIG. 5 shows a block diagram of an example of a system B adapted to implement the post-processing module 14 and in which various aspects and embodiments are implemented. The system B may be embodied as a device including various components described below and configured to execute one or more of the aspects and embodiments described in this document. 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 appliances, and servers. The elements of the system B may be embodied, alone or in combination, in a single integrated circuit (IC), multiple ICs, and / or separate components. For example, in at least one embodiment, the system B comprises one processing module 40 that performs the post-processing process. In various embodiments, the 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 include composited video, not shown in FIG. 5.
[0063] In various embodiments, the input modules of block 52 have associated respective input processing elements as 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 band-limiting a signal to a frequency band), (ii) down-convert the selected signal, (iii) band-limit again to a narrower frequency band to select a signal frequency band, which in certain embodiments may be referred to (for example) as a channel, (iv) demodulate the down-converted and band-limited 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 band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF section may include, for example, a tuner that performs various of these functions, including down-converting a received signal to a lower frequency (e.g., an intermediate frequency or a frequency close to baseband) or to baseband. In one embodiment of a set-top box, 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 refiltering 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, for example, inserting amplifiers and analog-to-digital converters. In various embodiments, the RF module includes an antenna.
[0064] Additionally, the USB module and / or the HDMI module can each include an interface processor 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 input processing, such as Reed-Solomon error correction, can be implemented, if desired, for example, within a separate input processing IC or within processing module 40. Similarly, aspects of USB or HDMI interface processing can be implemented, if desired, within a separate interface IC or within processing module 40. The demodulated, error-corrected, and de-multiplexed stream is provided to processing module 40.
[0065] Various elements of System B can be provided within an integrated housing. Within the integrated housing, the various elements are interconnected using an internal bus known in the art, including a suitable connection arrangement, such as an inter-integrated circuit (I2C) bus, wiring, and a printed circuit board, and can transmit data therebetween. For example, in System B, processing module 40 is interconnected to the other elements of the system by bus 405.
[0066] The communication interface 404 of processing module 40 enables System B to communicate over communication channel 5. Communication channel 5 can be implemented, for example, within a wired and / or wireless medium.
[0067] Data is streamed or otherwise provided to system B in various embodiments 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 a communication channel 5 and a communication interface 404 adapted for Wi-Fi communication. The 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 the input block 52 is used to provide streaming data to system B. As indicated above, various embodiments provide data in a non-streaming manner. Additionally, various embodiments use wireless networks other than Wi-Fi, e.g., 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. The display 5 in various embodiments includes, for example, one or more of a touch screen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 5 can be, for example, display device 16 or 18 of FIG. 1. The display 5 can be for a television, a tablet, a laptop, a mobile phone, or other device. The 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). The display device 5 is compatible with SDR, MDR, or HDR content. The other peripheral devices 7 include, in various example embodiments, one or more of a standalone digital video disc (or digital versatile disc) (DVR, 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. The output devices can be communicatively coupled to system B via dedicated connections through respective interfaces 53, 54, and 55. Alternatively, the output devices can be connected to system B using communication channel 5 via communication interface 404. The display 5 and speakers 6 can be integrated into a single unit with other components of system B in an electronic device such as, for example, a television. In various embodiments, the display interface 5 includes a display driver, such as, for example, a timing controller (T Con) 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. Post-processing processes as used in this application 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, for example, H.264 / AVC (ISO / IEC14496-10-MPEG-4 Part10, Advanced Video Coding), H.265 / HEVC (ISO / IEC23008-2-MPEG-H Part2, 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 ITU-T and ISO / IEC experts known as the Joint Video Experts Team (JVET) decoder.
[0072] Where a figure is presented as a flow chart, 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 flow chart of the corresponding method / process.
[0073] The implementations and aspects described herein may be implemented, for example, in a method or process, an apparatus, a software program, a data stream, or a signal. Even if discussed in the context of only a single implementation form (e.g., discussed only as a method), the implementation of the discussed features may also be implemented in other forms (e.g., an apparatus or a program). An apparatus may be implemented, for example, in appropriate hardware, software, and firmware. A method may be implemented, for example, in 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. A processor also includes, for example, a communication device, such as a computer, a mobile phone, a portable / personal digital assistant ("PDA"), 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 a 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] Use of any of the terms " / ", "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" is 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 may be expanded to include as many of the items 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, for example, stored or transmitted. 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 a 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 that the signal carries can be, for example, analog information 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 in a processor-readable medium.
[0080] Fig. 6 shows a schematic example of the computational part of the pre-processing process. A first example of the pre-processing process is adapted to a 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, the processing module 40 derives a luminance (luma) component L' from the RGB signal as follows.
[0082]
number
[0083] In step 602, the processing module 40 applies tone mapping to the luma component L′ to obtain a tone mapped value Y pre0 Get the. Y pre0 =LUT TM (L') (Formula 2) In the formula, Y pre0 ∈[0;1023] and LUT TM () is a lookup table representing the tone mapping function.
[0084] In step 603, the 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) components (chroma) from the gamma corrected RGB signals as follows:
[0087]
number
[0088] In step 605, the processing module 40 performs joint normalization and color correction on the chroma components U pre0 and V pre0 The corrected chroma component Upre1 and V pre1 Get the.
[0089]
number
[0090]
number
[0091] In step 606, the processing module 40 calculates the tone mapped luma value Y pre0 Apply adjustments to the tonemapped luma value Y pre1 Get the. 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", into 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 (YUV 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 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] Fig. 7 shows a schematic diagram of a second example of the computational part of the pre-processing process. The second example of the computational part of the pre-processing process is adapted to a SL-HDR2 system. In this example, the 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 the 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 the.
[0095]
number
[0096] In step 702, the processing module 40 calculates the luma and chroma values Y pre0 , U pre0 and V pre0Step 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, downsampling the chroma components, and optionally converting the luma and chroma components Y and UV from full range values (YUV 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 a pixel of the HDR signal. hdr , U hdr , V hdr The purpose of step 702 is, for example, to convert a full range YUV444 signal into a limited range YUV420 signal.
[0097] FIG. 8 shows an example of a reconstruction process of the post-processing process in a schematic manner. 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 as follows. 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. Thus, the signal output by the pre-processing process is the input signal of the reconstruction process. Thus, 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. When converted, the SDR pixel is divided into luma and chroma components SDRy , SDR cb , SDR cr It is represented by:
[0100] For the SL-HDR2 system, the YUV420 signal is an HDR pixel. When converted, the HDR pixel is divided into a luma component and a chroma component HDR y , HDR cb , HDR cr It is represented by:
[0101] After the transformation, the processing module 40 adjusts the position of the chroma components to obtain 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 rescaling to the luma component. For a SL-HDR1 system, the rescaling operation is as follows: Y post1 =SDR y +max(0,mu 0 ×U post1 +mu 1 ×V post1 ) where the parameter mu 0 and mu 1 is defined in section 7.2.4 of the document ETSITS103433-1v1.3.1, where max(x,y) is 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 composition 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, the 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 value S 0 , U post3 and V post3 In the case of SL-HDR1, the variable T is calculated as follows: T=k o ×U post2 ×Vpost2 +k 1 ×U post2 ×U post2 +k 2 ×V post2 ×V post2 k 1 and k 2 is described in section 7.2.4 of the document ETSITS103433-1v1.2.1. If T≦1,
[0120]
number
[0121] Otherwise, if T>1, then S 0 =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 =k 1 =k 2 =0, S 0 =1 and U post3 =U post2 and V post3 =V post2 It is.
[0124] Y post2 Y pre0 Corresponding to U post1 and V post1 Each is 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 R 2 , G 2 and B. 2 This is done in two steps.
[0126] For SL-HDR1, R 1 , G 1 and B. 1 The calculation of is given in section 7.2.4 of the document ETSITS103433-1v1.3.1.
[0127]
number
[0128] For SL-HDR2, R 1 , G 1 and B. 1 The calculation of is given in section 7.2.4 of the document ETSITS103433-2v1.2.1.
[0129]
number
[0130] In the second step, the intermediate R 2 , G 2 and B. 2 Calculate as described in section 7.2.4 of ETSITS103433-1v1.3.1 for SL-HDR1 and as described in 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. y It 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 suitable for the display.
[0134] For SL-HDR2, LutMapY is added to the HDR HDR2 post processor in 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 suitable 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 calculations are 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 the document ETSITS103433-2v1.2.1.
[0139]
number
[0140] Therefore, the color correction of the SL-HDRx system is based on the color correction lookup table lutCC[Y post2 In the case of SL-HDR1, the sgf_x and sgf_y metadata are controlled using the U pre1 and V pre1 and therefore U sdr , V sdr In the case of SL-HDR2, the sgf_x and sgf_y metadata are post2 and V post3 and therefore controls the chroma output of the SL-HDR2 reconstruction process.
[0141] Fig. 9 illustrates a schematic of a method for controlling color correction in a SL-HDRx system. The method described in relation to Fig. 9 is executed by the processing module 40 when it 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 a SL-HDR1 system in NCL mode. The processing module 40 receives HDR content.
[0142] In step 90, the 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, which calculates for each pixel of the current image the three color components Y pre0 , U pre1 and V pre1 Get the.
[0144] In step 92, the processing module 40 calculates the three components Ypre0 , U pre1 and V pre1 In one embodiment of step 92, six classes are classified into color classes: ●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 formula in polar coordinates defines a direction for each of the three primary and three secondaries, 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 color red (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] The green color (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 color magenta (R=1, G=0, B=1) is defined as follows: ●U_M = (au + cu) × c ●V_M = (av + cv) × c
[0160]
number
[0161] The color cyan (R=0, G=1, B=1) 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 the color is equal to one of the following, then 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=C max * 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 A method for checking whether a given pixel, denoted as x, belongs to a sector is to 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 another embodiment, 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 non-contiguous, meaning that some pixels may not belong to any of the sectors.
[0179] 10 represents six sectors corresponding to the three primary and three secondary colors in the UV plane. The sectors are delimited by dashed lines 1000 to 1005. For example, the sector corresponding to the color red is delimited 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: ●SL-HDR1 case Y pre1a histogram histo, which represents 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 with luma value lum in the sector; For each luma value lum in the histogram it contains a value frame_chr_av[lum] which 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 the 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 having 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 which 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 of each sector. This chroma gain represents a margin by which to increase the chroma of that color, and indirectly the maximum allowable chroma value for each sector and each luminance value.
[0188] As mentioned above, the YUV values can be derived from the 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 colour 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] The processing module 40 then calculates the envelope of allowed chroma values for the color red. In one embodiment, this envelope 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 colour 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 the BT2020 color gamut) Gmax = 0.678, ○U=bu×s=bu / bl×Y, ○V=bv×s=bv / bl×Y,
[0193]
number
[0194] The 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 increasing straight line in YC (luma / chroma) space. • 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 colour 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] The processing module 40 then calculates an envelope of allowed chroma values for the color blue. In one embodiment, this envelope 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 the 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] The processing module 40 then calculates the 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 the 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] The processing module 40 then calculates the 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 the 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] The processing module 40 then calculates the 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 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, one for each sector (i.e., one for each class), chr_envelop[S], where S represents the sector index. For each sector S, vector chr_envelop[S] contains information representing the maximum allowed chroma value for each bin of the 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, the 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 a 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 manner an image with more chroma for colors that need to have more chroma.
[0206] In step 96, the processing module encodes information representative of the chroma gain as metadata in the bitstream. The metadata is SL-HDR1 compliant. In one embodiment, the information representative of the 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 an embodiment 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 the 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 an embodiment where the number of bins is different from 256, e.g., 64, the processing module 40 rescales the vector frame_idx_max_histo to 256 before encoding with the sgf_x that defines the SGF function.
[0208] The processing module 40 then assigns one of the six available sgf_x values to the bin number corresponding to the index cur_idx=frame_idx_max_histo[S] and modifies the corresponding default sgf_y value (usually equal to "118" for the SL-HDR1NCL case) using the maximum allowed scaling value scale_max[S]. In an embodiment with a number of bins equal to "256", six sectors, i.e. three primary and three secondary colors, the processing module 40 assigns one of the six available sgf_x values to the bin number corresponding to the 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 colors are difficult to distinguish for brightness values (high luminance values), brightness values are not considered during construction of the histogram, e.g., 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, the 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, the 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 chroma value frame_chr_max[lum] found in that bin in the corresponding sector. Then, for each sector, the 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] by 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 that contain at least a minimum number of pixels are considered during the scan.
[0219] In the first, second and third embodiment variants of step 94, only bins corresponding to values of the envelope of allowed chroma values 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 the first, second and third embodiment variants of step 94, each histogram histo is pre-processed to smooth the final 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 oversaturation 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 the 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 allowed 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 allowed scaling value scale_max[S'] lower than the maximum allowed scaling value scale_max[S], processing module 40 limits the maximum allowed scaling value scale_max[S] to the lower maximum allowed scaling value scale_max[S'] found in another sector.
[0223] In an embodiment of step 95, instead of limiting the maximum allowed scaling value scale_max[S] of the current sector S to the minimum of the maximum allowed scaling values scale_max[S'] found in 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 a 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 no temporal stabilization (i.e., temporal filtering) is 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 an 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, the processing module 40 determines whether the current image of the HDR content corresponds to a scene cut. To do so, for example, the processing module 40 compares the current image with an image preceding the current image in the HDR content. If the difference, calculated for example as the sum of absolute differences between co-located pixels of the two images, exceeds a threshold, the processing module 40 determines that the current image corresponds to a scene cut. In that case, step 971 is followed by step 973. Otherwise, step 971 is followed by step 972.
[0228] In step 973, the processing module 40 initializes a set of parameter sets of the time stabilization method. In other words, the time 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 illustrates an example embodiment 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 considered for calculating the filtered version of the corresponding parameter. 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 means that there is no valid histogram index and a scale_max value 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 to be, for example, less than or equal to "5". If the processing module 40 using the method for determining color correction of FIG. 9 for red color (S=red) 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, the 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, the processing module 40 knows whether these values are valid as a function of the values of frame_idx_max_histo[red] and scale_max[red], and therefore whether these values need to be stabilized.
[0233] As a result, upon detection of an invalid value, it is not necessary to stabilize the current parameters in time. 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, which represents a sector (ie, which represents 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, NumOfSets=6.
[0237] If S=NumOfSectors, the processing module 40 stops the initialization process 973.
[0238] Otherwise, the processing module 40 initializes a 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 an 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 the values of the corresponding buffer. W_i is a weighting factor. In one embodiment, W_i=1. In another embodiment, W_i is different for each value of i. In that case, more weight is given to certain positions in the buffer, since the accumulated value cum_frame_idx_max_histo[S] is a weighted sum of frame_idx_max_histo_buf[S][i].
[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]. The cumulative value cum_scale_max[S] represents all values of 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 vectors frame_idx_max_histo and scale_max parameters has a different size. Then, for each buffer there is an index filterIndex.
[0248] FIG. 13 illustrates in detail 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 Fig. 13 is executed by the processing module 40. These parameters are filtered as follows: For each parameter, the accumulated 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 a combination of the most recent parameter value with any of the preceding parameter values. - Updating the buffer at the current index with the most recent parameters just received. Calculating a 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 division of the corresponding accumulated value by a number corresponding to the sum of the weighted addition of the combination of the most recent parameter value and any of the preceding parameter values considered when calculating the accumulated value.
[0250] In this step, the processing module 40 checks whether the buffer has already been initialized or was not previously in the current cut. If so, the processing module 40 updates the current buffer value if the current value is a valid value. If not, the processing module 40 initializes the buffer and the accumulated 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. Then, all filtered values are calculated as follows:
[0252] In step 972A, the 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, the processing module 40 stops the process of FIG. 13 at step 972C.
[0255] Otherwise, 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 972P follows step 972D. During step 972P, the processing module 40 re-initializes all buffer values frame_idx_max_histo_buf[S][x] (where x ranges from zero to the buffer size n) to frame_idx_max_histo_invalid. After this re-initialization, during step 972P, the processing module 40 increments the variable S by one unit. Additionally, during step 972P, step 972B follows step 972P.
[0256] If frame_idx_max_histo[S] ≠ frame_idx__max_histo_invalid, step 972E follows step 972D. During step 972E, the processing module 40 determines whether the buffer value 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 972F follows step 972E, and all buffer values frame_idx_max_histo_buf[S][x] (where x ranges from zero to the buffer size n) are initialized to frame_idx_max_histo[S]. Additionally, during step 972F, the 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, where 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]-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 a step 972P.
[0264] Otherwise, 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 allowed 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 that is transmitted 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 starts with the output of the SL-HDR1 pre-processing module, i.e., Y pre0 , U pre1 and V pre1 It is based on the intermediate signal, in other words all calculations are done in the SDR domain.
[0271] FIG. 14 illustrates generally an embodiment of a method for controlling color correction adapted to a SL-HDR2 system.
[0272] The method for controlling color correction described in relation to Fig. 9 addresses the SL-HDR1 system. In the SL-HDR2 pre-processor, no SDR signal generation takes place. In step 140 of the embodiment adapted to the SL-HDR2 system of Fig. 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 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 the processing module 40) by emulating the SL-HDR2 post-processor until a SDR signal is obtained. The reconstruction process is performed by taking into account that the connected display is an SDR display. Thus, 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 produces an SDR or MDR or HDR signal. The method described in relation to Fig. 9 allows to determine the SGF point coordinates sgf_x and sgf_y in the SDR domain. However, in the actual SL-HDR2 post-processor, these points are applied to the input HDR signal. Thus, in the SL-HDR2 case, all calculated SGF points are mapped to the HDR domain, which means an estimation of the SDR / HDR transformation.
[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 the 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 a variable Last_correct_value to zero.
[0277] In step 1411, the processing module 40 initializes a 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 lower 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] If not, then in step 1434, the processing module 40 calculates the variable Lhisto_sdr as follows: Lhisto_sdr=(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] Returning to Figure 14, after step 143, processing module 40 executes 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 the saturation in the SL-HDR1 case by steps 90 to 96. Finally, since the SGF function works differently between SL-HDR1 and SL-HDR12, all the 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] For a given luminance Y, increase sgf(Y) by an increment value incr.
[0303]
number
[0304] Therefore, increasing sgf(Y) by incr will result in U 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 on the post-processor side by lutCC[Y] in step 804 of FIG. 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 U post2 (V post2 ), thus decreasing 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. Obtaining a current multi-component image; classifying (92) colors of pixels of the current multi-component image into a plurality of color classes using the tone mapped luma components and the corrected normalized chrominance components derived from the current multi-component image; determining, for each color class, data representative of the color class including a dominant luminance value representative of the luminance that is dominant for colors in the class, and determining from the data representative of the color class a value representative of a chrominance gain that represents a maximum allowable chroma value for a chrominance component in the color class; and encoding the dominant luminance value and the value representing the gain 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 of the current multi-component image as a function of the luminance of the pixel.
2. The tone mapped luma components and the corrected normalized chrominance components of pixels of the current multi-component image are obtained by analyzing chrominance components of the current multi-component image, the analysis comprising, for each pixel of at least a subset of pixels of the current multi-component image: - deriving a luma component from said components of said pixels; - applying tone mapping to the derived luma component to obtain a tone mapped luma component; - deriving chrominance components from said components of said pixels; The method of claim 1 , comprising: applying joint normalization and color correction to the chrominance components to obtain corrected normalized chrominance components.
3. 2. The method of claim 1 , wherein the current multi-component image is included in a video sequence, and temporal filtering is 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 multi-component image.
4. The method of claim 3 , wherein the temporal filtering is reinitialized at the beginning of the video sequence or when a scene cut is identified in the video sequence.
5. The method of claim 1 , wherein the color classes are color sectors around pure primary and / or secondary colors in the chrominance plane.
6. The method of claim 5 , wherein the combination of sectors together covers the chrominance plane.
7. The method of claim 1 , wherein determining the data representative of the color classes comprises obtaining a histogram of luminance values of pixels of the current multi-component image as a function of luminance values for the color classes.
8. The method of claim 7 , wherein only pixels corresponding to luminance values that fall within a predetermined range of luminance values are used to obtain the histogram.
9. 8. The method of claim 7, wherein the dominant luminance value corresponds to the luminance value at which the maximum number of pixels in the histogram lies or at which the maximum chrominance energy lies, the chrominance energy is calculated for a bin of the histogram by multiplying the luminance value at which the maximum chrominance value or maximum average chrominance energy lies found in that bin by the number of pixels corresponding to 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.
10. A device comprising an electronic circuit, the electronic circuit comprising: Obtaining a current multi-component image; means for classifying colors of pixels of the current multi-component image into a plurality of color classes using the tone mapped luma components and the corrected normalized chrominance components derived from the current multi-component image; determining (95) data representative of each color class including a dominant luminance value representative of the luminance that is dominant for colors in the class, and determining from the data representative of the color class a value representative of a chrominance gain that represents a maximum allowable chroma value for a chrominance component of the color class; and encoding the dominant luminance value and the value representing the gain 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 of the current multi-component image as a function of the luminance of the pixel.
11. The electronic circuitry is further configured to: analyze chrominance components of the current multi-component image applied for each pixel of at least a subset of pixels of the current multi-component image to obtain the tone mapped luma components and the corrected normalized chrominance components of the current multi-component image, the analyzing comprising: - deriving a luma component from said components of said pixels; - applying tone mapping to the derived luma component to obtain a tone mapped luma component; - deriving chrominance components from said components of said pixels; The device of claim 10 , further comprising: applying joint normalization and color correction to the chrominance components to obtain corrected normalized chrominance components.
12. The device of claim 10 , wherein the current multi-component image is included in a video sequence, and the electronic circuitry is further configured to apply temporal filtering to the information representing the chroma gains based on information representing chroma gains calculated for an image of the video sequence preceding the current multi-component image.
13. The device of claim 12 , wherein the temporal filtering is reinitialized at the beginning of the video sequence or when a scene cut is identified in the video sequence.
14. The device of claim 10 , wherein the color classes are color sectors around pure primary and / or secondary colors in the chrominance plane.
15. The device of claim 14 , wherein the combination of sectors together covers the chrominance plane.
16. The device of claim 10 , wherein determining the data representative of the color class comprises obtaining a histogram of luminance values of pixels of the current multi-component image as a function of luminance values for the color class.
17. The device of claim 16 , wherein only pixels corresponding to luminance values that fall within a predetermined range of luminance values are used to obtain the histogram.
18. 17. The device of claim 16, wherein the dominant luminance value corresponds to the luminance value at which a maximum number of pixels or a maximum chrominance energy exists in the histogram, 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 at which a maximum chrominance value or a maximum average chrominance energy exists 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.
19. A non-transitory information storage medium storing program code instructions for implementing the method of claim 1.
Citation Information
Patent Citations
Image color enhancement device and method
CN102223547A
Method and device of reconstructing image data from decoded image data
JP2018191269A
Method for restructuring display-adaptive HDR image and device
JP2019097013A
Color signal correction device and method, and image processing system using the same and method thereof
US20040120576A1
Video processing methods and systems
US20060285768A1