Methods, apparatuses and devices for avoiding chroma clipping in a tone mapper while maintaining saturation and preserving hue
By dividing the brightness range and calculating the correction factor in the SL-HDRx system, the problem of SDR chromaticity component clipping is solved, and the image saturation and hue consistency are maintained while avoiding clipping, thus ensuring high-quality image reconstruction.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-10-14
- Publication Date
- 2026-04-10
AI Technical Summary
In the SL-HDRx system, the SDR chromaticity components are prone to clipping during reconstruction, leading to color distortion. Existing methods often result in excessively low saturation when avoiding clipping, making it impossible to maintain hue consistency.
By dividing the brightness range, estimating the attenuation value of the chromaticity component, calculating the factors for the global and partial brightness ranges, and using the final correction factor to modify the chromaticity component, clipping is avoided and saturation is maintained. Time-stabilized filtering techniques are applied to maintain image consistency.
It effectively avoids clipping of SDR chroma components, maintains the saturation and tone consistency of the image, and ensures high-quality reconstruction from SDR signal to HDR signal.
Smart Images

Figure CN116508054B_ABST
Abstract
Description
1. TECHNICAL FIELD
[0001] At least one of the embodiments of the present application relates generally to the field of distributing HDR video using SL-HDRx systems (x = 1, 2 or 3) and, more specifically, to a method, device and apparatus for modifying a color correction function intended to correct an initial chroma component of a current image represented by an initial luma component and the initial chroma component to obtain a normalized corrected chroma component, while avoiding chroma clipping while maintaining saturation and preserving hue. 2. BACKGROUND
[0002] Recent advances in display technology have started to allow for an extended dynamic range of colors, luminance and contrast in images to be displayed. The term image here refers to image content which can be, for example, a video or a still picture or image.
[0003] High dynamic range video (HDR video) describes a video with a dynamic range greater than that of standard dynamic range video (SDR video). HDR video involves capture, production, content / coding and display. HDR capture and display are capable of rendering brighter whites and deeper blacks. To accommodate this, HDR coding standards allow for higher maximum luminance and use at least 10 bits of dynamic range (compared to 8 bits for non-professional video and 10 bits for professional SDR video) in order to maintain precision over this extended range.
[0004] While technically "HDR" strictly refers to the ratio between maximum and minimum luminance, the term "HDR video" is also commonly understood to mean wide color gamut.
[0005] Despite the emergence of many HDR display devices and image and video cameras capable of capturing images with an increased dynamic range, the amount of available HDR content remains very limited. Moreover, most current content distribution systems are designed for the transmission of SDR content.
[0006] The standard SL-HDR1 (ETSI TS 103 433-1 series, latest version v1.3.1) provides direct backward compatibility by using metadata that allows to reconstruct an HDR signal from an SDR video stream. One advantage of SL-HDR1 is to allow the use of already existing SDR distribution networks and services for distributing HDR content. Also, SL-HDR1 allows the use of a single layer video stream, HDR rendering on HDR devices and SDR rendering on SDR devices.
[0007] Standard SL-HDR2 (ETSI TS 103 433-2 series, latest version being vl.2.1) is suitable for HDR devices. Standard SL-HDR2 allows the transmission of ST-2084 (aka PQ (Perceptual Quantizer) or HDR10) stream and metadata. When a stream is received by a device compatible only with ST-2084 and not with metadata, the latter ignores the metadata and displays the image without understanding all the technical details thereof (depending on the device model and its processing capabilities, the color rendering and tone scale details can not match the original source). When a device supporting both ST-2084 format and metadata receives a stream, it displays an optimized image that best matches the content creator's intent.
[0008] Standard SL-HDR3 (ETSI TS 103 433-3 vl.1.1) allows the transmission of HLG (Hybrid Log-Gamma) stream and metadata. SL-HDR3 system comprises an HDR / SDR reconstruction block based on SL-HDR2 HDR / SDR reconstruction block, i.e. it consists of a concatenation of an HLG to ST-2084 OETF (Opto-Electrical Transfer Function) converter and a SL-HDR2 HDR / SDR reconstruction block. The OETF describes the action of the sensor, converting the scene luminance into data.
[0009] In certain typical SL-HDRx systems, the luminance part of the SDR signal (i.e. SDR luminance) is computed by applying a tone mapping operation on the luminance of the original HDR signal computed from the original HDR RGB components or on the luminance of the original HDR signal computed from a gamma-corrected version of the HDR RGB components of the original HDR signal (i.e. HDR luminance). The chrominance part of the SDR signal (i.e. SDR chrominance) is computed from the gamma-corrected version of the HDR RGB components of the original HDR signal and from color correction factors depending on the computed SDR luminance.
[0010] In certain cases, the generated SDR chrominance components are clipped to the possible maximum. When reconstructing the HDR signal from the SDR signal, the clipping is a direct source of reconstruction error.
[0011] To avoid SDR chrominance components clipping, some methods are to modify the saturation of the computed SDR chrominance components. However, these methods produce SDR images with very low saturation, which are no longer consistent in color (i.e. hue) with the original HDR signal.
[0012] It is desirable to overcome the above drawbacks.
[0013] It is particularly desirable to define a method to be able to avoid SDR chrominance components clipping while maintaining the saturation of the derived SDR signal and preserving its hue. 3. SUMMARY
[0014] In a first aspect, one or more of the embodiments of the present application provide a method for modifying a color correction function intended to correct an initial chroma component of a current image represented by an initial luminance component and the initial chroma component, to obtain a normalized corrected chroma component, the color correction function being defined by a set of initial tuples comprising a first coordinate and a second coordinate, for the current image, the method comprising:
[0015] dividing a luminance value range of the initial luminance component into partial luminance ranges, each border between two successive partial luminance ranges corresponding to a first coordinate of one of the initial tuples;
[0016] estimating, in each partial luminance range, an attenuation value of the initial chroma component, each attenuation value allowing to reduce the initial chroma component to avoid clipping of the component;
[0017] determining a global attenuation value of the initial chroma component from the attenuation values determined for each partial luminance range;
[0018] computing, based on the global attenuation value and on the attenuation value associated with each partial luminance range, a factor for each partial luminance range, the factor allowing to maintain saturation in the partial luminance range;
[0019] for each border between two successive luminance ranges, computing a minimum factor representing a minimum value among the factors computed for the two successive partial luminance ranges;
[0020] computing, based on the minimum factor corresponding to each border between two successive partial luminance ranges and on the global attenuation value, a final correction factor for the border; and,
[0021] modifying, using the final correction factor, the second coordinate of at least one of the initial tuples to obtain new tuples defining a new color correction function.
[0022] In one embodiment, the method comprises temporal stabilization of the new tuples, the temporal stabilization being based on filtering using new tuples computed for images preceding the current image.
[0023] In one embodiment, the temporal stabilization is performed in a set of images belonging to a same scene between two scene cuts.
[0024] In a second aspect, one or more of the embodiments of the present application provide a device for modifying a color correction function intended to correct an initial chroma component of a current image represented by an initial luminance component and the initial chroma component, to obtain a normalized corrected chroma component, the color correction function being defined by a set of initial tuples comprising a first coordinate and a second coordinate, the device comprising:
[0025] a partitioning means for partitioning a luminance value range of the initial luminance component into partial luminance ranges, each border between two successive partial luminance ranges corresponding to a first coordinate of one of the initial tuples;
[0026] an estimation means for estimating, in each partial luminance range, an attenuation value of the initial chroma component, each attenuation value allowing to reduce the initial chroma component to avoid clipping of the component;
[0027] a determination means for determining, from the attenuation value determined for each partial luminance range, a global attenuation value of the initial chroma component;
[0028] a factor computation means for computing, based on the global attenuation value and on the attenuation value associated with each partial luminance range, a factor for each partial luminance range, the factor allowing to maintain saturation in the partial luminance range;
[0029] a minimum factor computation means for computing, for each border between two successive luminance ranges, a minimum factor representing a minimum of the factors computed for the two successive partial luminance ranges;
[0030] a final correction factor computation means for computing, based on the minimum factor corresponding to each border between two successive partial luminance ranges and on the global attenuation value, a final correction factor for the border; and,
[0031] a modification means for modifying, using the final correction factor, the second coordinate of at least one of the initial tuples to obtain new tuples defining a new color correction function.
[0032] In one embodiment, the device comprises a means for applying a temporal stabilization of the new tuples, the temporal stabilization being based on a filtering using new tuples computed for images preceding the current image in the sequence of images.
[0033] In one embodiment, the device comprises a means for applying the temporal stabilization in a set of images belonging to the same scene between two scene cuts in the sequence of images.
[0034] In a third aspect, one or more embodiments among the embodiments of the present application provide a method for tone mapping an image, the image comprising an initial luminance component and an initial chrominance component, the method comprising:
[0035] modifying the color correction function using the method of the first aspect; and,
[0036] applying color correction to the initial chrominance component based on the new color correction function.
[0037] In a fourth aspect, one or more embodiments among the embodiments of the present application provide a method for joint distribution of an image to a client system, the image having the same content in HDR and SDR formats, the method comprising:
[0038] applying the method of the first or third aspect; and
[0039] transmitting data representing the new tuple to the client system in the form of metadata.
[0040] In a fifth aspect, one or more embodiments among the embodiments of the present application provide an apparatus for tone mapping an image, the image comprising an initial luminance component and an initial chrominance component, the apparatus comprising:
[0041] the device according to the second aspect; and,
[0042] a color correction means for applying color correction to the initial chrominance component based on a new color correction function.
[0043] In a sixth aspect, one or more embodiments among the embodiments of the present application provide an apparatus for joint distribution of an image to a client system, the image having the same content in HDR and SDR formats, the apparatus comprising:
[0044] the device according to the second aspect or the apparatus according to the fifth aspect; and
[0045] a transmission means for transmitting data representing the new tuple to the client system in the form of metadata.
[0046] In a seventh aspect, one or more embodiments among the embodiments of the present application provide equipment comprising the device according to the second aspect or the apparatus according to the fifth or sixth aspect.
[0047] In an eighth aspect, one or more embodiments among the embodiments of the present application provide a signal generated by the method of the first, third or fourth aspect or by the device of the second aspect or by the apparatus according to the fifth or sixth aspect or by the equipment according to the seventh aspect.
[0048] In a ninth aspect, one or more embodiments among the present embodiments provide a computer program comprising program code instructions for implementing the method according to the first aspect, the third aspect or the fourth aspect.
[0049] In a tenth aspect, one or more embodiments among the present embodiments provide an information storage medium storing program code instructions for implementing the method according to the first aspect, the third aspect or the fourth aspect. 4. BRIEF DESCRIPTION OF DRAWINGS
[0050] Figure 1 An example of an SL-HDR1 system is shown;
[0051] Figure 2 Details of a pre-processing module of the SL-HDR1 system are schematically shown;
[0052] Figure 3 Details of a post-processing module of the SL-HDR1 system are schematically shown;
[0053] Figure 4 An example of a hardware architecture of a processing module enabling the various aspects and embodiments is schematically shown;
[0054] Figure 5 A block diagram of an example of a first system in which the various aspects and embodiments are implemented is shown;
[0055] Figure 6 A block diagram of an example of a second system in which the various aspects and embodiments are implemented is shown;
[0056] Figure 7 An example of a pre-processing process is schematically shown;
[0057] Figure 8 An example of a post-processing process is schematically shown;
[0058] Figure 9 An example of a chroma clipper process is schematically shown;
[0059] Figure 10A A first example of a temporal stabilization process is schematically shown;
[0060] Figure 10B A second example of a temporal stabilization process is schematically shown;
[0061] Figure 11 A process for determining an attenuation value of a chroma component in a partial luminance range is schematically represented;
[0062] Figure 12 The execution of the chroma clipper process is shown;
[0063] Figure 13 First details of the temporal stabilization process are shown; and,
[0064] Figure 14 Second details of the temporal stabilization process are shown. 5. DETAILED DESCRIPTION
[0065] Various aspects and embodiments will be described in the context of the SL-HDR1 system. However, these aspects and embodiments are applicable to any SL-HDRx system including color correction.
[0066] Figure 1 An example of the SL-HDR1 system is shown.
[0067] Figure 1 The SL-HDR1 system comprises a server 1 and a client system 3 communicating via a communication network 2. The client system 3 is connected through a communication link 4 to a first display device, referred to as HDR display device 5, capable of displaying HDR content and through a communication link 6 to a second display device, referred to as SDR display device 7, capable of displaying SDR content.
[0068] The server 1 obtains original HDR content and generates an encoded SDR signal and metadata.
[0069] The client 3 receives the encoded SDR signal and the metadata, generates decoded SDR content and reconstructs HDR content from the SDR decoded SDR content and the metadata.
[0070] The server 1 comprises a pre-processing module, an encoding module 12 and a transmission module 14 as described in detail below. Figure 2 The pre-processing module 10 applies the following processes described in connection with and
[0071] The pre-processing module 10 applies the following processes described in connection with Figure 7 and Figure 9 The pre-processing module 10 applies the following processes described in connection with
[0072] The encoding module 12 encodes the SDR content and the metadata. The encoding module 12 generates for example an encoded video stream that complies with the video compression standard HEVC (ISO / IEC 23008-2 - MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265) or AVC (ISO / IEC 14496-10 - MPEG-4 Part 10, Advanced Video Coding) or the standard under development named Versatile Video Coding (VVC). The metadata are for example performed by SEI messages (e.g. SEI messages registered for user data, HEVC Color Remapping Information (CRI) or Master Display Color Volume (MDCV) SEI messages).
[0073] The encoded video stream is transmitted by the transmission module 14 to the client system 3 via the communication network 2 at the encoding.
[0074] The client system 3 comprises a receiving module 30, a decoding module 32 and a post-processing module 34 as described in detail below. Figure 3 The receiving module 30 receives the encoded video stream comprising the encoded SDR content and the metadata.
[0075] The receiving module 30 receives the encoded video stream comprising the encoded SDR content and the metadata.
[0076] The decoding module 32 decodes the encoded video stream to reconstruct the SDR content and the metadata. No further processing is applied to the SDR content that is directly transmitted to the SDR display device 7.
[0077] The post-processing module 34 applies the processes described in connection with Figure 8 to reconstruct the HDR content from the decoded SDR content and the metadata.
[0078] Figure 2 Details of the pre-processing module 10 are schematically shown.
[0079] The pre-processing module 10 comprises a conversion module 10A and an HDR-to-SDR signal decomposition module 10C.
[0080] The HDR-to-SDR signal decomposition module 10C requires linear light RGB signals at its input. The conversion module 10A is able to format adapt the input required by the HDR-to-SDR signal decomposition module 10C, i.e. the conversion module will convert the HDR video in an input of arbitrary format (OETF, YUV, etc.) to linear light RGB signals if required.
[0081] The HDR-to-SDR signal decomposition module 10C uses the reversible process described in connection with Figure 7 steps 701 to 708 to generate an SDR backward compatible version of the original HDR signal that guarantees a high quality reconstructed HDR signal.
[0082] In one embodiment, the pre-processing module 10 comprises an optional gamut mapping module 10B. The gamut mapping module 10B can be used when the original HDR signal and the SDR signal are represented with different gamuts or color spaces.
[0083] Figure 3 Details of the post-processing module 34 are schematically illustrated.
[0084] The post-processing module 34 comprises an SDR-to-HDR reconstruction module 34C and a conversion module 34A.
[0085] The SDR-to-HDR reconstruction module 34C receives the decoded SDR signal and the metadata and performs the inverse of the process of the HDR-to-SDR decomposition module 10C to reconstruct an HDR signal, as described in connection with steps 801 to 807 of the method of Fig. 8. Figure 8
[0086] The conversion module 34A enables the reconstructed HDR signal to be formatted to the target system (e.g. a set-top box (STB), a connected TV, etc.) to which the client system 3 is connected. The conversion module 34A applies the process described in connection with step 808 of the method of Fig. 8. Figure 8
[0087] In embodiments where the pre-processing module 10 comprises the gamut mapping module 10B, the post-processing module 34 comprises an optional inverse gamut mapping module 34B which performs the inverse of the process of the gamut mapping module 10B.
[0088] Figure 4 An example of a hardware architecture of a processing module 100, comprised in the server 1, in the pre-processing module 10, in the encoding module 12 or in the transmission module 14, or comprised in the client system 3, in the reception module 30, in the decoding module 32 or in the post-processing module 34, and enabling different aspects and embodiments, is schematically illustrated. As a non-limiting example, the processing module 100 comprises the following, connected by a communication bus 1005: a processor or CPU (Central Processing Unit) 1000, containing one or more microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture; a Random Access Memory (RAM) 1001 ; a Read Only Memory (ROM) 1002; a storage unit 1003, which can include non-volatile memory and / or volatile memory, including, but not limited to, Electrically Erasable Programmable Read-Only Memory (EEPROM), Read-Only Memory (ROM), Programmable Read-Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), flash, magnetic or optical disks, and / or cards, or a storage medium reader, such as an SD (Secure Digital) card reader and / or a Hard Disk Drive (HDD) and / or a network accessible storage device; at least one communication interface 1004 for exchanging data with other modules, devices, systems or equipment. The communication interface 1004 can include, but is not limited to, a transceiver configured to transmit and receive data over the communication network 2. The communication interface 1004 can include, but is not limited to, a modem or a network card.
[0089] The communication interface 1004 enables, for example, the processing module 100 to:
[0090] • when the processing module 100 is comprised in the server 1, receive the original HDR content and output the encoded video stream comprising the encoded SDR content and metadata;
[0091] • when the processing module 100 is comprised in the pre-processing module 10, receive the original HDR content and output the SDR content with metadata;
[0092] • when the processing module 100 is comprised in the encoding module 12, receive the SDR content and metadata and output an encoded video stream representing the SDR content and the metadata;
[0093] • when the processing module is comprised in the transmission module 14, receive the encoded video stream and transmit the encoded video stream to the client system 3;
[0094] • when the processing module 100 is comprised in the client system 3, receive the encoded video stream from the server 1 and output the corresponding SDR and / or HDR content;
[0095] • when the processing module 100 is comprised in the receiving module 30, receiving the encoded video stream from the server 1 and forwarding the encoded video stream to the decoding module 32;
[0096] • when the processing module 100 is comprised in the decoding module 32, receiving the encoded video stream from the receiving module 30 and outputting the reconstructed SDR content and metadata;
[0097] • when the processing module 100 is comprised in the post-processing module 34, receiving the reconstructed SDR content and metadata and outputting the reconstructed HDR content.
[0098] The processor 1000 is able to execute instructions loaded into the RAM 1001 from the ROM 1002, an external memory (not shown), a storage medium or a communication network. When the processing module 100 is powered on, the processor 1000 is able to read instructions from the RAM 1001 and execute these instructions. These instructions form a computer program which causes, for example, the implementation of the pre-processing process 10, the encoding process 12, the decoding process 32 and / or the post-processing process 34 described in connection with Figure 7 and Figure 9 the aspects and embodiments described in the present document. Figure 8 the aspects and embodiments described in the present document.
[0099] All or part of the algorithms and steps of the processes can be implemented in software form by the execution of a set of instructions by a programmable machine such as a DSP (Digital Signal Processor) or a microcontroller, or in hardware form by a machine or a dedicated component such as an FPGA (Field-Programmable Gate Array) or an ASIC (Application-Specific Integrated Circuit).
[0100] Figure 5 A block diagram illustrating an example of a system A suitable for implementing the server 1, the pre-processing module 10, the encoding module 12 and / or the transmission module 14, and in which the various aspects and embodiments are implemented, is shown.
[0101] The system A can be embodied as a device comprising the various components or modules described above, and configured to perform one or more of the aspects and embodiments described in the present document. Examples of such systems include, but are not limited to, various electronic systems such as personal computers, laptops, smartphones, tablet computers, connected home appliances, servers and cameras. The components of the system A can be embodied individually or in combination in a single integrated circuit (IC), multiple ICs, and / or discrete components. For example, in at least one embodiment, the system A comprises one processing module 100 implementing the pre-processing process 10, the encoding module 12 or the transmission module 14 or any combination of these modules. In various embodiments, the system A is communicatively coupled to one or more other systems or other electronic devices via, for example, a communication bus or by dedicated input and / or output ports.
[0102] The inputs to the processing module 100 can be provided through various input modules as shown in block 60. Such input modules include, but are not limited to: (i) a radio frequency (RF) module that receives RF signals transmitted, for example, over the air by a broadcaster; (ii) a component (COMP) input module (or set of COMP input modules); (iii) a universal serial bus (USB) input module; and / or (iv) a high-definition multimedia interface (HDMI) input module. Figure 5 Other examples, not shown in FIG. 1, include composite video.
[0103] In various embodiments, the input modules of block 60 have associated respective input processing elements as known in the art. For example, the RF module can be associated with elements suitable for: (i) selecting a desired frequency (also referred to as selecting a signal, or band-limiting a signal to one frequency band), (ii) downconverting the selected signal, (iii) band-limiting again to a narrower frequency band to select a signal frequency band which may, in certain embodiments, be referred to as a channel, (iv) demodulating the downconverted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF module of various embodiments includes one or more elements for performing these functions, for example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion can include a tuner that performs various ones of these functions including, for example, downconverting a received signal to a lower frequency (e.g., an intermediate frequency or a near-baseband frequency) or to baseband. Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and / or add other elements performing similar or different functions. Adding elements can include inserting elements between existing elements, for example, inserting amplifiers and analog-to-digital converters. In various embodiments, the RF module includes an antenna.
[0104] Additionally, the USB and / or HDMI modules can include respective interface processors for connecting system A to other electronic devices across a USB and / or HDMI connection. It will be appreciated that various aspects of input processing (e.g., Reed-Solomon error correction) can be implemented as desired, for example, within a separate input processing IC or within the processing module 100. Similarly, aspects of USB or HDMI interface processing can be implemented as desired, for example, within a separate interface IC or within the processing module 100. The demodulated, error corrected, and demultiplexed stream is provided to the processing module 100.
[0105] The various elements of system A can be disposed within an integrated housing. Within the integrated housing, the various elements can be interconnected and transmit data between them using suitable connection arrangements, such as internal buses known in the art, including Inter-IC (I2C) buses, wiring, and printed circuit boards. For example, in system A, processing module 100 is interconnected with other elements of the system A by bus 1005.
[0106] Communication interface 1004 of processing module 100 allows system A to communicate on a communication network 2. For example, communication network 2 can be implemented in a wired and / or wireless medium.
[0107] In various embodiments, data is streamed or otherwise provided to system A using a wireless network such as a Wi-Fi network, for example IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers). Wi-Fi signals in these embodiments are received through communication network 2 and communication interface 1004, which are suitable for Wi-Fi communication. Communication network 2 in these embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, to allow streaming applications and other cross-top communications. Other embodiments provide streaming data to system A using an RF connection of input block 60. As noted above, various embodiments provide data in a non-streaming manner, for example when system A is a camera, smartphone, or tablet computer. In addition, various embodiments use wireless networks other than Wi-Fi, such as a cellular network or a Bluetooth network.
[0108] System A can provide output signals to various output devices using communication network 2 or bus 1005. For example, when pre-processing module 10 is implemented, system A provides the output signals to encoding module 12 using bus 1005 or communication network 2. When server 1 is implemented, system A provides SDR signals and metadata to client system 3 using communication network 2.
[0109] Various implementations relate to applying a pre-processing procedure and / or an encoding procedure. As used in this application, a pre-processing procedure or an encoding procedure can encompass all or part of the procedures performed, for example, on a received HDR image or video stream, in order to produce SDR content or encoded SDR content with metadata. In various implementations related to an encoding procedure, such procedures include one or more of the procedures typically performed by a video encoder, such as an ITU-T and ISO / IEC expert group developed H.264 / AVC (ISO / IEC 14496-10 - MPEG-4 Part 10, Advanced Video Coding), H.265 / HEVC (ISO / IEC 23008-2 - MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265) and H.266 / VVC (Versatile Video Coding) encoders known as Joint Video Experts Team (JVET) encoders, AV1 encoders, or VP9 encoders.
[0110] Figure 6 A block diagram showing an example of a system B suitable for implementing the client system 3, the receiving module 30, the decoding module 32, and / or the post-processing module 34, and in which various aspects and implementations are implemented, is shown.
[0111] The system B can be embodied as a device comprising the various components or modules described above, and configured to perform one or more of the aspects and implementations described in this document.
[0112] 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, and connected, household appliances. The elements or modules of the system B can be embodied in a single integrated circuit (IC), multiple ICs, and / or a
[0113] The inputs to the processing module 100 can be provided through the combination of Figure 5 Various input modules as shown in block 60 described above can be provided.
[0114] Various components of System B may be housed within an integrated housing. Within the integrated housing, the various components can be interconnected using suitable connection arrangements (e.g., internal buses known in the art, including inter-IC (I2C) buses, wiring, and printed circuit boards) and data can be transferred between these components. For example, in System B, processing module 100 is interconnected with other components of System B via bus 1005.
[0115] The communication interface 1004 of the processing module 100 allows system B to communicate on the communication network 6. For example, the communication network 2 can be implemented in wired and / or wireless media.
[0116] In various implementations, a wireless network such as Wi-Fi, such as IEEE 802.11 (IEEE refers to the Institute of Electrical and Electronics Engineers), is used to stream or otherwise provide data to System B. In these implementations, the Wi-Fi signal is received via a communication network 2 suitable for Wi-Fi communication and a communication interface 1004. The communication network 2 in these implementations is typically connected to an access point or router that provides access to external networks, including the Internet, to allow streaming applications and other cross-platform communications. Other implementations use the RF connection of input box 60 to provide streaming data to System B. As mentioned above, various implementations provide data in a non-streaming manner. Additionally, various implementations use wireless networks other than Wi-Fi, such as cellular networks or Bluetooth networks.
[0117] System B can provide output signals to various output devices, including display 64 (corresponding to...). Figure 1 The display 64 includes a display device 5 or 7, a speaker 65, and other peripheral devices 66. In various embodiments, the display 64 includes one or more of, for example, a touchscreen display, an organic light-emitting diode (OLED) display, a curved display, and / or a foldable display. The display 64 can be used in a television, tablet computer, laptop computer, mobile phone, or other device. The display 64 can also be integrated with other components (e.g., in a smartphone) or standalone (e.g., an external monitor for a laptop computer). The display device 64 is compatible with SDR or HDR content. In various examples of embodiments, other peripheral devices 66 include one or more of a standalone digital video disc (or digital versatile disc) (DVR, which may represent both terms), a disc player, a stereo system, and / or a lighting system. Various embodiments use one or more peripheral devices 66 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.
[0118] In various embodiments, control signals are communicated between system B and display 64, speakers 65, or other peripheral devices 66 using signaling such as AV.Link, Consumer Electronics Control (CEC), or other communication protocols that enable device-to-device control either with or without user intervention. Output devices can be communicatively coupled to system B through respective interfaces 61, 62, and 63 via dedicated connections. Alternatively, output devices can connect to system B using the communication network 2 via communication interface 1004. Display 64 and speakers 65 can be integrated in a single unit with other components of system B in an electronic device such as a television. In various embodiments, display interface 61 includes a display driver such as a timing controller (T Con) chip.
[0119] For example, if the RF module of input 60 is part of a separate set-top box, display 64 and speakers 65 can alternatively be separate from one or more of the other components. In various embodiments in which display 64 and speakers 65 are external components, the output signals can be provided via dedicated output connections including, for example, HDMI ports, USB ports, or COMP outputs.
[0120] Various embodiments relate to an application including a post-processing process of a decoding process. As used in this application, a decoding process can encompass all or part of the process performed, for example, on a received encoded video stream in order to produce an SDR signal. In various embodiments, such a decoding process includes one or more of the processes typically performed by an image or video decoder such as a H.264 / AVC (ISO / IEC 14496-10 - MPEG-4 Part 10, Advanced Video Coding) decoder, a H.265 / HEVC (ISO / IEC 23008-2 - MPEG-H Part 2, High Efficiency Video Coding / ITU-T H.265) decoder, and a H.266 / VVC (Versatile Video Coding) decoder developed by the ITU-T and ISO / IEC expert joint collaboration group under the name Joint Video Experts Team (JVET) decoder, AV1 decoder, or VP9 decoder. The post-processing process encompasses all the processes required to reconstruct the HDR content from the reconstructed SDR content and metadata.
[0121] When an accompanying drawing figure is presented as a flow chart, it will also be understood that one or more steps within the figure can be performed in a different order, can be performed concurrently, can be omitted, or can be performed using an alternative process.
[0122] The implementations and aspects described herein can be implemented in, for example, a method or process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method), implementation of the discussed features can also occur in other forms (for example, an apparatus or program). An apparatus can be implemented in, for example, appropriate hardware, software, and firmware. The method can be implemented in, for example, a processor, which is generally a processor of some
[0123] The processing device includes, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. The processing device also includes a communication device, such as, for example, a computer, a cell phone, a portable / personal digital assistant ("PDA"), and other devices that facilitate communication of information between end users.
[0124] Reference to "one implementation" or "an implementation" or "one specific implementation" or "a specific implementation", and other variants thereof, means that a particular feature, structure, characteristic, and the like being described in connection with an implementation is included in at least one implementation. Therefore, appearances of the phrase "in one implementation" or "in an implementation" or "in one specific implementation" or "in a specific implementation", as well as any other variants thereof, throughout the application are not necessarily all referring to the same implementation.
[0125] Additionally, the application can refer to "determining" various pieces of information. Determining the information can include one or more of, for example, estimating the information, calculating the information, predicting the information, retrieving the information from memory, or obtaining the information from another device, module, or from a user.
[0126] Furthermore, the application can refer to "accessing" various pieces of information. Accessing the information can include one or more of, for example, receiving the information, retrieving the information (for example, from memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0127] Additionally, the application can refer to "receiving" various pieces of information. As with "accessing", receiving is intended to be a broad term. Receiving the information can include one or more of, for example, accessing the information or retrieving the information (for example, from memory). Furthermore, "receiving" is typically involved in one way or another during operations such as, for example, storing the information, processing the information, transmitting the information, moving the information, copying the information, erasing the information, calculating the information, determining the information, predicting the information, or estimating the information.
[0128] It should be understood that, for example, in the cases of “A / B,” “A and / or B,” “at least one of A and B,” and “one or more of A and B,” the use of any of the following “ / ,” “and / or,” and “at least one,” “one or more” is intended to cover selecting only the first listed option (A), or only the second listed option (B), or selecting both options (A and B). As a further example, in the cases of “A, B, and / or C,” “at least one of A, B, and C,” and “one or more of A, B, and C,” such phrases are intended to cover selecting only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or selecting all three options (A, B, and C). As will be apparent to those skilled in the art and related fields, this can be extended to as many of the listed items as possible.
[0129] It will be apparent to those skilled in the art that specific embodiments or implementations can produce various signals formatted to carry, for example, storable or transmissible information. The information may include, for example, instructions for performing a method or data generated by one of the embodiments or implementations. For example, a signal may be formatted to carry an SDR image or video sequence of the embodiment, along with metadata. Such signals may be formatted as, for example, electromagnetic waves (e.g., using the radio frequency portion of the spectrum) or baseband signals. This formatting may include, for example, encoding the SDR image or video sequence using metadata from an encoded video stream and using a stream-modulated carrier. The information carried by the signal may be, for example, analog or digital information. It is known that signals can be transmitted via various wired or wireless links. The signal may be stored on a processor-readable medium.
[0130] Figure 7 An example of the preprocessing process is illustrated schematically.
[0131] This example of the preprocessing procedure is suitable for an SL-HDR1 system in NCL (Non-Constant Luminance) mode. In this example, preprocessing module 10 receives the raw HDR content and generates SDR content and metadata. This preprocessing procedure is performed by processing module 100 included in server 1 for each pixel of each image of the raw HDR content. Figure 7 In the example, the pixel includes three color components corresponding to the three primary colors of red (R), green (G) and blue (B), that is, the pixel is an RGB signal.
[0132] In step 701, processing module 100 obtains an image of the original HDR content and derives mapping parameters from the image and its characteristics, as described, for example, in the standard SL-HDR1. These mapping parameters are transmitted as metadata to client system 3.
[0133] In step 702, the processing module 100 derives the luminance (luma) component L' from the linear light RGB signal of the image, as shown below:
[0134]
[0135] Where A1 is the transformation matrix and γ is the gamma factor, for example, equal to "2.4".
[0136] In step 703, the processing module 100 applies tone mapping to the luminance component L' to obtain the tone mapping value y'. sdr0 As shown below:
[0137] y′ sdr0 =LUT TM (L′) (Equation 2)
[0138] Where, y′ sdr0 In the full range of brightness values (y′) sdr0 ∈[0; 1023]), and LUT TM () is a lookup table representing tone mapping functions.
[0139] In step 704, the processing module 100 applies gamma correction to the linear optical RGB signal, as shown below:
[0140]
[0141] In step 705, the processing module 100 derives the chroma component from the gamma-corrected RGB signal, as shown below:
[0142]
[0143] Where A2 and A3 are transformation matrices. A = [A1A2A3] T For example, a standard 3x3 RGB to YUV conversion matrix (e.g., as specified in ITU-R Rec.BT.2020 or ITU-R Rec.BT.709 according to the color space).
[0144] In step 706, the processing module 100 applies joint normalization and color correction to the chromaticity component u′. sdr0 and v′ sdr0 To obtain the normalized corrected chromaticity component u′ sdr1 and v′ sdr1As follows:
[0145]
[0146] u′ sdr1 and v′ sdr1 are clipped between two clipping values [CLIP_MIN, CLIP_MAX] (for example, clipped in [CLIP_MIN = -512, CLIP_MAX = 511]).
[0147] corresponding to a color correction function, and referred to as ColorCorrection(y) in the following. An example of color correction function ColorCorrection(y) can be derived from section 7.2.3.2 of the document ETSI TS 103 433-1 vl.3.1, for example. In this document, this color correction function is represented by a set of n-uplets (x[i], y[i]), referred to as initial uplets in the following, with n = 6, and i being an integer value in [0; n-1] in one embodiment.
[0148] In step 707, the processing module 100 applies a chroma injection to the tone-mapped luminance values y' sdr0 to obtain corrected tone-mapped luminance values y' sdr1 As follows:
[0149] y′ sdr1 = y′ sdr0 - max(0, a.u′ sdr1 + b.v′ sdr1 ) (Equation 6)
[0150] In step 708, the processing module 40 converts the luminance and chroma values y' sdr1 , u′ sdr1 and v′ sdr1 to a given output format. Step 708 comprises a sub-step of adding to the chroma components u′ sdr1 and v′ sdr1 a value midsample, for example equal to “512”, optionally a sub-step of downsampling the chroma components, which compresses the signal by reducing the number of chroma samples, and optionally a sub-step of conversion from full range values (YUV components range from “0” to “1023” when encoded in 10 bits) to limited range values (Y component range from “64” to “940” and UV components range from “64” to “960”), to obtain luminance and chroma components Y sdr , U sdr , V sdrThe purpose of step 708 is to convert, for example, a full-range YUV444 signal into a limited-range YUV420 signal.
[0151] Sometimes, for certain specific HDR RGB values, the generated SDR chroma components u' sdr1 and v' sdr1 are higher than CLIP_MAX or lower than CLIP_MIN, so these SDR chroma components are clipped to their possible maximum value (i.e. CLIP_MAX) or their possible minimum value (i.e. CLIP_MIN). This clipping creates a reconstruction error of the HDR reconstructed signal at the client system side. To avoid SDR chroma components clipping, u' and v' sdr1 can be reduced by reducing the coefficient matrix or by reducing the color correction function ColorCorrection(y) (i.e. ).
[0152] The method proposed below uses the color correction function ColorCorrection(y) to avoid clipping of u' sdr1 and v' sdr1 while maintaining saturation and hue consistency. Figure 9
[0153] Figure 8 An example of the post-processing process is schematically illustrated. When the processing module 100 implements the post-processing module 34 and more specifically the SDR to HDR reconstruction step 34C, the process of Figure 8 is performed by the processing module 100. The reconstruction process is applied to each pixel of the decoded SDR content generated by the decoding module 32. Figure 8 The reconstruction process of Figure 7 follows the pre-processing process of, for example, 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.
[0154] In step 801, the processing module 100 converts the received YUV420 signal into a full-range YUV444 signal Y post0 , U post0 , V post0 (the inverse process of step 708).
[0155] After conversion, the processing module 100 centralizes the chroma components U post0 and V post0 to obtain the centralized chroma components U post1 and V post1 . This centralization is performed as follows:
[0156]
[0157] where midsample is for example equal to "512".
[0158] In step 802, the processing module 100 applies a chrominance injection correction to the luminance component, as follows:
[0159] Y post1 = Y post0 + max(0; a x U post1 + b x V post1 )
[0160] where parameters a and b are defined in section 7.2.4 of document ETSI TS 103 433-1 vl.3.1, and max(x, y) takes the maximum of x and y.
[0161] The luminance component Y post1 is then clipped in [0; 1023] to produce Y post2 .
[0162] In step 803, the processing module 100 derives a luminance component L' by applying an inverse tone mapping to the luminance component Y post2 :
[0163] L'(Y post2 ) = LUT_L[Y post2 ]
[0164] In step 804, the processing module 100 applies an inverse color correction U post1 and V post1 to the centered chrominance components, as follows:
[0165]
[0166] It can be noted that,
[0167] In step 805, the processing module 100 computes intermediate RGB signals, as follows:
[0168]
[0169] In step 806, the processing module 100 scales the intermediate RGB signals by L':
[0170]
[0171] In step 807, the processing module 100 generates again linear light signals from the scaled RGB signals:
[0172]
[0173] In step 808, the processing module 100 converts the linear optical signal to the desired output format.
[0174] Figure 9 An example of chroma limiter processing is illustrated schematically.
[0175] This method has two main objectives:
[0176] 1. Avoid SDR chroma component clipping while preserving hue:
[0177] If it is necessary to access U (i.e., u′) sdr1 ) or V (i.e., v′) sdr1 To avoid clipping, if one or both of the U and V components have their attenuation values reduced by UDivMax for U and V / V respectively, then both the U and V components should be reduced by the same attenuation value, UVDivMax, i.e., the maximum attenuation value: UVDivMax = MAX(UDivMax, VDivMax). This ensures that the original HDR content's hue is preserved. Since the color correction function ColorCorrection(y) is applied simultaneously to u′... sdr0 and v′ sdr0 Yes, when calculating u′ sdr1 and v′ sdr1 At that time, the attenuation value UVDivMax is applied to the color correction function ColorCorrection(y) (in step 706).
[0178] In step 804, the color correction function ColorCorrection(y) is modified (i.e. A suitable color correction function β is needed. P (Y post2 The same amount of correction is used to compensate for this in the color correction function (i.e., y) to ensure correct HDR reconstruction. Therefore, the color correction function (i.e., y) is described by... The tuples in the shape of )) are sent to the post-processing module 34 in the metadata transmitted from server 1 to client system 3.
[0179] 2. Maintain SDR saturation as much as possible:
[0180] If the maximum attenuation value, i.e. the maximum color correction amount UVDivMax, is applied to all points of the ColorCorrection(y) function, it is possible to desaturate unnecessarily the chroma components of the whole luminance range, even if only a small part of the luminance range needs to be corrected. To avoid unnecessary desaturation, the luminance range of the color correction function ColorCorrection(y) is split into a finite number of partial luminance ranges n. When processing "10" bit SDR content, the maximum number of partial luminance ranges "n" is "1023", i.e. there can be one specific color correction function ColorCorrection(y) value for each value of y.
[0181] In each partial luminance range i (i = [0; n - 1]), an attenuation value UDivMax[i], VDivMax[i] and UVDivMax[i] is computed. The maximum attenuation value, i.e. the maximum color correction amount, UVDivMax is the maximum of all attenuation values UVDivMax[i].
[0182] A resaturation factor Resaturation[i] = UVDivMax / UVDivMax[i] (i = [0; n - 1]) can be computed to apply a resaturation factor on the maximum color correction amount UVDivMax in each partial luminance range. This potentially allows resaturation for each partial luminance range and thus also avoids clipping of the UV components in this partial luminance range.
[0183] Each border between two consecutive partial luminance ranges is assigned to one of the n initial tuples (x[i], y[i]) representing the color correction function ColorCorrection(y) (n = 6 in the case of SL-HDR1). The resaturation factor ResaturationFrontier[j] (j = [0..n - 2]) that can be applied at this border is the minimum of the resaturation factors Resaturation[i] of the two consecutive ranges around this border.
[0184] The color correction factor that can then be applied at each border is computed as follows:
[0185] ColorCorrectionFrontier[j] = UVDivMax / ResaturationFrontier[j].
[0186] Finally, the color correction function ColorCorrection(y) is modified using the color correction factors of the borders ColorCorrectionFrontier[j].
[0187] The following is combined with Figure 9 The above process, described in detail, ensures that the brightness range for each section is:
[0188] • Avoid UV clipping while maintaining color tone;
[0189] • Maintain saturation as much as possible.
[0190] After step 706, the processing module 100 of server 1... Figure 7 The current image is subjected to preprocessing during the preprocessing process. Figure 9 The method.
[0191] In step 901, the processing module 100 divides the full range of brightness values (e.g., [0..1023]) into n+1 partial brightness ranges.
[0192] Each boundary between two consecutive partial brightness ranges corresponds to a given x[i] coordinate in the initial tuple (x[i], y[i]) representing the initial tuple of the color correction function ColorCorrection(). In the SL-HDR1 example, n+1 = 7 partial brightness ranges and n = 6 boundaries are defined, corresponding to n = 6 initial tuples (x[i], y[i]) that can define the color correction function ColorCorrection(y). In some cases, the “6” initial tuples (x[i], y[i]) have default values. As an example, the x[i] values can be evenly distributed across the “1024” values of the full range of brightness values. For example, x[0] = 146, x[1] = 292, x[2] = 438, x[3] = 584, x[4] = 730, x[5] = 876.
[0193] Alternatively, another mapping of the n partial brightness range boundaries can be derived, for example, from the analysis of the current image to be preprocessed (e.g., from the brightness histogram of the current image). This mapping can be a dynamic mapping for each image or a static mapping for all images belonging to a certain scene (defined by scene switching at its two ends).
[0194] The value of y[i] has a default value y_default, that is, y[0]=y[1]=y[2]=y[3]=y[4]=y[5]=y_default.
[0195] In the case of SL-HDR1, the color correction function ColorCorrection(y) is described using at most six 8-bit tuples, named sgf_x[i] and sgf_y[i], thus ranging from "0" to "255". Thus, these specific SL-HDR1 values can be for example sgf_x[0]=36, sgf_x[1]=73, sgf_x[2]=109, sgf_x[3]=146, sgf_x[4]=182, sgf_x[5]=219 and sgf_y[i]=128 (i=[0..5]). Then x[i] and y[i] can be derived from sgf_x[i] and sgf_y[i] respectively, for a larger range, for example the full luminance range [0; 1024].
[0196] In step 902, the processing module 100 estimates, in each partial luminance range, an attenuation value of the chroma components, which attenuation value allows to reduce the chroma components to avoid clipping of the components. In other words, the processing module 100 estimates an attenuation value UDivMax[i] of the component U and an attenuation value VDivMax[i] of the component V and a maximum attenuation value UVDivMax[i] (for i=0 to n).
[0197] Figure 11 The process for determining, in each partial luminance range, an attenuation value of the chroma components is schematically represented.
[0198] In step 9020, the processing module 100 initializes the attenuation values UDivMax[j] and VDivMax[j] (for each possible value of j from "0" to n) to "1", the intermediate attenuation values UDivCur and VDivCur to "1" and the variable i to "0".
[0199] In step 9021, the processing module 100 determines whether i is equal to the value NbPixels, where NbPixels represents the number of pixels in the current image to be pre-processed. In step 9021, the processing module 100 obtains the value of the components of the i-th pixel of the current image (y' sdr0 , u' sdr1 , v' sdr1 ).
[0200] If i
[0201] In step 9022, the processing module 100 determines the partial luminance range (identified by the identifier j) to which the current pixel belongs. In one embodiment, the partial luminance range identifier j is determined as follows:
[0202] j = INT(y'sdr0 / (FullRangeMaxValue / (n+1))+0.5)
[0203] Where INT(x) takes the integer value of x, and FullRangeMaxValue is the maximum value of the full range of brightness. In the current example, FullRangeMaxValue = 1023 and n+1 = 7 (corresponding to the number of partial brightness ranges, which depends on the number of initial tuples (x[i], y[i]) that define the color correction function ColorCorrection(y)).
[0204] In step 9023, the processing module 100 assigns the value u′ of component U to... sdr1 Compare with the maximum clipping value CLIP_MAX. In the current example of the implementation, CLIP_MAX = 511. If u′ sdr1 >CLIP MAX If so, proceed to step 9024 after step 9023. Otherwise, proceed to step 9026 after step 9023.
[0205] In step 9024, the processing module 100 calculates the intermediate attenuation value UDivCur of component U, as shown below:
[0206] UDivCur=u′ sdr1 / CLIP_MAX
[0207] In step 9025, the processing module 100 calculates the attenuation value UDivMax[j] of the component U of the brightness range identified in step 9022, as shown below:
[0208] UDivMax[j]=max(UDivCur, UDivMax[j])
[0209] Step 9026 is performed after step 9025.
[0210] In step 9026, the processing module 100 assigns the value u′ of component U to... sdr1 Compare with the minimum clipping value CLIP_MIN. In the current example of the implementation, CLIP_MIN = -512. If u′ sdr1 <CLIP MIN If so, proceed to step 9027 after step 9026. Otherwise, proceed to step 9029 after step 9026.
[0211] In step 9027, the processing module 100 calculates the intermediate attenuation value UDivCur of component U, as shown below:
[0212] UDivCur=u′sdr1 / CLIP_MIN
[0213] In step 9028, the processing module 100 computes the attenuation value UDivMax[j] of the component U of the part of the luminance range identified in step 9022, as follows:
[0214] UDivMax[j] = max(UDivCur, UDivMax[j])
[0215] In step 9029, the processing module 100 compares the value v' of the component V with the maximum clipping value CLIP_MAX. If v' > CLIP_MAX, then step 9030 is performed after step 9029. Otherwise, step 9032 is performed after step 9029. sdr1 sdr1 > CLIP MAX
[0216] In step 9030, the processing module 100 computes the intermediate attenuation value VDivCur of the component V, as follows:
[0217] VDivCur = v' / CLIP_MAX sdr1
[0218] In step 9031, the processing module 100 computes the attenuation value VDivMax[j] of the component V of the part of the luminance range identified in step 9022, as follows:
[0219] VDivMax[j] = max(VDivCur, VDivMax[j])
[0220] In step 9032, the processing module 100 compares the value v' of the component V with the minimum clipping value CLIP_MIN. In the current example of embodiment, CLIP_MIN = -512. If v' < CLIP_MIN, then step 9033 is performed after step 9032. Otherwise, step 9035 is performed after step 9032. sdr1 sdr1 < CLIP MIN
[0221] In step 9033, the processing module 100 computes the intermediate attenuation value VDivCur of the component V, as follows:
[0222] VDivCur = v' / CLIP_MIN sdr1
[0223] In step 9034, the processing module 100 computes the attenuation value VDivMax[j] of the component V of the part of the luminance range identified in step 9022, as follows:
[0224] VDivMax[j] = max(VDivCur, VDivMax[j])
[0225] In step 9035, the variable i is incremented by one unit.
[0226] If i = NbPixels, then in step 9036, the attenuation values of the chrominance components U and V are determined in each partial luminance range. In each partial luminance range, the attenuation values of the chrominance components U and V are determined as follows:
[0227] UVDivMax[j] = MAX(UDivMax[j], VDivMax[j])
[0228] In a first variant of the process of Figure 11 , the filtering is applied to calculate the intermediate attenuation values UDivCur and VDivCur of the ith pixel by calculating a weighted average of the intermediate attenuation values UDivCur and VDivCur of at least one pixel adjacent to the ith pixel.
[0229] In a second variant of the process of Figure 11 , a histogram of all the different values of UDivCur and VDivCur is calculated. This makes it possible to detect some large UDivCur and VDivCur values that can appear irregularly due to the presence of noise in the current image. In this case, it is not necessary to apply the large intermediate attenuation values UDivCur and VDivCur corresponding to this noise on all the pixels. Thus, the same intermediate attenuation values UDivCur and VDivCur can be estimated by forcing the intermediate attenuation values UDivCur and VDivCur to the number of bins present in the histogram (starting from the highest bin) which is a fixed minimum predetermined count.
[0230] Returning to Figure 9 , in step 903, the processing module 100 determines the global attenuation values (i.e. the maximum color correction amount) of the chrominance components UVDivMax from the attenuation values of the chrominance components U and V UVDivMax[j] determined for each partial luminance range:
[0231] UVDivMax = MAX(UVDivMaxPartial[j]), j = [0; n]
[0232] In step 904, the processing module 100 calculates the resaturation factor Resaturation[j] of each partial luminance range as follows:
[0233] Resaturation[j] = UVDivMax / UVDivMax[j], j = [0; n]
[0234] This resaturation factor allows to maintain the saturation in each partial luminance range (i.e. allows resaturation), thus avoiding also clipping of the chroma components U and V in this partial luminance range.
[0235] In step 905, the processing module 100 computes, for each frontier between two consecutive partial luminance ranges, a ResaturationFrontier[j] value (j = [0; n-1]) representing the minimum value of the resaturation factor computed for these two consecutive partial luminance ranges. As an example, if n = 6, then:
[0236] ResaturationFrontier[0] = MIN(Resaturation[0], Resaturation[1]);
[0237] ResaturationFrontier[1] = MIN(Resaturation[1], Resaturation[2]);
[0238] ResaturationFrontier[2] = MIN(Resaturation[2], Resaturation[3]);
[0239] ResaturationFrontier[3] = MIN(Resaturation[3], Resaturation[4]);
[0240] ResaturationFrontier[4] = MIN(Resaturation[4], Resaturation[5]);
[0241] ResaturationFrontier[5] = MIN(Resaturation[5], Resaturation[6]).
[0242] In step 906, the processing module 100 computes a final correction factor ColorCorrectionFrontier[j] for each frontier between two consecutive partial luminance ranges, as follows:
[0243] ColorCorrectionFrontier[j] = ResaturationFrontier[j] / UVDivMax, j = [0; n-1].
[0244] In step 907, the processing module 100 multiplies each coordinate y[i] of the initial tuples (x[i], y[i]) representative of the color correction function ColorCorrection(y) by the corresponding final correction factor ColorCorrectionFrontier[]:
[0245] y'[j] = y[j] * ColorCorrectionFrontier[j], j = [0; n - 1].
[0246] The new tuples are obtained by step 907 to avoid clipping of the SDR chroma components while maintaining the saturation of the derived SDR signal and preserving its hue. Step 907 thus comprises modifying the coordinate y[i] of the initial tuples (x[i], y[i]) using the final correction factor ColorCorrectionFrontier[i] to obtain a new color correction function ColorCorrection'(y). Step 907 modifies the coordinate y[i] of at least one tuple (x[i], y[i]).
[0247] The n new tuples (y'[i], x[i]) where i is an integer value in [0; n - 1] are used in the second execution of step 706 and are transmitted to the client system 3 in the metadata in place of the initial tuples (y[i], x[i]). The post-processing process remains the same except that the function β P () is derived using the new tuples (y'[i], x[i]) in place of the initial tuples (y[i], x[i]). Figure 8 The process described in connection with
[0248] Figure 12 An HDR test pattern composed of BT2020 primary and secondary colors is shown to be used to perform the chroma clipper process in Figure 9 .
[0249] In one embodiment of the chroma clipper process, the process comprises temporal stabilization of the new tuples (x[i], y'[i]) as step 908.
[0250] In a first variant of step 908, temporal stabilization is applied to the coordinates y'[i] of the new tuples (x[i], y'[i]) representative of the new color correction function ColorCorrection'(y). For example, for each i in [0; n - 1], a final parameter yfinal[i] can be computed as a weighted average of the parameter y'[i] computed for the current image and at least one parameter y'[i] computed for at least one previous image.
[0251] In a second variant of step 908, assuming that the values of these parameters are not fixed predetermined values, but values resulting from an analysis of the current image or of the scene comprising the current image, then a temporal stabilization (j = [0; n - 1]) can be applied to the initial tuples (x[i], y[i]).
[0252] Figure 10A A first example of temporal stabilization process is schematically illustrated. Here, only the temporal stabilization of the coordinates y'[i] of the new tuples (x[i], y'[i]) is considered. The same principle can be applied to the temporal stabilization of the coordinates x[i] as well.
[0253] The main idea of temporal stabilization is to gather the values of each coordinate y'[i] over a predetermined period of time before the current time (i.e. in a predetermined set of images before the current image) and to deliver, at the current time, a filtered version yfinal[i] of each of these coordinates y'[j].
[0254] In step 9081, the processing module 100 determines whether a scene cut is detected between the current image and the previous image.
[0255] If a scene cut is detected, then the processing module performs step 9083.
[0256] During step 9083, the coordinates y'[i] of the new tuples (x[i], y'[i]) are initialized.
[0257] Figure 13 Details of step 9083 are represented.
[0258] In step 130, for each coordinate y'[i], a configurable buffer of size nbuf is initialized. The size nbuf of this buffer represents the number of consecutive images analyzed for computing the filtered version yfinal[i] of the current coordinate y'[i]. This buffer size nbuf can be the same for all coordinates y'[i] or different. Each value of each buffer is initialized as follows:
[0259] y_buf[i][j] = y'[j], i = [0; nbuf - 1] and j = [0; n - 1].
[0260] It can be seen that here the coordinates y'[j] of consecutive images considered for temporal filtering are resolved by the variable i and the coordinates y'[j] of the same image are allowed to be resolved by j.
[0261] In step 131, the processing module 100 computes, for each parameter y'[j], a cumulative value cum_y'[j] representing all the values of the corresponding buffer:
[0262] cum_y'[j] = f(y_buf[i][j]), i = [0; nbuf - 1] and j = [0; n - 1].
[0263] The function f() can be a simple sum or a weighted sum giving more weight to certain positions in the buffer.
[0264] As an example, if the cumulated value is a simple sum of all coordinates, the cumulated value cum_y'[j] for each coordinate y'[j] is as follows:
[0265]
[0266] In step 132, the processing module 100 initializes the index index representing the position of the current frame in the frame buffer to "0".
[0267] If no scene cut is detected, the processing module performs step 9082.
[0268] Figure 14 Details of step 9082 are represented.
[0269] In step 140, the processing module 100 updates the cumulated value cum_y'[j] corresponding to each parameter y'[i] by:
[0270] • subtracting from cum_y'[j] the value of the oldest coordinate y'[i] in the buffer y_buf[i]. This oldest coordinate is at position i = index in the buffer y_buf[i][j]. The subtraction can be a simple subtraction or a weighted subtraction of the value of this oldest coordinate combined with the value of any subsequent coordinate;
[0271] • adding to cum_y'[j] the value of the newly computed coordinate y'[i] just received. The addition can be a simple addition or a weighted addition of the newly computed coordinate combined with the value of any previous coordinate.
[0272] In step 141, the processing module 100 updates, for each coordinate y'[i], the buffer y_buf[i][j] by inserting the newly computed coordinate y'[i] at position i = index in this buffer.
[0273] In step 142, the processing module 100 computes the filtered value yfinal[j] for each coordinate y'[j]. In one embodiment, the filtering consists in simply dividing the corresponding cumulated value cum_y'[j] by the size nbuf of the corresponding buffer. In another embodiment, the filtering consists in dividing the corresponding cumulated value cum_y'[j] by the number of frames taken into account when computing this cumulated value.
[0274] As an example, if the accumulated value is a simple sum of all coordinates, and if the filtered value is simply divided by the buffer size nbuf, then all filtered values are computed as follows:
[0275] cum_y'[j] = cum_y'[j] - y_buf[index][j] + y'[j];
[0276] y_buf[index][j] = y[j];
[0277] yfinal[j] = cum_y'[j] / nbuf;
[0278] j = [0; n-1].
[0279] In step 143, the processing module 100 updates the index index as follows:
[0280] index = index + 1, and then, if index = nbuf, index = 0.
[0281] In one embodiment, the buffer size nbuf = 30.
[0282] Figure 10B A second example of a temporal stabilization process is schematically illustrated.
[0283] As compared to Figure 10A all steps are identical except that step 9081 is replaced by step 9081 bis.
[0284] In step 9081 bis, the processing module determines whether the current image is the first image of the current content. If so, step 9083 is performed after step 9081 bis. Otherwise, step 9082 is performed after step 9081 bis.
[0285] A number of embodiments have been described. Features of the embodiments can be provided individually or in any combination. Further, embodiments can include one or more of the following features, devices or aspects, individually or in any combination, across various claim classes and types:
[0286] • a bitstream or signal comprising one or more of the described image or video data or variations thereof.
[0287] • creating and / or transmitting and / or receiving and / or decoding a bitstream or signal comprising one or more of the described image data or metadata or variations thereof.
[0288] • a server, camera, television, set-top box, cell phone, tablet computer, or other electronic device that executes at least one of the described embodiments.
[0289] • a television, set-top box, cell phone, tablet computer, or other electronic device that executes at least one of the described embodiments and displays the resulting image (e.g., using a monitor, screen, or other type of display).
[0290] • a television, set-top box, cell phone, tablet computer, personal computer, or other electronic device that tunes a channel (e.g., using a tuner) to receive a signal that includes encoded images and metadata and executes at least one of the described embodiments.
[0291] • a television, set-top box, cell phone, tablet computer, or other electronic device that receives a signal that includes encoded images and metadata over the air (e.g., using an antenna) and executes at least one of the described embodiments.
[0292] • a server, camera, cell phone, tablet computer, personal computer, or other electronic device that tunes a channel (e.g., using a tuner) to transmit a signal that includes a stream of encoded images and metadata and executes at least one of the described embodiments.
[0293] • a server, camera, cell phone, tablet computer, personal computer, or other electronic device that transmits a signal that includes encoded images and metadata over the air (e.g., using an antenna) and executes at least one of the described embodiments.
Claims
1. A method for modifying a color correction function, the color correction function aiming at correcting the initial chroma component of a current image represented by an initial luminance component and an initial chroma component, to obtain a corrected chroma component, the color correction function being defined by a set of initial tuples comprising a first coordinate and a second coordinate, the method comprising, for the current image: - dividing the luminance value range of the initial luminance component into partial luminance ranges, each border between two successive partial luminance ranges depending on the first coordinate of one of the initial tuples; - estimating, in at least one partial luminance range, a decay value of the initial chroma component, each decay value allowing to reduce the initial chroma component to avoid clipping of the component; - determining a global decay value of the initial chroma component using the estimated decay values; - computing, based on the global decay value and the decay value associated with each partial luminance range, a factor for each partial luminance range, the factor allowing to maintain the saturation in each partial luminance range; - computing (905), for each border between two successive luminance ranges, a minimum factor representing the minimum value among the factors computed for the two successive partial luminance ranges; - computing a final correction factor for each border between two successive partial luminance ranges based on the minimum factor corresponding to this border and the global decay value; and, - modifying (907) the second coordinate of at least one of the initial tuples using the final correction factor to obtain new tuples defining a new color correction function.
2. The method of claim 1, wherein the method comprises temporal stabilization of the new tuples, the temporal stabilization comprising computing the new tuples based on filtering using new tuples computed for images preceding the current image in a sequence of images.
3. The method of claim 2, wherein the temporal stabilization is performed in a set of images belonging to the same scene between two scene cuts in the sequence of images.
4. A method for tone mapping an image, the image comprising an initial luminance component and an initial chroma component, the method comprising: - modifying a color correction function using the method of claim 1, 2 or 3; and - applying a color correction on the initial chroma component based on the new color correction function.
5. A method for distributing an image to a client system, the image having the same content in HDR and SDR formats, the method comprising: - applying the method of claim 1, 2 or 3; and - transmitting data representing the new tuples to the client system in the form of metadata.
6. A device for modifying a color correction function, the color correction function aiming at correcting the initial chroma component of a current image represented by an initial luminance component and an initial chroma component, to obtain a corrected chroma component, the color correction function being defined by a set of initial tuples comprising a first coordinate and a second coordinate, the device comprising an electronic circuit configured to: - divide the luminance value range of the initial luminance component into partial luminance ranges, each border between two successive partial luminance ranges depending on the first coordinate of one of the initial tuples; - estimate, in at least one partial luminance range, a decay value of the initial chroma component, each decay value allowing to reduce the initial chroma component to avoid clipping of the component; - determine a global decay value of the initial chroma component using the estimated decay values; - compute, based on the global decay value and the decay value associated with each partial luminance range, a factor for each partial luminance range, the factor allowing to maintain the saturation in each partial luminance range; - compute, for each border between two successive luminance ranges, a minimum factor representing the minimum value among the factors computed for the two successive partial luminance ranges; - compute a final correction factor for each border between two successive partial luminance ranges based on the minimum factor corresponding to this border and the global decay value; and, - modify the second coordinate of at least one of the initial tuples using the final correction factor to obtain new tuples defining a new color correction function. dividing the range of luminance values of the initial luminance component into partial luminance ranges, each border between two successive partial luminance ranges depending on a first coordinate of one initial tuple of the initial tuples; estimating in at least one partial luminance range a decay value of the initial chrominance component, each decay value allowing to reduce the initial chrominance component to avoid clipping of the component; determining a global decay value of the initial chrominance component using the estimated decay values determined for each partial luminance range; computing a factor for each partial luminance range based on the global decay value and the decay value associated with each partial luminance range, the factor allowing to maintain saturation in each partial luminance range; computing for each border between two successive luminance ranges a minimum factor, the minimum factor representing a minimum value among the factors computed for the two successive partial luminance ranges; computing a final correction factor for the border between two successive partial luminance ranges based on the minimum factor corresponding to each border between two successive partial luminance ranges and the global decay value; and, modifying the second coordinate of at least one initial tuple of the initial tuples using the final correction factor to obtain new tuples defining a new color correction function.
7. The device of claim 6, wherein the electronic circuit is further configured to apply a temporal stabilization of the new tuples, the temporal stabilization comprising computing the new tuples based on filtering using new tuples computed for images preceding the current image in the sequence of images.
8. The device of claim 7, comprising an electronic circuit configured to apply the temporal stabilization in a set of images of the sequence of images belonging to a same scene between two scene cuts.
9. An apparatus for tone mapping an image, the image comprising an initial luminance component and an initial chrominance component, the apparatus comprising: - the device of claim 6, 7 or 8; and, - an electronic circuit configured to apply a color correction on the initial chrominance component based on the new color correction function.
10. An apparatus for distributing an image to a client system, the image having a same content in HDR and SDR formats, the apparatus comprising: - the device of claim 6, 7 or 8; and - an electronic circuit configured to transmit data representative of the new tuples to the client system in the form of metadata.
11. A computer program product comprising program code instructions for implementing the method of any preceding claim 1 to 3.
12. A non-transitory information storage medium storing program code instructions for implementing the method of any preceding claim 1 to 3.
Citation Information
Patent Citations
Method and apparatus for colour correction during HDR to SDR conversion
WO2019101373A1