- From: Christopher Cameron <ccameron@google.com>
- Date: Tue, 30 Mar 2021 12:51:57 -0700
- To: Simon Thompson-NM <Simon.Thompson2@bbc.co.uk>
- Cc: "public-colorweb@w3.org" <public-colorweb@w3.org>
- Message-ID: <CAGnfxj8N+eJMHA4zY8-Ci3WEagJhXOmYddOu0biz2crspHHdfw@mail.gmail.com>
Thank you for writing this up! It definitely much more clearly shows the transformations being applied. I've stolen your diagram scheme. I think the primary question that we're circling around here is how we transform between color spaces (sRGB, PQ, HLG), with the options being: - A: There exists a single well-defined transformation between content types - Transformations are path-independent - - Transformations are all invertible (at least up to clamping issues) - B: The transformation between content types depends on the context - It's still well-defined, but depends on the target that will draw the content - It is no longer path-independent, and may not obviously be invertible (This differs from the proposal in that it respects BT 2408's white=203nits=0.75 HLG, but that's sort of peripheral to the differences here -- please read this ignoring that difference). I lean more heavily towards A, for two reasons. - Reason 1: The main advantage of B is that it does better transcoding between spaces, BUT - It is constrained in such a way that it will never do good enough transcoding to warrant its complexity, in my opinion. - - Reason 2: It's simple to reason about and is predictable - This helps ensure that browsers will be consistent - This simplicity allows the developer to implement any fancier transcoding they want without fighting the existing transcoding. Examples of B doing divergent transcoding for HLG are are: - PQ Canvas: we apply a gamma=1.2 OOTF. - This bakes in an assumption of 1,000 nit max (or mastering) luminance - extended sRGB: we bake in a gamma=1.0 OOTF - This bakes in an assumption of 334 nits - SDR: we use the sRGB EOTF The following diagram shows my proposal for A (in this example I don't use the BT 2408 numbers, but we could do multiplication so that HLG signal of 0.75 and PQ signal of 0.581 map to 1 which is diffuse white). The key feature is that the transformations for input and output are always identical. [image: hdr figures.png] No attempts at intelligent transcoding are attempted. That's not because the proposal considers transcoding unimportant, rather, it's a recognition that any such automatic transcoding would not be good enough. With this scheme, it is fairly trivial for an application to write a custom HLG<->PQ transcoding library. Such functionality could be added to ImageBitmap (where the user could say "load this image and perform transcoding X on it, using parameters Y and Z, because I know where it is going to be used"). Because all of the color spaces have well-defined transformations between them, there's no reason to couple the canvas' storage color space to the HDR compositing mode. In fact, coupling them may be non-ideal: - Application Example: Consider a photo editing application that intends to output HLG images, but wants to perform its manipulations in a linear color space. The application can select a linear color space (for working space) and HLG as the compositing mode. - Browser Implementation Example: For the above application, it might be that the OS/Display require that the browser transform to an HLG signal behind the scenes, but at time of writing, no such OS exists (in fact, all OSes require conversion into a linear space for HLG, but that may change). Let's discuss this more on Wednesday! On Mon, Mar 29, 2021 at 9:35 AM Simon Thompson-NM <Simon.Thompson2@bbc.co.uk> wrote: > > > Hi all, > > > > My colleagues and I have spent some time thinking about the HTML canvas > proposals and the input and output scaling required for each for HDR and > wider colour gamut functionality. I’ve added some plots showing some ideas > on how input and output formats could be transformed for the new canvases. > New extended sRGB canvas format. > > In this canvas (1,1,1) is equal to SDR White and (0,0,0) is equal to > Black. Values are not however clipped outside this range and brighter > parts of the image can be created using values over 1 and wider colour > gamuts can be created using negative values. For each input signal, we can > simply convert to linear rec2020 and then scale such that the SDR reference > white signal has the value (1,1,1). Note, linearly scaling PQ display > light signals without an OOTF adjustment, does not maintain their > subjective appearance. > > For SDR outputs this would cause clipping of the HDR signals above > (1,1,1). For HLG, should the canvas be able to determine the output format > required, we could instead use an sRGB EOTF on the input and use the > compatible nature of the HLG signal to create a tone-mapped sRGB image. > > > > HLG Canvas > > [image: Diagram Description automatically generated] > > In this canvas (1,1,1) is equal to Peak White and (0,0,0) is equal to > Black. The display-independent working space is an BT.2100 HLG signal. > > Input signals that are not HLG are converted to normalised linear display > light. These are converted to the HLG display-independent space using an > HLG inverse EOTF. The EOTF LW parameter is selected such that the HLG > OOTF becomes unity (i.e. a pass-through) simplifying the conversion process > and avoiding a requirement for a 3D-LUT. > > - SDR display-light signals are scaled so that their nominal peak > equals HDR Reference White (0.265) and matrixed to the correct colourspace > prior to conversion to HLG. > - PQ signals are scaled so that 203 cd/m2 equals HDR Reference White > (0.265) prior to conversion to HLG. > > The HLG conversion maps HDR reference white in normalized linear display > light (0.265,0.265,0.265) to (0.75,0.75,0.75) in the HLG non-linear > signal. Formats which are already linear, e.g. “sRGB-linear”, > “rec2020-linear” are treated similarly but do not require an initial EOTF > being applied to convert to linear. > > Note, BT.1886 can be used with either BT.709 or BT.2020 signals. The > correct matrices should be chosen match the input signal and the output > display. > PQ Canvas > > [image: A picture containing graphical user interface Description > automatically generated] > > > > In this canvas (1,1,1) is equal to 10000 cd/m2 and (0,0,0) is equal to 0 > cd/m2. Input signals that are not PQ are converted to linear and scaled > so that HDR reference white is set to 0.0203. They are then matrixed to > the correct colourspace and converted to PQ. The conversion maps > (0.0203,0.0203,0.0203) to (0.58,0.58,0.58). Formats which are already > linear, e.g. “sRGB-linear”, “rec2020-linear” are treated similarly but do > not require an initial EOTF being applied to convert to linear. > > > > Best Regards > > > > Simon > > > *Simon Thompson* > Senior R&D Engineer > > >
Attachments
- image/jpeg attachment: image001.jpg
- image/jpeg attachment: image002.jpg
- image/jpeg attachment: image003.jpg
- image/jpeg attachment: image004.jpg
- image/png attachment: hdr_figures.png
Received on Tuesday, 30 March 2021 19:52:28 UTC